
    F/j                        U d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZddlZddlZddlZddlmZ ddlmZmZ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 dd	l m!Z! dd
l"m#Z# ddl$m%Z% ddl&m'Z'm(Z( ddl)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 ddl2m3Z3 ddl4m5Z5m6Z6 ddl7Z7ddl8m9Z9m:Z:m;Z; ddl<m=Z> ddl?m@Z@ ddlAmBZB ddlCmDZD ej                  dk\  rddlZFnddlFZFdZG ej                         dk(  ZI ej                         dk(  ZJej                  dk\  ZKdZL e/d      ZM e/d      ZN ej                  dd      ZPePj                  ZQ eRe
j                  j                  d            ZU eVd d!g eWd"d#            ZXeBj                  ZZej                  j                  xs: ej                  j                   xr!  eRe
j                  j                  d$            Z^ eWdd%      D  ch c]
  }  e_|        c} Z` eWdd&      D  ch c]
  }  e_|        c}  e_d'      hz  Zad(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9 e_d:      hZbe`eaz  ebz  Zc G d; d<      Zddd>eed?eed@eedAeefdBZf G dC dD edDg dE            Zg	 dd>eed?eed@eedAegfdFZhdGe@dAeie@egdz  f   fdHZjdAe	j                  dz  fdIZk e7j                  dJdJdJK       G dL dM             ZmdNe	j                  dz  dOeedAegfdPZndAeoeeemf   fdQZpdGe@dAeie@egdz  f   fdRZq e7j                  dJdJdJK       G dS dT             Zr ej                  dUV      dWeedAerfdX       Zt G dY dZe      Zu ej                  dUV      d[eedAeieee'eeeef   f   fd\       Zvdd]e*d^eedz  dAeedz  fd_Zw ej                  d`      Zy eWd&d'      D  ch c]
  }  e_|        c} dahz  ZzdbeedAeefdcZ{	 dddeedeeRdfeedgeedAeef
dhZ|dOeedz  dAeRfdiZ}dOeedAeRfdjZ~daedz  edk<   d=adAeefdlZddmZ	 ddnedoeedpedqej                  dredAej                  dz  fdsZ	 ddteg e*f   dpedqej                  dredAej                  dz  f
duZdvedpedwedAefdxZ G dy dz      Z G d{ d|e+d|         Z G d} d~e      Z G d de      Z	 ddedz  dedAeFj                   fdZ G d d      ZdddeMdAdfdZ e       Z G d de.      ZefdddededAdfdZej0                   G d de,eM                Z G d deeM         Z G d deeM         Z G d deeM         Z G d deeeee*   z  e*f         ZdZ ej                  e      Zde dZ ej                  e      Z ej                  d(e d      ZdZ e7j                  dJdJdJK       G d d             ZdeedAdfdZdeedz  dAej
                  dz  fdZej                  deededAeRfd       ZdeededAeRfdZyc c} w c c} w c c} w )zVarious helper functions    N)
namedtuple)Callable	GeneratorIterableIteratorMapping)suppress)EmailMessage)HeaderParser)HTTP)	parsedateceil)Path)MappingProxyTypeTracebackType)AnyContextManagerGenericOptionalProtocolTypeVarget_argsoverload)quote)
getproxiesproxy_bypass)	MultiDictMultiDictProxyMultiMapping)under_cached_property)URL   )hdrs)client_logger      )	BasicAuthChainMapProxyETagreifyDarwinWindowsi   _T_S	_SENTINELsentinelAIOHTTP_NO_EXTENSIONS   i0  d      PYTHONASYNCIODEBUG          ()<>@,;:\"/[]?={} 	   c                       e Zd Zded   fdZy)noopreturn)NNNc              #      K   d  y wN selfs    M/var/www/html/maxservice/venv/lib/python3.12/site-packages/aiohttp/helpers.py	__await__znoop.__await__s   s	     s   N)__name__
__module____qualname__r   rW   rS       rV   rO   rO   r   s    9%56 r[   rO    loginpasswordencodingrP   c                     d| v rt        d      |  d| j                  |      }dt        j                  |      j	                  |      z   S )zEncode HTTP Basic Authentication credentials as an Authorization header value.

    Returns a string of the form ``"Basic <base64>"`` suitable for use as the
    value of the ``Authorization`` (or ``Proxy-Authorization``) header.
    rB   z2A ":" is not allowed in login (RFC 7617#section-2)zBasic )
ValueErrorencodebase64	b64encodedecode)r]   r^   r_   credss       rV   encode_basic_authrg   w   sS     e|MNNgQxj!((2Ef&&u-44X>>>r[   c            	            e Zd ZdZ	 ddedededd f fdZeddededd fd	       Zedd
dedede	d    fd       Z
defdZ xZS )r)   z!Http basic authentication helper.latin1r]   r^   r_   rP   c                     |t        d      |t        d      d|v rt        d      t        j                  dt        d       t        |   | |||      S )Nz"None is not allowed as login valuez%None is not allowed as password valuerB   z5A ":" is not allowed in login (RFC 1945#section-11.1)zBasicAuth is deprecated and will be removed in aiohttp 4.0; use aiohttp.encode_basic_auth() with headers={'Authorization': ...} instead   )
stacklevel)ra   warningswarnDeprecationWarningsuper__new__)clsr]   r^   r_   	__class__s       rV   rq   zBasicAuth.__new__   sk     =ABBDEE%<TUU5 	
 wsE8X>>r[   auth_headerc                    	 |j                  dd      \  }}|j                         dk7  rt        d|z        	 t        j                  |j                  d      d      j                  |      }	 |j                  d
