
    h                        U d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZmZ d dlmZ ddlmZ dd	lm Z  dd
l!m"Z"m#Z#m$Z$ ddl%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, ddl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6 ddl7m8Z8m9Z9 ddl:m;Z;m<Z< ddl=m>Z> dZ?ed         Z@ eAejB                  ZCeeeD                  eEd<    ejF        d          ZGeeD         eEd<    ejH        deG d          ZIeeeD                  eEd<    ejH        dejJ                  ZKeeeD                  eEd<    ejH        dejJ                  ZLeeeD                  eEd<    ejH        d          ZMeeeN                  eEd<    G d de          ZO G d  d!e          ZP ed"eOeP          ZQ G d# d$e          ZR G d% d&e          ZS G d' d(          ZTd)eeD         d*eUfd+ZV G d, d-e jW        eeQ                   ZX G d. d/eXeO                   ZY G d0 d1eXeP                   ZZ G d2 d3          Z[ G d4 d5          Z\eYZ]eZZ^eOZ_ePZ`	 e*sdd6lamYZYmZZZmOZOmPZP eYZbeZZceOZdePZedS dS # ef$ r Y dS w xY w)7    N)suppress)IntEnum)AnyClassVarFinalGenericListLiteral
NamedTupleOptionalPatternSetTupleTypeTypeVarUnion)CIMultiDictCIMultiDictProxyistr)URL   )hdrs)BaseProtocol)
HAS_BROTLIBrotliDecompressorZLibDecompressor)_EXC_SENTINELDEBUGEMPTY_BODY_METHODSEMPTY_BODY_STATUS_CODESNO_EXTENSIONSBaseTimerContextset_exception)	BadHttpMessageBadHttpMethodBadStatusLineContentEncodingErrorContentLengthErrorInvalidHeaderInvalidURLErrorLineTooLongTransferEncodingError)HttpVersionHttpVersion10)EMPTY_PAYLOADStreamReader)
RawHeaders)HeadersParser
HttpParserHttpRequestParserHttpResponseParserRawRequestMessageRawResponseMessage)   
   
