o
    X|ÄjEm  ã                   @   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.10/sre_compile.pyÚ	<genexpr>N   s   € 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@ r(t	j
}	t	j}
t}nt	j}	t	j}
|D �]4\}}||v rµ|t@ sF||ƒ ||ƒ q0|t@ rU|t| ƒ ||ƒ q0|	|ƒsb||ƒ ||ƒ q0|
|ƒ}|ss|t| ƒ ||ƒ q0||vr‚|t| ƒ ||ƒ q0|tƒ || ƒ}|dƒ |tu r–|tƒ |f||  D ]
}|tƒ ||ƒ q�|tƒ || ƒ| | |< q0|tu røt||	|
|ƒ\}}|t@ rÏ|t@ rÏ|tƒ n|sÖ|tƒ n|sÝ|tƒ n|tƒ || ƒ}|dƒ t||| ƒ || ƒ| | |< q0|tu �r|t@ �r|tƒ q0|tƒ q0||v �r’|t@ �rt d|f ƒ‚t!|d ƒ�r[|t"u �r.|t#ƒ n|t$ƒ || ƒ}|dƒ ||d ƒ ||d ƒ t%| |d |ƒ |t&ƒ || ƒ| | |< q0|t'ƒ || ƒ}|dƒ ||d ƒ ||d ƒ t%| |d |ƒ || ƒ| | |< |t"u �r�|t(ƒ q0|t)ƒ q0|t*u �rÈ|\}}}}|�r¬|t+ƒ ||d d ƒ t%| |t,|||ƒƒ |�rÇ|t+ƒ ||d d d ƒ q0||v �rÒ||ƒ q0||v �r||ƒ || ƒ}|dƒ |d dk�rï|dƒ n|d  -¡ \}}||k�r t dƒ‚||ƒ t%| |d |ƒ |t&ƒ || ƒ| | |< q0|t.u �r=||ƒ || ƒ}|dƒ t%| ||ƒ |t&ƒ || ƒ| | |< q0|t/u �rm||ƒ |t0@ �rQt1 2||¡}|t@ �r]t3 2||¡}n|t@ �rht4 2||¡}||ƒ q0|t5u �rº||ƒ g }|j }|d D ]'}|| ƒ}|dƒ t%| ||ƒ |t6ƒ ||| ƒƒ |dƒ || ƒ| | |< �q|tƒ |D ]}|| ƒ| | |< �q­q0|t7u �rÛ||ƒ |t@ �rÍt8| }n	|t@ �rÖt9| }||ƒ q0|t:u �r|t@ �sê||ƒ n|t@ �rô|t;ƒ n|�sü|t<ƒ n|t=ƒ ||d ƒ q0|t>u �r_||ƒ ||d d ƒ || ƒ}|dƒ t%| |d |ƒ |d �rT|t6ƒ || ƒ}|dƒ || ƒ| d | |< t%| |d |ƒ || ƒ| | |< q0|| ƒ| d | |< q0t d|f ƒ‚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   r8   W   sJ  




















€











ÿ












 �âr8   c                 C   sà   |j }| D ]d\}}||ƒ |tu rq|tu r||ƒ q|tu s#|tu r0||d ƒ ||d ƒ q|tu r:| |¡ q|tu rD| |¡ q|tu rc|t	@ rS|t
| ƒ q|t@ r^|t| ƒ q||ƒ qtd|f ƒ‚|tƒ d S )Nr   r   z%internal: unsupported set operator %r)r   r'   r(   ÚRANGEÚRANGE_UNI_IGNOREÚCHARSETÚextendÚ
BIGCHARSETrE   r   rF   r    rG   r3   r)   )rX   r   rM   rO   rS   rT   r   r   r   r.   	  s,   

