
    i                        % S SK r S SKrS SKrS SKrS SKJr  S SKJr  S SKJ	r	J
r
JrJrJrJrJrJrJrJrJrJrJrJr  S SKJrJrJr  S SKJr  SSKJr  SS	KJ r   SS
K!J"r"J#r#J$r$J%r%J&r&J'r'  SSK(J)r)J*r*J+r+J,r,J-r-J.r.J/r/  SSK0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9J:r:  SSK;J<r<J=r=  SSK>J?r?J@r@  SSKAJBrB  SrC\S   rD\E" \R                  5      rG\\\H      \IS'   \R                  " S5      rK\\H   \IS'   \R                  " S\K S35      rM\\\H      \IS'   \R                  " S5      rN\\\H      \IS'   \R                  " S\R                  5      rP\\\H      \IS'   \R                  " S\R                  5      rQ\\\H      \IS'   \R                  " S5      rR\\\S      \IS'   \T" 1 S k5      rU\\T\H      \IS!'    " S" S#\5      rV " S$ S%\5      rW\" S&\V\W5      rX " S' S(\5      rY " S) S*\5      rZ " S+ S,5      r[S-\\H   S.\\4S/ jr] " S0 S1\ R                  \\X   5      r_ " S2 S3\_\V   5      r` " S4 S5\_\W   5      ra " S6 S75      rb " S8 S95      rc\`rd\are\Vrf\Wrg \-(       d  SS:KhJ`r`JaraJVrVJWrW  \`ri\arj\Vrk\Wrlgg! \m a     gf = f);    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>
   etaghostserver
user-agentcontent-typemax-forwardscontent-rangecontent-lengthcontent-locationtransfer-encodingSINGLETON_HEADERSc                       \ rS rSr% \\S'   \\S'   \\S'   S\S'   \\S'   \\S'   \	\   \S	'   \\S
'   \\S'   \
\S'   Srg)r:   q   methodpathversionCIMultiDictProxy[str]headersraw_headersshould_closecompressionupgradechunkedurl N)__name__
__module____qualname____firstlineno__str__annotations__r1   r5   boolr   r   __static_attributes__r]       @/app/mltbenv/lib/python3.13/site-packages/aiohttp/http_parser.pyr:   r:   q   s=    K
I$$#MM	Hrf   r:   c                   |    \ rS rSr% \\S'   \\S'   \\S'   \\   \S'   \	\S'   \
\S'   \\   \S'   \
\S	'   \
\S
'   Srg)r;   ~   rT   codereasonrV   rW   rX   rY   rZ   r[   r]   N)r^   r_   r`   ra   r1   rc   intrb   r   r5   rd   r   re   r]   rf   rg   r;   r;   ~   s=    
IKc""#MMrf   r;   _MsgTc                   $    \ rS rSrSrSrSrSrSrg)
ParseState   r   r         r]   N)	r^   r_   r`   ra   
PARSE_NONEPARSE_LENGTHPARSE_CHUNKEDPARSE_UNTIL_EOFre   r]   rf   rg   ro   ro      s    JLMOrf   ro   c                   (    \ rS rSrSrSrSrSrSrSr	g)	
ChunkState   r   r   rq   rr      r]   N)
r^   r_   r`   ra   PARSE_CHUNKED_SIZEPARSE_CHUNKED_CHUNKPARSE_CHUNKED_CHUNK_EOFPARSE_MAYBE_TRAILERSPARSE_TRAILERSre   r]   rf   rg   rx   rx      s    Nrf   rx   c                   `    \ rS rSr    SS\S\S\S\SS4
S jjrS	\\   S\	S
\
4   4S jrSrg)r6      max_line_sizemax_headersmax_field_sizelaxreturnNc                 4    Xl         X l        X0l        X@l        g N)r   r   r   _lax)selfr   r   r   r   s        rg   __init__HeadersParser.__init__   s     +&,	rf   linesrU   c                 d   [        5       n/ nSnX   n[        U5      nU(       Ga\   UR                  SS5      u  px[        U5      S:X  a  [	        U5      eUS   US   1SS1-  (       a  [	        U5      eUR                  S5      nUR                  SS	5      n	[        R                  U	5      (       d  [	        U5      eUS-  nX   nU R                  =(       a    U=(       a    US   S
;   n
U
(       a  [        U5      nU/nU
(       a  U[        U5      -  nXR                  :  a3  US-   SR                  U5      -   n[        US S S-   U R                  5      eUR                  U5        US-  nXF:  a  X   nU(       a  US   S
;   n
OSnO	U
(       a  M  SR                  U5      nUR                  S5      nUR                  SS	5      nU R                  (       a  SU;   d  SU;   d  SU;   a  [	        U5      eO%[        R!                  U5      (       a  [	        U5      eU R                  (       d,  X;   a'  U	R#                  5       [$        ;   a  ['        SU	 S35      eUR)                  X5        UR                  Xx45        U(       a  GM\  [+        U5      [-        U5      4$ ! [         a    [	        U5      S ef = f)Nr      :r       	   s    	utf-8surrogateescape)r   r   s   : rf   d      ...
 zDuplicate 'z' header found.)r   lensplit
ValueErrorr-   lstripdecoder@   	fullmatchr   r   joinr/   appendstriprA   searchlowerrO   r'   addr   tuple)r   r   rV   rW   	lines_idxline
line_countbnamebvaluenamecontinuationheader_length
bvalue_lstheader_linevalues                  rg   parse_headersHeadersParser.parse_headers   s    %0M	Z
4 $

4 3 5zQ#E** a%)$Aw.#D))]]6*F<<):;D$$T**#E** NI#D  99DD$q'W2DL  #F$X
"!SY.M$':'::&+emchhz6J&J)'-68K8K  %%d+ NI -$/+/7g+=L"# #l$ *-\\&)FMM'+<=E yy5=DEMVu_'// 6E.55e<<#F++99TZZ\EV5V${4&%HIIKK$/ dB !)5+=>>{  4#D)t34s   J J/)r   r   r   r   )  i   r   F)r^   r_   r`   ra   rl   rd   r   r	   bytesr   r5   r   re   r]   rf   rg   r6   r6      sl     " "

 
 	

 
 

