Ë
    rPêj³Â  ã                   ó<  — U 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 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 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 m!Z!m"Z" ddl#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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 ddl6m7Z7m8Z8m9Z9 ddl:m;Z;m<Z< ddl=m>Z> erddl?m@Z@ dZAed   ZB eCejˆ                  «      ZEeeCeF      eGd<    ej�                  d«      ZIeeF   eGd<    ej”                  deI› d�«      ZKee	eF      eGd<    ej”                  dej˜                  «      ZMee	eF      eGd<    ej”                  dej˜                  «      ZNee	eF      eGd<    ej”                  d«      ZOee	eP      eGd<    ej”                  d «      ZQee	eF      eGd!<    ej”                  d"«      ZRee	eF      eGd#<   d$eFd%eSfd&„ZT eUh d'£«      ZVeeUeF      eGd(<    G d)„ d*e«      ZW G d+„ d,e«      ZX ed-eWeX«      ZY G d.„ d/e«      ZZ G d0„ d1e«      Z[ G d2„ d3e«      Z\ G d4„ d5«      Z]d6eeF   d%eSfd7„Z^ G d8„ d9e j¾                  eeY   «      Z` G d:„ d;e`eW   «      Za G d<„ d=e`eX   «      Zb G d>„ d?«      Zc G d@„ dA«      ZdeaZeebZfeWZgeXZh	 e)sddBlimaZambZbmWZWmXZX eaZjebZkeWZleXZmyy# en$ r Y yw xY w)Cé    N)Úsuppress)ÚIntEnum)ÚPattern)ÚTYPE_CHECKINGÚAnyÚClassVarÚFinalÚGenericÚLiteralÚ
NamedTupleÚTypeVar)ÚCIMultiDictÚCIMultiDictProxyÚistr)ÚURLé   )Úhdrs)ÚBaseProtocol)Ú
HAS_BROTLIÚHAS_ZSTDÚBrotliDecompressorÚZLibDecompressorÚZSTDDecompressor)Ú_EXC_SENTINELÚDEBUGÚDEFAULT_CHUNK_SIZEÚEMPTY_BODY_METHODSÚEMPTY_BODY_STATUS_CODESÚNO_EXTENSIONSÚBaseTimerContextÚset_exception)	ÚBadHttpMessageÚBadHttpMethodÚBadStatusLineÚContentEncodingErrorÚContentLengthErrorÚInvalidHeaderÚInvalidURLErrorÚLineTooLongÚTransferEncodingError)ÚHttpVersionÚHttpVersion10ÚHttpVersion11)ÚEMPTY_PAYLOADÚStreamReader)Ú
RawHeaders)ÚResponseHandler)ÚHeadersParserÚ
HttpParserÚHttpRequestParserÚHttpResponseParserÚRawRequestMessageÚRawResponseMessage)ó   
ó   
ÚASCIISETz!#$%&'*+-.^_`|~Ú_TCHAR_SPECIALSz
[0-9A-Za-zz]+ÚTOKENREzHTTP/(\d)\.(\d)ÚVERSREz\d+ÚDIGITSs   [0-9a-fA-F]+Ú	HEXDIGITSz[\x00-\x08\x0a-\x1f\x7f]Ú_FIELD_VALUE_FORBIDDEN_CTL_REz[\x00-\x1f\x7f]Ú_TARGET_FORBIDDEN_CTL_REÚtargetÚreturnc                 óL   — | j                  d«      d   }|dd dk(  xr |dd dvS )a  Tell if an absolute-form request target has "//" and a non-empty authority.

    RFC 9110 section 4.2 requires a host for http and https. yarl's default
    WHATWG mode reads a host from "http:host/p" or "http:///host/p", so the
    target is checked before it is parsed.
    ú:é   Nz//é   )Ú ú/ú?ú#)Ú	partition)rB   Úrests     úX/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/aiohttp/http_parser.pyÚ_has_authorityrO   \   s;   € ð ×Ñ˜CÓ  Ñ#€DØ��ˆ8�tÑÒD  Q q 	Ð1DÐ DÐDó    >
   ú
user-agentúcontent-typeúmax-forwardsúcontent-rangeúcontent-lengthúcontent-locationútransfer-encodingÚetagÚhostÚserverÚSINGLETON_HEADERSc                   ó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dz  ed	<   eed
<   eed<   eed<   y)r6   ÚmethodÚpathÚversionúCIMultiDictProxy[str]ÚheadersÚraw_headersÚshould_closeNÚcompressionÚupgradeÚchunkedÚurl)	Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__r+   r0   Úboolr   © rP   rN   r6   r6   |   s=   … ØƒKØ
ƒIØÓØ$Ó$ØÓØÓØ�t‘ÓØƒMØƒMØ	„HrP   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dz  ed<   e	ed	<   e	ed
<   y)r7   r_   ÚcodeÚreasonra   rb   rc   Nrd   re   rf   )
rh   ri   rj   r+   rl   Úintrk   r   r0   rm   rn   rP   rN   r7   r7   ‰   s=   … ØÓØ
ƒIØƒKØ˜cÑ"Ó"ØÓØÓØ�t‘ÓØƒMØ„MrP   r7   Ú_MsgTc                   ó   — e Zd ZdZdZdZy)ÚPayloadStater   r   rF   N)rh   ri   rj   ÚPAYLOAD_COMPLETEÚPAYLOAD_NEEDS_INPUTÚPAYLOAD_HAS_PENDING_INPUTrn   rP   rN   ru   ru   ˜   s   „ ØÐØÐØ !ÑrP   ru   c                   ó   — e Zd ZdZdZdZdZy)Ú
ParseStater   r   rF   rG   N)rh   ri   rj   Ú
PARSE_NONEÚPARSE_LENGTHÚPARSE_CHUNKEDÚPARSE_UNTIL_EOFrn   rP   rN   rz   rz   ž   s   „ à€JØ€LØ€MØ�OrP   rz   c                   ó    — e Zd ZdZdZdZdZdZy)Ú
ChunkStater   r   rF   rG   é   N)rh   ri   rj   ÚPARSE_CHUNKED_SIZEÚPARSE_CHUNKED_CHUNKÚPARSE_CHUNKED_CHUNK_EOFÚPARSE_MAYBE_TRAILERSÚPARSE_TRAILERSrn   rP   rN   r€   r€   ¦   s   „ ØÐØÐØÐØÐØ�NrP   r€   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ÚlaxrC   Nc                 ó<   — || _         || _        || _        || _        y ©N)rˆ   r‰   rŠ   Ú_lax)Úselfrˆ   r‰   rŠ   r‹   s        rN   Ú__init__zHeadersParser.__init__¯   s#   € ð +ˆÔØ&ˆÔØ,ˆÔØˆ�	rP   Úlinesr`   c                 óÎ  — t        «       }g }d}||   }t        |«      }|�r	 |j                  dd«      \  }}t        |«      dk(  rt	        |«      ‚|d   |d   hddhz  rt	        |«      ‚|j                  d«      }|j                  dd	«      }	t        j                  |	«      st	        |«      ‚|dz  }||   }| j                  xr |xr |d   d
v }
|
r¡t        |«      }|g}|
r€|t        |«      z  }|| j                  kD  r3|dz   dj                  |«      z   }t        |d d dz   | j                  «      ‚|j                  |«       |dz  }||k  r||   }|r|d   d
v }
nd}n|
rŒ€dj                  |«      }|j                  d«      }|j                  dd	«      }| j                  rd|v sd|v sd|v r+t	        |«      ‚t        j!                  |«      rt	        |«      ‚| j                  s)|	|v r%|	j#                  «       t$        v rt'        d|	› d�«      ‚|j)                  |	|«       |j                  ||f«       |r�Œt+        |«      t-        |«      fS # t        $ r t	        |«      d ‚w xY w)Nr   ó   :r   éÿÿÿÿé    é	   s    	úutf-8Úsurrogateescape)r•   r–   s   : rP   éd   ó   ...ú
úú zDuplicate 'z' header found.)r   ÚlenÚsplitÚ
ValueErrorr'   ÚlstripÚdecoder<   Ú	fullmatchrŽ   rŠ   Újoinr)   ÚappendÚstripr@   ÚsearchÚlowerr[   r"   Úaddr   Útuple)r�   r‘   ra   rb   Ú	lines_idxÚlineÚ
line_countÚbnameÚbvalueÚnameÚcontinuationÚheader_lengthÚ
bvalue_lstÚheader_lineÚvalues                  rN   Úparse_headerszHeadersParser.parse_headers»   s¢  € ô %0£Mˆàˆàˆ	Ø�YÑˆÜ˜“Zˆ
âð4Ø $§
¡
¨4°Ó 3‘��vô �5‹z˜QŠÜ# EÓ*Ð*ð �a‘˜% ™)Ð$¨¨A wÒ.Ü# DÓ)Ð)à—]‘] 6Ó*ˆFØ—<‘< Ð):Ó;ˆDÜ×$Ñ$ TÔ*Ü# EÓ*Ð*ð ˜‰NˆIØ˜Ñ#ˆDð  Ÿ9™9ÒD¨ÒD°$°q±'¸WÐ2DˆLñ Ü # F£�Ø$˜X�
Ù"Ø!¤S¨£YÑ.�MØ$ t×':Ñ':Ò:Ø&+¨e¡m°c·h±h¸zÓ6JÑ&J˜Ü)Ø'¨¨Ð-°Ñ6¸×8KÑ8Kóð ð ×%Ñ% dÔ+ð  ‘N�IØ  :Ò-Ø$ YÑ/˜ÙØ+/°©7°gÐ+=™Là"˜Øò# #ð$ Ÿ™ *Ó-�à—\‘\ &Ó)ˆFØ—M‘M 'Ð+<Ó=ˆEð �yŠyØ˜5‘= D¨E¡M°V¸u±_Ü'¨Ó/Ð/Ü.×5Ñ5°eÔ<Ü# FÓ+Ð+à—9’9 ¨¡°T·Z±Z³\ÔEVÑ5VÜ$ {°4°&¸Ð%HÓIÐIØ�K‰K˜˜eÔ$Ø×Ñ  v˜Ô/ó ôB ! Ó)¬5°Ó+=Ð>Ð>øô{ ò 4Ü# DÓ)¨tÐ3ð4ús   £I ÉI$)éþ  i €  r·   F)rh   ri   rj   rr   rm   r�   ÚlistÚbytesrª   r0   r¶   rn   rP   rN   r2   r2   ®   sl   „ ð "Ø Ø"Øñ
àð
ð ð
ð ð	
ð
 ð