ASCIISETz!#$%&'*+-.^_`|~_TCHAR_SPECIALSz
[0-9A-Za-zz]+TOKENREzHTTP/(\d)\.(\d)VERSREz\d+DIGITSs   [0-9a-fA-F]+	HEXDIGITSc                       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 )r6   methodpathversionCIMultiDictProxy[str]headersraw_headersshould_closecompressionupgradechunkedurlN)
__name__
__module____qualname__str__annotations__r-   r1   boolr   r        U/var/www/html/prod/cognitive/venv/lib/python3.11/site-packages/aiohttp/http_parser.pyr6   r6   Q   s}         KKK
III$$$$#MMMMMM	HHHHHrS   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
e         ed<   e	ed<   e	ed	<   d
S )r7   rC   codereasonrE   rF   rG   rH   rI   rJ   N)rL   rM   rN   r-   rP   intrO   r   r1   rQ   r   rR   rS   rT   r7   r7   ^   sy         
IIIKKKc""""#MMMMMMMMrS   r7   _MsgTc                       e Zd ZdZdZdZdZdS )
ParseStater   r         N)rL   rM   rN   
PARSE_NONEPARSE_LENGTHPARSE_CHUNKEDPARSE_UNTIL_EOFrR   rS   rT   r[   r[   m   s"        JLMOOOrS   r[   c                   "    e Zd ZdZdZdZdZdZdS )
ChunkStater   r   r\   r]      N)rL   rM   rN   PARSE_CHUNKED_SIZEPARSE_CHUNKED_CHUNKPARSE_CHUNKED_CHUNK_EOFPARSE_MAYBE_TRAILERSPARSE_TRAILERSrR   rS   rT   rc   rc   u   s+        NNNrS   rc   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laxreturnNc                 >    || _         || _        || _        || _        d S N)rm   rn   ro   _lax)selfrm   rn   ro   rp   s        rT   __init__zHeadersParser.__init__~   s'     +&,			rS   linesrD   c           	         t                      }g }d}|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          }t          |          | j        k    rdt          d                    |	                    d	d
                    t          | j                  t          t          |                              |	                    dd          }	t                              |	          st	          |          t          |          }
|dz  }||         }| j        o|o	|d         dv }|r|g}|r|
t          |          z  }
|
| j        k    rWt          d                    |	                    d	d
                    t          | j                  t          |
                    |                    |           |dz  }||k     r||         }|r
|d         dv }nd}n|d                    |          }nb|
| j        k    rWt          d                    |	                    d	d
                    t          | j                  t          |
                    |                    d          }|	                    dd          }d|v sd|v sd|v rt	          |          |                    |	|           |                    ||f           |!t%          |          t'          |          fS )Nr      :r       	   s    	zrequest header name {}utf8backslashreplaceutf-8surrogateescape)r{   r|   zrequest header field {}rS   
 )r   lensplit
ValueErrorr)   lstripro   r+   formatdecoderO   r<   	fullmatchrt   appendjoinstripaddr   tuple)ru   rw   rE   rF   	lines_idxline
line_countbnamebvaluenameheader_lengthcontinuation
bvalue_lstvalues                 rT   parse_headerszHeadersParser.parse_headers   s    %0MM	QxZZ
 O	04 $

4 3 3vv 4 4 4#D))t34 5zzQ#E*** a%)$Aw. *#D)))]]6**F5zzD///!,33V-?@@  +,,E

OO   <<):;;D$$T** +#E***KKM NI#D  9DD$q'W2DL   $X
" !SYY.M$t':::)5<< %V5G H H    344..   %%d+++ NI :--$Y/ >+/7g+=L") # * *-- 4#666%188!LL1CDD  D/00M**   \\&))FMM'+<==E u}}5#F+++KKe$$$v///_  O	0b !))5+=+=>>s   A A#)rk   rl   rk   F)rL   rM   rN   rX   rQ   rv   r	   bytesr   r1   r   rR   rS   rT   r2   r2   }   s         " "
 

 
 	

 
 

 
 
 
\?%[\?	&
2	3\? \? \? \? \? \?rS   r2   rE   rq   c                 j    |                      t          j        d                                          dv S )z)Check if the upgrade header is supported. >   tcp	websocket)getr   UPGRADElower)rE   s    rT   _is_supported_upgrader      s*    ;;t|R((..004HHHrS   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 )*r3   Frp   N   rk   rl   Tprotocollooplimitrm   rn   ro   timerrV   rA   payload_exceptionresponse_with_bodyread_until_eofauto_decompressrq   c                 :   || _         || _        || _        || _        || _        || _        || _        |	| _        |
| _        || _	        || _
        g | _        d| _        d| _        d | _        d | _        || _        || _        t%          |||| j                  | _        d S )NrS   F)r   r   rm   rn   ro   r   rV   rA   r   r   r   _lines_tail	_upgraded_payload_payload_parser_auto_decompress_limitr2   rp   _headers_parser)ru   r   r   r   rm   rn   ro   r   rV   rA   r   r   r   r   s                 rT   rv   zHttpParser.__init__   s      !	*&,
	!2"4,#%
<@ /,; 
  
rS   rw   c                     d S rs   rR   )ru   rw   s     rT   parse_messagezHttpParser.parse_message  s    :=#rS   tec                     d S rs   rR   ru   r   s     rT   _is_chunked_tezHttpParser._is_chunked_te  s    /2srS   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 )Nrz   z
rS   )r   feed_eofr   r   r   r   	Exceptionr   ru   s    rT   r   zHttpParser.feed_eof  s    + ))+++#'D   z /""4:...{ ;;r?f,,K&&s+++i(( ; ;--dk::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;ts   B<<C C r8   rS   dataSEPEMPTYCONTENT_LENGTHMETH_CONNECTSEC_WEBSOCKET_KEY1c                 6	   g }| j         r| j         |z   dc}| _         t          |          }d}	| j        }
d}|	|k     r=| j        U| j        sM|                    ||	          }||	k    r| j        s|t          |          z   }	M||	k    r|rt          d          ||	|         }|dk    r|                    d          }| j        	                    |           |t          |          z   }	| j        d         |k    r	 | 
                    | 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 |t*          v pt-          |o|t.          v           }|s}||dk    sj        rn| j        sgt3          | j        | j        |
| j                  }t9          ||j        |j        | j        | j        | j         | j!        	  	        }|j"        s|| _        n||k    rntG          tH                    sJ t3          | j        | j        |
| j                  }d| _        t9          |j        j        | j         | j!                  | _        ny|sp|n| j%        rgt3          | j        | j        |
| j                  }t9          ||j        |j        | j        | j        | j         | j!        	  	        }|j"        s|| _        ntL          }|	                    |f           j'        }n||	d          | _         |}n| j        | j        r
| j        rJ n|r|	|k     r| j        rJ | j        J 	 | j        (                    ||	d          |          \  }}na# tR          $ rT}|}| j*        "| *                    tW          |                    }tY          | j        j-        ||           d}d}Y d }~nd }~ww xY w|rd}	t          |          }d | _        ;nn|	|k     =|r|	|k     r||	d          }n|}|| j        |fS )NrS   r   FzData after `Connection: close`r9      rz   rq   c                      j                                       } | d S t                              |           st	                    t          |           S rs   )rE   r   r>   r   r)   rX   )
length_hdrr   msgs    rT   get_content_lengthz0HttpParser.feed_data.<locals>.get_content_length_  sT    ),)H)HJ)1'+t
 $*#3#3J#?#? D&3N&C&C C#&z??2rS   rA   rV   )r   r   r   )lengthrJ   rA   rH   rV   r   r   rp   T)rA   rH   r   rp   ).r   r   r   r   r   findr   r$   rstripr   r   clearr   rX   rE   r)   rI   r   getattrrA   r   r    rQ   r   rJ   r0   r   r   HttpPayloadParserrH   rV   r   r   rp   done
isinstancer6   r   r/   rG   	feed_dataBaseExceptionr   rO   r#   payload)ru   r   r   r   r   r   r   messagesdata_len	start_posr   rG   posr   r   r   rA   rV   
empty_bodyr   payload_parsereofunderlying_excreraised_excr   s       `                   @rT   r   zHttpParser.feed_data.  s    : 	6#zD0#D$*t99	y("" #+DN+iiY//)##DK# #c#hhI)### O,-MNNN  	#.De||#{{511K&&t,,, #c#hhI {2%//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
  * <4$0VaZZCKZ$(N 6@ '3 $&*j%)&*k	' ' 'G .? ''-(+'-,/O%)Y373J040E$(H
. 
. 
.N $2#6 F7E 4#|33#-c3D#E#EEE#E&2 $&*j%)&*k	' ' 'G .2DN3D ''*z,/O040E$(H4 4 4D00 ", 44CV&2 $&*j%)&*k	' ' 'G .? ''-(+'-,/O%)Y373J040E$(H
. 
. 
.N $2#6 F7E 4&3G g777'*'7!%ijj!1DJ D %-$.-;&&  )h..;&&+777 $ 4 > >tIJJ?OQT U UIC$   #1L-9'+'='=c.>Q>Q'R'R!,4$&   CDDDDDD   !I"4yyH+/D(	 C (""F  	I((	

#DDD--s%   D5 5E&O6 6
Q A
QQrD   c           
         | j                             |          \  }d}d}d}d}t          j        t          j        t          j        t          j        t          j        t          j        t          j	        t          j
        t          j        t          j        f
}t          fd|D             d          }|t          d| d                              t          j                  }	|	rM|	                                }
|
dk    rd}n0|
dk    rd}n'|
d	k    r!                    t          j                  rd}                    t          j                  }|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.
        NFc              3   j   K   | ]-}t                              |d                     dk    )|V  .dS )rR   r   N)r   getall).0hrE   s     rT   	<genexpr>z+HttpParser.parse_headers.<locals>.<genexpr>
  sC      PPaW^^Ar5J5J1K1Ka1O1O1O1O1O1OPPrS   zDuplicate 'z' header found.closeTz
keep-aliverI   )gzipdeflatebrz6Transfer-Encoding can't be present with Content-Length)r   r   r   r   CONTENT_LOCATIONCONTENT_RANGECONTENT_TYPEETAGHOSTMAX_FORWARDSSERVERTRANSFER_ENCODING
USER_AGENTnextr$   r   
CONNECTIONr   r   CONTENT_ENCODINGr   )ru   rw   rF   
close_connencodingrI   rJ   
singletonsbad_hdrconnvencr   rE   s                @rT   r   zHttpParser.parse_headers  s     $3AA%HH

 !IIK"O

 PPPP:PPPRVWW !Gw!G!G!GHHH {{4?++ 	

AG||!

l"""

