
    Mh1x                    X   d dl mZ d dl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k    sJ es
d dlZd d	lmZ d d
lmZmZmZ d dlmZmZ d dlmZmZmZmZmZ d dlmZ d dlmZm Z  d dl!m"Z" d dl#m$Z$ d dl%m&Z&m'Z' d dl(m)Z)m*Z*m+Z+m,Z,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3 g dZ4dZ5dZ6dZ7dZ8dZ9 G d de1          Z: G d de:          Z; G d d          Z< G d  d!          Z= G d" d#          Z>e	d1d)            Z?e	d2d*            Z@ G d+ d,          ZA G d- d.eA          ZBd3d0ZCdS )4    )annotationsN)abstractmethod)get_running_loop)contextmanager   )SPHINX_AUTODOC_RUNNINGwin32)windll)Arraybyrefpointer)DWORDHANDLE)CallableContextManagerIterableIteratorTextIOrun_in_executor_with_context)create_win32_eventwait_for_handles)KeyPress)Keys)MouseButtonMouseEventType)INPUT_RECORDKEY_EVENT_RECORDMOUSE_EVENT_RECORDSTD_INPUT_HANDLE
EventTypes   )REVERSE_ANSI_SEQUENCES)Input)Vt100Parser)
Win32InputConsoleInputReaderraw_modecooked_modeattach_win32_inputdetach_win32_input   i   c                  B    e Zd ZdZddZeed	d                        ZdS )
_Win32InputBasez;
    Base class for `Win32Input` and `Win32PipeInput`.
    returnNonec                ,    t                      | _        d S N)_Win32Handleswin32_handlesselfs    Z/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/prompt_toolkit/input/win32.py__init__z_Win32InputBase.__init__A   s    *__    r   c                    d S r2    r5   s    r7   handlez_Win32InputBase.handleD   s	     	r9   Nr/   r0   r/   r   )__name__
__module____qualname____doc__r8   propertyr   r<   r;   r9   r7   r.   r.   <   s\         - - - -    ^ X  r9   r.   c                       e Zd ZdZdd fdZddZddZddZd dZe	d!d            Z
ddZddZd"dZd#dZd dZe	d$d            Z xZS )%r&   z<
    `Input` class that reads from the Windows console.
    NstdinTextIO | Noner/   r0   c                    t                                                       t                      | _        |  | j        rt	                      | _        d S t                      | _        d S r2   )superr8   _is_win_vt100_input_enabled_use_virtual_terminal_inputVt100ConsoleInputReaderconsole_input_readerr'   )r6   rE   	__class__s     r7   r8   zWin32Input.__init__O   s`    +F+H+H(O+ 	=(?(A(AD%%%(:(<(<D%%%r9   input_ready_callbackCallable[[], None]ContextManager[None]c                "    t          | |          S )zj
        Return a context manager that makes this input active in the current
        event loop.
        )r*   )r6   rN   s     r7   attachzWin32Input.attachZ   s    
 "$(<===r9   c                     t          |           S )z{
        Return a context manager that makes sure that this input is not active
        in the current event loop.
        )r+   r5   s    r7   detachzWin32Input.detacha   s    
 "$'''r9   list[KeyPress]c                N    t          | j                                                  S r2   )listrL   readr5   s    r7   	read_keyszWin32Input.read_keysh   s    D-2244555r9   c                    d S r2   r;   r5   s    r7   flushzWin32Input.flushk   s    r9   boolc                    dS NFr;   r5   s    r7   closedzWin32Input.closedn   s    ur9   c                ,    t          | j                  S )N) use_win10_virtual_terminal_input)r(   rJ   r5   s    r7   r(   zWin32Input.raw_moder   s    -1-M
 
 
 	
