
    rp0j{|                     4   % S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SK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JrJrJrJrJrJr  S SKJr  S SKrS SKJrJr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&  S	SK'J(r(J)r)J*r*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4  S	SK5J6r6  S	SK7J8r8  S	SK9J:r:J;r;  S	SK<J=r=J>r>  S	SK?J@r@JArAJBrBJCrCJDrD  S	SKEJFrFJGrG  S	SKHJIrI  SrJ\(       a  S	SKKJLrL  S	SKMJNrN  S	SKOJPrP  \" S5      rQ\R                  " SSSS9 " S S5      5       rS\T\U-  \V-  \S-  rW\R                  \R                  -   S-   rZ\\T   \[S'   S \Z S!3r\\\T   \[S"'   S#R                  S$R                  S% S&\_" \`" S'S(5      5      -    5       5      5      ra\\T   \[S)'   S*rb\\T   \[S+'   S,\b S-\a S.3rc\\T   \[S/'   S0\\ S1\\ S-\c S23rd\\T   \[S3'   \R                  " S45      rf\\\T      \[S5'   \R                  " \d5      rg\\\T      \[S6'    " S7 S8\\T\0\   -  \4   \/5      rh " S9 S:\h5      rig);    N)IteratorMappingMutableMapping)Pattern)MappingProxyType)TYPE_CHECKINGAnyFinalOptionalTypeVarcastoverload)	parse_qsl)CIMultiDictCIMultiDictProxy	MultiDictMultiDictProxyMultiMapping)URL   )hdrs)parse_cookie_header)AbstractStreamWriter)	_SENTINELDEBUGDEFAULT_CHUNK_SIZEETAG_ANYLIST_QUOTED_ETAG_REChainMapProxyETagHeadersMixin
RequestKeyparse_http_datereifysentinelset_exception)RawRequestMessage)HttpVersion)BodyPartReaderMultipartReader)EmptyStreamReaderStreamReader)DEFAULT_JSON_DECODERJSONDecoderLooseHeaders
RawHeadersStrOrURL)HTTPRequestEntityTooLargeNotAppKeyWarning)StreamResponse)BaseRequest	FileFieldRequest)Application)RequestHandler)UrlMappingMatchInfo_TT)auto_attribsfrozenslotsc                   b    \ rS rSr% \\S'   \\S'   \R                  \S'   \\S'   \\   \S'   Sr	g)	r6   E   namefilenamefilecontent_typeheaders N)
__name__
__module____qualname____firstlineno__str__annotations__ioBufferedReaderr   __static_attributes__rF       M/home/wildlama/miniconda3/lib/python3.13/site-packages/aiohttp/web_request.pyr6   r6   E   s)    
IM


c""rP   r6   z!#$%&'*+.^_`|~-_TCHAR[z]+_TOKENz[{}] c              #   8   #    U  H  n[        U5      v   M     g 7fN)chr).0cs     rQ   	<genexpr>r[   U   s     KJSVVJs   )	       !   #      _QDTEXTz
\\[\t !-~]_QUOTED_PAIRz"(?:|z)*"_QUOTED_STRING(z)=(z)(:\d{1,4})?_FORWARDED_PAIRz\\([\t !-~])_QUOTED_PAIR_REPLACE_RE_FORWARDED_PAIR_REc                   *   \ rS rSr% \R
                  \R                  \R                  \R                  \R                  1r
\R                  \" / SQ5      -  rSr\\   S-  \S'   Sr\S-  \S'   \" 5       r\\   \S'   SSSSSS.S	\S
\SSS\SSS\R6                  S\S\\\   \-  \4   S-  S\S-  S\S-  S\S-  SS4S jjr \!\!\!\!\!\!\!S.S\\"-  S\#\"-  S\$\"-  S\\"-  S\\"-  S\\"-  S\\"-  SS 4S jjr%\&SeS j5       r'\&SfS j5       r(\&S\RR                  S-  4S j5       r*\&S\4S  j5       r+\&S\4S! j5       r,\-S\4S" j5       r.\-S\/4S# j5       r0\-S\R6                  4S$ j5       r1\2S%\\3   S\34S& j5       r4\2S%\S\4S' j5       r4S%\\\3   -  S\4S( jr4\2S%\\3   S)\3SS4S* j5       r5\2S%\S)\SS4S+ j5       r5S%\\\3   -  S)\SS4S, jr5S%\\\3   -  SS4S- jr6S\4S. jr7S\8\\\   -     4S/ jr9\-S\:4S0 j5       r;\-S\<\=\\4   S14   4S2 j5       r>\-S\4S3 j5       r?\-S\4S4 j5       r@\-S\A4S5 j5       rB\-S\4S6 j5       rC\-S\S-  4S7 j5       rD\-S\/4S8 j5       rE\-S\4S9 j5       rF\-S\4S: j5       rG\-S\4S; j5       rH\-SgS< j5       rI\-S\4S= j5       rJ\-S\K\   4S> j5       rL\-S\M4S? j5       rN\-S\OR                  S-  4S@ j5       rP\-S\OR                  S-  4SA j5       rQ\RSB\S\8\S   4SC j5       rT\USD\S-  S\<\SS14   S-  4SE j5       rV\-S\<\SS14   S-  4SF j5       rW\-S\<\SS14   S-  4SG j5       rX\-S\OR                  S-  4SH j5       rY\-S\:4SI j5       rZ\-S\=\\4   4SJ j5       r[\-S\\4SK j5       r]\-S\4SL j5       r^\&S\:4SM j5       r_\&S\:4SN j5       r`\-S\:4SO j5       raShSP jrbS\4SQ jrcS\4SR jrd\eSS.ST\fS\4SU jjrgS\h4SV jriSiSW jrjSjSX\SY\S\4SZ jjrkS\4S[ jrlS\\mS\:4S] jrnS\:4S^ jroS_\pSS4S` jrqSa\rSS4Sb jrsShSc jrtSdrug)kr5   k   )_message	_protocol_payload_writer_payload_headers_method_version_rel_url_post_read_bytes_state_cache_task_client_max_size_loop_transport_sslcontext_transport_peernameNrs   rt   _seen_str_keysi   )client_max_sizestateschemehostremotemessagepayloadprotocolr9   payload_writertaskasyncio.Task[None]loopr}   r~   r   r   r   returnc                   Xl         X0l        X@l        X l        UR                  U l        UR                  U l        UR                  U l	        0 U l
        UR                  nUR                  (       a~  U	b  UR                  U	5      nU
b  UR                  U
5      nXR                  S'   UR                  U R                  S'   UR                   U R                  S'   UR#                  5       U l        O(Xl        U	b  XR                  S'   U
b  XR                  S'   Uc  0 OUU l        XPl        Xpl        X`l        UR.                  U l        UR2                  U l        UR6                  U l        Ub  XR                  S'   g g )Nurlr   r   r   )rk   rl   rm   rn   rE   ro   methodrp   versionrq   rv   r   absolutewith_scheme	with_hostr   r   relativerr   ru   rw   rx   ry   ssl_contextrz   peernamer{   sockname_transport_sockname)selfr   r   r   r   r   r   r}   r~   r   r   r   r   s                rQ   __init__BaseRequest.__init__   s?     !-/6~~&(kk<<!oof-mmD) "%KK"%((DKK$'JJDKK!LLNDMM!(.H%&*F#!Mbu
 /
%-%9%9"#+#4#4 #+#4#4 $*KK! rP   r   rel_urlrE   r   r   r   r}   r   r   rE   c                   U R                   (       a  [        S5      e0 nU[        La  XS'   U[        La  [        U5      n	XS'   [	        U	5      US'   U[        La=  [        [        U5      5      US'   [        S US   R                  5        5       5      US'   U R                  R                  " S0 UD6n
0 nU[        La  XKS'   U[        La  X[S	'   U[        La  XkS
'   U[        L a  U R                  nU R                  " U
U R                  U R                  U R                  U R                   U R"                  4UU R$                  R'                  5       S.UD6$ )zClone itself with replacement some attributes.

Creates and returns a new instance of Request object. If no parameters
are given, an exact copy is returned. If a parameter is not passed, it
will reuse the one from the current request object.
z.Cannot clone request after reading its contentr   r   pathrE   c              3   j   #    U  H)  u  pUR                  S 5      UR                  S 5      4v   M+     g7f)utf-8N)encode)rY   kvs      rQ   r[   $BaseRequest.clone.<locals>.<genexpr>   s0      '2DA '"AHHW$562s   13raw_headersr   r   r   )r}   r~   rF   )rt   RuntimeErrorr%   r   rK   r   r   tupleitemsrk   _replacerx   	__class__rn   rl   rm   rw   ry   ru   copy)r   r   r   rE   r   r   r   r}   dctnew_urlr   kwargss               rQ   cloneBaseRequest.clone   sS   " OPP !"M("w<G Jg,CK("-k'.BCC	N!& '	N002' "C
 --((/3/!%8x!6N!%8h&"33O~~MMNN  JJJJ

 ,++""$

 

 
	
rP   c                     U R                   $ rW   )rw   r   s    rQ   r   BaseRequest.task   s    zzrP   c                     U R                   $ rW   )rl   r   s    rQ   r   BaseRequest.protocol  s    ~~rP   c                 J    U R                   c  g U R                   R                  $ rW   )rl   	transportr   s    rQ   r   BaseRequest.transport  s    >>!~~'''rP   c                     U R                   $ rW   )rm   r   s    rQ   writerBaseRequest.writer  s    ###rP   c                     U R                   $ rW   )rx   r   s    rQ   r}   BaseRequest.client_max_size  s    $$$rP   c                 N    [         R                  " S[        SS9  U R                  $ )NzRequest.message is deprecated   
stacklevel)warningswarnDeprecationWarningrk   r   s    rQ   r   BaseRequest.message  s    57IVWX}}rP   c                     U R                   $ rW   )rr   r   s    rQ   r   BaseRequest.rel_url  s    }}rP   c                 N    [         R                  " S[        SS9  U R                  $ )Nz#request.loop property is deprecated   r   )r   r   r   ry   r   s    rQ   r   BaseRequest.loop  s#    13ERS	
 zzrP   keyc                     g rW   rF   r   r   s     rQ   __getitem__BaseRequest.__getitem__(  s    69rP   c                     g rW   rF   r   s     rQ   r   r   +  s    ,/rP   c                      U R                   U   $ rW   ru   r   s     rQ   r   r   .  s    {{3rP   valuec                     g rW   rF   r   r   r   s      rQ   __setitem__BaseRequest.__setitem__1  s    CFrP   c                     g rW   rF   r   s      rQ   r   r   4  s    9<rP   c                     [        U[        5      (       dM  U[        R                  ;  a9  [        R                  R	                  U5        [
        R                  " S[        SS9  X R                  U'   g )NzIt is recommended to use web.RequestKey instances for keys.
https://docs.aiohttp.org/en/stable/web_advanced.html#request-s-storager   )categoryr   )	
isinstancer"   r5   r|   addr   r   r3   ru   r   s      rQ   r   r   7  sW    #z**s+:T:T/T&&**3/MM' * !CrP   c                     U R                   U	 g rW   r   r   s     rQ   __delitem__BaseRequest.__delitem__C  s    KKrP   c                 ,    [        U R                  5      $ rW   )lenru   r   s    rQ   __len__BaseRequest.__len__F  s    4;;rP   c                 ,    [        U R                  5      $ rW   )iterru   r   s    rQ   __iter__BaseRequest.__iter__I  s    DKK  rP   c                      U R                   S:H  $ )z5A bool indicating if the request is handled with SSL.https)r   r   s    rQ   secureBaseRequest.secureN  s     {{g%%rP   .c                 f   / nU R                   R                  R                  [        R                  S5       GHl  n[        U5      nSnSn0 nUR                  [        R                  " U5      5        SUs=::  a  U:  d  MI  O  MM  [        R                  X$5      nUb  U(       a  UR                  SU5      nOUR                  5       u  pn
U	S   S:X  a  [        R                  SU	SS 5      n	U
(       a  X-  n	XUR                  5       '   U[        UR!                  S5      5      -  nS	nOgX$   S:X  a/  Sn0 nUR                  [        R                  " U5      5        US-  nO0X$   S
:X  a  SnUS-  nO X$   S;   a  US-  nOUR                  SU5      nSUs=::  a  U:  a  GM  GMk    GMo     [#        U5      $ )a(  A tuple containing all parsed Forwarded header(s).

Makes an effort to parse Forwarded headers as specified by RFC 7239:

- It adds one (immutable) dictionary per Forwarded 'field-value', ie
  per proxy. The element corresponds to the data in the Forwarded
  field-value added by the first proxy encountered by the client. Each
  subsequent item corresponds to those added by later proxies.
- It checks that every value has valid syntax in general as specified
  in section 4: either a 'token' or a 'quoted-string'.
- It un-escapes found escape sequences.
- It does NOT validate 'by' and 'for' contents as specified in section
  6.
- It does NOT validate 'host' contents (Host ABNF).
- It does NOT validate 'proto' contents for valid URI scheme names.

Returns a tuple containing one or more immutable dicts
rF   r   F,"z\1r   T;z 	)rk   rE   getallr   	FORWARDEDr   appendtypesr   rh   matchfindgroupsrg   sublowergroupr   )r   elemsfield_valuelengthposneed_separatorelemr   rA   r   ports              rQ   	forwardedBaseRequest.forwardedS  s   ( ==0077KK%FC"N#%DLL//56s#V##*00B$%)..sC8,1LLN)T 8s?$;$?$?uQr{$SE!ME-2TZZ\*s5;;q>22)- %,%*NDLL!7!7!=>1HC %,%*N1HC %. 1HC &**34C? s#V## LL U|rP   c                 (    U R                   (       a  gg)zA string representing the scheme of the request.

Hostname is resolved in this order:

- overridden value by .clone(scheme=new_scheme) call.
- type of connection to peer: HTTPS if socket is SSL, HTTP otherwise.

'http' or 'https'.
r   http)rz   r   s    rQ   r   BaseRequest.scheme  s     %%rP   c                     U R                   $ )ziRead only property for getting HTTP method.

The value is upper-cased str like 'GET', 'POST', 'PUT' etc.
)rp   r   s    rQ   r   BaseRequest.method  s     ||rP   c                     U R                   $ )zhRead only property for getting HTTP version of request.

Returns aiohttp.protocol.HttpVersion instance.
)rq   r   s    rQ   r   BaseRequest.version  s     }}rP   c                    U R                   R                  R                  [        R                  5      nUb  U$ U R
                  nUc  g[        U[        5      (       a&  [        U5      S:X  a	  SUS    S3$ [        US   5      $ [        U5      $ )ap  Hostname of the request.

Hostname is resolved in this order:

- overridden value by .clone(host=new_host) call.
- HOST HTTP header
- local socket address the request arrived on
  (transport ``sockname``)
- empty string if no transport information is available

For example, 'example.com' or 'localhost:8080'.

For historical reasons, the port number may be included.
rU      rS   r   ])
rk   rE   getr   HOSTr   r   r   r   rK   )r   r   r   s      rQ   r   BaseRequest.host  s      }}$$((3K++h&& 8}!8A;-q))x{##8}rP   c                     U R                   c  g[        U R                   [        [        45      (       a  [	        U R                   S   5      $ [	        U R                   5      $ )zRemote IP of client initiated HTTP request.

The IP is resolved in this order:

- overridden value by .clone(remote=new_remote) call.
- peername of opened socket
Nr   )r{   r   listr   rK   r   s    rQ   r   BaseRequest.remote  sQ     ##+d..u>>t//2334++,,rP   c                     [         R                  " U R                  U R                  S9R	                  U R
                  5      $ )zThe full URL of the request.)r   	authority)r   buildr   r   joinrr   r   s    rQ   r   BaseRequest.url  s,    
 yytyyAFFt}}UUrP   c                 .    U R                   R                  $ )zOThe URL including *PATH INFO* without the host or scheme.

E.g., ``/app/blog``
)rr   r   r   s    rQ   r   BaseRequest.path  s     }}!!!rP   c                 ,    [        U R                  5      $ )zHThe URL including PATH_INFO and the query string.

E.g, /app/blog?id=10
)rK   rr   r   s    rQ   path_qsBaseRequest.path_qs  s     4==!!rP   c                 .    U R                   R                  $ )zThe URL including raw *PATH INFO* without the host or scheme.

Warning, the path is unquoted and may contains non valid URL characters

E.g., ``/my%2Fpath%7Cwith%21some%25strange%24characters``
)rk   r   r   s    rQ   raw_pathBaseRequest.raw_path  s     }}!!!rP   c                 .    U R                   R                  $ )z7A multidict with all the variables in the query string.)rr   queryr   s    rQ   r   BaseRequest.query  s     }}"""rP   c                 .    U R                   R                  $ )z*The query string in the URL.

E.g., id=10
)rr   query_stringr   s    rQ   r#  BaseRequest.query_string  s     }})))rP   c                     U R                   $ )z4A case-insensitive multidict proxy with all headers.)ro   r   s    rQ   rE   BaseRequest.headers       }}rP   c                 .    U R                   R                  $ )z$A sequence of pairs for all headers.)rk   r   r   s    rQ   r   BaseRequest.raw_headers  s     }}(((rP   c                 f    [        U R                  R                  [        R                  5      5      $ )ziThe value of If-Modified-Since HTTP header, or None.

This header is represented as a `datetime` object.
)r#   rE   r  r   IF_MODIFIED_SINCEr   s    rQ   if_modified_sinceBaseRequest.if_modified_since  s$     t||//0F0FGHHrP   c                 f    [        U R                  R                  [        R                  5      5      $ )zkThe value of If-Unmodified-Since HTTP header, or None.

This header is represented as a `datetime` object.
)r#   rE   r  r   IF_UNMODIFIED_SINCEr   s    rQ   if_unmodified_sinceBaseRequest.if_unmodified_since  s$     t||//0H0HIJJrP   etag_headerc              #      #    U [         :X  a  [        S[         S9v   g[        R                  " U 5       H7  nUR	                  SSS5      u  p#nU(       a    g[        [        U5      US9v   M9     g7f)z'Extract `ETag` objects from raw header.F)is_weakr   r   r   r
  N)r   r    r   finditerr   bool)r2  r   r4  r   garbages        rQ   _etag_valuesBaseRequest._etag_values&  sp      (" 
 -55kB*/++aA*>'  M  Cs   A.A0header_valuec                 F    U(       d  g [        U R                  U5      5      $ rW   )r   r8  )clsr:  s     rQ   _if_match_or_none_impl"BaseRequest._if_match_or_none_impl;  s      S%%l344rP   c                 r    U R                  U R                  R                  [        R                  5      5      $ )zhThe value of If-Match HTTP header, or None.

This header is represented as a `tuple` of `ETag` objects.
)r=  rE   r  r   IF_MATCHr   s    rQ   if_matchBaseRequest.if_matchD  s(     **4<<+;+;DMM+JKKrP   c                 r    U R                  U R                  R                  [        R                  5      5      $ )zmThe value of If-None-Match HTTP header, or None.

This header is represented as a `tuple` of `ETag` objects.
)r=  rE   r  r   IF_NONE_MATCHr   s    rQ   if_none_matchBaseRequest.if_none_matchL  s*     **4<<+;+;D<N<N+OPPrP   c                 f    [        U R                  R                  [        R                  5      5      $ )z`The value of If-Range HTTP header, or None.

This header is represented as a `datetime` object.
)r#   rE   r  r   IF_RANGEr   s    rQ   if_rangeBaseRequest.if_rangeT  s"     t||//>??rP   c                 8    U R                   R                  (       + $ )zIs keepalive enabled by client?)rk   should_closer   s    rQ   
keep_aliveBaseRequest.keep_alive\  s     ==----rP   c                     [        U R                  R                  [        R                  S5      5      n[        U VVs0 s H  u  p#X#R                  _M     snn5      $ s  snnf )z=Return request cookies.

A read-only dictionary-like object.
rU   )r   rE   r  r   COOKIEr   r   )r   parsedrA   morsels       rQ   cookiesBaseRequest.cookiesa  sI     %T\\%5%5dkk2%FG O||!3 OPP Os   A
c                    U R                   R                  [        R                  5      nSu  p#Ub   Sn[        R
                  " XA[        R                  5      S   u  p#U(       a  [        U5      OSnU(       a  [        U5      OSnUc  Ub  U* nSnUb  Ub  US-  nX#:  a  [        S5      eX#s=L a  c  O  O[        S5      e[        X#S5      $ ! [         a    [        S5      ef = f)	z=The content of Range HTTP header.

Return a slice instance.

)NNNz^bytes=(\d*)-(\d*)$r   zrange not in acceptable formatr   zstart cannot be after endz"No start or end of range specified)ro   r  r   RANGErefindallASCII
IndexError
ValueErrorintslice)r   rngstartendpatterns        rQ   
http_rangeBaseRequest.http_rangem  s     mm

+
?C0ZZbhh?B
 "#c(tC"'CJTE} S_q<$%@AA## !EFFU##+  C !ABBCs   ,C C$c                     U R                   $ )zReturn raw payload stream.)rn   r   s    rQ   contentBaseRequest.content  r'  rP   c                 t    [         R                  " S[        SS9  U R                  R	                  5       (       + $ )@Return True if request's HTTP BODY can be read, False otherwise.z$Deprecated, use .can_read_body #2005r   r   )r   r   r   rn   at_eofr   s    rQ   has_bodyBaseRequest.has_body  s1     	24FST	
 =='')))rP   c                 @    U R                   R                  5       (       + $ )rh  )rn   ri  r   s    rQ   can_read_bodyBaseRequest.can_read_body  s     =='')))rP   c                 8    [        U R                  5      [        L$ )z6Return True if request has HTTP BODY, False otherwise.)typern   r+   r   s    rQ   body_existsBaseRequest.body_exists  s     DMM"*;;;rP   c                    #    U R                   R                  5       (       dD  U R                   R                  5       I Sh  vN   U R                   R                  5       (       d  MC  gg N'7f)z;Release request.

Eat unread part of HTTP BODY if present.
N)rn   ri  readanyr   s    rQ   releaseBaseRequest.release  sH     
 --&&((--''))) --&&(()s   =A)A' #A)%A)c                   #    U R                   c  U R                  (       a%  U R                  R                  U R                  5        [	        5       n U R                  R                  5       I Sh  vN nUR                  U5        U R                  (       a/  [        U5      nX0R                  :  a  [        U R                  5      eU(       d  OM}  [        U5      U l         U R                   $  N{7f)zORead request body if present.

Returns bytes object with full request content.
N)
rt   rx   rn   set_read_chunk_size	bytearrayrt  extendr   r2   bytes)r   bodychunk	body_sizes       rQ   readBaseRequest.read  s     
 # $$11$2G2GH;D"mm3355E"(( #D	I #8#8878M8MNN   %T{D 6s   A,C,.C*/A<C,c                    #    U R                  5       I Sh  vN nU R                  =(       d    SnUR                  U5      $  N*7f)z1Return BODY as text using encoding from .charset.Nr   )r  charsetdecode)r   
bytes_bodyencodings      rQ   textBaseRequest.text  s7     99;&
<<*7  ** 's   AA+A)loadsr  c                N   #    U R                  5       I Sh  vN nU" U5      $  N7f)zReturn BODY as JSON.N)r  )r   r  r|  s      rQ   jsonBaseRequest.json  s"     YY[ T{ !s   %#%c           	         #    [        U R                  U R                  U R                  U R                  R
                  U R                  R                  [        S9$ 7f)z3Return async iterator to process BODY as multipart.)r}   max_field_sizemax_headersmax_size_error_cls)r*   ro   rn   rx   rl   r  r  r2   r   s    rQ   	multipartBaseRequest.multipart  sF     MMMM 11>>88228
 	
s   AAc                 
  #    U R                   b  U R                   $ U R                  U R                  ;  a$  [        [	        5       5      U l         U R                   $ U R
                  nUS;  a$  [        [	        5       5      U l         U R                   $ [	        5       nUS:X  Ga  U R                  5       I Sh  vN nU R                  nSnUR                  5       I Sh  vN =nGb  UR                  R                  [        R                  5      n[        U[        5      (       Gar  UR                  c  [!        S5      eUR"                  (       Ga  U R$                  R'                  S[(        R*                  5      I Sh  vN nUR-                  [.        S9I Sh  vN =n	(       a  UR1                  U	5        Sh  vN n
U R$                  R'                  SUR2                  U
5      I Sh  vN   U[5        U
5      -  nSUs=:  a  U:  d  MU  O  MY  U R$                  R'                  SUR6                  5      I Sh  vN   [9        U5      eU R$                  R'                  SUR:                  S5      I Sh  vN   Uc  Sn[=        UR                  UR"                  [?        [@        RB                  U5      UUR                  5      nURE                  UR                  U5        O[G        5       nUR-                  5       I Sh  vN =n	(       a[  U[5        U	5      -  nSUs=:  a  U:  a  O  O[9        U5      eURI                  U	5        UR-                  5       I Sh  vN =n	(       a  M[  [G        5       nUR1                  U5        Sh  vN nURI                  U5        M  [!        S5      eUR                  5       I Sh  vN =nb  GM  OkU RQ                  5       I Sh  vN nU(       aL  U RR                  =(       d    S	nURI                  [U        URW                  5       RO                  U5      SUS95        [        U5      U l         U R                   $  GN GNn GN GN GN GNp GN$
 UR-                  [.        S9I Sh  vN  =n	(       a  GM  GN@ GN GN GN: GN
 Ub  URK                  S5      (       a<  URM                  S	S
9nURE                  UR                  URO                  U5      5        GNFURE                  UR                  U5        GNd GNQ GN57f)zReturn POST parameters.N)rU   z!application/x-www-form-urlencodedmultipart/form-datar  r   zMultipart field missing name.)sizezapplication/octet-streamztext/r   )defaultz8To decode nested multipart you need to use custom readerT)keep_blank_valuesr  ),rs   rp   POST_METHODSr   r   rD   r  rx   nextrE   r  r   CONTENT_TYPEr   r)   rA   r[  rB   ry   run_in_executortempfileTemporaryFile
read_chunkr   decode_iterwriter   closer2   seekr6   r   rM   rN   r   ry  rz  
startswithget_charsetr  r  r  r   rstrip)r   rD   outr  max_sizer  fieldfield_cttmpr}  decoded_chunkffraw_datar   dr  datas                    rQ   postBaseRequest.post  s-    ::!::<<t000'	4DJ::((  
 

 (	4DJ:: )00"nn..I,,HD"+.."2225? ==,,T->->?e^44zz)()HII ~~~$(JJ$>$> ("8"8%  .3-=-=CU-=-V'VVeV7<7H7H7O Nm&*jj&@&@$(#))]'" !" !" !%M(: :#$x#6$#6#6*.***D*DT399*U$U$U*CH*M$M"jj88sxxKKK#+'AH&!JJ!NN !2!2C8$!MM 

B/ $-;-2-=-=-?'??e? CJ.D 82d2&?&I I$OOE2	 .3-=-=-?'??e? !*','8'8'B ,!!LLO %R u #,.."2225?| $D,,1'

,,W5*.!( $C(
zz] / 3 (WN!"
 %V 8P .3-=-=CU-=-V'V'VVeVV L  (@,'B $+x/B/B7/K/K&+&7&7&7&HGGGEJJW0EFGGEJJ6q 3| %s+  B2T	4Q5%T	QBT	9Q:T	QT	1Q5Q6Q9+T	$Q%T	-T	3Q49T	-R.BT	6R7AT	R	T	T	8R<R=R 2T	2T3T	=T	TA4T	T	T	T	QT	T	T	1Q42T	T	T		T	RA5T	T	rA   r  c                 h    U R                   nUc  U$ UR                  nUc  U$ UR                  X5      $ )z"Extra info from protocol transport)rl   r   get_extra_info)r   rA   r  r   r   s        rQ   r  BaseRequest.get_extra_infoA  s=    >>N&&	N''66rP   c                     U R                   R                  SS5      R                  S5      nSU R                  R                   SU R
                   SU S3$ )Nasciibackslashreplace< z >)r   r   r  r   rG   rp   )r   ascii_encodable_paths     rQ   __repr__BaseRequest.__repr__M  sW    #yy//9KLSS 
 4>>**+1T\\N!<P;QQSTTrP   otherc                 0    [        U 5      [        U5      :H  $ rW   )id)r   r  s     rQ   __eq__BaseRequest.__eq__S  s    $x2e9$$rP   c                     g)NTrF   r   s    rQ   __bool__BaseRequest.__bool__V  s    rP   responsec                    #    g 7frW   rF   )r   r  s     rQ   _prepare_hookBaseRequest._prepare_hookY  s     s   excc                 0    [        U R                  U5        g rW   )r&   rn   )r   r  s     rQ   _cancelBaseRequest._cancel\  s    dmmS)rP   c                     U R                   b  U R                  S:w  a  g U R                   R                  5        H6  u  p[        U[        5      (       d  M  UR
                  R                  5         M8     g )Nr  )rs   rD   r   r   r6   rC   r  )r   	file_namefile_field_objects      rQ   _finishBaseRequest._finish_  sY    ::!2!26K!K -1JJ,<,<,>(I+Y77!&&,,. -?rP   )rv   rx   ro   ry   rk   rp   rn   rm   rs   rl   rt   rr   ru   rw   r{   r   rz   rq   )r   r   )r   r9   )r   zMultiMapping[str])r   N)r   zMultiDictProxy[_Post]rW   )vrG   rH   rI   rJ   r   
METH_PATCH	METH_POSTMETH_PUT
METH_TRACEMETH_DELETEr  r!   ATTRS	frozensetrs   r   _PostrL   rt   r{  setr|   rK   r'   r,   r   asyncioAbstractEventLoopr\  dictr"   r	   r   r%   r   r1   r/   r   propertyr   r   	Transportr   r   r}   r$   r   r   r   r   r   r;   r   r   r   r   r   r   r6  r   r   r   r   r   r   r(   r   r   r   r   r   r  r  r   r#  r   rE   r0   r   datetimer,  r0  staticmethodr    r8  classmethodr=  rA  rE  rI  rM  rS  r]  rb  re  rj  rm  rq  ru  r  r  r-   r.   r  r*   r  r  r  r  objectr  r  r4   r  BaseExceptionr  r  rO   rF   rP   rQ   r5   r5   k   s   L 	
" E* +/E>% 4'. $K$"uNCH$  '9=!!6+"6+ 6+ #	6+
 -6+ #6+ ''6+ 6+ JsOc)3./$66+ d
6+ Dj6+ d
6+ 
6+v #+(0,4"* ("*+39
 i9
 I%	9

 	)9
 i9
 Io9
 i9
 y9
 
9
v     (7,,t3 ( (
 $, $ $ % % % *      g//   9z"~9"9 9/s/s/ / sZ^3     Fz"~FbFTF F<s<3<4< <
!sZ^3 
!C 
!D 
!sZ^3     !(3C#89 !
 & & & :5c!2C!78 : :x          c  < -d
 - - VS V V "c " " " " " "# " " # # *c * * )#.   )Z ) ) I8#4#4t#; I I KX%6%6%= K K # (4.  ( 5:5	tSy	D	 5 5 L%c	*T1 L L QuT3Y/$6 Q Q @(++d2 @ @ .D . . 	Qc* 	Q 	Q !$E !$ !$F    *$ * * *t * * <T < <* E  .+C + 2F ; # 
	
 	
bH
73 
7 
7 
7U# U%F %t %$ N t *= *T *
/rP   r5   c                   H  ^  \ rS rSr% \R
                  \" S/5      -  rSr\S   \	S'   \
(       a  S\S\SS4U 4S jjr\\\\\\\S	.S
\\-  S\\-  S\\-  S\\-  S\\-  S\\-  S\\-  SS 4U 4S jjjr\SS j5       r\SS j5       r\S\4S j5       rS\SS4S jrSrU =r$ )r7   il  _match_infoNr:   rA   valr   c                    > XR                   ;  a5  [        R                  " SU R                  R                   SU S3[
        SS9  [        TU ]  X5        g )NzSetting custom .z attribute is discouragedr   r   )r  r   r   r   rG   r   super__setattr__)r   rA   r  r   s      rQ   r  Request.__setattr__t  sQ    ::%%dnn&=&=%>av F% %& 	 G*rP   r   r   r   rE   r   r   r   r}   c          
      p   > [         T
U ]  UUUUUUUS9n[        [        U5      n	U R                  U	l        U	$ )Nr   )r  r   r   r7   r  )r   r   r   rE   r   r   r   r}   retnew_retr   s             rQ   r   Request.clone~  sN     gm+  
 w$"..rP   c                 (    U R                   nUc   eU$ )zResult of route resolving.)r  r   
match_infos     rQ   r  Request.match_info  s!     %%
%%%rP   c                 <    U R                   nUc   eUR                  $ )zApplication instance.)r  current_appr  s     rQ   appRequest.app  s'     %%
%%%%%%rP   c                     U R                   nUc   eUR                  nU R                  nUR                  U5      n[	        [        US US-    5      5      n[        U5      $ )Nr   )r  appsr  indexr  reversedr   )r   r  lstr  idxsublists         rQ   config_dictRequest.config_dict  s\    %%
%%%oohhiinxIcAg/0W%%rP   r  c                    #    U R                   nUc  g UR                   H1  nUR                  =n(       d  M  UR                  X5      I S h  vN   M3     g  N	7frW   )r  _appson_response_preparesend)r   r  r  r  r  s        rQ   r  Request._prepare_hook  sR     %%
##C&)&=&=="=)..t>>> $>s   1AAA
ArF   )r   r:   )r   r8   )rG   rH   rI   rJ   r5   r  r  r  r   rL   r   rK   r	   r  r%   r   r1   r/   r\  r   r$   r  r  r  r   r  r4   r  rO   __classcell__)r   s   @rQ   r7   r7   l  s1   	=/ ::E37K/07	+C 	+c 	+d 	+ #+(0,4"* ("*+3 i I%	
 	) i Io i y 
 0   & & &] & &?N ?t ? ?rP   r7   )jr  r  rM   rW  stringr  r   r   collections.abcr   r   r   r   r   typingr   r	   r
   r   r   r   r   urllib.parser   attr	multidictr   r   r   r   r   yarlr   rU   r   _cookie_helpersr   abcr   helpersr   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   http_parserr'   http_writerr(   r  r)   r*   streamsr+   r,   typedefsr-   r.   r/   r0   r1   web_exceptionsr2   r3   web_responser4   __all__web_appr8   web_protocolr9   web_urldispatcherr:   r;   sr6   rK   r{  ry  r  digitsascii_lettersrR   rL   rT   formatr  r   rangera   rb   rd   rf   compilerg   rh   r5   r7   rF   rP   rQ   <module>r!     s     	 	     = =  " O O O "     0 %    + $ 6 4  H (
1 $,6 T] T$d3# # 4# 	ei)+]]V%9%99<NNc
 N &_c
 $nnHHK/%dD8I2JJKKs  )eCj ( $\N!G9C@c
 @ "#6(#fXQ~6FnUs U/1zz//J ws|, J +-**_*E E'#,' E~/.z#!6!;<l ~/BH?k H?rP   