a
    jCiEm  ã                   @   s$  d Z ddlZddlZddlT ejeks.J dƒ‚eehZee	e
hZeehZeehZeeehB ZdZdd„ eD ƒZejfdd	„Zd
d„ Zdd„ Zd-dd„Zejd Zde> d ZdZee fdd„Z!dd„ Z"dd„ Z#dd„ Z$dd„ Z%dd„ Z&dd „ Z'd!d"„ Z(d#d$„ Z)d%d&„ Z*d'd(„ Z+d)d*„ Z,d.d+d,„Z-dS )/zInternal support module for sreé    N)Ú*zSRE module mismatch))éi   i1  )és   i  )éµ   i¼  )iE  i¹  i¾  )i�  iÓ  )i°  iã  )i²  iÐ  )iµ  iõ  )i¸  iÑ  )iº  ið  )iÀ  iÖ  )iÁ  iñ  )iÂ  iÃ  )iÆ  iÕ  )i2  i€  )i4  i�  )i>  i‚  )iA  iƒ  )iB  i„  i…  )iJ  i†  )ic  i‡  )iˆ  iK¦  )ia  i›  )iû  iû  c                    s.   i | ]&}|D ]‰ ˆ t ‡ fd d„|D ƒƒ“qqS )c                 3   s   | ]}ˆ |kr|V  qd S ©N© )Ú.0Új©Úir   ú'/usr/local/lib/python3.9/sre_compile.pyÚ	<genexpr>N   ó    z<dictcomp>.<genexpr>)Útuple)r   Útr   r
   r   Ú
<dictcomp>N   s   
ÿr   c                 C   s    ||@ r| | M } | |B | @ S r   r   )ÚflagsÚ	add_flagsÚ	del_flagsÚ
TYPE_FLAGSr   r   r   Ú_combine_flagsQ   s    
r   c                 C   sä  | j }t}t}t}t}t}d }	d }
d }|t@ r\|t@ s\|t@ rPt	j
}	t	j}
t}nt	j}	t	j}
|D �]|\}}||v �rr|t@ sŽ||ƒ ||ƒ nâ|t@ r¬|t| ƒ ||ƒ nÄ|	|ƒsÆ||ƒ ||ƒ nª|
|ƒ}|sè|t| ƒ ||ƒ nˆ||v�r|t| ƒ ||ƒ nh|tƒ || ƒ}|dƒ |tu �r2|tƒ |f||  D ]}|tƒ ||ƒ �q@|tƒ || ƒ| | |< q`|tu �rt||	|
|ƒ\}}|t@ �r¬|t@ �r¬|tƒ n(|�s¼|tƒ n|�sÌ|tƒ n|tƒ || ƒ}|dƒ t||| ƒ || ƒ| | |< q`|tu �r*|t@ �r |tƒ n|tƒ q`||v �r6|t@ �rLt d|f ƒ‚t!|d ƒ�rÈ|t"u �rn|t#ƒ n|t$ƒ || ƒ}|dƒ ||d ƒ ||d ƒ t%| |d |ƒ |t&ƒ || ƒ| | |< nl|t'ƒ || ƒ}|dƒ ||d ƒ ||d ƒ t%| |d |ƒ || ƒ| | |< |t"u �r,|t(ƒ n|t)ƒ q`|t*u �r¢|\}}}}|�rj|t+ƒ ||d d ƒ t%| |t,|||ƒƒ |�rÞ|t+ƒ ||d d d ƒ q`||v �r¶||ƒ q`||v �rD||ƒ || ƒ}|dƒ |d dk�rð|dƒ n*|d  -¡ \}}||k�rt dƒ‚||ƒ t%| |d |ƒ |t&ƒ || ƒ| | |< q`|t.u �rŒ||ƒ || ƒ}|dƒ t%| ||ƒ |t&ƒ || ƒ| | |< q`|t/u �rì||ƒ |t0@ �r´t1 2||¡}|t@ �rÌt3 2||¡}n|t@ �rât4 2||¡}||ƒ q`|t5u �r†||ƒ g }|j }|d D ]N}|| ƒ}|dƒ t%| ||ƒ |t6ƒ ||| ƒƒ |dƒ || ƒ| | |< �q|tƒ |D ]}|| ƒ| | |< �qlq`|t7u �rÈ||ƒ |t@ �r¬t8| }n|t@ �r¾t9| }||ƒ q`|t:u �r |t@ �sæ||ƒ n,|t@ �rú|t;ƒ n|�s
|t<ƒ n|t=ƒ ||d ƒ q`|t>u �rÐ||ƒ ||d d ƒ || ƒ}|dƒ t%| |d |ƒ |d �rº|t6ƒ || ƒ}|dƒ || ƒ| d | |< t%| |d |ƒ || ƒ| | |< n|| ƒ| d | |< q`t d|f ƒ‚q`d S )Nr   z*internal: unsupported template operator %ré   é   z(look-behind requires fixed-width patternz%internal: unsupported operand type %r)?ÚappendÚlenÚ_LITERAL_CODESÚ_REPEATING_CODESÚ_SUCCESS_CODESÚ_ASSERT_CODESÚSRE_FLAG_IGNORECASEÚSRE_FLAG_LOCALEÚSRE_FLAG_UNICODEÚ_sreÚunicode_iscasedZunicode_tolowerÚ_ignorecase_fixesÚascii_iscasedZascii_tolowerZOP_LOCALE_IGNOREZ	OP_IGNOREZOP_UNICODE_IGNOREÚIN_UNI_IGNOREÚNOT_LITERALÚNEGATEÚLITERALÚFAILUREÚINÚ_optimize_charsetÚIN_LOC_IGNOREÚ	IN_IGNOREÚ_compile_charsetÚANYÚSRE_FLAG_DOTALLÚANY_ALLÚSRE_FLAG_TEMPLATEÚerrorÚ_simpleÚ
MAX_REPEATÚ
REPEAT_ONEÚMIN_REPEAT_ONEÚ_compileÚSUCCESSÚREPEATÚ	MAX_UNTILÚ	MIN_UNTILÚ
SUBPATTERNÚMARKr   ÚgetwidthZCALLÚATÚSRE_FLAG_MULTILINEZAT_MULTILINEÚgetZ	AT_LOCALEZ
AT_UNICODEÚBRANCHÚJUMPÚCATEGORYÚ	CH_LOCALEÚ
CH_UNICODEÚGROUPREFÚGROUPREF_LOC_IGNOREÚGROUPREF_IGNOREÚGROUPREF_UNI_IGNOREÚGROUPREF_EXISTS)ÚcodeÚpatternr   ÚemitÚ_lenZLITERAL_CODESZREPEATING_CODESZSUCCESS_CODESZASSERT_CODESÚiscasedZtolowerÚfixesÚopÚavÚloÚskipÚkÚcharsetÚhascasedÚgroupr   r   ÚpÚhiÚtailZ
tailappendZskipyesZskipnor   r   r   r9   W   sB   
















































