Ë
    CØïiéˆ  ã                   óÈ  — 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* ddl+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 ddl4m5Z5m6Z6 ddl7m8Z8 ddl9m:Z:m;Z; ddl<m=Z= dZ>ed   Z? e@ej‚                  «      ZBeeeC      eDd<    ejŠ                  d«      ZFeeeC      eDd<    ejŠ                  d«      ZGeeeC      eDd<    ejŠ                  d«      ZHeeeI      eDd<    ejŠ                  d«      ZJ G d„ de«      ZK G d„ de«      ZL edeKeL«      ZM G d „ d!e«      ZN G d"„ d#e«      ZO G d$„ d%«      ZP G d&„ d'e j¢                  eeM   «      ZR G d(„ d)eReK   «      ZS G d*„ d+eReL   «      ZT G d,„ d-«      ZU G d.„ d/«      ZVeSZWeTZXeKZYeLZZ	 e'sdd0l[mSZSmTZTmKZKmLZL eSZ\eTZ]eKZ^eLZ_yy# e`$ r Y yw xY w)1é    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)ÚDEBUGÚNO_EXTENSIONSÚBaseTimerContextÚmethod_must_be_empty_bodyÚstatus_code_must_be_empty_body)ÚBadHttpMessageÚBadStatusLineÚContentEncodingErrorÚContentLengthErrorÚInvalidHeaderÚInvalidURLErrorÚLineTooLongÚTransferEncodingError)ÚHttpVersionÚHttpVersion10)Úinternal_logger)ÚEMPTY_PAYLOADÚStreamReader)Ú
RawHeaders)ÚHeadersParserÚ
HttpParserÚHttpRequestParserÚHttpResponseParserÚRawRequestMessageÚRawResponseMessage)ó   
ó   
ÚASCIISETz[!#$%&'*+\-.^_`|~0-9A-Za-z]+ÚMETHREzHTTP/(\d).(\d)ÚVERSREs*   [\x00-\x1F\x7F-\xFF()<>@,;:\[\]={} \t\"\\]ÚHDRREs   [0-9a-fA-F]+c                   ó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)r4   ÚmethodÚpathÚversionúCIMultiDictProxy[str]ÚheadersÚraw_headersÚshould_closeÚcompressionÚupgradeÚchunkedÚurlN)
Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__r*   r/   Úboolr   r   © ó    úM/var/www/html/aiagents/fe/lib/python3.12/site-packages/aiohttp/http_parser.pyr4   r4   P   s=   … ØƒKØ
ƒIØÓØ$Ó$ØÓØÓØ˜#‘ÓØƒMØƒMØ	„HrO   r4   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
)r5   r?   ÚcodeÚreasonrA   rB   rC   rD   rE   rF   N)rH   rI   rJ   r*   rL   ÚintrK   r   r/   rM   r   rN   rO   rP   r5   r5   ]   s=   … ØÓØ
ƒIØƒKØ˜cÑ"Ó"ØÓØÓØ˜#‘ÓØƒMØ„MrO   r5   Ú_MsgTc                   ó   — e Zd ZdZdZdZdZy)Ú
ParseStater   r   é   é   N)rH   rI   rJ   Ú
PARSE_NONEÚPARSE_LENGTHÚPARSE_CHUNKEDÚPARSE_UNTIL_EOFrN   rO   rP   rW   rW   l   s   „ à€JØ€LØ€MØ�OrO   rW   c                   ó    — e Zd ZdZdZdZdZdZy)Ú
ChunkStater   r   rX   rY   é   N)rH   rI   rJ   ÚPARSE_CHUNKED_SIZEÚPARSE_CHUNKED_CHUNKÚPARSE_CHUNKED_CHUNK_EOFÚPARSE_MAYBE_TRAILERSÚPARSE_TRAILERSrN   rO   rP   r_   r_   t   s   „ ØÐØÐØÐØÐØ�NrO   r_   c            	       óL   — e Zd Z	 	 	 d
dedededdfd„Zdee   dedef   fd	„Z	y)r0   Úmax_line_sizeÚmax_headersÚmax_field_sizeÚreturnNc                 ó.   — || _         || _        || _        y ©N)rg   rh   ri   )Úselfrg   rh   ri   s       rP   Ú__init__zHeadersParser.__init__}   s   € ð +ˆÔØ&ˆÔØ,ˆÕrO   Úlinesr@   c           	      ój  — t        «       }g }d}|d   }t        |«      }|�rd	 |j                  dd«      \  }}|d   |d   hddhz  rt	        |«      ‚|j                  d«      }t        j                  |«      rt	        |«      ‚t        |«      | j                  kD  rQt        dj                  |j                  d	d
«      «      t        | j                  «      t        t        |«      «      «      ‚t        |«      }	|dz  }||   }|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«      }|j                  dd«      }d|v sd|v sd|v rt	        |«      ‚|j!                  ||«       |j                  ||f«       |r�Œdt#        |«      t%        |«      fS # t        $ r t	        |«      d ‚w xY w)Nr   ó   :r   éÿÿÿÿé    é	   s    	zrequest header name {}Úutf8Úbackslashreplace)rs   rt   zrequest header field {}rO   úutf-8Úsurrogateescapeú
úú )r   ÚlenÚsplitÚ
ValueErrorr&   Úlstripr;   Úsearchri   r(   ÚformatÚdecoderK   ÚappendÚjoinÚstripÚaddr   Útuple)rm   ro   rA   rB   Ú	lines_idxÚlineÚ
line_countÚbnameÚbvalueÚheader_lengthÚcontinuationÚ
bvalue_lstÚnameÚvalues                 rP   Úparse_headerszHeadersParser.parse_headers‡   sá  € ô %0£MˆØˆàˆ	Ø�Q‰xˆÜ˜“Zˆ
âð4Ø $§
¡
¨4°Ó 3‘��vð
 �a‘˜% ™)Ð$¨¨A wÒ.Ü# DÓ)Ð)à—]‘] 6Ó*ˆFÜ�|‰|˜EÔ"Ü# EÓ*Ð*Ü�5‹z˜D×/Ñ/Ò/Ü!Ø,×3Ñ3ØŸ™ VÐ-?Ó@óô ˜×+Ñ+Ó,Üœ˜E›
