§
    ;xÅ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jD        ¦  «        ZEeeCeF                  eGd<    ejH        d¦  «        ZIeeF         eGd<    ejJ        deI› d�¦  «        ZKee	eF                  eGd<    ejJ        dejL        ¦  «        ZMee	eF                  eGd<    ejJ        dejL        ¦  «        ZNee	eF                  eGd<    ejJ        d¦  «        ZOee	eP                  eGd<    ejJ        d ¦  «        ZQee	eF                  eGd!<    ejJ        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 eaZjebZkeWZleXZmdS dS # en$ r Y dS 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   — |                       d¦  «        d         }|dd…         dk    o|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     úDC:\Projects\Historical\venv\Lib\site-packages\aiohttp/http_parser.pyÚ_has_authorityrO   \   sB   € ð ×Ò˜CÑ Ô  Ô#€DØ���Œ8�tÒÐD  Q q S¤	Ð1DÐ DÐDó    >
   ú
user-agentúcontent-typeúmax-forwardsúcontent-rangeúcontent-lengthúcontent-locationútransfer-encodingÚetagÚhostÚserverÚSINGLETON_HEADERSc                   óz   — 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<   dS )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€K�KØ
€I€I�IØÐÐÑØ$Ð$Ð$Ñ$ØÐÐÑØÐÐÑØ�t‘ÐÐÑØ€M€M�MØ€M€M�MØ	€H€H�H€H€HrP   r6   c                   ó|   — 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
<   dS )r7   r_   ÚcodeÚreasonra   rb   rc   Nrd   re   rf   )
rh   ri   rj   r+   rl   Úintrk   r   r0   rm   rn   rP   rN   r7   r7   ‰   sy   € € € € € € ØÐÐÑØ
€I€I�IØ€K€K�KØ˜cÔ"Ð"Ð"Ñ"ØÐÐÑØÐÐÑØ�t‘ÐÐÑØ€M€M�MØ€M€M�M€M€MrP   r7   Ú_MsgTc                   ó   — e Zd ZdZdZdZdS )Ú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dS )Ú
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Ø€O€O€OrP   rz   c                   ó"   — e Zd ZdZdZdZdZdZdS )Ú
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+   € € € € € ØÐØÐØÐØÐØ€N€N€NrP   r€   c                   ó`   — 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
d	S )r2   éþ  é €  FÚmax_line_sizeÚmax_headersÚmax_field_sizeÚlaxrC   Nc                 ó>   — || _         || _        || _        || _        d S ©N)rŠ   r‹   rŒ   Ú_lax)ÚselfrŠ   r‹   rŒ   r�   s        rN   Ú__init__zHeadersParser.__init__¯   s'   € ð +ˆÔØ&ˆÔØ,ˆÔØˆŒ	ˆ	ˆ	rP   Úlinesr`   c                 ó¶  — t          ¦   «         }g }d}||         }t          |¦  «        }|�r�	 |                     dd¦  «        \  }}n# t          $ r t	          |¦  «        d ‚w xY wt          |¦  «        dk    rt	          |¦  «        ‚|d         |d         hddhz  rt	          |¦  «        ‚|                     d¦  «        }|                     dd	¦  «        }	t                               |	¦  «        st	          |¦  «        ‚|dz  }||         }| j	        o|o	|d         d
v }
|
r»t          |¦  «        }|g}|
r’|t          |¦  «        z  }|| j
        k    r;|dz   d                     |¦  «        z   }t          |d d…         dz   | j
        ¦  «        ‚|                     |¦  «         |dz  }||k     r||         }|r
|d         d
v }
nd}n|
°’d                     |¦  «        }|                     d¦  «        }|                     dd	¦  «        }| j	        rd|v sd|v sd|v rt	          |¦  «        ‚n)t                               |¦  «        rt	          |¦  «        ‚| j	        s2|	|v r.|	                     ¦   «         t$          v rt'          d|	› d�¦  «        ‚|                     |	|¦  «         |                     ||f¦  «         |�°�t+          |¦  «        t-          |¦  «        fS )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»   sQ  € õ %0¡M¤Mˆàˆàˆ	Ø�YÔˆÝ˜‘Z”Zˆ
àñ ?	0ð4Ø $§
¢
¨4°Ñ 3Ô 3‘��v�vøÝð 4ð 4ð 4Ý# DÑ)Ô)¨tÐ3ð4øøøõ �5‰zŒz˜QŠˆÝ# EÑ*Ô*Ð*ð �a”˜% œ)Ð$¨¨A wÑ.ð *Ý# DÑ)Ô)Ð)à—]’] 6Ñ*Ô*ˆFØ—<’< Ð):Ñ;Ô;ˆDÝ×$Ò$ TÑ*Ô*ð +Ý# EÑ*Ô*Ð*ð ˜‰NˆIØ˜Ô#ˆDð  œ9ÐD¨ÐD°$°q´'¸WÐ2DˆLð ð .Ý # F¡¤�Ø$˜X�
Ø"ð Ø!¥S¨¡Y¤YÑ.�MØ$ tÔ':Ò:Ð:Ø&+¨e¡m°c·h²h¸zÑ6JÔ6JÑ&J˜Ý)Ø'¨¨¨Ô-°Ñ6¸Ô8Kñô ð ð ×%Ò% dÑ+Ô+Ð+ð  ‘N�IØ  :Ò-Ð-Ø$ YÔ/˜Øð >Ø+/°¬7°gÐ+=˜Løà"˜Øð# #ð ð$ Ÿš *Ñ-Ô-�à—\’\ &Ñ)Ô)ˆFØ—M’M 'Ð+<Ñ=Ô=ˆEð Œyð ,Ø˜5�=�= D¨E M M°V¸u°_°_Ý'¨Ñ/Ô/Ð/ð 6Eå.×5Ò5°eÑ<Ô<ð ,Ý# FÑ+Ô+Ð+à”9ð J ¨  °T·Z²Z±\´\ÕEVÐ5VÐ5VÝ$Ð%H°4Ð%HÐ%HÐ%HÑIÔIÐIØ�KŠK˜˜eÑ$Ô$Ð$Ø×Ò  v˜Ñ/Ô/Ð/ð ñ ?	0õB ! Ñ)Ô)­5°Ñ+=Ô+=Ð>Ð>s   ®A ÁA#)rˆ   r‰   rˆ   F)rh   ri   rj   rr   rm   r’   ÚlistÚbytesr¬   r0   r¸   rn   rP   rN   r2   r2   ®   s¦   € € € € € ð "Ø Ø"Øð
ð 
àð
ð ð
ð ð	
ð
 ð
