Ë
    ŠV.j	”  ã                   ó\  — U d dl Z d dlZd dlZd dl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mZmZmZmZmZm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  dd
l!m"Z"m#Z#m$Z$ ddl%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, ddl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6 ddl7m8Z8m9Z9 ddl:m;Z;m<Z< ddl=m>Z> dZ?ed   Z@ eAej„                  «      ZCeeeD      eEd<    ejŒ                  d«      ZGeeD   eEd<    ej�                  deG› d�«      ZIeeeD      eEd<    ej�                  dej”                  «      ZKeeeD      eEd<    ej�                  dej”                  «      ZLeeeD      eEd<    ej�                  d«      ZMeeeN      eEd<    G d„ de«      ZO G d „ d!e«      ZP ed"eOeP«      ZQ G d#„ d$e«      ZR G d%„ d&e«      ZS G d'„ d(«      ZTd)eeD   d*eUfd+„ZV G d,„ d-e j®                  eeQ   «      ZX G d.„ d/eXeO   «      ZY G d0„ d1eXeP   «      ZZ G d2„ d3«      Z[ G d4„ d5«      Z\eYZ]eZZ^eOZ_ePZ`	 e*sdd6lamYZYmZZZmOZOmPZP eYZbeZZceOZdePZeyy# ef$ r Y yw xY w)7é    N)Úsuppress)ÚIntEnum)ÚAnyÚClassVarÚFinalÚGenericÚListÚLiteralÚ
NamedTupleÚOptionalÚPatternÚSetÚTupleÚTypeÚTypeVarÚUnion)ÚCIMultiDictÚCIMultiDictProxyÚistr)ÚURLé   )Úhdrs)ÚBaseProtocol)Ú
HAS_BROTLIÚBrotliDecompressorÚZLibDecompressor)Ú_EXC_SENTINELÚDEBUGÚEMPTY_BODY_METHODSÚEMPTY_BODY_STATUS_CODESÚNO_EXTENSIONSÚBaseTimerContextÚset_exception)	ÚBadHttpMessageÚBadHttpMethodÚBadStatusLineÚContentEncodingErrorÚContentLengthErrorÚInvalidHeaderÚInvalidURLErrorÚLineTooLongÚTransferEncodingError)ÚHttpVersionÚHttpVersion10)ÚEMPTY_PAYLOADÚStreamReader)Ú
RawHeaders)ÚHeadersParserÚ
HttpParserÚHttpRequestParserÚHttpResponseParserÚRawRequestMessageÚRawResponseMessage)ó   
ó   
ÚASCIISETz!#$%&'*+-.^_`|~Ú_TCHAR_SPECIALSz
[0-9A-Za-zz]+ÚTOKENREzHTTP/(\d)\.(\d)ÚVERSREz\d+ÚDIGITSs   [0-9a-fA-F]+Ú	HEXDIGITSc                   óx   — e Zd ZU eed<   eed<   eed<   ded<   eed<   eed<   ee   ed<   eed	<   eed
<   e	ed<   y)r6   ÚmethodÚpathÚversionúCIMultiDictProxy[str]ÚheadersÚraw_headersÚshould_closeÚcompressionÚupgradeÚchunkedÚurlN)
Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__r-   r1   Úboolr   r   © ó    úUC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\aiohttp/http_parser.pyr6   r6   Q   s=   … ØƒKØ
ƒIØÓØ$Ó$ØÓØÓØ˜#‘ÓØƒMØƒMØ	„HrS   r6   c                   ót   — e Zd ZU eed<   eed<   eed<   ee   ed<   eed<   e	ed<   e
e   ed<   e	ed<   e	ed	<   y
)r7   rC   ÚcodeÚreasonrE   rF   rG   rH   rI   rJ   N)rL   rM   rN   r-   rP   ÚintrO   r   r1   rQ   r   rR   rS   rT   r7   r7   ^   s=   … ØÓØ
ƒIØƒKØ˜cÑ"Ó"ØÓØÓØ˜#‘ÓØƒMØ„MrS   r7   Ú_MsgTc                   ó   — e Zd ZdZdZdZdZy)Ú
ParseStater   r   é   é   N)rL   rM   rN   Ú
PARSE_NONEÚPARSE_LENGTHÚPARSE_CHUNKEDÚPARSE_UNTIL_EOFrR   rS   rT   r[   r[   m   s   „ à€JØ€LØ€MØ�OrS   r[   c                   ó    — e Zd ZdZdZdZdZdZy)Ú
ChunkStater   r   r\   r]   é   N)rL   rM   rN   ÚPARSE_CHUNKED_SIZEÚPARSE_CHUNKED_CHUNKÚPARSE_CHUNKED_CHUNK_EOFÚPARSE_MAYBE_TRAILERSÚPARSE_TRAILERSrR   rS   rT   rc   rc   u   s   „ ØÐØÐØÐØÐØ�NrS   rc   c                   óR   — e Zd Z	 	 	 	 ddededededdf
d„Zdee   ded	e	f   fd
„Z
y)r2   Úmax_line_sizeÚmax_headersÚmax_field_sizeÚlaxÚreturnNc                 ó<   — || _         || _        || _        || _        y ©N)rk   rl   rm   Ú_lax)Úselfrk   rl   rm   rn   s        rT   Ú__init__zHeadersParser.__init__~   s#   € ð +ˆÔØ&ˆÔØ,ˆÔØˆ�	rS   ÚlinesrD   c           	      ó¸  — t        «       }g }d}|d   }t        |«      }|�r‹	 |j                  dd«      \  }}t        |«      dk(  rt	        |«      ‚|d   |d   hddhz  rt	        |«      ‚|j                  d«      }t        |«      | j                  kD  rQt        dj                  |j                  d	d
«      «      t        | j                  «      t        t        |«      «      «      ‚|j                  dd«      }	t        j                  |	«      st	        |«      ‚t        |«      }
|dz  }||   }| j                  xr |xr |d   dv }|r¬|g}|r•|
t        |«      z  }
|
| j                  kD  rHt        dj                  |j                  d	d
«      «      t        | j                  «      t        |
«      «      ‚|j                  |«       |dz  }||k  r||   }|r|d   dv }nd}n|rŒ•dj                  |«      }nW|
| j                  kD  rHt        dj                  |j                  d	d
«      «      t        | j                  «      t        |
«      «      ‚|j!                  d«      }|j                  dd«      }d|v sd|v sd|v rt	        |«      ‚|j#                  |	|«       |j                  ||f«       |r�Œ‹t%        |«      t'        |«      fS # t        $ r t	        |«      d ‚w xY w)Nr   ó   :r   éÿÿÿÿé    é	   s    	zrequest header name {}Úutf8Úbackslashreplaceúutf-8Úsurrogateescape)ry   rz   zrequest header field {}rS   Ú
ÚÚ )r   ÚlenÚsplitÚ
ValueErrorr)   Úlstriprm   r+   ÚformatÚdecoderO   r<   Ú	fullmatchrr   ÚappendÚjoinÚstripÚaddr   Útuple)rs   ru   rE   rF   Ú	lines_idxÚlineÚ
line_countÚbnameÚbvalueÚnameÚheader_lengthÚcontinuationÚ
bvalue_lstÚvalues                 rT   Úparse_headerszHeadersParser.parse_headersŠ   s  € ô %0£Mˆàˆàˆ	Ø�Q‰xˆÜ˜“Zˆ
âð4Ø $§
¡
¨4°Ó 3‘��vô �5‹z˜QŠÜ# EÓ*Ð*ð �a‘˜% ™)Ð$¨¨A wÒ.Ü# DÓ)Ð)à—]‘] 6Ó*ˆFÜ�5‹z˜D×/Ñ/Ò/Ü!Ø,×3Ñ3ØŸ™ VÐ-?Ó@óô ˜×+Ñ+Ó,Üœ˜E›
“Oóð ð —<‘< Ð):Ó;ˆDÜ×$Ñ$ TÔ*Ü# EÓ*Ð*ä ›KˆMð ˜‰NˆIØ˜Ñ#ˆDð  Ÿ9™9ÒD¨ÒD°$°q±'¸WÐ2DˆLñ Ø$˜X�
Ù"Ø!¤S¨£YÑ.�MØ$ t×':Ñ':Ò:Ü)Ø5×<Ñ<Ø %§¡¨VÐ5GÓ Hóô   × 3Ñ 3Ó4Ü Ó.óð ð ×%Ñ% dÔ+ð  ‘N�IØ  :Ò-Ø$ YÑ/˜ÙØ+/°©7°gÐ+=™Là"˜Øò) #ð* Ÿ™ *Ó-‘à  4×#6Ñ#6Ò6Ü%Ø1×8Ñ8Ø!ŸL™L¨Ð1CÓDóô ˜D×/Ñ/Ó0Ü˜MÓ*óð ð —\‘\ &Ó)ˆFØ—M‘M 'Ð+<Ó=ˆEð �u‰} ¨¡°¸5±Ü# FÓ+Ð+à�K‰K˜˜eÔ$Ø×Ñ  v˜Ô/ó_ ôb ! Ó)¬5°Ó+=Ð>Ð>øô[ ò 4Ü# DÓ)¨tÐ3ð4ús   £K ËK)éþ  é €  r™   F)rL   rM   rN   rX   rQ   rt   r	   Úbytesr   r1   r˜   rR   rS   rT   r2   r2   }   sl   „ ð "Ø Ø"Øñ
àð
ð ð
ð ð	
ð
 ð
