a
     ÑOcâ  ã                   @   sº   d dl Z d dlZd dlmZmZmZ d dlmZmZ e 	d¡Z
dd„ edƒD ƒZdZd	Zed
 Zee Zee d Zee Ze d¡Ze d¡Ze  d¡ZG dd„ dƒZG dd„ dƒZdS )é    N)Úascii_lettersÚascii_lowercaseÚdigits)ÚOptionalÚcastÚasciic                 C   s   h | ]}d |d›�  d¡’qS )ú%Ú02Xr   )Úencode)Ú.0Úi© r   úG/var/www/html/gsl.tools/lib/python3.9/site-packages/yarl/_quoting_py.pyÚ	<setcomp>   ó    r   é   z:/?#[]@z!$'()*,ú+&=;z-._~s   [A-Z0-9][A-Z0-9]z[A-Fa-f0-9][A-Fa-f0-9]zutf-8c                   @   sF   e Zd Zdddddœeeeeddœdd„Zee ee d	œd
d„ZdS )Ú_QuoterÚ FT)ÚsafeÚ	protectedÚqsÚrequoteN)r   r   r   r   Úreturnc                C   s   || _ || _|| _|| _d S )N)Ú_safeÚ
_protectedÚ_qsÚ_requote)Úselfr   r   r   r   r   r   r   Ú__init__   s    z_Quoter.__init__©Úvalr   c                 C   s|  |d u rd S t |tƒstdƒ‚|s&dS tt|ƒjddd�}tƒ }tƒ }| j}|t7 }| jsb|d7 }|| j	7 }| d¡}d}|t
|ƒk �r`|| }|d	7 }|�rÊ|tv r®|d
 }| |¡ t
|ƒdk�r”|d	d … }	t |	¡sø| d¡ | ¡  |d8 }qzz"tt|d	d …  d¡dd�ƒ}
W n2 t�yL   | d¡ | ¡  |d8 }Y qzY n0 |
| j	v �rf| |¡ n$|
|v �r€| t|
ƒ¡ n
| |¡ | ¡  qzt
|ƒdkrz|t
|ƒkrz| d¡ | ¡  |d	8 }qzn@|tdƒk�r
| j�r
| ¡  | |¡ |t
|ƒkrz| d¡ qz| j�r0|tdƒk�r0| tdƒ¡ qz||v �rF| |¡ qz| d|d›� d¡¡ qz| d¡}||k�rx|S |S )NúArgument should be strr   Úutf8Úignore)Úerrorsr   r   r   é   é    é   s   %25é   é   ©Úbaser   ú ú+r	   )Ú
isinstanceÚstrÚ	TypeErrorr   r
   Ú	bytearrayr   ÚALLOWEDr   r   ÚlenÚBASCII_LOWERCASEÚappendÚ_IS_HEXÚmatchÚextendÚclearÚchrÚintÚdecodeÚ
ValueErrorÚordr   )r   r!   ZbvalÚretÚpctr   ZbsafeÚidxÚchÚbufÚunquotedÚret2r   r   r   Ú__call__$   s„    





"











z_Quoter.__call__©Ú__name__Ú
__module__Ú__qualname__r0   Úboolr   r   rG   r   r   r   r   r      s   úùr   c                   @   s>   e Zd Zdddœeeddœdd„Zee ee dœd	d
„ZdS )Ú	_Unquoterr   F)Úunsafer   N)rN   r   r   c                C   s$   || _ || _tƒ | _tdd�| _d S )NT)r   )Ú_unsafer   r   Ú_quoterÚ
_qs_quoter)r   rN   r   r   r   r   r   w   s    z_Unquoter.__init__r    c                 C   sÌ  |d u rd S t |tƒstdƒ‚|s&dS ttjtƒ ƒ}g }d}|t|ƒk �rŠ|| }|d7 }|dk�rÆ|t|ƒd k�rÆ|||d … }t 	|¡�rÆt
t|dd�gƒ}|d7 }z| |¡}W nˆ t�yB   |d	 t|jƒd	  }	| ||	|d	 … ¡ | ¡  z| |¡}W n0 t�y<   | ||d	 |… ¡ Y Y q<Y n0 Y n0 |�sLq<| j�r†|d
v �r†|  |¡}
|
d u �rztdƒ‚| |
¡ q<|| jv �rº|  |¡}
|
d u �r®tdƒ‚| |
¡ q<| |¡ q<|j�r|d t|jƒd	  }	| ||	|d … ¡ | ¡  |dk�r8| j�r || jv �r,| d¡ q<| d¡ q<|| jv �r~| d¡ tt|ƒƒ ¡ dd … }|D ]}| |¡ �qjq<| |¡ q<|j�r°| |t|jƒ d	 d … ¡ d |¡}||k�rÈ|S |S )Nr"   r   r   r&   r   r)   r*   r+   r(   z+=&;zCannot quote Noner.   r-   )r/   r0   r1   r   ÚcodecsÚBufferedIncrementalDecoderÚutf8_decoderr4   Ú_IS_HEX_STRÚ	fullmatchÚbytesr<   r=   ÚUnicodeDecodeErrorÚbufferr6   Úresetr   rQ   ÚRuntimeErrorrO   rP   Úhexr?   ÚupperÚjoin)r   r!   Údecoderr@   rB   rC   rA   ÚbrE   Z	start_pctZto_addÚhrF   r   r   r   rG   }   s€    










z_Unquoter.__call__rH   r   r   r   r   rM   v   s   rM   )rR   ÚreÚstringr   r   r   Útypingr   r   r
   r5   ÚrangeZBPCT_ALLOWEDZ
GEN_DELIMSZSUB_DELIMS_WITHOUT_QSZ
SUB_DELIMSZRESERVEDZ
UNRESERVEDr3   Úcompiler7   rU   ÚgetincrementaldecoderrT   r   rM   r   r   r   r   Ú<module>   s    



`