ð 
ð
ð 
ð 
ð 
ðL?Ø˜%”[ðL?à	Ð&¨
Ð2Ô	3ðL?ð L?ð L?ð L?ð L?ð L?rP   r2   ra   c                 ó–   — |                       t          j        d¦  «        }|                     ¦   «         o|                     ¦   «         dv S )z)Check if the upgrade header is supported.rH   >   ÚtcpÚ	websocket)Úgetr   ÚUPGRADEÚisasciirª   )ra   Úus     rN   Ú_is_supported_upgraderÂ   
  s8   € à�Š•D”L "Ñ%Ô%€Aà�9Š9‰;Œ;Ð<˜1Ÿ7š7™9œ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j        ej        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%dS )/r3   Fr�   Né   rˆ   é€   Tr   Ú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| _        d S )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                 ó   — d S r�   rn   )r‘   r“   s     rN   Úparse_messagezHttpParser.parse_messageB  s   € Ø:=¸#rP   Útec                 ó   — d S r�   rn   ©r‘   rÞ   s     rN   Ú_is_chunked_tezHttpParser._is_chunked_teE  s   € Ø/2¨srP   c                 óJ   — | j         €J ‚| j                              ¦   «          d S r�   )rÕ   Úpause_reading©r‘   s    rN   rã   zHttpParser.pause_readingH  s,   € ØÔ#Ð/Ð/Ð/ØÔ×*Ò*Ñ,Ô,Ð,Ð,Ð,rP   c                 ó@   — | j         dk    r| xj         dz  c_         dS dS )z;Protocol drained a queued message; free a slot for parsing.r   r   N)rÛ   rä   s    rN   Úmessage_consumedzHttpParser.message_consumedL  s2   € àÔ Ò"Ð"ØÐÔ 1Ñ$ÐÔÐÐð #Ð"rP   c                 óª  — | j         �-| j                              ¦   «          | j         j        rd | _         nž| j        r| j                             | j        ¦  «         | j        rq| j        d         dk    r| j                             d¦  «         t          t          ¦  «        5  |                      | j        ¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )Nr–   z
rP   )	rÕ   Úfeed_eofÚdonerÑ   rÐ   r§   r   Ú	ExceptionrÝ   rä   s    rN   rè   zHttpParser.feed_eofQ  s  € ØÔÐ+ØÔ ×)Ò)Ñ+Ô+Ð+ØÔ#Ô(ð ,Ø'+�Ô$øð Œzð /Ø”×"Ò" 4¤:Ñ.Ô.Ð.àŒ{ð ;Ø”;˜r”? fÒ,Ð,Ø”K×&Ò& sÑ+Ô+Ð+Ý�iÑ(Ô(ð ;ð ;Ø×-Ò-¨d¬kÑ:Ô:ð;ð ;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;àˆts   Â!CÃ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        �r| j        �€É| j        �sÁ| j        r#| j        | j        k    r||	d …         | _         |}�nÒ| 	                    ||	¦  «        }||	k    r| j
        s|t          |¦  «        z   }	Œ~||	k    �rí|rt          d¦  «        ‚||	|…         }|dk    r|                     d¦  «        }t          |¦  «        |k    rt          |d d…         dz   |¦  «        ‚| j
                             |¦  «         | j        }t          | j
        ¦  «        | j        k    rt          d	¦  «        ‚|t          |¦  «        z   }	| j
        d
         |k    �r| j        t          | j
        ¦  «        z
  }	 |                      | j
        ¦  «        Š| j
                             ¦   «          n# | j
                             ¦   «          w xY wdt&          d z  fˆˆfd„} |¦   «         }|‰j        v rt+          |¦  «        ‚‰j        ot/          ‰j        ¦  «        }t1          ‰d| j        ¦  «        }t1          ‰dd¦  «        }| j        €J ‚|t6          v p!t9          | j        o| j        t:          v ¦  «        }|s—|�|dk    s‰j        rˆt?          | j        | j         |
| j!        ¬¦  «        }tE          ||‰j        |‰j#        | j$        | j%        | j&        | j'        | j(        | j        | j        || j!        ¬¦  «        }|j)        s|| _        || _*        �n0||k    r‡tW          ‰tX          ¦  «        sJ ‚t?          | j        | j         |
| j!        ¬¦  «        }d| _        tE          |‰j        ‰j#        | j&        | j'        | j(        | j        | j        || j!        ¬¦
  «
        | _        n£|s‰|€‡| j-        r€t?          | j        | j         |
| j!        ¬¦  «        }tE          ||‰j        |‰j#        | j$        | j%        | j&        | j'        | j(        | j        | j        || j!        ¬¦  «        }|j)        s|| _        n|rd| _        t\          }nt\          }|                     ‰|f¦  «         | j        r| xj        dz  c_        ‰j/        }�n™||	d …         | _         d| j         v rt          d¦  «        ‚t          | j         ¦  «        | j        k    r%t          | j         d d…         dz   | j        ¦  «        ‚|}�n;| j        €| j        r| j
        rJ ‚�n"| j
        rJ ‚| j        €J ‚	 | j         0                    ||	d …         |¦  «        \  }}nˆ# tb          $ r{}|}| j2        �"|  2                    tg          |¦  «        ¦  «        }ti          | j        j5        ||¦  «         tl          j7        }d}tW          |t*          tp          f¦  «        r‚ Y d }~nd }~ww xY w|tl          j9        k    | _        |tl          j7        urn<d}	t          |¦  «        }d | _        | j*        rd| _        d| _*        |	|k     �°| j        �°|r|	|k     r||	d …         }n|}|| j        |fS )NrP   r   FzData after `Connection: close`r9   ó   r›   rœ   zToo many headers receivedr–   rC   c                  ó°   •— ‰j                              ‰¦  «        } | €d S t                               | ¦  «        st	          ‰¦  «        ‚t          | ¦  «        S r�   )ra   r¾   r>   r¥   r'   rr   )Ú
length_hdrrî   Úmsgs    €€rN   Úget_content_lengthz0HttpParser.feed_data.<locals>.get_content_length¨  sT   ø€ à),¬¯ª¸Ñ)HÔ)H˜JØ)Ð1Ø'+ tõ
 $*×#3Ò#3°JÑ#?Ô#?ð DÝ&3°NÑ&CÔ&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Ÿ  øø€ ð ˆàŒ:ð 	6Ø#œz¨DÑ0°#ÐˆD�$”*å�t‘9”9ˆØˆ	ØŒyˆØÔ,ˆàˆØ˜(Ò"Ð" dÔ&AÑ"ð Ô#Ñ+°D´NÑ+àÔ,ð
