
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    'â7`†Y  ã                   @   sô  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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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*m+Z+ dd	l,m-Z- dd
l.m/Z/ ddl0Z0ddl1Z1ddl2m3Z3m4Z4 ddl5m6Z6 ddl7m8Z8 ddl9m:Z: ddl;m<Z<m=Z= ddl>m?Z? dZ@ejAdkZBejAdkZCejAdkZDeC�s´ddlEZEeE F¡  zddlmGZG W n" eHk
�ræ   ddl5mGZG Y nX d‘e$ejI e&d dœdd„ZJeC�reKedƒZJe)dƒZLe)dƒZMeNƒ ZOePe	jQ Rd¡ƒZSeKejTddƒ�pdejTjU �odePe	jQ Rd ¡ƒZVd!d"„ eWdd#ƒD ƒZXd$d"„ eWdd%ƒD ƒeYd&ƒhB ZZd'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8eYd9ƒhZ[eXeZA e[A Z\G d:d;„ d;ƒZ]G d<d=„ d=ed=d>d?d@gƒƒZ^e8e'e8e$e^ f dAœdBdC„Z_e$ej dDœdEdF„Z`e1jadGdGdGdH�G dIdJ„ dJƒƒZbeecebf dDœdKdL„Zdd’e$ejI dMdœdNdO„Zed“e$ejI ejIdœdPdQ„ZfeePdRœdSdT„Zge1jadGdGdGdH�G dUdV„ dVƒƒZhejidWdX�ecehdYœdZd[„ƒZjd”ee$ec e$ec d\œd]d^„Zkd•ecePececd_œd`da„ZlG dbdc„ dce6ƒZmG ddde„ deeeL ƒZnenZozddflpmnZq eS�sNeqZnW n eHk
�rf   Y nX dgZrdhZse ter¡Zuejtesejvdi�Zwe ter xdj¡¡Zyejtes xdj¡ejvdi�Zze%ec e%e{ e$e*ece{f  ePdkœdldm„Z|e }e|euey¡Z~e }e|ewez¡Ze$e*ece{e€e�f  ePdnœdodp„Z‚ejdDœdqdr„Zƒda„dsa…ecdDœdtdu„Z†dvdw„ Z‡dxdy„ Zˆdzd{„ Z‰G d|d}„ d}ƒZŠG d~d„ deGd ƒZ‹G d€d�„ d�e‹ƒZŒG d‚dƒ„ dƒe‹ƒZ�G d„d…„ d…e0jŽƒZ�G d†d‡„ d‡ƒZ�dˆeLdd‰œdŠd‹„Z‘dˆe’ddŒœd�dŽ„Z“G d�d�„ d�e#ecef ƒZ”dS )–zVarious helper functionsé    N)Ú
namedtuple)Úsuppress)Úceil)ÚPath)ÚTracebackType)ÚAnyÚCallableÚDictÚ	GeneratorÚGenericÚIterableÚIteratorÚListÚMappingÚOptionalÚPatternÚSetÚTupleÚTypeÚTypeVarÚUnionÚcast)Úquote)Ú
getproxies)Ú	MultiDictÚMultiDictProxy)ÚProtocol©ÚURLé   )Úhdrs)Úclient_loggerÚinternal_logger)ÚPathLike)Ú	BasicAuthÚChainMapProxy)é   é   )r&   é   )r&   é   )ÚContextManagerzasyncio.Task[Any]©ÚloopÚreturnc                 C   s   t tj | ¡ƒ}dd„ |D ƒS )Nc                 S   s   h | ]}|  ¡ s|’qS © )Údone)Ú.0Útr.   r.   úB/opt/alt/python38/lib64/python3.8/site-packages/aiohttp/helpers.pyÚ	<setcomp>L   s      zall_tasks.<locals>.<setcomp>)ÚlistÚasyncioÚTaskÚ	all_tasks)r,   Ztasksr.   r.   r2   r7   H   s    r7   Ú_TÚ_SZAIOHTTP_NO_EXTENSIONSÚdev_modeFZPYTHONASYNCIODEBUGc                 C   s   h | ]}t |ƒ’qS r.   ©Úchr©r0   Úir.   r.   r2   r3   a   s     r3   é€   c                 C   s   h | ]}t |ƒ’qS r.   r;   r=   r.   r.   r2   r3   b   s     é    é   ú(ú)ú<ú>ú@ú,ú;ú:ú\ú"ú/ú[ú]ú?ú=Ú{Ú}ú é	   c                   @   s   e Zd Zed dœdd„ZdS )Únoop)NNN©r-   c                 c   s
   d V  d S ©Nr.   ©Úselfr.   r.   r2   Ú	__await__~   s    znoop.__await__N)Ú__name__Ú