r9   c                 C   sâ   |j }| D ]Ê\}}||ƒ |tu r$q
|tu r6||ƒ q
|tu sF|tu r`||d ƒ ||d ƒ q
|tu rt| |¡ q
|tu rˆ| |¡ q
|tu rÆ|t	@ r¦|t
| ƒ qÔ|t@ r¼|t| ƒ qÔ||ƒ q
td|f ƒ‚q
|tƒ d S )Nr   r   z%internal: unsupported set operator %r)r   r(   r)   ÚRANGEÚRANGE_UNI_IGNOREÚCHARSETÚextendÚ
BIGCHARSETrF   r    rG   r!   rH   r4   r*   )rY   r   rN   rP   rT   rU   r   r   r   r/   	  s,    

r/   c              	   C   s–  g }g }t dƒ}d}| D �]”\}}	�z,|tu r€|rv||	ƒ}
d||
< |rd|
|v rd||
 D ]}d||< qV|s~||	ƒr~d}nd||	< nÎ|tu �r&t|	d |	d d ƒ}|�r|rât||ƒD ]*}d||< ||v r´|| D ]}d||< qÐq´nt||ƒD ]}d||< qì|�s$tt||ƒƒ}n|D ]}d||< �qn(|tu �r@| ||	f¡ n| ||	f¡ W nX t�y¨   t	|ƒdk�r~|dd 7 }Y q"|�r–d}|tu �r–t
}| ||	f¡ Y n0 qq"qg }d}| d|¡}|dk �rÒ�q&t	|ƒdk�rèd }�q&| d|¡}|dk �r| |t	|ƒf¡ �q&| ||f¡ �q¸|d u�r¤|D ]>\}}|| dk�rZ| t|f¡ n| t||d ff¡ �q4||7 }|�s”t	|ƒt	| ƒk �rœ||fS | |fS t	|ƒdk�rØt|ƒ}| t|f¡ ||7 }||fS t|ƒ}i }t dƒ}d}t ƒ }tdd	dƒD ]V}|||d … }||v �r2|| ||d < n$| ||d < ||< |d7 }||7 }�qt|ƒ}|gt|ƒ |dd…< | t|f¡ ||7 }||fS )
Né   Fr   Tr   ó    i ÿ  r   i   )Ú	bytearrayr)   r_   ÚrangeÚmapÚanyr(   r   Ú
IndexErrorr   r`   ÚfindÚ
_mk_bitmapra   ÚbytesÚ_bytes_to_codesrc   )rY   rR   ZfixuprS   Zoutr^   ZcharmaprZ   rT   rU   rV   rX   Úrr   ZrunsÚqr\   ÚdataÚcompsÚmappingZblockZchunkr   r   r   r,   $  s°    