d      \  }}t        |||      S # t        $ r t        d      w xY w# t        j                  $ r t        d	      w xY w# t        $ r t        d      w xY w)z<Create a BasicAuth object from an Authorization HTTP header.rL   r#   z%Could not parse authorization header.basiczUnknown authorization method %sasciiT)validatezInvalid base64 encoding.rB   zInvalid credentials.)
splitra   lowerrc   	b64decoderb   re   binasciiError_basic_auth_no_warn)rr   rt   r_   	auth_typeencoded_credentialsdecodedusernamer^   s           rV   re   zBasicAuth.decode   s    	F-8->->sA-F*I* ??'>JKK	9&&#**73dfX 	5
 ")sA!6Hh #8Xx@@-  	FDEE	F ~~ 	9788	9  	5344	5s"   B 5B) /C B&)CC r_   urlc                    t        |t              st        d      |j                  |j                  yt        |j                  xs d|j                  xs d|      S )zCreate BasicAuth from url.zurl should be yarl.URL instanceNr\   )
isinstancer"   	TypeErrorraw_userraw_passwordr~   userr^   )rr   r   r_   s      rV   from_urlzBasicAuth.from_url   sT     #s#=>> <<C$4$4$<"388>r3<<3E2xPPr[   c                 X    t        | j                  | j                  | j                        S )zEncode credentials.)rg   r]   r^   r_   rT   s    rV   rb   zBasicAuth.encode   s     T]]DMMJJr[   r\   ri   )ri   )rX   rY   rZ   __doc__strrq   classmethodre   r"   r   r   rb   __classcell__rs   s   @rV   r)   r)      s    + >F??#&?7:?	?* A A A; A A8 3; Q3 QS Q@U Q QK Kr[   r)   r]   r^   r_   c                 <    t         j                  t        | ||f      S )zConstruct a BasicAuth without emitting the deprecation warning.

    For internal use only. Bypasses BasicAuth.__new__ so that aiohttp's own
    machinery doesn't trigger deprecation warnings in user code.
    )tuplerq   r)   r   s      rV   r~   r~      s     ==UHh$?@@r[   r   c                     | j                   | j                  | dfS | j                  d      t        | j                  xs d| j
                  xs d      fS )zIRemove user and password from URL if present and return BasicAuth object.Nr\   )r   r   	with_userr~   r   r^   )r   s    rV   strip_auth_from_urlr      sQ     || 0 0 8Dy== 3CHHNCLLDVTV WWWr[   c                  z   t         j                  j                  d      } | t        |       }n"	 t        j                         }|t        rdndz  }	 t        j                  t        |            S # t
        $ r }t        j                  d|       Y d}~yd}~ww xY w# t        j                  $ r }t        j                  d|       Y d}~yd}~wt        $ re}d}t        j                  t              5  |j!                         }ddd       n# 1 sw Y   nxY w| s|rt        j                  d|       Y d}~yd}~ww xY w)	zLoad netrc from file.

    Attempt to load it from the path specified by the env-var
    NETRC or in the default location in the user's home directory.

    Returns None if it couldn't be found or fails to parse.
    NETRCNzHCould not resolve home directory when trying to look for .netrc file: %s_netrcz.netrczCould not parse .netrc file: %sFzCould not read .netrc file: %s)osenvirongetr   homeRuntimeErrorr%   debug
IS_WINDOWSnetrcr   NetrcParseErrorwarningOSError
contextlibr	   is_file)	netrc_env
netrc_pathhome_direnetrc_existss        rV   netrc_from_envr      s    