ð 
ó
ðL?Ø˜%‘[ðL?à	Ð&¨
Ð2Ñ	3ôL?rP   r2   ra   c                 óŠ   — | j                  t        j                  d«      }|j                  «       xr |j	                  «       dv S )z)Check if the upgrade header is supported.rH   >   ÚtcpÚ	websocket)Úgetr   ÚUPGRADEÚisasciir¨   )ra   Úus     rN   Ú_is_supported_upgraderÁ   
  s3   € à�‰”D—L‘L "Ó%€Aà�9‰9‹;Ò<˜1Ÿ7™7›9Ð(<Ð<Ð<rP   c                   ó  — e Zd ZU dZee   ed<   	 	 	 	 	 	 	 	 	 	 	 	 	 	 d(dedz  dej                  dz  de
de
de
d	e
d
edz  de
dz  dedz  dee   dz  d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)d„Zd)d„Zdedz  fd„Zddej6                  ej8                  ej:                  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dz  edz  eef   fd%„Z$d&eddfd'„Z%y)*r3   Fr‹   NÚprotocolÚloopÚlimitrˆ   r‰   rŠ   Útimerrp   r]   Úpayload_exceptionÚresponse_with_bodyÚread_until_eofÚauto_decompressÚmax_msg_queue_sizerC   c                 ó€  — || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _        || _	        || _
        g | _        d| _        d| _        d| _        d | _        d | _        d| _        || _        || _        t)        |||| j*                  «      | _        || _        d| _        y )NrP   Fr   )rÃ   rÄ   rˆ   r‰   rŠ   rÆ   rp   r]   rÇ   rÈ   rÉ   Ú_linesÚ_tailÚ	_upgradedÚ_pending_upgradeÚ_payloadÚ_payload_parserÚ_payload_has_more_dataÚ_auto_decompressÚ_limitr2   r‹   Ú_headers_parserÚ_max_msg_queue_sizeÚ_msg_in_flight)r�   rÃ   rÄ   rÅ   rˆ   r‰   rŠ   rÆ   rp   r]   rÇ   rÈ   rÉ   rÊ   rË   s                  rN   r�   zHttpParser.__init__  sÎ   € ð" !ˆŒØˆŒ	Ø*ˆÔØ&ˆÔØ,ˆÔØ&ˆÔØˆŒ
ØˆŒ	ØˆŒØ!2ˆÔØ"4ˆÔØ,ˆÔà#%ˆŒØˆŒ
ØˆŒØ %ˆÔØˆŒØ9=ˆÔØ&+ˆÔ#Ø /ˆÔØˆŒÜ,Ø˜;¨¸¿¹ó 
ˆÔð $6ˆÔ ØˆÕrP   r‘   c                  ó   — y r�   rn   )r�   r‘   s     rN   Úparse_messagezHttpParser.parse_messageB  s   € Ø:=rP   Útec                  ó   — y r�   rn   ©r�   rÛ   s     rN   Ú_is_chunked_tezHttpParser._is_chunked_teE  s   € Ø/2rP   c                 óT   — | j                   €J ‚| j                   j                  «        y r�   )rÒ   Úpause_reading©r�   s    rN   rà   zHttpParser.pause_readingH  s&   € Ø×#Ñ#Ð/Ð/Ð/Ø×Ñ×*Ñ*Õ,rP   c                 óN   — | j                   dkD  r| xj                   dz  c_         yy)z;Protocol drained a queued message; free a slot for parsing.r   r   N)rØ   rá   s    rN   Úmessage_consumedzHttpParser.message_consumedL  s&   € à×Ñ Ò"Ø×Ò 1Ñ$Öð #rP   c                 óà  — | j                   �8| j                   j                  «        | j                   j                  r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)Nr”   z
rP   )	rÒ   Úfeed_eofÚdonerÎ   rÍ   r¥   r   Ú	ExceptionrÚ   rá   s    rN   rå   zHttpParser.feed_eofQ  s¹   € Ø×ÑÐ+Ø× Ñ ×)Ñ)Ô+Ø×#Ñ#×(Ò(Ø'+�Ô$ð ð �zŠzØ—‘×"Ñ" 4§:¡:Ô.à�{Š{Ø—;‘;˜r‘? fÒ,Ø—K‘K×&Ñ& sÔ+ÜœiÓ(ñ ;Ø×-Ñ-¨d¯k©kÓ:÷;ñ ;à÷;àús   Â>C$Ã$C-r8   rP   ÚdataÚSEPÚEMPTYÚCONTENT_LENGTHÚMETH_CONNECTÚSEC_WEBSOCKET_KEY1c                 óæ  ‡‡— g }| j                   r| j                   |z   dc}| _         t        |«      }d}	| j                  }
| j                  }d}|	|k  s| j                  �rL| j
                  �€k| j                  �s^| j                  r'| j                  | j                  k\  r||	d  | _         |}�nÿ|j                  ||	«      }||	k(  r| j                  s|t        |«      z   }	Œ‘||	k\  �r…|rt        d«      ‚||	| }|dk(  r|j                  d«      }t        |«      |kD  rt        |d d dz   |«      ‚| j                  j                  |«       | j                  }t        | j                  «      | j                   kD  rt        d	«      ‚|t        |«      z   }	| j                  d
   |k(  �rõ| j                   t        | j                  «      z
  }	 | j#                  | j                  «      Š| j                  j%                  «        dt&        d z  fˆˆfd„} |«       }|‰j(                  v rt+        |«      ‚‰j,                  xr t/        ‰j(                  «      }t1        ‰d| j2                  «      }t1        ‰dd«      }| j4                  €J ‚|t6        v xs) t9        | j2                  xr | j2                  t:        v «      }|sÚ|�|dkD  s‰j<                  rÇt?        | j4                  | j@                  |