r9   c                    t                      S r2   )r)   r5   s    r7   r)   zWin32Input.cooked_modew   s    }}r9   intc                >    t           j                                        S r2   )sysrE   filenor5   s    r7   rf   zWin32Input.filenoz   s    
 y!!!r9   strc                    dS )Nzwin32-inputr;   r5   s    r7   typeahead_hashzWin32Input.typeahead_hash   s    }r9   c                8    | j                                          d S r2   )rL   closer5   s    r7   rk   zWin32Input.close   s    !'')))))r9   r   c                    | j         j        S r2   )rL   r<   r5   s    r7   r<   zWin32Input.handle   s    (//r9   r2   )rE   rF   r/   r0   )rN   rO   r/   rP   )r/   rP   )r/   rU   r=   r/   r\   )r/   rc   )r/   rg   r>   )r?   r@   rA   rB   r8   rR   rT   rY   r[   rC   r_   r(   r)   rf   ri   rk   r<   __classcell__)rM   s   @r7   r&   r&   J   s@        	= 	= 	= 	= 	= 	= 	=> > > >( ( ( (6 6 6 6       X
 
 
 

   " " " "   * * * * 0 0 0 X0 0 0 0 0r9   r&   c                     e Zd ZdZi dej        dej        dej        dej        dej	        dej
        dej        d	ej        d
ej        dej        dej        dej        dej        dej        dej        dej        dej        i dej        dej        dej        dej        dej        dej        dej        dej        dej        dej        dej         dej!        dej"        d ej#        d!ej$        d"ej%        Z&i d#ej'        d$ej(        d%ej)        d&ej*        d'ej+        d(ej,        d)ej-        d*ej.        d+ej/        d,ej0        d-ej1        d.ej2        d/ej3        d0ej4        d1ej5        d2ej6        d3ej7        ej8        ej9        ej:        ej;        ej<        d4Z=d5Z>d6Z?d7Z@d8ZAd9ZBdWdXd?ZCdYd@ZDdZdBZEd[dEZFd\dKZGeHd]dN            ZIeHd^dP            ZJd_dSZKd`dUZLdVS )ar'   z|
    :param recognize_paste: When True, try to discover paste actions and turn
        the event into a BracketedPaste.
                                      	   
                                                               !   "   #   $   %   &   '   (   -   .   p   q   r   s   t   u   v   )w   x   y   z   {   r   r"         r,   Trecognize_paster\   r/   r0   c                   d | _         || _        |  t          j                                        r8t          t          j                            t                              | _
        d S t          j        dt          j        t          j        z            | _         t          t          j        | j                             | _
        d S )NCONIN$)_fdconr   re   rE   isattyr   r
   kernel32GetStdHandler    r<   osopenO_RDWRO_BINARYmsvcrtget_osfhandle)r6   r   s     r7   r8   zConsoleInputReader.__init__   s    . 	9 	D !=!=>N!O!OPPDKKK'(BI,CDDDK !5dk!B!BCCDKKKr9   c                J    | j         t          j        | j                    dS dS zClose fdcon.Nr   r   rk   r5   s    r7   rk   zConsoleInputReader.close   *    ;"HT[!!!!! #"r9   Iterable[KeyPress]c              #      K   d}t          d          }t          |z  } |            }t           j        gd          sdS t          j                             j        t          |          |t          |                     t           	                    ||                    } fd|D             }t           
                    |                    } j        r                     |          rt          |          }|D ]}g }|rt          |j        t                     r|j        t           j        t           j        hv rx|                    |j                   	 t+          |          }n# t,          $ r d}Y nw xY w|r9t          |j        t                     Y|j        t           j        t           j        hv x|r/t/          t           j        d                    |                    V  ||V  dS |E d{V  dS )
        Return a list of `KeyPress` instances. It won't return anything when
        there was nothing to read.  (This function doesn't block.)

        http://msdn.microsoft.com/en-us/library/windows/desktop/ms684961(v=vs.85).aspx
           r   timeoutNc                :    g | ]}                     |          S r;   )_insert_key_data).0keyr6   s     r7   
<listcomp>z+ConsoleInputReader.read.<locals>.<listcomp>  s'    CCC3D))#..CCCr9    )r   r   r   r<   r
   r   ReadConsoleInputWr   rW   	_get_keys_merge_paired_surrogatesr   	_is_pasteiter