w'I)_
		yy{H ZXF
G{{3z?++  	5
 	    D?CC   G  ) 	0%--/L	0 	0 	0  !!"BAFGsS   A/ B /	B8BBD:.C		D:D50D
	D5
D	!D55D:T)auto_attribsfrozenslotsc                   (    e Zd ZU eed<   edz  ed<   y)	ProxyInfoproxyN
proxy_auth)rX   rY   rZ   r"   __annotations__r)   rS   r[   rV   r   r     s    JD  r[   r   	netrc_objhostc                     | t        d      | j                  |      }|t        d|d      |\  }}}|s||n|}|d}t        ||      S )z
    Return :py:class:`~aiohttp.BasicAuth` credentials for ``host`` from ``netrc_obj``.

    :raises LookupError: if ``netrc_obj`` is :py:data:`None` or if no
            entry is found for the ``host``.
    zNo .netrc file foundzNo entry for z found in the `.netrc` file.r\   )LookupErrorauthenticatorsr~   )r   r   auth_from_netrcr]   accountr^   r   s          rV   basicauth_from_netrcr     sv     011..t4OM$1MNOO.E7H '/uH x22r[   c                  B   t               j                         D  ci c]  \  } }| dv r| t        |       }} }t               }|j                         D  ci c]  \  } }| t	        |       }} }i }|j                         D ]~  \  }}|\  }}	|j
                  dv r0t        j                  d|j
                  j                         |       I|r%|	#|j                  	 t        ||j                        }	t        ||	      ||<    |S c c}} w c c}} w # t        $ r d }	Y ,w xY w)N)httphttpswswss)r   r   z)%s proxies %s are not supported, ignoring)r   itemsr"   r   r   schemer%   r   upperr   r   r   r   )
kv
proxy_urlsr   strippedretprotovalr   auths
             rV   proxies_from_envr   *  s3    L&&(Aq.. 	
3q6	J 
  I6@6F6F6HIda&q))IHI
Cnn& ,
st<<++!!;U\\=O=O=QSX zz% /	5::FD ud+E
, J- J #  D s   DD
DDDc                    | j                   .t        | j                         rt        d| j                   d      t               }	 || j                     }|j
                  |j                  fS # t        $ r t        d| d      w xY w)z5Get a permitted proxy for the given URL from the env.zProxying is disallowed for ``zNo proxies found for `z` in the env)r   r   r   r   r   r   r   KeyError)r   proxies_in_env
proxy_infos      rV   get_env_proxy_for_urlr   D  s    
xxSXX 68AFGG%'N7#CJJ/
 !6!666  H23'FGGHs   A- -Bc                   6    e Zd ZU eed<   eed<   eed<   ded<   y)MimeTypetypesubtypesuffixzMultiDictProxy[str]
parametersN)rX   rY   rZ   r   r   rS   r[   rV   r   r   R  s    
ILK%%r[   r   8   )maxsizemimetypec           	         | s t        dddt        t                           S | j                  d      }t               }|dd D ]W  }|s|j	                  d      \  }}}|j                  |j                         j                         |j                  d             Y |d   j                         j                         }|d	k(  rd
}|j	                  d      \  }}}	|	j	                  d      \  }	}}
t        ||	|
t        |            S )a  Parses a MIME type into its components.

    mimetype is a MIME type string.

    Returns a MimeType object.

    Example:

    >>> parse_mimetype('text/html; charset=utf-8')
    MimeType(type='text', subtype='html', suffix='',
             parameters={'charset': 'utf-8'})

    r\   )r   r   r   r   rA   r#   NrI   z "r   *z*/*rE   +)r   r   r   ry   	partitionaddrz   strip)r   partsparamsitemkey_valuefulltypemtypestyper   s              rV   parse_mimetyper   Z  s     R~ik7R
 	
 NN3E&[Fab	 ;s+Q

399;$$&D(9:	; Qx~~%%'H3((-OE1es+E1fE&^F=S r[   c                   ,     e Zd Zd fdZdefdZ xZS )EnsureOctetStreamrP   c                 D    t         |           | j                  d       y Nzapplication/octet-stream)rp   __init__set_default_type)rU   rs   s    rV   r   zEnsureOctetStream.__init__  s    89r[   c                     | j                  dd      j                         }|j                  d      \  }}}|j                         }|j	                  d      dk7  r| j                         S |S )a  Re-implementation from Message

        Returns application/octet-stream in place of plain/text when
        value is wrong.

        The way this class is used guarantees that content-type will
        be present so simplify the checks wrt to the base implementation.
        zcontent-typer\   rA   rE   r#   )r   rz   r   r   countget_default_type)rU   r   ctyper   s       rV   get_content_typez"EnsureOctetStream.get_content_type  sc     ,224 ooc*q!;;sq ((**r[   rP   N)rX   rY   rZ   r   r   r   r   r   s   @rV   r   r     s    :
# r[   r   rawc                     t        t        t              j                  d|        }|j	                         }|j                  d      }t        |dd       }|t        |      fS )zParse Content-Type header.

    Returns a tuple of the parsed content type and a
    MappingProxyType of parameters. The default returned value
    is `application/octet-stream`
    )policyzContent-Type: rS   r#   N)r   r   r   parsestrr   
get_paramsdictr   )r   msgcontent_typer   content_dicts        rV   parse_content_typer    sb     (
6
?
?.QTPU@V
WC'')L^^BFqr
#L),777r[   objdefaultc                     t        | dd       }|r5t        |t              r%|d   dk7  r|d   dk7  rt        |      j                  S |S )Nnamer   r=   r>   )getattrr   r   r   r  )r  r  r  s      rV   guess_filenamer    sC    3%D
4%$q'S.T"X_DzNr[   z[^\041\043-\133\135-\176]	contentc                 p    t         t        |       kD  st        d|       t        j	                  d |       S )a  Return 7-bit content as quoted-string.

    Format content into a quoted-string as defined in RFC5322 for
    Internet Message Format. Notice that this is not the 8-bit HTTP
    format, but the 7-bit email format. Content must be in usascii or
    a ValueError is raised.
    zbad content for quoted-string c                 *    d| j                  d      z   S )NrC   r   )group)xs    rV   <lambda>zquoted_string.<locals>.<lambda>  s    dQWWQZ&7 r[   )QCONTENTsetra   not_qtext_resub)r  s    rV   quoted_stringr    s7     s7|#9'EFF7AAr[   disptypequote_fields_charsetr   c                    | rt         t        |       kD  st        d|       | }|rg }|j                         D ]  \  }}|rt         t        |      kD  st        d|d|      |r[|j	                         dk(  r%t        |d|      }|j                  |d|z  f       e	 t        |      }|j                  |d|z  f       |j                  d
