
    ei                     \   U d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZmZ d dlmZ ddlmZ dd	lm Z  dd
l!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' ddl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ ddl0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: ddl;m<Z<m=Z= ddl>m?Z?m@Z@ ddlAmBZB dZCed         ZD eEejF                  ZGeeeH                  eId<    ejJ        d          ZKeeH         eId<    ejL        deK d          ZMeeeH                  eId<    ejL        d          ZNeeeH                  eId<    ejL        dejO                  ZPeeeH                  eId<    ejL        dejO                  ZQeeeH                  eId<    ejL        d          ZReeeS                  eId<    eTh d           ZUeeTeH                  eId!<    G d" d#e          ZV G d$ d%e          ZW ed&eVeW          ZX G d' d(e          ZY G d) d*e          ZZ G d+ d,          Z[d-eeH         d.e\fd/Z] G d0 d1e j^        eeX                   Z_ G d2 d3e_eV                   Z` G d4 d5e_eW                   Za G d6 d7          Zb G d8 d9          Zce`ZdeaZeeVZfeWZg	 e-sdd:lhm`Z`maZamVZVmWZW e`ZieaZjeVZkeWZldS dS # em$ r Y dS w xY w);    N)suppress)IntEnum)AnyClassVarFinalGenericListLiteral
NamedTupleOptionalPatternSetTupleTypeTypeVarUnion)CIMultiDictCIMultiDictProxyistr)URL   )hdrs)BaseProtocol)DEFAULT_MAX_DECOMPRESS_SIZE
HAS_BROTLIHAS_ZSTDBrotliDecompressorZLibDecompressorZSTDDecompressor)_EXC_SENTINELDEBUGEMPTY_BODY_METHODSEMPTY_BODY_STATUS_CODESNO_EXTENSIONSBaseTimerContextset_exception)
BadHttpMessageBadHttpMethodBadStatusLineContentEncodingErrorContentLengthErrorDecompressSizeErrorInvalidHeaderInvalidURLErrorLineTooLongTransferEncodingError)HttpVersionHttpVersion10)EMPTY_PAYLOADStreamReader)
RawHeaders)HeadersParser
HttpParserHttpRequestParserHttpResponseParserRawRequestMessageRawResponseMessage)   
   
ASCIISETz!#$%&'*+-.^_`|~_TCHAR_SPECIALSz
[0-9A-Za-zz]+TOKENREz[\x00-\x08\x0a-\x1f\x7f]_FIELD_VALUE_FORBIDDEN_CTL_REzHTTP/(\d)\.(\d)VERSREz\d+DIGITSs   [0-9a-fA-F]+	HEXDIGITS>
   