| jB                  ¬«      }tE        ||‰j<                  |‰jF                  | jH                  | jJ                  | jL                  | jN                  | jP                  | j                  | j                  || jB                  ¬«      }|jR                  �sª|| _        || _*        �nš||k(  r±tW        ‰tX        «      sJ ‚t?        | j4                  | j@                  |
| jB                  ¬«      }d| _        tE        |‰j2                  ‰jF                  | jL                  | jN                  | jP                  | j                  | j                  || jB                  ¬«
      | _        nä|sÌ|€Ê| jZ                  r¾t?        | j4                  | j@                  |
| jB                  ¬«      }tE        ||‰j<                  |‰jF                  | jH                  | jJ                  | jL                  | jN                  | jP                  | j                  | j                  || jB                  ¬«      }|jR                  s|| _        n|rd| _        t\        }nt\        }|j                  ‰|f«       | j                  r| xj                  dz  c_        ‰j^                  }�n-||	d  | _         d| j                   v rt        d«      ‚t        | j                   «      | j                  kD  r&t        | j                   d d dz   | j                  «      ‚|}nÔ| j
                  €| j                  r| j                  rJ ‚n­| j                  rJ ‚| j
                  €J ‚	 | j
                  ja                  ||	d  |«      \  }}|tl        jr                  k(  | _        |tl        jn                  urnCd}	t        |«      }d | _        | jT                  rd| _        d| _*        |	|k  r�Œ>| j                  r�ŒL|r|	|k  r||	d  }n|}|| j                  |fS # | j                  j%                  «        w xY w# tb        $ r}}|}| jd                  �| je                  tg        |«      «      }ti        | j
                  jj                  ||«       tl        jn                  }d}tW        |t*        tp        f«      r‚ Y d }~�Œ,d }~ww xY w)NrP   r   FzData after `Connection: close`r9   ó   r™   rš   zToo many headers receivedr”   rC   c                  ó–   •— ‰j                   j                  ‰«      } | €y t        j                  | «      st	        ‰«      ‚t        | «      S r�   )ra   r½   r>   r£   r'   rr   )Ú
length_hdrrë   Úmsgs    €€rN   Úget_content_lengthz0HttpParser.feed_data.<locals>.get_content_length¨  sC   ø€ à),¯©¯©¸Ó)H˜JØ)Ð1Ø'+ô
 $*×#3Ñ#3°JÔ#?Ü&3°NÓ&CÐ Cä#& z£?Ð2rP   r]   rp   )rÆ   rÄ   rÅ   )Úlengthrf   r]   rd   rp   rÈ   rÊ   r‹   Úheaders_parserrˆ   rŠ   Úmax_trailersrÅ   T)	r]   rd   rÊ   r‹   rõ   rˆ   rŠ   rö   rÅ   r   zBad line ending, expected CRLF):rÎ   rž   rÄ   rˆ   rÓ   rÒ   rÏ   r×   rØ   ÚfindrÍ   r"   Úrstripr)   r¥   rŠ   r‰   rÚ   Úclearrr   ra   r'   re   rÁ   Úgetattrr]   rÃ   r   rm   r   rf   r/   rÆ   rÕ   ÚHttpPayloadParserrd   rp   rÈ   rÔ   r‹   rÖ   ræ   rÐ   Ú
