ó
    •JÕi@T  ã                   ó(  • S r SSKrSSKrSSKr/ SQrSR
                  rSR
                  rSR
                  r " S S\	5      r
\R                  \R                  -   S	-   r\S
-   r\" \" S5      5      \" \" \\5      5      -
   V s0 s H	  n U SU -  _M     sn r\R)                  \" S5      S\" S5      S05        \R*                  " S\R,                  " \5      -  5      R.                  r\R*                  " S5      rS rS r\R*                  " S5      R8                  rS rS r/ SQr / SQr!S\ \!4S jr" " S S\#5      r$Sr%\%S-   r&\R*                  " S\%-   S -   \&-   S!-   \RN                  \RP                  -  5      r) " S" S#\#5      r* " S$ S%\*5      r+gs  sn f )&a%
  
Here's a sample session to show how to use this module.
At the moment, this is the only documentation.

The Basics
----------

Importing is easy...

   >>> from http import cookies

Most of the time you start by creating a cookie.

   >>> C = cookies.SimpleCookie()

Once you've created your Cookie, you can add values just as if it were
a dictionary.

   >>> C = cookies.SimpleCookie()
   >>> C["fig"] = "newton"
   >>> C["sugar"] = "wafer"
   >>> C.output()
   'Set-Cookie: fig=newton\r\nSet-Cookie: sugar=wafer'

Notice that the printable representation of a Cookie is the
appropriate format for a Set-Cookie: header.  This is the
default behavior.  You can change the header and printed
attributes by using the .output() function

   >>> C = cookies.SimpleCookie()
   >>> C["rocky"] = "road"
   >>> C["rocky"]["path"] = "/cookie"
   >>> print(C.output(header="Cookie:"))
   Cookie: rocky=road; Path=/cookie
   >>> print(C.output(attrs=[], header="Cookie:"))
   Cookie: rocky=road

The load() method of a Cookie extracts cookies from a string.  In a
CGI script, you would use this method to extract the cookies from the
HTTP_COOKIE environment variable.

   >>> C = cookies.SimpleCookie()
   >>> C.load("chips=ahoy; vienna=finger")
   >>> C.output()
   'Set-Cookie: chips=ahoy\r\nSet-Cookie: vienna=finger'

The load() method is darn-tootin smart about identifying cookies
within a string.  Escaped quotation marks, nested semicolons, and other
such trickeries do not confuse it.

   >>> C = cookies.SimpleCookie()
   >>> C.load('keebler="E=everybody; L=\\"Loves\\"; fudge=;";')
   >>> print(C)
   Set-Cookie: keebler="E=everybody; L=\"Loves\"; fudge=;"

Each element of the Cookie also supports all of the RFC 2109
Cookie attributes.  Here's an example which sets the Path
attribute.

   >>> C = cookies.SimpleCookie()
   >>> C["oreo"] = "doublestuff"
   >>> C["oreo"]["path"] = "/"
   >>> print(C)
   Set-Cookie: oreo=doublestuff; Path=/

Each dictionary element has a 'value' attribute, which gives you
back the value associated with the key.

   >>> C = cookies.SimpleCookie()
   >>> C["twix"] = "none for you"
   >>> C["twix"].value
   'none for you'

The SimpleCookie expects that all values should be standard strings.
Just to be sure, SimpleCookie invokes the str() builtin to convert
the value to a string, when the values are set dictionary-style.

   >>> C = cookies.SimpleCookie()
   >>> C["number"] = 7
   >>> C["string"] = "seven"
   >>> C["number"].value
   '7'
   >>> C["string"].value
   'seven'
   >>> C.output()
   'Set-Cookie: number=7\r\nSet-Cookie: string=seven'

Finis.
é    N)ÚCookieErrorÚ
BaseCookieÚSimpleCookieÚ z; Ú c                   ó   • \ rS rSrSrg)r   é‘   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r
   ó    ÚLib\http\cookies.pyr   r   ‘   s   † Úr   r   z!#$%&'*+-.^_`|~:z ()/<=>?@[]{}é   z\%03oÚ"ú\"Ú\z\\z[%s]+z[\x00-\x1F\x7F]c                  ó&   • [        S U  5       5      $ )z`Detects control characters within a value.