user-agentcontent-typemax-forwardscontent-rangecontent-lengthcontent-locationtransfer-encodingetaghostserverSINGLETON_HEADERSc                       e Zd ZU eed<   eed<   eed<   ded<   eed<   eed<   ee         ed<   eed	<   eed
<   e	ed<   dS )r:   methodpathversionCIMultiDictProxy[str]headersraw_headersshould_closecompressionupgradechunkedurlN)
__name__
__module____qualname__str__annotations__r1   r5   boolr   r        Q/var/www/html/volatility/venv/lib/python3.11/site-packages/aiohttp/http_parser.pyr:   r:   q   s}         KKK
III$$$$#MMMMMM	HHHHHrc   r:   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
e         ed<   e	ed<   e	ed	<   d
S )r;   rS   codereasonrU   rV   rW   rX   rY   rZ   N)r\   r]   r^   r1   r`   intr_   r   r5   ra   r   rb   rc   rd   r;   r;   ~   sy         
IIIKKKc""""#MMMMMMMMrc   r;   _MsgTc                       e Zd ZdZdZdZdZdS )
ParseStater   r         N)r\   r]   r^   
PARSE_NONEPARSE_LENGTHPARSE_CHUNKEDPARSE_UNTIL_EOFrb   rc   rd   rk   rk      s"        JLMOOOrc   rk   c                   "    e Zd ZdZdZdZdZdZdS )
ChunkStater   r   rl   rm      N)r\   r]   r^   PARSE_CHUNKED_SIZEPARSE_CHUNKED_CHUNKPARSE_CHUNKED_CHUNK_EOFPARSE_MAYBE_TRAILERSPARSE_TRAILERSrb   rc   rd   rs   rs      s+        NNNrc   rs   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 )r6        Fmax_line_sizemax_headersmax_field_sizelaxreturnNc                 >    || _         || _        || _        || _        d S N)r}   r~   r   _lax)selfr}   r~   r   r   s        rd   __init__zHeadersParser.__init__   s'     +&,			rc   linesrT   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 }
|
rt          |          }|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   : rc   d      ...
 zDuplicate 'z' header found.)r   lensplit
ValueErrorr-   lstripdecoder@   	fullmatchr   r   joinr/   appendstriprA   searchlowerrO   r'   addr   tuple)r   r   rU   rV   	lines_idxline
line_countbnamebvaluenamecontinuationheader_length
bvalue_lstheader_linevalues                  rd   parse_headerszHeadersParser.parse_headers   sQ    %0MM	YZZ
 ?	04 $

4 3 3vv 4 4 4#D))t34 5zzQ#E*** a%)$Aw. *#D)))]]6**F<<):;;D$$T** +#E*** NI#D  9DD$q'W2DL  . #F$X
" !SYY.M$t':::&+emchhz6J6J&J)'-68K   %%d+++ NI :--$Y/ >+/7g+=L"# # $ *--\\&))FMM'+<==E y ,5==DEMMVu__'/// 6E.55e<< ,#F+++9 JTZZ\\EV5V5V$%H4%H%H%HIIIKKe$$$v///  ?	0B !))5+=+=>>s   A A#)r{   r|   r{   F)r\   r]   r^   rh   ra   r   r	   bytesr   r5   r   rb   rc   rd   r6   r6      s         " "
 

 
 	

 
 

 
 
 
L?%[L?	&
2	3L? L? L? L? L? L?rc   r6   rU   r   c                     |                      t          j        d          }|                                o|                                dv S )z)Check if the upgrade header is supported. >   tcp	websocket)getr   UPGRADEisasciir   )rU   us     rd   _is_supported_upgrader      s8    DL"%%A99;;<17799(<<<rc   c                   4   e Zd ZU dZee         ed<   	 	 	 	 	 	 	 	 	 	 	 	 	 d)dee         d	ee	j
                 d
ededededee         dee         dee         deee                  dedededdfdZej        dee         defd            Zej        dedefd            Zdee         fdZdde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e         ee         eef         fd&Z#d'eddfd(Z$dS )*r7   Fr   N   r{      Tprotocollooplimitr}   r~   r   timerrf   rQ   payload_exceptionresponse_with_bodyread_until_eofauto_decompressr   c                 H   || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _        || _	        || _
        g | _        d| _        d| _        d | _        d | _        || _        || _        t%          |||| j                  | _        d S )Nrc   F)r   r   r}   r~   r   r   rf   rQ   r   r   r   _lines_tail	_upgraded_payload_payload_parser_auto_decompress_limitr6   r   _headers_parser)r   r   r   r   r}   r~   r   r   rf   rQ   r   r   r   r   s                 rd   r   zHttpParser.__init__  s      !	*&,&
	!2"4,#%
<@ /,; 
  
rc   r   c                     d S r   rb   )r   r   s     rd   parse_messagezHttpParser.parse_message+  s    :=#rc   tec                     d S r   rb   r   r   s     rd   _is_chunked_tezHttpParser._is_chunked_te.  s    /2src   c                    | j         !| j                                          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
rc   )r   feed_eofr   r   r   r   	Exceptionr   r   s    rd   r   zHttpParser.feed_eof1  s    + ))+++#'D   z /""4:...{ ;;r?f,,K&&s+++i(( ; ;--dk::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;ts   B<<C C r<   rc   dataSEPEMPTYCONTENT_LENGTHMETH_CONNECTSEC_WEBSOCKET_KEY1c                 r   g }| j         r| j         |z   dc}| _         t          |          }d}	| j        }
| j        }d}|	|k     rT| j        O| j        sG|                    ||	          }||	k    r| j        s|t          |          z   }	M||	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           t"                   ffd} |            }|j        v rt'          |          j        ot+          j                  | _        t-          d| j                  }t-          dd          }| j        J |t2          v pt5          |o|t6          v           }|s||dk    sj        r| j        s{t;          | j        | j        |
| j                  }tA          ||j        |j!        | j"        | j#        | j$        | j%        | j&        | j        | j        |          }|j'        s|| _        n||k    rtQ          tR                    sJ t;          | j        | j        |
| j                  }d| _        tA          |j        j!        | j$        | j%        | j&        | j        | j        |	  	        | _        n|s|| j*        rzt;          | j        | j        |
| j                  }tA          ||j        |j!        | j"        | j#        | j$        | j%        | j&        | j        | j        |          }|j'        s|| _        ntV          }|                    |f           j,        }nJ||	d          | _         t          | j                   | j        k    r%t          | j         d d         dz   | j                  |}n| j        | j        r
| j        rJ n|r|	|k     r| j        rJ | j        J 	 | j        -                    ||	d          |          \  }}n~# t\          $ rq}|}| j/        "| /                    ta          |                    }tc          | j        j2        ||           d}d}tQ          |t&          tf          f          r Y d }~nd }~ww xY w|rd}	t          |          }d | _        Rnn|	|k     T|r|	|k     r||	d          }n|}|| j        |fS )Nrc   r   FzData after `Connection: close`r=      r   r   zToo many headers receivedr   r   c                      j                                       } | d S t                              |           st	                    t          |           S r   )rU   r   rC   r   r-   rh   )
length_hdrr   msgs    rd   get_content_lengthz0HttpParser.feed_data.<locals>.get_content_length}  sT    ),)H)HJ)1'+t
 $*#3#3J#?#? D&3N&C&C C#&z??2rc   rQ   rf   )r   r   r   )lengthrZ   rQ   rX   rf   r   r   r   headers_parserr}   r   max_trailersT)rQ   rX   r   r   r   r}   r   r   )4r   r   r   r}   r   r   findr   r'   rstripr/   r   r   r~   r   clearr   rh   rU   r-   rY   r   getattrrQ   r   r#   ra   r"   rZ   r4   r   r   HttpPayloadParserrX   rf   r   r   r   r   done
isinstancer:   r   r3   rW   	feed_dataBaseExceptionr   r_   r&   payloadr0   )r   r   r   r   r   r   r   messagesdata_len	start_posr   max_line_lengthrW   posr   r   r   r   rQ   rf   
empty_bodyr   payload_parsereofunderlying_excreraised_excr   s       `                     @rd   r   zHttpParser.feed_dataA  s    : 	6#zD0#D$*t99	y,("" #+DN+iiY//)##DK# #c#hhI)### O,-MNNN  	#.De||#{{5114yy?22)$tt*v*=OOOK&&t,,,&*&9O4;''$*:::,-HIII #c#hhI {2%//'+'7#dk:J:J'J0)-););DK)H)HC K--////DK--////3HSM 3 3 3 3 3 3 3 "4!3!5!5-<<"/0B"C"CC), *9NK: : ")h!D!D&sFA66#}888%)-D%D &"Cv1C'CI I
  * H4$0VaZZCKZ$(N 6@ '3 $&*j%)&*k	' ' 'G .? ''-(+'-,/O%)Y373J040E$(H/3/C.2.@/3/B-9. . .N $2#6 F7E 4#|33#-c3D#E#EEEE&2 $&*j%)&*k	' ' 'G .2DN3D ''*z,/O040E$(H/3/C.2.@/3/B-9
4 
4 
4D00 ", 44CV&2 $&*j%)&*k	' ' 'G .? ''-(+'-,/O%)Y373J040E$(H/3/C.2.@/3/B-9. . .N $2#6 F7E 4&3G g777'*'7!%ijj!1DJ4:);;;)$*TcT*:V*CTEWXXX D %-$.-;&&&  )h..;&&&+777 $ 4 > >tIJJ?OQT U UIC$   #1L-9'+'='=c.>Q>Q'R'R!,4$&   CD!&8M(N       $   !I"4yyH+/D(	 { (""~  	I((	

#DDD--s%   F9 9G&S7 7
U2A'U--U2rT   c                 ^   | 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 )zParses RFC 5322 headers from a stream.

        Line continuations are supported. Returns list of header name
        and value pairs. Header name is in upper case.
        NFrb   c                     h | ]N}d  |                     d          D             D ],}||                                |                                -OS )c              3   @   K   | ]}|                     d           V  dS ) 	N)r   ).0parts     rd   	<genexpr>z5HttpParser.parse_headers.<locals>.<setcomp>.<genexpr>3  s.      RRDdjj//RRRRRRrc   ,)r   r   r   )r   
