a
    ‘db~,  ã                   @   s>  d dl mZ ddlZddlZddlZddlZd dlmZ dZdZ	e 
d¡Zejd dkr`eZeZG d	d
„ d
eƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd7dd„Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Z d8d(d)„Z!d*d+„ Z"d,d-„ Z#d.d/„ Z$d9d1d2„Z%d:d3d4„Z&d;d5d6„Z'dS )<é   )Úidnadataé    N)Úintranges_containé	   s   xn--u   [.ã€‚ï¼Žï½¡]é   c                   @   s   e Zd ZdZdS )Ú	IDNAErrorz7 Base exception for all IDNA-encoding related problems N©Ú__name__Ú
__module__Ú__qualname__Ú__doc__© r   r   úZ/home/tom/ab/renpy-build/tmp/install.linux-x86_64/lib/python3.9/site-packages/idna/core.pyr      s   r   c                   @   s   e Zd ZdZdS )ÚIDNABidiErrorz= Exception when bidirectional requirements are not satisfied Nr   r   r   r   r   r      s   r   c                   @   s   e Zd ZdZdS )ÚInvalidCodepointz> Exception when a disallowed or unallocated codepoint is used Nr   r   r   r   r   r      s   r   c                   @   s   e Zd ZdZdS )ÚInvalidCodepointContextzE Exception when the codepoint is not valid in the context it is used Nr   r   r   r   r   r      s   r   c                 C   s   t  t| ƒ¡S ©N)ÚunicodedataÚ	combiningÚunichr)Úcpr   r   r   Ú_combining_class$   s    r   c                 C   s   t t| ƒtj| ƒS r   )r   Úordr   Úscripts)r   Úscriptr   r   r   Ú
_is_script'   s    r   c                 C   s
   |   d¡S )NÚpunycode)Úencode©Úsr   r   r   Ú	_punycode*   s    r    c                 C   s
   d  | ¡S )Nz	U+{0:04X})Úformatr   r   r   r   Ú_unot-   s    r"   c                 C   s   t | ƒdkrdS dS )Né?   FT©Úlen©Úlabelr   r   r   Úvalid_label_length1   s    r(   c                 C   s   t | ƒ|rdndkrdS dS )Néþ   éý   FTr$   )r'   Útrailing_dotr   r   r   Úvalid_string_length8   s    r,   Fc           	      C   sb  d}t | dƒD ]>\}}t |¡}|dkr<td t| ƒ|¡ƒ‚|dv rd} qNq|sZ|sZdS t | d ¡}|dv rvd}n |d	kr„d}ntd
 t| ƒ¡ƒ‚d}d}t | dƒD ]¦\}}t |¡}|r|dvrÖtd |¡ƒ‚|dv räd}n|dkrðd}|dv rN|s|}n||krNtdƒ‚q¨|dvr2td |¡ƒ‚|dv rBd}q¨|dkr¨d}q¨|s^tdƒ‚dS )NFr   Ú z3Unknown directionality in label {0} at position {1})ÚRÚALÚANTr   )r.   r/   ÚLz>First codepoint in label {0} must be directionality L, R or AL)
r.   r/   r0   ÚENÚESÚCSÚETÚONÚBNÚNSMzHInvalid direction for codepoint at position {0} in a right-to-left label)r.   r/   r2   r0   r8   )r0   r2   z2Can not mix numeral types in a right-to-left label)r1   r2   r3   r4   r5   r6   r7   r8   zHInvalid direction for codepoint at position {0} in a left-to-right label)r1   r2   z0Label ends with illegal codepoint directionality)Ú	enumerater   Úbidirectionalr   r!   Úrepr)	r'   Ú	check_ltrÚ
bidi_labelÚidxr   Ú	directionÚrtlÚvalid_endingÚnumber_typer   r   r   Ú
check_bidi?   sR    






rC   c                 C   s"   t  | d ¡d dkrtdƒ‚dS )Nr   ÚMz0Label begins with an illegal combining characterT)r   Úcategoryr   r&   r   r   r   Úcheck_initial_combiner|   s    rF   c                 C   s<   | dd… dkrt dƒ‚| d dks0| d dkr8t dƒ‚d	S )
Né   é   z--z4Label has disallowed hyphens in 3rd and 4th positionr   ú-éÿÿÿÿz)Label must not start or end with a hyphenT)r   r&   r   r   r   Úcheck_hyphen_okƒ   s
    rK   c                 C   s   t  d| ¡| krtdƒ‚d S )NÚNFCz%Label must be in Normalization Form C)r   Ú	normalizer   r&   r   r   r   Ú	check_nfcŒ   s    rN   c                 C   s4  t | | ƒ}|dkrö|dkr8tt | |d  ƒƒtkr8dS d}t|d ddƒD ]B}tj t | | ƒ¡}|t dƒkrrqL|t dƒt d	ƒfv rLd} qqL|s˜dS d}t|d t| ƒƒD ]B}tj t | | ƒ¡}|t dƒkrÔq®|t d
ƒt d	ƒfv r®d} qòq®|S |dkr,|dkr(tt | |d  ƒƒtkr(dS dS dS d S )Ni   r   r   TFrJ   ÚTr1   ÚDr.   i   )r   r   Ú_virama_combining_classÚranger   Újoining_typesÚgetr%   )r'   ÚposÚcp_valueÚokÚiÚjoining_typer   r   r   Úvalid_contextj’   s<    

rZ   c                 C   s¾  t | | ƒ}|dkrdd|  k r0t| ƒd k r`n n,t | |d  ƒdkr`t | |d  ƒdkr`dS dS |dkrž|t| ƒd k ršt| ƒdkršt| |d  dƒS dS |d	ks®|d
krÌ|dkrÈt| |d  dƒS dS |dkr| D ]6}|dkrèqÚt|dƒs
t|dƒs
t|dƒrÚ dS qÚdS d|  kr.dkrhn n6| D ],}dt |ƒ  krVdkr6n n dS q6dS d|  kr€dkrºn n6| D ],}dt |ƒ  kr¨dkrˆn n dS qˆdS d S )Né·   r   r   él   TFiu  ÚGreekió  iô  ÚHebrewiû0  u   ãƒ»ÚHiraganaÚKatakanaÚHani`  ii  ið  iù  )r   r%   r   )r'   rU   Ú	exceptionrV   r   r   r   r   Úvalid_contexto¾   s>     (
" 
 
rc   c                 C   s  t | ttfƒr|  d¡} t| ƒdkr,tdƒ‚t| ƒ t| ƒ t| ƒ t	| ƒD ]¶\}}t
|ƒ}t|tjd ƒrpqLqLt|tjd ƒrªt| |ƒs¨td t|ƒ|d t| ƒ¡ƒ‚qLt|tjd ƒrät| |ƒsâtd	 t|ƒ|d t| ƒ¡ƒ‚qLtd
 t|ƒ|d t| ƒ¡ƒ‚qLt| ƒ d S )Nzutf-8r   zEmpty LabelÚPVALIDÚCONTEXTJz-Joiner {0} not allowed at position {1} in {2}r   ÚCONTEXTOú0Codepoint {0} not allowed at position {1} in {2}z0Codepoint {0} at position {1} of {2} not allowed)Ú
isinstanceÚbytesÚ	bytearrayÚdecoder%   r   rN   rK   rF   r9   r   r   r   Úcodepoint_classesrZ   r   r!   r"   r;   rc   r   rC   )r'   rU   r   rV   r   r   r   Úcheck_labelç   s&    

 
  rm   c                 C   s¢   zN|   d¡} zt| ƒ W n  ty8   td | ¡ƒ‚Y n0 t| ƒsJtdƒ‚| W S  ty`   Y n0 | sntdƒ‚t| ƒ} t| ƒ t| ƒ} t	|  } t| ƒsžtdƒ‚| S )NÚasciiz$The label {0} is not a valid A-labelzLabel too longzNo Input)
