Ë
    Eü´jž|  ã                   ó0  — U d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZmZmZmZmZmZmZ d dlmZ d dlZd dlmZmZmZmZmZ d dlm Z  d	d
l!m"Z" d	dl#m$Z$ d	dl%m&Z& d	dl'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 d	dl5m6Z6 d	dl7m8Z8 d	dl9m:Z:m;Z; d	dl<m=Z=m>Z> d	dl?m@Z@mAZAmBZBmCZCmDZD d	dlEmFZFmGZG d	dlHmIZI dZJerd	dlKmLZL d	dlMmNZN d	dlOmPZP  ed«      ZQ ej¤                  ddd¬«       G d„ d«      «       ZSeTeUz  eVz  eSz  ZWej°                  ej²                  z   dz   ZZeeT   e[d<   d eZ› d!�Z\eeT   e[d"<   d#j»                  d$j½                  d%„ d& e_ e`d'd(«      «      z   D «       «      «      ZaeeT   e[d)<   d*ZbeeT   e[d+<   d,eb› d-ea› d.�ZceeT   e[d/<   d0e\› d1e\› d-ec› d2�ZdeeT   e[d3<    ejÊ                  d4«      ZfeeeT      e[d5<    ejÊ                  ed«      ZgeeeT      e[d6<    G d7„ d8eeTe0e   z  ef   e/«      Zh G d9„ d:eh«      Ziy);é    N)ÚIteratorÚMappingÚMutableMapping)ÚPattern)ÚMappingProxyType)ÚTYPE_CHECKINGÚAnyÚFinalÚOptionalÚTypeVarÚcastÚoverload)Ú	parse_qsl)ÚCIMultiDictÚCIMultiDictProxyÚ	MultiDictÚMultiDictProxyÚMultiMapping)ÚURLé   )Úhdrs)Úparse_cookie_header)ÚAbstractStreamWriter)Ú	_SENTINELÚDEBUGÚDEFAULT_CHUNK_SIZEÚETAG_ANYÚLIST_QUOTED_ETAG_REÚChainMapProxyÚETagÚHeadersMixinÚ
RequestKeyÚparse_http_dateÚreifyÚsentinelÚset_exception)ÚRawRequestMessage)ÚHttpVersion)ÚBodyPartReaderÚMultipartReader)ÚEmptyStreamReaderÚStreamReader)ÚDEFAULT_JSON_DECODERÚJSONDecoderÚLooseHeadersÚ
RawHeadersÚStrOrURL)ÚHTTPRequestEntityTooLargeÚNotAppKeyWarning)ÚStreamResponse)ÚBaseRequestÚ	FileFieldÚRequest)ÚApplication)ÚRequestHandler)ÚUrlMappingMatchInfoÚ_TT)Úauto_attribsÚfrozenÚslotsc                   óZ   — e Zd ZU eed<   eed<   ej                  ed<   eed<   ee   ed<   y)r6   ÚnameÚfilenameÚfileÚcontent_typeÚheadersN)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__ÚioÚBufferedReaderr   © ó    úQ/root/workspace/ytshorts/venv/lib/python3.12/site-packages/aiohttp/web_request.pyr6   r6   E   s)   … à
ƒIØƒMØ
×
Ñ
ÓØÓØ˜cÑ"Ô"rM   r6   z!#$%&'*+.^_`|~-Ú_TCHARú[z]+Ú_TOKENz[{}]Ú c              #   ó2   K  — | ]  }t        |«      –— Œ y ­w©N)Úchr)Ú.0Úcs     rN   ú	<genexpr>rX   U   s   è ø€ ÒK˜ŒS��VÑKùs   ‚)é	   é    é!   é#   é   Ú_QDTEXTz
\\[\t !-~]Ú_QUOTED_PAIRz"(?:ú|z)*"Ú_QUOTED_STRINGú(z)=(z)(:\d{1,4})?Ú_FORWARDED_PAIRz\\([\t !-~])Ú_QUOTED_PAIR_REPLACE_REÚ_FORWARDED_PAIR_REc                   ó   — e Zd ZU ej                  ej
                  ej                  ej                  ej                  hZ	e
j                   eg d¢«      z  ZdZee   dz  ed<   dZedz  ed<    e«       Zee   ed<   ddddddœded	ed
ddedddej4                  dedeee   ez  ef   dz  dedz  dedz  dedz  ddfd„Ze e e e e e e dœdee!z  de"e!z  de#e!z  dee!z  dee!z  dee!z  dee!z  dd fd„Z$e%dcd„«       Z&e%ddd„«       Z'e%dejP                  dz  fd„«       Z)e%defd„«       Z*e%defd „«       Z+e,defd!„«       Z-e,de.fd"„«       Z/e,dej4                  fd#„«       Z0e1d$ee2   de2fd%„«       Z3e1d$edefd&„«       Z3d$eee2   z  defd'„Z3e1d$ee2   d(e2ddfd)„«       Z4e1d$ed(eddfd*„«       Z4d$eee2   z  d(eddfd+„Z4d$eee2   z  ddfd,„Z5defd-„Z6de7eee   z     fd.„Z8e,de9fd/„«       Z:e,de;e<eef   d0f   fd1„«       Z=e,defd2„«       Z>e,defd3„«       Z?e,de@fd4„«       ZAe,defd5„«       ZBe,dedz  fd6„«       ZCe,de.fd7„«       ZDe,defd8„«       ZEe,defd9„«       ZFe,defd:„«       ZGe,ded;„«       ZHe,defd<„«       ZIe,deJe   fd=„«       ZKe,deLfd>„«       ZMe,deNjœ                  dz  fd?„«       ZOe,deNjœ                  dz  fd@„«       ZPeQdAede7eR   fdB„«       ZSeTdCedz  de;eRd0f   dz  fdD„«       ZUe,de;eRd0f   dz  fdE„«       ZVe,de;eRd0f   dz  fdF„«       ZWe,deNjœ                  dz  fdG„«       ZXe,de9fdH„«       ZYe,de<eef   fdI„«       ZZe,de[fdJ„«       Z\e,defdK„«       Z]e%de9fdL„«       Z^e%de9fdM„«       Z_e,de9fdN„«       Z`dfdO„ZadefdP„ZbdefdQ„ZceddRœdSeedefdT„ZfdegfdU„ZhdgdV„ZidhdWedXedefdY„ZjdefdZ„Zkd[elde9fd\„Zmde9fd]„Znd^eoddfd_„Zpd`eqddfda„Zrdfdb„Zsy)ir5   )Ú_messageÚ	_protocolÚ_payload_writerÚ_payloadÚ_headersÚ_methodÚ_versionÚ_rel_urlÚ_postÚ_read_bytesÚ_stateÚ_cacheÚ_taskÚ_client_max_sizeÚ_loopÚ_transport_sslcontextÚ_transport_peernameÚ_transport_socknameNro   rp   Ú_seen_str_keysi   )Úclient_max_sizeÚstateÚschemeÚhostÚremoteÚmessageÚpayloadÚprotocolr9   Úpayload_writerÚtaskúasyncio.Task[None]Úlooprz   r{   r|   r}   r~   Úreturnc                óö  — || _         || _        || _        || _        |j                  | _        |j                  | _        |j                  | _	        i | _
        |j                  }|j                  r}|	�|j                  |	«      }|
