§
    ŒŸjoX  ã                  óV  — d dl mZ d dlZej        dk    sJ ‚d dlZd dlmZmZmZm	Z	m
Z
mZmZ d dlmZmZ d dlmZ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 d dlmZmZm Z m!Z!m"Z" ddl#m$Z$ ddl%m&Z& ddl'm(Z( e$sd dlm)Z) dgZ*d(d„Z+dZ,dZ- G d„ de.¦  «        Z/ ed¦  «        Z0 G d„ de&¦  «        Z1 G d„ d¦  «        Z2 G d „ d!¦  «        Z3d)d%„Z4 e4e2¦  «        Z5 e4e3¦  «        Z6 e7e5¦  «         e7e¦  «        k    sJ ‚ e7e6¦  «         e7e¦  «        k    sJ ‚ G d&„ d'¦  «        Z8dS )*é    )ÚannotationsNÚwin32)ÚArgumentErrorÚbyrefÚc_charÚc_longÚc_uintÚc_ulongÚpointer)ÚDWORDÚHANDLE)ÚCallableÚTextIOÚTypeVar)ÚCursorShape)ÚSize)ÚANSI_COLOR_NAMESÚAttrs)Ú
get_cwidth)ÚCONSOLE_SCREEN_BUFFER_INFOÚCOORDÚ
SMALL_RECTÚSTD_INPUT_HANDLEÚSTD_OUTPUT_HANDLEé   )ÚSPHINX_AUTODOC_RUNNINGé   )ÚOutput)Ú
ColorDepth)ÚwindllÚWin32OutputÚcoordr   Úreturnr   c                óF   — t          | j        dz  | j        dz  z  ¦  «        S )aI  
    Turns a COORD object into a c_long.
    This will cause it to be passed by value instead of by reference. (That is what I think at least.)

    When running ``ptipython`` is run (only with IPython), we often got the following error::

         Error in 'SetConsoleCursorPosition'.
         ArgumentError("argument 2: <class 'TypeError'>: wrong type",)
     argument 2: <class 'TypeError'>: wrong type

    It was solved by turning ``COORD`` parameters into a ``c_long`` like this.

    More info: http://msdn.microsoft.com/en-us/library/windows/desktop/ms686025(v=vs.85).aspx
    i   iÿÿ  )r   ÚYÚX)r"   s    úh/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/prompt_toolkit/output/win32.pyÚ_coord_byvalr(   '   s%   € õ �%”'˜GÑ# e¤g°Ñ&6Ñ6Ñ7Ô7Ð7ó    Fz!prompt-toolkit-windows-output.logc                  ó$   ‡ — e Zd ZdZdˆ fd„Zˆ xZS )ÚNoConsoleScreenBufferErrorz�
    Raised when the application is not running inside a Windows Console, but
    the user tries to instantiate Win32Output.
    r#   ÚNonec                óâ   •— dt           j                             dd¦  «        v }|r&d                     t           j        d         ¦  «        }nd}t	          ¦   «                              |¦  «         d S )NÚxtermÚTERMÚ zÏFound {}, while expecting a Windows console. Maybe try to run this program using "winpty" or run it in cmd.exe instead. Or otherwise, in case of Cygwin, use the Python executable that is compiled for Cygwin.z2No Windows console found. Are you running cmd.exe?)ÚosÚenvironÚgetÚformatÚsuperÚ__init__)Úselfr.   ÚmessageÚ	__class__s      €r'   r6   z#NoConsoleScreenBufferError.__init__F   sn   ø€ à�2œ:Ÿ>š>¨&°"Ñ5Ô5Ð5ˆàð 		Kð/÷ 06ªvµb´jÀÔ6HÑ/IÔ/Ið ˆGð KˆGÝ‰Œ×Ò˜Ñ!Ô!Ð!Ð!Ð!r)   ©r#   r,   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r6   Ú__classcell__)r9   s   @r'   r+   r+   @   sG   ø€ € € € € ðð ð
