/** * HTTP API: WP_Http_Cookie class * * @package WordPress * @subpackage HTTP * @since 4.4.0 */ /** * Core class used to encapsulate a single cookie object for internal use. * * Returned cookies are represented using this class, and when cookies are set, if they are not * already a WP_Http_Cookie() object, then they are turned into one. * * @todo The WordPress convention is to use underscores instead of camelCase for function and method * names. Need to switch to use underscores instead for the methods. * * @since 2.8.0 */ #[AllowDynamicProperties] class WP_Http_Cookie { /** * Cookie name. * * @since 2.8.0 * * @var string */ public $name; /** * Cookie value. * * @since 2.8.0 * * @var string */ public $value; /** * When the cookie expires. Unix timestamp or formatted date. * * @since 2.8.0 * * @var string|int|null */ public $expires; /** * Cookie URL path. * * @since 2.8.0 * * @var string */ public $path; /** * Cookie Domain. * * @since 2.8.0 * * @var string */ public $domain; /** * Cookie port or comma-separated list of ports. * * @since 2.8.0 * * @var int|string */ public $port; /** * host-only flag. * * @since 5.2.0 * * @var bool */ public $host_only; /** * Sets up this cookie object. * * The parameter $data should be either an associative array containing the indices names below * or a header string detailing it. * * @since 2.8.0 * @since 5.2.0 Added `host_only` to the `$data` parameter. * * @param string|array $data { * Raw cookie data as header string or data array. * * @type string $name Cookie name. * @type mixed $value Value. Should NOT already be urlencoded. * @type string|int|null $expires Optional. Unix timestamp or formatted date. Default null. * @type string $path Optional. Path. Default '/'. * @type string $domain Optional. Domain. Default host of parsed $requested_url. * @type int|string $port Optional. Port or comma-separated list of ports. Default null. * @type bool $host_only Optional. host-only storage flag. Default true. * } * @param string $requested_url The URL which the cookie was set on, used for default $domain * and $port values. */ public function __construct( $data, $requested_url = '' ) { if ( $requested_url ) { $parsed_url = parse_url( $requested_url ); } if ( isset( $parsed_url['host'] ) ) { $this->domain = $parsed_url['host']; } $this->path = isset( $parsed_url['path'] ) ? $parsed_url['path'] : '/'; if ( ! str_ends_with( $this->path, '/' ) ) { $this->path = dirname( $this->path ) . '/'; } if ( is_string( $data ) ) { // Assume it's a header string direct from a previous request. $pairs = explode( ';', $data ); // Special handling for first pair; name=value. Also be careful of "=" in value. $name = trim( substr( $pairs[0], 0, strpos( $pairs[0], '=' ) ) ); $value = substr( $pairs[0], strpos( $pairs[0], '=' ) + 1 ); $this->name = $name; $this->value = urldecode( $value ); // Removes name=value from items. array_shift( $pairs ); // Set everything else as a property. foreach ( $pairs as $pair ) { $pair = rtrim( $pair ); // Handle the cookie ending in ; which results in an empty final pair. if ( empty( $pair ) ) { continue; } list( $key, $val ) = strpos( $pair, '=' ) ? explode( '=', $pair ) : array( $pair, '' ); $key = strtolower( trim( $key ) ); if ( 'expires' === $key ) { $val = strtotime( $val ); } $this->$key = $val; } } else { if ( ! isset( $data['name'] ) ) { return; } // Set properties based directly on parameters. foreach ( array( 'name', 'value', 'path', 'domain', 'port', 'host_only' ) as $field ) { if ( isset( $data[ $field ] ) ) { $this->$field = $data[ $field ]; } } if ( isset( $data['expires'] ) ) { $this->expires = is_int( $data['expires'] ) ? $data['expires'] : strtotime( $data['expires'] ); } else { $this->expires = null; } } } /** * Confirms that it's OK to send this cookie to the URL checked against. * * Decision is based on RFC 2109/2965, so look there for details on validity. * * @since 2.8.0 * * @param string $url URL you intend to send this cookie to * @return bool true if allowed, false otherwise. */ public function test( $url ) { if ( is_null( $this->name ) ) { return false; } // Expires - if expired then nothing else matters. if ( isset( $this->expires ) && time() > $this->expires ) { return false; } // Get details on the URL we're thinking about sending to. $url = parse_url( $url ); $url['port'] = isset( $url['port'] ) ? $url['port'] : ( 'https' === $url['scheme'] ? 443 : 80 ); $url['path'] = isset( $url['path'] ) ? $url['path'] : '/'; // Values to use for comparison against the URL. $path = isset( $this->path ) ? $this->path : '/'; $port = isset( $this->port ) ? $this->port : null; $domain = isset( $this->domain ) ? strtolower( $this->domain ) : strtolower( $url['host'] ); if ( false === stripos( $domain, '.' ) ) { $domain .= '.local'; } // Host - very basic check that the request URL ends with the domain restriction (minus leading dot). $domain = ( str_starts_with( $domain, '.' ) ) ? substr( $domain, 1 ) : $domain; if ( ! str_ends_with( $url['host'], $domain ) ) { return false; } // Port - supports "port-lists" in the format: "80,8000,8080". if ( ! empty( $port ) && ! in_array( $url['port'], array_map( 'intval', explode( ',', $port ) ), true ) ) { return false; } // Path - request path must start with path restriction. if ( ! str_starts_with( $url['path'], $path ) ) { return false; } return true; } /** * Convert cookie name and value back to header string. * * @since 2.8.0 * * @return string Header encoded cookie name and value. */ public function getHeaderValue() { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid if ( ! isset( $this->name ) || ! isset( $this->value ) ) { return ''; } /** * Filters the header-encoded cookie value. * * @since 3.4.0 * * @param string $value The cookie value. * @param string $name The cookie name. */ return $this->name . '=' . apply_filters( 'wp_http_cookie_value', $this->value, $this->name ); } /** * Retrieve cookie header for usage in the rest of the WordPress HTTP API. * * @since 2.8.0 * * @return string */ public function getFullHeader() { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid return 'Cookie: ' . $this->getHeaderValue(); } /** * Retrieves cookie attributes. * * @since 4.6.0 * * @return array { * List of attributes. * * @type string|int|null $expires When the cookie expires. Unix timestamp or formatted date. * @type string $path Cookie URL path. * @type string $domain Cookie domain. * } */ public function get_attributes() { return array( 'expires' => $this->expires, 'path' => $this->path, 'domain' => $this->domain, ); } } ��}�v�ƒ賴V�� /[dB�x�HQٲd;�r,)�޶��$l@P�h���y:o��}�|ɩ�n\ R�$gf��!���uuu�����O��޿}N���9���/��/QW>?�0�9���C��Hq�?��ە������_���y��c�_�8�þ4�"?���C wha�4�#؆��ޤ>�e�s#�Fuߙ�l7��r�E�#��9�u:��H�� K���P"FؗB3��y��� ��B����D�q�kLh_������H"�d_��V4�[��6��^j�v���i8��q4��pZ}��7�o^�m��� �%o� "�~��e��������ĸ��1�2hy�:F0�;Hg+�r�+B� r�ȓ���Fx���I5L��k�ۀ���(ڦ�`]�PUտ"Z�}%udX-���Xn�� id�wx����C�*#�A��v���8LKJ���H4�A���;�iD��փ0��j�@��/�� �h�m� ��x�c�40~�z=�RKZ�~�^�� Ǝ���/ܔCS�� Y��L�,��ꍺ���N]�we�!�8 9�$d�z����z.��| ���B���ꟍK#��o���GLJg�ȷ���Z�L���t�}�Oi��($}r- �����l~����L���:k��G�ۀ~����ZKQ���zG����RM���#x /Gw�6�~���{P�T�^K���bX�������vMgj!��!K`d�, � G��% �m�����MT����� m��F?$��K��B�>N]��b�������h/N'f�V��`���u8��/��0 ���x2&~���9�U��p��dX���B���4�P��G���~:=y���G�p^���Ћ9Fr77 y�4�5�� j���QE��5x7\����+�檐R;gP����j� �\���m�A`�+TOX����j��j-�W����x�=7�^@�i��H�`�JR����Ȥ�~?�}��� �� g6��M�(i�#�+ "����m��96>N�T~��j�g���i)� V����}�Gk ��sC*fq$��ӧ���5�s�T��lw2�z湕y���$̈́|���/��R��x�t�Ǫ@8 ^I-�ۉ��@*��������>�kEЗ��E�� =̣>zdo�=��t��᜚�O�> �3�� ڻk��|��|2���=b�Z���QM�k+� �C�K�Hܒ�j��h�GvA�tK�]Ϡ���p�E@��3�>Ro�5�_1�{J�. �ϗj���P_j�*i�C�u�M�:�z�sU3��z�}���QŨQ�H�a>w ܋��ڋ�00��P���Z� ��k�mǂ�uS�淁7�CPnŃ����N�� �Z���[dMXŧ��W��Y���PTTKߞ_�ԏ^@AT]�2�'(�T`+�e=��^�a�=DE:>y}���W�Ϡ�k�(����E\_n?II��g^��ȿR�Fq���V$o�ܪԏ����d@�L��t?����g?�][m�*�Y@�d;�jb+��L��ĩ��T���!!�K[-�+4�r��w��>�a}'�w�X� �b5U��{a� �H� ��;e]n���  �pX�M305?��I���n,�B%I��ʑdZP�y�.�r7ؼ���R"K%�֮qօ��� ����^z���s'\�~ֆ͊ۧ�sF@PT@ �n�^3U���JX��|�;x����k�+*���#��68�B�>2mPI]�4���\�oΏ��t�J���c�_�]��ߣ 2 ��;@o<�?��-��#�q��%�ֳ��͂Z�X�$�m9��Y)�z�P����� n^���G����.U����Sp 3�XA8񆖒@U�2�_��G5�3�����%C�*F��ӧ �a���?;��a#�pLi�Cl���M#�ØޓA*�a�7��a��z%�AP%4m��vXe�&Բ�����"��d������������-�k�"����WV�\oomYv�;ƼK8�Ȟ`nԃ܁X4�r.f]���u�f�9-��I!��e#�n��DU��B6(*�q�l8��dUYā�7 <�\�ЗbW 4r7�ɤ� �%��";� 0���&��n����C(����i�1�&�a:F�SW�hױ�5�J"�`E�{q�Z�6=� ����a/U�,Rz��0{܄����i�݃?���1��r#[�lʆ'ƕunV�vM�;�c��$Mi4IZCL>a�)�ޢ���k����~����Ɍ e�d�#��E�k��x^t-����X[��Ї>Vfdd9�}j�EoTSntI��X Ԑ�]Ҩ7o�H_ �#9�rZ[������`{�%{u�]c�����Z�����a̹�����(@��� v�"�|6�#P)V+�l)�o8T�����k�r�K�Ҷ䀂_ylu��r8g �כ��X�;�<����U(c`(�E���"�]A�2�xg`���*�s�0@Uw�6�UJ�l�~�Z��\�; ���tI�ph��� Z-�8Bg=�n�R�9#HJT�Fˢ�Z0�vMkvj�ީiU�>�Ċ�j�v5HlV���O�KI5��Ϊq9����@ػjB^���nMk��R/1 �`�y�R��ҁ�VMMՀ�����čX�$Sm�&��~��Ѓ�vj�6���8F�IUs$��VT��ح��Sh�B�5m�uy���93����Y0��$�i�&V|�洚�c��U���V �����&7�v���A{{��n����έ�5����no2��t� �3��8Go5ZN�u����J ���[�Q@Z����-������Z���"6j���"���S����r��.���H3_��o��6���ܓ�ec}��e���0����$��j��,F�3�@k����[�hb[.�WѨ�V�����ZR{I���Y�!.����b��ٴW]�`M},� �N~T&(�f@'�@ ��Y�mE~ �� �6@芾 � ���d@Z��.aq�,��� �P�u�<�Z#⟢k1.mQ�$8��>ZjI�����)岲K)ø����1ly$�Ъ�0OC[F� `���;(yӝ�i@+��q́)y�Ы�����H`���w�����^4���_��x�{��&��������O�6������˃��; _����>�X��mw�|�v*��e�'��� ����;W�F>뮦�����(���;�X�nY0H�Rw�],���b�:vX��p/��!�n{\��p?7�����.><${%��l��5��������в��{�Q��4(.2܋�"��4㥆��Ze����0憘��y��p/2)��U�{�ɣ*��܋J��?[7H'���- %�� e��%�; ��l��+�wug�We8���&N �ya��,r:u�ߧ^Ķ�&��� <�Ɠl_Sڽ�6�YF8�M� �+,�s�m`���g�A�8,?��ؿۙ�_���q�T�'�QGU�>V��;l[4����rf[#�b��]��R �4���V�ڒ� 'q��%��Π��+���*HB)�U4l;�N�1��'MŦ�.k��"�ʱ��<�� ~���ԅ�ȋ��o�l�y!� C�;h��΄Q�U���?��y�U��K;�X�� 3�/�`a�_/��j,i�w4#{f�h.� Hvc�F%�)Ș� D8߳�:KLV�Xs�*�6�%2�r8�_��3��a���Y#;�t�Qr��<����>�\�GY�n��烩M��<�m����sIq�*yC�RB��Ӗ���X�-Q���T\C�Il?���*�����>ŌF#c�vY*�.��#f���-y~�;{h�v4'�G r�̎��l����ĥd�S�Jl��֙��L��/r7�Y����au��=paq���0XK����0�h�XX0[�4����ڮ�p�2)����2��ׂ�.֔x�mg;1�Z�ɚS�� �������B������Z�� !���x�w���;o��/2(��:��z�~$����G��Eo�W������]�(��W���ɖ�?�>�1���s�~Ci*{ �E��ԉR~0N��,%��������E�+( SB��.�GP��n��Բ=��Ȟx.�����E������a)D�� ō�X����9�5ojI��ϡh������4 u$�Lo5�?��A���� ��w��f�7���[u� 8�>t ��Hܝ�|j�'��ϤD��s��u~η���#� h�%\@������K���1���=�]��~� R-�rK߁�̯_�u�F�FG-�n������x�rw��;=ހ>� |S�����h��2��|2�����e��Q���x�:�o�=}? �>+��'� �� d�u/�j�܁����@������D`�<@u���sC/�Q��K^p�.7�c�g���ԇ�%�U�Hχ@Fw�Յ��D ����ĝ^@��QZ=2��ї�Ph��s�ț\ ��/l$�H(N�¸3 /�R/��سd�y4�Fxht�B}��Z5�ob�"�[�p0�ߛ�C ܈�*�n����eo(�eU��ծ�EȎ/,�V��zIj���ȒI��`��1Vz��������"�/ � �������7�̢@����f�?�T�uE����vS][��*`ml�S@z#<��莅�+1�x� 1ħd7usz�_})���$��gG�(��<����G�vA��6�W2�5Y�r����I�G2s�c(%�.���İ�Y�$C}Pgb��z�۾�VpVSf���i�p�#�+`h@�V��Q�`��[ٱp�Z�ZLppc�M��H9�k\B_v c�9P ha��HXc<��q����@�B��*�P�� ����F�X�u�^H�:�e�#q�f����v(��S�R���Fq~>��a�TWh1B���Wc\G0�Q^f�j:���pD�8�ބd�>-S�FL�e�n�Yz����֡�1&��Tr]�@~¸��0�DZ�Ӂ<�<蟯�ӹ�ZQI��ob�IJ�لh Z�2ˍ�(F�5%u�+.qË���+@�o��+�I0��@���2�c|��r�K�`�=*�b,���TQ������ò���%M�$T��V��"���s��BߜQ/���)� ��5T� ��bk�����A�88ư��!�� ��. ���0}C���#��[��p��wf�-���i�V0:,e��L7��H�������O�'/�I�2�'/�_�.�������Q���CT�.~�S�.�Q�,:=��l���m�8���X� ���b?+RD- �&ǽB\�[f0� Byl[�U���T�[��i<�H�HS��0��U��sgx�{�z<� M'l>�7:x ��t�oٗ��B~X���Kȋ��d�������>8���%H�sY'��� `� ���C7����g��D~~��Ey(h��4e"�|�k:ye�;tCr 5=��0z5��=њ���p�A�*R�@�n�L�� �0+[�ѥ<*R$�����Hg��yZ '~-��<4L:�/%*��fJ���Ė��嬚e�fY�Ԏ�hj{����S���}9"��s�d�$DH����a@�˶�P��暫k1��x���ޟ��\�5�{��]�L�'����x���4` @'/G����L��qj4cb��9���ڿ���KI�2C��KZ&� |��C�;� O_6~��_�����������b�����ǡ������/U�ŕ����}e���r�r���׾������hrN�W�׾�����~Z���I;��������ߜg��ߴ����Nj�p�����w�/���?���Ѷ.��a�����׳�S� U�U�l2[!Z�1K@�q(a�ܮ�֝K�^�`��3�G� ����S���B�����O�͕vL�Q(M�Rz|JZ ��] 8f���r%�v�n���6 D.�)����}�3�co�}E�u���l�c}� �D�Ք~2PS�����E�tUH��F�܀8 ����y��h�� �m$Z�̘C 9�N/��uE�K��;L�^ϔcW�dp����B��_�r�<�Er�ݡ��'� �Ȯj��IFB�3V7�� 1؜���L�/� �o;�@yH)�@�~Ai<��. ��(cl1� 5&!5����v�d�����U`1$�d�2"Ч�q���F�e6�7�`7�~�튧�B�Jq'�H)-/|���/��u�s�cL�@�`�=�N�q0&`��UKb�o�jz������� �'ƕC����VK�,A��HW�!B��q�����v�i����A�~��n������n�� 5'��"bD��"@Ld�3 ����!�EIϙ��A$^^H$^�@�e�D�El��W�|a9�  �kJ��팼,�7:��g�<�/�a�\�xK�0Ir��R �1���`bc#�9A�(h�ol)]<ǣf�*8z�C٣�1�y��.��eG���������xG����1?������� �&h�osN��R�8%�q(�"���o�%M�~~>:<|���_����������}wz�><��8�� _�zz��ٯ?|6:��+������^���nt�?�-�N������9�֞����<���h4���d�3�p�ݽ!F�w�0�g}J��0�{\�Q/��s�r�'=�f�€{��g���pS*�4Xo���G�B(�8�Cgл;8�Ӓ�i�g$�Sۓ�\K��M �az�d�f^���e�I���*�)৷����@�6�=�#��I���y�x������n"_�<�������Y�!��)_؇��]�����t������;W�M~��t��0�=!P�Dk����à�M�"�d�*D�O�A���7 �J�t�����rg���Y|���ss�Ϳ�ܹ�́��R�m�߷$6��P������Xb th��c;4��'���ǻ����^��2&�|�W&�3#ސs��r���h�6�E��v%r��|�e�`��,Y�-�uZޠ�m�������%�g�jMl0�ő���xN��&3��HD��(���3� ��LO.��G�a���"�2�H& y1� e�ŀa4C\��YЗ8�����LH�w~� ������ 1�<�+���O䯳&�_�7�UA��Y���ۗq� ��ϙ��J����Xn~a s�n�1��݅p��sf��#^A�u���� 4�����/���\ᷥ�j�xsW�~ݐj�&7�T~���j%�%l��q�y.< ]�Q#�����[��5�����_vΑ��+ �s� �W�e�ebt�F��ʞ��FIr2����%]��*]�Ⱥ���� 9���"�M�2v�; ؍ �J)~1� ��xn���=�$�}.�ߝ�|�(!�d�������p/8t� ���K<���"n�\J#�N���G�E�gUH��Q�iH�lo�D:��У�p�<Ԗ=�3;L �#RM��Z���K򮼗���Jx��b����Wx� r��d���(+���K�e�z����2�'Fs'� �&x��kqCƎ��3k$y�!7 ���*�T���>� G�n�t���4�u�C���>��+�Jq��Nrй� ����1�,�u�Y��U�v�c=��M�V��b��Cz�[�\��[�)m~ݍ�x�ϡ̏�K��o���GLJg��f�K# }��������� ,���p�B�JRM ����!�5��jM�  1�foЯ^@�$u5P;����)��Q�Ĕ��C��?�'��l���k�vU�\W0"���,� #��p4�3��Ռ�$Kn��2�Of��/��\@�'��ѓk{7��1Sx��Vh/�^�8x� Q�".ƚ��ٸ��9���`X���:��1��5���v%���m�N[�D���H����)$ �� Hr� T�ơԽ�p2Z�~�Ća�{A�x|͆�5��l��c�OS��/��T#<�R?b3J�|�2z�H<�&�M~ Ⴀ�irr�X��� q*?���J�njN�f%�3���gS�ߨ���g�i _68����e��1�8*��#�eyA���ײ�:| z���d�;~Ԥ����|L����ܵ��:��M����� �VE�(����\,���bKD�pG�WP잨_�+�'[)e%��v{�]��l��z$p�<�lP ��E�E5���H� dN�~۰��Eޕ�TE98l��*�&sQ��E=� �i��#vF��.)GZ��j��p�v����iD�� �'񏉧:���A*U�����ti��Q���q? ��i��&3*�Uͺ�{��ې#/�fcB�Gq�3��W�'L2Sa�u��aF�oqx$��l��;p��� {�� g��!~���F�� Dl]���@�ŮSg|���"Nؼ7ÂMm��v����L�!\V����x �f�o�_�X��)n�ŝ�^j�\o�ox��%����<����{��}�-�����D