�|j                  |
«      }|| j                  d<   |j                  | j                  d<   |j                   | j                  d<   |j#                  «       | _        n)|| _        |	�|	| j                  d<   |
�|
| j                  d<   |€i n|| _        || _        || _        || _        |j.                  | _        |j2                  | _        |j6                  | _        |�|| j                  d<   y y )NÚurlr}   r|   r~   )rg   rh   ri   rj   rD   rk   Úmethodrl   Úversionrm   rr   rˆ   ÚabsoluteÚwith_schemeÚ	with_hostr}   r|   Úrelativern   rq   rs   rt   ru   Ússl_contextrv   Úpeernamerw   Úsocknamerx   )Úselfr   r€   r�   r‚   rƒ   r…   rz   r{   r|   r}   r~   rˆ   s                rN   Ú__init__zBaseRequest.__init__Ž   sW  € ð  ˆŒØ!ˆŒØ-ˆÔàˆŒØ/6¯©ˆŒØ—~‘~ˆŒØŸ™ˆŒØ&(ˆŒØ�k‰kˆØ�<Š<ØÐ!Ø—o‘o fÓ-�ØÐØ—m‘m DÓ)�ð "%ˆD�K‰K˜ÑØ"%§(¡(ˆD�K‰K˜ÑØ$'§J¡JˆD�K‰K˜Ñ!ØŸL™L›NˆD�MàˆDŒMØÐ!Ø(.�—‘˜HÑ%ØÐØ&*�—‘˜FÑ#à!˜M‘b¨uˆŒØˆŒ
Ø /ˆÔØˆŒ
à%-×%9Ñ%9ˆÔ"Ø#+×#4Ñ#4ˆÔ Ø#+×#4Ñ#4ˆÔ àÐØ$*ˆD�K‰K˜Ò!ð rM   ©r‰   Úrel_urlrD   r|   r}   r~   rz   r‰   r•   rD   c                ó   — | j                   rt        d«      ‚i }|t        ur||d<   |t        urt        |«      }	|	|d<   t	        |	«      |d<   |t        ur=t        t        |«      «      |d<   t        d„ |d   j                  «       D «       «      |d<    | j                  j                  di |¤Ž}
i }|t        ur||d<   |t        ur||d	<   |t        ur||d
<   |t        u r| j                  } | j                  |
| j                  | j                  | j                  | j                   | j"                  f|| j$                  j'                  «       dœ|¤ŽS )a  Clone itself with replacement some attributes.

        Creates and returns a new instance of Request object. If no parameters
        are given, an exact copy is returned. If a parameter is not passed, it
        will reuse the one from the current request object.
        z.Cannot clone request after reading its contentr‰   rˆ   ÚpathrD   c              3   óf   K  — | ])  \  }}|j                  d «      |j                  d «      f–— Œ+ y­w)úutf-8N)Úencode)rV   ÚkÚvs      rN   rX   z$BaseRequest.clone.<locals>.<genexpr>ä   s3   è ø€ ò 'á�A�qð —‘˜'Ó" A§H¡H¨WÓ$5Ô6ñ'ùs   ‚/1Úraw_headersr|   r}   r~   )rz   r{   rL   )rp   ÚRuntimeErrorr%   r   rH   r   r   ÚtupleÚitemsrg   Ú_replacert   Ú	__class__rj   rh   ri   rs   ru   rq   Úcopy)r’   r‰   r•   rD   r|   r}   r~   rz   ÚdctÚnew_urlr   Úkwargss               rN   ÚclonezBaseRequest.cloneÆ   sa  € ð" ×ÒÜÐOÓPÐPà ˆØœÑ!Ø"ˆC�‰MØœ(Ñ"Ü˜w›<ˆGØ ˆC�‰JÜ˜g›,ˆC�‰KØœ(Ñ"ä-¬k¸'Ó.BÓCˆC�	‰NÜ!&ñ 'à 	™N×0Ñ0Ó2ô'ó "ˆC�Ñð
 )�$—-‘-×(Ñ(Ñ/¨3Ñ/ˆàˆØœÑ!Ø%ˆF�8ÑØ”xÑØ!ˆF�6‰NØœÑ!Ø%ˆF�8ÑØœhÑ&Ø"×3Ñ3ˆOàˆt�~‰~ØØ�M‰MØ�N‰NØ× Ñ Ø�J‰JØ�J‰Jð

ð ,Ø—+‘+×"Ñ"Ó$ñ

ð ñ

ð 
	
rM   c                 ó   — | j                   S rT   )rs   ©r’   s    rN   rƒ   zBaseRequest.task  s   € à�z‰zÐrM   c                 ó   — | j                   S rT   )rh   r©   s    rN   r�   zBaseRequest.protocol  s   € à�~‰~ÐrM   c                 óH   — | j                   €y | j                   j                  S rT   )rh   Ú	transportr©   s    rN   r¬   zBaseRequest.transport	  s   € à�>‰>Ð!ØØ�~‰~×'Ñ'Ð'rM   c                 ó   — | j                   S rT   )ri   r©   s    rN   ÚwriterzBaseRequest.writer  s   € à×#Ñ#Ð#rM   c                 ó   — | j                   S rT   )rt   r©   s    rN   rz   zBaseRequest.client_max_size  s   € à×$Ñ$Ð$rM   c                 óR   — t        j                  dt        d¬«       | j                  S )NzRequest.message is deprecatedé   ©Ú
stacklevel)ÚwarningsÚwarnÚDeprecationWarningrg   r©   s    rN   r   zBaseRequest.message  s   € ä�‰Ð5Ô7IÐVWÕXØ�}‰}ÐrM   c                 ó   — | j                   S rT   )rn   r©   s    rN   r•   zBaseRequest.rel_url  s   € à�}‰}ÐrM   c                 óR   — t        j                  dt        d¬«       | j                  S )Nz#request.loop property is deprecatedé   r²   )r´   rµ   r¶   ru   r©   s    rN   r…   zBaseRequest.loop   s#   € ä�‰Ø1Ô3EÐRSõ	
ð �z‰zÐrM   Úkeyc                  ó   — y rT   rL   ©r’   rº   s     rN   Ú__getitem__zBaseRequest.__getitem__)  s   € Ø69rM   c                  ó   — y rT   rL   r¼   s     rN   r½   zBaseRequest.__getitem__,  s   € Ø,/rM   c                 ó    — | j                   |   S rT   ©rq   r¼   s     rN   r½   zBaseRequest.__getitem__/  s   € Ø�{‰{˜3ÑÐrM   Úvaluec                  ó   — y rT   rL   ©r’   rº   rÁ   s      rN   Ú__setitem__zBaseRequest.__setitem__2  s   € ØCFrM   c                  ó   — y rT   rL   rÃ   s      rN   rÄ   zBaseRequest.__setitem__5  s   € Ø9<rM   c                 óÜ   — t        |t        «      sM|t        j                  vr;t        j                  j	                  |«       t        j                  dt        d¬«       || j                  |<   y )Nz‚It is recommended to use web.RequestKey instances for keys.
https://docs.aiohttp.org/en/stable/web_advanced.html#request-s-storager¹   )Úcategoryr³   )	Ú
isinstancer"   r5   ry   Úaddr´   rµ   r3   rq   rÃ   s      rN   rÄ   zBaseRequest.__setitem__8  sV   € Ü˜#œzÔ*¨s¼+×:TÑ:TÑ/TÜ×&Ñ&×*Ñ*¨3Ô/Ü�M‰Mð'ô *Øõð !ˆ�‰�CÒrM   c                 ó   — | j                   |= y rT   rÀ   r¼   s     rN   Ú__delitem__zBaseRequest.__delitem__D  s   € Ø�K‰K˜ÑrM   c                 ó,   — t        | j                  «      S rT   )Úlenrq   r©   s    rN   Ú__len__zBaseRequest.__len__G  s   € Ü�4—;‘;ÓÐrM   c                 ó,   — t        | j                  «      S rT   )Úiterrq   r©   s    rN   Ú__iter__zBaseRequest.__iter__J  s   € Ü�D—K‘KÓ Ð rM   c                 ó    — | j                   dk(  S )z5A bool indicating if the request is handled with SSL.Úhttps)r|   r©   s    rN   ÚsecurezBaseRequest.secureO  s   € ð �{‰{˜gÑ%Ð%rM   .c                 ó<  — g }| j                   j                  j                  t        j                  d«      D �]X  }t        |«      }d}d}i }|j                  t        j                  |«      «       d|cxk  r|k  sŒEn ŒHt        j                  ||«      }|�„|r|j                  d|«      }nÔ|j                  «       \  }}	}
|	d   dk(  rt        j                  d|	dd «      }	|
r|	|
z  }	|	||j                  «       <   |t        |j!                  d«      «      z  }d	}ne||   dk(  r.d}i }|j                  t        j                  |«      «       |dz  }n/||   d
k(  rd}|dz  }n||   dv r|dz  }n|j                  d|«      }d|cxk  r|k  r�Œ�ŒX �Œ[ t#        |«      S )a˜  A tuple containing all parsed Forwarded header(s).

        Makes an effort to parse Forwarded headers as specified by RFC 7239:

        - It adds one (immutable) dictionary per Forwarded 'field-value', ie
          per proxy. The element corresponds to the data in the Forwarded
          field-value added by the first proxy encountered by the client. Each
          subsequent item corresponds to those added by later proxies.
        - It checks that every value has valid syntax in general as specified
          in section 4: either a 'token' or a 'quoted-string'.
        - It un-escapes found escape sequences.
        - It does NOT validate 'by' and 'for' contents as specified in section
          6.
        - It does NOT validate 'host' contents (Host ABNF).
        - It does NOT validate 'proto' contents for valid URI scheme names.

        Returns a tuple containing one or more immutable dicts
        rL   r   Fú,ú"z\1r   éÿÿÿÿTú;z 	)rg   rD   Úgetallr   Ú	FORWARDEDrÍ   ÚappendÚtypesr   re   ÚmatchÚfindÚgroupsrd   ÚsubÚlowerÚgrouprŸ   )r’   ÚelemsÚfield_valueÚlengthÚposÚneed_separatorÚelemrÞ   r@   rÁ   Úports              rN   Ú	forwardedzBaseRequest.forwardedT  s§  € ð( ˆØŸ=™=×0Ñ0×7Ñ7¼¿¹ÈÓKó %	5ˆKÜ˜Ó%ˆFØˆCØ"ˆNØ#%ˆDØ�L‰Lœ×/Ñ/°Ó5Ô6Ø�sÔ#˜VÖ#Ü*×0Ñ0°¸cÓB�ØÐ$Ù%à)×.Ñ.¨s°CÓ8™à,1¯L©L«NÑ)˜˜e TØ  ™8 sš?ä$;×$?Ñ$?ÀÀuÈQÈrÀ{Ó$S˜EÙØ! T™M˜EØ-2˜˜TŸZ™Z›\Ñ*Øœs 5§;¡;¨q£>Ó2Ñ2˜Ø)-™Ø  Ñ%¨Ò,Ø%*�NØ�DØ—L‘L¤×!7Ñ!7¸Ó!=Ô>Ø˜1‘H‘CØ  Ñ%¨Ò,Ø%*�NØ˜1‘H‘CØ  Ñ%¨Ñ.ð ˜1‘H‘Cð &×*Ñ*¨3°Ó4�Cð? �sÔ#˜V×#Ñ#ð%	5ôL �U‹|ÐrM   c                 ó   — | j                   ryy)a  A string representing the scheme of the request.

        Hostname is resolved in this order:

        - overridden value by .clone(scheme=new_scheme) call.
        - type of connection to peer: HTTPS if socket is SSL, HTTP otherwise.

        'http' or 'https'.
        rÓ   Úhttp)rv   r©   s    rN   r|   zBaseRequest.scheme‘  s   € ð ×%Ò%ØàrM   c                 ó   — | j                   S )zyRead only property for getting HTTP method.

        The value is upper-cased str like 'GET', 'POST', 'PUT' etc.
        )rl   r©   s    rN   r‰   zBaseRequest.method¡  s   € ð �|‰|ÐrM   c                 ó   — | j                   S )zxRead only property for getting HTTP version of request.

        Returns aiohttp.protocol.HttpVersion instance.
        )rm   r©   s    rN   rŠ   zBaseRequest.version©  s   € ð �}‰}ÐrM   c                 ó  — | j                   j                  j                  t        j                  «      }|�|S | j
                  }|€yt        |t        «      r%t        |«      dk(  r	d|d   › d�S t        |d   «      S t        |«      S )a¸  Hostname of the request.

        Hostname is resolved in this order:

        - overridden value by .clone(host=new_host) call.
        - HOST HTTP header
        - local socket address the request arrived on
          (transport ``sockname``)
        - empty string if no transport information is available

        For example, 'example.com' or 'localhost:8080'.

        For historical reasons, the port number may be included.
        rR   é   rP   r   ú])