d      j                  dd      }|j                  |d|z  f        dj                  d |D              }	dj                  ||	f      }|S # t        $ r: dj                  |dt        |d|      f      }|j                  |d	z   |f       Y 1w xY w)ak  Sets ``Content-Disposition`` header for MIME.

    This is the MIME payload Content-Disposition header from RFC 2183
    and RFC 7579 section 4.2, not the HTTP Content-Disposition from
    RFC 6266.

    disptype is a disposition type: inline, attachment, form-data.
    Should be valid extension token (see RFC 2183)

    quote_fields performs value quoting to 7-bit MIME headers
    according to RFC 7578. Set to quote_fields to False if recipient
    can take 8-bit file names and field values.

    _charset specifies the charset to use when quote_fields is True.

    params is a dict with disposition params.
    zbad content disposition type z"bad content disposition parameter rI   filenamer\   r   z"%s"z''r   rC   z\\rD   z\"z; c              3   >   K   | ]  }d j                  |        yw)rI   N)join).0pairs     rV   	<genexpr>z-content_disposition_header.<locals>.<genexpr>  s     ?tCHHTN?s   )
TOKENr  ra   r   rz   r   appendr  r  replace)
r  r  r  r   r   lparamsr   r   qvalsparamss
             rV   content_disposition_headerr(    su   ( ECM18EFFE 	5HCus3x/ #EcWAcW!UVV99;*, b8<DNNC$#78=,S1  Vd]';<{{4088eDVd]34'	5( ))?w??		5'*+L & :!ww%tU3X-NO   c	4'89	:s   D((?E+*E+c                 T    | syd| v xs  | j                  dd      j                         S )zCheck if host looks like an IP Address.

    This check is only meant as a heuristic to ensure that
    a host is not a domain name.
    FrB   .r\   )r$  isdigit)r   s    rV   is_ip_addressr,    s/      $;9$,,sB/7799r[   c                    | j                  d      }t        |      dk7  ry|D ]d  }dt        |      cxk  rdk  r$n  y|j                         r|j                         s y|d   dk(  rt        |      dk7  r yt	        |      dkD  sd y y	)
zCheck if host is a canonical dotted-quad IPv4 address.

    Rejects the legacy numeric forms that ``socket`` still accepts and
    maps onto an address, e.g. ``2130706433``, ``017700000001``, ``127.1``.
    r*     Fr#   r'   r   0   T)ry   lenisasciir+  int)r   r   parts      rV   is_canonical_ipv4_addressr5    s     JJsOE
5zQ 	 SY#!# -1LLN$,,.7c>c$i1nt9s?	 r[   _cached_current_datetimec                      t        t        j                               } | t        k7  r5d}d}t        j                  |       ^}}}}}}}	}
d||	   |||   ||||fz  a| at        S )N)MonTueWedThuFriSatSun)r\   JanFebMarAprMayJunJulAugSepOctNovDecz#%s, %02d %3s %4d %02d:%02d:%02d GMT)r3  timer6  gmtime_cached_formatted_datetime)now_weekdayname
_monthnameyearmonthdayhhmmsswdtails              rV   rfc822_formatted_timerY    s     diik
C
&& I

  37++c2B/eS"b"b4%JuN
 &