ð 
ó
ð\?Ø˜%‘[ð\?à	Ð&¨
Ð2Ñ	3ô\?rS   r2   rE   ro   c                 ób   — | j                  t        j                  d«      j                  «       dv S )z)Check if the upgrade header is supported.Ú >   ÚtcpÚ	websocket)Úgetr   ÚUPGRADEÚlower)rE   s    rT   Ú_is_supported_upgrader£   é   s&   € à�;‰;”t—|‘| RÓ(×.Ñ.Ó0Ð4HÐHÐHrS   c                   óü  — e Zd ZU dZee   ed<   	 	 	 	 	 	 	 	 	 	 	 	 	 d%dee   dee	j                     dededed	ed
ee   dee   dee   deee      dedededdfd„Zej$                  dee   defd„«       Zej$                  dedefd„«       Zdee   fd„Zddej4                  ej6                  ej8                  fdededededededeeeee f      eef   fd „Z!dee   ded!e"ee   ee   eef   fd"„Z#d#eddfd$„Z$y)&r3   Frn   NÚprotocolÚloopÚlimitrk   rl   rm   ÚtimerrV   rA   Úpayload_exceptionÚresponse_with_bodyÚread_until_eofÚauto_decompressro   c                 ó:  — || _         || _        || _        || _        || _        || _        || _        |	| _        |
| _        || _	        || _
        g | _        d| _        d| _        d | _        d | _        || _        || _        t%        |||| j&                  «      | _        y )NrS   F)r¥   r¦   rk   rl   rm   r¨   rV   rA   r©   rª   r«   Ú_linesÚ_tailÚ	_upgradedÚ_payloadÚ_payload_parserÚ_auto_decompressÚ_limitr2   rn   Ú_headers_parser)rs   r¥   r¦   r§   rk   rl   rm   r¨   rV   rA   r©   rª   r«   r¬   s                 rT   rt   zHttpParser.__init__ñ   s¤   € ð  !ˆŒØˆŒ	Ø*ˆÔØ&ˆÔØ,ˆÔØˆŒ