r,   é   r   s   0111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111c                    s8   |   t¡d d d… ‰‡ ‡‡fdd„ttˆƒdˆ  ƒD ƒS )Néÿÿÿÿc                    s"   g | ]}ˆˆ|ˆ  |… d ƒ‘qS )r   r   )r   r   ©Ú	_CODEBITSÚ_intÚsr   r   Ú
<listcomp>µ  s   ÿz_mk_bitmap.<locals>.<listcomp>r   )Ú	translateÚ_BITS_TRANSrg   r   )Úbitsrw   rx   r   rv   r   rl   ³  s    ÿrl   c                 C   s@   t | ƒ d¡}|jtjksJ ‚t|ƒ|j t| ƒks8J ‚| ¡ S )NÚI)Ú
memoryviewÚcastÚitemsizer"   ÚCODESIZEr   Útolist)ÚbÚar   r   r   rn   ¸  s    rn   c                 C   sD   t | ƒdkrdS | d \}}|tu r<|d d u o:t|d ƒS |tv S )Nr   Fr   ru   )r   r>   r5   Ú_UNIT_CODES)r\   rT   rU   r   r   r   r5   ¿  s    r5   c                 C   sn   dgt | ƒ }tdt | ƒƒD ]L}||d  }| | | | kr\|dkrNd||< q||d  }q,|d ||< q|S )aj  
    Generate an overlap table for the following prefix.
    An overlap table is a table of the same size as the prefix which
    informs about the potential self-overlap for each index in the prefix:
    - if overlap[i] == 0, prefix[i:] can't overlap prefix[0:...]
    - if overlap[i] == k with 0 < k <= i, prefix[i-k+1:i+1] overlaps with
      prefix[0:k]
    r   r   )r   rg   )ÚprefixZtabler   Zidxr   r   r   Ú_generate_overlap_tableÈ  s    	rˆ   c                 C   s$   | t @ sd S | t@ rtjS tjS d S r   )r   r!   r"   r#   r%   )r   r   r   r   Ú_get_iscasedÝ  s
    r‰   c                 C   sæ   g }|j }d }t|ƒ}| jD ]´\}}|tu rF|r<||ƒr< qÜ||ƒ q|tu rÌ|\}}	}
}t||	|
ƒ}|t@ rz|t@ rz qÜt||ƒ\}}}|d u r¸|d ur¤t	|ƒ}n|d ur¸t	|ƒ| }| 
|¡ |sÐ qÜq qÜq||dfS ||dfS )NTF)r   r‰   rq   r)   r>   r   r   r    Ú_get_literal_prefixr   rb   )rO   r   r‡   ZprefixappendÚprefix_skiprR   rT   rU   r[   r   r   r\   Zflags1Zprefix1Zprefix_skip1Úgot_allr   r   r   rŠ   å  s4    



rŠ   c                 C   sd  | j s
d S | j d \}}|tur"qP|\}}}} t|||ƒ}|t@ r |t@ r d S q t|ƒ}|tu rz|rp||ƒrpd S ||fgS |tu rÜg }|j}	|d D ]B}
|
s¢ d S |
d \}}|tu rÐ|rÂ||ƒsÐ|	||fƒ q” d S q”|S |t	u �r`|}|�r\|D ]f\}}|tu �r||ƒ�rZ d S qô|t
u rô|d dk�r4 d S tt|t|d |d d ƒƒƒrô d S qô|S d S )Nr   r   iÿÿ  )rq   r>   r   r   r    r‰   r)   rD   r   r+   r_   ri   rh   rg   )rO   r   rT   rU   r[   r   r   rR   rY   Zcharsetappendr\   r   r   r   Ú_get_charset_prefix  sN    



 r�   c                 C   s|  |  ¡ \}}|tkrt}|dkr8|  tdd||g¡ d S g }d}g }|t@ rT|t@ srt||ƒ\}}}|srt||ƒ}| j}	|	tƒ t	| ƒ}
|	dƒ d}|r²t
}|d u r¾|r¾|tB }n|r¾|tB }|	|ƒ |tk rØ|	|ƒ n|	tƒ |d t… }|	t|tƒƒ |�r@|	t	|ƒƒ |d u �rt	|ƒ}|	|ƒ |  |¡ |  t|ƒ¡ n(|�rht|ƒ\}}|�r\J ‚t||| ƒ t	| ƒ|
 | |
< d S )Nr   é   )r@   ÚMAXCODErb   ÚINFOr   r    rŠ   r�   r   r   ÚSRE_INFO_PREFIXZSRE_INFO_LITERALÚSRE_INFO_CHARSETÚminrˆ   r,   r/   )rN   rO   r   rV   r]   r‡   r‹   rY   rŒ   rP   rW   ZmaskrZ   r   r   r   Ú_compile_info0  sR    





r”   c                 C   s   t | ttfƒS r   )Ú
isinstanceÚstrrm   )Úobjr   r   r   Úisstringk  s    r˜   c                 C   s8   | j j|B }g }t|| |ƒ t|| j|ƒ | t¡ |S r   )Ústater   r”   r9   rq   r   r:   )r\   r   rN   r   r   r   Ú_coden  s    
rš   c                 C   s   dd  dd„ | D ƒ¡ S )Nú[%s]ú, c                 s   s$   | ]}d t jd d |f V  qdS )z%#0*xr   N)r"   r‚   ©r   Úxr   r   r   r   ~  r   z_hex_code.<locals>.<genexpr>)Újoin©rN   r   r   r   Ú	_hex_code}  s    r¡   c                    sN   dd l ‰tƒ ‰d‰tttˆ ƒd ƒƒ‰‡ ‡‡‡‡‡fdd„‰ˆdtˆ ƒƒ d S )Nr   r   c              	      sÚ  d dœ‡‡‡‡ fdd„
}‡‡fdd„}ˆd7 ‰ˆ }||k �rÎ|‰ ˆ| }|d7 }t | }|tttttttfv rx||ƒ q2|tt	t
tttttfv r¸ˆ| }|d7 }||d|t|ƒf ƒ q2|tu �rˆ| }|d7 }tt| ƒ}|d d… d	ksòJ ‚|||dd … ƒ q2|tu �rVˆ| }|d7 }tt| ƒ}|d d
… dk�sBJ ‚|||d
d … ƒ q2|ttttfv �ržˆ| }||||| d� ˆ|d || ƒ ||7 }q2|ttfv �rèˆ||d … \}}	|d7 }||d||	t|ƒt|	ƒf ƒ q2|tu �r||tˆ||dt  … ƒƒ |dt 7 }q2|tu �rÊˆ| }|d7 }t d !‡fdd„ˆ||dt"j#  … D ƒ¡ƒ}
||||
ƒ |dt"j# 7 }ˆd7 ‰t$|ƒD ].}|tˆ||dt  … ƒƒ |dt 7 }�q�ˆd8 ‰q2|t%t&t't(t)fv �rúˆ| }|d7 }|||ƒ q2|t*u �r(ˆ| }||||| d� |d7 }q2|t+u �r¨ˆ| }||||| d� |�ržˆ|d || ƒ ||7 }|‰ ˆ| }|�r’|d||| d� n|tƒ �qL|d7 }q2|t,t-t.fv �rˆ||d … \}}}|t/k�rÜd}||||||| d� ˆ|d || ƒ ||7 }q2|t0u �rJˆ||d … \}}|||||| d� |d7 }q2|t1t2fv �rœˆ||d … \}}|||||| d� ˆ|d || ƒ ||7 }q2|t3u �rÄˆ||d … \}}}}|t/k�rÌd}|||t4|ƒ|||| d� |d ‰ |t5@ �rŠˆ|d |d … \}}|d|ƒ |d ‰ ˆˆ ˆ | … }|ddd !dd„ |D ƒ¡ dd !t6t|ƒ¡ ƒ ˆ |7 ‰ |dˆˆ ˆ | … ƒ ˆ |7 ‰ |t7@ �rºˆd7 ‰|dƒ ˆˆ || ƒ ˆd8 ‰||7 }q2t8|ƒ‚q2ˆd8 ‰d S )N)Útoc                    sX   | d ur"ˆ   | ¡ |d| f f7 }tdˆˆˆˆ v r6dndf dˆd  d� t|Ž  d S )Nz(to %d)z%*d%s ú:Ú.z  r   ©Úend)ÚaddÚprint)r¢   Úargs)ÚlabelsÚlevelÚoffset_widthÚstartr   r   Úprint_ˆ  s    

ÿz!dis.<locals>.dis_.<locals>.print_c                     s"   t dˆdˆ    d� t | Ž  d S )Nú r   r¥   )r¨   )r©   )r«   r¬   r   r   Úprint_2�  s    z"dis.<locals>.dis_.<locals>.print_2r   z
%#02x (%r)é   ZAT_é	   Z	CATEGORY_r   z%#02x %#02x (%r-%r)rd   r   c                 3   s   | ]}|  tjˆ j¡V  qd S r   )Úto_bytesr"   r‚   Ú	byteorderr�   )Úsysr   r   r   Á  s   ÿz$dis.<locals>.dis_.<locals>.<genexpr>ZbranchÚ	MAXREPEATrŽ   é   z  prefix_skipz  prefixr›   rœ   c                 s   s   | ]}d | V  qdS )z%#02xNr   r�   r   r   r   r   ü  r   z(%r)Ú z	  overlapÚin)9ZOPCODESr:   r*   r0   r2   r<   r=   r(   r)   r'   ZLITERAL_IGNOREZNOT_LITERAL_IGNOREZLITERAL_UNI_IGNOREZNOT_LITERAL_UNI_IGNOREZLITERAL_LOC_IGNOREZNOT_LITERAL_LOC_IGNOREÚchrrA   r–   ZATCODESrF   ZCHCODESr+   r.   r&   r-   r_   r`   ra   r¡   rw   rc   ÚlistrŸ   r"   r‚   rg   r?   rI   rK   rL   rJ   rE   rD   r;   r7   r8   r¶   rM   ÚASSERTÚ
ASSERT_NOTr�   Úbinr‘   rh   r’   Ú
ValueError)r­   r¦   r®   r°   r   rT   ÚargrW   rV   r]   rs   r	   r“   Úmaxr   Z
prefix_lenr‹   r‡   ©rN   Údis_rª   r«   r¬   rµ   )r­   r   rÃ   ‡  sô    