" $' %%r[   c                     | \  }} |       }|*t        t              5   t        ||              d d d        y y # 1 sw Y   y xY wrR   )r	   	Exceptionr
  )inforefr  obs       rV   _weakref_handler_  D  sM    IC	B	~i  	 GB	  	  	  	 s	   :Ar^  r  timeoutlooptimeout_ceil_thresholdc                     |T|dkD  rO|j                         |z   }||k\  rt        |      }|j                  |t        t	        j
                  |       |f      S y Nr   )rK  r   call_atr_  weakrefr]  )r^  r  r`  ra  rb  whens         rV   weakref_handlerh  L  sU     w{yy{W$,,:D||D/GKKOT3JKKr[   cbc                 p    ||dk  ry |j                         }t        |||      }|j                  ||       S rd  )rK  calculate_timeout_whenre  )ri  r`  ra  rb  rN  rg  s         rV   
call_laterrl  \  s=     'Q,
))+C!#w0FGD<<b!!r[   	loop_timetimeout_ceiling_thresholdc                 0    | |z   }||kD  rt        |      S |S )z$Calculate when to execute a timeout.r   )rm  r`  rn  rg  s       rV   rk  rk  i  s&     wD**DzKr[   c            	           e Zd ZdZdZ	 ddej                  dedz  deddfdZd	e	d
   de
de
ddfdZddZdej                  dz  fdZddZddZy)TimeoutHandlezTimeout handle_timeout_loop_ceil_threshold
_callbacksra  r`  Nceil_thresholdrP   c                 <    || _         || _        || _        g | _        y rR   rr  )rU   ra  r`  rw  s       rV   r   zTimeoutHandle.__init__z  s&      
-  	r[   callback).Nargskwargsc                 @    | j                   j                  |||f       y rR   )rv  r#  )rU   ry  rz  r{  s       rV   registerzTimeoutHandle.register  s     	$78r[   c                 8    | j                   j                          y rR   )rv  clearrT   s    rV   closezTimeoutHandle.close  s    r[   c                     | j                   }|b|dkD  r]| j                  j                         |z   }|| j                  k\  rt	        |      }| j                  j                  || j                        S y rd  )rs  rt  rK  ru  r   re  __call__)rU   r`  rg  s      rV   startzTimeoutHandle.start  sa    --7Q;::??$w.D$...Dz::%%dDMM::r[   c                     | j                   A| j                   dkD  r2t        | j                        }| j                  |j                         |S t               S rd  )rs  TimerContextrt  r}  r`  	TimerNoop)rU   timers     rV   r  zTimeoutHandle.timer  sB    ==$): ,EMM%--(L;r[   c                     | j                   D ]&  \  }}}t        t              5   ||i | d d d        ( | j                   j                          y # 1 sw Y   MxY wrR   )rv  r	   r[  r  )rU   ri  rz  r{  s       rV   r  zTimeoutHandle.__call__  s]     $ 	$Bf)$ $D#F#$ $	$ 	$ $s   	AA	   r   )rP   BaseTimerContext)rX   rY   rZ   r   	__slots__asyncioAbstractEventLoopfloatr   r   r   r}  r  TimerHandler  r  r  rS   r[   rV   rq  rq  u  s    FI !"	''  	
 
9 +9479CF9	9
 w**T1  r[   rq  c                       e Zd ZdZddZy)r  rS   Nc                      y)z0Raise TimeoutError if timeout has been exceeded.NrS   rT   s    rV   assert_timeoutzBaseTimerContext.assert_timeout  s    r[   r   )rX   rY   rZ   r  r  rS   r[   rV   r  r    s    I?r[   r  c                   L    e Zd ZdZdefdZdee   dz  dedz  dedz  ddfdZ	y)	r  rS   rP   c                     | S rR   rS   rT   s    rV   	__enter__zTimerNoop.__enter__  s    r[   exc_typeNexc_valexc_tbc                      y rR   rS   )rU   r  r  r  s       rV   __exit__zTimerNoop.__exit__  s     	r[   )
rX   rY   rZ   r  r  r  r   BaseExceptionr   r  rS   r[   rV   r  r    sS    I+ }%, % $	
 
r[   r  c            	           e Zd ZdZdZdej                  ddfdZddZde	fdZ
d	ee   dz  d
edz  dedz  dedz  fdZddZy)r  z&Low resolution timeout context managerrt  _tasks
_cancelled_cancellingra  rP   Nc                 <    || _         g | _        d| _        d| _        y )NFr   r  )rU   ra  s     rV   r   zTimerContext.__init__  s    
/1r[   c                 >    | j                   rt        j                  dy)z7Raise TimeoutError if timer has already been cancelled.N)r  r  TimeoutErrorrT   s    rV   r  zTimerContext.assert_timeout  s    ??&&D0 r[   c                     t        j                  | j                        }|t        d      t        j
                  dk\  r|j                         | _        | j                  rt         j                  d | j                  j                  |       | S )N)ra  z4Timeout context manager should be used inside a taskr&   )r  current_taskrt  r   sysversion_info