__module__Ú__qualname__r
   rZ   r.   r.   r.   r2   rU   }   s   rU   c                       st   e Zd ZdZdeeed dœ‡ fdd„Zedeed dœdd	„ƒZedd
œeee	d  dœdd„ƒZ
edœdd„Z‡  ZS )r$   z!Http basic authentication helper.Ú Úlatin1)ÚloginÚpasswordÚencodingr-   c                    sB   |d krt dƒ‚|d kr t dƒ‚d|kr0t dƒ‚tƒ  | |||¡S )Nz"None is not allowed as login valuez%None is not allowed as password valuerI   z5A ":" is not allowed in login (RFC 1945#section-11.1))Ú
ValueErrorÚsuperÚ__new__)Úclsr`   ra   rb   ©Ú	__class__r.   r2   re   …   s    zBasicAuth.__new__)Úauth_headerrb   r-   c                 C   sÈ   z|  dd¡\}}W n tk
r0   tdƒ‚Y nX | ¡ dkrJtd| ƒ‚ztj| d¡dd� |¡}W n tjk
r†   td	ƒ‚Y nX z|  d
d¡\}}W n tk
r¸   tdƒ‚Y nX | |||d�S )z<Create a BasicAuth object from an Authorization HTTP header.rS   r   z%Could not parse authorization header.ZbasiczUnknown authorization method %sÚasciiT)ÚvalidatezInvalid base64 encoding.rI   zInvalid credentials.©rb   )	Úsplitrc   ÚlowerÚbase64Ú	b64decodeÚencodeÚdecodeÚbinasciiÚError)rf   ri   rb   Z	auth_typeZencoded_credentialsÚdecodedÚusernamera   r.   r.   r2   rr   “   s(     ÿþzBasicAuth.decoderl   )Úurlrb   r-   c                C   s6   t |tƒstdƒ‚|jdkr dS | |j|jp.d|d�S )zCreate BasicAuth from url.zurl should be yarl.URL instanceNr^   rl   )Ú
isinstancer   Ú	TypeErrorÚuserra   )rf   rw   rb   r.   r.   r2   Úfrom_url°   s
    

zBasicAuth.from_urlrV   c                 C   s0   | j › d| j› � | j¡}dt |¡ | j¡ S )zEncode credentials.rI   zBasic %s)r`   ra   rq   rb   ro   Ú	b64encoderr   )rY   Zcredsr.   r.   r2   rq   ¹   s    zBasicAuth.encode)r^   r_   )r_   )r[   r\   r]   Ú__doc__Ústrre   Úclassmethodrr   r   r   r{   rq   Ú__classcell__r.   r.   rg   r2   r$   ‚   s      ÿ  þr$   r`   ra   rb   )rw   r-   c                 C   s,   t  | ¡}|d kr| d fS |  d ¡|fS d S rW   )r$   r{   Z	with_user)rw   Úauthr.   r.   r2   Ústrip_auth_from_url¿   s    
r‚   rV   c               
   C   sö   t j d¡} | dk	rt| ƒ}nZzt ¡ }W n4 tk
r^ } zt d|¡ W Y ¢dS d}~X Y nX |t 	¡ dkrrdnd }zt
 
t|ƒ¡W S  t
jk
r¸ } zt d|¡ W 5 d}~X Y n: tk
rð } z| sÔ| ¡ ràt d|¡ W 5 d}~X Y nX dS )	zÊAttempt to load the netrc file 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.
    ZNETRCNzHCould not resolve home directory when trying to look for .netrc file: %sÚWindowsZ_netrcz.netrczCould not parse .netrc file: %szCould not read .netrc file: %s)ÚosÚenvironÚgetr   ÚhomeÚRuntimeErrorr!   ÚdebugÚplatformÚsystemÚnetrcr~   ZNetrcParseErrorÚwarningÚOSErrorÚis_file)Z	netrc_envZ
netrc_pathZhome_dirÚer.   r.   r2   Únetrc_from_envÇ   s,    
ýÿr‘   T)Zauto_attribsÚfrozenÚslotsc                   @   s"   e Zd ZU eed< ee ed< dS )Ú	ProxyInfoÚproxyZ
proxy_authN)r[   r\   r]   r   Ú__annotations__r   r$   r.   r.   r.   r2   r”   ï   s   
r”   c                  C   sÚ   dd„ t ƒ  ¡ D ƒ} tƒ }dd„ |  ¡ D ƒ}i }| ¡ D ]œ\}}|\}}|jdkr`t d|¡ q8|rÆ|d krÆd }|jd k	r†| |j¡}|d k	rÆ|�^ }	}
|	d r¨|	d n|	d }tt	t
|ƒt	t
|
ƒƒ}t||ƒ||< q8|S )Nc                 S   s"   i | ]\}}|d kr|t |ƒ“qS ))ÚhttpÚhttpsr   ©r0   ÚkÚvr.   r.   r2   Ú
<dictcomp>ö   s       z$proxies_from_env.<locals>.<dictcomp>c                 S   s   i | ]\}}|t |ƒ“qS r.   )r‚   r™   r.   r.   r2   rœ   ø   s      r˜   z,HTTPS proxies %s are not supported, ignoringr   éÿÿÿÿ)r   Úitemsr‘   Úschemer!   r�   ÚhostZauthenticatorsr$   r   r~   r”   )Z
proxy_urlsZ	netrc_objÚstrippedÚretÚprotoÚvalr•   r�   Zauth_from_netrcZloginsra   r`   r.   r.   r2   Úproxies_from_envõ   s&    


r¥   zOptional[asyncio.Task[Any]]c                 C   s"   t rtj| d�S tjj| d�S d S )N©r,   )ÚPY_37r5   Úcurrent_taskr6   r¦   r.   r.   r2   r¨     s    r¨   c                 C   sB   | d krt  ¡ } |  ¡ s>tjdtdd� |  ¡ r>tjddd� | S )Nz5The object should be created within an async functionr&   )Ú
stacklevelT)Ú
stack_info)	r5   Zget_event_loopZ
is_runningÚwarningsÚwarnÚDeprecationWarningZ	get_debugr"   r�   r¦   r.   r.   r2   Úget_running_loop  s    ý ÿr®   )Úobjr-   c                 C   s$   t tdd ƒ}|d k	r|| ƒS dS d S )NÚisasyncgenfunctionF)ÚgetattrÚinspect)r¯   Úfuncr.   r.   r2   r°   )  s    r°   c                   @   s.   e Zd ZU eed< eed< eed< ded< dS )ÚMimeTypeÚtypeÚsubtypeÚsuffixzMultiDictProxy[str]Ú
parametersN)r[   r\   r]   r~   r–   r.   r.   r.   r2   r´   1  s   
r´   é8   )Úmaxsize)Úmimetyper-   c           
      C   s  | st dddttƒ ƒd�S |  d¡}tƒ }|dd… D ]R}|s@q6ttttf d|kr`| dd¡n|dfƒ\}}| | ¡  	¡ | 	d¡¡ q6|d  	¡  ¡ }|d	kr¦d
}d|krÈttttf | dd¡ƒn|df\}}d|kröttttf | dd¡ƒn|df\}}	t |||	t|ƒd�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¸   rH   r   NrP   z "r   Ú*z*/*rL   ú+)
r´   r   r   rm   r   r   r~   Úaddrn   Ústrip)
r»   ÚpartsÚparamsÚitemÚkeyÚvalueZfulltypeZmtypeÚstyper·   r.   r.   r2   Úparse_mimetype9  s@       ÿ

 ÿÿý(ÿ   ÿrÆ   )r¯   Údefaultr-   c                 C   s@   t | dd ƒ}|r<t|tƒr<|d dkr<|d dkr<t|ƒjS |S )NÚnamer   rD   r�   rE   )r±   rx   r~   r   rÈ   )r¯   rÇ   rÈ   r.   r.   r2   Úguess_filenamei  s    &
