
    Oj{                       S r SSKJr  SSKJr  SSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSKrSSKJr  SSKJr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSK J!r!  SSK J"r"  \RF                  " S5      r$ " S S\RJ                  5      r&    S.S jr'\	RP                  S:X  a  Sr)Sr*OSr)Sr* " S S\RV                  \$   5      r, " S S\RZ                  5      r. S/   S0S  jjr/\R`                  S/S1S! jj5       r1\R`                   S/     S2S" jj5       r2\R`                   S/     S2S# jj5       r3\R`                   S/     S3S$ jj5       r4 " S% S&5      r5S4S5S' jjr6S6S( jr7\Rp                  S):X  a  SSK9r9\R`                  S7S* j5       r:S8S+ jr;gSSK<r<SSK=r=\R`                  S7S, j5       r:S8S- jr;g)9z
This module contains implementations for the termui module. To keep the
import time of Click down, some infrequently used functionality is
placed in this module and only imported as needed.
    )annotationsN)gettext)StringIO)Path)TracebackType   )_default_text_stdout)CYGWIN)get_best_encoding)isatty)
strip_ansi)term_len)WIN)ClickException)echo)KeepOpenFileVc                       \ rS rSr% S\S'   Srg)_BufferedTextPagerStream%   z
t.BinaryIObuffer N)__name__
__module____qualname____firstlineno____annotations____static_attributes__r       T/var/www/html/leaf-doctor-v1/venv/lib/python3.13/site-packages/click/_termui_impl.pyr   r   %   s    r   r   c                     [        U SS 5      S L$ )Nr   )getattr)streams    r    _has_binary_bufferr$   )   s    
 68T*$66r   nt
