o
    o_6                     @   sX  d dl mZmZ 	 d dlZzd dlmZ W n ey$   d dlmZ Y nw d dlm	Z	m
Z
 d dlZejZdZdZdZd	Zd
ZdZdZi ZeeeeksTJ eeefeeeD ]\ZZee e eee< qYede Zede ZG dd deZdd Z g ddd eddD  dd eddD  dd e!dD  dd dD  dd d D  d!d d D  d"d#g Z"G d$d% d%e#Z$d&Z%d'Z&d(Z'd)Z(e$e"Z)i d*dd+d,d-d.dd/d0d/d1d,d2d3d4d5d6d7d8d9d:d;d<d,d=d>d?d@dAdBdCdDdEdFi dGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdnd/dodpdq	Z*drds Z+dtZ,e,du Z-dvZ.e,dw Z/e,dx Z0e,dy e, dz Z1e,d{ e, d| Z2e,d} Z3e,d~ Z4e,d Z5e,d Z6dd Z7dd Z8dd Z9dd Z:e,d Z;e,d Z<e,d e, d Z=e,d e, d Z>e,d Z?e,d Z@dS )    )divisionprint_functionN)str_util)old_str_util)bytesbytes3z[11mz[10m0u[   ▮◆▒␉␌␍␊°±␤␋┘┐┌└┼⎺⎻─⎼⎽├┤┴┬│≤≥π≠£·z _`abcdefghijklmnopqrstuvwxyz{|}~z
^[ -~%s]*$z[%s]c                   @   s   e Zd ZdS )MoreInputRequiredN)__name__
__module____qualname__ r   r   ./usr/lib/python3/dist-packages/urwid/escape.pyr   B   s    r   c                 C   s<   t | t d }d|d@  d|d@ d   d|d@ d   S )N1shift    meta    ctrl    )ord)digitmoder   r   r   escape_modifierE   s   ,r   );)z[Aup)z[Bdown)z[Cright)z[Dleft)z[E5)z[Fend)z[Gr    )[Hhome)z[1~r#   )z[2~insert)z[3~delete)z[4~r!   )z[5~page up)z[6~	page down)z[7~r#   )z[8~r!   )z[[Af1)z[[Bf2)z[[Cf3)z[[Df4)z[[Ef5)z[11~r(   )z[12~r)   )z[13~r*   )z[14~r+   )z[15~r,   )z[17~f6)z[18~f7)z[19~f8)z[20~f9)z[21~f10)z[23~f11)z[24~f12)z[25~f13)z[26~f14)z[28~f15)z[29~f16)z[31~f17)z[32~f18)z[33~f19)z[34~f20)OAr   )OBr   )OCr   )ODr   )OHr#   )OFr!   )OPr(   )OQr)   )ORr*   )OSr+   )Oo/)Oj*)Om-)Ok+)z[Zz	shift tab)On.)z[200~zbegin paste)z[201~z	end pastec                 C   s4   g | ]\}}t d dD ]\}}|| || fqqS )abcd)r   r   r   r   zip).0prefixmodifierletterkeyr   r   r   
<listcomp>c   s    rX   zO[)r   r   c                 C   s8   g | ]\}}t d dD ]\}}d| | || fqqS )235678)r$   r%   r&   r'   r#   r!   [rQ   )rS   rU   symbolr   rW   r   r   r   rX   g   s    )r   r   z$^c                 C   s(   g | ]}d t td|  t|fqS )Op)chrr   str)rS   nr   r   r   rX   l   s    
   c                 C   sB   g | ]}d D ]}t ddD ]\}}|| | t|| fqqqS )12345678ABCDEFGH)r   r   r   r   r    r!   r    r#   rR   r   )rS   rT   r   rV   rW   r   r   r   rX   n   s    
)rZ   z[1;c                 C   s8   g | ]}t d dD ]\}}d| | t|| fq	qS )PQRS)r(   r)   r*   r+   r\   rd   )rS   r   rV   rW   r   r   r   rX   u   s    rb   c                 C   sD   g | ]}t d dD ]\}}dt| d | d t|| fq	qS ))                                                                !   "   )r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   rZ   ;~)rR   r_   r   )rS   r   numrW   r   r   r   rX   z   s    ")z[Mmouse)z[0nz	status okc                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )KeyqueueTriec                 C   s8   i | _ |D ]\}}t|tksJ | | j || qd S N)datatypedictadd)self	sequencessresultr   r   r   __init__   s
   zKeyqueueTrie.__init__c                 C   s   t |tks
J dt|dksJ dt|d |v r-| |t|d  |dd  |S t|dkrHi }||t|d < | ||dd  |S ||t|< d S )Nztrie conflict detectedr   r   )r   r   lenr   r   )r   rootr   r   dr   r   r   r      s   "zKeyqueueTrie.addc                 C   s$   |  | j||}|s| ||}|S r   )get_recurser   read_cursor_position)r   keysmore_availabler   r   r   r   get   s   zKeyqueueTrie.getc                 C   sh   t |tkr|dkr| ||S ||fS |s|rt d S |d |vr%d S | ||d  |dd  |S )Nr   r   r   )r   r   read_mouse_infor   r   )r   r   r   r   r   r   r   r      s   zKeyqueueTrie.get_recursec           	      C   s,  t |dk r|rt d S |d d }|d d d |d d d }}d}|d	@ r.|d
 }|d@ r6|d }|d@ r>|d }|t@ d? dkrJ|d }|t@ d? dkrV|d }|d@ d d |d@  d }|d@ dkrod}d}n|t@ rvd}n|t@ r}d}n	|t@ rd}nd}|d | |||f|dd  fS )Nrf   r   rz   r   r{      r    r   r      r      r   	   zdouble ztriple @   releasedragclickpresszmouse )r   r   MOUSE_MULTIPLE_CLICK_MASKMOUSE_RELEASE_FLAGMOUSE_DRAG_FLAG)	r   r   r   bxyrT   buttonactionr   r   r   r      s0   " zKeyqueueTrie.read_mouse_infoc                 C   s|  |s	|rt  dS |d tdkrdS d}d}||d D ]7}|d7 }|tdkr0|s. dS  n%|tdk s<|tdkr? dS |sJ|tdkrJ dS |d | td }q||d sb|r`t  dS d}||d D ]F}|d7 }|td	kr|s{ dS d