rÉ   )ÚdisptypeÚquote_fieldsrÁ   r-   c           	      K   sÀ   | rt t| ƒkstd | ¡ƒ‚| }|r¼g }| ¡ D ]f\}}|rJt t|ƒksZtd ||¡ƒ‚|rht|dƒn|}| |d| f¡ |dkr2| dd| f¡ q2d d	d
„ |D ƒ¡}d ||f¡}|S )zÏSets ``Content-Disposition`` header.

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

    params is a dict with disposition params.
    z!bad content disposition type {!r}z+bad content disposition parameter {!r}={!r}r^   z"%s"Úfilenamez	filename*zutf-8''z; c                 s   s   | ]}d   |¡V  qdS )rP   N)Újoin)r0   Úpairr.   r.   r2   Ú	<genexpr>‰  s     z-content_disposition_header.<locals>.<genexpr>)ÚTOKENÚsetrc   Úformatrž   r   ÚappendrÍ   )	rÊ   rË   rÁ   rÄ   ZlparamsrÃ   r¤   ZqvalZsparamsr.   r.   r2   Úcontent_disposition_headerp  s"    

ÿrÔ   c                   @   s   e Zd ZU eeef ed< dS )Ú_TSelfÚ_cacheN)r[   r\   r]   r	   r~   r   r–   r.   r.   r.   r2   rÕ   Ž  s   
rÕ   c                   @   sV   e Zd ZdZedef ddœdd„Zdeee	e
  edœdd	„Zeedd