conn_valuetokens      rd   	<setcomp>z+HttpParser.parse_headers.<locals>.<setcomp>0  s{       RRJ<L<LS<Q<QRRR  	 #]]__	   rc   closeTz
keep-aliverY   r   >   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   rU   rV   
close_connencodingrY   rZ   conn_valuesconn_tokensencr   s               rd   r   zHttpParser.parse_headers  sg     $3AA%HH
 nnT_b99 	 "-  K +%%!

,,"
 K''GKK,E,E' kk$/44;;== 	SYY[[,MMMH [[/00>""2&& "g--$L   j(GWMMrc   valc                     || _         dS )zZSet connection upgraded (to websocket) mode.

        :param bool val: new state.
        N)r   )r   r  s     rd   set_upgradedzHttpParser.set_upgradedR  s    
 rc   )NNr   r{   r   r{   NNNNTFT)%r\   r]   r^   r   r   ra   r`   r   r   asyncioAbstractEventLooprh   r%   r_   r   r   r   abcabstractmethodr	   r   ri   r   r   r   r   r   r   r   _SEPr   r   r4   r   r5   r   r  rb   rc   rd   r7   r7      s        C$ ,048!",0" $;?#'$ $&
 &
<(&
 w01&
 	&

 &
 &
 &
 ()&
 sm&
 &
 $D$78&
 !&
 &
 &
 
&
 &
 &
 &
P 	=4;=5=== =22222 2(5/    & #2 -#'#:Y. Y.Y. Y. 	Y.
 Y. Y. !Y. 
tE%-./u<	=Y. Y. Y. Y.v4N%[4N	Xd^Xc]DRVV
4N 4N 4N 4Nl       rc   r7   c                   >    e Zd ZdZdee         defdZdede	fdZ
dS )r8   zRead request status line.

    Exception .http_exceptions.BadStatusLine
    could be raised in case of any errors in status line.
    Returns RawRequestMessage.
    r   r   c                 n   |d                              dd          }	 |                    dd          \  }}}n# t          $ r t          |          d w xY wt                              |          st          |          t                              |          }|t          |          t          t          |
                    d                    t          |
                    d                              }|dk    rt          j        |d	
          }n|                    d          rK|                    d          \  }	}
}|	                    d          \  }	}}t          j        |	||d	          }np|dk    r|dk    rt          |d	          }nRt          |d	          }|j        dk    r6t!          |                    d                               d                    |                     |dd                    \  }}}}}}||t&          k    rd	}nd}t)          ||||||||||
  
        S )Nr   r   r    rl   maxsplitr   CONNECTT)	authorityencoded/#?)rR   query_stringfragmentr   *OPTIONS)r   r   )errorslatin1F)r   r   r   r(   r@   r   rB   r)   r1   rh   groupr   build
startswith	partitionschemer.   encoder   r2   r:   )r   r   r   rQ   rR   rS   match	version_or[   	path_part_hash_separatorurl_fragment_question_mark_separatorqs_partrU   rV   r  rX   rY   rZ   s                       rd   r   zHttpRequestParser.parse_messageb  sw   Qxw(9::	0$(JJsQJ$?$?!FD'' 	0 	0 	0%%4/	0   (( 	('''   ))=%%%EKKNN 3 3SQ5H5HII	Y )dD999CC__S!! 	 8<~~c7J7J4I;D;N;Ns;S;S8I/ )$%	  CC S[[Vy00dD)))CC dD)))CzR%KK'8K99@@JJ   uQRRy))	
 =M)) 
 
 	
s	   : Ar   c                     |                     dd          d                             d          }|                                r|                                dk    rdS t	          d          )	Nr   r   r  r   r   rZ   Tz'Request has invalid `Transfer-Encoding`)rsplitr   r   r   r'   r   s     rd   r   z HttpRequestParser._is_chunked_te  s`    YYsQY''+11%88::<< 	BHHJJ)334FGGGrc   N)r\   r]   r^   __doc__r	   r   r:   r   r_   ra   r   rb   rc   rd   r8   r8   Z  sv         N
4; N
3D N
 N
 N
 N