rg   rD   Úgetr   ÚHOSTrx   rÈ   rŸ   rÍ   rH   )r’   r}   r‘   s      rN   r}   zBaseRequest.host±  s…   € ð  �}‰}×$Ñ$×(Ñ(¬¯©Ó3ˆØÐØˆKØ×+Ñ+ˆØÐØÜ�h¤Ô&ô �8‹} Ò!Ø˜8 A™;˜- qÐ)Ð)Ü�x ‘{Ó#Ð#Ü�8‹}ÐrM   c                 ó¶   — | j                   €yt        | j                   t        t        f«      rt	        | j                   d   «      S t	        | j                   «      S )zÂRemote IP of client initiated HTTP request.

        The IP is resolved in this order:

        - overridden value by .clone(remote=new_remote) call.
        - peername of opened socket
        Nr   )rw   rÈ   ÚlistrŸ   rH   r©   s    rN   r~   zBaseRequest.remoteÐ  sN   € ð ×#Ñ#Ð+ØÜ�d×.Ñ.´´u°Ô>Ü�t×/Ñ/°Ñ2Ó3Ð3Ü�4×+Ñ+Ó,Ð,rM   c                 óŠ   — t        j                  | j                  | j                  ¬«      j	                  | j
                  «      S )zThe full URL of the request.)r|   Ú	authority)r   Úbuildr|   r}   Újoinrn   r©   s    rN   rˆ   zBaseRequest.urlß  s,   € ô
 �y‰y §¡°t·y±yÔA×FÑFÀtÇ}Á}ÓUÐUrM   c                 ó.   — | j                   j                  S )z_The URL including *PATH INFO* without the host or scheme.

        E.g., ``/app/blog``
        )rn   r—   r©   s    rN   r—   zBaseRequest.pathæ  s   € ð �}‰}×!Ñ!Ð!rM   c                 ó,   — t        | j                  «      S )zXThe URL including PATH_INFO and the query string.

        E.g, /app/blog?id=10
        )rH   rn   r©   s    rN   Úpath_qszBaseRequest.path_qsî  s   € ô �4—=‘=Ó!Ð!rM   c                 ó.   — | j                   j                  S )zÚThe URL including raw *PATH INFO* without the host or scheme.

        Warning, the path is unquoted and may contains non valid URL characters

        E.g., ``/my%2Fpath%7Cwith%21some%25strange%24characters``
        )rg   r—   r©   s    rN   Úraw_pathzBaseRequest.raw_pathö  s   € ð �}‰}×!Ñ!Ð!rM   c                 ó.   — | j                   j                  S )z7A multidict with all the variables in the query string.)rn   Úqueryr©   s    rN   r  zBaseRequest.query   s   € ð �}‰}×"Ñ"Ð"rM   c                 ó.   — | j                   j                  S )z:The query string in the URL.

        E.g., id=10
        )rn   Úquery_stringr©   s    rN   r  zBaseRequest.query_string  s   € ð �}‰}×)Ñ)Ð)rM   c                 ó   — | j                   S )z4A case-insensitive multidict proxy with all headers.)rk   r©   s    rN   rD   zBaseRequest.headers  ó   € ð �}‰}ÐrM   c                 ó.   — | j                   j                  S )z$A sequence of pairs for all headers.)rg   r�   r©   s    rN   r�   zBaseRequest.raw_headers  s   € ð �}‰}×(Ñ(Ð(rM   c                 óf   — t        | j                  j                  t        j                  «      «      S )zyThe value of If-Modified-Since HTTP header, or None.

        This header is represented as a `datetime` object.
        )r#   rD   ró   r   ÚIF_MODIFIED_SINCEr©   s    rN   Úif_modified_sincezBaseRequest.if_modified_since  s$   € ô ˜tŸ|™|×/Ñ/´×0FÑ0FÓGÓHÐHrM   c                 óf   — t        | j                  j                  t        j                  «      «      S )z{The value of If-Unmodified-Since HTTP header, or None.

        This header is represented as a `datetime` object.
        )r#   rD   ró   r   ÚIF_UNMODIFIED_SINCEr©   s    rN   Úif_unmodified_sincezBaseRequest.if_unmodified_since  s$   € ô ˜tŸ|™|×/Ñ/´×0HÑ0HÓIÓJÐJrM   Úetag_headerc              #   óà   K  — | t         k(  rt        dt         ¬«      –— yt        j                  | «      D ]5  }|j	                  ddd«      \  }}}|r yt        t        |«      |¬«      –— Œ7 y­w)z'Extract `ETag` objects from raw header.F)Úis_weakrÁ   r¹   r±   rñ   N)r   r    r   Úfinditerrã   Úbool)r  rÞ   r  rÁ   Úgarbages        rN   Ú_etag_valueszBaseRequest._etag_values'  sw   è ø€ ð œ(Ò"ÜØÜôó ô
 -×5Ñ5°kÓBò 