œdd„ZdS )ÚreifyaR  Use as a class method decorator.  It operates almost exactly like
    the Python `@property` decorator, but it puts the result of the
    method it decorates into the instance dict after the first call,
    effectively replacing the function it decorates with an instance
    variable.  It is, in Python parlance, a data descriptor.

    .N)Úwrappedr-   c                 C   s   || _ |j| _|j| _d S rW   )rØ   r}   r[   rÈ   )rY   rØ   r.   r.   r2   Ú__init__›  s    zreify.__init__)ÚinstÚownerr-   c                 C   sr   zFz|j | j W W S  tk
rB   |  |¡}||j | j< | Y W S X W n& tk
rl   |d krf|  Y S ‚ Y nX d S rW   )rÖ   rÈ   ÚKeyErrorrØ   ÚAttributeError)rY   rÚ   rÛ   r¤   r.   r.   r2   Ú__get__   s    
zreify.__get__)rÚ   rÄ   r-   c                 C   s   t dƒ‚d S )Nzreified property is read-only)rÝ   )rY   rÚ   rÄ   r.   r.   r2   Ú__set__­  s    zreify.__set__)N)r[   r\   r]   r}   r   r8   rÙ   rÕ   r   r   r   rÞ   rß   r.   r.   r.   r2   r×   ’  s   r×   )r×   z[^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$a¶  ^(?:(?:(?:[A-F0-9]{1,4}:){6}|(?=(?:[A-F0-9]{0,4}:){0,6}(?:[0-9]{1,3}\.){3}[0-9]{1,3}$)(([0-9A-F]{1,4}:){0,5}|:)((:[0-9A-F]{1,4}){1,5}:|:)|::(?:[A-F0-9]{1,4}:){5})(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])|(?:[A-F0-9]{1,4}:){7}[A-F0-9]{1,4}|(?=(?:[A-F0-9]{0,4}:){0,7}[A-F0-9]{0,4}$)(([0-9A-F]{1,4}:){1,7}|:)((:[0-9A-F]{1,4}){1,7}|:)|(?:[A-F0-9]{1,4}:){7}:|:(:[A-F0-9]{1,4}){7})$)Úflagsrj   )ÚregexÚregexbr    r-   c                 C   sZ   |d krdS t |tƒr$t|  |¡ƒS t |tttfƒrBt| |¡ƒS td |t	|ƒ¡ƒ‚d S )NFz{} [{}] is not a str or bytes)
rx   r~   ÚboolÚmatchÚbytesÚ	bytearrayÚ
memoryviewry   rÒ   rµ   )rá   râ   r    r.   r.   r2   Ú_is_ip_addressÏ  s    
rè   )r    r-   c                 C   s   t | ƒpt| ƒS rW   )Úis_ipv4_addressÚis_ipv6_address)r    r.   r.   r2   Úis_ip_addressà  s    rë   c                   C   s$   t j  t jj¡jdd�t jdd� S )z8Return current time rounded up to the next whole second.r   )Úmicrosecond)Úseconds)ÚdatetimeÚnowÚtimezoneÚutcÚreplaceÚ	timedeltar.   r.   r.   r2   Únext_whole_secondä  s
    ÿ
