a
    Sic2                     @   s  d dl mZ ddlZddlZddlZddlmZmZ d dlm	Z	 dZ
dZed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eedddZeeedddZeedddZeedddZeeef edddZeeef eedd d!ZdBeeed#d$d%Zeedd&d'Zeedd(d)Zeddd*d+Z eeed,d-d.Z!dCeeeed/d0d1Z"eeee#f ddd2d3Z$eedd4d5Z%eeee#f edd6d7Z&dDeeeed9d:d;Z'dEeeee#f eeeeed<d=d>Z(dFeeee#f eeeed?d@dAZ)dS )G   )idnadata    N)UnionOptional)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   E/var/www/html/django/DPS/env/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   )cpreturnc                 C   s0   t t| }|dkr,t t| s,td|S )Nr   z Unknown character in unicodedata)unicodedata	combiningchrname
ValueError)r   vr   r   r   _combining_class    s
    r   )r   scriptr   c                 C   s   t t| tj| S )N)r   ordr   scripts)r   r   r   r   r   
_is_script'   s    r   )sr   c                 C   s
   |  dS )Npunycode)encoder    r   r   r   	_punycode*   s    r$   c                 C   s
   d | S )NzU+{:04X})formatr#   r   r   r   _unot-   s    r&   )labelr   c                 C   s   t | dkrdS dS )N?   FTlenr'   r   r   r   valid_label_length1   s    r,   )r'   trailing_dotr   c                 C   s   t | |rdndkrdS dS )N      FTr)   )r'   r-   r   r   r   valid_string_length7   s    r0   F)r'   	check_ltrr   c           	      C   s^  d}t | dD ]:\}}t|}|dkr<tdt| ||dv rd}q|sV|sVdS t| d }|dv rrd}n |d	krd}ntd
t| d}d }t | dD ]\}}t|}|r|dvrtd||dv rd}n|dkrd}|dv rJ|s|}n||krJtdq|dvr.td||dv r>d}q|dkrd}q|sZtddS )NFr    z1Unknown directionality in label {} at position {})RALANTr   )r3   r4   Lz=First codepoint in label {} must be directionality L, R or AL)
r3   r4   r5   ENESCSETONBNNSMzGInvalid direction for codepoint at position {} in a right-to-left label)r3   r4   r7   r5   r=   )r5   r7   z2Can not mix numeral types in a right-to-left label)r6   r7   r8   r9   r:   r;   r<   r=   zGInvalid direction for codepoint at position {} in a left-to-right label)r6   r7   z0Label ends with illegal codepoint directionality)	enumerater   bidirectionalr   r%   repr)	r'   r1   Z
bidi_labelidxr   	directionZrtlZvalid_endingZnumber_typer   r   r   
check_bidi=   sP    






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_combinerx   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   )r'   posr   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|sdS d}t|d t| D ]B}tjt | | }|t dkrq|t d
t d	fv rd} qq|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   Tr6   Dr3   i   )r   r   _virama_combining_classranger   Zjoining_typesgetr*   )r'   rO   cp_valueokiZjoining_typer   r   r   valid_contextj   s<    