àÔ+¨tÔ/GÒGÐGð
 "& i j jÔ!1�D”Jà �DÙØ—i’i  YÑ/Ô/�à˜)Ò#Ð#¨D¬KÐ#Ø #¥c¨#¡h¤h¡�IØà˜)Ò#Ñ#Ø#ð OÝ,Ð-MÑNÔNÐNð   	¨# Ô.�DØ˜e’|�|Ø#Ÿ{š{¨5Ñ1Ô1˜Ý˜4‘y”y ?Ò2Ð2Ý)¨$¨t°¨t¬*°vÑ*=¸ÑOÔOÐOà”K×&Ò& tÑ,Ô,Ð,à&*Ô&9�Oå˜4œ;Ñ'Ô'¨$Ô*:Ò:Ð:Ý,Ð-HÑIÔIÐIà #¥c¨#¡h¤h¡�Ið ”{ 2”¨%Ò/Ñ/Ø'+Ô'7½#¸d¼kÑ:JÔ:JÑ'J˜ð0Ø)-×);Ò);¸D¼KÑ)HÔ)H˜Cà œK×-Ò-Ñ/Ô/Ð/Ð/ø˜DœK×-Ò-Ñ/Ô/Ð/Ð/øøøð3µC¸$±Jð 3ð 3ð 3ð 3ð 3ð 3ð 3ð "4Ð!3Ñ!5Ô!5˜à-°´Ð<Ð<Ý"/Ð0BÑ"CÔ"CÐCà#&¤;Ð#UÕ3HÈÌÑ3UÔ3U˜å!(¨¨h¸¼Ñ!DÔ!D˜å& s¨F°AÑ6Ô6˜à#œ}Ð8Ð8Ð8ð &*Õ-DÐ%Dð &ÍØ œKÐM¨D¬KÕ;MÐ,MñIô I˜