þrô   r^   c                  C   s\   t t ¡ ƒ} | tkrXd}d}t | ¡^}}}}}}}	}
d||	 ||| ||||f 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)ÚintÚtimeÚ_cached_current_datetimeÚgmtimeÚ_cached_formatted_datetime)rï   Z_weekdaynameZ
_monthnameÚyearÚmonthÚdayZhhÚmmÚssÚwdÚtailr.   r.   r2   Úrfc822_formatted_timeï  s     ù	r  c              	   C   s:   | \}}|ƒ }|d k	r6t tƒ� t||ƒƒ  W 5 Q R X d S rW   )r   Ú	Exceptionr±   )ÚinfoÚrefrÈ   Úobr.   r.   r2   Ú_weakref_handle  s
    
r  c                 C   sH   |d k	rD|dkrD|  ¡ | }|dkr,t|ƒ}| |tt | ¡|f¡S d S ©Nr   é   )r	  r   Úcall_atr  Úweakrefr  )r  rÈ   Útimeoutr,   Úwhenr.   r.   r2   Úweakref_handle  s
    r   c                 C   s<   |d k	r8|dkr8|  ¡ | }|dkr,t|ƒ}| || ¡S d S r  )r	  r   r  )Úcbr  r,   r  r.   r.   r2   Ú
call_later(  s
    r"  c                   @   s~   e Zd ZdZejee ddœdd„Ze	d e
e
ddœdd	„Zdd
œdd„Zeej d
œdd„Zdd
œdd„Zdd
œdd„ZdS )ÚTimeoutHandlez Timeout handle N)r,   r  r-   c                 C   s   || _ || _g | _d S rW   )Ú_timeoutÚ_loopÚ
_callbacks)rY   r,   r  r.   r.   r2   rÙ   3  s    ÿzTimeoutHandle.__init__).N)ÚcallbackÚargsÚkwargsr-   c                 O   s   | j  |||f¡ d S rW   )r&  rÓ   )rY   r'  r(  r)  r.   r.   r2   Úregister<  s    zTimeoutHandle.registerrV   c                 C   s   | j  ¡  d S rW   )r&  ÚclearrX   r.   r.   r2   ÚcloseA  s    zTimeoutHandle.closec                 C   sL   | j }|d k	rD|dkrD| j ¡ | }|dkr4t|ƒ}| j || j¡S d S d S r  )r$  r%  r	  r   r  Ú__call__)rY   r  r  r.   r.   r2   ÚstartD  s    zTimeoutHandle.startÚBaseTimerContextc                 C   s8   | j d k	r.| j dkr.t| jƒ}|  |j¡ |S tƒ S d S )Nr   )r$  ÚTimerContextr%  r*  r  Ú	TimerNoop)rY   Útimerr.   r.   r2   r2  N  s
    
zTimeoutHandle.timerc              
   C   s>   | j D ](\}}}ttƒ� |||Ž W 5 Q R X q| j  ¡  d S rW   )r&  r   r  r+  )rY   r!  r(  r)  r.   r.   r2   r-  V  s    
zTimeoutHandle.__call__)r[   r\   r]   r}   r5   ÚAbstractEventLoopr   ÚfloatrÙ   r   r   r*  r,  ÚHandler.  r2  r-  r.   r.   r.   r2   r#  0  s    þ
  þ