"ð "ð "ð "ð "ð "ð "ð "ð "ð "r)   r+   Ú_Tc                  óJ  — e Zd ZdZ	 	 dIdJd„ZdKd„ZdLd„ZdMd„ZdMd„ZdNd„Z	dOd„Z
dPd„ZdQd „ZdRd!„ZdRd"„ZdRd#„ZdRd$„ZdSd(„ZdRd)„ZdTd.„ZdRd/„ZdRd0„ZdUdVd4„ZdWd6„ZdWd7„ZdWd8„ZdWd9„ZdRd:„ZdKd;„ZdRd<„ZdRd=„ZdRd>„ZdRd?„Z dRd@„Z!dRdA„Z"dRdB„Z#dXdE„Z$dRdF„Z%e&dRdG„¦   «         Z'dYdH„Z(dS )Zr!   zW
    I/O abstraction for rendering to Windows consoles.
    (cmd.exe and similar.)
    FNÚstdoutr   Úuse_complete_widthÚboolÚdefault_color_depthúColorDepth | Noner#   r,   c                óz  — || _         || _        g | _        || _        t	          t
          j                             t          ¦  «        ¦  «        | _	        d| _
        d| _        t          ¦   «         | _        |                      ¦   «         }|r|j        nd| _        t"          rt%          t&          d¦  «        | _        d S d S )NFé   Úab)rC   rE   Ú_bufferrB   r   r    Úkernel32ÚGetStdHandler   ÚhconsoleÚ_in_alternate_screenÚ_hiddenÚColorLookupTableÚcolor_lookup_tableÚget_win32_screen_buffer_infoÚwAttributesÚdefault_attrsÚ_DEBUG_RENDER_OUTPUTÚopenÚ_DEBUG_RENDER_OUTPUT_FILENAMEÚLOG)r7   rB   rC   rE   Úinfos        r'   r6   zWin32Output.__init__`   s²   € ð #5ˆÔØ#6ˆÔ à"$ˆŒØ$ˆŒÝ�vœ×;Ò;Õ<MÑNÔNÑOÔOˆŒà$)ˆÔ!ØˆŒå"2Ñ"4Ô"4ˆÔð ×0Ò0Ñ2Ô2ˆØ15Ð=˜TÔ-Ð-¸2ˆÔåð 	AÝÕ9¸4Ñ@Ô@ˆDŒHˆHˆHð	Að 	Ar)   Úintc                ó4   — | j                              ¦   «         S )zReturn file descriptor.)rB   Úfileno©r7   s    r'   r\   zWin32Output.filenoy   s   € àŒ{×!Ò!Ñ#Ô#Ð#r)   Ústrc                ó   — | j         j        S )z Return encoding used for stdout.)rB   Úencodingr]   s    r'   r`   zWin32Output.encoding}   s   € àŒ{Ô#Ð#r)   Údatac                ól   — | j         rdt          |¦  «        z  }| j                             |¦  «         d S )Nú )rO   r   rJ   Úappend©r7   ra   s     r'   ÚwritezWin32Output.write�   s:   € ØŒ<ð 	*Ø� DÑ)Ô)Ñ)ˆDàŒ×Ò˜DÑ!Ô!Ð!Ð!Ð!r)   c                ó0   — |                       |¦  «         dS )z>For win32, there is no difference between write and write_raw.N)rf   re   s     r'   Ú	write_rawzWin32Output.write_raw‡   s   € à�
Š
�4ÑÔÐÐÐr)   r   c                ó  — |                       ¦   «         }| j        r|j        j        }n|j        j        |j        j        z
  }|j        j        |j        j        z
  dz   }|j        j        dz
  }t          ||¦  «        }t          ||¬¦  «        S )Nr   )ÚrowsÚcolumns)rR   rC   ÚdwSizer&   ÚsrWindowÚRightÚLeftÚBottomÚTopÚminr   )r7   rY   ÚwidthÚheightÚmaxwidths        r'   Úget_sizezWin32Output.get_size‹   sŒ   € Ø×0Ò0Ñ2Ô2ˆð
 Ô"ð 	=Ø”K”MˆEˆEà”MÔ'¨$¬-Ô*<Ñ<ˆEà”Ô%¨¬Ô(9Ñ9¸AÑ=ˆð ”;”= 1Ñ$ˆÝ�H˜eÑ$Ô$ˆõ ˜¨Ð/Ñ/Ô/Ð/r)   ÚfuncúCallable[..., _T]ÚaÚobjectÚkwr@   c           
     óÐ  — |                       ¦   «          t          rî| j                             |j        ›                     ¦   «         dz   ¦  «         | j                             dd                     d„ |D ¦   «         ¦  «                             d¦  «        z   dz   ¦  «         | j                             dd                     d„ |D ¦   «         ¦  «                             d¦  «        z   dz   ¦  «         | j                              ¦   «          	  ||i |¤ŽS # t          $ rH}t          r;| j                             d|j        ›d|›d|› d	�                     ¦   «         ¦  «         ‚ d
}~ww xY w)z2
        Flush and call win API function.
        ó   
s        z, c                ó   — g | ]}|›‘ŒS © r   ©Ú.0Úis     r'   ú
<listcomp>z'Win32Output._winapi.<locals>.<listcomp>¨   s   € Ð%:Ð%:Ð%:°1¨ hÐ%:Ð%:Ð%:r)   zutf-8c                ó.   — g | ]}t          |¦  «        ›‘ŒS r   )Útyper€   s     r'   rƒ   z'Win32Output._winapi.<locals>.<listcomp>¬   s    € Ð7Ð7Ð7°¥ Q¡¤˜^Ð7Ð7Ð7r)   z    Error in rc   ú
N)ÚflushrU   rX   rf   r;   ÚencodeÚjoinr   )r7   rw   ry   r{   Úes        r'   Ú_winapizWin32Output._winapiŸ   s|  € ð 	�
Š
‰Œˆåð 
	ØŒH�NŠN˜tœ}Ð0×8Ò8Ñ:Ô:¸UÑBÑCÔCÐCØŒH�NŠNØ˜4Ÿ9š9Ð%:Ð%:¸Ð%:Ñ%:Ô%:Ñ;Ô;×BÒBÀ7ÑKÔKÑKÈeÑSñô ð ð ŒH�NŠNØØ—)’)Ð7Ð7°QÐ7Ñ7Ô7Ñ8Ô8×?Ò?ÀÑHÔHñIàññô ð ð
 ŒH�NŠNÑÔÐð	Ø�4˜�>˜b�>�>Ð!øÝð 	ð 	ð 	Ý#ð YØ”—’Ð M°´Ð MÐ MÀ!Ð MÐ MÈÐ MÐ MÐ M×UÒUÑWÔWÑXÔXÐXàøøøøð		øøøs   ÄD Ä