isinstancer6   rÉ   r.   rc   Ú	feed_datarç   rÇ   rk   r!   Úpayloadru   rv   r*   rx   )r�   rè   ré   rê   rë   rì   rí   ÚmessagesÚdata_lenÚ	start_posrÄ   Úmax_line_lengthrc   Úposr¬   rö   ró   rô   Úupgradedr]   rp   Ú
empty_bodyrþ   Úpayload_parserÚpayload_stateÚunderlying_excÚreraised_excrò   s       `                      @rN   rý   zHttpParser.feed_datab  sÞ  ù€ ð ˆà�:Š:Ø#Ÿz™z¨DÑ0°#ÐˆD�$”*ä�t“9ˆØˆ	Ø�y‰yˆØ×,Ñ,ˆàˆØ˜(Ò" d×&AÓ&Að ×#Ñ#Ñ+°D·N³Nà×,Ò,Ø×+Ñ+¨t×/GÑ/GÒGð
 "& i jÐ!1�D”Jà �DÙØ—i‘i  YÓ/�à˜)Ò#¨D¯KªKØ #¤c¨#£h¡�IØà˜)Ó#Ù#Ü,Ð-MÓNÐNð   	¨#Ð.�DØ˜e’|Ø#Ÿ{™{¨5Ó1˜Ü˜4“y ?Ò2Ü)¨$¨t°¨*°vÑ*=¸ÓOÐOà—K‘K×&Ñ& tÔ,à&*×&9Ñ&9�Oä˜4Ÿ;™;Ó'¨$×*:Ñ*:Ò:Ü,Ð-HÓIÐIà #¤c¨#£h¡�Ið —{‘{ 2‘¨%Ó/Ø'+×'7Ñ'7¼#¸d¿k¹kÓ:JÑ'J˜ð0Ø)-×);Ñ);¸D¿K¹KÓ)H˜Cà ŸK™K×-Ñ-Ô/ð3´C¸$±Jö 3ñ "4Ó!5˜à-°·±Ñ<Ü"/Ð0BÓ"CÐCà#&§;¡;Ò#UÔ3HÈÏÉÓ3U˜ä!(¨¨h¸¿¹Ó!D˜ä& s¨F°AÓ6˜à#Ÿ}™}Ð8Ð8Ð8ð &*Ô-DÐ%Dò &ÌØ ŸK™KÒM¨D¯K©KÔ;MÐ,MóI˜
ñ  *Ø#Ð/°F¸Q²JÀ3Ç;Â;ä&2Ø $§¡Ø&*§j¡jØ%)Ø&*§k¡kô	'˜Gô .?Ø 'Ø'-Ø(+¯©Ø'-Ø,/¯O©OØ%)§Y¡YØ37×3JÑ3JØ04×0EÑ0EØ$(§H¡HØ/3×/CÑ/CØ.2×.@Ñ.@Ø/3×/BÑ/BØ-9Ø&*§k¡kô.˜Nð  $2×#6Ó#6Ø7E Ô 4ð 9A Ö 5Ø# |Ò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Ø/3×/CÑ/CØ.2×.@Ñ.@Ø/3×/BÑ/BØ-9Ø&*§k¡kô4˜DÕ0ñ ",°°À4×CVÒCVÜ&2Ø $§¡Ø&*§j¡jØ%)Ø&*§k¡kô	'˜Gô .?Ø 'Ø'-Ø(+¯©Ø'-Ø,/¯O©OØ%)§Y¡YØ37×3JÑ3JØ04×0EÑ0EØ$(§H¡HØ/3×/CÑ/CØ.2×.@Ñ.@Ø/3×/BÑ/BØ-9Ø&*§k¡kô.˜Nð  $2×#6Ò#6Ø7E Õ 4Ù%ð .2˜DœNÜ&3™Gä&3˜Gà Ÿ™¨¨g¨Ô7Ø×3Ò3Ø ×/Ò/°1Ñ4Õ/Ø'*×'7Ñ'7šà!% i jÐ!1�D”Jð  §
¡
Ñ*Ü,Ð-MÓNÐNÜ˜4Ÿ:™:“¨×);Ñ);Ò;Ü)¨$¯*©*°T°cÐ*:¸VÑ*CÀT×EWÑEWÓXÐXØ �DØð ×%Ñ%Ð-°$·.².ØŸ;š;Ð&�Øð  Ÿ;š;Ð&�Ø×+Ñ+Ð7Ð7Ð7ðØ*.×*>Ñ*>×*HÑ*HØ˜Y˜ZÐ(¨#ó+Ñ'�M 4ð, "¤\×%KÑ%KÑKð Ô+ð !¬×(EÑ(EÑEð à�	Ü˜t›9�Ø'+�Ô$Ø×(Ò(ð &*�D”NØ,1�DÔ)ðO ˜(Ô" d×&AÔ&AñR �I Ò(Ø˜	˜
Ð#‰DàˆDà˜Ÿ™¨Ð-Ð-øð !ŸK™K×-Ñ-Õ/ûôl !ò Ø2@�LØ×-Ñ-Ð9Ø'+×'=Ñ'=¼cÀ.Ó>QÓ'R˜ä!Ø×,Ñ,×4Ñ4Ø$Ø&ôô %1×$AÑ$A�MØ�DÜ!Ø&¬Ô8MÐ(Nôð õûðús%   Ç[ Ø"[* Û['Û*	]0Û3A2]+Ý+]0r`   c                 óÜ  — | j                   j                  |«      \  }}d}d}d}d}|j                  t        j                  d«      }|r€|D �	�
ch c]A  }	d„ |	j                  d«      D «       D ]$  }
|
r |
j                  «       r|
j                  «       ’Œ& ŒC }}	}
d|v rd}nd|v rd}d	|v r!|j                  t        j                  «      rd}|j                  t        j                  d
«      }|j                  «       r|j                  «       }|dv r|}|j                  t        j                  «      }|�0| j                  |«      rd}t        j                  |v rt        d«      ‚||||||fS c c}
}	w )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.
        NFrn   c              3   ó>   K  — | ]  }|j                  d «      –— Œ y­w)ú 	N)r¦   )Ú.0Úparts     rN   ú	<genexpr>z+HttpParser.parse_headers.<locals>.<genexpr>~  s   è ø€ ÒR°D˜dŸj™j¨×/ÑRùs   ‚ú,ÚcloseTz
keep-alivere   rH   >   ÚbrÚgzipÚzstdÚdeflatez6Transfer-Encoding can't be present with Content-Length)rÖ   r¶   Úgetallr   Ú
CONNECTIONrŸ   r¿   r¨   r½   r¾   ÚCONTENT_ENCODINGÚTRANSFER_ENCODINGrÞ   rë   r"   )r�   r‘   ra   rb   Ú
close_connÚencodingre   rf   Úconn_valuesÚ
conn_valueÚtokenÚconn_tokensÚencrÛ   s                 rN   r¶   zHttpParser.parse_headersg  s|  € ð  $×3Ñ3×AÑAÀ%ÓHÑˆ�Øˆ
ØˆØˆØˆð —n‘n¤T§_¡_°bÓ9ˆÙð #.÷àÙR¸J×<LÑ<LÈSÓ<QÔRòð Ù˜UŸ]™]œ_ð —‘•ðØðˆKñ ð ˜+Ñ%Ø!‘
Ø Ñ,Ø"�
ð ˜KÑ'¨G¯K©K¼¿¹Ô,EØ�ð �k‰kœ$×/Ñ/°Ó4ˆØ�;‰;Œ=Ø—)‘)“+ˆCØÐ7Ñ7Ø�ð �[‰[œ×/Ñ/Ó0ˆØˆ>Ø×"Ñ" 2Ô&Ø�ä×"Ñ" gÑ-Ü$ØLóð ð ˜ j°(¸GÀWÐMÐMùóEs   ÁAE(Úvalc                 ó   — || _         y)zZSet connection upgraded (to websocket) mode.

        :param bool val: new state.
        N)rÏ   )r�   r!  s     rN   Úset_upgradedzHttpParser.set_upgradedŸ  s   € ð
 ˆ�rP   )NNi   r·   é€   r·   NNNNTFTr   ©rC   N)&rh   ri   rj   r‹   r   rm   rl   r   ÚasyncioÚAbstractEventLooprr   r    rk   ÚtypeÚBaseExceptionr�   ÚabcÚabstractmethodr¸   r¹   rs   rÚ   rÞ   rà   rã   rå   r   rë   rì   rí   Ú_SEPr   rª   r/   rý   r0   r¶   r#  rn   rP   rN   r3   r3     s6  … Ø€Cˆ�$‰Óð )-Ø15ØØ!ØØ"Ø)-ØØ!Ø8<Ø#'Ø$Ø $Ø"#ñ, à Ñ%ð, ð ×'Ñ'¨$Ñ.ð, ð ð	, ð
 ð, ð ð, ð ð, ð   $Ñ&ð, ð �D‰jð, ð �d‘
ð, ð   Ñ.°Ñ5ð, ð !ð, ð ð, ð ð, ð  ð, ð  
ó!, ð\ 	×ÑØ= 4¨¡;Ð=°5Ò=ó Ø=à×ÑØ2 Ð2¨Ò2ó Ø2ó-ó%ð
˜% $™,ó ð( ØØ#×2Ñ2Ø ×-Ñ-Ø#'×#:Ñ#:ñC.àðC.ð ðC.ð ð	C.ð
 ðC.ð ðC.ð !ðC.ð 
ˆt�E˜% Ð-Ñ.Ñ/°°uÐ<Ñ	=óC.ðJ6NØ˜%‘[ð6Nà	Ø ¨T°D©[¸#À¹*ÀdÈDÐPñ
ó6Nðp ð ¨ô rP   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.
    r‘   rC   c                 óJ  — |d   j                  dd«      }	 |j                  dd¬«      \  }}}t        j                  |«      st        |«      ‚|j                  «       }t        j                  |«      r*t        |j                  d¬«      j                  d«      «      ‚t        j                  |«      }|€t        |«      ‚t        t        |j                  d	«      «      t        |j                  d«      «      «      }|d
