ó
    •JÕiŒ	  ã                   ó   • S SK r S SKrS SKrSSKJrJr  SSKJr  \ R                  " S5      r\ R                  " S5      r	\
R                  SSS.5      r\R                  S	\
S
\4S j5       rS\
S
\4S jrSS\
S\S
\
4S jjrS\
S
\\\4   4S jrg)é    Né   )Ú
CharBufferÚ
CharWidths)Útracez\x1b\[[ -@]*[A-~]z\x01.*?\x02Ú )ÚÚÚcÚreturnc                 óÜ   • [        U 5      S:  a  g[        R                  " U 5      (       a  g[        R                  " U 5      nUS:X  a  U S:w  a  g[        R                  " U 5      nUS;   a  gg)Né€   r   r   ÚCfô   Â­)ÚNÚNaÚHÚAé   )ÚordÚunicodedataÚ	combiningÚcategoryÚeast_asian_width)r
   r   Úws      ÚLib\_pyrepl\utils.pyÚ	str_widthr      sd   € ä
ˆ1ƒv�ƒ|Øä×Ò˜Q×ÑØÜ×#Ò# AÓ&€HØ�4Ó˜A ›MØÜ×$Ò$ QÓ'€AØÐ!Ó!ØØó    Úsc                 óâ   • [        U 5      S:X  a  U S:w  a  [        U 5      $ [        S U  5       5      n[        R	                  U 5      nU R                  S5      nU[        S U 5       5      -
  U-   $ )Nr   Úc              3   ó8   #   • U  H  n[        U5      v •  M     g 7f©N)r   ©Ú.0Úis     r   Ú	<genexpr>Úwlen.<locals>.<genexpr>    s   é € Ð)¢q !”˜1—�¢qùó   ‚c              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr"   )Úlenr#   s     r   r&   r'   $   s   é € Ð1ª 1œ˜AŸ˜ªùr(   )r*   r   ÚsumÚANSI_ESCAPE_SEQUENCEÚfindallÚcount)r   ÚlengthÚsequenceÚ
ctrl_z_cnts       r   Úwlenr2      se   € Ü
ˆ1ƒv�ƒ{�q˜F“{Ü˜‹|ÐÜÑ)¡qÓ)Ó)€Fä#×+Ñ+¨AÓ.€HØ—‘˜“€JØ”CÑ1©Ó1Ó1Ñ1°JÑ>Ð>r   Úincluding_contentc                 óf   • U(       a  [         R                  SU 5      $ U R                  [        5      $ )zƒReturn `s` with \001 and \002 characters removed.

If `including_content` is True, content between \001 and \002 is also
stripped.
r   )ÚZERO_WIDTH_BRACKETÚsubÚ	translateÚZERO_WIDTH_TRANS)r   r3   s     r   Ú	unbracketr9   '   s*   € ö Ü!×%Ñ% b¨!Ó,Ð,Ø�;‰;Ô'Ó(Ð(r   Úbufferc                 ó8  • / n/ nU (       d  X4$ U  Hð  nUS:X  a$  UR                  U5        UR                  S5        M-  [        U5      S:  a$  UR                  U5        UR                  S5        M`  [        R                  " U5      R	                  S5      (       a;  S[        U5      -  nUR                  U5        UR                  [        U5      5        MÅ  UR                  U5        UR                  [        U5      5        Mò     [        S[        U 5      XS9  X4$ )	a6  Decompose the input buffer into a printable variant.

Returns a tuple of two lists:
- the first list is the input buffer, character by character;
- the second list is the visible width of each character in the input
  buffer.

Examples:
>>> utils.disp_str("a = 9")
(['a', ' ', '=', ' ', '9'], [1, 1, 1, 1, 1])
r    r   r   r   ÚCz\u%04xzdisp_str({buffer}) = {s}, {b})r:   r   Úb)	Úappendr   r   r   Ú
startswithr*   r   r   Úrepr)r:   ÚcharsÚchar_widthsr
   s       r   Údisp_strrC   2   sè   € ð €EØ €KæØÐ!Ð!ãˆØ�‹;Ø�L‰L˜ŒOØ×Ñ˜qÖ!Ü�‹V�c‹\Ø�L‰L˜ŒOØ×Ñ˜qÖ!Ü×!Ò! !Ó$×/Ñ/°×4Ñ4ØœC ›FÑ"ˆAØ�L‰L˜ŒOØ×Ñœs 1›vÖ&à�L‰L˜ŒOØ×Ñœy¨›|Ö,ñ ô 
Ð
)´$°v³,À%ÒWØÐÐr   )F)Úrer   Ú	functoolsÚtypesr   r   r   Úcompiler,   r5   ÚstrÚ	maketransr8   ÚcacheÚintr   r2   Úboolr9   ÚtuplerC   © r   r   Ú<module>rO      s·   ðÛ 	Û Û ç )Ý à—z’zÐ"6Ó7Ð Ø—Z’Z Ó/Ð Ø—=‘=¨"°bÑ!9Ó:Ð ð ‡�ð�ð ˜ó ó ðð?ˆCð ?�Cô ?ñ)�ð )¨ð )¸#õ )ð!�Sð !˜U :¨zÐ#9Ñ:õ !r   