ØˆŒ	ØˆŒØ!2ˆÔØ"4ˆÔØ,ˆÔà#%ˆŒØˆŒ
ØˆŒØˆŒØ<@ˆÔØ /ˆÔØˆŒÜ,Ø˜;¨¸¿¹ó 
ˆÕrS   ru   c                  ó   — y rq   rR   )rs   ru   s     rT   Úparse_messagezHttpParser.parse_message  s   € Ø:=rS   Útec                  ó   — y rq   rR   ©rs   r¸   s     rT   Ú_is_chunked_tezHttpParser._is_chunked_te  s   € Ø/2rS   c                 ó´  — | j                   �"| j                   j                  «        d | _         y | j                  r%| j                  j	                  | j                  «       | j                  ra| j                  d   dk7  r| j                  j	                  d«       t        t        «      5  | j                  | j                  «      cd d d «       S y # 1 sw Y   y xY w)Nrx   z
rS   )r²   Úfeed_eofr¯   r®   r‰   r   Ú	Exceptionr·   ©rs   s    rT   r½   zHttpParser.feed_eof  s£   € Ø×ÑÐ+Ø× Ñ ×)Ñ)Ô+Ø#'ˆDÔ ð ð �zŠzØ—‘×"Ñ" 4§:¡:Ô.à�{Š{Ø—;‘;˜r‘? fÒ,Ø—K‘K×&Ñ& sÔ+ÜœiÕ(Ø×-Ñ-¨d¯k©kÓ:÷ )Ñ(à÷ )àús   Â(CÃCr8   rS   ÚdataÚSEPÚEMPTYÚCONTENT_LENGTHÚMETH_CONNECTÚSEC_WEBSOCKET_KEY1c                 ó@
  ‡‡— g }| j                   r| j                   |z   dc}| _         t        |«      }d}	| j                  }
d}|	|k  �r7| j                  �€�| j                  �s�|j                  ||	«      }||	k(  r| j                  s|t        |«      z   }	ŒR||	k\  �rK|rt        d«      ‚||	| }|dk(  r|j                  d«      }| j                  j                  |«       |t        |«      z   }	| j                  d   |k(  �rz	 | j                  | j                  «      Š| j                  j                  «        dt        t           fˆˆfd	„} |«       }|‰j                  v rt        |«      ‚‰j                   xr t#        ‰j                  «      | _        t%        ‰d
| j&                  «      }t%        ‰dd«      }| j(                  €J ‚|t*        v xs t-        |xr |t.        v «      }|s²|�|dkD  s‰j0                  rŸ| j                  s“t3        | j(                  | j4                  |
| j6                  ¬«      }t9        ||‰j0                  |‰j:                  | j<                  | j>                  | j@                  | jB                  ¬«	      }|jD                  �s9|| _        �n0||k(  r„tG        ‰tH        «      sJ ‚t3        | j(                  | j4                  |
| j6                  ¬«      }d| _        t9        |‰j&                  ‰j:                  | j@                  | jB                  ¬«      | _        n§|sŸ|€�| jJ                  r‘t3        | j(                  | j4                  |
| j6                  ¬«      }t9        ||‰j0                  |‰j:                  | j<                  | j>                  | j@                  | jB                  ¬«	      }|jD                  s|| _        ntL        }|j                  ‰|f«       ‰jN                  }n“||	d  | _         |}n�| j                  €| j                  r| j                  rJ ‚nf|r\|	|k  rW| j                  rJ ‚| j                  €J ‚	 | j                  jQ                  ||	d  |«      \  }}|rd}	t        |«      }d | _        �Œ5n|	|k  r�Œ7|r|	|k  r||	d  }n|}|| j                  |fS # | j                  j                  «        w xY w# tR        $ rW}|}| jT                  �| jU                  tW        |«      «      }tY        | j                  jZ                  ||«       d}d}Y d }~Œ¸d }~ww xY w)NrS   r   FzData after `Connection: close`r9   ó   rx   ro   c                  ó–   •— ‰j                   j                  ‰«      } | €y t        j                  | «      st	        ‰«      ‚t        | «      S rq   )rE   r    r>   rˆ   r)   rX   )Ú
length_hdrrÃ   Úmsgs    €€rT   Úget_content_lengthz0HttpParser.feed_data.<locals>.get_content_length_  sC   ø€ à),¯©¯©¸Ó)H˜JØ)Ð1Ø'+ô
 $*×#3Ñ#3°JÔ#?Ü&3°NÓ&CÐ Cä#& z£?Ð2rS   rA   rV   )r¨   r¦   r§   )ÚlengthrJ   rA   rH   rV   rª   r¬   rn   T)rA   rH   r¬   rn   ).r¯   r‚   r¦   r²   r°   Úfindr®   r$   Úrstripr‰   r·   Úclearr   rX   rE   r)   rI   r£   ÚgetattrrA   r¥   r    rQ   r   rJ   r0   r¨   r´   ÚHttpPayloadParserrH   rV   rª   r³   rn   ÚdoneÚ