r.   c              	   C   sx  g }g }t dƒ}d}| D ]À\}}		 z‘|tu r?|r:||	ƒ}
d||
< |r1|
|v r1||
 D ]}d||< q*|s9||	ƒr9d}ngd||	< nb|tu rŽt|	d |	d d ƒ}|r„|rnt||ƒD ]}d||< ||v rl|| D ]}d||< qeqWnt||ƒD ]}d||< qs|sƒtt||ƒƒ}n|D ]}d||< q†n|tu rš| ||	f¡ n| ||	f¡ W n( tyÊ   t	|ƒdkr·|dd 7 }Y q|rÁd}|tu rÁt
}| ||	f¡ Y nw 	 qg }d}	 | d|¡}|dk rÝn%t	|ƒdkræd }n| d|¡}|dk rú| |t	|ƒf¡ n| ||f¡ qÒ|d u�rB|D ] \}}|| dk�r| t|f¡ �q	| t||d ff¡ �q	||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 ],}|||d … }||v �rŠ|| ||d < �qq| ||d < ||< |d7 }||7 }�qqt|ƒ}|gt|ƒ |dd…< | t|f¡ ||7 }||fS )
Né   FTr   r   ó    i ÿ  r   i   )Ú	bytearrayr(   r^   ÚrangeÚmapÚanyr'   r   Ú
IndexErrorr   r_   ÚfindÚ
_mk_bitmapr`   ÚbytesÚ_bytes_to_codesrb   )rX   rQ   ZfixuprR   Zoutr]   ZcharmaprY   rS   rT   rU   rW   Ú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_TRANSrf   r   )Úbitsrv   rw   r   ru   r   rk   ³  s   ÿrk   c                 C   s@   t | ƒ d¡}|jtjksJ ‚t|ƒ|j t| ƒksJ ‚| ¡ S )NÚI)Ú
memoryviewÚcastÚitemsizer!   ÚCODESIZEr   Útolist)ÚbÚar   r   r   rm   ¸  s   rm   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   rt   )r   r=   r4   Ú_UNIT_CODES)r[   rS   rT   r   r   r   r4   ¿  s   r4   c                 C   s|   dgt | ƒ }tdt | ƒƒD ]-}||d  }| | | | kr5|dkr'd||< n||d  }| | | | ks|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   rf   )Ú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 r   )r   r    r!   r"   r$   )r   r   r   r   Ú_get_iscasedÝ  s
   rˆ   c                 C   sä   g }|j }d }t|ƒ}| jD ]Y\}}|tu r#|r||ƒr nO||ƒ q|tu rf|\}}	}
}t||	|
ƒ}|t@ r=|t@ r= n0t||ƒ\}}}|d u r\|d urRt	|ƒ}n
|d ur\t	|ƒ| }| 
|¡ |se nq n||dfS ||dfS )NTF)r   rˆ   rp   r(   r=   r   r   r   Ú_get_literal_prefixr   ra   )rN   r   r†   ZprefixappendÚprefix_skiprQ   rS   rT   rZ   r   r   r[   Zflags1Zprefix1Zprefix_skip1Úgot_allr   r   r   r‰   å  s6   


ÿ

r‰   c                 C   sZ  	 | j sd S | j d \}}|turn|\}}}} t|||ƒ}|t@ r(|t@ r(d S qt|ƒ}|tu r>|r9||ƒr9d S ||fgS |tu rng }|j}	|d D ] }
|
sR d S |
d \}}|tu ri|rb||ƒsi|	||fƒ qK d S |S |t	u r«|}|r©|D ]0\}}|tu rˆ||ƒr‡ d S qx|t
u r¨|d dkr• d S tt|t|d |d d ƒƒƒr¨ d S qx|S d S )NTr   r   iÿÿ  )rp   r=   r   r   r   rˆ   r(   rC   r   r*   r^   rh   rg   rf   )rN   r   rS   rT   rZ   r   r   rQ   rX   Zcharsetappendr[   r   r   r   Ú_get_charset_prefix  sV   ÷
ÿ €rŒ   c                 C   st  |  ¡ \}}|tkrt}|dkr|  tdd||g¡ d S g }d}g }|t@ r*|t@ s9t||ƒ\}}}|s9t||ƒ}| j}	|	tƒ t	| ƒ}
|	dƒ d}|rYt
}|d u rX|rX|tB }n|r_|tB }|	|ƒ |tk rl|	|ƒ n
|	tƒ |d t… }|	t|tƒƒ |rž|	t	|ƒƒ |d u r�t	|ƒ}|	|ƒ |  |¡ |  t|ƒ¡ n|r°t|ƒ\}}|rªJ ‚t||| ƒ t	| ƒ|
 | |
< d S )Nr   é   )r?   ÚMAXCODEra   ÚINFOr   r   r‰   rŒ   r   r   ÚSRE_INFO_PREFIXZSRE_INFO_LITERALÚSRE_INFO_CHARSETÚminr‡   r+   r.   )rM   rN   r   rU   r\   r†   rŠ   rX   r‹   rO   rV   ZmaskrY   r   r   r   Ú_compile_info0  sT   
€

r“   c                 C   s   t | ttfƒS r   )Ú
isinstanceÚstrrl   )Úobjr   r   r   Úisstringk  s   r—   c                 C   s8   | j j|B }g }t|| |ƒ t|| j|ƒ | t¡ |S r   )Ústater   r“   r8   rp   r   r9   )r[   r   rM   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   ~  s   €$ z_hex_code.<locals>.<genexpr>)Újoin©rM   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 r=||ƒ �n°|tt	t
tttttfv r^ˆ| }|d7 }||d|t|ƒf ƒ �n�|tu r…ˆ| }|d7 }tt| ƒ}|d d… d	kszJ ‚|||dd … ƒ �nh|tu r¬ˆ| }|d7 }tt| ƒ}|d d
… dks¡J ‚|||d
d … ƒ �nA|ttttfv rÐˆ| }||||| d� ˆ|d || ƒ ||7 }�n|ttfv rõˆ||d … \}}	|d7 }||d||	t|ƒt|	ƒf ƒ �nø|tu �r||tˆ||dt  … ƒƒ |dt 7 }�nÜ|tu �rhˆ| }|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 }�qJˆd8 ‰�n…|t%t&t't(t)fv �r�ˆ| }|d7 }|||ƒ �nl|t*u �r™ˆ| }||||| d� |d7 }�nT|t+u �rÛˆ| }||||| d� |�rÕˆ|d || ƒ ||7 }|‰ ˆ| }|�rÎ|d||| d� n|tƒ |�s®|d7 }�n|t,t-t.fv �rˆ||d … \}}}|t/k�rõd}||||||| d� ˆ|d || ƒ ||7 }nß|t0u �r,ˆ||d … \}}|||||| d� |d7 }nÁ|t1t2fv �rUˆ||d … \}}|||||| d� ˆ|d || ƒ ||7 }n˜|t3u �réˆ||d … \}}}}|t/k�rmd}|||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 }nt8|ƒ‚||k sˆd8 ‰d S )N)Útoc                    sX   | d urˆ   | ¡ |d| f f7 }tdˆˆˆˆ v rd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)rc   ó    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   ü  s   € z(%r)Ú z	  overlapÚin)9ZOPCODESr9   r)   r/   r1   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Úchrr@   r•   ZATCODESrE   ZCHCODESr*   r-   r%   r,   r^   r_   r`   r    rv   rb   Úlistrž   r!   r�   rf   r>   rH   rJ   rK   rI   rD   rC   r:   r6   r7   r¶   rL   ÚASSERTÚ
ASSERT_NOTr�   Úbinr�   rg   r‘   Ú
ValueError)r¬   r¥   r­   r¯   r   rS   ÚargrV   rU   r\   rr   r	   r’   Úmaxr   Z
prefix_lenrŠ   r†   ©rM   Údis_r©   rª   r«   rµ   )r¬   r   rÃ   ‡  sø   

ÿý"


ÿ
ÿ

ø	








þ

�sz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   rN   rM   Z
groupindexZ
indexgrouprW   r   r   r   r   rÊ     s"   


ýrÊ   )NNN)r   ).Ú__doc__r!   rÆ   Úsre_constantsZMAGICr(   r&   r   r:   Z
MIN_REPEATr5   r   r9   r)   r   r¼   r½   r   r/   r*   r…   Z_equivalencesr#   r   r   r8   r.   r+   r�   rv   rŽ   r{   Úintrk   rm   r4   r‡   rˆ   r‰   rŒ   r“   r—   r™   r    rÅ   rÊ   r   r   r   r   Ú<module>   sL   

4ÿ
ÿ 3
 
	,; 