isinstancer   r   ControlJControlMappenddatanextStopIterationr   BracketedPastejoin)	r6   	max_countrX   arrtypeinput_recordsall_keysgenkr   s	   `        r7   rX   zConsoleInputReader.read   s1      	Qxx*		  q999 	F 	))K//GDMM	
 	
 	
 t];;<< DCCC(CCC 55h??@@ 	 DNN8$<$< 	 x..C     !"15$//!u >>>KK'''! II( ! ! ! !  !"15$//!u >>>  G"4#6FFFFF=GGG# &  s   E//E>=E>	key_pressr   c                    |j         r|S t          |j        t                    rt	          j        |j        d          }nd}t          |j        |          S )z@
        Insert KeyPress data, for vt100 compatibility.
        r   )r   r   r   r   r#   getr   )r6   r   r   s      r7   r   z#ConsoleInputReader._insert_key_data*  sU     > 	imT** 	)-imR@@DDD	t,,,r9   rX   r   r   Array[INPUT_RECORD]Iterator[KeyPress]c              #  ~  K   t          |j                  D ]}||         }|j        t          v rt	          |j        t          |j                           }t          |t                    r#|j        r| 	                    |          E d{V  ut          |t                    r|                     |          E d{V  dS )R
        Generator that yields `KeyPress` objects from the input records.
        N)rangevalue	EventTyper!   getattrEventr   r   KeyDown_event_to_key_pressesr   _handle_mouse)r6   rX   r   iirevs         r7   r   zConsoleInputReader._get_keys8  s       tz"" 	6 	6Aq!B |z))RXz",'?@@ b"233 6
 6#99"==========$677 6#11"555555555!	6 	6r9   key_pressesrU   c              #  n  K   d}| D ]}t          |j        t                     }|od|j        cxk    odk    nc }|od|j        cxk    odk    nc }|rO|rG|j        |j        z                       dd                              d          }t          ||          }n|V  d}|r|}|V  |r|V  dS dS )zm
        Combines consecutive KeyPresses with high and low surrogates into
        single characters
        Nu   u   u   u   z	utf-16-lesurrogatepass)r   r   r   encodedecoder   )r   buffered_high_surrogater   is_textis_high_surrogateis_low_surrogatefullchars          r7   r   z+ConsoleInputReader._merge_paired_surrogatesP  s(      #' 	 	C$SWd333G ' KH,K,K,K,K8,K,K,K,K&J8sw+J+J+J+J(+J+J+J+J& /# 	2 14sw>_==,, 
 #8X66CC1111*.'  *-''				" 	*))))))	* 	*r9   keysc                    d}d}| D ];}t          |j        t                    s|dz  }|j        t          j        k    r|dz  }<|dk    o|dk    S )a<  
        Return `True` when we should consider this list of keys as a paste
        event. Pasted text on windows will be turned into a
        `Keys.BracketedPaste` event. (It's not 100% correct, but it is probably
        the best possible way to detect pasting of text and handle that
        correctly.)
        r   r"   )r   r   r   r   )r   
text_countnewline_countr   s       r7   r   zConsoleInputReader._is_pasteq  sh     
 	# 	#AaeT**  a
u%%"!5jAo5r9   r   r   c                	   t          |t                    r|j        sJ d}|j        }|j        j        }|                    dd          }|dk    r/|j        | j        v r t          | j        |j                 d          }nR|| j
        v r9| j
        |         t          j        k    rd}t          | j
        |         |          }nt          ||          }|| j        z  s
|| j        z  r|| j        z  r|rt          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j        t          j         t          j!        i	}|"                    |j#        |j#                  |_#        || j        z  s|| j        z  r|rt          j        t          j$        t          j        t          j%        t          j        t          j&        t          j        t          j'        t          j        t          j(        t          j        t          j)        t          j        t          j*        t          j+        t          j,        t          j        t          j-        t          j         t          j.        i
}|"                    |j#        |j#                  |_#        || j        z  r|rt          j/        t          j0        t          j        t          j1        t          j        t          j2        t          j        t          j3        t          j        t          j4        t          j        t          j5        t          j        t          j6        t          j        t          j7        t          j+        t          j8        t          j        t          j9        t          j         t          j:        i}|"                    |j#        |j#                  |_#        || j        z  s
|| j        z  r'|r%|j;        dk    rt          t          j<        d          }|| j        z  s
|| j        z  r3|r1|j#        t          j        k    rt          t          j=        d          |gS |r+|| j>        z  }|rt          t          j=        d          |gS |gS g S )zU
        For this `KEY_EVENT_RECORD`, return a list of `KeyPress` instances.
        Nzutf-8r    r   
 )?r   r   r   ControlKeyStateuCharUnicodeCharr   VirtualKeyCodekeycodesr   mappingsr   r   LEFT_CTRL_PRESSEDRIGHT_CTRL_PRESSEDSHIFT_PRESSEDLeftControlShiftLeftRightControlShiftRightUpControlShiftUpDownControlShiftDownHomeControlShiftHomeEndControlShiftEndInsertControlShiftInsertPageUpControlShiftPageUpPageDownControlShiftPageDownr   r   ControlLeftControlRight	ControlUpControlDownControlHome
ControlEndControlInsertDeleteControlDeleteControlPageUpControlPageDownTabBackTab	ShiftLeft
ShiftRightShiftUp	ShiftDown	ShiftHomeShiftEndShiftInsertShiftDeleteShiftPageUpShiftPageDownr   ControlSpaceEscapeLEFT_ALT_PRESSED)r6   r   resultcontrol_key_stateu_char
ascii_charmappingmeta_presseds           r7   r   z(ConsoleInputReader._event_to_key_presses  s    ".//>BJ>>>"&.%]]7O<<
 V DM11!$-0A"BBGGT]**=,==  "$-
";VDD!&&11
 "D$::	= %t'>>	=
 "D$66	= 	= 	40
D2,	40	40$.T4T4t8
'G !VZ<<FJ  66	= 4#::	= 	=
 	4+
D-	4+	4+$/T/T/T/t3G !VZ<<FJ t11 	=f 	=$,	4>
DO	4>	4>$-T-T-T-t1G !VZ<<FJ
 "D$::	6 %t'>>	6
 	6 s""d/55F "D$::	7 %t'>>	7
 	7 
dm++T["--v66  		,t/DDL   b116::x Ir9   r   c                2   |j         }|j        }d}t          j        }|t          z  r |dk    rt
          j        }n<t
          j        }n/|t          k    rt          j	        }n|t          k    rt          j        }|t          z  rt
          j        }||dk    rt
          j        }nt
          j        }d                    |j        |j        t%          |j        j                  t%          |j        j                  g          }t-          t.          j        |          gS )zK
        Handle mouse events. Return a list of KeyPress instances.
        Nr   ;)
EventFlagsButtonStater   NONEMOUSE_WHEELEDr   	SCROLL_UPSCROLL_DOWNFROM_LEFT_1ST_BUTTON_PRESSEDLEFTRIGHTMOST_BUTTON_PRESSEDRIGHTMOUSE_MOVED
MOUSE_MOVE
MOUSE_DOWNMOUSE_UPr   r   rg   MousePositionXYr   r   WindowsMouseEvent)r6   r   event_flagsbutton_state
event_typebuttonr   s          r7   r   z ConsoleInputReader._handle_mouse  s    m~,0
). & 	+a+5

+7

 ;;;$)!999$* $ 	3'2J a+6

 ,4
xx B$&''B$&''	
 
 /6677r9   N)T)r   r\   r/   r0   r=   r/   r   )r   r   r/   r   )rX   r   r   r   r/   r   )r   rU   r/   r   )r   rU   r/   r\   )r   r   r/   rU   )r   r   r/   rU   )Mr?   r@   rA   rB   r   r1  r0  ControlAControlBControlCControlDControlEControlFControlGControlHControlIr   ControlKControlLr   ControlNControlOControlPControlQControlRControlSControlTControlUControlVControlWControlXControlYControlZControlBackslashControlSquareCloseControlCircumflexControlUnderscore	Backspacer  r  r  r  r  r  r  r	  r  r  r   F1F2F3F4F5F6F7F8F9F10F11F12r  r2  RIGHT_ALT_PRESSEDr  r  r  r8   rk   rX   r   r   staticmethodr   r   r   r   r;   r9   r7   r'   r'      s        """" 	" 		"
 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"  	!"" 	#" "$ 	%"& 	'"( 	)"* 	+", 	-". 	/"0 	1"2 	3"4 	5"6 	7"8 	9": 	&;"< 	(="> 	'?"@ 	'A"B 	C" "HJ
DK 	DM 	DH	
 	DI 	DI 	DG 	DJ 	DI 	DK 	DK 	TW 	TW  	TW!" 	TW#$ 	TW%& 	TW'( 	TW)* WWXXX3  H8 MD D D D D" " " "
<  <  <  < |- - - -6 6 6 60 * * * \*@ 6 6 6 \6*B B B BH-8 -8 -8 -8 -8 -8r9   r'   c                  2    e Zd ZdZddZddZddZddZdS )rK   a  
    Similar to `ConsoleInputReader`, but for usage when
    `ENABLE_VIRTUAL_TERMINAL_INPUT` is enabled. This assumes that Windows sends
    us the right vt100 escape sequences and we parse those with our vt100
    parser.

    (Using this instead of `ConsoleInputReader` results in the "data" attribute
    from the `KeyPress` instances to be more correct in edge cases, because
    this responds to for instance the terminal being in application cursor keys
    mode.)
    r/   r0   c                    d  _         g  _        t           fd           _          t          j                                        r8t          t          j	        
                    t                               _        d S t          j        dt          j        t          j        z             _         t          t#          j         j                              _        d S )Nc                8    j                             |           S r2   )_bufferr   )r   r6   s    r7   <lambda>z2Vt100ConsoleInputReader.__init__.<locals>.<lambda>M  s    dl11)<< r9   r   )r   r  r%   _vt100_parserre   rE   r   r   r
   r   r   r    r<   r   r   r   r   r   r   r5   s   `r7   r8   z Vt100ConsoleInputReader.__init__H  s    ')(<<<<
 
 	9 	D !=!=>N!O!OPPDKKK'(BI,CDDDK !5dk!B!BCCDKKKr9   c                J    | j         t          j        | j                    dS dS r   r   r5   s    r7   rk   zVt100ConsoleInputReader.closeY  r   r9   r   c                   d}t          d          }t          |z  } |            }t          | j        gd          sg S t          j                            | j        t          |          |t          |                     |                     ||          D ]}| j	        
                    |           | j        }g | _        |S )r   r   r   r   )r   r   r   r<   r
   r   r   r   r   r  feedr  )r6   r   rX   r   r   key_datar3  s          r7   rX   zVt100ConsoleInputReader.read^  s     	Qxx*		  q999 	I 	))K//GDMM	
 	
 	
 t];; 	. 	.H##H---- r9   rX   r   r   r   Iterator[str]c              #    K   t          |j                  D ]o}||         }|j        t          v rWt	          |j        t          |j                           }t          |t                    r|j        r|j	        j
        }|dk    r|V  pdS )r   r   N)r   r   r   r!   r   r   r   r   r   r   r   )r6   rX   r   r   r   r   r5  s          r7   r   z!Vt100ConsoleInputReader._get_keys  s       tz"" 	% 	%Aq!B |z))RXz",'?@@ b"233 %
 %X1F''$	% 	%r9   Nr=   rQ  )rX   r   r   r   r/   r  )r?   r@   rA   rB   r8   rk   rX   r   r;   r9   r7   rK   rK   ;  ss        
 