r   Úulabelr   r!   r(   ÚUnicodeEncodeErrorÚunicoderm   r    Ú_alabel_prefixr&   r   r   r   Úalabel  s(    
rs   c                 C   sˆ   t | ttfƒs<z|  d¡} W n ty:   t| ƒ |  Y S 0 |  ¡ } |  t¡r`| t	tƒd … } nt| ƒ |  
d¡S |  
d¡} t| ƒ | S )Nrn   r   )rh   ri   rj   r   rp   rm   ÚlowerÚ
startswithrr   r%   rk   r&   r   r   r   ro     s    



ro   Tc              
   C   s&  ddl m } d}zÞt| ƒD ]Æ\}}t|ƒ}||dk r8|nt ||df¡d  }|d }	t|ƒdkrj|d nd}
|	d	ks–|	d
kr‚|r–|	dkr |r |
du r ||7 }q|
durÒ|	dksÈ|	dkr¼|sÈ|	d
krÒ|rÒ||
7 }q|	dkrtƒ ‚qt d|¡W S  ty    t	d 
t|ƒ|d t| ƒ¡ƒ‚Y n0 dS )zBRe-map the characters in the string according to UTS46 processing.r   )Ú	uts46datar-   é   ÚZr   rG   NÚVrP   Ú3rD   ÚIrL   rg   )rv   r9   r   ÚbisectÚbisect_leftr%   Ú
IndexErrorr   rM   r   r!   r"   r;   )ÚdomainÚ
std3_rulesÚtransitionalrv   ÚoutputrU   ÚcharÚ
code_pointÚuts46rowÚstatusÚreplacementr   r   r   Úuts46_remap3  sR    ÿÿÿþþþ
ÿÿþþ
ÿÿrˆ   c           	      C   sÆ   t | ttfƒr|  d¡} |r(t| ||ƒ} d}g }|r@|  d¡}n
t | ¡}|r^|d s^|d= qJ|sjtdƒ‚|d dkr€|d= d}|D ]}| t	|ƒ¡ q„|r¦| d	¡ d
 
|¡} t| |ƒsÂtdƒ‚| S )Nrn   FÚ.r   úEmpty domainrJ   r-   Tó    ó   .zDomain too long)rh   ri   rj   rk   rˆ   ÚsplitÚ_unicode_dots_rer   Úappendrs   Újoinr,   )	r   ÚstrictÚuts46r€   r   r+   ÚresultÚlabelsr'   r   r   r   r   O  s0    




r   c                 C   s¬   t | ttfƒr|  d¡} |r(t| |dƒ} d}g }|s@t | ¡}n
|  d¡}|r^|d s^|d= qJ|sjtdƒ‚|d s||d= d}|D ]}| t	|ƒ¡ q€|r¢| d¡ d 
|¡S )	Nrn   Fr‰   r   rŠ   rJ   Tr-   )rh   ri   rj   rk   rˆ   rŽ   r   r   r   ro   r   )r   r‘   r’   r€   r+   r“   r”   r'   r   r   r   rk   l  s*    


rk   )F)F)TF)FFFF)FFF)(r-   r   r|   r   ÚreÚsysÚ	intrangesr   rQ   rr   ÚcompilerŽ   Úversion_infoÚstrrq   Úchrr   ÚUnicodeErrorr   r   r   r   r   r   r    r"   r(   r,   rC   rF   rK   rN   rZ   rc   rm   rs   ro   rˆ   r   rk   r   r   r   r   Ú<module>   sB   

=	,
)