|d |d f||d f  S |tdk s|tdkr dS |s|tdkr dS |d | td }qj||d s|rt  dS )z
        Interpret cursor position information being sent by the
        user's terminal.  Returned as ('cursor position', x, y)
        where (x, y) == (0, 0) is the top left of the screen.
        Nr   rZ   r   r}   r
   9ra   Rzcursor position)r   r   )r   r   r   r   ikr   r   r   r   r      sN   "z!KeyqueueTrie.read_cursor_positionN)	r   r   r   r   r   r   r   r   r   r   r   r   r   r      s    !r   i   i   i   rz   r   	backspacer   tabenterrk      i  r   i  r   i  r   i  r   i  r#   i  i	  r(   i
  r)   i  r*   i  r+   i  r,   i  r-   i  r.   i  r/   i  r0   i  r1   i  r2   i  r3   i  zshift f1i  zshift f2i  zshift f3i  zshift f4i  zshift f5i  zshift f6i  zshift f7i  zshift f8i  zshift f9i  z	shift f10z	shift f11z	shift f12r%   r$   r'   r&   r    r!   )	i  i   iJ  iK  iR  iS  iW  i^  ih  c                 C   s  | d }|dkr|dkrt |}|g| dd fS |tv r(t| g| dd fS |dkrC|dk rCdt td| d  g| dd fS |dkr^|dk r^dt td	| d  g| dd fS t }|d
kr|dk rtt |ddr| dd s}|r}t | dd r| d dk rt |t | d  }t|ddr|g| dd fS |dkrN|dkrN|dk rN|d@ dkrd}n|d@ dkrd}n|d@ dkrd}nd| g| dd fS t|D ];}t| d |kr|rt d| g| dd f  S | |d  }|dks	|d@ dkrd| g| dd f  S qt	| d|d  }	t
|	ts)J z|	dg| |d d fW S  tyM   d| g| dd f Y S w |dkre|dk ret |}|g| dd fS |dkrud| g| dd fS t| dd |}
|
dur|
\}
}|
g|fS | dd rt| dd |\}}tj|d rdg| |fS |d dks|d ddkrdg| |fS d|d  g|dd  |fS dg| dd fS )a)  
    codes -- list of key codes
    more_available -- if True then raise MoreInputRequired when in the
        middle of a character sequence (escape/utf8/wide) and caller
        will attempt to send more key codes on the next call.

    returns (list of input, list of remaining key codes).
    r   rz   ~   r   N   zctrl %saAwider   r   utf8r               rf   z<%d>   zutf-8escr   )r^   _keyconvr   r   get_byte_encodingwithin_double_byter   ranger   r   
isinstancer   decodeUnicodeDecodeError
input_trier   process_keyqueueurwidutilis_mouse_eventfind)codesr   coderW   emdb	need_morer   r   r   r   remaining_codesrunr   r   r   r   <  s   	&&


"r   r"   =>7z[?47hz[?47l8z[5nz[6nz[4hz[4lc                 C   s8   t | tksJ t |tksJ td|d | d f  S )Nz[%d;%dHr   )r   intESC)r   r   r   r   r   set_cursor_position  s   r   c                 C      | dk rdS t d|   S )Nr   r   z[%dCr   r   r   r   r   move_cursor_right     r   c                 C   r   )Nr   r   z[%dAr   r   r   r   r   move_cursor_up  r   r   c                 C   r   )Nr   r   z[%dBr   r   r   r   r   move_cursor_down  r   r   z[?25lz[?25hz[?1000hz[?1002hz[?1002lz[?1000lz)0z[K)A
__future__r   r   rer   r   ImportErrorr   urwid.compatr   r   
urwid.utilr   SOSIIBMPC_ON	IBMPC_OFFDEC_TAGDEC_SPECIAL_CHARSALT_DEC_SPECIAL_CHARSDEC_SPECIAL_CHARMAPr   reprrR   caltr   compileSAFE_ASCII_DEC_SPECIAL_REDEC_SPECIAL_RE	Exceptionr   r   r   input_sequencesobjectr   r   r   MOUSE_MULTIPLE_CLICK_FLAGr   r   r   r   r   CURSOR_HOMECURSOR_HOME_COLAPP_KEYPAD_MODENUM_KEYPAD_MODESWITCH_TO_ALTERNATE_BUFFERRESTORE_NORMAL_BUFFERREPORT_STATUSREPORT_CURSOR_POSITION	INSERT_ON
INSERT_OFFr   r   r   r   HIDE_CURSORSHOW_CURSORMOUSE_TRACKING_ONMOUSE_TRACKING_OFFDESIGNATE_G1_SPECIALERASE_IN_LINE_RIGHTr   r   r   r   <module>   sB   "$+0;@~	
X