§
    ‹Ÿj×  ã                   óò  — d Z ddlZddlZddlmZ  ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        Z	 ej        d	¦  «        Z
 ej        d
¦  «        Z ej        d¦  «        Z ej        ej                             ddd¦  «        dz   e
j                             ddd¦  «        z   dz   ej                             ddd¦  «        z   dz   e	j                             ddd¦  «        z   dz   dz   dz   dz   ej        z   dz   ¦  «        Z ej        d                     d„ dD ¦   «         ¦  «        ¦  «        Zdedej        ej        eef                  fd„Zdedefd„ZdS )aA  
Terminal escape sequence patterns.

This module provides regex patterns for matching terminal escape sequences. All patterns match
sequences that begin with ESC (``\x1b``). Before calling re.match with these patterns, callers
should first check that the character at the current position is ESC for optimal performance.
é    Né   )Ú_SGR_PATTERNz4\x1b\]66;([^;\x07\x1b]*);([^\x07\x1b]*)(\x07|\x1b\\)a  \x1b\[[\x30-\x3f]*[\x20-\x2f]*[\x40-\x7e]|\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)|\x1b_[^\x1b\x07]*(?:\x07|\x1b\\)|\x1bP[^\x1b\x07]*(?:\x07|\x1b\\)|\x1b\^[^\x1b\x07]*(?:\x07|\x1b\\)|\x1b[()].|\x1b[\x20-\x2f]+[\x30-\x7e]|\x1b[\x40-\x5f]|\x1b[\x30-\x3f]|\x1b[\x60-\x7e]z\x1b\[(\d*)Cz\x1b\[(\d*)Dz\x1b\[(\d*)Gz\x1b\[(\d*)[CDG]z[\x08\r]|\x1b\[(\d*)[CDG]ú(z(?P<sgr_params>ú|z
(?P<hpa_n>z(?P<cforward_n>z(?P<cbackward_n>zU\x1b\]66;(?P<ts_meta>[^;\x07\x1b]*);(?P<ts_text>[^\x07\x1b]*)(?P<ts_term>\x07|\x1b\\)z(?P<other_seq>(?:z))c              #   ó"   K  — | ]
}d |› d�V — ŒdS )z(?:ú)N© )Ú.0Ú_patterns     úe/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/wcwidth/escape_sequences.pyú	<genexpr>r   W   s>   è è € ð ð  8Ð�8ÐÐÐð ð ð ð ð ð ó    )z\x1b\[\d+;\d+rz
\x1b\[\d*Kz
\x1b\[\d*Jz\x1b\[\d+;\d+Hz
\x1b\[\d*Hz
\x1b\[\d*Az
\x1b\[\d*Bz
\x1b\[\d*Pz
\x1b\[\d*Mz
\x1b\[\d*Lz
\x1b\[\d*@z
\x1b\[\d+Xz
\x1b\[\d*Sz
\x1b\[\d*Tz
\x1b\[\d*dz\x1b\[\?1049[hl]z\x1b\[\?47[hl]z\x1b8z\x1bDz\x1bMz\x1bcÚtextÚreturnc              #   ór  K  — d}t          | ¦  «        }d}||k     r…| |         }|dk    rl||k    r| ||…         dfV — t                               | |¦  «        }|r-|                     ¦   «         dfV — |                     ¦   «         }n|dfV — |dz  }|}n|dz  }||k     °…||k     r| |d…         dfV — dS dS )a¬  
    Iterate through text, yielding segments with sequence identification.

    This generator yields tuples of ``(segment, is_sequence)`` for each part
    of the input text, where ``is_sequence`` is ``True`` if the segment is
    a recognized terminal escape sequence.

    :param text: String to iterate through.
    :returns: Iterator of (segment, is_sequence) tuples.

    .. versionadded:: 0.3.0

    Example::

        >>> list(iter_sequences('hello'))
        [('hello', False)]
        >>> list(iter_sequences('\x1b[31mred'))
        [('\x1b[31m', True), ('red', False)]
        >>> list(iter_sequences('\x1b[1m\x1b[31m'))
        [('\x1b[1m', True), ('\x1b[31m', True)]
    r   úFTr   N)ÚlenÚZERO_WIDTH_PATTERNÚmatchÚgroupÚend)r   ÚidxÚtext_lenÚsegment_startÚcharr   s         r   Úiter_sequencesr   q   s  è è € ð, €CÝ�4‰yŒy€HØ€Mà
�Š.ˆ.Ø�CŒyˆà�6Š>ˆ>à�]Ò"Ð"Ø˜M¨#Ð-Ô.°Ð6Ð6Ð6Ð6õ '×,Ò,¨T°3Ñ7Ô7ˆEØð Ø—{’{‘}”} dÐ+Ð+Ð+Ð+Ø—i’i‘k”k��ð ˜T�lÐ"Ð"Ð"Ø�q‘�ØˆMˆMà�1‰HˆCð' �Š.ˆ.ð, �xÒÐØ�M�N�NÔ# UÐ+Ð+Ð+Ð+Ð+Ð+ð  Ðr   c                 óv   — d| v rt                                d| ¦  «        } t                               d| ¦  «        S )a  
    Return text with all terminal escape sequences removed.

    Unknown or incomplete ESC sequences are preserved.

    :param text: String that may contain terminal escape sequences.
    :returns: The input text with all escape sequences stripped.

    .. versionadded:: 0.3.0

    .. versionchanged:: 0.7.0
       Inner text of OSC 66 (Text sizing protocol) is preserved.

    Example::

        >>> strip_sequences('\x1b[31mred\x1b[0m')
        'red'
        >>> strip_sequences('hello')
        'hello'
        >>> strip_sequences('\x1b[1m\x1b[31mbold red\x1b[0m text')
        'bold red text'
        >>> strip_sequences('\x1b]66;s=2;hello\x07')
        'hello'
        >>> strip_sequences('\x1b]8;id=34;https://example.com\x1b\\[view]\x1b]8;;\x1b\\')
        '[view]'
    z]66;z\2Ú )ÚTEXT_SIZING_PATTERNÚsubr   )r   s    r   Ústrip_sequencesr!   ¥   s:   € ð6 �TÐÐÝ"×&Ò& u¨dÑ3Ô3ˆÝ×!Ò! " dÑ+Ô+Ð+r   )Ú__doc__ÚreÚtypingÚ	sgr_stater   Úcompiler   r   ÚCURSOR_RIGHT_SEQUENCEÚCURSOR_LEFT_SEQUENCEÚCURSOR_HPA_SEQUENCEÚCURSOR_MOVEMENT_SEQUENCEÚ_HORIZONTAL_CURSOR_MOVEMENTÚpatternÚreplaceÚ_SEQUENCE_CLASSIFYÚjoinÚINDETERMINATE_EFFECT_SEQUENCEÚstrÚIteratorÚTupleÚboolr   r!   r	   r   r   ú<module>r5      sb  ððð ð 
€	€	€	à €€€ð $Ð #Ð #Ð #Ð #Ð #ð !�b”jØ;ñô Ð ð  �R”Zðñô Ð ð2 #˜œ
 ?Ñ3Ô3Ð ð "�r”z /Ñ2Ô2Ð ð !�b”j Ñ1Ô1Ð ð
 &˜2œ:Ð&9Ñ:Ô:Ð ð
 )˜bœjÐ)EÑFÔFÐ ð
  �R”ZØÔ× Ò  Ð&7¸Ñ;Ô;Ø	ñ
ØÔ'×/Ò/°°\À1ÑEÔEñFà	ñ
à!Ô)×1Ò1°#Ð7HÈ!ÑLÔLñMð 
ñ
ð !Ô(×0Ò0°Ð6HÈ!ÑLÔLñMð 
ñ	
ð eñ	eð
 
ñ
ð
 !ñ!ð
 $6Ô#=ñ>ð
 AEñEñô Ð ð  !+ ¤
Ø‡H‚Hð ð ð 0ð ñ ô ñ ô ñ!ô !Ð ð61,˜ð 1, ¤°´¸cÀ4¸iÔ1HÔ!Ið 1,ð 1,ð 1,ð 1,ðh,˜#ð , #ð ,ð ,ð ,ð ,ð ,ð ,r   