cancellingr  r  r  r  r#  rU   tasks     rV   r  zTimerContext.__enter__  sr    ##4<UVVw&  $0D??&&D04 r[   r  r  r  c                    d }| j                   r| j                   j                         }|t        j                  u rR| j                  rF|J t
        j                  dk\  r|j                         | j                  kD  ry t        j                  |y )Nr&   )
r  popr  CancelledErrorr  r  r  uncancelr  r  )rU   r  r  r  
enter_tasks        rV   r  zTimerContext.__exit__  s}     04
;;*Jw---$//))) 7* &&(4+;+;;&&G3r[   c                     | j                   s2t        | j                        D ]  }|j                           d| _         y y NT)r  r  r  cancelr  s     rV   r`  zTimerContext.timeout  s8    DKK(  #DO	 r[   r   )rX   rY   rZ   r   r  r  r  r   r  r  r  r   r  r   boolr  r`  rS   r[   rV   r  r    s}    0@IW66 4 1
+ "}%, % $	
 
0#r[   r  delayrw  c                     | | dk  rt        j                  d       S t        j                         }|j	                         }|| z   }| |kD  rt        |      }t        j                  |      S rd  )async_timeoutr`  r  get_running_looprK  r   
timeout_at)r  rw  ra  rN  rg  s        rV   ceil_timeoutr    sd     }
$$T**##%D
))+C;D~Dz##D))r[   c                       e Zd ZU dZ eg d      Zee   ed<   dZ	edz  ed<   dZ
eeef   dz  ed<   eZedz  ez  ed<   dedz  d	dfd
Zed	efd       Zed	edz  fd       Zed	edz  fd       Zy)HeadersMixinzMixin for handling headers.)_content_type_content_dict_stored_content_type_headersNr  r  r  r   rP   c                     || _         |d| _        i | _        y t        |      \  }}|| _        |j	                         | _        y r   )r  r  r  r  copy)rU   r   r  content_mapping_proxys       rV   _parse_content_typez HeadersMixin._parse_content_type  sH    $'!;!;D!#D2DS2I/L/!-D!6!;!;!=Dr[   c                     | j                   j                  t        j                        }| j                  |k7  r| j                  |       | j                  J | j                  S )z7The value of content part for Content-Type HTTP header.)r  r   r$   CONTENT_TYPEr  r  r  rU   r   s     rV   r  zHeadersMixin.content_type&  sX     mm 1 12$$+$$S)!!---!!!r[   c                     | j                   j                  t        j                        }| j                  |k7  r| j                  |       | j                  J | j                  j                  d      S )z7The value of charset part for Content-Type HTTP header.charset)r  r   r$   r  r  r  r  r  s     rV   r  zHeadersMixin.charset/  sc     mm 1 12$$+$$S)!!---!!%%i00r[   c                 r    | j                   j                  t        j                        }|dS t	        |      S )z(The value of Content-Length HTTP header.N)r  r   r$   CONTENT_LENGTHr3  )rU   content_lengths     rV   r  zHeadersMixin.content_length8  s3     **4+>+>?%-tF3~3FFr[   )rX   rY   rZ   r   	frozensetATTRSr    r   r   r  r  r   r2   r  r1   r  propertyr  r  r3  r  rS   r[   rV   r  r    s    %PQE3 $M3:$+/M4S>D(/3;#*y0;
>sTz 
>d 
> "c " " 1t 1 1 Gd
 G Gr[   r  futzasyncio.Future[_T]resultc                 H    | j                         s| j                  |       y y rR   )done
set_result)r  r  s     rV   r  r  ?  s    88:v r[   c                   $    e Zd Z	 ddededdfdZy)ErrorableProtocolexc	exc_causerP   Nc                      y rR   rS   )rU   r  r  s      rV   set_exceptionzErrorableProtocol.set_exceptionH  s     r[   .)rX   rY   rZ   r  r  rS   r[   rV   r  r  G  s(     $' ! 
	r[   r  z&asyncio.Future[_T] | ErrorableProtocolr  r  c                     t        j                  |       r| j                         ry|t        u }||u }|s	|s||_        | j                  |       y)zSet future exception.

    If the future is marked as complete, this function is a no-op.

    :param exc_cause: An exception that is a direct cause of ``exc``.
                      Only set if provided.
    N)r  isfuturer  _EXC_SENTINEL	__cause__r  )r  r  r  exc_is_sentinelexc_causes_itselfs        rV   r  r  O  sM     =0Oy(#4!cr[   c                   `    e Zd ZU dZdZee   ed<   ddedee	   dz  fdZ
ded	efd
Zd	efdZy)BaseKeyzBase for concrete context storage key classes.

    Each storage is provided with its own sub-class for the sake of some additional type safety.
    )_name_t__orig_class__r  Nr  tc                     t        j                         }|r8|j                  j                  dk(  r|j                  d   }n|j
                  }|r8dz   |z   | _        || _        y )Nz<module>rX   r*  )inspectcurrentframef_codeco_name	f_globalsf_backr  r  )rU   r  r  framemodules        rV   r   zBaseKey.__init__t  s]    $$&||##z1#ooj9LLE	  c\D(