ð  *ð S4Ø#Ð/°F¸Q²J°JÀ3Ä;°Jå&2Ø $¤Ø&*¤jØ%)Ø&*¤kð	'ñ 'ô '˜Gõ .?Ø 'Ø'-Ø(+¬Ø'-Ø,/¬OØ%)¤YØ37Ô3JØ04Ô0EØ$(¤HØ/3Ô/CØ.2Ô.@Ø/3Ô/BØ-9Ø&*¤kð.ñ .ô .˜Nð  $2Ô#6ð AØ7E Ô 4ð 9A Ô 5ùØ# |Ò3Ð3Ý#-¨cÕ3DÑ#EÔ#EÐEÐEÐ#EÝ&2Ø $¤Ø&*¤jØ%)Ø&*¤kð	'ñ 'ô '˜Gð .2˜DœNÝ3DØ 'Ø'*¤zØ,/¬OØ04Ô0EØ$(¤HØ/3Ô/CØ.2Ô.@Ø/3Ô/BØ-9Ø&*¤kð4ñ 4ô 4˜DÔ0Ð0ð ",ð 4°°À4ÔCV°Ý&2Ø $¤Ø&*¤jØ%)Ø&*¤kð	'ñ 'ô '˜Gõ .?Ø 'Ø'-Ø(+¬Ø'-Ø,/¬OØ%)¤YØ37Ô3JØ04Ô0EØ$(¤HØ/3Ô/CØ.2Ô.@Ø/3Ô/BØ-9Ø&*¤kð.ñ .ô .˜Nð  $2Ô#6ð FØ7E Ô 4øØ%ð 4ð .2˜DœNÝ&3˜G˜Gå&3˜Gà Ÿš¨¨g¨Ñ7Ô7Ð7ØÔ3ð 5Ø Ð/Ô/°1Ñ4Ð/Ô/Ø'*Ô'7˜ùà!% i j jÔ!1�D”Jð  ¤
Ð*Ð*Ý,Ð-MÑNÔNÐNÝ˜4œ:‘”¨Ô);Ò;Ð;Ý)¨$¬*°T°c°TÔ*:¸VÑ*CÀTÔEWÑXÔXÐXØ �DÙð Ô%Ð-°$´.Ð-Øœ;Ð&Ð&�Ùð  œ;Ð&Ð&�ØÔ+Ð7Ð7Ð7ðØ*.Ô*>×*HÒ*HØ˜Y˜Z˜ZÔ(¨#ñ+ô +Ñ'�M 4 4øõ !ð ð ð Ø2@�LØÔ-Ð9Ø'+×'=Ò'=½cÀ.Ñ>QÔ>QÑ'RÔ'R˜å!ØÔ,Ô4Ø$Ø&ñô ð õ %1Ô$A�MØ�DÝ!Ø&­Õ8MÐ(Nñô ð ð ðð ð ð ð øøøøðøøøð& "¥\Ô%KÒKð Ô+ð !­Ô(EÐEÐEð à�	Ý˜t™9œ9�Ø'+�Ô$ØÔ(ð 2ð &*�D”NØ,1�DÔ)ðO ˜(Ò"Ñ" dÔ&AÑ"ðR ð 	�I Ò(Ð(Ø˜	˜
˜
Ô#ˆDˆDàˆDà˜œ¨Ð-Ð-s%   Æ6G* Ç*HÕ
&U1 Õ1
W6Õ;A1W1×1W6r`   c                 ób  — | j                              |¦  «        \  }}d}d}d}d}|                     t          j        d¦  «        }|r>d„ |D ¦   «         }	d|	v rd}nd|	v rd}d|	v r!|                     t          j        ¦  «        rd}|                     t          j        d	¦  «        }
|
                     ¦   «         r|
 	                    ¦   «         }
|
d
v r|
}|                     t          j
        ¦  «        }|�4|                      |¦  «        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.
        NFrn   c                 ó¦   — h | ]N}d „ |                      d¦  «        D ¦   «         D ],}|¯|                     ¦   «         ¯|                     ¦   «         ’Œ-ŒOS )c              3   ó@   K  — | ]}|                      d ¦  «        V — ŒdS )ú 	N)r¨   )Ú.0Úparts     rN   ú	<genexpr>z5HttpParser.parse_headers.<locals>.<setcomp>.<genexpr>~  s.   è è € ÐRÐR°D˜dŸjšj¨Ñ/Ô/ÐRÐRÐRÐRÐRÐRrP   ú,)r¡   rÀ   rª   )r  Ú
conn_valueÚtokens      rN   ú	<setcomp>z+HttpParser.parse_headers.<locals>.<setcomp>{  s{   € ð ð ð àØRÐR¸J×<LÒ<LÈSÑ<QÔ<QÐRÑRÔRðð ð Øð	ð #Ÿ]š]™_œ_ð	Ø—’‘”ðð ð ð rP   ÚcloseTz
keep-alivere   rH   >   ÚbrÚgzipÚzstdÚdeflatez6Transfer-Encoding can't be present with Content-Length)rÙ   r¸   Úgetallr   Ú
CONNECTIONr¾   r¿   ÚCONTENT_ENCODINGrÀ   rª   ÚTRANSFER_ENCODINGrá   rî   r"   )r‘   r“   ra   rb   Ú
close_connÚencodingre   rf   Úconn_valuesÚconn_tokensÚencrÞ   s               rN   r¸   zHttpParser.parse_headersg  sm  € ð  $Ô3×AÒAÀ%ÑHÔHÑˆ�Øˆ
ØˆØˆØˆð —n’n¥T¤_°bÑ9Ô9ˆØð 	ðð à"-ðñ ô ˆKð ˜+Ð%Ð%Ø!�
�
Ø Ð,Ð,Ø"�
ð ˜KÐ'Ð'¨G¯KªK½¼Ñ,EÔ,EÐ'Ø�ð �kŠk�$Ô/°Ñ4Ô4ˆØ�;Š;‰=Œ=ð 	Ø—)’)‘+”+ˆCØÐ7Ð7Ð7Ø�ð �[Š[�Ô/Ñ0Ô0ˆØˆ>Ø×"Ò" 2Ñ&Ô&ð Ø�åÔ" gÐ-Ð-Ý$ØLñô ð ð ˜ j°(¸GÀWÐMÐMrP   Úvalc                 ó   — || _         dS )zZSet connection upgraded (to websocket) mode.

        :param bool val: new state.
        N)rÒ   )r‘   r&  s     rN   Úset_upgradedzHttpParser.set_upgradedŸ  s   € ð
 ˆŒˆˆrP   )NNrÄ   rˆ   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     sÊ  € € € € € € Ø€Cˆ�$ŒÐÐÑð )-Ø15ØØ!ØØ"Ø)-ØØ!Ø8<Ø#'Ø$Ø $Ø"#ð, ð , à Ñ%ð, ð Ô'¨$Ñ.ð, ð ð	, ð
 ð, ð ð, ð ð, ð   $Ñ&ð, ð �D‰jð, ð �d‘
ð, ð   Ô.°Ñ5ð, ð !ð, ð ð, ð ð, ð  ð, ð  
ð!, ð , ð , ð , ð\ 	ÔØ= 4¨¤;Ð=°5Ð=Ð=Ð=ñ ÔØ=àÔØ2 Ð2¨Ð2Ð2Ð2ñ ÔØ2ð-ð -ð -ð -ð%ð %ð %ð %ð
˜% $™,ð ð ð ð ð( ØØ#Ô2Ø Ô-Ø#'Ô#:ðC.ð C.àðC.ð ðC.ð ð	C.ð
 ðC.ð ðC.ð !ðC.ð 
ˆt�E˜% Ð-Ô.Ô/°°uÐ<Ô	=ðC.ð C.ð C.ð C.ðJ6NØ˜%”[ð6Nà	Ø ¨T°D©[¸#À¹*ÀdÈDÐPô
ð6Nð 6Nð 6Nð 6Nðp ð ¨ð ð ð ð ð ð rP   r3   c                   ó>   — e Zd ZdZdee         defd„Zdede	fd„Z
dS )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                 ó¤  — |d                               dd¦  «        }	 |                     dd¬¦  «        \  }}}n# t          $ r t          |¦  «        d ‚w xY wt                               |¦  «        st          |¦  «        ‚|                     ¦   «         }t                               |¦  «        r6t          | 
                    d¬¦  «                              d¦  «        ¦  «        ‚t                               |¦  «        }|€t          |¦  «        ‚t          t          |                     d	¦  «        ¦  «        t          |                     d¦  «        ¦  «        ¦  «        }|d
k    r�	 t!          j        |d¬¦  «        }|j        }	nD# t          $ r7 t          | 
                    d¬¦  «                              d¦  «        ¦  «        ‚w xY w|	€6t          | 
                    d¬¦  «                              d¦  «        ¦  «        ‚�nY|                     d¦  «        rK|                     d¦  «        \  }
}}|
                     d¦  «        \  }
}}t!          j        |
||d¬¦  «        }nù|dk    r|dk    rt!          |d¬¦  «        }nÛt+          |¦  «        s6t          | 
                    d¬¦  «                              d¦  «        ¦  «        ‚	 t!          |d¬¦  «        }|j        }	nD# t          $ r7 t          | 
                    d¬¦  «                              d¦  «        ¦  «        ‚w xY w|	€6t          | 
                    d¬¦  «                              d¦  «        ¦  «        ‚|                      |d	d …         ¦  «        \  }}}}}}|t.          k    rt0          j        |vrt5          d¦  «        ‚|€|t6          k    rd}nd}t9          ||||||||||¦
  «
        S )Nr   r™   rš   ú rF   ©Úmaxsplit)ÚerrorsÚlatin1r   ÚCONNECTT)Ú	authorityÚencodedrI   rK   rJ   )r^   Úquery_stringÚfragmentr:  Ú*ÚOPTIONS)r:  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˜'˜'øÝð 	0ð 	0ð 	0Ý Ñ%Ô%¨4Ð/ð	0øøøõ × Ò  Ñ(Ô(ð 	(Ý Ñ'Ô'Ð'Ø—’‘”ˆõ $×*Ò*¨4Ñ0Ô0ð 	Ý!Ø—’Ð#4�Ñ5Ô5×<Ò<¸XÑFÔFñô ð õ
 × Ò  Ñ)Ô)ˆØˆ=Ý Ñ%Ô%Ð%Ý¥ E§K¢K°¡N¤NÑ 3Ô 3µS¸¿ºÀQ¹¼Ñ5HÔ5HÑIÔIˆ	à�YÒÐðÝ”i¨$¸Ð=Ñ=Ô=�Ø”|��øÝð ð ð å%Ø—K’KÐ'8�KÑ9Ô9×@Ò@ÀÑJÔJñô ð ðøøøð
 ˆ|Ý%Ø—K’KÐ'8�KÑ9Ô9×@Ò@ÀÑJÔJñô ð ñ ð �_Š_˜SÑ!Ô!ð &	ð 8<·~²~ÀcÑ7JÔ7JÑ4ˆI�¨Ø;D×;NÒ;NÈsÑ;SÔ;SÑ8ˆIÐ/°õ ”)ØØ$Ø%Øð	ñ ô ˆCˆCð �SŠ[ˆ[˜V yÒ0Ð0å�d DÐ)Ñ)Ô)ˆCˆCõ " $Ñ'Ô'ð Ý%Ø—K’KÐ'8�KÑ9Ô9×@Ò@ÀÑJÔJñô ð ðÝ˜$¨Ð-Ñ-Ô-�Ø”|��øÝð ð ð å%Ø—K’KÐ'8�KÑ9Ô9×@Ò@ÀÑJÔJñô ð ðøøøð ˆ|Ý%Ø—K’KÐ'8�KÑ9Ô9×@Ò@ÀÑJÔJñô ð ð ×Ò˜u Q R RœyÑ)Ô)ñ	
ØØØØØØð �Ò%Ð%­$¬)¸7Ð*BÐ*BÝ Ð!DÑEÔEÐEàˆ=Ø�MÒ)Ð)Ø��à�å ØØØØØØØØØØñ
ô 
ð 	
s#   ž: ºAÅ'F ÆAGËK  Ë AL!rÞ   c                 óÜ   — |                      dd¬¦  «        d                              d¦  «        }|                     ¦   «         r|                     ¦   «         dk    rdS t	          d¦  «        ‚)	Nr  r   r4  r–   r  rf   Tz'Request has invalid `Transfer-Encoding`)Úrsplitr¨   rÀ   rª   r"   rà   s     rN   rá   z HttpRequestParser._is_chunked_te  s`   € Ø�YŠY�s QˆYÑ'Ô'¨Ô+×1Ò1°%Ñ8Ô8ˆà�:Š:‰<Œ<ð 	˜BŸHšH™JœJ¨)Ò3Ð3Ø�4åÐFÑGÔGÐGrP   N)rh   ri   rj   Ú__doc__r¹   rº   r6   rÝ   rk   rm   rá   rn   rP   rN   r4   r4   §  sv   € € € € € ðð ðn
 4¨¤;ð n