r#  c                   @   s   e Zd ZdS )r/  N)r[   r\   r]   r.   r.   r.   r2   r/  ^  s   r/  c                   @   s>   e Zd Zedœdd„Zeee  ee ee ddœdd„Z	dS )r1  rV   c                 C   s   | S rW   r.   rX   r.   r.   r2   Ú	__enter__c  s    zTimerNoop.__enter__N©Úexc_typeÚexc_valÚexc_tbr-   c                 C   s   d S rW   r.   ©rY   r8  r9  r:  r.   r.   r2   Ú__exit__f  s    zTimerNoop.__exit__)
r[   r\   r]   r/  r6  r   r   ÚBaseExceptionr   r<  r.   r.   r.   r2   r1  b  s   
ûr1  c                   @   sf   e Zd ZdZejddœdd„Zedœdd„Ze	e
e  e	e e	e e	e d	œd
d„Zddœdd„ZdS )r0  z( Low resolution timeout context manager Nr+   c                 C   s   || _ g | _d| _d S )NF)r%  Ú_tasksÚ
_cancelled)rY   r,   r.   r.   r2   rÙ   r  s    zTimerContext.__init__rV   c                 C   sB   t | jd�}|d krtdƒ‚| jr2| ¡  tjd ‚| j |¡ | S )Nr¦   ú4Timeout context manager should be used inside a task)	r¨   r%  rˆ   r?  Úcancelr5   ÚTimeoutErrorr>  rÓ   ©rY   Ztaskr.   r.   r2   r6  w  s    ÿzTimerContext.__enter__r7  c                 C   s,   | j r| j  ¡  |tjkr(| jr(tjd ‚d S rW   )r>  Úpopr5   ÚCancelledErrorr?  rB  r;  r.   r.   r2   r<  †  s
    
zTimerContext.__exit__c                 C   s(   | j s$t| jƒD ]}| ¡  qd| _ d S )NT)r?  rÑ   r>  rA  rC  r.   r.   r2   r  “  s    
zTimerContext.timeout)r[   r\   r]   r}   r5   r3  rÙ   r/  r6  r   r   r=  r   rã   r<  r  r.   r.   r.   r2   r0  o  s   
ûr0  c                   @   s   e Zd Zejdœdd„ZdS )ÚCeilTimeoutrV   c                 C   sh   | j d k	rdt| jd�| _| jd kr*tdƒ‚| j ¡ }| j }|| }|dkrRt|ƒ}| j || j¡| _	| S )Nr¦   r@  r  )
r$  r¨   r%  Z_taskrˆ   r	  r   r  Z_cancel_taskZ_cancel_handler)rY   rï   Údelayr  r.   r.   r2   r6  œ  s    

ÿ
zCeilTimeout.__enter__N)r[   r\   r]   Úasync_timeoutr  r6  r.   r.   r.   r2   rF  ›  s   rF  c                   @   st   e Zd ZedddgƒZdZdZeZe	ddœdd„Z
ee	dœd	d
„ƒZeee	 dœdd„ƒZeee dœdd„ƒZdS )ÚHeadersMixinÚ_content_typeÚ_content_dictÚ_stored_content_typeN)Úrawr-   c                 C   s2   || _ |d krd| _i | _nt |¡\| _| _d S )Nzapplication/octet-stream)rL  rJ  rK  ÚcgiÚparse_header©rY   rM  r.   r.   r2   Ú_parse_content_type´  s
    z HeadersMixin._parse_content_typerV   c                 C   s(   | j  tj¡}| j|kr"|  |¡ | jS )z7The value of content part for Content-Type HTTP header.)Ú_headersr†   r    ÚCONTENT_TYPErL  rQ  rJ  rP  r.   r.   r2   Úcontent_type½  s    

zHeadersMixin.content_typec                 C   s.   | j  tj¡}| j|kr"|  |¡ | j d¡S )z7The value of charset part for Content-Type HTTP header.Úcharset)rR  r†   r    rS  rL  rQ  rK  rP  r.   r.   r2   rU  Å  s    