D D D D"" " " "
# # # #J% % % % % %r9   rK   c                  *    e Zd ZdZddZdd	ZddZdS )r3   a  
    Utility to keep track of which handles are connectod to which callbacks.

    `add_win32_handle` starts a tiny event loop in another thread which waits
    for the Win32 handle to become ready. When this happens, the callback will
    be called in the current asyncio event loop using `call_soon_threadsafe`.

    `remove_win32_handle` will stop this tiny event loop.

    NOTE: We use this technique, so that we don't have to use the
          `ProactorEventLoop` on Windows and we can wait for things like stdin
          in a `SelectorEventLoop`. This is important, because our inputhook
          mechanism (used by IPython), only works with the `SelectorEventLoop`.
    r/   r0   c                "    i | _         i | _        d S r2   )_handle_callbacks_remove_eventsr5   s    r7   r8   z_Win32Handles.__init__  s    @B 24r9   r<   r   callbackrO   c                   j         }|t          d          |                                t                      | j        |<   t                      | j        |<   dfddfdt                     dS )	z7
        Add a Win32 handle to the event loop.
        NInvalid handle.r/   r0   c                 l    	                t                     d S # t                     w xY w)Nloopr   )r  r  waits   r7   readyz-_Win32Handles.add_win32_handle.<locals>.ready  sF    >