�Ø*/¯+©+°a¸¸AÓ*>Ñ'�˜ ñ ÙäÜ  ›MØôó ñ
ùs   ‚A,A.Úheader_valuec                 ó<   — |sy t        | j                  |«      «      S rT   )rŸ   r  )Úclsr  s     rN   Ú_if_match_or_none_implz"BaseRequest._if_match_or_none_impl<  s    € ñ Øä�S×%Ñ% lÓ3Ó4Ð4rM   c                 ór   — | j                  | j                  j                  t        j                  «      «      S )zxThe value of If-Match HTTP header, or None.

        This header is represented as a `tuple` of `ETag` objects.
        )r  rD   ró   r   ÚIF_MATCHr©   s    rN   Úif_matchzBaseRequest.if_matchE  s(   € ð ×*Ñ*¨4¯<©<×+;Ñ+;¼D¿M¹MÓ+JÓKÐKrM   c                 ór   — | j                  | j                  j                  t        j                  «      «      S )z}The value of If-None-Match HTTP header, or None.

        This header is represented as a `tuple` of `ETag` objects.
        )r  rD   ró   r   ÚIF_NONE_MATCHr©   s    rN   Úif_none_matchzBaseRequest.if_none_matchM  s*   € ð ×*Ñ*¨4¯<©<×+;Ñ+;¼D×<NÑ<NÓ+OÓPÐPrM   c                 óf   — t        | j                  j                  t        j                  «      «      S )zpThe value of If-Range HTTP header, or None.

        This header is represented as a `datetime` object.
        )r#   rD   ró   r   ÚIF_RANGEr©   s    rN   Úif_rangezBaseRequest.if_rangeU  s"   € ô ˜tŸ|™|×/Ñ/´·±Ó>Ó?Ð?rM   c                 ó0   — | j                   j                   S )zIs keepalive enabled by client?)rg   Úshould_closer©   s    rN   Ú