iGKK$=$= kk$/00 	))++C/// [[/00>""2&& "g--$L   j(GWMMrS   valc                     || _         dS )zZSet connection upgraded (to websocket) mode.

        :param bool val: new state.
        N)r   )ru   r   s     rT   set_upgradedzHttpParser.set_upgraded.  s    
 rS   )NNr   rk   rl   rk   NNNNTFT)%rL   rM   rN   rp   r   rQ   rP   r   r   asyncioAbstractEventLooprX   r"   rO   r   r   rv   abcabstractmethodr	   r   rY   r   r   r   r   r   r   r   _SEPr   r   r0   r   r1   r   r   rR   rS   rT   r3   r3      s        C$ ,048! ",0" $;?#'$ $%
 %
<(%
 w01%
 	%

 %
 %
 %
 ()%
 sm%
 %
 $D$78%
 !%
 %
 %
 
%
 %
 %
 %
N 	=4;=5=== =22222 2(5/    & #2 -#'#:|. |.|. |. 	|.
 |. |. !|. 
tE%-./u<	=|. |. |. |.|@N%[@N	Xd^Xc]DRVV
@N @N @N @ND       rS   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   zRead request status line.

    Exception .http_exceptions.BadStatusLine
    could be raised in case of any errors in status line.
    Returns RawRequestMessage.
    rw   rq   c                    |d                              dd          }	 |                    dd          \  }}}n# t          $ r t          |          d w xY wt	          |          | j        k    r=t          dt          | j                  t          t	          |                              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                    |                     |          \  }}}}}}||t.          k    rd
}nd}t1          ||||||||||
  
        S )Nr   r   r    r\   maxsplitStatus line is too longr   CONNECTT)	authorityencoded/#?)rB   query_stringfragmentr  *OPTIONS)r  r   )errorslatin1F)r   r   r   r%   r   rm   r+   rO   r<   r   r=   r&   r-   rX   groupr   build