“Oóð ô   ›KˆMð ˜‰NˆIØ˜Ñ#ˆDð  Ò6 D¨¡G¨wÐ$6ˆ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Ø—<‘< Ð):Ó;ˆDØ—M‘M 'Ð+<Ó=ˆEð �u‰} ¨¡°¸5±Ü# FÓ+Ð+à�K‰K˜˜eÔ$Ø×Ñ  v˜Ô/óY ô\ ! Ó)¬5°Ó+=Ð>Ð>øôU ò 4Ü# DÓ)¨tÐ3ð4ús   £J ÊJ2)éþ  é €  r“   )
rH   rI   rJ   rT   rn   r	   Úbytesr   r/   r’   rN   rO   rP   r0   r0   |   s_   „ ð "Ø Ø"ñ	-àð-ð ð-ð ð	-ð
 
ó-ðX?Ø˜%‘[ðX?à	Ð&¨
Ð2Ñ	3ôX?rO   r0   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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dee   fd„Zddej2                  ej4                  ej6                  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)%r1   FÚlaxNÚprotocolÚloopÚlimitrg   rh   ri   ÚtimerrR   r=   ÚreadallÚpayload_exceptionÚresponse_with_bodyÚread_until_eofÚauto_decompressrj   c                 ó2  — || _         || _        || _        || _        || _        || _        || _        |	| _        |
| _        || _	        || _
        || _        g | _        d| _        d| _        d | _        d | _        || _        || _        t'        |||«      | _        y )NrO   F)r˜   r™   rg   rh   ri   r›   rR   r=   rœ   r�   rž   rŸ   Ú_linesÚ_tailÚ	_upgradedÚ_payloadÚ_payload_parserÚ_auto_decompressÚ_limitr0   Ú_headers_parser)rm   r˜   r™   rš   rg   rh   ri   r›   rR   r=   rœ   r�   rž   rŸ   r    s                  rP   rn   zHttpParser.__init__å   s¢   € ð" !ˆŒØˆŒ	Ø*ˆÔØ&ˆÔØ,ˆÔØˆŒ