E%ÄAE Å E%r   c                óÀ   — |                       ¦   «          t          ¦   «         }t          j                             | j        t          |¦  «        ¦  «        }|r|S t          ‚)z,
        Return Screen buffer info.
        )r‡   r   r    rK   ÚGetConsoleScreenBufferInforM   r   r+   )r7   ÚsbinfoÚsuccesss      r'   rR   z(Win32Output.get_win32_screen_buffer_info¹   sU   € ð, 	�
Š
‰ŒˆÝ+Ñ-Ô-ˆÝ”/×<Ò<ØŒM�5 ™=œ=ñ
ô 
ˆð ð 	-ØˆMå,Ð,r)   Útitlec                óP   — |                       t          j        j        |¦  «         dS )z%
        Set terminal title.
        N©r‹   r    rK   ÚSetConsoleTitleW)r7   r�   s     r'   Ú	set_titlezWin32Output.set_titleÝ   s#   € ð 	�Š•V”_Ô5°uÑ=Ô=Ð=Ð=Ð=r)   c                óP   — |                       t          j        j        d¦  «         d S )Nr0   r’   r]   s    r'   Úclear_titlezWin32Output.clear_titleã   s!   € Ø�Š•V”_Ô5°rÑ:Ô:Ð:Ð:Ð:r)   c                óÚ   — t          dd¦  «        }|                      ¦   «         }|j        j        |j        j        z  }|                      dd¬¦  «         |                      ||¦  «         d S )Nr   )ÚrowÚcolumn)r   rR   rl   r&   r%   Úcursor_gotoÚ_erase)r7   ÚstartrŽ   Úlengths       r'   Úerase_screenzWin32Output.erase_screenæ   se   € Ý�a˜‘”ˆØ×2Ò2Ñ4Ô4ˆØ”” 6¤=¤?Ñ2ˆà×Ò˜Q qÐÑ)Ô)Ð)Ø�Š�E˜6Ñ"Ô"Ð"Ð"Ð"r)   c                óÎ   — |                       ¦   «         }|j        }|j        }|j        |j        z
  |j        |j        |j        j        z
  z  z   }|                      ||¦  «         d S ©N)rR   rl   ÚdwCursorPositionr&   r%   r›   )r7   rŽ   Úsizerœ   r�   s        r'   Ú
erase_downzWin32Output.erase_downî   sb   € Ø×2Ò2Ñ4Ô4ˆØŒ}ˆàÔ'ˆØ”&˜4œ6‘/ T¤V¨t¬v¸Ô8OÔ8QÑ/QÑ%RÑRˆà�Š�E˜6Ñ"Ô"Ð"Ð"Ð"r)   c                óš   — |                       ¦   «         }|j        }|j        j        |j        j        z
  }|                      ||¦  «         dS )r0   N)rR   r¡   rl   r&   r›   )r7   rŽ   rœ   r�   s       r'   Úerase_end_of_linezWin32Output.erase_end_of_line÷   sI   € à×2Ò2Ñ4Ô4ˆØÔ'ˆØ”” 6Ô#:Ô#<Ñ<ˆà�Š�E˜6Ñ"Ô"Ð"Ð"Ð"r)   rœ   r   r�   c           
     ó¨  — t          ¦   «         }|                      t          j        j        | j        t          d¦  «        t          |¦  «        t          |¦  «        t          |¦  «        ¦  «         |  
                    ¦   «         }|                      t          j        j        | j        |j        |t          |¦  «        t          |¦  «        ¦  «         d S )Nó    )r
   r‹   r    rK   ÚFillConsoleOutputCharacterArM   r   r   r(   r   rR   ÚFillConsoleOutputAttributerS   )r7   rœ   r�   Úchars_writtenrŽ   s        r'   r›   zWin32Output._eraseÿ   sµ   € Ý™	œ	ˆà�ŠÝŒOÔ7ØŒMÝ�4‰LŒLÝ�&‰MŒMÝ˜ÑÔÝ�-Ñ Ô ñ	