L?%[L?	&
2	3L?rf   r6   rV   r   c                     U R                  [        R                  S5      nUR                  5       =(       a    UR	                  5       S;   $ )z)Check if the upgrade header is supported. >   tcp	websocket)getr   UPGRADEisasciir   )rV   us     rg   _is_supported_upgrader      s3    DLL"%A99;<1779(<<<rf   c                      \ rS rSr% Sr\\   \S'                S'S\\	   S\\
R                     S\S\S	\S
\S\\   S\\   S\\   S\\\      S\S\S\SS4S jjr\R&                  S\\   S\4S j5       r\R&                  S\S\4S j5       rS\\   4S jrSS\R6                  \R8                  \R:                  4S\S\S\S\S\S \S\ \\ \\!4      \\4   4S! jjr"S\\   S\ S"\#\\   \\   \\4   4S# jr$S$\SS4S% jr%S&r&g)(r7      Fr   Nprotocollooplimitr   r   r   timerrj   rR   payload_exceptionresponse_with_bodyread_until_eofauto_decompressr   c                 (   Xl         X l        X@l        XPl        X`l        XPl        Xpl        Xl        Xl        Xl        Xl	        Xl
        / U l        SU l        SU l        S U l        S U l        Xl        X0l        [%        XEX`R&                  5      U l        g )Nrf   F)r   r   r   r   r   r   rj   rR   r   r   r   _lines_tail	_upgraded_payload_payload_parser_auto_decompress_limitr6   r   _headers_parser)r   r   r   r   r   r   r   r   rj   rR   r   r   r   r   s                 rg   r   HttpParser.__init__  s      !	*&,&
	!2"4,#%
<@ /, 
rf   r   c                     g r   r]   )r   r   s     rg   parse_messageHttpParser.parse_message+  s    :=rf   tec                     g r   r]   r   r   s     rg   _is_chunked_teHttpParser._is_chunked_te.  s    /2rf   c                    U R                   b"  U R                   R                  5         S U l         g U R                  (       a%  U R                  R	                  U R                  5        U R                  (       ab  U R                  S   S:w  a  U R                  R	                  S5        [        [        5         U R                  U R                  5      sS S S 5        $ g ! , (       d  f       g = f)Nr   z
rf   )r   feed_eofr   r   r   r   	Exceptionr   r   s    rg   r   HttpParser.feed_eof1  s    +  ))+#'D   zz""4::.{{;;r?f,KK&&s+i(--dkk: )( )(s   4C
C(r<   rf   dataSEPEMPTYCONTENT_LENGTHMETH_CONNECTSEC_WEBSOCKET_KEY1c                   ^^ / nU R                   (       a  U R                   U-   Ssol         [        U5      nSn	U R                  n
U R                  nSnX:  Ga  U R                  Gc  U R
                  (       Gd  UR                  X)5      nX:X  a!  U R                  (       d  U[        U5      -   n	M]  X:  Gac  U(       a  [        S5      eXU nUS:X  a  UR                  S5      n[        U5      U:  a  [        US S S-   U5      eU R                  R                  U5        U R                  n[        U R                  5      U R                  :  a  [        S	5      eU[        U5      -   n	U R                  S
   U:X  Ga  U R                  [        U R                  5      -
  n U R                  U R                  5      mU R                  R                  5         S[         ["           4UU4S jjnU" 5       nUTR$                  ;   a  ['        U5      eTR(                  =(       a    [+        TR$                  5      U l        [-        TSU R.                  5      n[-        TSS5      nU R0                  c   eU[2        ;   =(       d    [5        U=(       a	    U[6        ;   5      nU(       d  Ub  US:  d  TR8                  (       a  U R
                  (       d  [;        U R0                  U R<                  U
U R>                  S9n[A        UUTR8                  UTRB                  U RD                  U RF                  U RH                  U RJ                  U RL                  U R                  U R                  US9nURN                  (       d  UU l        GO~UU:X  a  [Q        T[R        5      (       d   e[;        U R0                  U R<                  U
U R>                  S9nSU l        [A        UTR.                  TRB                  U RH                  U RJ                  U RL                  U R                  U R                  US9	U l        OU(       d  Uc  U RT                  (       a  [;        U R0                  U R<                  U
U R>                  S9n[A        UUTR8                  UTRB                  U RD                  U RF                  U RH                  U RJ                  U RL                  U R                  U R                  US9nURN                  (       d  UU l        O[V        nUR                  TU45        TRX                  nOXS  U l         [        U R                   5      U R                  :  a&  [        U R                   S S S-   U R                  5      eUnOU R                  c%  U R
                  (       a  U R                  (       a   eOxU(       ah  X:  ac  U R                  (       a   eU R                  c   e U R                  R[                  XS  U5      u  nnU(       a  Sn	[        U5      nS U l        GM  OOX:  a  GM  U(       a
  X:  a  XS  nOUnXpR
                  U4$ ! U R                  R                  5         f = f! [\         at  nUnU R^                  b  U R_                  [a        U5      5      n[c        U R                  Rd                  UU5        SnSn[Q        U[&        [f        45      (       a  e  S nANS nAff = f)Nrf   r   FzData after `Connection: close`r=      r   r   zToo many headers receivedr   r   c                     > TR                   R                  T5      n U c  g [        R                  U 5      (       d  [	        T5      e[        U 5      $ r   )rV   r   rC   r   r-   rl   )
length_hdrr   msgs    rg   get_content_length0HttpParser.feed_data.<locals>.get_content_length}  sF    ),)HJ)1'+
 $*#3#3J#?#?&3N&C C#&z?2rf   rR   rj   )r   r   r   )lengthr[   rR   rY   rj   r   r   r   headers_parserr   r   max_trailersT)rR   rY   r   r   r   r   r   r   )4r   r   r   r   r   r   findr   r'   rstripr/   r   r   r   r   clearr   rl   rV   r-   rZ   r   getattrrR   r   r#   rd   r"   r[   r4   r   r   HttpPayloadParserrY   rj   r   r   r   r   done
isinstancer:   r   r3   rX   	feed_dataBaseExceptionr   rb   r&   payloadr0   )r   r   r   r   r   r   r   messagesdata_len	start_posr   max_line_lengthrX   posr   r   r   r   rR   rj   
empty_bodyr   payload_parsereofunderlying_excreraised_excr   s       `                     @rg   r   HttpParser.feed_dataA  s    ::#zzD0#D*t9	yy,," ##+DNNNii/#DKK #c#hI##,-MNN  #.De|#{{514y?2)$t*v*=OOKK&&t,&*&9&9O4;;'$*:*::,-HII #c#hI {{2%/'+'7'7#dkk:J'J0)-););DKK)HC KK--/3HSM 3 3 "4!5-<"/0B"CC), *9NKK: ")h!D&sFA6#}}888%)-D%D &"Cv1C'CI
  *$0VaZCKK$(NN&2 $&*jj%)&*kk	'G .? ''-(+'-,/OO%)YY373J3J040E0E$(HH/3/C/C.2.@.@/3/B/B-9.N $2#6#67E 4#|3#-c3D#E#EE#E&2 $&*jj%)&*kk	'G .2DN3D ''*zz,/OO040E0E$(HH/3/C/C.2.@.@/3/B/B-9
4D0 ",4CVCV&2 $&*jj%)&*kk	'G .? ''-(+'-,/OO%)YY373J3J040E0E$(HH/3/C/C.2.@.@/3/B/B-9.N $2#6#67E 4&3G g7'*'7'7!%j!1DJ4::););;)$**Tc*:V*CTEWEWXX D %%-$..;;& ).;;&++777 $ 4 4 > >tJ?OQT UIC&  !I"4yH+/D(	  { "~ I(
#DD-- !KK--/@ % #1L--9'+'='=c.>Q'R!,,44$& CD!&8M(N  s%   X9 !Y 9Y
["A*[[rU   c                 6   U R                   R                  U5      u  p#SnSnSnSnUR                  [        R                  S5      nU(       a  U V	V
s1 s HS  n	S U	R                  S5       5         H3  n
U
(       d  M  U
R                  5       (       d  M#  U
R                  5       iM5     MU     nn	n
SU;   a  SnOSU;   a  SnS	U;   a&  UR                  [        R                  5      (       a  SnUR                  [        R                  S
5      nUR                  5       (       a  UR                  5       S;   a  UnUR                  [        R                  5      nUb7  U R                  U5      (       a  Sn[        R                  U;   a  [        S5      eX#XEXg4$ s  sn
n	f )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.
NFr]   c              3   B   #    U  H  oR                  S 5      v   M     g7f) 	N)r   ).0parts     rg   	<genexpr>+HttpParser.parse_headers.<locals>.<genexpr>3  s     R<QDjj//<Qs   ,closeTz
keep-aliverZ   r   >   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   rV   rW   
close_connencodingrZ   r[   conn_values
conn_valuetokenconn_tokensencr   s                 rg   r   HttpParser.parse_headers  s{     $33AA%H
 nnT__b9 #."-JRJ<L<LS<QRE  #]]_ R "-   +%!
,"
 K'GKK,E,E kk$//4;;==SYY[,MMH [[//0>""2&&""g-$L  jGMMAs   'F=FFvalc                     Xl         g)zJSet connection upgraded (to websocket) mode.

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

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

Exception .http_exceptions.BadStatusLine
could be raised in case of any errors in status line.
Returns RawRequestMessage.
r   r   c                    US   R                  SS5      n UR                  SSS9u  p4n[        R                  U5      (       d  [        U5      e[        R                  U5      nUc  [        U5      e[        [        UR                  S5      5      [        UR                  S5      5      5      nUS:X  a  [        R                  " US	S
9nOUR                  S5      (       a@  UR                  S5      u  pnU	R                  S5      u  pn[        R                  " U	UUS	S9nOXUS:X  a  US:X  a  [        US	S9nOA[        US	S9nUR                  S:X  a'  [!        UR#                  SS9R                  S5      5      eU R%                  USS  5      u  nnnnnnUc  U[&        ::  a  S	nOSn[)        UUUUUUUUUU5
      $ ! [         a    [        U5      S ef = f)Nr   r   r    rq   maxsplitr   CONNECTT)	authorityencoded/#?)rS   query_stringfragmentr/  *OPTIONS)r/  r   )errorslatin1F)r   r   r   r(   r@   r   rB   r)   r1   rl   groupr   build
startswith	partitionschemer.   encoder   r2   r:   )r   r   r   rR   rS   rT   match	version_or\   	path_part_hash_separatorurl_fragment_question_mark_separatorqs_partrV   rW   r  rY   rZ   r[   s                       rg   r   HttpRequestParser.parse_messageb  s   Qxw(9:	0$(JJsQJ$?!F'
   ((''   )=%%EKKN 3SQ5HI	Y ))dD9C__S!! 8<~~c7J4I;D;N;Ns;S8I ))$%	C S[Vy0dD)C dD)CzzR%KK'8K9@@J  uQRy)	
 =M) 
 	
}  	0%4/	0s   F9 9Gr   c                     UR                  SSS9S   R                  S5      nUR                  5       (       a  UR                  5       S:X  a  g[	        S5      e)	Nr  r   r+  r   r  r[   Tz'Request has invalid `Transfer-Encoding`)rsplitr   r   r   r'   r   s     rg   r    HttpRequestParser._is_chunked_te  sK    YYsQY'+11%8::<<BHHJ)3FGGrf   r]   N)r^   r_   r`   ra   __doc__r	   r   r:   r   rb   rd   r   re   r]   rf   rg   r8   r8   Z  s9    N
4; N
3D N
`H H Hrf   r8   c                      ^  \ rS rSrSr\(       + r SS\S\\	   S\
S\
S\\\\\4      \\4   4
U 4S jjjrS	\\   S\4S
 jrS\S\4S jrSrU =r$ )r9   i  zRead response status line and headers.

BadStatusLine could be raised in case of any errors in status line.
Returns RawResponseMessage.
r   r   argskwargsr   c                 P   > Uc  [         (       a  SOSn[        TU ]  " X/UQ70 UD6$ )Nr<   r=   )r!   superr   )r   r   r   rL  rM  	__class__s        rg   r   HttpResponseParser.feed_data  s/     ;"U'Cw <T<V<<rf   r   c                 L   US   R                  SS5      n UR                  SS9u  p4 UR                  SS9u  pE[
        R                  U5      nUc  [        U5      e[        [        UR                  S5      5      [        UR                  S5      5      5      n[        U5      S:w  d  [        R                  U5      (       d  [        U5      e[        U5      nU R                  USS  5      u  n	n
nnnnUcR  U[        ::  a  S	nOES
Us=::  a  S:  d  O  US;   a  SnO-[        R                  U	;   d  [        R                   U	;   a  SnOS	n[#        UUUR	                  5       U	U
UUUU5	      $ ! [         a    [        U5      S ef = f! [         a    UR	                  5       nSn GNhf = f)Nr   r   r   r   r+  r   rq   rr   Tr      >   0     F)r   r   r   r)   r   rB   r   r1   rl   r9  r   rC   r   r2   r   r   r  r;   )r   r   r   rT   statusrk   r?  r@  status_irV   rW   r  rY   rZ   r[   s                  rg   r    HttpResponseParser.parse_message  s   Qxw(9:	0"jj!j4OG	#\\1\5NF   )=%%EKKN 3SQ5HI	 v;!6#3#3F#;#;%%v; uQRy)	
 =M)&3&(j*@$$/43I3IW3T !LLN

 
	
U  	0%4/	0
  	\\^FF	s   E) F )F F#"F#r   c                 h    UR                  SSS9S   R                  S5      R                  5       S:H  $ )Nr  r   r+  r   r  r[   )rH  r   r   r   s     rg   r   !HttpResponseParser._is_chunked_te
  s3    yyqy)"-33E:@@BiOOrf   r]   r   )r^   r_   r`   ra   rJ  r!   r   r   r   r'  r   r   r	   r;   r4   rd   r   r   rb   r   re   __classcell__)rP  s   @rg   r9   r9     s     )C
 #	=	= d^	= 		=
 	= 
tE,l:;<dEI	J	= 	=8
4; 8
3E 8
tP P P Prf   r9   c                       \ rS rSr        SSSSS.S\S\\   S\S	\\   S
\\   S\\   S\S\S\S\	S\S\S\SS4S jjjr
SS jr SS\S\S\S\\\4   4S jjrSrg)r   i  Nr   r"  )r   r   r   r   r   r[   rY   rj   rR   r   r   r   r   r   r   r   r   c
                x   SU l         [        R                  U l        [        R
                  U l        SU l        SU l        Xl	        Xl
        Xl        Xl        Xl        Xl        / U l        SU l        U(       a$  U(       a  U R                  (       a  [#        X5      nOUnU(       d-  [        R$                  U l        UR'                  5         SU l        ObU(       a  [        R(                  U l        OEUbB  [        R*                  U l        X l         U R                   S:X  a  UR'                  5         SU l        Xl        g )Nr   rf   FT)_lengthro   rv   _typerx   r{   _chunk_chunk_size_chunk_tailr   r   r   _max_line_size_max_field_size_max_trailers_trailer_linesr   DeflateBufferrs   r   ru   rt   r   )r   r   r   r[   rY   rj   rR   r   r   r   r   r   r   r   real_payloads                  rg   r   HttpPayloadParser.__init__  s    " //
 33 /	-+-)+-	 +$2G2G?L@L #L "#..DJ!!#DI#11DJ#00DJ!L||q %%' 	#rf   c                    U R                   [        R                  :X  a  U R                  R	                  5         g U R                   [        R
                  :X  a  [        S5      eU R                   [        R                  :X  a  [        S5      eg )Nz1Not enough data to satisfy content length header.z2Not enough data to satisfy transfer length header.)	r_  ro   rv   r   r   rt   r+   ru   r0   r   s    rg   r   HttpPayloadParser.feed_eofH  so    ::333LL!!#ZZ:222$C  ZZ:333'D  4rf   chunkr   	CHUNK_EXTc                 V   U R                   [        R                  :X  a  U R                  n[	        U5      nXE:  aQ  XE-
  U l        U R
                  R                  X5        U R                  S:X  a  U R
                  R                  5         g gSU l        U R
                  R                  US U U5        U R
                  R                  5         SXS  4$ U R                   [        R                  :X  GaW  U R                  (       a  U R                  [        R                  :w  d   eU R                  nU R                  [        R                  :X  a  U R                  n[	        U R                  5      U:  a  [!        U R                  S S S-   U5      eU R                  U-   nSU l	        U(       Ga  U R                  [        R"                  :X  Ga  UR%                  U5      nUS:  Gao  UR%                  USU5      nUS:  a7  US U n	SXU =n
;   a'  ['        SU
< 35      n[)        U R
                  U5        UeOUS U n	U R*                  (       a  U	R-                  5       n	[.        R0                  " [2        U	5      (       d6  ['        US U R5                  S	S
5      5      n[)        U R
                  U5        Ue[7        [9        U	5      S5      nX[	        U5      -   S  nUS:X  aB  [        R                  U l
        U R*                  (       a  UR;                  S5      (       a  USS  nO=[        R                  U l
        Xl        U R
                  R?                  5         OXl	        gU R                  [        R                  :X  a  U R<                  n[	        U5      nXE:  a%  XE-
  U l        U R
                  R                  X5        gSU l        U R
                  R                  US U U5        XS  n[        R@                  U l
        U R
                  RC                  5         U R                  [        R@                  :X  a  U R*                  (       a  UR;                  S5      (       a  USS  nUS [	        U5       U:X  a$  U[	        U5      S  n[        R"                  U l
        OS[	        U5      [	        U5      :  d  XS [	        U5       :w  a#  ['        S5      n[)        U R
                  U5        UeXl	        gU R                  [        R                  :X  Ga;  UR%                  U5      nUS:  a  Xl	        gUS U nX[	        U5      -   S  nUS:X  a  URE                  S5      n[	        U5      U R                  :  a  [!        US S S-   U R                  5      eU RF                  RI                  U5        [	        U RF                  5      U RJ                  :  a  [M        S5      eU RF                  S   S:X  a`   U RN                  RQ                  U RF                  5      u  pU RF                  RS                  5         U R
                  R                  5         SU4$ U(       a  GM  gU R                   [        RT                  :X  a%  U R
                  R                  U[	        U5      5        g! U RF                  RS                  5         f = f)Nr   )Trf   Tr   r   rf   r=   z"Unexpected LF in chunk-extension: asciir      r   r   )Frf   z3Chunk size mismatch: expected CRLF after chunk datazToo many trailers receivedr   )+r_  ro   rt   r^  r   r   r   r   ru   rb  r`  rx   r|   rc  r   rd  r/   r{   r   r0   r&   r   r   rer   rD   r   rl   r   r;  ra  begin_http_chunk_receivingr}   end_http_chunk_receivingr   rf  r   re  r'   r   r   r   rv   )r   rl  r   rm  required	chunk_lenr   r   isize_bextexcsizer   trailersraw_trailerss                   rg   r   HttpPayloadParser.feed_dataT  s    ::000||HE
I$'3&&u8<<1$LL))+$ %P I  !&&uYh'7B%%'U9--- ZZ:333{{j&D&DDDD"&"5"5;;*";";;&*&:&:Ot''(?:%d&6&6t&<v&EWW((50#&  ;;*"?"??**S/Cax!JJy!S96%*2AYF$)<=&;&H$P'" !.dllC @&)	  > &+4C[F99%+\\^F!||Iv>>"7 %ds 2 27<M N#C *$,,<"%I"5="5 %CHn&6 719*4*C*CDK#yyU-=-=e-D-D(-ab	*4*H*HDK/3, LLCCE+0() ;;*"@"@@#//H #E
I++3+?(..u@)+,(..uYh/?J %i 0&0&H&H==? ;;*"D"DDyyU%5%5e%<%< %ab	Zs3x(C/ %c#hj 1&0&C&CUs3x/5#e*<M3M3Q &dllC8!	+0();;*";";;**S/CQw+0() #;D!C."23Ee|#{{514y4#7#77)$t*v*=t?S?STT''..t44../$2D2DD,-IJJ **2.#58595I5I5W5W $ 3 362H !//557--/#U{*U %`  ZZ:555LL""5#e*5 !//557s   'Z Z()r   r`  ra  rb  r   r   r^  rd  rc  re  rf  r_  r   r   )NFNNNTTFr   N)r<      ;)r^   r_   r`   ra   r4   r   rl   rd   rb   r6   r   r   r   r'  r   r   re   r]   rf   rg   r   r     s    !%%)" $#' $6$ ""6$6$ 6$ 	6$
 c]6$ sm6$ 6$ !6$ 6$ 6$ &6$ 6$ 6$ 6$  
!6$p
 EISS!%S<AS	tU{	S Srf   r   c            	           \ rS rSr% Sr\\S'   \4S\S\	\
   S\SS4S	 jjr\4S
\S\SS4S jjrS\S\SS4S jrSS jrSS jrSS jrSrg)rg  i  zDDeflateStream decompress stream and feed data into specified stream.decompressoroutr  max_decompress_sizer   Nc                 6   Xl         SU l        U R                  Ul        X l        SU l        U   US:X  a&  [
        (       d  [        S5      e[        5       U l        O:US:X  a&  [        (       d  [        S5      e[        5       U l        O[        US9U l        X0l        g )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  rz  total_compressed_bytesr  _started_decodingr   r*   r   r  r   r   r   _max_decompress_size)r   r  r  r  s       rg   r   DeflateBuffer.__init__  s     	%)YY" !&t:*.  !3 4D8*6  !1 2D 0( CD$7!rf   ry  	exc_causec                 0    [        U R                  X5        g r   )r&   r  )r   ry  r  s      rg   r&   DeflateBuffer.set_exception  s    
 	dhh/rf   rl  rz  c                 d   U(       d  g U =R                   U-  sl         U R                   U R                  l        U R                  (       d5  U R                  S:X  a%  US   S-  S:w  a  [        U R                  SS9U l         U R                  R                  XR                  S-   S9nSU l        [        U5      U R                  :  a  [        S
U R                  -  5      eU(       a&  U R                  R                  U[        U5      5        g g ! [         a    [        S	U R                  -  5      ef = f)Nr  r         T)r  suppress_deflate_headerr   )
max_lengthz#Can not decode content-encoding: %sz:Decompressed data exceeds the configured limit of %d bytes)rz  r  r  r  r  r   r  decompress_syncr  r   r*   r   r,   r   )r   rl  rz  s      rg   r   DeflateBuffer.feed_data  s   		T	*.))' &&*a3!# !1!D	%%55";";a"? 6 E "& u:111%L++, 
 HHuc%j1   	&5E 	s    &D #D/c                 P   U R                   R                  5       nU(       d  U R                  S:  a[  U R                  R	                  U[        U5      5        U R                  S:X  a&  U R                   R                  (       d  [        S5      eU R                  R                  5         g )Nr   r  )
r  flushrz  r  r   r   r  r  r*   r   )r   rl  s     rg   r   DeflateBuffer.feed_eofA  sp    !!'')DIIMHHuc%j1}}	)$2C2C2G2G*955rf   c                 8    U R                   R                  5         g r   )r  rr  r   s    rg   rr  (DeflateBuffer.begin_http_chunk_receivingK  s    ++-rf   c                 8    U R                   R                  5         g r   )r  rs  r   s    rg   rs  &DeflateBuffer.end_http_chunk_receivingN  s    ))+rf   )r  r  r  r  r  rz  r~  )r^   r_   r`   ra   rJ  r   rc   r   r4   r   rb   rl   r   r    r   r&   r   r   r   rr  rs  re   r]   rf   rg   rg  rg    s    N $?	88 3-8 !	8
 
8F $100 !0 
	0)2u )2C )2D )2V.,rf   rg  )r8   r9   r:   r;   )nr%  r#  rq  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>   rb   rc   escaper?   compiler@   rA   ASCIIrB   rC   rD   r   	frozensetrO   r:   r;   rm   ro   rx   r6   rd   r   ABCr7   r8   r9   r   rg  HttpRequestParserPyHttpResponseParserPyRawRequestMessagePyRawResponseMessagePy_http_parserHttpRequestParserCHttpResponseParserCRawRequestMessageCRawResponseMessageCImportErrorr]   rf   rg   <module>r     s   
  	      " : 9   '      4 0   ~ 0 01%C/ 1 !ii(9:s :!zzJ6Gr*JKws|	 K57ZZ6 uWS\2  !jj);RXXFgcl F jj:gcl :#%::.>#?	5  ? ,5, 53(  

 
	 	 	*,>?  Y? Y?x=#3C#8 =T =W'%. Wt
^H
#45 ^HBQP$67 QPhX Xve, e,P ( ) ' ) 		
 	
 /0.0   		s   I# #I,+I,