§
    
Á³g   ã                   óŒ   — d Z ddlZddlmZ ddlmZ ddlmZ ddlmZ  ej	        d¦  «        Z
 ed¦  «        Zd„ Zd	„ Zdd„ZdS )a  
    pygments.regexopt
    ~~~~~~~~~~~~~~~~~

    An algorithm that generates optimized regexes for matching long lists of
    literal strings.

    :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
é    N)Úescape)Úcommonprefix)Úgroupby)Ú
itemgetterz[\[\^\\\-\]]c                 ól   — dt                                d„ d                     | ¦  «        ¦  «        z   dz   S )Nú[c                 ó0   — d|                       ¦   «         z   S )Nú\)Úgroup)Úms    ú[/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/pip/_vendor/pygments/regexopt.pyú<lambda>zmake_charset.<locals>.<lambda>   s   € ¨°·²±	´	Ñ)9€ ó    Ú ú])Ú	CS_ESCAPEÚsubÚjoin)Úletterss    r   Úmake_charsetr      s0   € Ø•—’Ð9Ð9¸2¿7º7À7Ñ;KÔ;KÑLÔLÑLÈsÑRÐRr   c           	      ó  ‡	‡
‡— |rdpd}| sdS | d         Š	t          | ¦  «        dk    r|t          ‰	¦  «        z   |z   S ‰	s!|t          | dd…         d¦  «        z   dz   |z   S t          ‰	¦  «        dk    ršg }g }| D ]@}t          |¦  «        dk    r|                     |¦  «         Œ+|                     |¦  «         ŒAt          |¦  «        dk    r@|r)|t          |d¦  «        z   dz   t	          |¦  «        z   |z   S |t	          |¦  «        z   |z   S t          | ¦  «        }|rAt          |¦  «        Š
|t          |¦  «        z   t          ˆ
fd	„| D ¦   «         d¦  «        z   |z   S d
„ | D ¦   «         }t          |¦  «        }|rWt          |¦  «        Š|t          t          ˆfd„| D ¦   «         ¦  «        d¦  «        z   t          |ddd…         ¦  «        z   |z   S |d                     d„ t          | ˆ	fd„¦  «        D ¦   «         ¦  «        z   |z   S )zEReturn a regex that matches any string in the sorted list of strings.ú)r   r   é   Nz(?:ú?ú|c                 ó$   •— g | ]}|‰d …         ‘ŒS ©N© )Ú.0ÚsÚplens     €r   ú
<listcomp>z#regex_opt_inner.<locals>.<listcomp>?   s!   ø€ Ð9Ð9Ð9¨A˜q   œxÐ9Ð9Ð9r   c                 ó$   — g | ]}|d d d…         ‘ŒS )Néÿÿÿÿr   )r   r    s     r   r"   z#regex_opt_inner.<locals>.<listcomp>B   s"   € Ð,Ð,Ð,˜q�1�T�T�r�T”7Ð,Ð,Ð,r   c              3   ó.   •K  — | ]}|d ‰ …         V — Œd S r   r   )r   r    Úslens     €r   ú	<genexpr>z"regex_opt_inner.<locals>.<genexpr>H   s-   øè è € Ð$@Ð$@°1 Q v¨¨ v¤YÐ$@Ð$@Ð$@Ð$@Ð$@Ð$@r   r$   c              3   ó\   K  — | ]'}t          t          |d          ¦  «        d¦  «        V — Œ(dS )r   r   N)Úregex_opt_innerÚlist)r   r   s     r   r'   z"regex_opt_inner.<locals>.<genexpr>M   sR   è è € ð Lð LØõ !¥ e¨A¤h¡¤°Ñ4Ô4ð Lð Lð Lð Lð Lð Lr   c                 ó(   •— | d         ‰d         k    S )Nr   r   )r    Úfirsts    €r   r   z!regex_opt_inner.<locals>.<lambda>N   s   ø€ ¸¸1¼ÀÀqÄÒ9I€ r   )	Úlenr   r)   Úappendr   r   Úsortedr   r   )ÚstringsÚ
open_parenÚclose_parenÚ	oneletterÚrestr    ÚprefixÚstrings_revÚsuffixr,   r!   r&   s            @@@r   r)   r)      s¤  øøø€ àÐ$ Ð*¨€Kàð àˆrØ�AŒJ€EÝ
ˆ7�|„|�qÒÐà�F 5™MœMÑ)¨KÑ7Ð7Øð  à�O¨G°A°B°B¬K¸Ñ?Ô?Ñ?ØñØñ ð 	 å
ˆ5�z„z�Q‚€àˆ	ØˆØð 	ð 	ˆAÝ�1‰vŒv˜Š{ˆ{Ø× Ò  Ñ#Ô#Ð#Ð#à—’˜A‘”��Ýˆy‰>Œ>˜AÒÐØð <à!¥O°D¸"Ñ$=Ô$=Ñ=ÀÑCÝ" 9Ñ-Ô-ñ.Ø0;ñ<ð <ð ¥¨YÑ 7Ô 7Ñ7¸+ÑEÐEÝ˜'Ñ"Ô"€FØð Ý�6‰{Œ{ˆð �F 6™NœNÑ*ÝÐ9Ð9Ð9Ð9°Ð9Ñ9Ô9¸5ÑAÔAñBàñð 	ð -Ð, GÐ,Ñ,Ô,€KÝ˜+Ñ&Ô&€FØð 1Ý�6‰{Œ{ˆàÝ�fÐ$@Ð$@Ð$@Ð$@¸Ð$@Ñ$@Ô$@Ñ@Ô@À%ÑHÔHñIå�V˜D˜D˜b˜D”\Ñ"Ô"ñ#à%0ñ1ð 	1ð
 Ø�Šð Lð LÝ% gÐ/IÐ/IÐ/IÐ/IÑJÔJðLñ Lô Lñ 	Lô 	LñLð ñð r   r   c                 óL   — t          | ¦  «        } |t          | d¦  «        z   |z   S )zíReturn a compiled regex that matches any string in the given list.

    The strings to match must be literal strings, not regexes.  They will be
    regex-escaped.

    *prefix* and *suffix* are pre- and appended to the final regex.
    ú()r/   r)   )r0   r5   r7   s      r   Ú	regex_optr:   R   s)   € õ �W‰oŒo€GØ•O G¨SÑ1Ô1Ñ1°FÑ:Ð:r   )r   r   )Ú__doc__Úrer   Úos.pathr   Ú	itertoolsr   Úoperatorr   Úcompiler   ÚFIRST_ELEMENTr   r)   r:   r   r   r   ú<module>rB      sÀ   ðð	ð 	ð 
€	€	€	Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð àˆBŒJ�Ñ'Ô'€	Ø�
˜1‘”€ðSð Sð Sð5ð 5ð 5ðp	;ð 	;ð 	;ð 	;ð 	;ð 	;r   