z[?25lz[?25h
c                  h   \ rS rSr               S                                 SS jjrSS jr        SS jrSS jrSS jrSS jr	\
SS	 j5       r\
SS
 j5       r\
SS j5       rSS jrSS jrSS jrSS jrSS jrSS jrS S jrS!S"S jjrSS jrSS jrSrg)#ProgressBar9   Nc                   X0l         X@l        XPl        X`l        Xpl        Xl        Xl        Xl        Xl        U=(       d    SU l	        Uc  [        5       nUc
  [        5       nXl        Xl        Xl        SU l        UU l        US:H  U l        Uc  SSKJn  U" US5      nUS:X  a  S nUc.  Uc  [)        S5      e[*        R,                  " S[/        U5      5      n[1        U5      U l        X l        SU l        / U l        U   U   [8        R8                  " 5       =U l        U l        SU l        SU l         S U l!        SU l"        S U l#        [I        U R                  5      U l%        S U l&        g )N r   )length_hintziterable or length is requiredzcabc.Iterable[V]F)'	fill_char
empty_charbar_templateinfo_sephiddenshow_etashow_percentshow_positem_show_funclabelr	   r   filecolorupdate_min_steps_completed_intervalswidth	autowidthoperatorr-   	TypeErrortcastrangeiterlengthposavgtimestartlast_eta	eta_knownfinished	max_widthenteredcurrent_itemr   _is_atty
_last_line)selfiterablerE   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r=   r-   s                     r    __init__ProgressBar.__init__:   sC   & #$(  ( ,+2
<')D |z	
 0$%!
$z>, 2.F|~ @AAvv0%-@H&*8n	 "%)YY[0
T]$#%)"&*tyy)&*r   c                4    SU l         U R                  5         U $ )NT)rN   render_progressrR   s    r    	__enter__ProgressBar.__enter__   s    r   c                $    U R                  5         g N)render_finish)rR   exc_type	exc_valuetbs       r    __exit__ProgressBar.__exit__   s     	r   c                z    U R                   (       d  [        S5      eU R                  5         U R                  5       $ )N.You need to use progress bars in a with block.)rN   RuntimeErrorrW   	generatorrX   s    r    __iter__ProgressBar.__iter__   s.    ||OPP~~r   c                *    [        [        U 5      5      $ r\   )nextrD   rX   s    r    __next__ProgressBar.__next__   s     DJr   c                    U R                   (       d  U R                  (       d  g U R                  R                  [        5        U R                  R                  5         g r\   )r3   rP   r9   write	AFTER_BARflushrX   s    r    r]   ProgressBar.render_finish   s0    ;;dmm			"		r   c                    U R                   (       a  g[        U R                  [        U R                  =(       d    S5      =(       d    S-  S5      $ )N      ?r   )rL   minrF   floatrE   rX   s    r    pctProgressBar.pct   s5    ==488uT[[%5A6;!<cBBr   c                    U R                   (       d  g[        U R                   5      [        [        U R                   5      5      -  $ Ng        )rG   sumru   lenrX   s    r    time_per_iterationProgressBar.time_per_iteration   s,    xx488}uS]333r   c                    U R                   b7  U R                  (       d&  U R                  U R                   U R                  -
  -  $ gry   )rE   rL   r|   rF   rX   s    r    etaProgressBar.eta   s3    ;;"4==**dkkDHH.DEEr   c                    U R                   (       ab  [        U R                  5      nUS-  nUS-  nUS-  nUS-  nUS-  nUS-  nUS:  a  SR                  U[	        S5      UUUS9$ US SUS SUS 3$ g	)
N<      r   z#{d}{day_label} {h:02}:{m:02}:{s:02}d)r   	day_labelhms02:r,   )rK   intr   format_)rR   rA   secondsminuteshourss        r    
format_etaProgressBar.format_eta   s    >>DHHA"fG"HA"fG"HAFE"HA1u<CCf D    1WRL'">>r   c                n    [        U R                  5      nU R                  b  USU R                   3-  nU$ )N/)strrF   rE   )rR   rF   s     r    
format_posProgressBar.format_pos   s3    $((m;;"Qt{{m$$C
r   c                @    [        U R                  S-  5      S S3SS  $ )Nd   z 4%r   )r   rv   rX   s    r    
format_pctProgressBar.format_pct   s&    dhhn%b)+AB//r   c                ^   U R                   bQ  [        U R                  U R                  -  5      nU R                  U-  nX R
                  U R                  U-
  -  -  nU$ U R                  (       a  U R                  U R                  -  nU$ [        U R
                  U R                  =(       d    S-  5      nU R                  S:w  aV  U R                  U[        [        R                  " U R                  U R                  -  5      S-  S-   U R                  -  5      '   SR                  U5      nU$ )Nr   r   g       @g      ?r,   )rE   r   rv   r=   r/   r0   rL   listr|   mathcosrF   join)rR   
bar_lengthbarcharss       r    
format_barProgressBar.format_bar   s    ;;"TXX

23J..:-C??djj:&=>>C 
 ]]..4::-C 
 DJJO!<=E&&!+ NN $((T-D-D"DEKcQ**% ''%.C
r   c                   U R                   n/ nU R                  b  Uc  U R                  (       + nU R                  (       a  UR                  U R	                  5       5        U(       a  UR                  U R                  5       5        U R                  (       aA  U R                  (       a0  U R                  (       d  UR                  U R                  5       5        U R                  b/  U R                  U R                  5      nUb  UR                  U5        U R                  U R                  U R                  5       U R                  R!                  U5      S.-  R#                  5       $ )N)r8   r   info)r5   rE   r6   appendr   r   r4   rK   rL   r   r7   rO   r1   r8   r   r2   r   rstrip)rR   r5   	info_bits	item_infos       r    format_progress_line ProgressBar.format_progress_line   s   ((	;;"|';#}},L==T__./T__./==T^^DMMT__./*++D,=,=>I$  + (**95 &(	r   c                h   U R                   (       a  g U R                  (       dU  U R                  U R                  :w  a:  U R                  U l        [	        U R                  U R
                  U R                  S9  g / nU R                  (       a  SS KnU R                  nSU l	        [        U R                  5       5      n[        SUR                  5       R                  U-
  5      nXS:  aF  U R                  b9  UR!                  ["        5        UR!                  SU R                  -  5        XPl        XPl	        U R                  nU R                  b  U R                  nUR!                  ["        5        U R                  5       n[        U5      nU R                  b  U R                  U:  a  Xl        UR!                  U5        UR!                  SXh-
  -  5        SR%                  U5      nXpR                  :w  a@  Xpl        [	        XpR
                  U R                  SS9  U R
                  R'                  5         g g )N)r9   r:   r    r,   F)r9   r:   nl)r3   rP   rQ   r8   r   r9   r:   r>   shutilr=   r   r   maxget_terminal_sizecolumnsrM   r   
BEFORE_BARr   rp   )	rR   bufr   	old_widthclutter_length	new_widthclear_widthlineline_lens	            r    rW   ProgressBar.render_progress   s   ;;}}$**,"&**TZZdiitzzB>>

IDJ%d&?&?&ABNAv779AANRSI$)C

:&

3/0!*"Jjj>>%..K

:((*D>>>!T^^h%>%N

4

3+012wws| ??""OIITZZEBIIOO #r   c                (   U =R                   U-  sl         U R                  b!  U R                   U R                  :  a  SU l        [        R                  " 5       U R                  -
  S:  a  g [        R                  " 5       U l        U R                   (       a0  [        R                  " 5       U R
                  -
  U R                   -  nO"[        R                  " 5       U R
                  -
  nU R                  SS  U/-   U l        U R                  S LU l        g )NTrs   i)rF   rE   rL   rH   rJ   rI   rG   rK   )rR   n_stepssteps      r    	make_stepProgressBar.make_step.  s    G;;"txx4;;'> DMIIK$--'3.		
 88IIK$**,8D99;+D88BC=D6)D0r   c                    Ub  X l         U =R                  U-  sl        U R                  U R                  :  a3  U R                  U R                  5        U R	                  5         SU l        gg)a  Update the progress bar by advancing a specified number of
steps, and optionally set the ``current_item`` for this new
position.

:param n_steps: Number of steps to advance.
:param current_item: Optional item to set as ``current_item``
    for the updated position.

.. versionchanged:: 8.0
    Added the ``current_item`` optional parameter.

.. versionchanged:: 8.0
    Only render when the number of steps meets the
    ``update_min_steps`` threshold.
Nr   )rO   r<   r;   r   rW   )rR   r   rO   s      r    updateProgressBar.updateD  s`      # ,!!W,!$$(=(==NN4445  "()D% >r   c                .    SU l         S U l        SU l        g )NFT)rK   rO   rL   rX   s    r    finishProgressBar.finish^  s     r   c              #  p  #    U R                   (       d  [        S5      eU R                  (       d  U R                   Sh  vN   gU R                   H>  nXl        U R
                  S:X  a  U R                  5         Uv   U R                  S5        M@     U R                  5         U R                  5         g Nt7f)zReturn a generator which yields the items added to the bar
during construction, and updates the progress bar *after* the
yielded block returns.
rd   Nr   r   )	rN   re   rP   rD   rO   r<   rW   r   r   )rR   rvs     r    rf   ProgressBar.generatorc  s      ||OPP}}yy  ii$&!
 ,,1((*A   KKM  " !s   =B6B4 A5B6)r<   rP   rQ   r>   rG   r1   r:   rO   r0   rN   rK   r9   r/   rL   r3   r2   r7   rD   r8   rJ   rE   rM   rF   r4   r5   r6   rI   r;   r=   )N#r   z%(bar)sz  FTNFNNNNr      )"rS   zcabc.Iterable[V] | NonerE   z
int | Noner/   r   r0   r   r1   r   r2   r   r3   boolr4   r   r5   bool | Noner6   r   r7   z)t.Callable[[V | None], str | None] | Noner8   
str | Noner9   zt.TextIO | Noner:   r   r;   r   r=   r   returnNone)r   zProgressBar[V])r^   ztype[BaseException] | Noner_   zBaseException | Noner`   zTracebackType | Noner   r   )r   zcabc.Iterator[V])r   r   )r   r   )r   ru   r   r   )r   r   r   r   r\   )r   r   rO   zV | Noner   r   )r   r   r   r   rT   rY   ra   rg   rk   r]   propertyrv   r|   r   r   r   r   r   r   rW   r   r   r   rf   r   r   r   r    r)   r)   9   s    "%$(DH  $! !#E+)E+ E+ 	E+
 E+ E+ E+ E+ E+ "E+ E+ BE+ E+ E+ E+  !E+" #E+$ 