,T======,T=====s   
  3c                     t          g          } | u r!t          j                                       d S                                d S r2   )r   r
   r   CloseHandlecall_soon_threadsafe)r3  r<   r  r  remove_events    r7   r  z,_Win32Handles.add_win32_handle.<locals>.wait  sW     &|V&<==F%%++L999))%00000r9   r  r=   )r   
ValueErrorremove_win32_handler   r  r   r  r   )r6   r<   r  handle_valuer  r  r  r  s    `` @@@@r7   add_win32_handlez_Win32Handles.add_win32_handle  s     |./// 	  (((!!/7|, *++,8L)	> 	> 	> 	> 	> 	> 	> 	>		1 		1 		1 		1 		1 		1 		1 		1 		1 	%T555555r9   Callable[[], None] | Nonec                   |j         dS 	 | j                            |j                   }t          j                            |           n# t          $ r Y nw xY w	 | j                            |j                   S # t          $ r Y dS w xY w)zt
        Remove a Win32 handle from the event loop.
        Return either the registered handler or `None`.
        N)r   r  popr
   r   SetEventKeyErrorr  )r6   r<   events      r7   r  z!_Win32Handles.remove_win32_handle  s    
 <4	,'++FL99E O$$U++++  	 	 	D	
	)--fl;;; 	 	 	44	s#   A
 