isinstancer6   r«   r/   rG   Ú	feed_dataÚBaseExceptionr©   rO   r#   Úpayload)rs   rÀ   rÁ   rÂ   rÃ   rÄ   rÅ   ÚmessagesÚdata_lenÚ	start_posr¦   rG   Úposr�   rË   rÌ   rA   rV   Ú
empty_bodyrÖ   Úpayload_parserÚeofÚunderlying_excÚreraised_excrÊ   s       `                   @rT   rÔ   zHttpParser.feed_data.  sÙ  ù€ ð ˆà�:Š:Ø#Ÿz™z¨DÑ0°#ÐˆD�$”*ä�t“9ˆØˆ	Ø�y‰yˆàˆØ˜(Ó"ð ×#Ñ#Ñ+°D·N³NØ—i‘i  YÓ/�à˜)Ò#¨D¯KªKØ #¤c¨#£h¡�IØà˜)Ó#Ù#Ü,Ð-MÓNÐNð   	¨#Ð.�DØ˜e’|Ø#Ÿ{™{¨5Ó1˜Ø—K‘K×&Ñ& tÔ,Ø #¤c¨#£h¡�Ið —{‘{ 2‘¨%Ó/ð0Ø)-×);Ñ);¸D¿K¹KÓ)H˜Cà ŸK™K×-Ñ-Ô/ð3´H¼S±Mö 3ñ "4Ó!5˜à-°·±Ñ<Ü"/Ð0BÓ"CÐCà),¯©ò *Ô9NØŸK™Kó:˜œô ")¨¨h¸¿¹Ó!D˜ä& s¨F°AÓ6˜à#Ÿ}™}Ð8Ð8Ð8à%)Ô-DÐ%Dò &ÌØ"ÒC vÔ1CÐ'CóI˜
ñ  *Ø$Ð0°V¸a²ZÀCÇKÂKØ$(§N¢Nä&2Ø $§¡Ø&*§j¡jØ%)Ø&*§k¡kô	'˜Gô .?Ø 'Ø'-Ø(+¯©Ø'-Ø,/¯O©OØ%)§Y¡YØ37×3JÑ3JØ04×0EÑ0EØ$(§H¡Hô
.˜Nð $2×#6Ó#6Ø7E Ö 4Ø# |Ò3Ü#-¨cÔ3DÔ#EÐEÐ#EÜ&2Ø $§¡Ø&*§j¡jØ%)Ø&*§k¡kô	'˜Gð .2˜DœNÜ3DØ 'Ø'*§z¡zØ,/¯O©OØ04×0EÑ0EØ$(§H¡Hô4˜DÕ0ñ ",°°À4×CVÒCVÜ&2Ø $§¡Ø&*§j¡jØ%)Ø&*§k¡kô	'˜Gô .?Ø 'Ø'-Ø(+¯©Ø'-Ø,/¯O©OØ%)§Y¡YØ37×3JÑ3JØ04×0EÑ0EØ$(§H¡Hô
.˜Nð $2×#6Ò#6Ø7E Õ 4ä&3˜Gà Ÿ™¨¨g¨Ô7Ø'*×'7Ñ'7™à!% i jÐ!1�D”JØ �DØð ×%Ñ%Ð-°$·.².ØŸ;š;Ð&�Øñ ˜) hÒ.ØŸ;š;Ð&�Ø×+Ñ+Ð7Ð7Ð7ðØ $× 4Ñ 4× >Ñ >¸tÀIÀJÐ?OÐQTÓ U‘I�C˜ñ Ø !�IÜ" 4›y�HØ+/�DÔ(ÙàðC ˜(Ô"ñF �I Ò(Ø˜	˜
Ð#‰DàˆDà˜Ÿ™¨Ð-Ð-øð[ !ŸK™K×-Ñ-Õ/ûôd %ò Ø#1�LØ×-Ñ-Ð9Ø'+×'=Ñ'=¼cÀ.Ó>QÓ'R˜ä!Ø×,Ñ,×4Ñ4Ø$Ø&ôð �CØ•Dûðús%   Ä R Ð>"R= ÒR:Ò=	TÓATÔTrD   c           
      óº  ‡— | j                   j                  |«      \  Š}d}d}d}d}t        j                  t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  f
}t        ˆfd„|D «       d«      }|�t        d|› d�«      ‚‰j                  t        j                   «      }	|	rF|	j#                  «       }
|
dk(  rd}n.|
dk(  rd}n&|
d	k(  r!‰j                  t        j$                  «      rd}‰j                  t        j&                  «      }|r|j#                  «       }|d
v r|}‰j                  t        j                  «      }|�0| j)                  |«      rd}t        j                  ‰v rt        d«      ‚‰|||||fS )z­Parses RFC 5322 headers from a stream.

        Line continuations are supported. Returns list of header name
        and value pairs. Header name is in upper case.
        NFc              3   ó`   •K  — | ]%  }t        ‰j                  |d «      «      dkD  sŒ"|–— Œ' y­w)rR   r   N)r‚   Úgetall)Ú.0ÚhrE   s     €rT   Ú	<genexpr>z+HttpParser.parse_headers.<locals>.<genexpr>
  s)   øè ø€ ÐP¡:˜a´°W·^±^ÀAÀrÓ5JÓ1KÈaÓ1Oœ¡:ùs   ƒ#.§.zDuplicate 'z' header found.ÚcloseTz
keep-aliverI   )ÚgzipÚdeflateÚbrz6Transfer-Encoding can't be present with Content-Length)rµ   r˜   r   rÃ   ÚCONTENT_LOCATIONÚCONTENT_RANGEÚCONTENT_TYPEÚETAGÚHOSTÚMAX_FORWARDSÚSERVERÚTRANSFER_ENCODINGÚ
USER_AGENTÚnextr$   r    Ú
CONNECTIONr¢   r¡   ÚCONTENT_ENCODINGr»   )rs   ru   rF   Ú
close_connÚencodingrI   rJ   Ú
singletonsÚbad_hdrÚconnÚvÚencr¸   rE   s                @rT   r˜   zHttpParser.parse_headersì  s§  ø€ ð  $×3Ñ3×AÑAÀ%ÓHÑˆ�Øˆ
ØˆØˆØˆô
 ×ÑÜ×!Ñ!Ü×ÑÜ×ÑÜ�I‰IÜ�I‰IÜ×ÑÜ�K‰KÜ×"Ñ"Ü�O‰Oð
ˆ
ô ÓP¡:ÓPÐRVÓWˆØÐÜ  ;¨w¨i°Ð!GÓHÐHð �{‰{œ4Ÿ?™?Ó+ˆÙØ—
‘
“ˆAØ�GŠ|Ø!‘
Ø�lÒ"Ø"‘
à�i’ G§K¡K´·±Ô$=Ø�ð �k‰kœ$×/Ñ/Ó0ˆÙØ—)‘)“+ˆCØÐ/Ñ/Ø�ð �[‰[œ×/Ñ/Ó0ˆØˆ>Ø×"Ñ" 2Ô&Ø�ä×"Ñ" gÑ-Ü$ØLóð ð ˜ j°(¸GÀWÐMÐMrS   Úvalc                 ó   — || _         y)zZSet connection upgraded (to websocket) mode.

        :param bool val: new state.
        N)r°   )rs   rý   s     rT   Úset_upgradedzHttpParser.set_upgraded.  s   € ð
 ˆ�rS   )NNi   r™   rš   r™   NNNNTFT)%rL   rM   rN   rn   r   rQ   rP   r   r   ÚasyncioÚAbstractEventLooprX   r"   rO   r   rÕ   rt   ÚabcÚabstractmethodr	   r›   rY   r·   r»   r½   r   rÃ   rÄ   rÅ   Ú_SEPr   r   r0   rÔ   r1   r˜   rÿ   rR   rS   rT   r3   r3   î   s$  … Ø€Cˆ�$‰Óð ,0Ø48ØØ!Ø Ø"Ø,0Ø"Ø $Ø;?Ø#'Ø$Ø $ñ%