Ð3Dð n
ð n
ð n
ð n
ð`H ð H¨ð Hð Hð Hð 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                 óZ   •— |€t           rdnd} t          ¦   «         j        ||g|¢R i |¤ŽS )Nr8   r9   )r   Úsuperr   )r‘   rë   rì   rQ  rR  Ú	__class__s        €rN   r   zHttpResponseParser.feed_data4  sA   ø€ ð ˆ;Ý"Ð-�'�'¨ˆCØ �u‰wŒwÔ   sÐ<¨TÐ<Ð<Ð<°VÐ<Ð<Ð<rP   r“   c                 óâ  — |d                               dd¦  «        }	 |                     d¬¦  «        \  }}n# t          $ r t          |¦  «        d ‚w xY w	 |                     d¬¦  «        \  }}n&# t          $ r |                     ¦   «         }d}Y nw xY wt
                               |¦  «        }|€t          |¦  «        ‚t          t          | 	                    d¦  «        ¦  «        t          | 	                    d¦  «        ¦  «        ¦  «        }t          |¦  «        dk    st                               |¦  «        st          |¦  «        ‚t          |¦  «        }|                      |dd …         ¦  «        \  }	}
}}}}|€E|t          k    rd	}n7d
|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#          |||                     ¦   «         |	|
||||¦	  «	        S )Nr   r™   rš   r   r4  rH   rF   rG   Tr›   éÈ   >   é0  éÌ   F)r¤   r¡   r¢   r$   r¨   r=   r¥   r+   rr   rA  r    r>   r¸   r,   r   rî   r   r7   )r‘   r“   r®   r_   Ústatusrq   rF  rG  Ústatus_ira   rb   r  rd   re   rf   s                  rN   rÝ   z HttpResponseParser.parse_message?  s%  € Ø�QŒx�Š˜wÐ(9Ñ:Ô:ˆð	0Ø"Ÿjšj°!˜jÑ4Ô4‰OˆG�V�VøÝð 	0ð 	0ð 	0Ý Ñ%Ô%¨4Ð/ð	0øøøð	Ø#Ÿ\š\°1˜\Ñ5Ô5‰NˆF�F�FøÝð 	ð 	ð 	Ø—\’\‘^”^ˆFØˆFˆFˆFð	øøøõ
 × Ò  Ñ)Ô)ˆØˆ=Ý Ñ%Ô%Ð%Ý¥ E§K¢K°¡N¤NÑ 3Ô 3µS¸¿ºÀQ¹¼Ñ5HÔ5HÑIÔIˆ	õ ˆv‰;Œ;˜!ÒÐ¥6×#3Ò#3°FÑ#;Ô#;ÐÝ Ñ%Ô%Ð%Ý�v‘;”;ˆð ×Ò˜u Q R RœyÑ)Ô)ñ	
ØØØØØØð ˆ=Ø�MÒ)Ð)Ø��à˜Ð&Ð&Ò&Ð& 3Ò&Ð&Ð&Ð&¨(°jÐ*@Ð*@Ø��ÝÔ$¨Ð/Ð/µ4Ô3IÈWÐ3TÐ3TØ��ð �å!ØØØ�LŠL‰NŒNØØØØØØñ

ô 

ð 
	
s   ž8 ¸AÁA1 Á1 BÂBrÞ   c                 óŽ   — |                      dd¬¦  «        d                              d¦  «                             ¦   «         dk    S )Nr  r   r4  r–   r  rf   )rN  r¨   rª   rà   s     rN   rá   z!HttpResponseParser._is_chunked_tey  s<   € à�yŠy˜ qˆyÑ)Ô)¨"Ô-×3Ò3°EÑ:Ô:×@Ò@ÑBÔBÀiÒOÐOrP   r�   )rh   ri   rj   rO  rl   r   r�   rº   r0  r   r¬   r¹   r7   r/   rm   r   rÝ   rk   rá   Ú__classcell__)rU  s   @rN   r5   r5   (  s  ø€ € € € € € ðð ð  ÐÐÑð ˆ)€Cð
  ð	=ð 	=àð	=ð �D‰[ð	=ð ð		=ð
 ð	=ð 
ˆt�EÐ,¨lÐ:Ô;Ô<¸dÀEÐIÔ	Jð	=ð 	=ð 	=ð 	=ð 	=ð 	=ð8
 4¨¤;ð 8
Ð3Eð 8
ð 8
ð 8
ð 8
ðtP ð P¨ð Pð Pð Pð Pð Pð 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dS )"rþ   NFTrˆ   rÅ   )rŠ   rŒ   rù   rÈ   r  r÷   rf   rd   rp   r]   rË   rÍ   r�   rø   rŠ   rŒ   rù   rÈ   rC   c
                óp  — d| _         d| _        t          j        | _        t
          j        | _        d| _        d| _	        || _
        |	| _        |
| _        || _        || _        || _        d| _        g | _        d| _        d| _        |r|r| j
        rt)          |||¬¦  «        }n|}|s-t          j        | _        |                     ¦   «          d| _        n[|rt          j        | _        nG|�Et          j        | _        || _         || _        | j         dk    r|                     ¦   «          d| _        || _        d S )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__  sV  € ð$ ˆŒØˆŒÝÔ/ˆŒ
Ý Ô3ˆŒØˆÔØˆÔØ /ˆÔØˆŒ	Ø-ˆÔØ+ˆÔØ-ˆÔØ)ˆÔØ$)ˆÔ!Ø+-ˆÔØˆŒ	Ø!ˆÔð ð 	# +ð 	#°$Ô2Gð 	#Ý9FØ˜¸%ð:ñ :ô :ˆLˆLð #ˆLð "ð 	!å#Ô.ˆDŒJØ×!Ò!Ñ#Ô#Ð#ØˆDŒIˆIØð 	!Ý#Ô1ˆDŒJˆJØÐÝ#Ô0ˆDŒJØ!ˆDŒLØ$*ˆDÔ!ØŒ|˜qÒ Ð Ø×%Ò%Ñ'Ô'Ð'Ø �”	à#ˆŒˆˆrP   c                 ó   — d| _         d S )NT)rb  rä   s    rN   rã   zHttpPayloadParser.pause_reading¼  s   € ØˆŒˆˆrP   c                 ó   — | j         t          j        k    rnd| _        | j        r7| j        r	d| _        d S | j                             dd¦  «        | _        | j        °7| j                             ¦   «          d| _	        d| _        d S | j         t          j
        k    r‘| j        r*| j        | j        z
  }t          d|› d| j        › d�¦  «        ‚| j        r7| j        r	d| _        d S | j                             dd¦  «        | _        | j        °7| j                             ¦   «          d| _	        d S | j         t          j        k    rt          d¦  «        ‚d S )	NTFrP   r   z;Not enough data to satisfy content length header (received z of z bytes).z2Not enough data to satisfy transfer length header.)rc  rz   r~   rl  rj  rb  r  r   rè   ré   r|   ra  rn  r&   r}   r*   )r‘   Úreceiveds     rN   rè   zHttpPayloadParser.feed_eof¿  s‘  € ØŒ:�Ô3Ò3Ð3Ø $ˆDÔØÔ+ð KØ”<ð Ø#(�D”LØ�FØ,0¬L×,BÒ,BÀ3ÈÑ,JÔ,J�Ô)ð	 Ô+ð Kð
 ŒL×!Ò!Ñ#Ô#Ð#ØˆDŒIØ %ˆDÔÐÐØŒZ�:Ô2Ò2Ð2ØŒ|ð ØÔ0°4´<Ñ?�Ý(ðOØ!)ðOð OØ/3Ô/DðOð Oð Oñô ð ð
 Ô+ð KØ”<ð Ø#(�D”LØ�FØ,0¬L×,BÒ,BÀ3ÈÑ,JÔ,J�Ô)ð	 Ô+ð Kð
 ŒL×!Ò!Ñ#Ô#Ð#ØˆDŒIˆIˆIØŒZ�:Ô3Ò3Ð3Ý'ØDñô ð ð 4Ð3rP   r8   ó   ;Úchunkrì   Ú	CHUNK_EXTc                 ó¾  — | j         t          j        k    �r| j        r| j        |z   }d| _        | j        }t          |t          |¦  «        z
  d¦  «        | _        | j                             |d|…         |¦  «        | _	        | j	        rR| j
        r$d| _
        ||d…         | _        t          j        dfS | j                             dd¦  «        | _	        | j	        °R| j        dk    r/| j                             ¦   «          t          j        ||d…         fS �n9| j         t          j        k    �r[| j        r�| j        t"          j        k    r[| j        }| j        t"          j        k    r| j        }t          | j        ¦  «        |k    r t-          | j        dd…         dz   |¦  «        ‚| j        |z   }d| _        |s| j	        �rÈ| j        t"          j        k    �r|                     |¦  «        }|dk    �r²|| j        k    r t-          |dd…         dz   | j        ¦  «        ‚|                     |d|¦  «        }|dk    rB|d|…         }d|||…         x}	v r)t3          d|	›�¦  «        }
t5          | j        |
¦  «         |
‚n
|d|…         }| j        r|                     ¦   «         }t;          j        t>          |¦  «        sBt3          |d|…                               d	d
¦  «        ¦  «        }
t5          | j        |
¦  «         |
‚tC          tE          |¦  «        d¦  «        }||t          |¦  «        z   d…         }|dk    r8t"          j        | _        | j        r| #                    d¦  «        r
|dd…         }nqt"          j        | _        || _$        | j         %                    ¦   «          n?d|v r&t3          d¦  «        }
t5          | j        |
¦  «         |
‚|| _        t          j&        dfS | j        t"          j        k    rÐ| j
        rd| _
        || _        t          j        dfS | j$        }t          |t          |¦  «        z
  d¦  «        | _$        | j                             |d|…         |¦  «        | _	        ||d…         }| j	        r�ŒÌ| j$        rd| _
        t          j&        dfS t"          j'        | _        | j         (                    ¦   «          | j        t"          j'        k    rà| j        r| #                    d¦  «        r
|dd…         }|dt          |¦  «        …         |k    r)|t          |¦  «        d…         }t"          j        | _        nvt          |¦  «        t          |¦  «        k    s||dt          |¦  «        …         k    r&t3          d¦  «        }
t5          | j        |
¦  «         |
‚|| _        t          j&        dfS | j        t"          j        k    �rª|                     |¦  «        }|dk     r?d|v r&t3          d¦  «        }
t5          | j        |
¦  «         |
‚|| _        t          j&        dfS |d|…         }||t          |¦  «        z   d…         }|dk    r| )                    d¦  «        }t          |¦  «        | j        k    r t-          |dd…         dz   | j        ¦  «        ‚| j*         +                    |¦  «         t          | j*        ¦  «        | j,        k    rt[          d¦  «        ‚| j*        d         dk    r‚	 | j.         /                    | j*        ¦  «        \  }}| j*         0                    ¦   «          n# | j*         0                    ¦   «          w xY w| j                             ¦   «          t          j        |fS |�°À| j	        �°ÈnÈ| j         t          j1        k    r³| j                             |t          |¦  «        ¦  «        | _	        | j	        rC| j
        rd| _
        t          j        dfS | j                             dd¦  «        | _	        | j	        °C| j2        r5| j                             ¦   «          d| _3        d| _2        t          j        dfS t          j&        dfS )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)4rc  rz   r|   rf  ra  Úmaxr    r  r   rj  rb  ru   rx   rè   rv   r}   rd  r€   rƒ   rg  r†   rh  r)   r‚   rú   r*   r!   r�   r¨   Úrer¥   r?   r¤   rr   rº   rD  re  Úbegin_http_chunk_receivingrw   r„   Úend_http_chunk_receivingrû   rk  r§   ri  r"   rÙ   r¸   rü   r~   rl  ré   )r‘   rt  rì   ru  Ú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Ô8ˆDŒLØ(,¬×(>Ò(>Ø�i�x�iÔ  (ñ)ô )ˆDÔ%ð Ô+ð KØ”<ð GØ#(�D”LØ',¨X¨Y¨YÔ'7�DÔ$Ý'ÔAÀ3ÐFÐFØ,0¬L×,BÒ,BÀ3ÈÑ,JÔ,J�Ô)ð Ô+ð Kð Œ|˜qÒ Ð Ø”×%Ò%Ñ'Ô'Ð'Ý#Ô4°e¸H¸I¸IÔ6FÐFÐFñ !ð ŒZ�:Ô3Ò3Ñ3ØÔð 'à”;¥*Ô"@Ò@Ð@Ø&*Ô&9�OØ”{¥jÔ&?Ò?Ð?Ø*.Ô*>˜Ý˜4Ô+Ñ,Ô,¨Ò>Ð>Ý)Ø Ô,¨T¨c¨TÔ2°VÑ;¸_ñô ð ð Ô(¨5Ñ0�Ø#&�Ô àð @D˜4Ô4ñ @Dà”;¥*Ô"?Ò?Ñ?ØŸ*š* S™/œ/�CØ˜a’x‘xð  Ô!4Ò4Ð4Ý"-¨e°D°S°D¬k¸FÑ.BÀDÔDWÑ"XÔ"XÐXØ!ŸJšJ y°!°SÑ9Ô9˜Ø š6˜6Ø%*¨2¨A¨2¤Y˜Fà$°°a¸°e´Ð)<¨Ð=Ð=Ý&;Ø$PÈÐ$PÐ$Pñ'"ô '" õ !.¨d¬l¸CÑ @Ô @Ð @Ø&) 	ð  >ð &+¨4¨C¨4¤[˜Fàœ9ð 4Ø%+§\¢\¡^¤^˜Få!œ|­I°vÑ>Ô>ð &Ý"7Ø % d s d¤× 2Ò 2°7Ð<MÑ NÔ Nñ#ô #˜Cõ *¨$¬,¸Ñ<Ô<Ð<Ø"%˜IÝ"¥5¨¡=¤=°"Ñ5Ô5˜à % c­C°©H¬H¡nÐ&6Ð&6Ô 7˜Ø 1š9˜9Ý*4Ô*C˜DœKØ#œyð 2¨U×-=Ò-=¸eÑ-DÔ-Dð 2Ø(-¨a¨b¨b¬	 øå*4Ô*H˜DœKØ/3˜DÔ,Ø œL×CÒCÑEÔEÐEÐEà  E˜>˜>Ý"7Ø Kñ#ô #˜Cõ *¨$¬,¸Ñ<Ô<Ð<Ø"%˜IØ+0˜Ô(Ý+Ô?ÀÐDÐDð ”;¥*Ô"@Ò@Ð@Ø”|ð KØ',˜œØ+0˜Ô(Ý+ÔEÀsÐJÐJà#Ô/�HÝ'*¨8µc¸%±j´jÑ+@À!Ñ'DÔ'D�DÔ$Ø04´×0FÒ0FØ˜i˜x˜iÔ(¨(ñ1ô 1�DÔ-ð " ( ) )Ô,�EàÔ0ð !Ù àÔ'ð EØ',˜œÝ+Ô?ÀÐDÐDÝ",Ô"D�D”KØ”L×9Ò9Ñ;Ô;Ð;ð ”;¥*Ô"DÒDÐDØ”yð * U×%5Ò%5°eÑ%<Ô%<ð *Ø % a b b¤	˜Ø˜Z�s 3™xœx˜ZÔ(¨CÒ/Ð/Ø %¥c¨#¡h¤h j jÔ 1˜Ý&0Ô&C˜œ˜Ý˜U™œ¥s¨3¡x¤xÒ/Ð/°5¸CÀÅ#ÀeÁ*Ä*ÀÔ<MÒ3MÐ3MÝ3ØQñô ˜õ & d¤l°CÑ8Ô8Ð8Ø!˜	à+0˜Ô(Ý+Ô?ÀÐDÐDà”;¥*Ô";Ò;Ñ;ØŸ*š* S™/œ/�CØ˜Q’w�wØ  E˜>˜>Ý"7Ø Hñ#ô #˜Cõ *¨$¬,¸Ñ<Ô<Ð<Ø"%˜IØ+0˜Ô(Ý+Ô?ÀÐDÐDà   # œ;�DØ! #­¨C©¬¡.Ð"2Ð"2Ô3�EØ˜e’|�|Ø#Ÿ{š{¨5Ñ1Ô1˜å˜4‘y”y 4Ô#7Ò7Ð7Ý)¨$¨t°¨t¬*°vÑ*=¸tÔ?SÑTÔTÐTàÔ'×.Ò.¨tÑ4Ô4Ð4å˜4Ô.Ñ/Ô/°$Ô2DÒDÐDÝ,Ð-IÑJÔJÐJð Ô*¨2Ô.°#Ò5Ð5ð8Ø59Ô5I×5WÒ5WØ $Ô 3ñ6ô 6Ñ2˜H lð !Ô/×5Ò5Ñ7Ô7Ð7Ð7ø˜DÔ/×5Ò5Ñ7Ô7Ð7Ð7øøøØœ×-Ò-Ñ/Ô/Ð/Ý+Ô<¸eÐCÐCðA ñ @D˜4Ô4ñ @DøðF ŒZ�:Ô5Ò5Ð5Ø(,¬×(>Ò(>¸uÅcÈ%ÁjÄjÑ(QÔ(QˆDÔ%ØÔ+ð KØ”<ð GØ#(�D”LÝ'ÔAÀ3ÐFÐFØ,0¬L×,BÒ,BÀ3ÈÑ,JÔ,J�Ô)ð	 Ô+ð Kð Ô ð :Ø”×%Ò%Ñ'Ô'Ð'Ø �”	Ø$)�Ô!Ý#Ô4°cÐ9Ð9åÔ/°Ð4Ð4s   Û<"\8 Ü8])NFNNNTTFr)  )r8   rs  )rh   ri   rj   r   r/   rr   rm   rk   r2   r’   rã   rè   rº   r0  r¬   ru   r   rn   rP   rN   rþ   rþ   ~  s‚  € € € € € ð "ØØ"&ØØ!Ø#'Ø $Øð;$ð "Ø"ØØ'ð!;$ð ;$ð ;$àð;$ð �d‘
ð;$ð ð	;$ð
 ˜4‘Zð;$ð �D‰jð;$ð �d‘
ð;$ð !ð;$ð ð;$ð ð;$ð &ð;$ð ð;$ð ð;$ð ð;$ð  ð!;$ð" 
ð#;$ð ;$ð ;$ð ;$ðzð ð ð ðð ð ð ð@ EIðB5ð B5ØðB5Ø!%ðB5Ø<AðB5à	ˆ|˜UÐ"Ô	#ðB5ð B5ð B5ð B5ð B5ð 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dS )rm  zDDeflateStream decompress stream and feed data into specified stream.ÚdecompressorÚoutr"  Nr`  rC   c                 óR  — || _         d| _        | j        |_        || _        d| _        |  |dk    r*t
          st          d¦  «        ‚t          ¦   «         | _        nE|dk    r*t          st          d¦  «        ‚t          ¦   «         | _        nt          |¬¦  «        | _        || _        d S )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ˆÔ"Ø ˆŒØ!&ˆÔàÐSØ�tÒÐÝð Ý*ð.ñô ð õ !3Ñ 4Ô 4ˆDÔÐØ˜ÒÐÝð Ý*ð6ñô ð õ !1Ñ 2Ô 2ˆDÔÐå 0¸(Ð CÑ CÔ CˆDÔà$7ˆÔ!Ð!Ð!rP   r�  Ú	exc_causec                 ó2   — t          | j        ||¦  «         d S r�   )r!   r‡  )r‘   r�  rŒ  s      rN   r!   zDeflateBuffer.set_exceptionÈ  s   € õ
 	�d”h  YÑ/Ô/Ð/Ð/Ð/rP   rt  r‚  c                 ó&  — | xj         |z  c_         | j         | j        _        | j        s>|r<| j        dk    r*|d         dz  dk    rt          | j        d¬¦  «        | _        d| _        | j        j        }|t          j	        k    rdnt          | j        |¦  «        }	 | j                             ||¬¦  «        }n%# t          $ r t          d| j        z  ¦  «        ‚w xY w|r(| j                             |t!          |¦  «        ¦  «         | j        j        S )	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Úmaxsizery  r‹  Údecompress_syncrê   r%   r   r    Údata_available)r‘   rt  r‚  Ú	low_waterr’  s        rN   r   zDeflateBuffer.feed_dataÏ  s9  € Øˆ	Œ	�TÑˆ	Œ	Ø*.¬)ˆŒÔ'ð
 Ô%ð 
	*¨%ð 
	*ð Œ} 	Ò)Ð)¨e°A¬h¸©nÀÒ.AÐ.Aõ %5Ø!œ]ÀDð%ñ %ô %�Ô!ð &*ˆDÔ"à”HÔ'ˆ	à�cœkÒ)Ð)ˆAˆA­s°4Ô3LÈiÑ/XÔ/Xð 	ð	ØÔ%×5Ò5°eÈ