r[   otherrP   c                 V    t        |t              r| j                  |j                  k  S yr  )r   r  r  )rU   r  s     rV   __lt__zBaseKey.__lt__  s"    eW%::++r[   c                    | j                   }|0t        t              5  t        | j                        d   }d d d        |d}nSt        |t              r8|j                  dk(  r|j                  }n'|j                   d|j                   }nt        |      }d| j                  j                   d| j                   d| dS # 1 sw Y   xY w)	Nr   z<<Unknown>>builtinsr*  r=   r;   z, type=z)>)r  r	   AttributeErrorr   r  r   r   rY   rZ   reprrs   rX   r  )rU   r  t_reprs      rV   __repr__zBaseKey.__repr__  s    GG9.) 5T001!45 9"F4 ||z)LL>1>>*:;!WF4>>**+1TZZLxrJJ5 5s   CC
rR   )rX   rY   rZ   r   r  r   objectr   r   r/   r   r  r  r  rS   r[   rV   r  r  f  sV    
 2I
 L 
S 
T"X_ 
F t 
K# Kr[   r  c                       e Zd ZdZy)AppKeyz.Keys for static typing support in Application.NrX   rY   rZ   r   rS   r[   rV   r  r    s    8r[   r  c                       e Zd ZdZy)
RequestKeyz*Keys for static typing support in Request.Nr  rS   r[   rV   r  r    s    4r[   r  c                       e Zd ZdZy)ResponseKeyz+Keys for static typing support in Response.Nr  rS   r[   rV   r  r    s    5r[   r  c            	          e Zd ZdZdeeeee   z  ef      ddfdZ	ddZ
edee   defd       Zededefd	       Zdeee   z  defd
Zedee   dedeez  fd       Zeddee   dddedz  fd       Zeddededefd       Zddeee   z  dedefdZdefdZdeeee   z     fdZdedefdZdefdZdefdZy)r*   )_mapsmapsrP   Nc                 $    t        |      | _        y rR   )r   r  )rU   r  s     rV   r   zChainMapProxy.__init__  s    4[
r[   c                 4    t        d| j                   d      )NzInheritance class z  from ChainMapProxy is forbidden)r   rX   )rr   s    rV   __init_subclass__zChainMapProxy.__init_subclass__  s      .NO
 	
r[   r   c                      y rR   rS   rU   r   s     rV   __getitem__zChainMapProxy.__getitem__  s    25r[   c                      y rR   rS   r	  s     rV   r
  zChainMapProxy.__getitem__  s    ,/r[   c                 f    | j                   D ]	  }	 ||   c S  t        |      # t        $ r Y "w xY wrR   )r  r   )rU   r   mappings      rV   r
  zChainMapProxy.__getitem__  sD    zz 	Gs|#	
 sm  s   $	00r  c                      y rR   rS   rU   r   r  s      rV   r   zChainMapProxy.get  s    <?r[   c                      y rR   rS   r  s      rV   r   zChainMapProxy.get  s    FIr[   c                      y rR   rS   r  s      rV   r   zChainMapProxy.get  s    8;r[   c                 0    	 | |   S # t         $ r |cY S w xY wrR   )r   r  s      rV   r   zChainMapProxy.get  s%    	9 	N	s    c                 V    t         t               j                  | j                         S rR   )r1  r  unionr  rT   s    rV   __len__zChainMapProxy.__len__  s    ;35;;

+,,r[   c                 r    i }t        | j                        D ]  }|j                  |        t        |      S rR   )reversedr  updateiter)rU   dr  s      rV   __iter__zChainMapProxy.__iter__  s6    *,

