ó
    Ð]j×  ã                   ó$  • S r SSKrSSKrSSKJr  \R
                  " S5      r\R
                  " S5      r\R
                  " S5      r\R
                  " S5      r	\R
                  " S	5      r
\R
                  " S
5      r\R
                  " S5      r\R
                  " \R                  R                  SSS5      S-   \
R                  R                  SSS5      -   S-   \R                  R                  SSS5      -   S-   \	R                  R                  SSS5      -   S-   S-   S-   S-   \R                  -   S-   5      r\R
                  " SR!                  S S 5       5      5      rS\S\R&                  \R(                  \\4      4S jrS\S\4S jrg)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              #   ó.   #   • U  H  nS U S3v •  M     g7f)z(?:Ú)N© )Ú.0Ú_patterns     ÚU/home/mande/repo/quber/.venv/lib/python3.13/site-packages/wcwidth/escape_sequences.pyÚ	<genexpr>r   W   s!   é € ð ò 0 8ˆs�8�*˜AÕò 0ùs   ‚)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              #   ó4  #   • Sn[        U 5      nSnX:  ar  X   nUS:X  a\  X:”  a  XU S4v •  [        R                  X5      nU(       a%  UR                  5       S4v •  UR	                  5       nOUS4v •  US-  nUnOUS-  nX:  a  Mr  X2:  a	  XS S4v •  gg7f)ap  
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€HØ€Mà
‹.Ø‰yˆà�6‹>àÓ"Ø¨#Ð.°Ð6Ò6ô '×,Ñ,¨TÓ7ˆEÞØ—{‘{“} dÐ+Ò+Ø—i‘i“k‘ð ˜T�lÒ"Ø�q‘�Ø‰Mà�1‰HˆCð' �.ð, ÓØ�NÐ# UÐ+Ó+ð  ùs   ‚BBÂ	Bc                 óf   • SU ;   a  [         R                  SU 5      n [        R                  SU 5      $ )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    ¥   s1   € ð6 �TÓÜ"×&Ñ& u¨dÓ3ˆÜ×!Ñ! " dÓ+Ð+ó    )Ú__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      sê  ðñó 
ã õ $ð —j’jØ;óÐ ð —Z’ZðóÐ ð2 Ÿ
š
 ?Ó3Ð ð —z’z /Ó2Ð ð —j’j Ó1Ð ð
 Ÿ:š:Ð&9Ó:Ð ð
 !ŸjšjÐ)EÓFÐ ð
 —Z’ZØ×Ñ× Ñ  Ð&7¸Ó;Ø	ñ
Ø×'Ñ'×/Ñ/°°\À1ÓEñFà	ñ
à!×)Ñ)×1Ñ1°#Ð7HÈ!ÓLñMð 
ñ
ð !×(Ñ(×0Ñ0°Ð6HÈ!ÓLñMð 
ñ	
ð eñ	eð
 
ñ
ð
 !ñ!ð
 $6×#=Ñ#=ñ>ð
 AEñEóÐ ð  !#§
¢
Ø‡H�Hñ ñ 0ó ó ó!Ð ð61,˜ð 1, §¡°·±¸cÀ4¸iÑ1HÑ!Iô 1,ðh,˜#ð , #õ ,r!   