keep_alivezBaseRequest.keep_alive]  s   € ð —=‘=×-Ñ-Ð-Ð-rM   c                 óÆ   — t        | j                  j                  t        j                  d«      «      }t        |D ��ci c]  \  }}||j                  “Œ c}}«      S c c}}w )zMReturn request cookies.

        A read-only dictionary-like object.
        rR   )r   rD   ró   r   ÚCOOKIEr   rÁ   )r’   Úparsedr@   Úmorsels       rN   ÚcookieszBaseRequest.cookiesb  sI   € ô % T§\¡\×%5Ñ%5´d·k±kÀ2Ó%FÓGˆäÈ× O¹¸¸f  v§|¡|Ñ!3Ó OÓPÐPùÓ Os   ¾A
c                 ó®  — | j                   j                  t        j                  «      }d\  }}|��	 d}t	        j
                  ||t        j                  «      d   \  }}|rt        |«      nd}|rt        |«      nd}|€|�| }d}|�|�|dz  }||k\  rt        d«      ‚||cxu r€t        d«      ‚ t        ||d«      S # t        $ r t        d«      ‚w xY w)	zMThe content of Range HTTP header.

        Return a slice instance.

        )NNNz^bytes=(\d*)-(\d*)$r   zrange not in acceptable formatr   zstart cannot be after endz"No start or end of range specified)rk   ró   r   ÚRANGEÚreÚfindallÚASCIIÚ
IndexErrorÚ
ValueErrorÚintÚslice)r’   ÚrngÚstartÚendÚpatterns        rN   Ú
http_rangezBaseRequest.http_rangen  sô   € ð �m‰m×Ñ¤§
¡
Ó+ˆØ‰
ˆˆsØˆ?ðCØ0�ÜŸZ™Z¨°´b·h±hÓ?ÀÑB‘
��sñ "”#�c”( tˆCÙ"'”C˜”J¨TˆEàˆ}  à˜�Ø�àÐ  S _à�q‘�à˜C’<Ü$Ð%@ÓAÐAà˜Ô#Ü Ð!EÓFÐFð $ô �U˜C Ó#Ð#øô+ ò CÜ Ð!AÓBÐBðCús   ²-B? Â?Cc                 ó   — | j                   S )zReturn raw payload stream.)rj   r©   s    rN   ÚcontentzBaseRequest.content’  r  rM   c                 óp   — t        j                  dt        d¬«       | j                  j	                  «        S )ú@Return True if request's HTTP BODY can be read, False otherwise.z$Deprecated, use .can_read_body #2005r¹   r²   )r´   rµ   r¶   rj   Úat_eofr©   s    rN   Úhas_bodyzBaseRequest.has_body—  s1   € ô 	�‰Ø2Ô4FÐSTõ	
ð —=‘=×'Ñ'Ó)Ð)Ð)rM   c                 ó8   — | j                   j                  «        S )r:  )rj   r;  r©   s    rN   Úcan_read_bodyzBaseRequest.can_read_bodyŸ  s   € ð —=‘=×'Ñ'Ó)Ð)Ð)rM   c                 ó8   — t        | j                  «      t        uS )z6Return True if request has HTTP BODY, False otherwise.)Útyperj   r+   r©   s    rN   Úbody_existszBaseRequest.body_exists¤  s   € ô �D—M‘MÓ"Ô*;Ð;Ð;rM   c              ƒ   óÀ   K  — | j                   j                  «       s>| j                   j                  «       ƒ d{  –—†  | j                   j                  «       sŒ=yy7 Œ!­w)zKRelease request.

        Eat unread part of HTTP BODY if present.
        N)rj   r;  Úreadanyr©   s    rN   ÚreleasezBaseRequest.release©  sC   è ø€ ð
 —-‘-×&Ñ&Ô(Ø—-‘-×'Ñ'Ó)×)Ð)ð —-‘-×&Ñ&×(Ø)ús   ‚8AºA»AÁAc              ƒ   óº  K  — | j                   €¾| j                  r%| j                  j                  | j                  «       t	        «       }	 | j                  j                  «       ƒ d{  –—† }|j                  |«       | j                  r/t        |«      }|| j                  kD  rt        | j                  «      ‚|snŒrt        |«      | _         | j                   S 7 Œp­w)z_Read request body if present.

        Returns bytes object with full request content.
        N)
rp   rt   rj   Úset_read_chunk_sizeÚ	bytearrayrC  ÚextendrÍ   r2   Úbytes)r’   ÚbodyÚchunkÚ	body_sizes       rN   ÚreadzBaseRequest.read±  s½   è ø€ ð
 ×ÑÐ#ð ×$Ò$Ø—‘×1Ñ1°$×2GÑ2GÔHÜ“;ˆDØØ"Ÿm™m×3Ñ3Ó5×5�Ø—‘˜EÔ"Ø×(Ò(Ü # D£	�IØ  4×#8Ñ#8Ò8Ü7¸×8MÑ8MÓNÐNÙØð ô  % T›{ˆDÔØ×ÑÐð 6ús   ‚A&CÁ(CÁ)A1Cc              ƒ   ó€   K  — | j                  «       ƒ d{  –—† }| j                  xs d}|j                  |«      S 7 Œ%­w)z1Return BODY as text using encoding from .charset.Nr™   )rM  ÚcharsetÚdecode)r’   Ú
bytes_bodyÚencodings      rN   ÚtextzBaseRequest.textÈ  s8   è ø€ àŸ9™9›;×&ˆ
Ø—<‘<Ò* 7ˆØ× Ñ  Ó*Ð*ð 'ús   ‚>–<—&>)ÚloadsrT  c             ƒ   óN   K  — | j                  «       ƒ d{  –—† } ||«      S 7 Œ­w)zReturn BODY as JSON.N)rS  )r’   rT  rJ  s      rN   ÚjsonzBaseRequest.jsonÎ  s#   è ø€ à—Y‘Y“[× ˆÙ�T‹{Ðð !ús   ‚%–#—%c              ƒ   óÀ   K  — t        | j                  | j                  | j                  | j                  j
                  | j                  j                  t        ¬«      S ­w)z3Return async iterator to process BODY as multipart.)rz   Úmax_field_sizeÚmax_headersÚmax_size_error_cls)r*   rk   rj   rt   rh   rX  rY  r2   r©   s    rN   Ú	multipartzBaseRequest.multipartÓ  sG   è ø€ äØ�M‰MØ�M‰MØ ×1Ñ1ØŸ>™>×8Ñ8ØŸ™×2Ñ2Ü8ô
ð 	
ùs   ‚AAc              ƒ   ó¦	  K  — | j                   �| j                   S | j                  | j                  vr$t        t	        «       «      | _         | j                   S | j
                  }|dvr$t        t	        «       «      | _         | j                   S t	        «       }|dk(  �rø| j                  «       ƒ d{  –—† }| j                  }d}|j                  «       ƒ d{  –—† x}��|j                  j                  t        j                  «      }t        |t        «      �rU|j                  €t!        d«      ‚|j"                  �r†| j$                  j'                  dt(        j*                  «      ƒ d{  –—† }|j-                  t.        ¬«      ƒ d{  –—† x}	rŸ|j1                  |	«      2 3 d{  –—† }