à˜<Ñ(ð%
ð �w×0Ñ0Ñ1ð%
ð ð	%
ð
 ð%
ð ð%
ð ð%
ð Ð(Ñ)ð%
ð �s‰mð%
ð ˜‘ð%
ð $ D¨Ñ$7Ñ8ð%
ð !ð%
ð ð%
ð ð%
ð 
ó%
ðN 	×ÑØ= 4¨¡;Ð=°5Ò=ó Ø=à×ÑØ2 Ð2¨Ò2ó Ø2ð˜( 5™/ó ð& ØØ#×2Ñ2Ø ×-Ñ-Ø#'×#:Ñ#:ñ|.àð|.ð ð|.ð ð	|.ð
 ð|.ð ð|.ð !ð|.ð 
ˆt�E˜% Ð-Ñ.Ñ/°°uÐ<Ñ	=ó|.ð|@NØ˜%‘[ð@Nà	Ø ¨X°d©^¸XÀc¹]ÈDÐRVÐVñ
ó@NðD ð ¨ô rS   r3   c                   ó6   — e Zd ZdZdee   defd„Zdede	fd„Z
y)r4   z¥Read request status line.

    Exception .http_exceptions.BadStatusLine
    could be raised in case of any errors in status line.
    Returns RawRequestMessage.
    ru   ro   c                 ó6  — |d   j                  dd«      }	 |j                  dd¬«      \  }}}t	        |«      | j
                  kD  r2t        dt        | j
                  «      t        t	        |«      «      «      ‚t        j                  |«      st        |«      ‚t        j                  |«      }|€t        |«      ‚t        t        |j                  d«      «      t        |j                  d«      «      «      }|d	k(  rt        j                   |d
¬«      }n³|j#                  d«      rD|j%                  d«      \  }	}
}|	j%                  d«      \  }	}}t        j                   |	||d
¬«      }n^|dk(  r|dk(  rt        |d
¬«      }nFt        |d
¬«      }|j&                  dk(  r*t)        |j+                  d¬«      j                  d«      «      ‚| j-                  |«      \  }}}}}}|€|t.        k  rd
}nd}t1        ||||||||||«
      S # t        $ r t        |«      d ‚w xY w)Nr   r}   r~   Ú r\   ©ÚmaxsplitúStatus line is too longr   ÚCONNECTT)Ú	authorityÚencodedÚ/Ú#Ú?)rB   Úquery_stringÚfragmentr  Ú*ÚOPTIONS)r  r�   )ÚerrorsÚlatin1F)r‡   rƒ   r„   r%   r‚   rk   r+   rO   r<   rˆ   r=   r&   r-   rX   Úgroupr   ÚbuildÚ
startswithÚ	partitionÚschemer*   Úencoder˜   r.   r6   )rs   ru   r�   rA   rB   rC   ÚmatchÚ	version_orK   Ú	path_partÚ_hash_separatorÚurl_fragmentÚ_question_mark_separatorÚqs_partrE   rF   ræ   rH   rI   rJ   s                       rT   r·   zHttpRequestParser.parse_message>  s+  € à�Q‰x�‰˜wÐ(9Ó:ˆð	0Ø$(§J¡J¨s¸Q JÓ$?Ñ!ˆF�D˜'ô ˆt‹9�t×)Ñ)Ò)ÜØ)¬3¨t×/AÑ/AÓ+BÄCÌÈDË	ÃNóð ô
 × Ñ  Ô(Ü Ó'Ð'ô × Ñ  Ó)ˆØˆ=Ü Ó%Ð%Ü¤ E§K¡K°£NÓ 3´S¸¿¹ÀQ»Ó5HÓIˆ	à�YÒô —)‘) d°DÔ9‰CØ�_‰_˜SÔ!ð 8<·~±~ÀcÓ7JÑ4ˆI�¨Ø;D×;NÑ;NÈsÓ;SÑ8ˆIÐ/°ô —)‘)ØØ$Ø%Øô	‰Cð �SŠ[˜V yÒ0ä�d DÔ)‰Cô �d DÔ)ˆCØ�z‰z˜RÒä%Ø—K‘KÐ'8�KÓ9×@Ñ@ÀÓJóð ð ×Ñ˜uÓ%ñ	
ØØØØØØð ˆ=ØœMÒ)Ø‘à�ä ØØØØØØØØØØó
ð 	
øôG ò 	0Ü Ó%¨4Ð/ð	0ús   —H ÈHr¸   c                 ó†   — |j                  dd¬«      d   j                  d«      j                  «       dk(  ryt        d«      ‚)	NÚ,r   r  rx   ú 	rJ   Tz'Request has invalid `Transfer-Encoding`)Úrsplitr‹   r¢   r$   rº   s     rT   r»   z HttpRequestParser._is_chunked_te“  s?   € Ø�9‰9�S 1ˆ9Ó% bÑ)×/Ñ/°Ó6×<Ñ<Ó>À)ÒKØäÐFÓGÐGrS   N)rL   rM   rN   Ú__doc__r	   r›   r6   r·   rO   rQ   r»   rR   rS   rT   r4   r4   6  s9   „ ñðS
 4¨¡;ð S
Ð3Dó S
ðjH ð H¨ô HrS   r4   c                   óŠ   ‡ — e Zd ZdZe Z	 ddedee   de	de	de
ee
eef      eef   f
ˆ fd„Zdee   defd	„Zd
edefd„Zˆ xZS )r5   z”Read response status line and headers.

    BadStatusLine could be raised in case of any errors in status line.
    Returns RawResponseMessage.
    rÀ   rÁ   ÚargsÚkwargsro   c                 óD   •— |€