ØˆŒ	ØˆŒØˆŒØ!2ˆÔØ"4ˆÔØ,ˆÔà#%ˆŒØˆŒ
ØˆŒØˆŒØ<@ˆÔØ /ˆÔØˆŒÜ,¨]¸KÈÓXˆÕrO   ro   c                  ó   — y rl   rN   )rm   ro   s     rP   Úparse_messagezHttpParser.parse_message  s   € àrO   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)Nrr   z
rO   )r¦   Úfeed_eofr£   r¢   rƒ   r   Ú	Exceptionr«   ©rm   s    rP   r­   zHttpParser.feed_eof  sª   € Ø×ÑÐ+Ø× Ñ ×)Ñ)Ô+Ø#'ˆDÔ ð ð �zŠzØ—‘×"Ñ" 4§:¡:Ô.à�{Š{Ø—;‘;˜r‘? fÒ,Ø—K‘K×&Ñ& sÔ+ÜœiÓ(ñ ;Ø×-Ñ-¨d¯k©kÓ:÷;ñ ;à÷;àús   Â(CÃCr6   rO   ÚdataÚSEPÚEMPTYÚCONTENT_LENGTHÚMETH_CONNECTÚSEC_WEBSOCKET_KEY1c                 óN
  ‡‡— g }| j                   r| j                   |z   dc}| _         t        |«      }d}	| j                  }
|	|k  �r| j                  �€€| j                  �ss|j                  ||	«      }||	k(  r| j                  s|t        |«      z   }	ŒR||	k\  �r.||	| }|dk(  r|j                  d«      }| j                  j                  |«       |t        |«      z   }	| j                  d   |k(  �rj	 | j                  | j                  «      Š| j                  j                  «        dt        t           fˆˆfd„} |«       }|‰j                  v rt        |«      ‚‰j                  | _        t!        ‰d| j"                  «      }t!        ‰d	d«      }| j$                  €J ‚t'        |«      xs t)        |xr t+        |«      «      }|s½|�|dkD  s‰j,                  rª‰j                  sžt/        | j$                  | j0                  |
| j2                  ¬
«      }t5        ||‰j,                  |‰j6                  | j8                  | j:                  | j<                  | j>                  | j@                  ¬«
      }|jB                  �s;|| _        �n2||k(  r…tE        ‰tF        «      sJ ‚t/        | j$                  | j0                  |
| j2                  ¬
«      }d| _        t5        |‰j"                  ‰j6                  d| j>                  | j@                  ¬«      | _        n¨|s |€ž| jH                  r’t/        | j$                  | j0                  |
| j2                  ¬
«      }t5        ||‰j,                  |‰j6                  | j8                  d| j<                  | j>                  | j@                  ¬«
      }|jB                  s|| _        ntJ        }|j                  ‰|f«       n“||	d  | _         |}n�| j                  €| j                  r| j                  rJ ‚nf|r\|	|k  rW| j                  rJ ‚| j                  €J ‚	 | j                  jM                  ||	d  |«      \  }}|rd}	t        |«      }d | _        �Œn|	|k  r�Œ|r|	|k  r||	d  }n|}|| j                  |fS # | j                  j                  «        w xY w# tN        $ r}}| jP                  �>| j                  jR                  jU                  | jQ                  tW        |«      «      «       n%| j                  jR                  jU                  |«       d}d}Y d }~ŒÞd }~ww xY w)NrO   r   r7   ó   rr   rj   c                  óª   •— ‰j                   j                  ‰«      } | €y | j                  d«      j                  «       st	        ‰«      ‚t        | «      S )Nz 	)rA   Úgetr…   Ú	isdecimalr&   rT   )Ú