| j$                  j'                  d|j2                  |
«      ƒ d{  –—†  |t5        |
«      z  }d|cxk  r|k  sŒRn ŒU| j$                  j'                  d|j6                  «      ƒ d{  –—†  t9        |«      ‚| j$                  j'                  d|j:                  d«      ƒ d{  –—†  |€d}t=        |j                  |j"                  t?        t@        jB                  |«      ||j                  «      }|jE                  |j                  |«       n¶tG        «       }|j-                  «       ƒ d{  –—† x}	rQ|t5        |	«      z  }d|cxk  r|k  rt9        |«      ‚ |jI                  |	«       |j-                  «       ƒ d{  –—† x}	rŒQtG        «       }|j1                  |«      2 3 d{  –—† }|jI                  |«       Œt!        d«      ‚|j                  «       ƒ d{  –—† x}��Œ¶nd| jQ                  «       ƒ d{  –—† }|rJ| jR                  xs d	}|jI                  tU        |jW                  «       jO                  |«      d|¬«      «       t        |«      | _         | j                   S 7 �Œe7 �ŒB7 �Œ²7 �Œ—7 �Œ~7 �ŒR7 �Œ
6 |j-                  t.        ¬«      ƒ d{  –—†7  x}	r�ŒÀ�Œ#7 �Œù7 �Œt7 �Œ'7 �Œ6 |�|jK                  d«      r?|jM                  d	¬
«      }|jE                  |j                  |jO                  |«      «       �Œ7|jE                  |j                  |«       �ŒU7 �ŒB7 �Œ(­w)zReturn POST parameters.N)rR   z!application/x-www-form-urlencodedúmultipart/form-datar]  r   zMultipart field missing name.)Úsizezapplication/octet-streamztext/r™   )Údefaultz8To decode nested multipart you need to use custom readerT)Úkeep_blank_valuesrR  ),ro   rl   ÚPOST_METHODSr   r   rC   r[  rt   ÚnextrD   ró   r   ÚCONTENT_TYPErÈ   r)   r@   r/  rA   ru   Úrun_in_executorÚtempfileÚTemporaryFileÚ
read_chunkr   Údecode_iterÚwriterÍ   Úcloser2   Úseekr6   r   rJ   rK   rÉ   rG  rH  Ú
startswithÚget_charsetrP  rM  rO  r   Úrstrip)r’   rC   Úoutr[  Úmax_sizer^  ÚfieldÚfield_ctÚtmprK  Údecoded_chunkÚffÚraw_datarÁ   ÚdrO  Údatas                    rN   ÚpostzBaseRequest.postÞ  s?  è ø€ à�:‰:Ð!Ø—:‘:ÐØ�<‰<˜t×0Ñ0Ñ0Ü'¬	«Ó4ˆDŒJØ—:‘:Ðà×(Ñ(ˆØð  
ñ 
ô
 (¬	«Ó4ˆDŒJØ—:‘:Ðä )£ˆàÐ0Ó0Ø"Ÿn™nÓ.×.ˆIØ×,Ñ,ˆHàˆDØ"+§.¡.Ó"2×2Ð2�5Ñ?Ø Ÿ=™=×,Ñ,¬T×->Ñ->Ó?�ä˜e¤^Õ4Ø—z‘zÐ)Ü(Ð)HÓIÐIð —~“~à$(§J¡J×$>Ñ$>Ø ¤(×"8Ñ"8ó%÷ ˜ð .3×-=Ñ-=ÔCUÐ-=Ó-V×'VÐV˜eÐVØ7<×7HÑ7HÈÓ7O÷ Nð N mØ&*§j¡j×&@Ñ&@Ø$(¨#¯)©)°]ó'"÷ !"ð !"ð !%¬¨MÓ(:Ñ : Ø#$ xÔ#6°$Ö#6Ø*.¯*©*×*DÑ*DÀTÈ3Ï9É9Ó*U×$UÐ$UÜ*CÀHÓ*MÐ$MØ"Ÿj™j×8Ñ8¸¸s¿x¹xÈÓK×KÐKà#Ð+Ø'A˜Hä&Ø!ŸJ™JØ!ŸN™NÜ ¤×!2Ñ!2°CÓ8Ø$Ø!ŸM™Mó˜ð Ÿ™ §
¡
¨BÕ/ô $-£;˜Ø-2×-=Ñ-=Ó-?×'?Ð?˜eÐ?Ø ¤C¨£JÑ.˜DØ  8Ô2¨dÒ2Ü&?ÀÓ&IÐ Ið  3à$ŸO™O¨EÔ2ð	 .3×-=Ñ-=Ó-?×'?Ð?˜eÑ?ô !*£˜à',×'8Ñ'8¸Ó'B÷ ,ð , !Ø!ŸL™L¨�Oô %ØRóð ðu #,§.¡.Ó"2×2Ð2�5Ó?ð| Ÿ™›×$ˆDÙØŸ,™,Ò1¨'�Ø—
‘
ÜØŸ™›×,Ñ,¨WÓ5Ø*.Ø!(ôôô $ CÓ(ˆŒ
Ø�z‰zÐð] /ùð 3ùðùð (WùðNùð!"ùð
 %Vùð 8Pð .3×-=Ñ-=ÔCUÐ-=Ó-V×'VÐ'VÐV˜eÒVùð Lùð  (@ùÐ'?ùð,ùÐ'Bð $Ð+¨x×/BÑ/BÀ7Ô/KØ&+×&7Ñ&7ÀÐ&7Ó&H˜GØŸG™G E§J¡J°·±¸WÓ0EÖFàŸG™G E§J¡J°Ö6ðq 3ùð| %ûs+  ‚B,SÂ.PÂ/%SÃPÃBSÅ'PÅ(SÆPÆSÆP(Æ!PÆ"P(Æ%+SÇP"ÇSÇ/,SÈP%È9SÉQÉBSËQËASÌ-QÌ.SÌ5SÍQÍQÍQÍ1SÎ	SÎ
SÎSÎ&SÎ'A-SÐSÐSÐSÐP(Ð"SÐ%SÐ(SÑQÑSÑSÑSÑSÑQÑA2SÓSr@   r_  c                 óf   — | j                   }|€|S |j                  }|€|S |j                  ||«      S )z"Extra info from protocol transport)rh   r¬   Úget_extra_info)r’   r@   r_  r�   r¬   s        rN   r{  zBaseRequest.get_extra_infoB  s?   € à—>‘>ˆØÐØˆNà×&Ñ&ˆ	ØÐØˆNà×'Ñ'¨¨gÓ6Ð6rM   c                 ó¬   — | j                   j                  dd«      j                  d«      }d| j                  j                  › d| j
                  › d|› d�S )NÚasciiÚbackslashreplaceú<ú z >)r—   rš   rP  r¢   rE   rl   )r’   Úascii_encodable_paths     rN   Ú__repr__zBaseRequest.__repr__N  sW   € Ø#Ÿy™y×/Ñ/°Ð9KÓL×SÑSØó 
Ðð �4—>‘>×*Ñ*Ð+¨1¨T¯\©\¨N¸!Ð<PÐ;QÐQSÐTÐTrM   Úotherc                 ó0   — t        | «      t        |«      k(  S rT   )Úid)r’   rƒ  s     rN   Ú__eq__zBaseRequest.__eq__T  s   € Ü�$‹xœ2˜e›9Ñ$Ð$rM   c                  ó   — y)NTrL   r©   s    rN   Ú__bool__zBaseRequest.__bool__W  s   € ØrM   Úresponsec              ƒ   ó   K  — y ­wrT   rL   )r’   r‰  s     rN   Ú_prepare_hookzBaseRequest._prepare_hookZ  s	   è ø€ Øùs   ‚Úexcc                 ó0   — t        | j                  |«       y rT   )r&   rj   )r’   rŒ  s     rN   Ú_cancelzBaseRequest._cancel]  s   € Ü�d—m‘m SÕ)rM   c                 óÖ   — | j                   �| j                  dk7  ry | j                   j                  «       D ]0  \  }}t        |t        «      sŒ|j
                  j                  «        Œ2 y )Nr]  )ro   rC   r    rÈ   r6   rB   rj  )r’   Ú	file_nameÚfile_field_objects      rN   Ú_finishzBaseRequest._finish`  s^   € Ø�:‰:Ð ×!2Ñ!2Ð6KÒ!KØð -1¯J©J×,<Ñ,<Ó,>ò 	/Ñ(ˆIÐ(ÜÐ+¬YÕ7Ø!×&Ñ&×,Ñ,Õ.ñ	/rM   )r†   r„   )r†   r9   )r†   zMultiMapping[str])r†   N)r†   zMultiDictProxy[_Post]rT   )trE   rF   rG   r   Ú
METH_PATCHÚ	METH_POSTÚMETH_PUTÚ
METH_TRACEÚMETH_DELETEra  r!   ÚATTRSÚ	frozensetro   r   Ú_PostrI   rp   rI  Úsetry   rH   r'   r,   r   ÚasyncioÚAbstractEventLoopr0  Údictr"   r	   r“   r%   r   r1   r/   r§   Úpropertyrƒ   r�   Ú	Transportr¬   r®   rz   r$   r   r   r•   r…   r   r;   r½   rÄ   rË   rÎ   r   rÑ   r  rÔ   rŸ   r   rë   r|   r‰   r(   rŠ   r}   r~   rˆ   r—   rý   rÿ   r  r  r   rD   r0   r�   Údatetimer	  r  Ústaticmethodr    r  Úclassmethodr  r  r  r   r#  r(  r1  r6  r8  r<  r>  rA  rD  rM  rS  r-   r.   rV  r*   r[  ry  r{  r‚  Úobjectr†  rˆ  r4   r‹  ÚBaseExceptionrŽ  r’  rL   rM   rN   r5   r5   k   sù  … à�‰Ø�‰Ø�‰Ø�‰Ø×Ñð€Lð ×Ñ¡ò	
ó"ñ €Eð, +/€Eˆ>˜%Ñ  4Ñ'Ó.Ø $€K�˜‘Ó$Ù"›u€N�C˜‘HÓ$ð  'Ø9=Ø!ØØ!ò6+à"ð6+ð ð6+ð #ð	6+ð
 -ð6+ð #ð6+ð ×'Ñ'ð6+ð ð6+ð �J˜s‘O cÑ)¨3Ð.Ñ/°$Ñ6ð6+ð �d‘
ð6+ð �D‰jð6+ð �d‘
ð6+ð 
ó6+ðv #+Ø(0Ø,4Ø"*Ø (Ø"*Ø+3ò9
ð �i‘ð9
ð ˜IÑ%ð	9
ð
  	Ñ)ð9
ð �i‘ð9
ð �I‰oð9
ð �i‘ð9
ð ˜y™ð9
ð 
ó9
ðv òó ðð òó ðð ð(˜7×,Ñ,¨tÑ3ò (ó ð(ð
 ð$Ð,ò $ó ð$ð ð% ò %ó ð%ð ðÐ*ò ó ðð ð˜ò ó ðð ð�g×/Ñ/ò ó ðð Ø9˜z¨"™~Ð9°"Ò9ó Ø9àØ/˜sÐ/ sÒ/ó Ø/ð ˜s Z°¡^Ñ3ð  ¸ó  ð ØF˜z¨"™~ÐF°bÐF¸TÒFó ØFàØ<˜sÐ<¨3Ð<°4Ò<ó Ø<ð
!˜s Z°¡^Ñ3ð 
!¸Cð 
!ÀDó 
!ð˜s Z°¡^Ñ3ð ¸ó ð ˜ó  ð!˜( 3¨°C©Ñ#8Ñ9ó !ð
 ð&˜ò &ó ð&ð ð:˜5 ¨¨c¨Ñ!2°CÐ!7Ñ8ò :ó ð:ðx ð˜ò ó ðð ð˜ò ó ðð ð˜ò ó ðð ð�cò ó ðð< ð-˜˜d™
ò -ó ð-ð ðV�Sò Vó ðVð ð"�cò "ó ð"ð ð"˜ò "ó ð"ð ð"˜#ò "ó ð"ð ò#ó ð#ð ð*˜cò *ó ð*ð ðÐ)¨#Ñ.ò ó ðð ð)˜Zò )ó ð)ð ðI 8×#4Ñ#4°tÑ#;ò Ió ðIð ðK X×%6Ñ%6¸Ñ%=ò Kó ðKð ð #ð ¨(°4©.ò ó ðð( ð5Ø ™:ð5à	ˆt�SˆyÑ	˜DÑ	 ò5ó ð5ð ðL˜%  c 	Ñ*¨TÑ1ò Ló ðLð ðQ˜u T¨3 YÑ/°$Ñ6ò Qó ðQð ð@˜(×+Ñ+¨dÑ2ò @ó ð@ð ð.˜Dò .ó ð.ð ð	Q˜  c Ñ*ò 	Qó ð	Qð ð!$˜Eò !$ó ð!$ðF ð˜ò ó ðð ð*˜$ò *ó ð*ð ð*˜tò *ó ð*ð ð<˜Tò <ó ð<ó*ð ˜Eó  ð.+˜Có +ð 2Fò  ;ð È#ó ð
	
 ó 	
óbñH
7 3ð 
7°ð 
7Àó 
7ðU˜#ó Uð%˜Fð % tó %ð˜$ó ð¨Nð ¸tó ð*˜=ð *¨Tó *ô
/rM   r5   c                   ó$  ‡ — e Zd ZU ej                   edg«      z  ZdZed   ed<   e	rde
deddfˆ fd„Zeeeeeeedœd	e
ez  d
eez  deez  de
ez  de
ez  de
ez  deez  dd fˆ fd„Zedd„«       Zedd„«       Zedefd„«       Zdeddfd„Zˆ xZS )r7   Ú_match_infoNr:   r@   Úvalr†   c                 ó°   •— || j                   vr7t        j                  d| j                  j                  › d|› d�t
        d¬«       t        ‰| �  ||«       y )NzSetting custom ú.z attribute is discouragedr¹   r²   )r˜  r´   rµ   r¢   rE   r¶   ÚsuperÚ__setattr__)r’   r@   r¨  r¢   s      €rN   r¬  zRequest.__setattr__u  sU   ø€ Ø˜4Ÿ:™:Ñ%Ü—‘Ø% d§n¡n×&=Ñ&=Ð%>¸aÀ¸vð F%ð %ä&Ø õ	ô ‰GÑ  cÕ*rM   r”   r‰   r•   rD   r|   r}   r~   rz   c          	      óv   •— t         ‰
| �  |||||||¬«      }t        t        |«      }	| j                  |	_        |	S )Nr”   )r«  r§   r   r7   r§  )r’   r‰   r•   rD   r|   r}   r~   rz   ÚretÚnew_retr¢   s             €rN   r§   zRequest.clone  sN   ø€ ô ‰g‰mØØØØØØØ+ð ó 
ˆô ”w Ó$ˆØ"×.Ñ.ˆÔØˆrM   c                 ó&   — | j                   }|€J ‚|S )zResult of route resolving.)r§  ©r’   Ú
match_infos     rN   r²  zRequest.match_info—  s!   € ð ×%Ñ%ˆ
ØÐ%Ð%Ð%ØÐrM   c                 ó:   — | j                   }|€J ‚|j                  S )zApplication instance.)r§  Úcurrent_appr±  s     rN   ÚappzRequest.appž  s'   € ð ×%Ñ%ˆ
ØÐ%Ð%Ð%Ø×%Ñ%Ð%rM   c                 ó¾   — | j                   }|€J ‚|j                  }| j                  }|j                  |«      }t	        t        |d |dz    «      «      }t        |«      S )Nr   )r§  Úappsrµ  Úindexrö   Úreversedr   )r’   r²  Úlstrµ  ÚidxÚsublists         rN   Úconfig_dictzRequest.config_dict¥  s\   € à×%Ñ%ˆ
ØÐ%Ð%Ð%Ø�o‰oˆØ�h‰hˆØ�i‰i˜‹nˆÜ”x  I c¨A¡g Ó/Ó0ˆÜ˜WÓ%Ð%rM   r‰  c              ƒ   ó¢   K  — | j                   }|€y |j                  D ]+  }|j                  x}sŒ|j                  | |«      ƒ d {  –—†  Œ- y 7 Œ­wrT   )r§  Ú_appsÚon_response_prepareÚsend)r’   r‰  r²  rµ  rÀ  s        rN   r‹  zRequest._prepare_hook¯  sZ   è ø€ Ø×%Ñ%ˆ
ØÐØØ×#Ñ#ò 	?ˆCØ&)×&=Ñ&=Ð=Ð"Ñ=Ø)×.Ñ.¨t°XÓ>×>Ñ>ñ	?à>ús   ‚-A°AÁAÁA)r†   r:   )r†   r8   )rE   rF   rG   r5   r˜  r™  r§  r   rI   r   rH   r	   r¬  r%   r   r1   r/   r0  r§   r$   r²  rŸ  rµ  r   r½  r4   r‹  Ú__classcell__)r¢   s   @rN   r7   r7   m  s'  ø… à×Ñ¡	¨=¨/Ó :Ñ:€Eà37€K�Ð/Ñ0Ó7áð	+ Cð 	+¨cð 	+°dõ 	+ð #+Ø(0Ø,4Ø"*Ø (Ø"*Ø+3òð �i‘ðð ˜IÑ%ð	ð
  	Ñ)ðð �i‘ðð �I‰oðð �i‘ðð ˜y™ðð 
õð0 òó ðð ò&ó ð&ð ð&˜]ò &ó ð&ð?¨Nð ?¸t÷ ?rM   r7   )jrœ  r¡  rJ   r+  Ústringre  rÝ   r´   Úcollections.abcr   r   r   r   r   Útypingr   r	   r
   r   r   r   r   Úurllib.parser   ÚattrÚ	multidictr   r   r   r   r   Úyarlr   rR   r   Ú_cookie_helpersr   Úabcr   Úhelpersr   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   Úhttp_parserr'   Úhttp_writerr(   r[  r)   r*   Ústreamsr+   r,   Útypedefsr-   r.   r/   r0   r1   Úweb_exceptionsr2   r3   Úweb_responser4   Ú__all__Úweb_appr8   Úweb_protocolr9   Úweb_urldispatcherr:   r;   Úsr6   rH   rI  rG  rš  ÚdigitsÚascii_lettersrO   rI   rQ   Úformatrú   rŸ   Úranger^   r_   ra   rc   Úcompilerd   re   r5   r7   rL   rM   rN   ú<module>rÝ     s  ðÜ Û Û 	Û 	Û Û Û Û ß =Ñ =Ý Ý "ß O× OÑ OÝ "ã ÷õ õ å Ý 0Ý %÷÷ ÷ õ õ +Ý $ß 6ß 4÷õ ÷ HÝ (à
1€ñ Ý$Ý,Ý6ñ ˆTƒ]€ð €‡��T $¨dÔ3÷#ð #ó 4ð#ð 	ˆe‰�iÑ )Ñ+€Ø—]‘] V×%9Ñ%9Ñ9Ð<NÑN€ˆˆc‰
Ó Nð ˜&˜ �_€ˆˆc‰
Ó $à—n‘nØ‡H�HÑKÐ/±%¹¸dÀDÓ8IÓ2JÑJÔKÓKó€ˆˆs‰ó ð )€ˆe�C‰jÓ (à $ \ N°!°G°9¸CÐ@€��c‘
Ó @ð "# 6 (¨#¨f¨X°Q°~Ð6FÀnÐU€��s‘Ó Uà/9¨r¯z©z¸/Ó/JÐ ˜˜w s™|Ñ,Ó Jð +5¨"¯*©*°_Ó*EÐ �E˜' #™,Ñ'Ó Eô/�.  z°#¡Ñ!6¸Ð!;Ñ<¸lô /ôDH?ˆkõ H?rM   