t         rdnd}t        ‰| �  ||g|¢­i |¤ŽS )Nr8   r9   )r   ÚsuperrÔ   )rs   rÀ   rÁ   r*  r+  Ú	__class__s        €rT   rÔ   zHttpResponseParser.feed_data¤  s/   ø€ ð ˆ;Ý"‘'¨ˆCÜ‰wÑ   sÐ<¨TÒ<°VÑ<Ð<rS   ru   c                 óÄ  — |d   j                  dd«      }	 |j                  d¬«      \  }}	 |j                  d¬«      \  }}t        |«      | j                  kD  r2t        dt        | j                  «      t        t        |«      «      «      ‚t        j                  |«      }|€t        |«      ‚t        t        |j                  d«      «      t        |j                  d«      «      «      }t        |«      d	k7  st        j                  |«      st        |«      ‚t        |«      }| j                  |«      \  }	}
}}}}|€I|t         k  rd
}n=d|cxk  rdk  sn |dv rd}n)t"        j$                  |	v st"        j&                  |	v rd}nd
}t)        |||j	                  «       |	|
||||«	      S # t        $ r t        |«      d ‚w xY w# t        $ r |j	                  «       }d}Y �Œœw xY w)Nr   r}   r~   r   r  r�   r
  r\   r]   Téd   éÈ   >   é0  éÌ   F)r‡   rƒ   r„   r&   r‹   r‚   rk   r+   rO   r=   rˆ   r-   rX   r  r>   r˜   r.   r   rÃ   rñ   r7   )rs   ru   r�   rC   ÚstatusrW   r  r  Ústatus_irE   rF   ræ   rH   rI   rJ   s                  rT   r·   z HttpResponseParser.parse_message¯  sä  € Ø�Q‰x�‰˜wÐ(9Ó:ˆð	0Ø"Ÿj™j°!˜jÓ4‰OˆG�Vð	Ø#Ÿ\™\°1˜\Ó5‰NˆF�Fô
 ˆv‹;˜×+Ñ+Ò+ÜØ)¬3¨t×/AÑ/AÓ+BÄCÌÈFËÓDTóð ô
 × Ñ  Ó)ˆØˆ=Ü Ó%Ð%Ü¤ E§K¡K°£NÓ 3´S¸¿¹ÀQ»Ó5HÓIˆ	ô ˆv‹;˜!Ò¤6×#3Ñ#3°FÔ#;Ü Ó%Ð%Ü�v“;ˆð ×Ñ˜uÓ%ñ	
ØØØØØØð ˆ=ØœMÒ)Ø‘à˜Ô& 3Ô&¨(°jÑ*@Ø‘Ü×$Ñ$¨Ñ/´4×3IÑ3IÈWÑ3TØ‘ð �ä!ØØØ�L‰L‹NØØØØØØó

ð 
	
øô_ ò 	0Ü Ó%¨4Ð/ð	0ûô
 ò 	Ø—\‘\“^ˆFØ‹Fð	ús   —F' ­G  Æ'F=Ç GÇGr¸   c                 ón   — |j                  dd¬«      d   j                  d«      j                  «       dk(  S )Nr%  r   r  rx   r&  rJ   )r'  r‹   r¢   rº   s     rT   r»   z!HttpResponseParser._is_chunked_teî  s3   € à�y‰y˜ qˆyÓ)¨"Ñ-×3Ñ3°EÓ:×@Ñ@ÓBÀiÑOÐOrS   rq   )rL   rM   rN   r(  r   rn   r›   r   r  r   r   r	   r7   r0   rQ   rÔ   r·   rO   r»   Ú__classcell__)r.  s   @rT   r5   r5   š  sš   ø„ ñð ˆ)€Cð
 #ñ	=àð	=ð �d‰^ð	=ð ð		=ð
 ð	=ð 
ˆt�EÐ,¨lÐ:Ñ;Ñ<¸dÀEÐIÑ	Jõ	=ð=
 4¨¡;ð =
Ð3Eó =
ð~P ð P¨÷ PrS   r5   c                   ó”   — e Zd Z	 	 	 	 	 	 	 	 ddedee   dedee   dee   dee   ded	ed
eddfd„Zdd„Z		 dde
dede
deee
f   fd„Zy)rÑ   NrÖ   rÌ   rJ   rH   rV   rA   rª   r¬   rn   ro   c
                 ó*  — d| _         t        j                  | _        t        j
                  | _        d| _        d| _        || _	        |	| _
        d| _        |r|r| j                  rt        ||«      }
n|}
|s4t        j                  | _        |
j                  «        d| _        |
| _        y |rt        j                  | _        |
| _        y |�Bt        j                   | _        || _         | j                   dk(  r|
j                  «        d| _        |
| _        y )Nr   rS   FT)Ú_lengthr[   ra   Ú_typerc   re   Ú_chunkÚ_chunk_sizeÚ_chunk_tailr³   rr   rÒ   ÚDeflateBufferr^   r½   r`   r_   rÖ   )rs   rÖ   rÌ   rJ   rH   rV   rA   rª   r¬   rn   Úreal_payloads              rT   rt   zHttpPayloadParser.__init__ô  sü   € ð ˆŒÜ×/Ñ/ˆŒ
Ü ×3Ñ3ˆŒØˆÔØˆÔØ /ˆÔØˆŒ	ØˆŒ	ñ ¡+°$×2GÒ2GÜ?LØ˜ó@‰Lð #ˆLñ "ä#×.Ñ.ˆDŒJØ×!Ñ!Ô#ØˆDŒIð $ˆ�ñ Ü#×1Ñ1ˆDŒJð $ˆ�ð ÐÜ#×0Ñ0ˆDŒJØ!ˆDŒLØ�|‰|˜qÒ Ø×%Ñ%Ô'Ø �”	à#ˆ�rS   c                 ó  — | j                   t        j                  k(  r| j                  j	                  «        y | j                   t        j
                  k(  rt        d«      ‚| j                   t        j                  k(  rt        d«      ‚y )Nz2Not enough data for satisfy content length header.z3Not enough data for satisfy transfer length header.)	r;  r[   ra   rÖ   r½   r_   r(   r`   r,   r¿   s    rT   r½   zHttpPayloadParser.feed_eof"  so   € Ø�:‰:œ×3Ñ3Ò3Ø�L‰L×!Ñ!Õ#Ø�Z‰Zœ:×2Ñ2Ò2Ü$ØDóð ð �Z‰Zœ:×3Ñ3Ò3Ü'ØEóð ð 4rS   ÚchunkrÁ   Ú	CHUNK_EXTc                 ó
  — | j                   t        j                  k(  r´| j                  }t	        |«      }||k\  rP||z
  | _        | j
                  j                  ||«       | j                  dk(  rb| j
                  j                  «        yd| _        | j
                  j                  |d | |«       | j
                  j                  «        d||d  fS y| j                   t        j                  k(  �rØ| j                  r| j                  |z   }d| _	        |�r²| j                  t        j                  k(  �rv|j                  |«      }|dk\  �rW|j                  |d|«      }|dk\  r4|d | }d||| x}	v r+t        d|	›�«      }