`H H H H H H H Hrc   r8   c                        e Zd ZdZe Z	 ddedee         de	de	de
ee
eef                  eef         f
 fdZd	ee         defd
ZdedefdZ xZS )r9   zRead response status line and headers.

    BadStatusLine could be raised in case of any errors in status line.
    Returns RawResponseMessage.
    Nr   r   argskwargsr   c                 Z    |t           rdnd} t                      j        ||g|R i |S )Nr<   r=   )r!   superr   )r   r   r   r;  r<  	__class__s        rd   r   zHttpResponseParser.feed_data  sA     ;"-''C uww s<T<<<V<<<rc   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   r  r   rl   rm   Tr      >   0     F)r   r   r   r)   r   rB   r   r1   rh   r*  r   rC   r   r2   r   r   r  r;   )r   r   r   rS   statusrg   r0  r1  status_irU   rV   r  rX   rY   rZ   s                  rd   r   z HttpResponseParser.parse_message  s%   Qxw(9::	0"jj!j44OGVV 	0 	0 	0%%4/	0	#\\1\55NFFF 	 	 	\\^^FFFF	
   ))=%%%EKKNN 3 3SQ5H5HII	 v;;!6#3#3F#;#;%%%v;; uQRRy))	
 =M))&&&&3&&&&(j*@*@$//43IW3T3T !LLNN

 

 
	
s   8 AA1 1 BBr   c                     |                     dd          d                             d                                          dk    S )Nr   r   r  r   r   rZ   )r8  r   r   r   s     rd   r   z!HttpResponseParser._is_chunked_te
  s<    yyqy))"-33E::@@BBiOOrc   r   )r\   r]   r^   r9  r!   r   r   r   r  r   r   r	   r;   r4   ra   r   r   r_   r   __classcell__)r?  s   @rd   r9   r9     s          )C
 #	= 	=	= d^	= 		=
 	= 
tE,l:;<dEI	J	= 	= 	= 	= 	= 	=8
4; 8
3E 8
 8
 8
 8
tP P P P P P P P P Prc   r9   c                       e Zd Z	 	 	 	 	 	 	 	 ddddddedee         d	ed
ee         dee         dee         dedededededededdfdZ	ddZ
	 ddedededeeef         fdZdS ) r   NFTr{   r   )r}   r   r   r   r   rZ   rX   rf   rQ   r   r   r   r   r}   r   r   r   c
                4   d| _         t          j        | _        t          j        | _        d| _        d| _        || _	        |	| _
        |
| _        || _        || _        || _        g | _        d| _        |r|r| j	        rt#          ||          }n|}|s-t          j        | _        |                                 d| _        nT|rt          j        | _        n@|>t          j        | _        || _         | j         dk    r|                                 d| _        || _        d S )Nr   rc   FT)_lengthrk   rq   _typers   ru   _chunk_chunk_size_chunk_tailr   r   r   _max_line_size_max_field_size_max_trailers_trailer_linesr   DeflateBufferrn   r   rp   ro   r   )r   r   r   rZ   rX   rf   rQ   r   r   r   r   r}   r   r   real_payloads                  rd   r   zHttpPayloadParser.__init__  s2   " /
 3 /	-+-)+-	  	#+ 	#$2G 	#?L@ @LL #L " 	!#.DJ!!###DII 	!#1DJJ#0DJ!DL|q  %%''' 	#rc   c                     | j         t          j        k    r| j                                         d S | j         t          j        k    rt          d          | j         t          j        k    rt          d          d S )Nz1Not enough data to satisfy content length header.z2Not enough data to satisfy transfer length header.)	rK  rk   rq   r   r   ro   r+   rp   r0   r   s    rd   r   zHttpPayloadParser.feed_eofH  s    :333L!!#####Z:222$C   Z:333'D   43rc   r<      ;chunkr   	CHUNK_EXTc                 *   | j         t          j        k    r| j        }t	          |          }||k    rM||z
  | _        | j                            ||           | j        dk    r| j                                         dS nd| _        | j                            |d |         |           | j                                         d||d          fS | j         t          j        k    rr| j	        r| j
        t          j        k    sJ | j        }| j
        t          j        k    r| j        }t	          | j	                  |k    r t!          | j	        d d         dz   |          | j	        |z   }d| _	        |r| j
        t          j        k    r|                    |          }|dk    r|                    |d|          }|dk    rB|d |         }	d|||         x}
v r)t'          d|
          }t)          | j        |           |n
|d |         }	| j        r|	                                }	t/          j        t2          |	          sBt'          |d |                             d	d
                    }t)          | j        |           |t7          t9          |	          d          }||t	          |          z   d          }|dk    r8t          j        | _
        | j        r|                    d          r
|dd          }n;t          j        | _
        || _        | j                                         n	|| _	        dS | j
        t          j        k    r| j        }t	          |          }||k    r'||z
  | _        | j                            ||           dS d| _        | j                            |d |         |           ||d          }t          j         | _
        | j        !                                 | j
        t          j         k    r| j        r|                    d          r
|dd          }|d t	          |                   |k    r)|t	          |          d          }t          j        | _
        njt	          |          t	          |          k    s||d t	          |                   k    r&t'          d          }t)          | j        |           ||| _	        dS | j
        t          j        k    rj|                    |          }|dk     r	|| _	        d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tM          d          | j#        d         dk    rx	 | j'        (                    | j#                  \  }}| j#        )                                 n# | j#        )                                 w xY w| j                                         d|fS |n=| j         t          j*        k    r(| j                            |t	          |                     dS )Nr   )Trc   Tr   r   rc   r=   z"Unexpected LF in chunk-extension: asciir      r   r   )Frc   z3Chunk size mismatch: expected CRLF after chunk datazToo many trailers receivedr   )+rK  rk   ro   rJ  r   r   r   r   rp   rN  rL  rs   rv   rO  ry   rP  r/   ru   r   r0   r&   r   r   rer   rD   r   rh   r   r,  rM  begin_http_chunk_receivingrw   end_http_chunk_receivingr   rR  r   rQ  r'   r   r   r   rq   )r   rW  r   rX  required	chunk_lenr   r   isize_bextexcsizer   trailersraw_trailerss                   rd   r   zHttpPayloadParser.feed_dataT  s    :000|HE

I9$$')3&&ui888<1$$L))+++$9 %  !&&uYhY'7BBB%%'''U899--- Z:333 '{j&DDDDD"&"5;*";;;&*&:Ot'((?::%d&6tt&<v&EWWW(50#&  j+ ;*"???**S//Caxx!JJy!S9966%*2A2YF$ae)<==&;$P$P$P'" '" !.dlC @ @ @&)	  > &+4C4[F9 4%+\\^^F!|Iv>> &"7 %dsd 2 27<M N N# #C *$,<<<"%I"5=="55 %cCHHn&6&6 7199*4*CDK#y 2U-=-=e-D-D 2(-abb	*4*HDK/3D, LCCEEEE+0()z ;*"@@@#/H #E

I)+++3i+?(..ui@@@)z+,(..uYhY/?JJJ %hii 0&0&H==??? ;*"DDDy *U%5%5e%<%< * %abb	Zs3xxZ(C// %c#hhjj 1&0&CUs3xx//5C#e**<M3M3M3Q  &dlC888!	+0()z;*";;;**S//CQww+0()z #;D!#C."2"23Ee||#{{5114yy4#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8595I5W5W $ 36 62Hl !/557777D/557777--///#U{*U  j+Z Z:555L""5#e**555zs   "X X2)NFNNNTTFr   N)r<   rV  )r\   r]   r^   r4   r   rh   ra   r_   r6   r   r   r   r  r   r   rb   rc   rd   r   r     s_        !%%)" $#' $6$ ""6$ 6$ 6$6$ 6$ 	6$
 c]6$ sm6$ 6$ !6$ 6$ 6$ &6$ 6$ 6$ 6$  
!6$ 6$ 6$ 6$p
 
 
 
 EIS SS!%S<AS	tU{	S S S S S Src   r   c            	           e Zd ZU dZeed<   efdedee	         de
ddfdZefd	ed
eddfdZdede
ddfdZddZddZddZdS )rS  zDDeflateStream decompress stream and feed data into specified stream.decompressoroutr  max_decompress_sizer   Nc                 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  )rk  re  total_compressed_bytesr  _started_decodingr   r*   r   rj  r   r   r   _max_decompress_size)r   rk  r  rl  s       rd   r   zDeflateBuffer.__init__  s     	%)Y" !&Xt *.   !3 4 4D *6   !1 2 2D 0( C C CD$7!!!rc   rd  	exc_causec                 2    t          | j        ||           d S r   )r&   rk  )r   rd  rq  s      rd   r&   zDeflateBuffer.set_exception  s    
 	dhY/////rc   rW  re  c                 "   |sd S | xj         |z  c_         | j         | j        _        | j        s5| j        dk    r*|d         dz  dk    rt          | j        d          | _        	 | j                            || j        dz             }n%# t          $ r t          d	| j        z            w xY wd| _        t          |          | j        k    rt          d
| j        z            |r*| j                            |t          |                     d S d S )Nr  r         T)r  suppress_deflate_headerr   )
max_lengthz#Can not decode content-encoding: %sz:Decompressed data exceeds the configured limit of %d bytes)re  rk  rn  ro  r  r   rj  decompress_syncrp  r   r*   r   r,   r   )r   rW  re  s      rd   r   zDeflateBuffer.feed_data  sZ    	F		T		*.)' &		**a3!## !1! ! !D	%55$";a"? 6  EE  	 	 	&5E  	
 "& u::111%L+,  
  	2Huc%jj11111	2 	2s   #$B "B*c                     | j                                         }|s| j        dk    rN| j                            |t          |                     | j        dk    r| j         j        st          d          | j        	                                 d S )Nr   r  )
rj  flushre  rk  r   r   r  r   r*   r   )r   rW  s     rd   r   zDeflateBuffer.feed_eofA  s    !'')) 	6DIMMHuc%jj111}	))$2C2G)*9555rc   c                 8    | j                                          d S r   )rk  r]  r   s    rd   r]  z(DeflateBuffer.begin_http_chunk_receivingK  s    ++-----rc   c                 8    | j                                          d S r   )rk  r^  r   s    rd   r^  z&DeflateBuffer.end_http_chunk_receivingN  s    ))+++++rc   rh  )r\   r]   r^   r9  r   r`   r   r4   r   r_   rh   r   r    r   r&   r   r   r   r]  r^  rb   rc   rd   rS  rS    s        NN $?	8 88 3-8 !	8
 