ÿ
ý


 

ÿ


ÿ












þ


zdis.<locals>.dis_)rµ   Úsetr   r–   r    r   rÂ   r   Údis€  s     rÅ   c              	   C   s–   t | ƒr| }t | |¡} nd }t| |ƒ}|t@ r>tƒ  t|ƒ | jj}d g| jj	 }| 
¡ D ]\}}|||< q\t ||| jjB || jj	d |t|ƒ¡S )Nr   )r˜   Ú	sre_parseÚparserš   ÚSRE_FLAG_DEBUGr¨   rÅ   r™   Z	groupdictZgroupsÚitemsr"   Úcompiler   r   )r\   r   rO   rN   Z
groupindexZ
indexgrouprX   r   r   r   r   rÊ     s"    


ýrÊ   )NNN)r   ).Ú__doc__r"   rÆ   Úsre_constantsZMAGICr)   r'   r   r;   Z
MIN_REPEATr6   r   r:   r*   r   r¼   r½   r   r0   r+   r†   Z_equivalencesr$   r   r   r9   r/   r,   r‚   rw   r�   r|   Úintrl   rn   r5   rˆ   r‰   rŠ   r�   r”   r˜   rš   r¡   rÅ   rÊ   r   r   r   r   Ú<module>   sJ   
4ÿÿ
 3
 
	,; 