zHeadersMixin.charsetc                 C   s&   | j  tj¡}|dk	rt|ƒS dS dS )z(The value of Content-Length HTTP header.N)rR  r†   r    ZCONTENT_LENGTHr  )rY   Úcontent_lengthr.   r.   r2   rV  Í  s    zHeadersMixin.content_length)r[   r\   r]   Ú	frozensetZATTRSrJ  rK  ÚsentinelrL  r~   rQ  ÚpropertyrT  r   rU  r  rV  r.   r.   r.   r2   rI  ¬  s   	rI  zasyncio.Future[_T])ÚfutÚresultr-   c                 C   s   |   ¡ s|  |¡ d S rW   )r/   Ú
set_result)rZ  r[  r.   r.   r2   r\  Ø  s    r\  )rZ  Úexcr-   c                 C   s   |   ¡ s|  |¡ d S rW   )r/   Úset_exception)rZ  r]  r.   r.   r2   r^  Ý  s    r^  c                   @   sª   e Zd ZdZeeeef  ddœdd„Zddœdd„Z	eed	œd
d„Z
deeedœdd„Zedœdd„Zee dœdd„Zeed	œdd„Zedœdd„Zedœdd„ZdS )r%   )Ú_mapsN)Úmapsr-   c                 C   s   t |ƒ| _d S rW   )Útupler_  )rY   r`  r.   r.   r2   rÙ   å  s    zChainMapProxy.__init__rV   c                 C   s   t d | j¡ƒ‚d S )Nz4Inheritance class {} from ChainMapProxy is forbidden)ry   rÒ   r[   )rf   r.   r.   r2   Ú__init_subclass__è  s
    ÿÿzChainMapProxy.__init_subclass__)rÃ   r-   c              	   C   s<   | j D ](}z|| W   S  tk
r,   Y qX qt|ƒ‚d S rW   )r_  rÜ   )rY   rÃ   Úmappingr.   r.   r2   Ú__getitem__î  s    
zChainMapProxy.__getitem__)rÃ   rÇ   r-   c                 C   s   || kr| | S |S rW   r.   )rY   rÃ   rÇ   r.   r.   r2   r†   ö  s    zChainMapProxy.getc                 C   s   t tƒ j| jŽ ƒS rW   )ÚlenrÑ   Úunionr_  rX   r.   r.   r2   Ú__len__ù  s    zChainMapProxy.__len__c                 C   s&   i }t | jƒD ]}| |¡ qt|ƒS rW   )Úreversedr_  ÚupdateÚiter)rY   Údrc  r.   r.   r2   Ú__iter__ý  s    zChainMapProxy.__iter__c                    s   t ‡ fdd„| jD ƒƒS )Nc                 3   s   | ]}ˆ |kV  qd S rW   r.   )r0   Úm©rÃ   r.   r2   rÏ     s     z-ChainMapProxy.__contains__.<locals>.<genexpr>©Úanyr_  )rY   rÃ   r.   rn  r2   Ú__contains__  s    zChainMapProxy.__contains__c                 C   s
   t | jƒS rW   ro  rX   r.   r.   r2   Ú__bool__  s    zChainMapProxy.__bool__c                 C   s   d  tt| jƒ¡}d|› d�S )Nz, zChainMapProxy(rC   )rÍ   ÚmapÚreprr_  )rY   Úcontentr.   r.   r2   Ú__repr__
  s    zChainMapProxy.__repr__)N)r[   r\   r]   Ú	__slots__r   r   r~   r   rÙ   rb  rd  r†   r  rg  r   rl  Úobjectrã   rq  rr  rv  r.   r.   r.   r2   r%   â  s   r%   )N)N)N)N)T)•r}   r5   ro   rs   rN  rî   Ú	functoolsr²   rŒ   r„   rŠ   ÚreÚsysr	  r«   r  Úcollectionsr   Ú
contextlibr   Úmathr   Úpathlibr   Útypesr   Útypingr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   Úurllib.parser   Zurllib.requestr   rH  ÚattrZ	multidictr   r   Ztyping_extensionsr   Zyarlr   r^   r    Úlogr!   r"   Ztypedefsr#   Ú__all__Úversion_infoZPY_36r§   ZPY_38Zidna_sslZpatch_match_hostnamer*   ÚImportErrorr3  r7   r±   r8   r9   rx  rX  rã   r…   r†   ZNO_EXTENSIONSrà   Úignore_environmentÚDEBUGÚrangeZCHARr<   ZCTLZ
SEPARATORSrÐ   rU   r$   r‚   r‘   Úsr”   r~   r¥   r¨   r®   r°   r´   Ú	lru_cacherÆ   rÉ   rÔ   rÕ   r×   Zreify_pyZ_helpersZreify_cZ_ipv4_patternZ_ipv6_patternÚcompileZ_ipv4_regexÚ
IGNORECASEZ_ipv6_regexrq   Z_ipv4_regexbZ_ipv6_regexbrå   rè   Úpartialré   rê   ræ   rç   rë   rô   r
  r  r  r  r   r"  r#  r/  r1  r0  r  rF  rI  r\  r=  r^  r%   r.   r.   r.   r2   Ú<module>   s0  L


 ÿþ
ÿÿí=( ÿþ
 ÿþ
/ ÿ  þÿÿ

  þ (	.,,