Ð5ÑSÔSˆEˆEøÝð 	ð 	ð 	Ý&Ø5¸¼ÑEñô ð ð	øøøð
 ð 	2ØŒH×Ò˜u¥c¨%¡j¤jÑ1Ô1Ð1ØÔ Ô/Ð/s   ÂB8 Â8"Cc                 óÔ   — | j                              ¦   «         }|rJ ‚| j        dk    r&| j        dk    r| j         j        st          d¦  «        ‚| j                             ¦   «          d S )Nr   r  )r†  Úflushr‚  r"  Úeofr%   r‡  rè   )r‘   rt  s     rN   rè   zDeflateBuffer.feed_eofñ  sn   € ØÔ!×'Ò'Ñ)Ô)ˆð ÐÐˆyàŒ9�qŠ=ˆ=ØŒ} 	Ò)Ð)°$Ô2CÔ2GÐ)Ý*¨9Ñ5Ô5Ð5àŒ×ÒÑÔÐÐÐrP   c                 ó8   — | j                              ¦   «          d S r�   )r‡  r{  rä   s    rN   r{  z(DeflateBuffer.begin_http_chunk_receivingþ  s   € ØŒ×+Ò+Ñ-Ô-Ð-Ð-Ð-rP   c                 ó8   — | j                              ¦   «          d S r�   )r‡  r|  rä   s    rN   r|  z&DeflateBuffer.end_http_chunk_receiving  s   € ØŒ×)Ò)Ñ+Ô+Ð+Ð+Ð+rP   r)  )rh   ri   rj   rO  r   rl   r   r/   rk   rr   r’   r   r-  r!   rº   rm   r   rè   r{  r|  rn   rP   rN   rm  rm  £  s  € € € € € € ØNÐNàÐÐÑð $6ð	8ð 8àð8ð ˜‘*ð8ð !ð	8ð
 
ð8ð 8ð 8ð 8ðF $1ð0ð 0àð0ð !ð0ð 
ð	0ð 0ð 0ð 0ð 0˜uð  0¨Cð  0°Dð  0ð  0ð  0ð  0ðDð ð ð ð.ð .ð .ð .ð,ð ,ð ,ð ,ð ,ð ,rP   rm  )r4   r5   r6   r7   )or.  r*  rz  Ú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__r0  Ú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þ   rm  ÚHttpRequestParserPyÚHttpResponseParserPyÚRawRequestMessagePyÚRawResponseMessagePyÚ_http_parserÚHttpRequestParserCÚHttpResponseParserCÚRawRequestMessageCÚRawResponseMessageCÚImportErrorrn   rP   rN   ú<module>r¾     sw  ðØ 
€
€
€
€
Ø €€€Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð :Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'ðð ð ð ð ð ð ð ð ð ð ð ð ð ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð CÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø  Ð  Ð  Ð  Ð  Ð  àð .Ø-Ð-Ð-Ð-Ð-Ð-ð€ð ˆ~Ô€à˜C Ô 0Ñ1Ô1€ˆ%��C”Œ/Ð 1Ð 1Ñ 1ð (˜bœiÐ(9Ñ:Ô:€��s”Ð :Ð :Ñ :Ø)˜rœzÐ*J°Ð*JÐ*JÐ*JÑKÔK€ˆˆw�sŒ|Ô	Ð KÐ KÑ KØ(˜bœjÐ);¸R¼XÑFÔF€ˆˆg�cŒlÔÐ FÐ FÑ FØ(˜bœj¨°´Ñ:Ô:€ˆˆg�cŒlÔÐ :Ð :Ñ :Ø#- 2¤:Ð.>Ñ#?Ô#?€	ˆ5�˜”Ô Ð ?Ð ?Ñ ?à5?°R´ZØñ6ô 6Ð ˜u W¨S¤\Ô2ð ð ñ ð 1;°´
Ð;MÑ0NÔ0NÐ ˜% ¨¤Ô-Ð NÐ NÑ NðE˜3ð E 4ð Eð Eð Eð Eð  ,5¨9ðð ð ñ,ô ,Ð �5˜ 3œÔ(ð ð ñ ð 
ð 
ð 
ð 
ð 
˜
ñ 
ô 
ð 
ð	ð 	ð 	ð 	ð 	˜ñ 	ô 	ð 	ð 	ˆ�Ð*Ð,>Ñ?Ô?€ð"ð "ð "ð "ð "�7ñ "ô "ð "ðð ð ð ð �ñ ô ð ðð ð ð ð �ñ ô ð ðY?ð Y?ð Y?ð Y?ð Y?ñ Y?ô Y?ð Y?ðx=Ð#3°CÔ#8ð =¸Tð =ð =ð =ð =ðSð Sð Sð Sð S�”˜' %œ.ñ Sô Sð Sðl~Hð ~Hð ~Hð ~Hð ~H˜
Ð#4Ô5ñ ~Hô ~Hð ~HðBSPð SPð SPð SPð SP˜Ð$6Ô7ñ SPô SPð SPðlb5ð b5ð b5ð b5ð b5ñ b5ô b5ð b5ðJ	_,ð _,ð _,ð _,ð _,ñ _,ô _,ð _,ðD (Ð Ø)Ð Ø'Ð Ø)Ð ð	Øð 1ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð /ÐØ0ÐØ.ÐØ0ÐÐÐð1ð 1øð ð 	ð 	ð 	Ø€D€Dð	øøøs   ËK ËK(Ë'K(