ô 	
ð 	
ð ×2Ò2Ñ4Ô4ˆØ�ŠÝŒOÔ6ØŒMØÔØÝ˜ÑÔÝ�-Ñ Ô ñ	
ô 	
ð 	
ð 	
ð 	
r)   c                ót   — |                       t          j        j        | j        | j        ¦  «         d| _        dS )z.Reset the console foreground/background color.FN)r‹   r    rK   ÚSetConsoleTextAttributerM   rT   rO   r]   s    r'   Úreset_attributeszWin32Output.reset_attributes  s6   € à�ŠÝŒOÔ3°T´]ÀDÔDVñ	
ô 	
ð 	
ð ˆŒˆˆr)   Úattrsr   Úcolor_depthr   c           
     óŽ  — |\
  }}}}}}}	}
}}t          |¦  «        | _        | j        }|t          j        k    rH|r"|dz  }|| j                             |¦  «        z  }|r"|dz  }|| j                             |¦  «        z  }|
r|dz  |dz  dz  z  |dz  dz	  z  }|                      t          j
        j        | j        |¦  «         d S )Niðÿÿÿiÿÿÿi ÿÿÿrH   é   éð   )rD   rO   rT   r   ÚDEPTH_1_BITrQ   Úlookup_fg_colorÚlookup_bg_colorr‹   r    rK   r¬   rM   )r7   r®   r¯   ÚfgcolorÚbgcolorÚboldÚ	underlineÚstrikeÚitalicÚblinkÚreverseÚhiddenÚdimÚ	win_attrss                 r'   Úset_attributeszWin32Output.set_attributes  s  € ð ñ	
ØØØØØØØØØØå˜F‘|”|ˆŒð Ô+ˆ	à�*Ô0Ò0Ð0àð NØ%¨Ñ,�	Ø˜TÔ4×DÒDÀWÑMÔMÑM�	ð ð NØ%¨Ñ-�	Ø˜TÔ4×DÒDÀWÑMÔMÑM�	ð ð 	à˜UÑ"Ø ‘O¨Ñ)ñ+à Ñ$¨Ñ*ñ,ð ð 	�Š•V”_Ô<¸d¼mÈYÑWÔWÐWÐWÐWr)   c                ó   — d S r    r   r]   s    r'   Údisable_autowrapzWin32Output.disable_autowrapD  ó   € àˆr)   c                ó   — d S r    r   r]   s    r'   Úenable_autowrapzWin32Output.enable_autowrapH  rÄ   r)   r   r˜   r™   c                ó˜   — t          ||¬¦  «        }|                      t          j        j        | j        t          |¦  «        ¦  «         d S ©N©r&   r%   )r   r‹   r    rK   ÚSetConsoleCursorPositionrM   r(   )r7   r˜   r™   Úposs       r'   rš   zWin32Output.cursor_gotoL  sK   € Ý�f Ð$Ñ$Ô$ˆØ�ŠÝŒOÔ4°d´mÅ\ÐRUÑEVÔEVñ	
ô 	
ð 	
ð 	
ð 	
r)   Úamountc                óä   — |                       ¦   «         j        }t          |j        |j        |z
  ¬¦  «        }|                      t          j        j        | j	        t          |¦  «        ¦  «         d S rÈ   )rR   r¡   r   r&   r%   r‹   r    rK   rÊ   rM   r(   ©r7   rÌ   ÚsrrË   s       r'   Ú	cursor_upzWin32Output.cursor_upR  sg   € Ø×.Ò.Ñ0Ô0ÔAˆÝ�b”d˜bœd V™mÐ,Ñ,Ô,ˆØ�ŠÝŒOÔ4°d´mÅ\ÐRUÑEVÔEVñ	
ô 	
ð 	
ð 	
ð 	
r)   c                ó2   — |                       | ¦  «         d S r    )rÐ   ©r7   rÌ   s     r'   Úcursor_downzWin32Output.cursor_downY  s   € Ø�Š˜�wÑÔÐÐÐr)   c                ó   — |                       ¦   «         j        }t          t          d|j        |z   ¦  «        |j        ¬¦  «        }|                      t          j        j	        | j
        t          |¦  «        ¦  «         d S )Nr   rÉ   )rR   r¡   r   Úmaxr&   r%   r‹   r    rK   rÊ   rM   r(   rÎ   s       r'   Úcursor_forwardzWin32Output.cursor_forward\  ss   € Ø×.Ò.Ñ0Ô0ÔAˆõ •c˜!˜RœT F™]Ñ+Ô+¨r¬tÐ4Ñ4Ô4ˆØ�ŠÝŒOÔ4°d´mÅ\ÐRUÑEVÔEVñ	
ô 	
ð 	
ð 	
ð 	
r)   c                ó2   — |                       | ¦  «         d S r    )rÖ   rÒ   s     r'   Úcursor_backwardzWin32Output.cursor_backwarde  s   € Ø×Ò˜V˜GÑ$Ô$Ð$Ð$Ð$r)   c           	     óÌ  — | j         s| j                             ¦   «          dS d                     | j         ¦  «        }t          rI| j                             |›                     ¦   «         dz   ¦  «         | j                             ¦   «          |D ]M}t          ¦   «         }t          j
                             | j        |dt          |¦  «        d¦  «        }|dk    sJ ‚ŒNg | _         dS )z3
        Write to output stream and flush.
        Nr0   r}   r   r   )rJ   rB   r‡   r‰   rU   rX   rf   rˆ   r   r    rK   ÚWriteConsoleWrM   r   )r7   ra   ÚbÚwrittenÚretvals        r'   r‡   zWin32Output.flushh  sÝ   € ð Œ|ð 	ð ŒK×ÒÑÔÐØˆFà�wŠw�t”|Ñ$Ô$ˆåð 	ØŒH�NŠN˜t˜K×/Ò/Ñ1Ô1°EÑ9Ñ:Ô:Ð:ØŒH�NŠNÑÔÐð
 ð 	ð 	ˆAÝ‘g”gˆGå”_×2Ò2Ø”˜q !¥U¨7¡^¤^°Tñô ˆFð ˜Q’;�;�;�;�;àˆŒˆˆr)   c                ób   — |                       ¦   «         }|j        j        |j        j        z
  dz   S )Nr   )rR   rm   rp   r¡   r%   )r7   rY   s     r'   Úget_rows_below_cursor_positionz*Win32Output.get_rows_below_cursor_position†  s.   € Ø×0Ò0Ñ2Ô2ˆØŒ}Ô# dÔ&;Ô&=Ñ=ÀÑAÐAr)   c                óØ  — |                       ¦   «         }|j        }|j        }t          ¦   «         }d|_        |j        |j        z
  |_        |j        |j        z
  }d|j        |j        z
  cxk     r	|dz
  k     rn n|j        |_        nt          ||j        ¦  «        |_        |j        |z
  |_        |  
                    t          j        j        | j        dt          |¦  «        ¦  «         dS )z–
        To be called before drawing the prompt. This should scroll the console
        to left, with the cursor at the bottom (if possible).
        r   r   TN)rR   rm   r¡   r   ro   rn   rp   rq   r%   rÕ   r‹   r    rK   ÚSetConsoleWindowInforM   r   )r7   rY   rÏ   Ú