rX   )r'   rO   	exceptionr   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 rt| dkrt| |d  dS dS |d	ks|d
kr|dkrt| |d  dS dS |dkr| D ]6}|dkrqt|ds
t|ds
t|dr dS qdS d|  kr.dkrhn n6| D ],}dt |  krVdkr6n n dS q6dS d|  krdkrn n6| D ],}dt |  krdkrn n dS qdS dS )N   r   r   l   TFiu  Greeki  i  Hebrewi0  u   ・HiraganaKatakanaZHani`  ii  i  i  )r   r*   r   )r'   rO   rY   rU   r   r   r   r   valid_contexto   s@     (
" 
 
r`   c                 C   sJ  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 rz,t| |stdt||d t| W n0 ty   tdt||d t| Y n0 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 LabelZPVALIDZCONTEXTJz*Joiner {} not allowed at position {} in {}r   z<Unknown codepoint adjacent to joiner {} at position {} in {}ZCONTEXTO-Codepoint {} not allowed at position {} in {}z-Codepoint {} at position {} of {} not allowed)
isinstancebytes	bytearraydecoder*   r   rN   rK   rF   r>   r   r   r   Zcodepoint_classesrX   r   r%   r&   r@   r   r`   r   rC   )r'   rO   r   rU   r   r   r   check_label   s4    


  rf   c                 C   s|   z(|  d}t| t|s$td|W S  ty:   Y n0 | sHtdt| } t|  t| }t| }t|sxtd|S )NasciizLabel too longzNo Input)	r"   ulabelr,   r   UnicodeEncodeErrorstrrf   r$   _alabel_prefixr'   Zlabel_bytesr   r   r   alabel   s"    
rm   c                 C   s   t | ttfs>z| d}W qB ty:   t|  |  Y S 0 n| }| }|tr|t	td  }|spt
d|dd dkrt
dnt| |dS z|d} W n ty   t
dY n0 t|  | S )Nrg   z5Malformed A-label, no Punycode eligible content foundrJ   rI   z"A-label must not end with a hyphenr!   zInvalid A-label)rb   rc   rd   r"   ri   rf   lower
startswithrk   r*   r   re   UnicodeErrorrl   r   r   r   rh     s,    


rh   T)domain
std3_rulestransitionalr   c                 C   s$  ddl m } d}t| D ]\}}t|}z||dk r8|nt||dfd  }|d }	d}
t|dkrn|d }
|	d	ks|	d
kr|r|	dkr|s|
du r||7 }n@|
dur|	dks|	dkr|r|	d
kr|r||
7 }n|	dkrt W q ty   tdt	||d t
| Y q0 qtd|S )zBRe-map the characters in the string according to UTS46 processing.r   )	uts46datar2      ZN   rG   VrQ   3rD   Ira   rL   )rt   r>   r   bisectbisect_leftr*   
IndexErrorr   r%   r&   r@   r   rM   )rq   rr   rs   rt   outputrO   charZ
code_pointZuts46rowstatusreplacementr   r   r   uts46_remap4  sV    


r   )r    strictuts46rr   rs   r   c           	      C   s   t | ttfr8z| d} W n ty6   tdY n0 |rHt| ||} d}g }|r`| d}n
t| }|rx|dgkrtd|d dkr|d= d}|D ]$}t	|} | r|
|  qtd	q|r|
d
 d|} t| |std| S )Nrg   zGshould pass a unicode string to the function rather than a byte string.F.r2   Empty domainrJ   TEmpty label       .zDomain too long)rb   rc   rd   re   UnicodeDecodeErrorr   r   split_unicode_dots_rerm   appendjoinr0   )	r    r   r   rr   rs   r-   resultlabelsr'   r   r   r   r"   T  s8    




r"   )r    r   r   rr   r   c                 C   s   zt | ttfr| d} W n ty6   tdY n0 |rHt| |d} d}g }|s`t| }n
| d}|rx|dgkrtd|d s|d= d}|D ]$}t	|} | r|
|  qtd	q|r|
d d|S )
Nrg   zInvalid ASCII in A-labelFr   r2   r   rJ   Tr   )rb   rc   rd   re   r   r   r   r   r   rh   r   r   )r    r   r   rr   r-   r   r   r'   r   r   r   re   u  s2    


re   )F)F)TF)FFFF)FFF)*r2   r   r{   r   retypingr   r   	intrangesr   rR   rk   compiler   rp   r   r   r   r   intr   rj   boolr   rc   r$   r&   r,   r0   rC   rF   rK   rN   rX   r`   rd   rf   rm   rh   r   r"   re   r   r   r   r   <module>   s<   
;+* $!