%E+N
, ( !	
 
   C C
 4 4
  
*0&6,\1,*4
#r   r)   c                  <   ^  \ rS rSrSU 4S jjrSU 4S jjrSrU =r$ )MaybeStripAnsii  c               4   > [         TU ]  " U40 UD6  X l        g r\   )superrT   r:   )rR   r#   r:   kwargs	__class__s       r    rT   MaybeStripAnsi.__init__  s    *6*
r   c                Z   > U R                   (       d  [        U5      n[        TU ]  U5      $ r\   )r:   r   r   rn   )rR   textr   s     r    rn   MaybeStripAnsi.write  s#    zzd#Dw}T""r   r:   )r#   zt.IO[bytes]r:   r   r   zt.Any)r   r   r   r   )r   r   r   r   rT   rn   r   __classcell__)r   s   @r    r   r     s    # #r   r   c                H   [        5       nUc
  [        5       n[        [        R                  5      (       a  [        U5      (       d  [        X5      $ [        R                  " [        R                  R                  SS5      5      nU(       a!  [        (       a  [        X 5      $ [        X 5      $ [        R                  R                  S5      S;   a  [        X5      $ [        (       d$  [        R                  R                  S5      (       a  [        S/U 5      $ [        S/U 5      $ )z2Decide what method to use for paging through text.PAGERr,   TERM)dumbemacsos2moreless)r	   r   r   sysstdin
_nullpagershlexsplitosenvirongetr   _tempfilepager
_pipepagerplatform
startswith)r:   stdoutpager_cmd_partss      r    _pager_contextmanagerr     s     "#F ~#))F6NN&(( kk"**..""=>O3!/99/11	zz~~f!22&((
scll%%e,,vh..vh&&r   c              #    #    [        U S9 u  pn Sn[        U5      (       a  [        UR                  XS9nUn [        R
                  " [        R                  U5      v    UR                  5         Ub  UR                  5         SSS5        g! Ub  UR                  5         f f = f!  UR                  5         Ub  UR                  5         f f ! Ub  UR                  5         f f = f= f! , (       d  f       g= f7f)zContext manager.

Yields a writable file-like object which can be used as an output pager.

.. versionadded:: 8.4.0

:param color: controls if the pager supports ANSI colors or not.  The
              default is autodetection.
r   N)r:   encoding)	r   r$   r   r   rA   rB   TextIOrp   detach)r:   r#   r   wrappers       r    get_pager_filer     s      
U	+/H% *.f%%$V]]%SGF	% &&6**
% &NN$1 
,	+. &NN$ '
% &NN$ '7&NN$ '/ 
,	+s]   
C:,C)'B&!B1C)	C:B##C)&C&(C8C&C#	#C&&C))
C73C:c           	   #    #    U (       d4  [        5       =(       d
    [        5       n[        X!5       nUv   SSS5        gSSKnU S   nU SS nUR	                  U5      nU(       d4  [        5       =(       d
    [        5       n[        X!5       nUv   SSS5        g[        U5      R                  5       nUR                  n	SSKn
[        [        R                  5      nUcV  U	S:X  aP  [        R                  R                  SS5       SR                  U5       3nU(       d  SUS'   S	nOS
U;   d  SU;   a  S	nUc  SnU
R                  [        U5      /U-   SU
R                   USS	S9n["        R$                  " ["        R&                  UR(                  5      n[+        U5      n XU4v    UR3                  5           UR5                  5         g! , (       d  f       g= f! , (       d  f       g= f! [,         a     NR[.         a  nUR1                  5         UeSnAff = f! [,         a     Npf = f! [6         a     Of = fM  !  UR3                  5         O! [,         a     Of = f  UR5                  5         f ! [6         a     Of = fM$  = f7f)a  Page through text by feeding it to another program.

Invokes the pager via :class:`subprocess.Popen` with an ``argv`` list
produced by :func:`shlex.split`. The command is resolved to an absolute
path with :func:`shutil.which` as recommended by the
:mod:`subprocess` docs for Windows compatibility.

Invoking a pager through this might support colors: if piping to
``less`` and the user hasn't decided on colors, ``LESS=-R`` is set
automatically.
Nr   r   r   LESSr,   r   -RTrRFreplace)shellr   enverrorsr   )r	   r   r   r   whichr   absolutename
subprocessdictr   r   r   r   Popenr   PIPErA   rB   BinaryIOr   r   BrokenPipeError	Exception	terminateclosewaitKeyboardInterrupt)	cmd_partsr:   r   r   r   cmd
cmd_paramscmd_filepathcmd_pathcmd_namer  r  
less_flagscr   r   es                    r    r   r     sm       &'58:&"H '
A,C12J<<$L &'58:&"H '
 L!**,H}}H rzz
C }V+

vr23CHHZ4H3IJ
CKEJ#"3E}	X*$oo 	 	A FF1::qww'E 'H#u$$	KKM  o '& '&L   
 	
  		 %  	KKM  		   %  s   .JGAJ
GDJG* %H 5J7H) J
GJ
G'#J*
H4H; 6	H?HHH; 
H&#J%H&&J)
H63J5H66J;J=IJ
IJIJ I10J1
I>;J=I>>JJc              #  x  #    U (       d4  [        5       =(       d
    [        5       n[        X!5       nUv   SSS5        gSSKnSSKnU S   nUR                  U5      nU(       d4  [        5       =(       d
    [        5       n[        X!5       nUv   SSS5        g[        U5      R                  5       nSSKn	[        [        R                  5      n
Uc  SnU	R                  SSS9n [        R                  " [        R                  U5      X4v   UR!                  5         UR#                  5         UR%                  ['        U5      UR(                  /5        [*        R,                  " UR(                  5        g! , (       d  f       g= f! , (       d  f       g= f! [*        R,                  " UR(                  5        f = f7f)a  Page through text by invoking a program on a temporary file.

Used as the primary pager strategy on Windows (where piping to
``more`` adds spurious ``\r\n``), and as a fallback on other
platforms. The command is resolved to an absolute path with
:func:`shutil.which`.
Nr   Fwb)modedelete)r	   r   r   r   r  r  r   r	  tempfiler   r   r   NamedTemporaryFilerA   rB   r  rp   r  callr   r
  r   unlink)r  r:   r   r   r   r  r  r  r  r#  r   fs               r    r   r   C  sF      &'58:&"H '
A,C<<$L &'58:&"H '
 L!**,H ,H} 	##e#<AffQZZ#X44				X/0
		!&&M '& '&, 			!&&sN   .F:E3AF:	FAF:#A/F !F:3
F=F:
FF:"F77F:c              #  J   #    [        U 5      nUc  Sn[        U 5      X!4v   g7f)a  Simply print unformatted text. This is the ultimate fallback. Don't close the
output stream in this case, since it's coming from elsewhere rather than our
internal helpers.

The stream is wrapped in :class:`~click.utils.KeepOpenFile` so that, as a
borrowed stream, it is not closed by a ``with`` block. The wrapper that
:func:`get_pager_file` builds around it is detached rather than closed.
NF)r   r   )r#   r:   r   s      r    r   r   |  s+      !(H}
v

//s   !#c                      \ rS rSr    S
         SS jjrSS jrSS jr\R                  SS j5       r	\R                  SS j5       r	SS jr	S	r
g)Editori  Nc                4    Xl         X l        X0l        X@l        g r\   )editorr  require_save	extension)rR   r,  r  r-  r.  s        r    rT   Editor.__init__  s     ("r   c                    U R                   b  U R                   $ S H-  n[        R                  R                  U5      nU(       d  M+  Us  $    [        (       a  gSSKJn  S H  nU" U5      c  M  Us  $    g)N)VISUALEDITORnotepadr   )r  )zsensible-editorvimnanovi)r,  r   r   r   r   r   r  )rR   keyr   r  r,  s        r    
get_editorEditor.get_editor  sg    ;;";;%C$Br	 & 3 6FV}( 7 r   c                   SSK nSSKnU R                  5       nSnU R                  (       a9  [        R
                  R                  5       nUR                  U R                  5         UR                  UR                  " U5      [        U5      -   US9nUR                  5       nUS:w  a!  [        [        S5      R                  US95      eg! [         a'  n[        [        S5      R                  XHS95      UeSnAff = f)z Open files in the user's editor.r   N)argsr  z{editor}: Editing failed)r,  z{editor}: Editing failed: {e})r,  r  )r   r  r8  r  r   r   copyr   r  r   r   r  r   r   r   OSError)	rR   	filenamesr   r  r,  r   r  	exit_coder  s	            r    
edit_filesEditor.edit_files  s    ")-88jjoo'GNN488$	   [[(4	?: ! A IA~$01888G    	 12999M	s   &A#C
 

C;"C66C;c                    g r\   r   rR   r   s     r    editEditor.edit  s    =@r   c                    g r\   r   rC  s     r    rD  rE    s    47r   c                   SS K nUc  SnO~[        U[        [        45      (       a  UnO`U(       a  UR	                  S5      (       d  US-  n[
        (       a"  UR                  SS5      R                  S5      nOUR                  S5      nUR                  SU R                  S9u  pE [        R                  " US	5       nUR                  U5        S S S 5        [        R                  " U[        R                  R                  U5      [        R                  R!                  U5      S
-
  45        [        R                  R!                  U5      nU R#                  U45        U R$                  (       a;  [        R                  R!                  U5      U:X  a   [        R&                  " U5        g [)        US5       nUR+                  5       nS S S 5        [        U[        [        45      (       a  W[        R&                  " U5        $ WR-                  S5      R                  SS5      [        R&                  " U5        $ ! , (       d  f       GNq= f! , (       d  f       N= f! [        R&                  " U5        f = f)Nr   r   r'   z
z	utf-8-sigzutf-8zeditor-)prefixsuffixr      rb)r#  
isinstancebytes	bytearrayendswithr   r  encodemkstempr.  r   fdopenrn   utimepathgetatimegetmtimer@  r-  r&  openreaddecode)	rR   r   r#  datafdr
  r'  	timestampr   s	            r    rD  rE    s   <&)Dui011DDMM$//s||D&188E{{7+##9T^^#L	2t$ % HHTBGG,,T2BGG4D4DT4JQ4NOP ((.IOOTG$  RWW%5%5d%;y%H IIdO dD!QVVX " $	 233 IIdO 99[)11&$?IIdO3 %$" "! IIdOsI   &I =H9CI *I 6I$I  I 9
II 
II I4)r,  r  r.  r-  )NNTz.txt)
r,  r   r  zcabc.Mapping[str, str] | Noner-  r   r.  r   r   r   r   )r>  zcabc.Iterable[str]r   r   )r   zbytes | bytearrayr   zbytes | None)r   r   r   r   )r   zstr | bytes | bytearray | Noner   zstr | bytes | None)r   r   r   r   rT   r8  r@  rA   overloadrD  r   r   r   r    r*  r*    s|     "-1!
#
# +
# 	
#
 
# 

#"< ZZ@ @ ZZ7 7-r   r*  c                   SS K nSS jn[        R                  S:X  a  S/nU(       a  UR                  S5        U(       a  UR                  S5        UR                  U" U 5      5        [	        SS5      n UR                  XVS	9R                  5       UR                  5         $ [        (       a>  U(       a  U" U 5      n S
SU /n UR                  U5      $  [        R                  " U 5        g[        (       ao  U(       a*  U" U 5      n S[        R                  R                  U 5      /nO,S/nU(       a  UR                  S5        UR                  U 5         UR                  U5      $  U(       a/  [        R                  R                  U" U 5      5      =(       d    Sn OU" U 5      n UR                  SU /5      nU(       a  UR                  5       $ g! UR                  5         f = f! [         a     gf = f! [         a     gf = f! [         a     gf = f! [         a>    U R!                  S5      (       a%  U(       d  U(       d  SS KnUR	                  U 5         g gf = f)Nr   c                T    SSK Jn  U R                  S5      (       a  U" U SS  5      n U $ )Nr   )unquotezfile://   )urllib.parser`  r   )urlr`  s     r    _unquote_fileopen_url.<locals>._unquote_file  s)    (>>)$$#ab'"C
r   darwinrW  z-Wr  z	/dev/nullw)stderrexplorerz/select,   cygstartz-w.zxdg-open)zhttp://zhttps://r   )rc  r   r   r   )r  r   r   r   rW  r  r  r  r   r%  r=  r   	startfiler
   rT  dirnamer   
webbrowser)	rc  r  locater  rd  r;  nullr  ro  s	            r    open_urlrr    s    ||xxKKKKM#&'K%	##D#6;;=JJL	$C
C0D!t,,S! 	$C 45D<DD!KK	??4((
''//-"45<C$Cj#./668OM JJL  
    		  >>1226$OOC sV   5G G$ G4 H &A'H G!$
G10G14
H H
HHAIIc                    U S:X  a
  [        5       eU S:X  a  [        (       d
  [        5       eU S:X  a  [        (       a
  [        5       eg g )N)r  r   EOFError)chs    r    _translate_ch_to_excry  J  s?    	V|!!	V|CCj	V|j |r   win32c               #     #    Sv   g 7f)Nr.   r   r   r   r    raw_terminalr|  X  s
     s   c                H   U (       a=  [         R                  " [         R                  / [        4   [        R
                  5      nO<[         R                  " [         R                  / [        4   [        R                  5      nU" 5       nUS;   a	  X!" 5       -  n[        U5        U$ )N)    à)rA   rB   Callabler   msvcrtgetwchegetwchry  )r   funcr   s      r    getcharr  \  ss    > 66!**RW-v~~>D66!**RW-v}}=DV!! $&LBR 	r   c               #    #    [        [        R                  5      (       d  [        S5      n U R	                  5       nO [        R                  R	                  5       nS n  [
        R                  " U5      n [        R                  " U5        Uv   [
        R                  " U[
        R                  U5        [        R                  R                  5         U b  U R                  5         g g ! [
        R                  " U[
        R                  U5        [        R                  R                  5         U b  U R                  5         f f = f! [
        R                   a     g f = f7f)Nz/dev/tty)r   r   r   rW  filenotermios	tcgetattrttysetraw	tcsetattr	TCSADRAINr   rp   r  error)r'  r[  old_settingss      r    r|  r|    s     
 cii  Z AB!!#BA	",,R0L

2!!"g&7&7F

  "=GGI ! !!"g&7&7F

  "=GGI !}} 		sD   AEE 5C( AE &E(AEE EEEEc                j   [        5        n[        R                  " US5      R                  [	        [
        R                  5      S5      nU (       a=  [        [
        R                  5      (       a  [
        R                  R                  U5        [        U5        UsS S S 5        $ ! , (       d  f       g = f)N    r  )r|  r   rX  rY  r   r   r   r   r   rn   ry  )r   r[  rx  s      r    r  r    sg    ^rR''(9#))(DiPBszz**

  $ $ ^^s   BB$$
B2)r#   zt.BinaryIO | t.TextIOr   z%t.TypeGuard[_BufferedTextPagerStream]r\   )r:   r   r   z9t.ContextManager[tuple[t.BinaryIO | t.TextIO, str, bool]])r:   r   r   z!t.Generator[t.TextIO, None, None])r  z	list[str]r:   r   r   z3t.Iterator[tuple[t.BinaryIO | t.TextIO, str, bool]])r#   zt.TextIOr:   r   r   z&t.Iterator[tuple[t.TextIO, str, bool]])FF)rc  r   r  r   rp  r   r   r   )rx  r   r   r   )r   zcabc.Iterator[int])r   r   r   r   )>__doc__
__future__r   collections.abcabccabc
contextlibior   r   r   r   rH   typingrA   r   r   r   pathlibr   typesr   _compatr	   r
   r   r   r   r   r   
exceptionsr   utilsr   r   TypeVarr   Protocolr   r$   r
  r   ro   Genericr)   TextIOWrapperr   r   contextmanagerr   r   r   r   r*  rr  ry  r   r  r|  r  r  r  r   r   r    <module>r     s   #   	  	  
        )  &     &  IIcNqzz 7!7*7 77d?JIJII#!))A, I#X
#R%% # ''>'> "% "%J /3jj!,j8j jZ /355!,585 5p +/00(0+0 0&q qhCL <<7 ,^  4r   