cursor_posÚresultÚ
win_heights         r'   Úscroll_buffer_to_promptz#Win32Output.scroll_buffer_to_promptŠ  sé   € ð ×0Ò0Ñ2Ô2ˆØŒ]ˆØÔ*ˆ
å‘”ˆð ˆŒØ”x "¤'Ñ)ˆŒð ”Y ¤Ñ'ˆ
ØˆrŒy˜:œ<Ñ'Ð8Ð8Ò8Ð8¨*°q©.Ò8Ð8Ð8Ð8Ð8àœIˆFŒMˆMå 
¨J¬LÑ9Ô9ˆFŒMØ”] ZÑ/ˆŒ
ð 	�ŠÝŒOÔ0°$´-ÀÅuÈVÁ}Ä}ñ	
ô 	
ð 	
ð 	
ð 	
r)   c                ó,  — | j         sŒd}d}t          |                      t          j        j        ||z  t          d¦  «        dt          d¦  «        d¦  «        ¦  «        }|                      t          j        j        |¦  «         || _        d| _         dS dS )z0
        Go to alternate screen buffer.
        l        i   @r   Nr   T)	rN   r   r‹   r    rK   ÚCreateConsoleScreenBufferr   ÚSetConsoleActiveScreenBufferrM   )r7   ÚGENERIC_READÚGENERIC_WRITEÚhandles       r'   Úenter_alternate_screenz"Win32Output.enter_alternate_screen¨  s�   € ð Ô(ð 	-Ø%ˆLØ&ˆMõ Ø—’Ý”OÔ=Ø  =Ñ0Ý˜!‘H”HØÝ˜!‘H”HØñô ñ	ô 	ˆFð �LŠL�œÔEÀvÑNÔNÐNØ"ˆDŒMØ(,ˆDÔ%Ð%Ð%ð%	-ð 	-r)   c                ó@  — | j         r–t          |                      t          j        j        t          ¦  «        ¦  «        }|                      t          j        j        |¦  «         |                      t          j        j        | j	        ¦  «         || _	        d| _         dS dS )z6
        Make stdout again the active buffer.
        FN)
rN   r   r‹   r    rK   rL   r   rè   ÚCloseHandlerM   )r7   rB   s     r'   Úquit_alternate_screenz!Win32Output.quit_alternate_screenÀ  sŠ   € ð Ô$ð 	.ÝØ—’�Vœ_Ô9Õ;LÑMÔMñô ˆFð �LŠL�œÔEÀvÑNÔNÐNØ�LŠL�œÔ4°d´mÑDÔDÐDØ"ˆDŒMØ(-ˆDÔ%Ð%Ð%ð	.ð 	.r)   c                óV  — d}d}t          t          j                             t          ¦  «        ¦  «        }t          ¦   «         }|                      t          j        j        |t          |¦  «        ¦  «         |                      t          j        j	        ||j
        |z  | z  ¦  «         d S )Né   é@   ©r   r    rK   rL   r   r   r‹   ÚGetConsoleModer   ÚSetConsoleModeÚvalue)r7   ÚENABLE_MOUSE_INPUTÚENABLE_QUICK_EDIT_MODErë   Úoriginal_modes        r'   Úenable_mouse_supportz Win32Output.enable_mouse_supportÍ  sš   € Ø!Ðð
 "(Ðå�œ×4Ò4Õ5EÑFÔFÑGÔGˆå™œˆØ�Š•V”_Ô3°V½WÀ]Ñ=SÔ=SÑTÔTÐTØ�ŠÝŒOÔ*ØØÔ Ð#5Ñ5Ð:PÐ9PÑPñ	