AAA: :
BBNr=   )r<   r   r  rO   r/   r0   )r<   r   r/   r  )r?   r@   rA   rB   r8   r  r  r;   r9   r7   r3   r3     s[         4 4 4 4)6 )6 )6 )6V     r9   r3   inputr  rO   r/   Iterator[None]c              #  v  K   | j         }| j        }|j        t          d          |                    |          }|                    ||           	 dV  |                    |           |r|                    ||           dS dS # |                    |           |r|                    ||           w w xY w)z
    Context manager that makes this input active in the current event loop.

    :param input: :class:`~prompt_toolkit.input.Input` object.
    :param input_ready_callback: Called when the input is ready to read.
    Nr  r4   r<   r   r  r  r  )r  r  r4   r<   previous_callbacks        r7   r*   r*     s       'M\F|*+++ &99&AA""68444F))&111 	F**63DEEEEE	F 	F 	))&111 	F**63DEEEE	Fs   B 0B8c              #     K   | j         }| j        }|j        t          d          |                    |          }	 d V  |r|                    ||           d S d S # |r|                    ||           w w xY w)Nr  r  )r  r4   r<   r  s       r7   r+   r+     s      'M\F|*+++%99&AAF 	F**63DEEEEE	F 	F 	F**63DEEEE	Fs   A A8c                  6    e Zd ZdZ	 ddd
ZddZddZddZdS )r(   z
    ::

        with raw_mode(stdin):
            ''' the windows terminal is now in 'raw' mode. '''

    The ``fileno`` attribute is ignored. This is to be compatible with the
    `raw_input` method of `.vt100_input`.
    NFrf   
int | Nonera   r\   r/   r0   c                    t          t          j                            t                              | _        || _        d S r2   )r   r
   r   r   r    r<   ra   )r6   rf   ra   s      r7   r8   zraw_mode.__init__,  s2     V_99:JKKLL0P---r9   c                    t                      }t          j                            | j        t          |                     || _        |                                  d S r2   )r   r
   r   GetConsoleModer<   r   original_mode_patch)r6   r  s     r7   	__enter__zraw_mode.__enter__2  sF    &&t{GM4J4JKKK*r9   c                    d}d}d}| j         j        ||z  |z   z  }| j        r