k(  rQ	 t!        j"                  |d¬«      }|j$                  }	|	�€t        |j                  d¬«      j                  d«      «      ‚|j'                  d«      rD|j)                  d«      \  }
}}|
j)                  d«      \  }
}}t!        j"                  |
||d¬«      }n“|dk(  r|dk(  rt!        |d¬«      }n{t+        |«      s*t        |j                  d¬«      j                  d«      «      ‚	 t!        |d¬«      }|j$                  }	|	€*t        |j                  d¬«      j                  d«      «      ‚| j-                  |d	d  «      \  }}}}}}|t.        k(  rt0        j2                  |vrt5        d«      ‚|€|t6        k  rd}nd}t9        ||||||||||«
      S # t        $ r t        |«      d ‚w xY w# t        $ r+ t        |j                  d¬«      j                  d«      «      ‚w xY w# t        $ r+ t        |j                  d¬«      j                  d«      «      ‚w xY w)Nr   r—   r˜   ú rF   ©Úmaxsplit)ÚerrorsÚlatin1r   ÚCONNECTT)Ú	authorityÚencodedrI   rK   rJ   )r^   Úquery_stringÚfragmentr6  Ú*ÚOPTIONS)r6  z!Missing 'Host' header in request.F)r¢   rŸ   r    r#   r<   r£   ÚupperrA   r§   r(   Úencoder=   r$   r+   rr   Úgroupr   ÚbuildÚraw_hostÚ
startswithrL   rO   r¶   r-   r   ÚHOSTr"   r,   r6   )r�   r‘   r¬   r]   r^   r_   ÚmatchÚ	version_org   rY   Ú	path_partÚ_hash_separatorÚurl_fragmentÚ_question_mark_separatorÚqs_partra   rb   r  rd   re   rf   s                        rN   rÚ   zHttpRequestParser.parse_message¯  s:  € à�Q‰x�‰˜wÐ(9Ó:ˆð	0Ø$(§J¡J¨s¸Q JÓ$?Ñ!ˆF�D˜'ô
 × Ñ  Ô(Ü Ó'Ð'Ø—‘“ˆô $×*Ñ*¨4Ô0Ü!Ø—‘Ð#4�Ó5×<Ñ<¸XÓFóð ô
 × Ñ  Ó)ˆØˆ=Ü Ó%Ð%Ü¤ E§K¡K°£NÓ 3´S¸¿¹ÀQ»Ó5HÓIˆ	à�YÒðÜ—i‘i¨$¸Ô=�Ø—|‘|�ð ‰|Ü%Ø—K‘KÐ'8�KÓ9×@Ñ@ÀÓJóð ð �_‰_˜SÔ!ð 8<·~±~ÀcÓ7JÑ4ˆI�¨Ø;D×;NÑ;NÈsÓ;SÑ8ˆIÐ/°ô —)‘)ØØ$Ø%Øô	‰Cð �SŠ[˜V yÒ0ä�d DÔ)‰Cô " $Ô'Ü%Ø—K‘KÐ'8�KÓ9×@Ñ@ÀÓJóð ðÜ˜$¨Ô-�Ø—|‘|�ð ˆ|Ü%Ø—K‘KÐ'8�KÓ9×@Ñ@ÀÓJóð ð ×Ñ˜u Q R˜yÓ)ñ	
ØØØØØØð œÒ%¬$¯)©)¸7Ñ*BÜ Ð!DÓEÐEàˆ=ØœMÒ)Ø‘à�ä ØØØØØØØØØØó
ð 	
øô} ò 	0Ü Ó%¨4Ð/ð	0ûô4 ò ä%Ø—K‘KÐ'8�KÓ9×@Ñ@ÀÓJóð ðûôL ò ä%Ø—K‘KÐ'8�KÓ9×@Ñ@ÀÓJóð ðús#   —J Ä#J7 Ç4K. ÊJ4Ê74K+Ë.4L"rÛ   c                 óª   — |j                  dd¬«      d   j                  d«      }|j                  «       r|j                  «       dk(  ryt	        d«      ‚)	Nr  r   r0  r”   r  rf   Tz'Request has invalid `Transfer-Encoding`)Úrsplitr¦   r¿   r¨   r"   rÝ   s     rN   rÞ   z HttpRequestParser._is_chunked_te  sI   € Ø�Y‰Y�s QˆYÓ'¨Ñ+×1Ñ1°%Ó8ˆà�:‰:Œ<˜BŸH™H›J¨)Ò3ØäÐFÓGÐGrP   N)rh   ri   rj   Ú__doc__r¸   r¹   r6   rÚ   rk   rm   rÞ   rn   rP   rN   r4   r4   §  s9   „ ñðn
 4¨¡;ð n