8 8 8 8F $10 00 !0 
	0 0 0 0)2u )2C )2D )2 )2 )2 )2V   . . . ., , , , , ,rc   rS  )r8   r9   r:   r;   )nr  r  r\  string
contextlibr   enumr   typingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   	multidictr   r   r   yarlr   r   r   base_protocolr   compression_utilsr   r   r   r   r   r   helpersr    r!   r"   r#   r$   r%   r&   http_exceptionsr'   r(   r)   r*   r+   r,   r-   r.   r/   r0   http_writerr1   r2   streamsr3   r4   typedefsr5   __all__r  set	printabler>   r_   r`   escaper?   compiler@   rA   ASCIIrB   rC   rD   r   	frozensetrO   r:   r;   ri   rk   rs   r6   ra   r   ABCr7   r8   r9   r   rS  HttpRequestParserPyHttpResponseParserPyRawRequestMessagePyRawResponseMessagePy_http_parserHttpRequestParserCHttpResponseParserCRawRequestMessageCRawResponseMessageCImportErrorrb   rc   rd   <module>r     s   




  				                                            " : 9 9 9 9 9 9 9 9 9             ' ' ' ' ' '                                                        4 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0             ~C 011%C/ 1 1 1 (bi(9::s : : :)rz*J*J*J*JKKws|	 K K K5?RZ6 6 uWS\2    )bj);RXFFgcl F F F(bj::gcl : : :#-2:.>#?#?	5  ? ? ? ,59  , , 53(    
 
 
 
 

 
 
 
	 	 	 	 	 	 	 	 	*,>??              Y? Y? Y? Y? Y? Y? Y? Y?x=#3C#8 =T = = = =W W W W W'%. W W Wt
^H ^H ^H ^H ^H
#45 ^H ^H ^HBQP QP QP QP QP$67 QP QP QPhX X X X X X X Xve, e, e, e, e, e, e, e,P ( ) ' ) 	 1	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 /0.01 1  	 	 	DD	s   J" "J+*J+