ô 	
ð 	
ð 	
ð 	
r)   c                óL  — d}t          t          j                             t          ¦  «        ¦  «        }t          ¦   «         }|                      t          j        j        |t          |¦  «        ¦  «         |                      t          j        j	        ||j
        | z  ¦  «         d S )Nrñ   ró   )r7   r÷   rë   rù   s       r'   Údisable_mouse_supportz!Win32Output.disable_mouse_supportß  sŒ   € Ø!ÐÝ�œ×4Ò4Õ5EÑFÔFÑGÔGˆå™œˆØ�Š•V”_Ô3°V½WÀ]Ñ=SÔ=SÑTÔTÐTØ�ŠÝŒOÔ*ØØÔÐ#5Ð"5Ñ5ñ	
ô 	
ð 	
ð 	
ð 	
r)   c                ó   — d S r    r   r]   s    r'   Úhide_cursorzWin32Output.hide_cursorë  ó   € Øˆr)   c                ó   — d S r    r   r]   s    r'   Úshow_cursorzWin32Output.show_cursorî  rÿ   r)   Úcursor_shaper   c                ó   — d S r    r   )r7   r  s     r'   Úset_cursor_shapezWin32Output.set_cursor_shapeñ  rÿ   r)   c                ó   — d S r    r   r]   s    r'   Úreset_cursor_shapezWin32Output.reset_cursor_shapeô  rÿ   r)   c                ó¾   — t          t          j                             ¦   «         ¦  «        }d}t          j                             |ddt          |¦  «        ¦  «         dS )a$  
        Call win32 API to refresh the whole Window.

        This is sometimes necessary when the application paints background
        for completion menus. When the menu disappears, it leaves traces due
        to a bug in the Windows Console. Sending a repaint request solves it.
        r   N)r   r    rK   ÚGetConsoleWindowÚuser32ÚRedrawWindowr	   )Úclsrë   ÚRDW_INVALIDATEs      r'   Úwin32_refresh_windowz Win32Output.win32_refresh_window÷  sN   € õ �œ×8Ò8Ñ:Ô:Ñ;Ô;ˆàˆÝŒ×"Ò" 6¨4°µv¸nÑ7MÔ7MÑNÔNÐNÐNÐNr)   c                ó6   — | j         �| j         S t          j        S )z¨
        Return the default color depth for a windows terminal.

        Contrary to the Vt100 implementation, this doesn't depend on a $TERM
        variable.
        )rE   r   ÚDEPTH_4_BITr]   s    r'   Úget_default_color_depthz#Win32Output.get_default_color_depth  s   € ð Ô#Ð/ØÔ+Ð+åÔ%Ð%r)   )FN)rB   r   rC   rD   rE   rF   r#   r,   )r#   rZ   )r#   r^   )ra   r^   r#   r,   )r#   r   )rw   rx   ry   rz   r{   rz   r#   r@   )r#   r   )r�   r^   r#   r,   r:   )rœ   r   r�   rZ   r#   r,   )r®   r   r¯   r   r#   r,   )r   r   )r˜   rZ   r™   rZ   r#   r,   )rÌ   rZ   r#   r,   )r  r   r#   r,   )r#   r   ))r;   r<   r=   r>   r6   r\   r`   rf   rh   rv   r‹   rR   r”   r–   rž   r£   r¥   r›   r­   rÁ   rÃ   rÆ   rš   rÐ   rÓ   rÖ   rØ   r‡   rß   rå   rì   rï   rú   rü   rþ   r  r  r  Úclassmethodr  r  r   r)   r'   r!   r!   Z   s  € € € € € ðð ð $)Ø15ð	Að Að Að Að Að2$ð $ð $ð $ð$ð $ð $ð $ð"ð "ð "ð "ðð ð ð ð0ð 0ð 0ð 0ð(ð ð ð ð4"-ð "-ð "-ð "-ðH>ð >ð >ð >ð;ð ;ð ;ð ;ð#ð #ð #ð #ð#ð #ð #ð #ð#ð #ð #ð #ð
ð 
ð 
ð 
ð.ð ð ð ð%Xð %Xð %Xð %XðNð ð ð ðð ð ð ð
ð 
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð ð  ð  ð  ð
ð 
ð 
ð 
ð%ð %ð %ð %ðð ð ð ð<Bð Bð Bð Bð
ð 
ð 
ð 
ð<-ð -ð -ð -ð0.ð .ð .ð .ð
ð 
ð 
ð 
ð$

ð 

ð 

ð 

ðð ð ð ðð ð ð ðð ð ð ðð ð ð ð ðOð Oð Oñ „[ðOð
&ð 
&ð 
&ð 
&ð 
&ð 
&r)   c                  ó2   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
S )ÚFOREGROUND_COLORr   r   r   é   r±   é   é   é   é   N©r;   r<   r=   ÚBLACKÚBLUEÚGREENÚCYANÚREDÚMAGENTAÚYELLOWÚGRAYÚ	INTENSITYr   r)   r'   r  r    ó;   € € € € € Ø€EØ€DØ€EØ€DØ
€CØ€GØ€FØ€DØ€I€I€Ir)   r  c                  ó2   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
S )ÚBACKGROUND_COLORr   rñ   é    é0   rò   éP   é`   ép   é€   Nr  r   r)   r'   r%  r%    r#  r)   r%  Ú	color_clsú/type[FOREGROUND_COLOR] | type[BACKGROUND_COLOR]údict[str, int]c                ó–  — i d| j         “d| j         “d| j        “d| j         | j        z  “d| j        | j        z  “d| j        “d| j        “d| j        “d	| j        “d
| j        “d| j        “d| j        | j        z  “d| j        | j        z  “d| j        | j        z  “d| j        | j        z  “d| j        | j        z  “d| j        | j        z  “S )zHCreate a table that maps the 16 named ansi colors to their Windows code.ÚansidefaultÚ	ansiblackÚansigrayÚansibrightblackÚ	ansiwhiteÚansiredÚ	ansigreenÚ
ansiyellowÚansiblueÚansimagentaÚansicyanÚansibrightredÚansibrightgreenÚansibrightyellowÚansibrightblueÚansibrightmagentaÚansibrightcyan)	r  r!  r"  r  r  r   r  r  r  )r,  s    r'   Ú_create_ansi_color_dictrA  +  s:  € ðØ�y”ðà�Y”_ðð 	�I”Nðð 	˜9œ?¨YÔ-@Ñ@ð	ð
 	�Y”^ iÔ&9Ñ9ðð 	�9”=ðð 	�Y”_ðð 	�iÔ&ðð 	�I”Nðð 	�yÔ(ðð 	�I”Nðð 	˜œ¨Ô)<Ñ<ðð 	˜9œ?¨YÔ-@Ñ@ðð  	˜IÔ,¨yÔ/BÑBð!ð" 	˜)œ.¨9Ô+>Ñ>ð#ð$ 	˜YÔ.°Ô1DÑDð%ð& 	˜)œ.¨9Ô+>Ñ>ð'ð r)   c                  óR   — e Zd ZdZdd„Zedd„¦   «         Zdd„Zdd„Zdd„Z	dd„Z
dS )rP   z8
    Inspired by pygments/formatters/terminal256.py
    r#   r,   c                óF   — |                       ¦   «         | _        i | _        d S r    )Ú_build_color_tableÚ_win32_colorsÚ
best_matchr]   s    r'   r6   zColorLookupTable.__init__R  s#   € Ø!×4Ò4Ñ6Ô6ˆÔð 79ˆŒˆˆr)   ú$list[tuple[int, int, int, int, int]]c                 ó"  — t           } t          }ddd| j        |j        fddd| j        |j        fddd| j        |j        fddd| j        |j        fddd| j        |j        fddd| j        |j        fddd| j        |j        fddd| j	        |j	        fddd| j        | j
        z  |j        |j
        z  fddd| j        | j
        z  |j        |j
        z  fddd| j        | j
        z  |j        |j
        z  fddd| j        | j
        z  |j        |j
        z  fddd| j        | j
        z  |j        |j
        z  fddd| j        | j
        z  |j        |j
        z  fddd| j        | j
        z  |j        |j
        z  fddd| j	        | j
        z  |j	        |j
        z  fgS )z<
        Build an RGB-to-256 color conversion table
        r   éª   éˆ   éD   éÿ   )r  r%  r  r  r  r  r  r  r   r!  r"  )ÚFGÚBGs     r'   rD  z#ColorLookupTable._build_color_tableX  sª  € õ
 ˆÝˆð �4˜˜rœx¨¬Ð2Ø�4˜˜rœw¨¬Ð0Ø�4˜˜rœx¨¬Ð2Ø�4˜˜rœw¨¬Ð0Ø�4˜˜rœv r¤vÐ.Ø�4˜˜rœz¨2¬:Ð6Ø�4˜˜rœy¨"¬)Ð4Ø�4˜˜rœw¨¬Ð0Ø�4˜˜rœw¨¬Ñ5°r´wÀÄÑ7MÐNØ�4˜˜rœx¨"¬,Ñ6¸¼À2Ä<Ñ8OÐPØ�4˜˜rœw¨¬Ñ5°r´wÀÄÑ7MÐNØ�4˜˜rœv¨¬Ñ4°b´f¸r¼|Ñ6KÐLØ�4˜˜rœz¨B¬LÑ8¸"¼*ÀrÄ|Ñ:SÐTØ�4˜˜rœy¨2¬<Ñ7¸¼ÀRÄ\Ñ9QÐRØ�4˜˜rœx¨"¬,Ñ6¸¼À2Ä<Ñ8OÐPØ�4˜˜rœw¨¬Ñ5°r´wÀÄÑ7MÐNð!
ð 	
r)   ÚrrZ   ÚgrÛ   útuple[int, int]c                óŽ   — d}d}d}| j         D ]4\  }}}	}
}||z
  }||z
  }||	z
  }||z  ||z  z   ||z  z   }||k     r|
}|}|}Œ5||fS )Ni r   )rE  )r7   rO  rP  rÛ   ÚdistanceÚfg_matchÚbg_matchÚr_Úg_Úb_Úfg_Úbg_ÚrdÚgdÚbdÚds                   r'   Ú_closest_colorzColorLookupTable._closest_colors  sˆ   € Ø ˆØˆØˆà$(Ô$6ð 
	ð 
	Ñ ˆB��B˜˜SØ�R‘ˆBØ�R‘ˆBØ�R‘ˆBà�R‘˜"˜r™'Ñ! B¨¡GÑ+ˆAà�8Š|ˆ|Ø�Ø�Ø�øØ˜Ð!Ð!r)   Úcolorr^   c                ó  — | j                              |d ¦  «        }|€g	 t          t          |¦  «        d¦  «        }n# t          $ r d}Y nw xY w|dz	  dz  }|dz	  dz  }|dz  }|                      |||¦  «        }|| j         |<   |S )Nrñ   r   rL  r  )rF  r3   rZ   r^   Ú
ValueErrorr_  )r7   r`  ÚindexesÚrgbrO  rP  rÛ   s          r'   Ú_color_indexeszColorLookupTable._color_indexes…  s­   € Ø”/×%Ò% e¨TÑ2Ô2ˆØˆ?ðÝ�#˜e™*œ* bÑ)Ô)��øÝð ð ð Ø���ðøøøð ˜‘˜dÑ"ˆAØ˜‘˜TÑ!ˆAØ�d‘
ˆAØ×)Ò)¨!¨Q°Ñ2Ô2ˆGØ%,ˆDŒO˜EÑ"Øˆs   Ÿ= ½AÁAÚfg_colorc                ód   — |t           v rt           |         S |                      |¦  «        d         S )z²
        Return the color for use in the
        `windll.kernel32.SetConsoleTextAttribute` API call.

        :param fg_color: Foreground as text. E.g. 'ffffff' or 'red'
        r   )ÚFG_ANSI_COLORSre  )r7   rf  s     r'   r´   z ColorLookupTable.lookup_fg_color”  ó3   € ð •~Ð%Ð%Ý! (Ô+Ð+à×&Ò& xÑ0Ô0°Ô3Ð3r)   Úbg_colorc                ód   — |t           v rt           |         S |                      |¦  «        d         S )z²
        Return the color for use in the
        `windll.kernel32.SetConsoleTextAttribute` API call.

        :param bg_color: Background as text. E.g. 'ffffff' or 'red'
        r   )ÚBG_ANSI_COLORSre  )r7   rj  s     r'   rµ   z ColorLookupTable.lookup_bg_color¡  ri  r)   Nr:   )r#   rG  )rO  rZ   rP  rZ   rÛ   rZ   r#   rQ  )r`  r^   r#   rQ  )rf  r^   r#   rZ   )rj  r^   r#   rZ   )r;   r<   r=   r>   r6   ÚstaticmethodrD  r_  re  r´   rµ   r   r)   r'   rP   rP   M  s¢   € € € € € ðð ð9ð 9ð 9ð 9ð ð