startswith	partitionschemer*   encoder   r.   r6   )ru   rw   r   rA   rB   rC   match	version_orK   	path_part_hash_separatorurl_fragment_question_mark_separatorqs_partrE   rF   r   rH   rI   rJ   s                       rT   r   zHttpRequestParser.parse_message>  s   Qxw(9::	0$(JJsQJ$?$?!FD'' 	0 	0 	0%%4/	0 t99t))))3t/A+B+BCD		NN  
   (( 	('''   ))=%%%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   u%%	
 =M)) 
 
 	
s	   : Ar   c                     |                     dd          d                             d                                          dk    rdS t          d          )	N,r   r	  rz    	rJ   Tz'Request has invalid `Transfer-Encoding`)rsplitr   r   r$   r   s     rT   r   z HttpRequestParser._is_chunked_te  sP    99S19%%b)//66<<>>)KK4FGGGrS   N)rL   rM   rN   __doc__r	   r   r6   r   rO   rQ   r   rR   rS   rT   r4   r4   6  sv         S
4; S
3D S
 S
 S
 S
jH H H H H H H HrS   r4   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 )r5   zRead response status line and headers.

    BadStatusLine could be raised in case of any errors in status line.
    Returns RawResponseMessage.
    Nr   r   argskwargsrq   c                 Z    |t           rdnd} t                      j        ||g|R i |S )Nr8   r9   )r   superr   )ru   r   r   r+  r,  	__class__s        rT   r   zHttpResponseParser.feed_data  sA     ;"-''C uww s<T<<<V<<<rS   rw   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          |          | j        k    r=t          dt          | j                  t          t          |                              t          
                    |          }|t          |          t          t          |                    d                    t          |                    d                              }t          |          d	k    st          
                    |          st          |          t          |          }|                     |          \  }	}
}}}}|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   r  r\   r]   Td      >   0     F)r   r   r   r&   r   r   rm   r+   rO   r=   r   r-   rX   r  r>   r   r.   r   r   r   r7   )ru   rw   r   rC   statusrW   r  r  status_irE   rF   r   rH   rI   rJ   s                  rT   r   z HttpResponseParser.parse_message  se   Qxw(9::	0"jj!j44OGVV 	0 	0 	0%%4/	0	#\\1\55NFFF 	 	 	\\^^FFFF	 v;;+++)3t/A+B+BCFDTDT  
   ))=%%%EKKNN 3 3SQ5H5HII	 v;;!6#3#3F#;#;%%%v;; u%%	
 =M))&&&&3&&&&(j*@*@$//43IW3T3T !LLNN

 

 
	
s   8 AA1 1 BBr   c                     |                     dd          d                             d                                          dk    S )Nr&  r   r	  rz   r'  rJ   )r(  r   r   r   s     rT   r   z!HttpResponseParser._is_chunked_te  s<    yyqy))"-33E::@@BBiOOrS   rs   )rL   rM   rN   r)  r   rp   r   r   r  r   r   r	   r7   r0   rQ   r   r   rO   r   __classcell__)r/  s   @rT   r5   r5     s          )C
 #	= 	=	= d^	= 		=
 	= 
tE,l:;<dEI	J	= 	= 	= 	= 	= 	==
4; =
3E =
 =
 =
 =
~P P P P P P P P P PrS   r5   c                       e Zd Z	 	 	 	 	 	 	 	 ddedee         dedee         dee         d	ee         d
ededed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   rJ   rH   rV   rA   r   r   rp   rq   c
                    d| _         t          j        | _        t          j        | _        d| _        d| _        || _	        |	| _
        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   rS   FT)_lengthr[   ra   _typerc   re   _chunk_chunk_size_chunk_tailr   rt   r   DeflateBufferr^   r   r`   r_   r   )ru   r   r   rJ   rH   rV   rA   r   r   rp   real_payloads              rT   rv   zHttpPayloadParser.__init__  s
    /
 3 /		  	#+ 	#$2G 	#?L@ @LL #L " 	!#.DJ!!###DII 	!#1DJJ#0DJ!DL|q  %%''' 	#rS   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 )Nz2Not enough data for satisfy content length header.z3Not enough data for satisfy transfer length header.)	r<  r[   ra   r   r   r_   r(   r`   r,   r   s    rT   r   zHttpPayloadParser.feed_eof"  s    :333L!!#####Z:222$D   Z:333'E   43rS   r8      ;chunkr   	CHUNK_EXTc                 n
   | j         t          j        k    r| j        }t	          |          }||k    rM||z
  | _        | j                            ||           | j        dk    r| j                                         dS nd| _        | j                            |d |         |           | j                                         d||d          fS | j         t          j        k    r| j	        r| 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        t(          |          sBt+          |d |                             dd                    }
t          | j        |
           |
t/          t1          |          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    rs| j        r|                    d
          r
|dd          }|d t	          |                   |k    r)|t	          |          d          }t          j        | _
        n	|| _	        dS | j
        t          j        k    r{|d t	          |                   }||k    r2| j                                         d|t	          |          d          fS |sdS ||d d         k    r	|| _	        dS t          j         | _
        | j
        t          j         k    rP|                    |          }|dk    r,||t	          |          z   d          }t          j        | _
        n	|| _	        dS |n=| j         t          j!        k    r(| j                            |t	          |                     dS )Nr   )TrS   TrS   r9   z"Unexpected LF in chunk-extension: asciir      r   r   )FrS   )"r<  r[   r_   r;  r   r   r   r   r`   r?  r=  rc   re   r   r$   r#   rt   r   rer   r?   r,   r   rX   r   rh   r  rf   r>  begin_http_chunk_receivingrg   end_http_chunk_receivingri   ra   )ru   rD  r   rE  required	chunk_lenr   isize_bextexcsizeheads                rT   r   zHttpPayloadParser.feed_data.  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 '(50#&  d* ;*"???**S//Caxx!JJy!S9966%*2A2YF$ae)<==&4$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*IDK#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+0()z
 ;*"AAA 3s88,Ds{{--///#U3s88::%666   *)zs2A2w+/()z",";DK ;*";;;**S//Caxx %cCHHn&6&6 7&0&E+0()zI  d*N Z:555L""5#e**555zrS   )NFNNNTTFrq   N)r8   rC  )rL   rM   rN   r0   r   rX   rQ   rO   rv   r   r   r  r   r   rR   rS   rT   r   r     s"        !%%)" $#' $,$ ,$,$ ,$ 	,$
 c],$ sm,$ ,$ !,$ ,$ ,$ 
,$ ,$ ,$ ,$\
 
 
 
 EID DD!%D<AD	tU{	D D D D D DrS   r   c                       e Zd ZU dZeed<   dede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 )r@  zDDeflateStream decompress stream and feed data into specified stream.decompressoroutr   rq   Nc                     || _         d| _        || _        d| _        |  |dk    r+t          st          d          t                      | _        d S t          |          | _        d S )Nr   Fr   zECan not decode content-encoding: brotli (br). Please install `Brotli`)r   )	rW  rR  r   _started_decodingr   r'   r   rV  r   )ru   rW  r   s      rT   rv   zDeflateBuffer.__init__  s~    	 !&Ft *.   !3 4 4D 0( C C CDrS   rQ  	exc_causec                 2    t          | j        ||           d S rs   )r#   rW  )ru   rQ  rZ  s      rT   r#   zDeflateBuffer.set_exception  s    
 	dhY/////rS   rD  rR  c                    |sd S | xj         |z  c_         | j        s5| j        dk    r*|d         dz  dk    rt          | j        d          | _        	 | j                            |          }n%# t          $ r t          d| j        z            w xY wd| _        |r*| j        	                    |t          |                     d S d S )Nr   r         T)r   suppress_deflate_headerz#Can not decode content-encoding: %s)rR  rY  r   r   rV  decompress_syncr   r'   rW  r   r   )ru   rD  rR  s      rT   r   zDeflateBuffer.feed_data  s     	F		T		 &		**a3!## !1! ! !D	%55e<<EE 	 	 	&5E  	
 "& 	2Huc%jj11111	2 	2s   A- -"Bc                     | j                                         }|s| j        dk    rN| j                            |t          |                     | j        dk    r| j         j        st          d          | j        	                                 d S )Nr   r   )
rV  flushrR  rW  r   r   r   r   r'   r   )ru   rD  s     rT   r   zDeflateBuffer.feed_eof  s    !'')) 	6DIMMHuc%jj111}	))$2C2G)*9555rS   c                 8    | j                                          d S rs   )rW  rJ  r   s    rT   rJ  z(DeflateBuffer.begin_http_chunk_receiving  s    ++-----rS   c                 8    | j                                          d S rs   )rW  rK  r   s    rT   rK  z&DeflateBuffer.end_http_chunk_receiving  s    ))+++++rS   rT  )rL   rM   rN   r)  r   rP   r0   r   rO   rv   r   r   r#   r   rX   r   r   rJ  rK  rR   rS   rT   r@  r@    s         NNDL DHSM Dd D D D D( $10 00 !0 
	0 0 0 02u 2C 2D 2 2 2 2@   . . . ., , , , , ,rS   r@  )r4   r5   r6   r7   )gr  r  rI  string
contextlibr   enumr   typingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   	multidictr   r   r   yarlr   r   r   base_protocolr   compression_utilsr   r   r   helpersr   r   r   r    r!   r"   r#   http_exceptionsr$   r%   r&   r'   r(   r)   r*   r+   r,   http_writerr-   r.   streamsr/   r0   typedefsr1   __all__r  set	printabler:   rO   rP   escaper;   compiler<   ASCIIr=   r>   r?   r   r6   r7   rY   r[   rc   r2   rQ   r   ABCr3   r4   r5   r   r@  HttpRequestParserPyHttpResponseParserPyRawRequestMessagePyRawResponseMessagePy_http_parserHttpRequestParserCHttpResponseParserCRawRequestMessageCRawResponseMessageCImportErrorrR   rS   rT   <module>r     sb   




  				                                            " : 9 9 9 9 9 9 9 9 9             ' ' ' ' ' ' O O O O O O O O O O                 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 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 K(bj);RXFFgcl F F F(bj::gcl : : :#-2:.>#?#?	5  ? ? ?
 
 
 
 

 
 
 
	 	 	 	 	 	 	 	 	*,>??              i? i? i? i? i? i? i? i?XI#3C#8 IT I I I I
E E E E E'%. E E EP
aH aH aH aH aH
#45 aH aH aHHVP VP VP VP VP$67 VP VP VPr       DK, K, K, K, K, K, K, K,\ ( ) ' ) 	 1	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 /0.01 1  	 	 	DD	s   I I$#I$