Supports any type, as header values can be any type.
c              3   ó^   #   • U  H#  n[         R                  [        U5      5      v •  M%     g 7f©N)Ú_control_character_reÚsearchÚstr)Ú.0Úvs     r   Ú	<genexpr>Ú)_has_control_character.<locals>.<genexpr>´   s#   é € ÐAºS¸Ô$×+Ñ+¬C°«F×3Ð3ºSùs   ‚+-)Úany)Úvals    r   Ú_has_control_characterr"   °   s   € ô ÑA¹SÓAÓAÐAr   c                 ób   • U b  [        U 5      (       a  U $ SU R                  [        5      -   S-   $ )zÓQuote a string for use in a cookie header.

If the string does not need to be double-quoted, then just return the
string.  Otherwise, surround the string in doublequotes and quote
(with a \) special characters.
r   )Ú_is_legal_keyÚ	translateÚ_Translator©r   s    r   Ú_quoter(   ·   s1   € ð �{”m C×(Ñ(Øˆ
à�S—]‘]¤;Ó/Ñ/°#Ñ5Ð5r   z\\(?:([0-3][0-7][0-7])|(.))c                 óP   • U S   (       a  [        [        U S   S5      5      $ U S   $ )Né   é   é   )ÚchrÚint)Úms    r   Ú_unquote_replacer0   Æ   s'   € Øˆ‡tÜ”3�q˜‘t˜Q“<Ó Ð à�‰tˆr   c                 ó|   • U b  [        U 5      S:  a  U $ U S   S:w  d	  U S   S:w  a  U $ U SS n [        [        U 5      $ )Nr,   r   r   éÿÿÿÿr*   )ÚlenÚ_unquote_subr0   r'   s    r   Ú_unquoter5   Ì   sO   € ð �{”c˜#“h “lØˆ
Ø
ˆ1�v�ƒ}˜˜B™ 3›Øˆ
ð ˆa�ˆ)€Cô Ô(¨#Ó.Ð.r   )ÚMonÚTueÚWedÚThuÚFriÚSatÚSun)NÚJanÚFebÚMarÚAprÚMayÚJunÚJulÚAugÚSepÚOctÚNovÚDecc           	      ó\   • SSK JnJ n  U" 5       nU" XP-   5      u	  pgp‰p«pÍnSX   X‚U   XiX«4-  $ )Nr   )ÚgmtimeÚtimez#%s, %02d %3s %4d %02d:%02d:%02d GMT)rK   rJ   )ÚfutureÚweekdaynameÚ	monthnamerJ   rK   ÚnowÚyearÚmonthÚdayÚhhÚmmÚssÚwdÚyÚzs                  r   Ú_getdaterY   í   sE   € ß!Ù
‹&€CÙ-3°C±LÓ-AÑ*€D�˜" "¨Ø0Ø‰O˜S¨EÑ"2°D¸bÐEñFð Fr   c            
       ó  • \ rS rSrSrSSSSSSS	S
SS.	rSS1rS r\S 5       r	\S 5       r
\S 5       rS rS#S jrS r\R                   rS rS rS rS rS rS rS rS$S jr\rS rS#S  jrS#S! jr\" \R>                  5      r S"r!g)%ÚMorseléõ   a/  A class to hold ONE (key, value) pair.

In a cookie, each such pair may have several attributes, so this class is
used to keep the attributes associated with the appropriate key,value pair.
This class also includes a coded_value attribute, which is used to hold
the network representation of the value.
ÚexpiresÚPathÚCommentÚDomainzMax-AgeÚSecureÚHttpOnlyÚVersionÚSameSite)	r]   ÚpathÚcommentÚdomainúmax-ageÚsecureÚhttponlyÚversionÚsamesiteri   rj   c                 ó€   • S =U l         =U l        U l        U R                   H  n[        R                  XS5        M     g )Nr   )Ú_keyÚ_valueÚ_coded_valueÚ	_reservedÚdictÚ__setitem__)ÚselfÚkeys     r   Ú__init__ÚMorsel.__init__  s8   € à6:Ð:ˆŒ	Ð:�D”K $Ô"3ð —>”>ˆCÜ×Ñ˜T¨Ö+ò "r   c                 ó   • U R                   $ r   )rn   ©rt   s    r   ru   Ú
Morsel.key   s   € à�y‰yÐr   c                 ó   • U R                   $ r   )ro   ry   s    r   ÚvalueÚMorsel.value$  s   € à�{‰{Ðr   c                 ó   • U R                   $ r   )rp   ry   s    r   Úcoded_valueÚMorsel.coded_value(  s   € à× Ñ Ð r   c                 óÒ   • UR                  5       nXR                  ;  a  [        SU< 35      e[        X5      (       a  [        SU< SU< 35      e[        R                  XU5        g ©NzInvalid attribute ú.Control characters are not allowed in cookies r   )Úlowerrq   r   r"   rr   rs   )rt   ÚKÚVs      r   rs   ÚMorsel.__setitem__,  s\   € Ø�G‰G‹IˆØ—N‘NÓ"ÝºÐ;Ó<Ð<Ü! !×'Ñ'ÜÐ NÈqÉeÐSTÐUVÑTYÐZÓ[Ð[Ü×Ñ˜ !Õ$r   Nc                 óÐ   • UR                  5       nXR                  ;  a  [        SU< 35      e[        X5      (       a  [        SU< SU< 35      e[        R                  XU5      $ r‚   )r„   rq   r   r"   rr   Ú
setdefault)rt   ru   r!   s      r   r‰   ÚMorsel.setdefault4  sS   € Ø�i‰i‹kˆØ—n‘nÓ$ÝºÐ=Ó>Ð>Ü! #×+Ñ+ÝÓWZÒ\_ÐaÓbÐbÜ�‰˜t¨#Ó.Ð.r   c                 ó"  • [        U[        5      (       d  [        $ [        R	                  X5      =(       aY    U R
                  UR
                  :H  =(       a9    U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r   )Ú
isinstancer[   ÚNotImplementedrr   Ú__eq__ro   rn   rp   ©rt   Úmorsels     r   rŽ   ÚMorsel.__eq__<  sk   € Ü˜&¤&×)Ñ)Ü!Ð!Ü—‘˜DÓ)÷ 9Ø—‘˜vŸ}™}Ñ,÷9à—	‘	˜VŸ[™[Ñ(÷9ð ×!Ñ! V×%8Ñ%8Ñ8ð	:r   c                 óŽ   • [        5       n[        R                  X5        UR                  R                  U R                  5        U$ r   )r[   rr   ÚupdateÚ__dict__r�   s     r   ÚcopyÚMorsel.copyF  s0   € Ü“ˆÜ�‰�FÔ!Ø�‰×Ñ˜tŸ}™}Ô-Øˆr   c                 ó   • 0 n[        U5      R                  5        HZ  u  p4UR                  5       nX0R                  ;  a  [	        SU< 35      e[        X45      (       a  [	        SU< SU< 35      eXBU'   M\     [         R                  X5        g r‚   )rr   Úitemsr„   rq   r   r"   r“   )rt   ÚvaluesÚdataru   r!   s        r   r“   ÚMorsel.updateL  s…   € ØˆÜ˜V›×*Ñ*Ö,‰HˆCØ—)‘)“+ˆCØŸ.™.Ó(Ý!ºCÐ"AÓBÐBÜ% c×/Ñ/Ü!ð #-Ø-0©G°1°S±Gð#=ó >ð >à�‹Iñ -ô 	�‰�DÕr   c                 ó(   • U R                  U5        U $ r   )r“   )rt   r™   s     r   Ú__ior__ÚMorsel.__ior__X  s   € Ø�‰�FÔØˆr   c                 ó<   • UR                  5       U R                  ;   $ r   )r„   rq   )rt   r…   s     r   ÚisReservedKeyÚMorsel.isReservedKey\  s   € Ø�w‰w‹y˜DŸN™NÑ*Ð*r   c                 ó  • UR                  5       U R                  ;   a  [        SU< 35      e[        U5      (       d  [        SU< 35      e[	        XU5      (       a  [        SU< SU< SU< 35      eXl        X l        X0l        g )NzAttempt to set a reserved key zIllegal key rƒ   r   )r„   rq   r   r$   r"   rn   ro   rp   )rt   ru   r!   Ú	coded_vals       r   ÚsetÚ
Morsel.set_  su   € Ø�9‰9‹;˜$Ÿ.™.Ó(ÝÂCÐIÓJÐJÜ˜S×!Ñ!Ý²#Ð7Ó8Ð8Ü! #¨I×6Ñ6ÝÛLOÓQTÒV_Ðaócð cð Œ	ØŒØ%Õr   c                 óJ   • U R                   U R                  U R                  S.$ )N)ru   r|   r   )rn   ro   rp   ry   s    r   Ú__getstate__ÚMorsel.__getstate__m  s#   € à—9‘9Ø—[‘[Ø×,Ñ,ñ
ð 	
r   c                 ó–   • US   nUS   nUS   n[        X#U5      (       a  [        SU< SU< SU< 35      eX l        X0l        X@l        g )Nru   r|   r   rƒ   r   )r"   r   rn   ro   rp   )rt   Ústateru   r|   r   s        r   Ú__setstate__ÚMorsel.__setstate__t  sd   € Ø�E‰lˆØ�g‘ˆØ˜MÑ*ˆÜ! #¨k×:Ñ:ÜÐNØ!$¡ q¨©	°°;±/ðCó Dð DàŒ	ØŒØ'Õr   c                 ó2   • U< SU R                  U5      < 3$ )Nr   )ÚOutputString)rt   ÚattrsÚheaders      r   ÚoutputÚMorsel.output  s   € Û  $×"3Ñ"3°EÕ":Ð;Ð;r   c                 ó\   • SU R                   R                  < SU R                  5       < S3$ )NÚ<ú: Ú>)Ú	__class__r   r®   ry   s    r   Ú__repr__ÚMorsel.__repr__„  s    � Ø!Ÿ^™^×4Ô4°d×6GÑ6GÖ6IÐJÐJr   c                 ó„   • U R                  U5      n[        U5      (       a  [        S5      eSUR                  SS5      -  $ )Nú-Control characters are not allowed in cookiesz—
        <script type="text/javascript">
        <!-- begin hiding
        document.cookie = "%s";
        // end hiding -->
        </script>
        r   r   )r®   r"   r   Úreplace)rt   r¯   Úoutput_strings      r   Ú	js_outputÚMorsel.js_output‡  sJ   € à×)Ñ)¨%Ó0ˆÜ! -×0Ñ0ÜÐMÓNÐNðð ×$Ñ$ S¨%Ó0ñ2ð 	2r   c                 ó$  • / nUR                   nU" U R                  < SU R                  < 35        Uc  U R                  n[	        U R                  5       5      nU GH&  u  pVUS:X  a  M  XQ;  a  M  US:X  a<  [        U[        5      (       a'  U" U R                  U   < S[        U5      < 35        MW  US:X  a1  [        U[        5      (       a  U" SU R                  U   U4-  5        MŽ  US:X  a<  [        U[        5      (       a'  U" U R                  U   < S[        U5      < 35        MÐ  XPR                  ;   a+  U(       a!  U" [        U R                  U   5      5        GM  GM
  U" U R                  U   < SU< 35        GM)     [        U5      $ )NÚ=r   r]   rh   z%s=%drf   )Úappendru   r   rq   Úsortedr˜   rŒ   r.   rY   r   r(   Ú_flagsÚ_semispacejoin)rt   r¯   ÚresultrÂ   r˜   ru   r|   s          r   r®   ÚMorsel.OutputString”  sB  € ð ˆØ—‘ˆñ 	˜$Ÿ(œ( D×$4Ó$4Ð5Ô6ð ‰=Ø—N‘NˆEÜ�t—z‘z“|Ó$ˆÜ‰JˆCØ˜‹{ÙØÓÙØ�iÓ¤J¨u´c×$:Ñ$:Ù $§.¡.°Ô"5´xÀµÐGÖHØ˜	Ó!¤j°¼×&<Ñ&<Ù�w $§.¡.°Ñ"5°uÐ!=Ñ=Ö>Ø˜	Ó!¤j°¼×&<Ñ&<Ù $§.¡.°Ô"5´v¸eµ}ÐEÖFØŸ™Ó#ÞÙœ3˜tŸ~™~¨cÑ2Ó3×4ò ñ  $§.¡.°Ô"5²uÐ=×>ñ  ô$ ˜fÓ%Ð%r   )rp   rn   ro   r   )NúSet-Cookie:)"r   r   r   r   Ú__doc__rq   rÄ   rv   Úpropertyru   r|   r   rs   r‰   rŽ   ÚobjectÚ__ne__r•   r“   r�   r    r¤   r§   r«   r±   Ú__str__r¸   r¾   r®   ÚclassmethodÚtypesÚGenericAliasÚ__class_getitem__r   r
   r   r   r[   r[   õ   så   † ñð* ØØØØØØØØñ
€Ið ˜
Ð#€Fò,ð ñó ðð ñó ðð ñ!ó ð!ò%ô/ò:ð �]‰]€Fòò
 òò+ò&ò
ò	(ô<ð €GòKô2ô&ñB $ E×$6Ñ$6Ó7Ór   r[   z,\w\d!#%&'~_`><@,:/\$\*\+\-\.\^\|\)\(\?\}\{\=z\[\]zŒ
    \s*                            # Optional whitespace at start of cookie
    (?P<key>                       # Start of group 'key'
    [ax  ]+?   # Any word of at least one letter
    )                              # End of group 'key'
    (                              # Optional group: there may not be a value.
    \s*=\s*                          # Equal Sign
    (?P<val>                         # Start of group 'val'
    "(?:[^\\"]|\\.)*"                  # Any double-quoted string
    |                                  # or
    # Special case for "expires" attr
    (\w{3,6}day|\w{3}),\s              # Day of the week or abbreviated day
    [\w\d\s-]{9,11}\s[\d:]{8}\sGMT     # Date and time in specific format
    |                                  # or
    [a-  ]*      # Any word or empty string
    )                                # End of group 'val'
    )?                             # End of optional value group
    \s*                            # Any number of spaces.
    (\s+|;|$)                      # Ending either at space, semicolon, or EOS.
    c                   ój   • \ rS rSrSrS rS rSS jrS rS r	SS	 jr
\
rS
 rSS jrS r\4S jrSrg)r   iÜ  z'A container class for a set of Morsels.c                 ó   • X4$ )zâreal_value, coded_value = value_decode(STRING)
Called prior to setting a cookie's value from the network
representation.  The VALUE is the value read from HTTP
header.
Override this function to modify the behavior of cookies.
r
   ©rt   r!   s     r   Úvalue_decodeÚBaseCookie.value_decodeß  s   € ð ˆxˆr   c                 ó   • [        U5      nX"4$ )zÝreal_value, coded_value = value_encode(VALUE)
Called prior to setting a cookie's value from the dictionary
representation.  The VALUE is the value being assigned.
Override this function to modify the behavior of cookies.
r'   ©rt   r!   Ústrvals      r   Úvalue_encodeÚBaseCookie.value_encodeè  s   € ô �S“ˆØˆ~Ðr   Nc                 ó6   • U(       a  U R                  U5        g g r   )Úload)rt   Úinputs     r   rv   ÚBaseCookie.__init__ñ  s   € ÞØ�I‰I�eÕð r   c                 óˆ   • U R                  U[        5       5      nUR                  XU5        [        R	                  XU5        g)z+Private method for setting a cookie's valueN)Úgetr[   r¤   rr   rs   )rt   ru   Ú
real_valuer   ÚMs        r   Ú__setÚBaseCookie.__setõ  s2   € à�H‰H�Sœ&›(Ó#ˆØ	�‰ˆc˜{Ô+Ü×Ñ˜ AÕ&r   c                 ó¦   • [        U[        5      (       a  [        R                  XU5        gU R	                  U5      u  p4U R                  XU5        g)zDictionary style assignment.N)rŒ   r[   rr   rs   rÚ   Ú_BaseCookie__set)rt   ru   r|   ÚrvalÚcvals        r   rs   ÚBaseCookie.__setitem__û  s?   € ä�eœV×$Ñ$ä×Ñ˜T¨Õ.à×*Ñ*¨5Ó1‰JˆDØ�J‰J�s $Õ'r   c                 óê   • / n[        U R                  5       5      nU HB  u  pgUR                  X5      n[        U5      (       a  [	        S5      eUR                  U5        MD     UR                  U5      $ )z"Return a string suitable for HTTP.r»   )rÃ   r˜   r±   r"   r   rÂ   Újoin)	rt   r¯   r°   ÚseprÆ   r˜   ru   r|   Úvalue_outputs	            r   r±   ÚBaseCookie.output  se   € àˆÜ�t—z‘z“|Ó$ˆÛ‰JˆCØ Ÿ<™<¨Ó6ˆLÜ% l×3Ñ3Ü!Ð"QÓRÐRØ�M‰M˜,Ö'ñ	  ð
 �x‰x˜ÓÐr   c                 óô   • / n[        U R                  5       5      nU H0  u  p4UR                  U< S[        UR                  5      < 35        M2     SU R
                  R                  < S[        U5      < S3$ )NrÁ   r´   rµ   r¶   )rÃ   r˜   rÂ   Úreprr|   r·   r   Ú
_spacejoin)rt   Úlr˜   ru   r|   s        r   r¸   ÚBaseCookie.__repr__  sV   € ØˆÜ�t—z‘z“|Ó$ˆÛ‰JˆCØ�H‰H£¤T¨%¯+©+Õ%6Ð7Ö8ò  à!Ÿ^™^×4Ô4´jÀ¶mÐDÐDr   c                 ó¤   • / n[        U R                  5       5      nU H%  u  pEUR                  UR                  U5      5        M'     [	        U5      $ )z(Return a string suitable for JavaScript.)rÃ   r˜   rÂ   r¾   Ú	_nulljoin)rt   r¯   rÆ   r˜   ru   r|   s         r   r¾   ÚBaseCookie.js_output  sC   € àˆÜ�t—z‘z“|Ó$ˆÛ‰JˆCØ�M‰M˜%Ÿ/™/¨%Ó0Ö1ñ  ä˜Ó Ð r   c                 óŒ   • [        U[        5      (       a  U R                  U5        gUR                  5        H	  u  p#X0U'   M     g)z½Load cookies from a string (presumably HTTP_COOKIE) or
from a dictionary.  Loading cookies from a dictionary 'd'
is equivalent to calling:
    map(Cookie.__setitem__, d.keys(), d.values())
N)rŒ   r   Ú_BaseCookie__parse_stringr˜   )rt   Úrawdataru   r|   s       r   rÝ   ÚBaseCookie.load   sB   € ô �gœs×#Ñ#Ø×Ñ Ô(ð
 	ð &Ÿm™mžo‘
�Ø!�S“	ñ .àr   c                 ó2  • Sn[        U5      n/ nSnSnSnSUs=::  a  U:  Ga5  O  GO1UR                  X5      n	U	(       d  GOU	R                  S5      U	R                  S5      pºU	R                  S5      nU
S   S:X  a   U(       d  Mp  UR	                  XzSS  U45        OªU
R                  5       [        R                  ;   a_  U(       d  g Uc7  U
R                  5       [        R                  ;   a  UR	                  XzS45        OGg UR	                  Xz[        U5      45        O)Ub%  UR	                  XŠU R                  U5      45        SnOg SUs=::  a	  U:  a  GM/  O  S nU H7  u  pÚnX×:X  a  Uc   eX¼U
'   M  XØ:X  d   eUu  pïU R                  X®U5        X
   nM9     g )	Nr   Fr*   r,   ru   r!   Ú$T)r3   ÚmatchÚgroupÚendrÂ   r„   r[   rq   rÄ   r5   rÕ   rç   )rt   r   ÚpattÚiÚnÚparsed_itemsÚmorsel_seenÚTYPE_ATTRIBUTEÚTYPE_KEYVALUErþ   ru   r|   rã   Útprè   ré   s                   r   Ú__parse_stringÚBaseCookie.__parse_string.  sŒ  € ØˆÜ�‹HˆØˆØˆàˆØˆð
 �1�j�q�jˆjà—J‘J˜sÓ&ˆEÞáàŸ™ UÓ+¨U¯[©[¸Ó-?�Ø—	‘	˜!“ˆAà�1‰v˜‹}Þ"ñ Ø×#Ñ# ^¸¸°W¸eÐ$DÕEØ—‘“¤× 0Ñ 0Ó0Þ"àØ‘=Ø—y‘y“{¤f§m¡mÓ3Ø$×+Ñ+¨^À$Ð,GÕHð à ×'Ñ'¨¼hÀu»oÐ(NÕOØÑ"Ø×#Ñ# ]¸×9JÑ9JÈ5Ó9QÐ$RÔSØ"‘ð ðE �1�j�q�jˆjðJ ˆÛ*‰NˆB�UØÓ#Ø‘}Ð$�}Ø�#“àÓ*Ð*Ð*Ø"‘
�Ø—
‘
˜3 dÔ+Ø‘I’ò +r   r
   r   )NrÈ   z
)r   r   r   r   rÉ   rÕ   rÚ   rv   rç   rs   r±   rÍ   r¸   r¾   rÝ   Ú_CookiePatternrù   r   r
   r   r   r   r   Ü  sD   † Ù1òòôò'ò(ô	 ð €GòEô!òð (6÷ :r   r   c                   ó$   • \ rS rSrSrS rS rSrg)r   ik  zê
SimpleCookie supports strings as cookie values.  When setting
the value using the dictionary assignment notation, SimpleCookie
calls the builtin str() to convert the value to a string.  Values
received from HTTP are kept as strings.
c                 ó   • [        U5      U4$ r   )r5   rÔ   s     r   rÕ   ÚSimpleCookie.value_decoder  s   € Ü˜‹}˜cÐ!Ð!r   c                 ó2   • [        U5      nU[        U5      4$ r   )r   r(   rØ   s      r   rÚ   ÚSimpleCookie.value_encodeu  s   € Ü�S“ˆØ”v˜f“~Ð%Ð%r   r
   N)r   r   r   r   rÉ   rÕ   rÚ   r   r
   r   r   r   r   k  s   † ñò"õ&r   r   ),rÉ   ÚreÚstringrÏ   Ú__all__rì   rö   rÅ   rò   Ú	Exceptionr   Úascii_lettersÚdigitsÚ_LegalCharsÚ_UnescapedCharsr¤   ÚrangeÚmapÚordr&   r“   ÚcompileÚescapeÚ	fullmatchr$   r   r"   r(   Úsubr4   r0   r5   Ú_weekdaynameÚ
_monthnamerY   rr   r[   Ú_LegalKeyCharsÚ_LegalValueCharsÚASCIIÚVERBOSEr  r   r   )r  s   0r   Ú<module>r&     sà  ðñNXóz 
Û Û â
7€à�G‰G€	Ø—‘€Ø�X‰X€
ô
	�)ô 	ð" ×"Ñ" V§]¡]Ñ2Ð5GÑG€Ø Ñ/€ñ ™E #›J›©#©c°#°Ó.GÓ*HÒHóJÚH�1ð �(˜Q‘,ŠÙHñJ€à × Ñ ÙˆƒHˆeÙˆƒIˆvðô ð
 —
’
˜7 R§Y¢Y¨{Ó%;Ñ;Ó<×FÑF€ØŸ
š
Ð#5Ó6Ð òBò
6ð �zŠzÐ8Ó9×=Ñ=€òò/ò6 A€ò8€
ð  <¸:ô Fô@8ˆTô @8ðX B€Ø! GÑ+Ð Ø—’ð 	ð ñð	ñ	ð ñðñð& 
�‰�B—J‘JÑ	ó' €ô2L�ô Lô^&�:õ &ùòMJs   ÂF