ð 
ð 
ñ „\ð
ð4"ð "ð "ð "ð$ð ð ð ð4ð 4ð 4ð 4ð4ð 4ð 4ð 4ð 4ð 4r)   rP   )r"   r   r#   r   )r,  r-  r#   r.  )9Ú
__future__r   ÚsysÚplatformr1   Úctypesr   r   r   r   r	   r
   r   Úctypes.wintypesr   r   Útypingr   r   r   Úprompt_toolkit.cursor_shapesr   Úprompt_toolkit.data_structuresr   Úprompt_toolkit.stylesr   r   Úprompt_toolkit.utilsr   Úprompt_toolkit.win32_typesr   r   r   r   r   Úutilsr   Úbaser   r¯   r   r    Ú__all__r(   rU   rW   Ú	Exceptionr+   r@   r!   r  r%  rA  rh  rl  ÚsetrP   r   r)   r'   ú<module>r~     s:  ðØ "Ð "Ð "Ð "Ð "Ð "à 
€
€
€
à
„|�wÒÐÐÐà 	€	€	€	Ø QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QØ )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø /Ð /Ð /Ð /Ð /Ð /Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø +Ð +Ð +Ð +Ð +Ð +ðð ð ð ð ð ð ð ð ð ð ð ð ð ð +Ð *Ð *Ð *Ð *Ð *Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #ð ð ØÐÐÐÐÐð ð€ð
8ð 8ð 8ð 8ð* Ð Ø DÐ ð"ð "ð "ð "ð " ñ "ô "ð "ð. €WˆT�]„]€ðv&ð v&ð v&ð v&ð v&�&ñ v&ô v&ð v&ðr	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ðð ð ð ð6 )Ð(Ð)9Ñ:Ô:€Ø(Ð(Ð)9Ñ:Ô:€à
€sˆ>ÑÔ˜c˜cÐ"2Ñ3Ô3Ò3Ð3Ð3Ð3Ø
€sˆ>ÑÔ˜c˜cÐ"2Ñ3Ô3Ò3Ð3Ð3Ð3ð_4ð _4ð _4ð _4ð _4ñ _4ô _4ð _4ð _4ð _4r)   