Ð3Dó n
ð`H ð H¨ô HrP   r4   c                   ó–   ‡ — e Zd ZU dZded<   e Z	 ddededz  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.
    r1   rÃ   Nrè   ré   ÚargsÚkwargsrC   c                 óD   •— |€
t         rdnd}t        ‰| �  ||g|¢­i |¤ŽS )Nr8   r9   )r   Úsuperrý   )r�   rè   ré   rM  rN  Ú	__class__s        €rN   rý   zHttpResponseParser.feed_data4  s/   ø€ ð ˆ;Ý"‘'¨ˆCÜ‰wÑ   sÐ<¨TÒ<°VÑ<Ð<rP   r‘   c                 ó6  — |d   j                  dd«      }	 |j                  d¬«      \  }}	 |j                  d¬«      \  }}t
        j                  |«      }|€t        |«      ‚t        t        |j                  d«      «      t        |j                  d«      «      «      }t        |«      dk7  st        j                  |«      st        |«      ‚t        |«      }| j                  |dd  «      \  }	}
}}}}|€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 �ŒUw xY w)Nr   r—   r˜   r   r0  rH   rF   rG   Tr™   éÈ   >   é0  éÌ   F)r¢   rŸ   r    r$   r¦   r=   r£   r+   rr   r=  rž   r>   r¶   r,   r   rë   r  r7   )r�   r‘   r¬   r_   Ústatusrq   rB  rC  Ústatus_ira   rb   r  rd   re   rf   s                  rN   rÚ   z HttpResponseParser.parse_message?  s®  € Ø�Q‰x�‰˜wÐ(9Ó:ˆð	0Ø"Ÿj™j°!˜jÓ4‰OˆG�Vð	Ø#Ÿ\™\°1˜\Ó5‰NˆF�Fô × Ñ  Ó)ˆØˆ=Ü Ó%Ð%Ü¤ E§K¡K°£NÓ 3´S¸¿¹ÀQ»Ó5HÓIˆ	ô ˆv‹;˜!Ò¤6×#3Ñ#3°FÔ#;Ü Ó%Ð%Ü�v“;ˆð ×Ñ˜u Q R˜yÓ)ñ	
ØØØØØØð ˆ=ØœMÒ)Ø‘à˜Ô& 3Ô&¨(°jÑ*@Ø‘Ü×$Ñ$¨Ñ/´4×3IÑ3IÈWÑ3TØ‘ð �ä!ØØØ�L‰L‹NØØØØØØó

ð 
	
øôU ò 	0Ü Ó%¨4Ð/ð	0ûô
 ò 	Ø—\‘\“^ˆFØ‹Fð	ús   —E  ­E9 Å E6Å9FÆFrÛ   c                 ón   — |j                  dd¬«      d   j                  d«      j                  «       dk(  S )Nr  r   r0  r”   r  rf   )rJ  r¦   r¨   rÝ   s     rN   rÞ   z!HttpResponseParser._is_chunked_tey  s3   € à�y‰y˜ qˆyÓ)¨"Ñ-×3Ñ3°EÓ:×@Ñ@ÓBÀiÑOÐOrP   r�   )rh   ri   rj   rK  rl   r   r‹   r¹   r,  r   rª   r¸   r7   r/   rm   rý   rÚ   rk   rÞ   Ú__classcell__)rQ  s   @rN   r5   r5   (  s¢   ø… ñð  Óð ˆ)€Cð
  ñ	=àð	=ð �D‰[ð	=ð ð		=ð
 ð	=ð 
ˆt�EÐ,¨lÐ:Ñ;Ñ<¸dÀEÐIÑ	Jõ	=ð8
 4¨¡;ð 8
Ð3Eó 8
ðtP ð P¨÷ PrP   r5   c                    ó¼   — e Zd Z	 	 	 	 	 	 	 	 ddddedœdededz  dededz  d	edz  d
edz  dededededededededdfd„Z	dd„Z
dd„Z	 ddedededeeef   fd„Zy)rû   Nr·   r$  )rˆ   rŠ   rö   rÅ   rþ   rô   rf   rd   rp   r]   rÈ   rÊ   r‹   rõ   rˆ   rŠ   rö   rÅ   rC   c
                ó¬  — d| _         d| _        t        j                  | _        t
        j                  | _        d| _        d| _	        || _
        |	| _        |
| _        || _        || _        || _        d| _        g | _        d| _        d| _        |r|r| j                  rt)        |||¬«      }n|}|s4t        j*                  | _        |j-                  «        d| _        || _        y |rt        j.                  | _        || _        y |�It        j0                  | _        || _         || _        | j                   dk(  r|j-                  «        d| _        || _        y )Nr   FrP   )Úmax_decompress_sizeT)Ú_lengthÚ_pausedrz   r~   Ú_typer€   r‚   Ú_chunkÚ_chunk_sizeÚ_chunk_tailrÔ   rŽ   rÖ   Ú_max_line_sizeÚ_max_field_sizeÚ_max_trailersÚ_more_data_availableÚ_trailer_linesræ   Ú_eof_pendingÚDeflateBufferr{   rå   r}   r|   Ú_length_expectedrþ   )r�   rþ   rô   rf   rd   rp   r]   rÈ   rÊ   r‹   rõ   rˆ   rŠ   rö   rÅ   Úreal_payloads                   rN   r�   zHttpPayloadParser.__init__  sD  € ð$ ˆŒØˆŒÜ×/Ñ/ˆŒ
Ü ×3Ñ3ˆŒØˆÔØˆÔØ /ˆÔØˆŒ	Ø-ˆÔØ+ˆÔØ-ˆÔØ)ˆÔØ$)ˆÔ!Ø+-ˆÔØˆŒ	Ø!ˆÔñ ¡+°$×2GÒ2GÜ9FØ˜¸%ô:‰Lð #ˆLñ "ä#×.Ñ.ˆDŒJØ×!Ñ!Ô#ØˆDŒIð $ˆ�ñ Ü#×1Ñ1ˆDŒJð $ˆ�ð ÐÜ#×0Ñ0ˆDŒJØ!ˆDŒLØ$*ˆDÔ!Ø�|‰|˜qÒ Ø×%Ñ%Ô'Ø �”	à#ˆ�rP   c                 ó   — d| _         y )NT)r^  rá   s    rN   rà   zHttpPayloadParser.pause_reading¼  s	   € Øˆ�rP   c                 ó&  — | j                   t        j                  k(  r~d| _        | j                  rB| j
                  rd| _        y | j                  j                  dd«      | _        | j                  rŒB| j                  j                  «        d| _	        d| _        y | j                   t        j                  k(  r±| j                  r5| j                  | j                  z
  }t        d|› d| j                  › d�«      ‚| j                  rB| j
                  rd| _        y | j                  j                  dd«      | _        | j                  rŒB| j                  j                  «        d| _	        y | j                   t        j                  k(  rt        d«      ‚y )	NTFrP   r   z;Not enough data to satisfy content length header (received z of z bytes).z2Not enough data to satisfy transfer length header.)r_  rz   r~   rh  rf  r^  rþ   rý   rå   ræ   r|   r]  rj  r&   r}   r*   )r�   Úreceiveds     rN   rå   zHttpPayloadParser.feed_eof¿  sT  € Ø�:‰:œ×3Ñ3Ò3Ø $ˆDÔØ×+Ò+Ø—<’<Ø#(�D”LØØ,0¯L©L×,BÑ,BÀ3ÈÓ,J�Ô)ð	 ×+Ó+ð
 �L‰L×!Ñ!Ô#ØˆDŒIØ %ˆDÕØ�Z‰Zœ:×2Ñ2Ò2Ø�|Š|Ø×0Ñ0°4·<±<Ñ?�Ü(ð!Ø!) 
¨$¨t×/DÑ/DÐ.EÀXðOóð ð
 ×+Ò+Ø—<’<Ø#(�D”LØØ,0¯L©L×,BÑ,BÀ3ÈÓ,J�Ô)ð	 ×+Ó+ð
 �L‰L×!Ñ!Ô#ØˆD�IØ�Z‰Zœ:×3Ñ3Ò3Ü'ØDóð ð 4rP   Úchunkré   Ú	CHUNK_EXTc                 óH  — | j                   t        j                  k(  �r| j                  r| j                  |z   }d| _        | j                  }t        |t        |«      z
  d«      | _        | j                  j                  |d| |«      | _	        | j                  r]| j                  r#d| _
        ||d | _        t        j                  dfS | j                  j                  dd«      | _	        | j                  rŒ]| j                  dk(  �rl| j                  j                  «        t        j                  ||d fS | j                   t        j                  k(  �r3| j                  rœ| j                   t"        j$                  k7  ri| j&                  }| j                   t"        j(                  k(  r| j*                  }t        | j                  «      |kD  rt-        | j                  dd dz   |«      ‚| j                  |z   }d| _        |s| j                  �rh| j                   t"        j.                  k(  �rÙ|j1                  |«      }|dk\  �r‚|| j&                  kD  rt-        |dd dz   | j&                  «      ‚|j1                  |d|«      }|dk\  r4|d| }d||| x}	v r+t3        d|	›�«      }
t5        | j                  |
«       |
‚|d| }| j6                  r|j9                  «       }t;        j<                  t>        |«      s6t3        |d| jA                  d	d
«      «      }
t5        | j                  |
«       |
‚tC        tE        |«      d«      }||t        |«      z   d }|dk(  r8t"        j(                  | _        | j6                  rŽ|jG                  d«      r}|dd }nwt"        j$                  | _        || _$        | j                  jK                  «        n@d|v r#t3        d«      }
t5        | j                  |
«       |
‚|| _        t        jL                  dfS | j                   t"        j$                  k(  rà| j                  r d| _
        || _        t        j                  dfS | jH                  }t        |t        |«      z
  d«      | _$        | j                  j                  |d| |«      | _	        ||d }| j                  r�Œ¯| jH                  rd| _
        t        jL                  dfS t"        jN                  | _        | j                  jQ                  «        | j                   t"        jN                  k(  r»| j6                  r|jG                  d«      r|dd }|dt        |«       |k(  r$|t        |«      d }t"        j.                  | _        ndt        |«      t        |«      k\  s||dt        |«       k7  r#t3        d«      }
t5        | j                  |
«       |
‚|| _        t        jL                  dfS | j                   t"        j(                  k(  �r|j1                  |«      }|dk  r@d|v r#t3        d«      }
t5        | j                  |
«       |
‚|| _        t        jL                  dfS |d| }||t        |«      z   d }|dk(  r|jS                  d«      }t        |«      | j*                  kD  rt-        |dd dz   | j*                  «      ‚| jT                  jW                  |«       t        | jT                  «      | jX                  kD  rt[        d«      ‚| jT                  d   dk(  ro	 | j\                  j_                  | jT                  «      \  }}| jT                  ja                  «        | j                  j                  «        t        j                  |fS |r�Œm| j                  r�Œ{nì| j                   t        jb                  k(  rÏ| j                  j                  |t        |«      «      | _	        | j                  rS| j                  rd| _
        t        j                  dfS | j                  j                  dd«      | _	        | j                  rŒS| jd                  r:| j                  j                  «        d| _3        d| _2        t        j                  dfS t        jL                  dfS # | jT                  ja                  «        w xY w)aÇ  Receive a chunk of data to process.

        Return:
            PayloadState - The current state of payload processing.
                           This function may be called with empty bytes after returning
                           PAYLOAD_HAS_PENDING_INPUT to continue processing after a pause.
            bytes - If payload is complete, this is the unconsumed bytes intended for the
                    next message/payload, b"" otherwise.
        rP   r   NFr™   rš   r9   z"Unexpected LF in chunk-extension: Úasciir˜   é   rï   r   z)Bad chunk-size line ending, expected CRLFz3Chunk size mismatch: expected CRLF after chunk dataz&Bad trailer line ending, expected CRLFzToo many trailers receivedr”   T)4r_  rz   r|   rb  r]  Úmaxrž   rþ   rý   rf  r^  ru   rx   rå   rv   r}   r`  r€   rƒ   rc  r†   rd  r)   r‚   r÷   r*   r!   rŽ   r¦   Úrer£   r?   r¢   rr   r¹   r@  ra  Úbegin_http_chunk_receivingrw   r„   Úend_http_chunk_receivingrø   rg  r¥   re  r"   rÖ   r¶   rù   r~   rh  ræ   )r�   ro  ré   rp  Úrequiredr  r  ÚiÚsize_bÚextÚexcÚsizer¬   ÚtrailersÚraw_trailerss                  rN   rý   zHttpPayloadParser.feed_dataÞ  s’  € ð �:‰:œ×0Ñ0Ó0Ø×ÒØ×(Ñ(¨5Ñ0�Ø#&�Ô à—|‘|ˆHÜ˜x¬#¨e«*Ñ4°aÓ8ˆDŒLØ(,¯©×(>Ñ(>Ø�i�xÐ  (ó)ˆDÔ%ð ×+Ò+Ø—<’<Ø#(�D”LØ',¨X¨YÐ'7�DÔ$Ü'×AÑAÀ3ÐFÐFØ,0¯L©L×,BÑ,BÀ3ÈÓ,J�Ô)ð ×+Ó+ð �|‰|˜qÓ Ø—‘×%Ñ%Ô'Ü#×4Ñ4°e¸H¸IÐ6FÐFÐFà�Z‰Zœ:×3Ñ3Ó3Ø×Òà—;‘;¤*×"@Ñ"@Ò@Ø&*×&9Ñ&9�OØ—{‘{¤j×&?Ñ&?Ò?Ø*.×*>Ñ*>˜Ü˜4×+Ñ+Ó,¨Ò>Ü)Ø ×,Ñ,¨T¨cÐ2°VÑ;¸_óð ð ×(Ñ(¨5Ñ0�Ø#&�Ô á˜4×4Ó4à—;‘;¤*×"?Ñ"?Ó?ØŸ*™* S›/�CØ˜a“xð  ×!4Ñ!4Ò4Ü"-¨e°D°S¨k¸FÑ.BÀD×DWÑDWÓ"XÐXØ!ŸJ™J y°!°SÓ9˜Ø š6Ø%*¨2¨A Y˜Fà$°°a¸°Ð)<¨Ñ=Ü&;Ø&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×*CÑ*C˜DœKØ#Ÿyšy¨U×-=Ñ-=¸eÔ-DØ(-¨a¨b¨	¡ä*4×*HÑ*H˜DœKØ/3˜DÔ,Ø ŸL™L×CÑCÕEà  E™>Ü"7Ø Kó#˜Cô *¨$¯,©,¸Ô<Ø"%˜IØ+0˜Ô(Ü+×?Ñ?ÀÐDÐDð —;‘;¤*×"@Ñ"@Ò@Ø—|’|Ø',˜œØ+0˜Ô(Ü+×EÑEÀsÐJÐJà#×/Ñ/�HÜ'*¨8´c¸%³jÑ+@À!Ó'D�DÔ$Ø04·±×0FÑ0FØ˜i˜xÐ(¨(ó1�DÔ-ð " ( )Ð,�Eà×0Ò0Ù à×'Ò'Ø',˜œÜ+×?Ñ?ÀÐDÐDÜ",×"DÑ"D�D”KØ—L‘L×9Ñ9Ô;ð —;‘;¤*×"DÑ"DÒDØ—y’y U×%5Ñ%5°eÔ%<Ø % a b 	˜Ø˜Zœs 3›xÐ(¨CÒ/Ø %¤c¨#£h jÐ 1˜Ü&0×&CÑ&C˜�Ü˜U›¤s¨3£xÒ/°5¸CÀÄ#ÀeÃ*Ð<MÒ3MÜ3ØQó˜ô & d§l¡l°CÔ8Ø!˜	à+0˜Ô(Ü+×?Ñ?ÀÐDÐDà—;‘;¤*×";Ñ";Ó;ØŸ*™* S›/�CØ˜Q’wØ  E™>Ü"7Ø Hó#˜Cô *¨$¯,©,¸Ô<Ø"%˜IØ+0˜Ô(Ü+×?Ñ?ÀÐDÐDà   #˜;�DØ! #¬¨C«¡.Ð"2Ð3�EØ˜e’|Ø#Ÿ{™{¨5Ó1˜ä˜4“y 4×#7Ñ#7Ò7Ü)¨$¨t°¨*°vÑ*=¸t×?SÑ?SÓTÐTà×'Ñ'×.Ñ.¨tÔ4ä˜4×.Ñ.Ó/°$×2DÑ2DÒDÜ,Ð-IÓJÐJð ×*Ñ*¨2Ñ.°#Ò5ð8Ø59×5IÑ5I×5WÑ5WØ $× 3Ñ 3ó6Ñ2˜H lð !×/Ñ/×5Ñ5Ô7ØŸ™×-Ñ-Ô/Ü+×<Ñ<¸eÐCÐCóA ˜4×4Õ4ðF �Z‰Zœ:×5Ñ5Ò5Ø(,¯©×(>Ñ(>¸uÄcÈ%ÃjÓ(QˆDÔ%Ø×+Ò+Ø—<’<Ø#(�D”LÜ'×AÑAÀ3ÐFÐFØ,0¯L©L×,BÑ,BÀ3ÈÓ,J�Ô)ð	 ×+Ó+ð × Ò Ø—‘×%Ñ%Ô'Ø �”	Ø$)�Ô!Ü#×4Ñ4°cÐ9Ð9ä×/Ñ/°Ð4Ð4øð' !×/Ñ/×5Ñ5Õ7ús   Ü(b âb!)NFNNNTTFr%  )r8   ó   ;)rh   ri   rj   r   r/   rr   rm   rk   r2   r�   rà   rå   r¹   r,  rª   ru   rý   rn   rP   rN   rû   rû   ~  s  „ ð "ØØ"&ØØ!Ø#'Ø $Øð;$ð "Ø"ØØ'ò!;$àð;$ð �d‘
