ó
    pñ:iç  ã                  ó„  • S SK Jr  S SKrS SKrS SKJr  SSKJr  SSKJ	r	  SSKJ
r
  SSKJr  SS	KJr  SS
KJr  \R                  " S5      r         S                   SS jjr\R                  " S\R"                  \R$                  -  S9r\R                  " S5      rSS jr  S     SS jjrSSKJr  g)é    )ÚannotationsN)Údatetimeé   )Ú
_dt_as_utc)Úgenerate_etag)Ú
parse_date)Úparse_etags)Úparse_if_range_header)Úunquote_etagz&([Ww]/)?(?:"(.*?)"|(.*?))(?:\s*,\s*|$)c	                ó¦  • Uc  Ub  [        U5      nOUb  [        S5      eSn	[        U[        5      (       a  [	        U5      nUb  [        UR                  SS95      nSn
U(       d  U b  [        U5      n
U
b  U
R                  b  U
R                  nO[	        U5      nU(       a  U(       a  X{::  a  Sn	U(       a“  [        U5      u  p\U
b8  U
R                  b+  [        U
R                  5      R                  U5      n	U	(       + $ [        U5      nU(       a  UR                  U5      n	[        U5      nU(       a  UR                  U5      (       + n	U	(       + $ )a×  Convenience method for conditional requests.
:param http_range: Range HTTP header
:param http_if_range: If-Range HTTP header
:param http_if_modified_since: If-Modified-Since HTTP header
:param http_if_none_match: If-None-Match HTTP header
:param http_if_match: If-Match HTTP header
:param etag: the etag for the response for comparison.
:param data: or alternatively the data of the response to automatically
             generate an etag using :func:`generate_etag`.
:param last_modified: an optional date of the last modification.
:param ignore_if_range: If `False`, `If-Range` header will be taken into
                        account.
:return: `True` if the resource was modified, otherwise `False`.

.. versionadded:: 2.2
Nzboth data and etag givenFr   )ÚmicrosecondT)r   Ú	TypeErrorÚ
isinstanceÚstrr   r   Úreplacer
   Údater   Úetagr	   ÚcontainsÚcontains_weakÚ	is_strong)Ú
http_rangeÚhttp_if_rangeÚhttp_if_modified_sinceÚhttp_if_none_matchÚhttp_if_matchr   ÚdataÚlast_modifiedÚignore_if_rangeÚ
unmodifiedÚif_rangeÚmodified_sinceÚ_Úif_none_matchÚif_matchs                  ÚW/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/werkzeug/sansio/http.pyÚis_resource_modifiedr&      s>  € ð6 �|˜Ñ(Ü˜TÓ"‰Ø	Ñ	ÜÐ2Ó3Ð3à€JÜ�-¤×%Ñ%Ü" =Ó1ˆð Ñ Ü" =×#8Ñ#8ÀQÐ#8Ð#GÓHˆà€HÞ˜zÑ5ô )¨Ó7ˆàÑ §¡Ñ 9Ø*2¯-©-‰ä#Ð$:Ó;ˆæž-¨MÓ,KØˆ
æÜ˜tÓ$‰ˆàÑ H§M¡MÑ$=Ü$ X§]¡]Ó3×<Ñ<¸TÓBˆJð  Œ>Ðô (Ð(:Ó;ˆMÞð +×8Ñ8¸Ó>�
ô
 # =Ó1ˆHÞØ!)×!3Ñ!3°DÓ!9Ô9�
àŒ>Ðó    zr
    ([^=;]*)
    (?:\s*=\s*
      (
        "(?:[^\\"]|\\.)*"
      |
        .*?
      )
    )?
    \s*;\s*
    )Úflagss   \\([0-3][0-7]{2}|.)c                ó~   • U R                  S5      n[        U5      S:X  a  U$ [        US5      R                  SS5      $ )Né   é   Úbig)ÚgroupÚlenÚintÚto_bytes)ÚmÚvs     r%   Ú_cookie_unslash_replacer3   q   s8   € Ø	�‰�‹
€Aä
ˆ1ƒv�ƒ{Øˆäˆq�!‹9×Ñ˜a Ó'Ð'r'   c                óø  • Uc%  [         R                  " S[        R                  5      nU (       d  U" 5       $ U  S3n / n[        R                  U 5       H�  u  p4UR                  5       nUR                  5       nU(       d  M.  [        U5      S:¼  aN  US   US   s=:X  a  S:X  a;  O  O8[        R                  [        USS R                  5       5      R                  SS	9nUR                  X445        MŸ     U" U5      $ )
aý  Parse a cookie from a string.

The same key can be provided multiple times, the values are stored
in-order. The default :class:`MultiDict` will have the first value
first, and all values can be retrieved with
:meth:`MultiDict.getlist`.

:param cookie: The cookie header as a string.
:param cls: A dict-like class to store the parsed cookies in.
    Defaults to :class:`MultiDict`.

.. versionchanged:: 3.0
    Passing bytes, and the ``charset`` and ``errors`` parameters, were removed.

.. versionadded:: 2.2
ztype[ds.MultiDict[str, str]]Ú;r   r   éÿÿÿÿÚ"r*   r   )Úerrors)ÚtÚcastÚdsÚ	MultiDictÚ
_cookie_reÚfindallÚstripr.   Ú_cookie_unslash_reÚsubr3   ÚencodeÚdecodeÚappend)ÚcookieÚclsÚoutÚckÚcvs        r%   Úparse_cookierJ   z   sÖ   € ð( �{Ü�fŠfÐ3´R·\±\ÓBˆæÙ‹uˆàˆx�qˆ\€FØ
€Cä×$Ñ$ VÖ,‰ˆØ�X‰X‹ZˆØ�X‰X‹ZˆæÙäˆr‹7�a‹<˜B˜q™E R¨¡VÕ2¨sÖ2ä#×'Ñ'Ü'¨¨A¨b¨¯©Ó):óç‰f˜IˆfÐ&ð ð 	�
‰
�B�8Öñ -ñ ˆs‹8€Or'   )Údatastructures)	NNNNNNNNT)r   ú
str | Noner   rL   r   rL   r   rL   r   rL   r   rL   r   zbytes | Noner   zdatetime | str | Noner   ÚboolÚreturnrM   )r1   zt.Match[bytes]rN   Úbytes)NN)rE   rL   rF   z#type[ds.MultiDict[str, str]] | NonerN   zds.MultiDict[str, str])Ú
__future__r   ÚreÚtypingr9   r   Ú	_internalr   Úhttpr   r   r	   r
   r   ÚcompileÚ_etag_rer&   ÚASCIIÚVERBOSEr=   r@   r3   rJ   Ú rK   r;   © r'   r%   Ú<module>r[      s+  ðÝ "ã 	Û Ý å "Ý  Ý Ý Ý (Ý à�:Š:Ð?Ó@€ð "Ø $Ø)-Ø%)Ø $ØØØ+/Ø ðLØðLàðLð 'ðLð #ð	Lð
 ðLð ðLð ðLð )ðLð ðLð 
õLð^ �ZŠZð
ð �(‰(�R—Z‘ZÑ
ñ€
ð —Z’ZÐ 7Ó8Ð ô(ð Ø/3ð,Øð,à	,ð,ð õ,ö` $r'   