+ 	GHHW	 Awr[   c                 @    t        fd| j                  D              S )Nc              3   &   K   | ]  }|v  
 y wrR   rS   )r  mr   s     rV   r!  z-ChainMapProxy.__contains__.<locals>.<genexpr>  s     03!80s   anyr  r	  s    `rV   __contains__zChainMapProxy.__contains__  s    0TZZ000r[   c                 ,    t        | j                        S rR   r  rT   s    rV   __bool__zChainMapProxy.__bool__  s    4::r[   c                 `    dj                  t        t        | j                              }d| dS )Nz, zChainMapProxy(r<   )r  mapr  r  )rU   r  s     rV   r  zChainMapProxy.__repr__  s*    ))Cdjj12y**r[   r   r  rR   )rX   rY   rZ   r  r   r   r   r  r   r   r  r   r/   r
  r0   r   r3  r  r   r  r  r  r!  r#  r  rS   r[   rV   r*   r*     sf   I!XgcF3K.?.D&EF !4 !

 5vbz5b5 5/s/s/ /sVBZ/ C  ?vbz?B?27? ?IvbzIDI29I I;s;S;3; ;sVBZ' #  - -(3#45 1 14 1$ +# +r[   r*   z[!\x23-\x7E\x80-\xff]+z(W/)?"(z)"z)(?:\s*,\s*|$)|(.)r   c                   &    e Zd ZU eed<   dZeed<   y)r+   r   Fis_weakN)rX   rY   rZ   r   r   r'  r  rS   r[   rV   r+   r+     s    JGTr[   r+   r   c                 `    | t         k7  r%t        j                  |       st        d| d      y y )NzValue z, is not a valid etag. Maybe it contains '"'?)ETAG_ANY	_ETAGC_RE	fullmatchra   )r   s    rV   validate_etag_valuer,    s9    !4!4U!;UIJK
 	
 "<r[   date_strc                     | Vt        |       }|It        t              5  t        j                  |dd dt        j                  j
                  icddd       S y# 1 sw Y   yxY w)z/Process a date string, return a datetime objectN   tzinfo)r   r	   ra   datetimetimezoneutc)r-  	timetuples     rV   parse_http_dater5    sd    h'	 *% W(()BQ-V@Q@Q@U@UVW WWs   0AA#methodcodec                 r    |t         v xs. | t        v xs$ d|cxk  xr dk  nc xr | t        j                  v S )z-Check if a request must return an empty body.r6   ,  )EMPTY_BODY_STATUS_CODESEMPTY_BODY_METHODSr$   METH_CONNECT_ALLr6  r7  s     rV   must_be_empty_bodyr>    sD     	'' 	C''	C4#A&D,A,A"Ar[   c                 ^    |t         v xs$ d|cxk  xr dk  nc xr | t        j                  v S )zrCheck if a Content-Length header should be removed.

    This should always be a subset of must_be_empty_body
    r6   r9  )r:  r$   r<  r=  s     rV   should_remove_content_lengthr@    s4     ** tc=f(=(==r[   )r\   utf-8r   rR   )TrA  )r\  ztuple[weakref.ref[object], str]rP   Nr  )r   r  rc   r|   r   r1  enum	functoolsr  r   r   platformrer  rK  rm   rf  collectionsr   collections.abcr   r   r   r   r   r	   email.messager
   email.parserr   email.policyr   email.utilsr   mathr   pathlibr   typesr   r   typingr   r   r   r   r   r   r   r   urllib.parser   urllib.requestr   r   attr	multidictr   r   r    propcache.apir!   r,   yarlr"   r\   r$   logr%   r  r  __all__systemIS_MACOSr   PY_311DEFAULT_CHUNK_SIZEr/   r0   Enumr1   r2   r  r   r   NO_EXTENSIONSr  ranger:  METH_HEAD_ALLr;  flagsdev_modeignore_environmentDEBUGchrCHARCTL
SEPARATORSr"  rO   r   rg   r)   r~   r   r   r   sr   r   r   r   r   r   	lru_cacher   r   r  r  compiler  r  r  r(  r,  r5  r6  r3  r   rM  rY  r_  r  r  r  r  rh  rl  rk  rq  r  r  r  Timeoutr  r  r  r  r  r  r  total_orderingr  r  r  r  r*   _ETAGCr*  _QUOTED_ETAGQUOTED_ETAG_RELIST_QUOTED_ETAG_REr)  r+   r,  r5  r>  r@  )is   0rV   <module>rr     s             	  	 
    " L L  & %  !   1	 	 	  3  = = 8   w#
98??(X__)+
			W	$
  T]T]DIIk:.	RZZ^^$;<= $S#$@c3$@A  '' 		 			$$$Sbjjnn=Q.R)S 
 a&1A&Q|$!s1v$H(  F'
* 	s
Z 
	?S 	?C 	? 	?RU 	?BK
;(IJ BKL 5=AAA.1AAXS XU3	D0@+@%A X(d* (V T$d3! ! 4!
3EKK$$6 3c 3i 3:$sI~. 47s 7uS)d2B-B'C 7 T$d3& & 4& R $S $X $ !$N 2 R 8C 8E#/?S/I*I$J 8 !8 cDj C$J  rzz67!$-.qCF.$7
B3 
B3 
B ?F00!%08;0QT00f
:d
 
:t 
:C D , (, #* + %&s %&P  %&
  
#
#	
 " 4( %&	
"S
"
" 
#
#
" "	
"
 4
"			  %	 		1  1 h?~&89 ?   >## >#D 23*4<*).**,G ,G^( "  
    -	1	  
	. .Kgbk .K .Kb9WR[ 95 56'"+ 6;+GC&+-s23 ;+~ 
#BJJv	&$L) bjjAl^3E!FG  T$d3  4

s 
t 
cDj X->->-E  s # $  	 	C 	D 	o '$v
 /s   2WW$W)