ð;$ð ð	;$ð
 ˜4‘Zð;$ð �D‰jð;$ð �d‘
ð;$ð !ð;$ð ð;$ð ð;$ð &ð;$ð ð;$ð ð;$ð ð;$ð  ð!;$ð" 
ó#;$ózóð@ EIñB5ØðB5Ø!%ðB5Ø<AðB5à	ˆ|˜UÐ"Ñ	#ôB5rP   rû   c            	       ó‚   — e Zd ZU dZeed<   efdededz  de	ddfd„Z
efd	ed
eddfd„Zdede	defd„Zdd„Zdd„Zdd„Zy)ri  zDDeflateStream decompress stream and feed data into specified stream.ÚdecompressorÚoutr  Nr\  rC   c                 óF  — || _         d| _        | j                  |_        || _        d| _        |  |dk(  r(t
        st        d«      ‚t        «       | _        || _        y |dk(  r(t        st        d«      ‚t        «       | _        || _        y t        |¬«      | _        || _        y )Nr   Fr  zECan not decode content-encoding: brotli (br). Please install `Brotli`r  zRCan not decode content-encoding: zstandard (zstd). Please install `backports.zstd`)r  )rƒ  r}  Útotal_compressed_bytesr  Ú_started_decodingr   r%   r   r‚  r   r   r   Ú_max_decompress_size)r�   rƒ  r  r\  s       rN   r�   zDeflateBuffer.__init__¨  s±   € ð ˆŒØˆŒ	Ø%)§Y¡YˆÔ"Ø ˆŒØ!&ˆÔáØ�tÒÝÜ*ð.óð ô !3Ó 4ˆDÔð %8ˆÕ!ð ˜ÒÝÜ*ð6óð ô !1Ó 2ˆDÔð %8ˆÕ!ô !1¸(Ô CˆDÔà$7ˆÕ!rP   r|  Ú	exc_causec                 ó2   — t        | j                  ||«       y r�   )r!   rƒ  )r�   r|  rˆ  s      rN   r!   zDeflateBuffer.set_exceptionÈ  s   € ô
 	�d—h‘h  YÕ/rP   ro  r}  c                 óz  — | xj                   |z  c_         | j                   | j                  _        | j                  s?|r=| j                  dk(  r'|d   dz  dk7  rt        | j                  d¬«      | _        d| _        | j                  j                  }|t        j                  k\  rdnt        | j                  |«      }	 | j                  j                  ||¬«      }|r%| j                  j                  |t!        |«      «       | j                  j"                  S # t        $ r t        d| j                  z  «      ‚w xY w)	Nr  r   é   é   T)r  Úsuppress_deflate_header)Ú
max_lengthz#Can not decode content-encoding: %s)r}  rƒ  r…  r†  r  r   r‚  Ú
_low_waterÚsysÚmaxsizert  r‡  Údecompress_syncrç   r%   rý   rž   Údata_available)r�   ro  r}  Ú	low_waterrŽ  s        rN   rý   zDeflateBuffer.feed_dataÏ  s  € Ø�	Š	�TÑ�	Ø*.¯)©)ˆ�‰Ô'ð
 ×%Ò%©%ð �}‰} 	Ò)¨e°A©h¸©nÀÒ.Aô %5Ø!Ÿ]™]ÀDô%�Ô!ð &*ˆDÔ"à—H‘H×'Ñ'ˆ	àœcŸk™kÒ)‰A¬s°4×3LÑ3LÈiÓ/Xð 	ð	Ø×%Ñ%×5Ñ5°eÈ