t        | j
                  |
«       |
‚|d | }| j                   r|j#                  «       }t%        j&                  t(        |«      s6t+        |d | j-                  dd«      «      }
t        | j
                  |
«       |
‚t/        t1        |«      d	«      }||t	        |«      z   d  }|dk(  r8t        j2                  | _
        | j                   rV|j5                  d
«      rE|dd  }n?t        j6                  | _
        || _        | j
                  j;                  «        n|| _	        y| j                  t        j6                  k(  r�| j8                  }t	        |«      }||kD  r'||z
  | _        | j
                  j                  ||«       yd| _        | j
                  j                  |d | |«       ||d  }t        j<                  | _
        | j
                  j?                  «        | j                  t        j<                  k(  r_| j                   r|j5                  d
«      r|dd  }|d t	        |«       |k(  r$|t	        |«      d  }t        j                  | _
        n|| _	        y| j                  t        j2                  k(  re|d t	        |«       }||k(  r*| j
                  j                  «        d|t	        |«      d  fS |sy||d d k(  r|| _	        yt        j@                  | _
        | j                  t        j@                  k(  rE|j                  |«      }|dk\  r'||t	        |«      z   d  }t        j2                  | _
        n|| _	        y|r�Œ²y| j                   t        jB                  k(  r%| j
                  j                  |t	        |«      «       y)Nr   )TrS   TrS   r9   z"Unexpected LF in chunk-extension: Úasciir~   é   rÇ   r   )FrS   )"r;  r[   r_   r:  r‚   rÖ   rÔ   r½   r`   r>  r<  rc   re   rÍ   r$   r#   rr   r‹   Úrerˆ   r?   r,   r‡   rX   r›   rh   r  rf   r=  Úbegin_http_chunk_receivingrg   Úend_http_chunk_receivingri   ra   )rs   rB  rÁ   rC  ÚrequiredÚ	chunk_lenrÚ   ÚiÚsize_bÚextÚexcÚsizeÚheads                rT   rÔ   zHttpPayloadParser.feed_data.  s  € ð �:‰:œ×0Ñ0Ò0Ø—|‘|ˆHÜ˜E›
ˆIà˜9Ò$Ø'¨)Ñ3�”Ø—‘×&Ñ& u¨iÔ8Ø—<‘< 1Ò$Ø—L‘L×)Ñ)Ô+Ø$à �”Ø—‘×&Ñ& u¨Y¨hÐ'7¸ÔBØ—‘×%Ñ%Ô'Ø˜U 8 9Ð-Ð-Ð-ðd ð_ �Z‰Zœ:×3Ñ3Ó3Ø×ÒØ×(Ñ(¨5Ñ0�Ø#&�Ô âð —;‘;¤*×"?Ñ"?Ó?ØŸ*™* S›/�CØ˜a“xØ!ŸJ™J y°!°SÓ9˜Ø š6Ø%*¨2¨A Y˜Fà$°°a¸°Ð)<¨Ñ=Ü&4Ø&HÈÈÐ$Pó'" ô !.¨d¯l©l¸CÔ @Ø&) 	à%*¨4¨C [˜FàŸ9š9Ø%+§\¡\£^˜Fä!Ÿ|™|¬I°vÔ>Ü"7Ø % d s × 2Ñ 2°7Ð<MÓ Nó#˜Cô *¨$¯,©,¸Ô<Ø"%˜IÜ"¤5¨£=°"Ó5˜à % c¬C°«H¡nÐ&6Ð 7˜Ø 1š9Ü*4×*IÑ*I˜DœKØ#Ÿyšy¨U×-=Ñ-=¸eÔ-DØ(-¨a¨b¨	¡ä*4×*HÑ*H˜DœKØ/3˜DÔ,Ø ŸL™L×CÑCÕEà+0˜Ô(Ø)ð —;‘;¤*×"@Ñ"@Ò@Ø#×/Ñ/�HÜ # E£
�Ià )Ò+Ø+3°iÑ+?˜Ô(ØŸ™×.Ñ.¨u°iÔ@Ø)à+,˜Ô(ØŸ™×.Ñ.¨u°Y°hÐ/?ÀÔJØ % h iÐ 0˜Ü&0×&HÑ&H˜œØŸ™×=Ñ=Ô?ð —;‘;¤*×"DÑ"DÒDØ—y’y U×%5Ñ%5°eÔ%<Ø % a b 	˜Ø˜Zœs 3›xÐ(¨CÒ/Ø %¤c¨#£h jÐ 1˜Ü&0×&CÑ&C˜�à+0˜Ô(Ø)ð
 —;‘;¤*×"AÑ"AÒAØ  ¤3 s£8Ð,�DØ˜s’{àŸ™×-Ñ-Ô/Ø# U¬3¨s«8¨:Ð%6Ð6Ð6ñ  Ø)Ø˜s 2 A˜w’Ø+/˜Ô(Ø)Ü",×";Ñ";�D”Kð —;‘;¤*×";Ñ";Ò;ØŸ*™* S›/�CØ˜a’xØ % c¬C°«H¡nÐ&6Ð 7˜Ü&0×&EÑ&E˜�à+0˜Ô(Ø)óI ðT ð �Z‰Zœ:×5Ñ5Ò5Ø�L‰L×"Ñ" 5¬#¨e«*Ô5àrS   )NFNNNTTF©ro   N)r8   ó   ;)rL   rM   rN   r0   r   rX   rQ   rO   rt   r½   r›   r  r   rÔ   rR   rS   rT   rÑ   rÑ   ó  sÓ   „ ð !%ØØ%)Ø"Ø $Ø#'Ø $Øñ,$àð,$ð ˜‘ð,$ð ð	,$ð
 ˜c‘]ð,$ð �s‰mð,$ð ˜‘ð,$ð !ð,$ð ð,$ð ð,$ð 
ó,$ó\
ð EIñDØðDØ!%ðDØ<AðDà	ˆt�Uˆ{Ñ	ôDrS   rÑ   c                   óz   — e Zd ZU dZeed<   dedee   ddfd„Z	e
fded	eddfd
„Zdededdfd„Zdd„Zdd„Zdd„Zy)r?  zDDeflateStream decompress stream and feed data into specified stream.ÚdecompressorÚoutr÷   ro   Nc                 ó®   — || _         d| _        || _        d| _        |  |dk(  r!t        st        d«      ‚t        «       | _        y t        |¬«      | _        y )Nr   Fré   zECan not decode content-encoding: brotli (br). Please install `Brotli`)r÷   )	rV  rP  r÷   Ú_started_decodingr   r'   r   rU  r   )rs   rV  r÷   s      rT   rt   zDeflateBuffer.__init__º  sY   € ØˆŒØˆŒ	Ø ˆŒØ!&ˆÔáØ�tÒÝÜ*ð.óð ô !3Ó 4ˆDÕä 0¸(Ô CˆDÕrS   rO  Ú	exc_causec                 ó2   — t        | j                  ||«       y rq   )r#   rV  )rs   rO  rY  s      rT   r#   zDeflateBuffer.set_exceptionË  s   € ô
 	�d—h‘h  YÕ/rS   rB  rP  c                 ó˜  — |sy | xj                   |z  c_         | j                  s6| j                  dk(  r'|d   dz  dk7  rt        | j                  d¬«      | _        	 | j                  j                  |«      }d| _        |r&| j                  j                  |t        |«      «       y y # t        $ r t        d| j                  z  «      ‚w xY w)Nrè   r   é   é   T)r÷   Úsuppress_deflate_headerz#Can not decode content-encoding: %s)rP  rX  r÷   r   rU  Údecompress_syncr¾   r'   rV  rÔ   r‚   )rs   rB  rP  s      rT   rÔ   zDeflateBuffer.feed_dataÒ  sÄ   € ÙØà�	Š	�TÑ�	ð ×&Ò&Ø—‘ Ò*Ø�a‘˜3‘ !Ò#ô !1ØŸ™Àô!ˆDÔð	Ø×%Ñ%×5Ñ5°eÓ<ˆEð "&ˆÔáØ�H‰H×Ñ˜u¤c¨%£jÕ1ð øô ò 	Ü&Ø5¸¿¹ÑEóð ð	ús   ÁB' Â'"C	c                 ó8  — | j                   j                  «       }|s| j                  dkD  rU| j                  j	                  |t        |«      «       | j                  dk(  r!| j                   j                  st        d«      ‚| j                  j                  «        y )Nr   rè   )
rU  ÚflushrP  rV  rÔ   r‚   r÷   rÝ   r'   r½   )rs   rB  s     rT   r½   zDeflateBuffer.feed_eofò  sp   € Ø×!Ñ!×'Ñ'Ó)ˆá�D—I‘I ’MØ�H‰H×Ñ˜u¤c¨%£jÔ1Ø�}‰} 	Ò)°$×2CÑ2C×2GÒ2GÜ*¨9Ó5Ð5à�‰×ÑÕrS   c                 ó8   — | j                   j                  «        y rq   )rV  rH  r¿   s    rT   rH  z(DeflateBuffer.begin_http_chunk_receivingü  s   € Ø�‰×+Ñ+Õ-rS   c                 ó8   — | j                   j                  «        y rq   )rV  rI  r¿   s    rT   rI  z&DeflateBuffer.end_http_chunk_receivingÿ  s   € Ø�‰×)Ñ)Õ+rS   rR  )rL   rM   rN   r(  r   rP   r0   r   rO   rt   r   rÕ   r#   r›   rX   rÔ   r½   rH  rI  rR   rS   rT   r?  r?  µ  s}   … ÙNàÓðD˜Lð D°H¸S±Mð DÀdó Dð( $1ñ0àð0ð !ð0ð 
ó	0ð2˜uð 2¨Cð 2°Dó 2ó@ó.ô,rS   r?  )r4   r5   r6   r7   )gr  r   rG  ÚstringÚ
contextlibr   Úenumr   Útypingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   Ú	multidictr   r   r   Úyarlr   r�   r   Úbase_protocolr   Úcompression_utilsr   r   r   Úhelpersr   r   r   r    r!   r"   r#   Úhttp_exceptionsr$   r%   r&   r'   r(   r)   r*   r+   r,   Úhttp_writerr-   r.   Ústreamsr/   r0   Útypedefsr1   Ú__all__r  ÚsetÚ	printabler:   rO   rP   Úescaper;   Úcompiler<   ÚASCIIr=   r>   r?   r›   r6   r7   rY   r[   rc   r2   rQ   r£   ÚABCr3   r4   r5   rÑ   r?  ÚHttpRequestParserPyÚHttpResponseParserPyÚRawRequestMessagePyÚRawResponseMessagePyÚ_http_parserÚHttpRequestParserCÚHttpResponseParserCÚRawRequestMessageCÚRawResponseMessageCÚImportErrorrR   rS   rT   Ú<module>r‚     sr  ðÜ 
Û Û 	Û Ý Ý ÷÷ ÷ ÷ ÷" :Ñ 9Ý å Ý 'ß OÑ O÷÷ ñ ÷
÷ 
õ 
÷ 4ß 0Ý  ð€ð ˆ~Ñ€á × 0Ñ 0Ó1€ˆ%��C‘‰/Ó 1ð (˜bŸi™iÐ(9Ó:€��s‘Ó :Ø)˜rŸz™z¨J°Ð6GÀrÐ*JÓK€ˆˆw�s‰|Ñ	Ó KØ(˜bŸj™jÐ);¸R¿X¹XÓF€ˆˆg�c‰lÑÓ FØ(˜bŸj™j¨°·±Ó:€ˆˆg�c‰lÑÓ :Ø#- 2§:¡:Ð.>Ó#?€	ˆ5�˜‘Ñ Ó ?ô
˜
ô 
ô	˜ô 	ñ 	�Ð*Ð,>Ó?€ô�ô ô�ô ÷i?ñ i?ðXIÐ#3°CÑ#8ð I¸Tó Iô
E�—‘˜' %™.ô EôP
aH˜
Ð#4Ñ5ô aHôHVP˜Ð$6Ñ7ô VP÷rñ ÷DK,ñ K,ð\ (Ð Ø)Ð Ø'Ð Ø)Ð ð	Ù÷	
ó 	
ð /ÐØ0ÐØ.ÐØ0Ñð øð ò 	Ùð	ús   ÈH# È#H+È*H+