length_hdrr³   Úmsgs    €€rP   Úget_content_lengthz0HttpParser.feed_data.<locals>.get_content_lengthM  sL   ø€ à),¯©¯©¸Ó)H˜JØ)Ð1Ø'+ð $.×#3Ñ#3°EÓ#:×#DÑ#DÔ#FÜ&3°NÓ&CÐ Cä#& z£?Ð2rO   r=   rR   )r›   r™   rš   )	ÚlengthrF   r=   rD   rR   rœ   rž   r    r—   T)r=   rD   rœ   r    r—   ),r£   r|   r™   r¦   r¤   Úfindr¢   Úrstriprƒ   r«   Úclearr   rT   rA   r&   rE   Úgetattrr=   r˜   r!   rM   r    rF   r.   r›   r¨   ÚHttpPayloadParserrD   rR   rœ   rž   r§   r—   ÚdoneÚ
isinstancer4   rŸ   r-   Ú	feed_dataÚBaseExceptionr�   ÚpayloadÚset_exceptionrK   )rm   r°   r±   r²   r³   r´   rµ   ÚmessagesÚdata_lenÚ	start_posr™   Úposr‰   r½   r¾   r=   rR   Ú
empty_bodyrÈ   Úpayload_parserÚeofÚexcr¼   s       `                 @rP   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Øà˜)Ó#à 	¨#Ð.�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à),¯©˜œä!(¨¨h¸¿¹Ó!D˜ä& s¨F°AÓ6˜à#Ÿ}™}Ð8Ð8Ð8ä%CÀDÓ%Iò &ÌTØ"ÒHÔ'@ÀÓ'HóN˜
ñ  *Ø#Ð/°F¸Q²JØ"Ÿ{š{Ø$'§K¢Kä&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à!% 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Ô(Ùàðw ˜(Ô"ñz �I Ò(Ø˜	˜
Ð#‰DàˆDà˜Ÿ™¨Ð-Ð-øðU !ŸK™K×-Ñ-Õ/ûôd %ò 	Ø×-Ñ-Ð9Ø×,Ñ,×4Ñ4×BÑBØ ×2Ñ2´3°s³8Ó<õð ×,Ñ,×4Ñ4×BÑBÀ3ÔGà�CØ•Dûð	ús%   Ã1Q? Ð"R Ñ?RÒ	T$Ò'A3TÔT$r@   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                   «      }	|	r'|	j#                  «       }
|
dk(  rd}n|
dk(  rd}n|
d	k(  rd}‰j                  t        j$                  «      }|r|j#                  «       }|d
v r|}‰j                  t        j                  «      }|�>d|j#                  «       k(  rd}nt        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)rN   r   N)r|   Úgetall)Ú.0ÚhrA   s     €rP   ú	<genexpr>z+HttpParser.parse_headers.<locals>.<genexpr>õ  s(   øè ø€ ÒP˜a´°W·^±^ÀAÀrÓ5JÓ1KÈaÓ1OœÑPùs   ƒ#.§.zDuplicate 'z' header found.ÚcloseTz
keep-aliverE   )ÚgzipÚdeflateÚbrrF   z'Request has invalid `Transfer-Encoding`z6Transfer-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¹   Ú
CONNECTIONÚlowerÚCONTENT_ENCODING)rm   ro   rB   Ú
close_connÚencodingrE   rF   Ú
singletonsÚbad_hdrÚconnÚvÚencÚterA   s                @rP   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’Ø�ð �k‰kœ$×/Ñ/Ó0ˆÙØ—)‘)“+ˆCØÐ/Ñ/Ø�ð �[‰[œ×/Ñ/Ó0ˆØˆ>Ø˜BŸH™H›JÒ&Ø‘ä$Ð%NÓOÐOä×"Ñ" gÑ-Ü$ØLóð ð ˜ j°(¸GÀWÐMÐMrO   Úvalc                 ó   — || _         y)zZSet connection upgraded (to websocket) mode.

        :param bool val: new state.
        N)r¤   )rm   rñ   s     rP   Úset_upgradedzHttpParser.set_upgraded  s   € ð
 ˆ�rO   )NNi   r“   r”   r“   NNNFNTFT)$rH   rI   rJ   r—   r   rM   rL   r   r   ÚasyncioÚAbstractEventLooprT   r   rK   r   rÇ   rn   ÚabcÚabstractmethodr	   r•   rU   r«   r­   r   r³   r´   rµ   Ú_SEPr   r   r.   rÆ   r/   r’   ró   rN   rO   rP   r1   r1   â   s+  … Ø€Cˆ�$‰Óð ,0Ø48ØØ!Ø Ø"Ø,0Ø"Ø $ØØ;?Ø#'Ø$Ø $ñ%Yà˜<Ñ(ð%Yð �w×0Ñ0Ñ1ð%Yð ð	%Yð
 ð%Yð ð%Yð ð%Yð Ð(Ñ)ð%Yð �s‰mð%Yð ˜‘ð%Yð ð%Yð $ D¨Ñ$7Ñ8ð%Yð !ð%Yð ð%Yð ð%Yð  
ó!%YðN 	×Ñð 4¨¡;ð °5ò ó ðð˜( 5™/ó ð& ØØ#×2Ñ2Ø ×-Ñ-Ø#'×#:Ñ#:ñu.àðu.ð ðu.ð ð	u.ð
 ðu.ð ðu.ð !ðu.ð 
ˆt�E˜% Ð-Ñ.Ñ/°°uÐ<Ñ	=óu.ðnANØ˜%‘[ðANà	Ø ¨X°d©^¸XÀc¹]ÈDÐRVÐVñ
óANðF ð ¨ô rO   r1   c                   ó&   — e Zd ZdZdee   defd„Zy)r2   z¥Read request status line.

    Exception .http_exceptions.BadStatusLine
    could be raised in case of any errors in status line.
    Returns RawRequestMessage.
    ro   rj   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}t/        ||||||||||«
      S # t        $ r t        |«      d ‚w xY w)Nr   rw   rx   ú rX   ©ÚmaxsplitúStatus line is too longr   ÚCONNECTT)Ú	authorityÚencodedú/ú#ú?)r>   Úquery_stringÚfragmentr  Ú*ÚOPTIONS)r  Ú )ÚerrorsÚlatin1F)r‚   r}   r~   r#   r|   rg   r(   rK   r9   Ú	fullmatchr:   r*   rT   Úgroupr   ÚbuildÚ
startswithÚ	partitionÚschemer'   Úencoder’   r+   r4   )rm   ro   r‰   r=   r>   r?   ÚmatchÚ	version_orG   Ú	path_partÚ_hash_separatorÚurl_fragmentÚ_question_mark_separatorÚqs_partrA   rB   rØ   rD   rE   rF   s                       rP   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N)rH   rI   rJ   Ú__doc__r	   r•   r4   r«   rN   rO   rP   r2   r2   "  s"   „ ñðS
 4¨¡;ð S
Ð3Dô S
rO   r2   c                   óz   ‡ — 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ˆ xZS )r3   z”Read response status line and headers.

    BadStatusLine could be raised in case of any errors in status line.
    Returns RawResponseMessage.
    r°   r±   ÚargsÚkwargsrj   c                 óD   •— |€
t         rdnd}t        ‰| �  ||g|¢­i |¤ŽS )Nr6   r7   )r   ÚsuperrÆ   )rm   r°   r±   r  r  Ú	__class__s        €rP   rÆ   zHttpResponseParser.feed_dataŠ  s/   ø€ ð ˆ;Ý"‘'¨ˆCÜ‰wÑ   sÐ<¨TÒ<°VÑ<Ð<rO   ro   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|j                  «       st        |«      ‚t        |«      }| j                  |«      \  }	}
}}}}|€	|t         k  }t#        |||j	                  «       |	|
||||«	      S # t        $ r t        |«      d ‚w xY w# t        $ r |j	                  «       }d}Y �ŒWw xY w)
Nr   rw   rx   r   rü   r	  rþ   rX   rY   )r‚   r}   r~   r#   r…   r|   rg   r(   rK   r:   r  r*   rT   r  rº   r’   r+   r5   )rm   ro   r‰   r?   ÚstatusrS   r  r  Ústatus_irA   rB   rØ   rD   rE   rF   s                  rP   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Ô#5Ü Ó%Ð%Ü�v“;ˆð ×Ñ˜uÓ%ñ	
ØØØØØØð ˆ=Ø¤Ñ.ˆEä!ØØØ�L‰L‹NØØØØØØó

ð 
	
øôM ò 	0Ü Ó%¨4Ð/ð	0ûô
 ò 	Ø—\‘\“^ˆFØ‹Fð	ús   —E" ­E; Å"E8Å;FÆFrl   )rH   rI   rJ   r  r   r—   r•   r   rø   r   r   r	   r5   r.   rM   rÆ   r«   Ú__classcell__)r   s   @rP   r3   r3   €  sƒ   ø„ ñð ˆ)€Cð
 #ñ	=àð	=ð �d‰^ð	=ð ð		=ð
 ð	=ð 
ˆt�EÐ,¨lÐ:Ñ;Ñ<¸dÀEÐIÑ	Jõ	=ð4
 4¨¡;ð 4
Ð3E÷ 4
rO   r3   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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¾   rF   rD   rR   r=   rœ   rž   r    r—   rj   c                 ó  — d| _         t        j                  | _        t        j
                  | _        d| _        d| _        |	| _	        |
| _
        d| _        |r|r| j                  rt        ||«      }n|}|s4t        j                  | _        |j                  «        d| _        || _        y |rt        j                  | _        || _        y |�Jt        j                  | _        || _         | j                   dk(  rˆ|j                  «        d| _        || _        y |r"|dk7  rt        j                   | _        || _        y |dv rAt#        j$                  d«       t        j                  | _        |j                  «        d| _        || _        y )Nr   rO   FTéÌ   )ÚPUTÚPOSTz6Content-Length or Transfer-Encoding header is required)Ú_lengthrW   rZ   Ú_typer_   ra   Ú_chunkÚ_chunk_sizeÚ_chunk_tailr§   Ú_laxrÄ   ÚDeflateBufferr­   r\   r[   r]   r,   ÚwarningrÈ   )rm   rÈ   r¾   rF   rD   rR   r=   rœ   rž   r    r—   Úreal_payloads               rP   rn   zHttpPayloadParser.__init__Í  sc  € ð ˆŒÜ×*Ñ*ˆŒ
Ü ×3Ñ3ˆŒØˆÔØˆÔØ /ˆÔØˆŒ	ØˆŒ	ñ ¡+°$×2GÒ2GÜ?LØ˜ó@‰Lð #ˆLñ "ä#×.Ñ.ˆDŒJØ×!Ñ!Ô#ØˆDŒIð* $ˆ�ñ' Ü#×1Ñ1ˆDŒJð$ $ˆ�ð# ÐÜ#×0Ñ0ˆDŒJØ!ˆDŒLØ�|‰|˜qÒ Ø×%Ñ%Ô'Ø �”	ð $ˆ�ñ ˜4 3š;Ü'×7Ñ7�”
ð $ˆ�ð ˜?Ñ*Ü×'Ñ'ØLôô (×2Ñ2�”
Ø×%Ñ%Ô'Ø �”	à#ˆ�rO   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+  rW   r]   rÈ   r­   r[   r%   r\   r)   r¯   s    rP   r­   zHttpPayloadParser.feed_eof  so   € Ø�:‰:œ×3Ñ3Ò3Ø�L‰L×!Ñ!Õ#Ø�Z‰Zœ:×2Ñ2Ò2Ü$ØDóð ð �Z‰Zœ:×3Ñ3Ò3Ü'ØEóð ð 4rO   Ú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(  �rM|j                  |«      }|dk\  �r.|j                  |d|«      }|dk\  r|d | }n|d | }| j                  r|j                  «       }t!        j"                  t$        |«      s;t'        |d | j)                  dd«      «      }	| j
                  j+                  |	«       |	‚t-        t/        |«      d«      }
||t	        |«      z   d  }|
dk(  r8t        j0                  | _
        | j                  rV|j3                  d«      rE|d	d  }n?t        j4                  | _
        |
| _        | j
                  j9                  «        n|| _	        y
| j                  t        j4                  k(  r¿| j6                  }t	        |«      }||kD  r'||z
  | _        | j
                  j                  ||«       y
d| _        | j
                  j                  |d | |«       ||d  }| j                  r|j3                  d«      r|d	d  }t        j:                  | _
        | j
                  j=                  «        | j                  t        j:                  k(  r=|d t	        |«       |k(  r$|t	        |«      d  }t        j                  | _
        n|| _	        y
| j                  t        j0                  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        j0                  | _
        n|| _	        y
|r�Œ‰y
| j                   t        j@                  k(  r%| j
                  j                  |t	        |«      «       y
)Nr   )TrO   TrO   Úasciirx   é   r·   r   )FrO   )!r+  rW   r[   r*  r|   rÈ   rÆ   r­   r\   r.  r,  r_   ra   r¿   r/  r…   Úrer  ÚHEXDIGITr)   r‚   rÉ   rT   r•   rd   r  rb   r-  Úbegin_http_chunk_receivingrc   Úend_http_chunk_receivingre   r]   )rm   r4  r±   r5  ÚrequiredÚ	chunk_lenrÍ   ÚiÚsize_brÑ   ÚsizeÚheads               rP   rÆ   zHttpPayloadParser.feed_data  sG  € ð �:‰:œ×0Ñ0Ò0Ø—|‘|ˆHÜ˜E›
ˆIà˜9Ò$Ø'¨)Ñ3�”Ø—‘×&Ñ& u¨iÔ8Ø—<‘< 1Ò$Ø—L‘L×)Ñ)Ô+Ø$à �”Ø—‘×&Ñ& u¨Y¨hÐ'7¸ÔBØ—‘×%Ñ%Ô'Ø˜U 8 9Ð-Ð-Ð-ðV ðQ �Z‰Zœ:×3Ñ3Ó3Ø×ÒØ×(Ñ(¨5Ñ0�Ø#&�Ô âð —;‘;¤*×"?Ñ"?Ó?ØŸ*™* S›/�CØ˜a“xØ!ŸJ™J y°!°SÓ9˜Ø š6Ø%*¨2¨A Y™Fà%*¨4¨C [˜FàŸ9š9Ø%+§\¡\£^˜Fä!Ÿ|™|¬H°fÔ=Ü"7Ø % d s × 2Ñ 2°7Ð<MÓ Nó#˜Cð !ŸL™L×6Ñ6°sÔ;Ø"%˜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˜ØŸ9š9¨×)9Ñ)9¸%Ô)@Ø$)¨!¨" I˜EÜ&0×&HÑ&H˜œØŸ™×=Ñ=Ô?ð —;‘;¤*×"DÑ"DÒDØ˜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˜Ô(Ø)ó{ ðF ð �Z‰Zœ:×5Ñ5Ò5Ø�L‰L×"Ñ" 5¬#¨e«*Ô5àrO   )	NFNNNFTTF©rj   N)r6   ó   ;)rH   rI   rJ   r.   r   rT   rM   rK   rn   r­   r•   rø   r   rÆ   rN   rO   rP   rÃ   rÃ   Ì  sà   „ ð !%ØØ%)Ø"Ø $ØØ#'Ø $Øñ8$àð8$ð ˜‘ð8$ð ð	8$ð
 ˜c‘]ð8$ð �s‰mð8$ð ˜‘ð8$ð ð8$ð !ð8$ð ð8$ð ð8$ð 
ó8$ót
ð EIñ}Øð}Ø!%ð}Ø<Að}à	ˆt�Uˆ{Ñ	ô}rO   rÃ   c                   ór   — e Zd ZU dZeed<   dedee   ddfd„Z	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)r0  zDDeflateStream decompress stream and feed data into specified stream.ÚdecompressorÚoutrê   rj   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ê   )	rG  rA  rê   Ú_started_decodingr   r$   r   rF  r   )rm   rG  rê   s      rP   rn   zDeflateBuffer.__init__˜  sY   € ØˆŒØˆŒ	Ø ˆŒØ!&ˆÔáØ�tÒÝÜ*ð.óð ô !3Ó 4ˆDÕä 0¸(Ô CˆDÕrO   rÑ   c                 ó:   — | j                   j                  |«       y rl   )rG  rÉ   )rm   rÑ   s     rP   rÉ   zDeflateBuffer.set_exception©  s   € Ø�‰×Ñ˜sÕ#rO   r4  rA  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)rA  rI  rê   r   rF  Údecompress_syncr®   r$   rG  rÆ   r|   )rm   r4  rA  s      rP   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Ú   )
rF  ÚflushrA  rG  rÆ   r|   rê   rÐ   r$   r­   )rm   r4  s     rP   r­   zDeflateBuffer.feed_eofÌ  sp   € Ø×!Ñ!×'Ñ'Ó)ˆá�D—I‘I ’MØ�H‰H×Ñ˜u¤c¨%£jÔ1Ø�}‰} 	Ò)°$×2CÑ2C×2GÒ2GÜ*¨9Ó5Ð5à�‰×ÑÕrO   c                 ó8   — | j                   j                  «        y rl   )rG  r;  r¯   s    rP   r;  z(DeflateBuffer.begin_http_chunk_receivingÖ  s   € Ø�‰×+Ñ+Õ-rO   c                 ó8   — | j                   j                  «        y rl   )rG  r<  r¯   s    rP   r<  z&DeflateBuffer.end_http_chunk_receivingÙ  s   € Ø�‰×)Ñ)Õ+rO   rC  )rH   rI   rJ   r  r   rL   r.   r   rK   rn   rÇ   rÉ   r•   rT   rÆ   r­   r;  r<  rN   rO   rP   r0  r0  “  sj   … ÙNàÓðD˜Lð D°H¸S±Mð DÀdó Dð"$ ð $°4ó $ð2˜uð 2¨Cð 2°Dó 2ó@ó.ô,rO   r0  )r2   r3   r4   r5   )arö   rô   r9  Ú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!   Úhttp_exceptionsr"   r#   r$   r%   r&   r'   r(   r)   Úhttp_writerr*   r+   Úlogr,   Ústreamsr-   r.   Útypedefsr/   Ú__all__rø   ÚsetÚ	printabler8   rK   rL   Úcompiler9   r:   r;   r•   r:  r4   r5   rU   rW   r_   r0   ÚABCr1   r2   r3   rÃ   r0  ÚHttpRequestParserPyÚHttpResponseParserPyÚRawRequestMessagePyÚRawResponseMessagePyÚ_http_parserÚHttpRequestParserCÚHttpResponseParserCÚRawRequestMessageCÚRawResponseMessageCÚImportErrorrN   rO   rP   ú<module>rq     s  ðÜ 
Û Û 	Û Ý Ý ÷÷ ÷ ÷ ÷" :Ñ 9Ý å Ý 'ß OÑ O÷õ ÷	÷ 	ó 	÷ 4Ý  ß 0Ý  ð€ð ˆ~Ñ€á × 0Ñ 0Ó1€ˆ%��C‘‰/Ó 1ð )˜bŸj™jÐ)HÓI€ˆˆg�c‰lÑÓ IØ(˜bŸj™jÐ):Ó;€ˆˆg�c‰lÑÓ ;Ø)˜rŸz™zØ2ó €€uˆW�U‰^Ñó ð ˆ2�:‰:Ð&Ó'€ô
˜
ô 
ô	˜ô 	ñ 	�Ð*Ð,>Ó?€ô�ô ô�ô ÷c?ñ c?ôL}�—‘˜' %™.ô }ô@
[
˜
Ð#4Ñ5ô [
ô|I
˜Ð$6Ñ7ô I
÷XDñ D÷NG,ñ G,ðT (Ð Ø)Ð Ø'Ð Ø)Ð ð	Ù÷	
ó 	
ð /ÐØ0ÐØ.ÐØ0Ñð øð ò 	Ùð	ús   ÇG ÇG!Ç G!