Ð5ÓSˆEñ Ø�H‰H×Ñ˜u¤c¨%£jÔ1Ø× Ñ ×/Ñ/Ð/øô ò 	Ü&Ø5¸¿¹ÑEóð ð	ús   Â>D Ä"D:c                 óò   — | j                   j                  «       }|rJ ‚| j                  dkD  r0| j                  dk(  r!| j                   j                  st        d«      ‚| j                  j                  «        y )Nr   r  )r‚  Úflushr}  r  Úeofr%   rƒ  rå   )r�   ro  s     rN   rå   zDeflateBuffer.feed_eofñ  s`   € Ø×!Ñ!×'Ñ'Ó)ˆñ Ðˆyà�9‰9�qŠ=Ø�}‰} 	Ò)°$×2CÑ2C×2GÒ2GÜ*¨9Ó5Ð5à�‰×ÑÕrP   c                 ó8   — | j                   j                  «        y r�   )rƒ  rv  rá   s    rN   rv  z(DeflateBuffer.begin_http_chunk_receivingþ  s   € Ø�‰×+Ñ+Õ-rP   c                 ó8   — | j                   j                  «        y r�   )rƒ  rw  rá   s    rN   rw  z&DeflateBuffer.end_http_chunk_receiving  s   € Ø�‰×)Ñ)Õ+rP   r%  )rh   ri   rj   rK  r   rl   r   r/   rk   rr   r�   r   r)  r!   r¹   rm   rý   rå   rv  rw  rn   rP   rN   ri  ri  £  s�   … ÙNàÓð $6ñ	8àð8ð ˜‘*ð8ð !ð	8ð
 
ó8ðF $1ñ0àð0ð !ð0ð 
ó	0ð 0˜uð  0¨Cð  0°Dó  0óDó.ô,rP   ri  )r4   r5   r6   r7   )or*  r&  ru  Ústringr�  Ú
contextlibr   Úenumr   r   Útypingr   r   r   r	   r
   r   r   r   Ú	multidictr   r   r   Úyarlr   rH   r   Úbase_protocolr   Úcompression_utilsr   r   r   r   r   Úhelpersr   r   r   r   r   r   r    r!   Úhttp_exceptionsr"   r#   r$   r%   r&   r'   r(   r)   r*   Úhttp_writerr+   r,   r-   Ústreamsr.   r/   Útypedefsr0   Úclient_protor1   Ú__all__r,  ÚsetÚ	printabler:   rk   rl   Úescaper;   Úcompiler<   ÚASCIIr=   r>   r?   r¹   r@   rA   rm   rO   Ú	frozensetr[   r6   r7   rs   ru   rz   r€   r2   rÁ   ÚABCr3   r4   r5   rû   ri  ÚHttpRequestParserPyÚHttpResponseParserPyÚRawRequestMessagePyÚRawResponseMessagePyÚ_http_parserÚHttpRequestParserCÚHttpResponseParserCÚRawRequestMessageCÚRawResponseMessageCÚImportErrorrn   rP   rN   ú<module>rº     s  ðÜ 
Û Û 	Û Û 
Ý Ý Ý ÷	÷ 	ó 	÷ :Ñ 9Ý å Ý '÷õ ÷	÷ 	ó 	÷
÷ 
õ 
÷ CÑ Bß 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�˜‘Ñ Ó ?à5?°R·Z±ZØó6Ð ˜u W¨S¡\Ñ2ó ð 1;°·
±
Ð;MÓ0NÐ ˜% ¨¡Ñ-Ó NðE˜3ð E 4ó Eñ  ,5òó,Ð �5˜ 3™Ñ(ó ô 
˜
ô 
ô	˜ô 	ñ 	�Ð*Ð,>Ó?€ô"�7ô "ô�ô ô�ô ÷Y?ñ Y?ðx=Ð#3°CÑ#8ð =¸Tó =ôS�—‘˜' %™.ô Sôl~H˜
Ð#4Ñ5ô ~HôBSP˜Ð$6Ñ7ô SP÷lb5ñ b5÷J	_,ñ _,ðD (Ð Ø)Ð Ø'Ð Ø)Ð ð	Ù÷	
ó 	
ð /ÐØ0ÐØ.ÐØ0Ñð øð ò 	Ùð	ús   É;J ÊJÊJ