|t          z  }t          j                            | j        |           d S Nr,   r   r"   )r  r   ra   ENABLE_VIRTUAL_TERMINAL_INPUTr
   r   SetConsoleModer<   )r6   ENABLE_ECHO_INPUTENABLE_LINE_INPUTENABLE_PROCESSED_INPUTnew_modes        r7   r  zraw_mode._patch:  sp    ""!'%+ 114JJ/
 
 0 	655H&&t{H=====r9   aobjectc                Z    t           j                            | j        | j                   d S r2   )r
   r   r  r<   r  )r6   r  s     r7   __exit__zraw_mode.__exit__I  s%    &&t{D4FGGGGGr9   r^   )rf   r  ra   r\   r/   r0   r=   )r  r  r/   r0   )r?   r@   rA   rB   r8   r  r  r  r;   r9   r7   r(   r(   !  s          SXQ Q Q Q Q   > > > >H H H H H Hr9   r(   c                      e Zd ZdZddZdS )r)   zx
    ::

        with cooked_mode(stdin):
            ''' The pseudo-terminal stdin is now used in cooked mode. '''
    r/   r0   c                    d}d}d}t           j                            | j        | j        j        ||z  |z  z             d S r  )r
   r   r  r<   r  r   )r6   r  r  r  s       r7   r  zcooked_mode._patchV  s[    ""!'&&K$ #447MMO	
 	
 	
 	
 	
r9   Nr=   )r?   r@   rA   rB   r  r;   r9   r7   r)   r)   N  s2         

 

 

 

 

 

r9   r)   r\   c                    t          t          j                            t                              } t          d          }t          j                            | t          |                     	 t          j                            | t          t                              }|dk    t          j                            | |           S # t          j                            | |           w xY w)z_
    Returns True when we're running Windows and VT100 escape sequences are
    supported.
    r   r"   )
r   r
   r   r   r    r   r  r   r  r  )hconsoler  r3  s      r7   rI   rI   c  s    
 fo223CDDEEH !HHM
O""8U=-A-ABBB@o44e9::
 
 {&&x????&&x????s   /7C "C))r  r.   r  rO   r/   r  )r  r.   r/   r  rm   )D
__future__r   r   re   abcr   asyncior   
contextlibr   utilsr   platformr   ctypesr
   r   r   r   ctypes.wintypesr   r   typingr   r   r   r   r   prompt_toolkit.eventloopr   prompt_toolkit.eventloop.win32r   r   (prompt_toolkit.key_binding.key_processorr   prompt_toolkit.keysr   prompt_toolkit.mouse_eventsr   r   prompt_toolkit.win32_typesr   r   r   r    r!   ansi_escape_sequencesr#   baser$   vt100_parserr%   __all__rA  rC  rE  r>  r  r.   r&   r'   rK   r3   r*   r+   r(   r)   rI   r;   r9   r7   <module>r     s   " " " " " " 				 



       $ $ $ $ $ $ % % % % % % * * * * * *
|w  MMM ( ( ( ( ( ( ( ( ( ( ) ) ) ) ) ) ) ) G G G G G G G G G G G G G G A A A A A A O O O O O O O O = = = = = = $ $ $ $ $ $ C C C C C C C C              : 9 9 9 9 9       % % % % % %    #   !'     e   ?0 ?0 ?0 ?0 ?0 ?0 ?0 ?0Dl8 l8 l8 l8 l8 l8 l8 l8^]% ]% ]% ]% ]% ]% ]% ]%@U U U U U U U Up F F F F8 F F F F *H *H *H *H *H *H *H *HZ
 
 
 
 
( 
 
 
*@ @ @ @ @ @r9   