ó
    ÷Þ j%€  ã                  ó^  • 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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!  \RD                  " S5      r#\RH                  S:X  a  Sr%Sr&OSr%Sr& " S S\RN                  \#   5      r( " S S5      r)S,S jr* S-   S.S jjr+\RX                  S-S/S jj5       r-S0S jr.\RX                   S-       S1S  jj5       r/\RX                   S-       S1S! jj5       r0\RX                   S-     S2S" jj5       r1 " S# S$5      r2S3S4S% jjr3S5S& jr4\
Rj                  S':X  a  SSK6r6\RX                  S6S( j5       r7S7S) jr8gSSK9r9SSK:r:\RX                  S6S* j5       r7S7S+ jr8g)8z¿
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ÚVÚ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)#ÚProgressBaré+   Nc                óÈ  • X0l         X@l        XPl        X`l        Xpl        X€l        X�l        X l        X°l        U=(       d    SU l	        Uc  [        5       nUc
  [        5       nXÐl        Xàl        Xðl        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_hintéÿÿÿÿz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Úiterabler3   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r+   r   s                     ÚL/var/www/html/gaurav/venv/lib/python3.13/site-packages/click/_termui_impl.pyÚ__init__ÚProgressBar.__init__,   sC  € ð& #ŒØ$ŒØ(ÔØ ŒØŒØ ŒØ(ÔØ ŒØ,ÔØŸ+ 2ˆŒ
à‰<Ü'Ó)ˆDð ‰|Ü“z�àŒ	ØŒ
Ø 0ÔØ$%ˆÔ!ØˆŒ
Ø$¨™zˆŒà‰>Ý,á  ¨2Ó.ˆFà˜‹|Ø�ØÑØ‰~ÜÐ @ÓAÐAÜ—v’vÐ0´%¸³-Ó@ˆHÜ&*¨8£nˆŒ	ØŒØˆŒØ "ˆŒÙÙÜ%)§Y¢Y£[Ð0ˆŒ
�T”]Ø$ˆŒØ#ˆŒØ%)ˆŒØ"ˆŒØ&*ˆÔÜ˜tŸy™yÓ)ˆŒØ&*ˆ�ó    c                ó4   • SU l         U R                  5         U $ )NT)r<   Úrender_progress©r@   s    rB   Ú	__enter__ÚProgressBar.__enter__s   s   € ØˆŒØ×ÑÔØˆrE   c                ó$   • U R                  5         g ©N)Úrender_finish)r@   Úexc_typeÚ	exc_valueÚtbs       rB   Ú__exit__ÚProgressBar.__exit__x   s   € ð 	×ÑÕrE   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.)r<   ÚRuntimeErrorrG   Ú	generatorrH   s    rB   Ú__iter__ÚProgressBar.__iter__€   s.   € Ø�|�|ÜÐOÓPÐPØ×ÑÔØ�~‰~ÓÐrE   c                ó*   • [        [        U 5      5      $ rL   )Únextr2   rH   s    rB   Ú__next__ÚProgressBar.__next__†   s   € ô ”D˜“JÓÐrE   c                óB  • U R                   (       a2  U R                  U R                   5        SU l         U R                  5         U R                  (       d  U R                  (       d  g U R
                  R                  [        5        U R
                  R                  5         g )Nr   )	r*   Ú	make_steprG   r!   r>   r'   ÚwriteÚ	AFTER_BARÚflushrH   s    rB   rM   ÚProgressBar.render_finishŽ   sa   € ð ×$×$Ø�N‰N˜4×4Ñ4Ô5Ø()ˆDÔ%Ø× Ñ Ô"à�;�;˜dŸmŸmØØ�	‰	�‰œ	Ô"Ø�	‰	�‰ÕrE   c                ó¢   • U R                   (       a  g[        U R                  [        U R                  =(       d    S5      =(       d    S-  S5      $ )Nç      ð?r   )r:   Úminr4   Úfloatr3   rH   s    rB   ÚpctÚProgressBar.pctœ   s5   € à�=�=ØÜ�4—8‘8œu T§[¡[×%5°AÓ6×;¸!Ñ<¸cÓBÐBrE   c                óŽ   • U R                   (       d  g[        U R                   5      [        [        U R                   5      5      -  $ ©Ng        )r5   Úsumrf   ÚlenrH   s    rB   Útime_per_iterationÚProgressBar.time_per_iteration¢   s,   € à�x�xØÜ�4—8‘8‹}œu¤S¨¯©£]Ó3Ñ3Ð3rE   c                óŒ   • U R                   b7  U R                  (       d&  U R                  U R                   U R                  -
  -  $ grj   )r3   r:   rm   r4   rH   s    rB   ÚetaÚProgressBar.eta¨   s3   € à�;‰;Ñ"¨4¯=¯=Ø×*Ñ*¨d¯k©k¸D¿H¹HÑ.DÑEÐEØrE   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)ru   Ú	day_labelÚhÚmÚsÚ02Ú:r   )r9   Úintrp   ÚformatÚ_)r@   r/   ÚsecondsÚminutesÚhourss        rB   Ú
format_etaÚProgressBar.format_eta®   s¡   € Ø�>�>Ü�D—H‘H“ˆAØ˜"‘fˆGØ�"‰HˆAØ˜"‘fˆGØ�"‰HˆAØ˜‘FˆEØ�"‰HˆAØ�1‹uØ<×CÑCØÜ ›fØØØð Dð ð ð   ˜ 1 W¨R L°°'¸"°Ð>Ð>ØrE   c                ón   • [        U R                  5      nU R                  b  USU R                   3-  nU$ )NÚ/)Ústrr4   r3   )r@   r4   s     rB   Ú
format_posÚProgressBar.format_posÃ   s3   € Ü�$—(‘(‹mˆØ�;‰;Ñ"Ø�Q�t—{‘{�mÐ$Ñ$ˆCØˆ
rE   c                ó@   • [        U R                  S-  5      S S3SS  $ )Néd   z 4Ú%r   )r|   rg   rH   s    rB   Ú
format_pctÚProgressBar.format_pctÉ   s&   € Ü�d—h‘h ‘nÓ% bÐ)¨Ð+¨A¨BÐ/Ð/rE   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   )r3   r|   rg   r+   r   r   r:   Úlistrm   ÚmathÚcosr4   Újoin)r@   Ú
bar_lengthÚbarÚcharss       rB   Ú
format_barÚProgressBar.format_barÌ   sÿ   € Ø�;‰;Ñ"Ü˜TŸX™X¨¯
©
Ñ2Ó3ˆJØ—.‘. :Ñ-ˆCØ—?‘? d§j¡j°:Ñ&=Ñ>Ñ>ˆCð ˆ
ð �]�]Ø—.‘. 4§:¡:Ñ-ˆCð ˆ
ô ˜Ÿ™¨D¯J©J¯O¸!Ñ<Ó=ˆEØ×&Ñ&¨!Ó+ð —N‘Nð ÜÜŸš $§(¡(¨T×-DÑ-DÑ"DÓEÈÑKÈcÑQØŸ*™*ñ%óñð —'‘'˜%“.ˆCØˆ
rE   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)r&   r”   Úinfo)r#   r3   r$   Úappendr‡   rŒ   r"   r9   r:   r‚   r%   r=   r   r&   r–   r    r’   Úrstrip)r@   r#   Ú	info_bitsÚ	item_infos       rB   Úformat_progress_lineÚ ProgressBar.format_progress_lineß   s  € Ø×(Ñ(ˆàˆ	Ø�;‰;Ñ" |Ñ';Ø#Ÿ}™}Ô,ˆLà�=�=Ø×Ñ˜TŸ_™_Ó.Ô/ÞØ×Ñ˜TŸ_™_Ó.Ô/Ø�=�=˜TŸ^Ÿ^°D·M·MØ×Ñ˜TŸ_™_Ó.Ô/Ø×ÑÑ*Ø×+Ñ+¨D×,=Ñ,=Ó>ˆIØÑ$Ø× Ñ  Ô+ð ×ÑàŸ™Ø—‘Ó(ØŸ™×*Ñ*¨9Ó5ññ÷ ‰&‹(ð	rE   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  X€l        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)r'   r(   r   Ú r   F)r'   r(   Únl)r!   r>   r?   r&   r   r'   r(   r,   Úshutilr+   r   rž   ÚmaxÚget_terminal_sizeÚcolumnsr;   rš   Ú
BEFORE_BARr’   ra   )	r@   Úbufr£   Ú	old_widthÚclutter_lengthÚ	new_widthÚclear_widthÚlineÚline_lens	            rB   rG   ÚProgressBar.render_progressú   s“  € Ø�;�;Øà�}�}à�‰ $§*¡*Ó,Ø"&§*¡*�”Ü�T—Z‘Z d§i¡i°t·z±zÒBØàˆà�>�>ÛàŸ
™
ˆIØˆDŒJÜ% d×&?Ñ&?Ó&AÓBˆNÜ˜A˜v×7Ñ7Ó9×AÑAÀNÑRÓSˆIØÓ$¨¯©Ñ)CØ—
‘
œ:Ô&Ø—
‘
˜3 §¡Ñ/Ô0Ø!*”Ø"ŒJà—j‘jˆØ�>‰>Ñ%ØŸ.™.ˆKà�
‰
”:ÔØ×(Ñ(Ó*ˆÜ˜D“>ˆØ�>‰>Ñ! T§^¡^°hÓ%>Ø%ŒNà�
‰
�4ÔØ�
‰
�3˜+Ñ0Ñ1Ô2Ø�w‰w�s‹|ˆð —?‘?Ó"Ø"ŒOÜ�ŸI™I¨T¯Z©Z¸EÒBØ�I‰I�O‰OÕð #rE   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 )NTrd   iúÿÿÿ)r4   r3   r:   r6   r8   r7   r5   r9   )r@   Ún_stepsÚsteps      rB   r^   ÚProgressBar.make_step(  s¹   € Ø�Š�GÑ�Ø�;‰;Ñ" t§x¡x°4·;±;Ó'>Ø ˆDŒMä�IŠI‹K˜$Ÿ-™-Ñ'¨3Ó.ØäŸ	š	›ˆŒð
 �8�8Ü—I’I“K $§*¡*Ñ,°·±Ñ8‰Dä—9’9“; §¡Ñ+ˆDà—8‘8˜B˜C�= D 6Ñ)ˆŒàŸ™¨DÐ0ˆ�rE   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   )r=   r*   r)   r^   rG   )r@   r±   r=   s      rB   ÚupdateÚProgressBar.update>  s`   € ð  Ñ#Ø ,Ôà×!Ò! WÑ,Õ!à×$Ñ$¨×(=Ñ(=Ó=Ø�N‰N˜4×4Ñ4Ô5Ø× Ñ Ô"Ø()ˆDÕ%ð >rE   c                ó.   • SU l         S U l        SU l        g )NFT)r9   r=   r:   rH   s    rB   ÚfinishÚProgressBar.finishX  s   € ØˆŒØ ˆÔØˆ�rE   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)z�Return a generator which yields the items added to the bar
during construction, and updates the progress bar *after* the
yielded block returns.
rT   Nr   r   )	r<   rU   r>   r2   r=   r*   rG   rµ   r¸   )r@   Úrvs     rB   rV   ÚProgressBar.generator]  sŠ   é € ð �|�|ÜÐOÓPÐPà�}�}Ø—y‘y× Ñ à—i”i�Ø$&Ô!ð
 ×,Ñ,°Ó1Ø×(Ñ(Ô*à’Ø—‘˜A–ñ  ð �K‰KŒMØ× Ñ Õ"ñ !ùs   ‚=B6¿B4Á A5B6)r*   r>   r?   r,   r5   r   r(   r=   r   r<   r9   r'   r   r:   r!   r    r%   r2   r&   r8   r3   r;   r4   r"   r#   r$   r7   r)   r+   )NÚ#r¡   z%(bar)sz  FTNFNNNNr   é   )"rA   zcabc.Iterable[V] | Noner3   z
int | Noner   r†   r   r†   r   r†   r    r†   r!   Úboolr"   r¿   r#   úbool | Noner$   r¿   r%   z)t.Callable[[V | None], str | None] | Noner&   ú
str | Noner'   zt.TextIO | Noner(   rÀ   r)   r|   r+   r|   ÚreturnÚNone)rÂ   zProgressBar[V])rN   ztype[BaseException] | NonerO   zBaseException | NonerP   zTracebackType | NonerÂ   rÃ   )rÂ   zcabc.Iterator[V])rÂ   r   ©rÂ   rÃ   )rÂ   rf   ©rÂ   r†   )r±   r|   rÂ   rÃ   rL   )r±   r|   r=   zV | NonerÂ   rÃ   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rC   rI   rQ   rW   r[   rM   Úpropertyrg   rm   rp   r‚   r‡   rŒ   r–   rž   rG   r^   rµ   r¸   rV   Ú__static_attributes__© rE   rB   r   r   +   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÷
#rE   r   c                  óT   • \ rS rSrS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	rg
)Ú_PagerWriteri  a(  Wrap a pager's output stream to strip ANSI styling when colors are
disabled.

The wrapped stream is owned by the pager strategy that produced it, so this
wrapper never closes it: ``_pipepager`` closes its pipe to signal EOF to the
pager process, ``_tempfilepager`` closes and removes its temporary file, and
``_nullpager`` leaves an external stream such as ``sys.stdout`` untouched.

The ``color`` attribute lets :func:`click.echo` detect that ANSI stripping
is handled here, so it doesn't strip a second time (see
:func:`._compat.should_strip_ansi`).
c                ó   • Xl         X l        g rL   ©Ú_streamr(   )r@   Ústreamr(   s      rB   rC   Ú_PagerWriter.__init__�  s   € ØŒØ�
rE   c                óp   • U R                   (       d  [        U5      nU R                  R                  U5      $ rL   )r(   r   rÑ   r_   ©r@   Útexts     rB   r_   Ú_PagerWriter.write‘  s(   € Ø�z�zÜ˜dÓ#ˆDà�|‰|×!Ñ! $Ó'Ð'rE   c                ó8   • U H  nU R                  U5        M     g rL   )r_   )r@   Úlinesr­   s      rB   Ú
writelinesÚ_PagerWriter.writelines—  s   € ÛˆDØ�J‰J�tÖò rE   c                ó8   • U R                   R                  5         g rL   ©rÑ   ra   rH   s    rB   ra   Ú_PagerWriter.flush›  s   € Ø�‰×ÑÕrE   c                ó8   • U R                   R                  5         g rL   rÝ   rH   s    rB   ÚcloseÚ_PagerWriter.closež  s   € ð 	�‰×ÑÕrE   c                ó.   • [        U R                  U5      $ rL   )ÚgetattrrÑ   )r@   Únames     rB   Ú__getattr__Ú_PagerWriter.__getattr__£  s   € Ü�t—|‘| TÓ*Ð*rE   rÐ   N)rÒ   út.TextIOr(   r¿   rÂ   rÃ   )rÖ   r†   rÂ   r|   )rÙ   zcabc.Iterable[str]rÂ   rÃ   rÄ   )rä   r†   rÂ   zt.Any)rÆ   rÇ   rÈ   rÉ   Ú__doc__rC   r_   rÚ   ra   rà   rå   rË   rÌ   rE   rB   rÎ   rÎ     s%   † ñôô(ôôô÷
+rE   rÎ   c                óŽ   • U (       d  gSSK nUR                  U S   5      nU(       d  g[        U5      R                  5       U SS 4$ )a‹  Resolve a pager ``argv`` to an absolute command path and its parameters.

The command is looked up with :func:`shutil.which`, which the
:mod:`subprocess` docs recommend on every platform for an unqualified name:
https://docs.python.org/3/library/subprocess.html#popen-constructor

Returns ``None`` when there is no command to run or it is not on the path,
leaving the caller to pick a fallback.
Nr   r   )r£   Úwhichr   Úabsolute)Ú	cmd_partsr£   Úcmd_filepaths      rB   Ú_resolve_pager_commandrî   §  sF   € ö Øãà—<‘< 	¨!¡Ó-€LæØô �Ó×&Ñ&Ó(¨)°A°B¨-Ð7Ð7rE   c                ól  • [        5       nUc
  [        5       n[        [        R                  5      (       a  [        U5      (       d  [        X5      $ [        R                  " [        R                  R                  SS5      5      nU(       a  [        nOg[        R                  R                  S5      S;   a  [        X5      $ [        =(       d    [        R                  R                  S5      nU(       a  S/OS/n[        U5      nUc  [        X5      $ Uu  pVU(       a  [        XVU 5      $ [!        XVU 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   ÚplatformÚ
startswithrî   Ú_tempfilepagerÚ
_pipepager)r(   ÚstdoutÚpager_cmd_partsÚuse_tempfileÚresolvedÚcmd_pathÚ
cmd_paramss          rB   Ú_pager_contextmanagerr	  Ã  sì   € ô "Ó#€Fð �~Ü“ˆä”#—)‘)×Ñ¤F¨6§N¡NÜ˜&Ó(Ð(ô —k’k¤"§*¡*§.¡.°¸"Ó"=Ó>€Oæô ‰ä�:‰:�>‰>˜&Ó!Ð%6Ó6Ü˜fÓ,Ð,ä×<œcŸl™l×5Ñ5°eÓ<ˆÞ&2˜6™(¸¸ˆä% oÓ6€HàÑä˜&Ó(Ð(à#Ñ€HæÜ˜h°EÓ:Ð:ä�h¨EÓ2Ð2rE   c              #  ó  #   • [        U S9 u  p[        U[        U 5      S9n [        R                  " [        R
                  U5      v •  UR                  5          SSS5        g! UR                  5         f = f! , (       d  f       g= f7f)zãContext 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	  rÎ   r¿   r/   r0   ÚTextIOra   )r(   rÒ   Úwriters      rB   Úget_pager_filer  ð  se   é € ô 
 UÒ	+©°ô ˜f¬D°«KÑ8ˆð	Ü—&’&œŸ™ 6Ó*Ò*à�L‰L�N÷ 
,Ð	+øð �L‰L�Nú÷ 
,Õ	+üs3   ‚
B
ŒA9£'A$Á
A9Á	B
Á$A6Á6A9Á9
BÂB
c                ól  •  [         R                  " U 5      nX!-   nU Hs  nUR                  S5      (       a  UR	                  5       S:X  a    gM1  UR                  S5      (       d  MI  [        U5      S:”  d  MZ  SUSS R	                  5       ;   d  Ms    g   g! [         a    U R                  5       n Nšf = f)	a_  Detect a raw-control-characters request in a ``less`` invocation.

Parses the tokens of the ``LESS`` environment variable and the command
line: only short-option clusters (``-R``, ``-rX``, ``-XrY``) and the
``--raw-control-chars`` long option request raw mode. Filenames and
long-option values may carry the letter ``r`` without being such a
request.
z--z--raw-control-charsTÚ-r   ÚrNF)rú   rû   Ú
ValueErrorr   Úcasefoldrl   )Úless_envr  Ú
env_tokensÚtokensÚtokens        rB   Ú_less_uses_raw_moder    s«   € ð&Ü—[’[ Ó*ˆ
ð
 Ñ$€FãˆØ×Ñ˜D×!Ñ!Ø�~‰~ÓÐ#8Ó8Ùñ 9à×Ñ˜c×"Ó"¤s¨5£z°A¥~Ø�e˜A˜B�i×(Ñ(Ó*Õ*Ùñ ð øô ó &ð —^‘^Ó%Š
ð&ús   ‚B ÂB3Â2B3c           	   #  ót  #   • SSK n[        [        R                  5      nU R                  n[
        (       a  UR                  5       nUcN  US:X  aH  [        R                  R                  SS5      n[        Xa5      (       a  SnOU(       d  U(       d  SUS'   SnUR                  [        U 5      /U-   SUR                  US	SS
9n[        R                  " [        R                  UR                  5      n X‚4v •   UR'                  5           UR)                  5         g! [          a     N0["         a  n	UR%                  5         U	eSn	A	ff = f! [          a     NNf = f! [*         a     Of = fMc  !  UR'                  5         O! [          a     Of = f  UR)                  5         f ! [*         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.

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.
r   Nrö   ÚLESSr   Tú-RFÚreplace)Úshellrø   ÚenvÚerrorsrÖ   )Ú
subprocessÚdictrü   rý   Ústemr   r  rþ   r  ÚPopenr†   ÚPIPEr/   r0   r  rø   ÚBrokenPipeErrorÚ	ExceptionÚ	terminaterà   ÚwaitÚKeyboardInterrupt)
r  r  r(   r  r  Úcmd_namer  Úcrø   Úes
             rB   r  r  $  s­  é € ó ô Œr�z‰zÓ
€Cð �}‰}€Hß
‚sð
 ×$Ñ$Ó&ˆà�}˜ VÓ+Ü—:‘:—>‘> &¨"Ó-ˆÜ˜x×4Ñ4Ø‰EÞ¦*ØˆC�‰KØˆEà×ÑÜ	ˆX‹ˆ˜*Ñ$ØØ�o‰oØØØð 	ð 	€Aô �FŠF”1—8‘8˜QŸW™WÓ%€Eð#ØˆlÒð	Ø�K‰KŒMð ðØ—‘”ð øôC ó áÜó ð
 	
�‰ŒØˆûðûô ó 	Ùð	ûô %ó Ùðúñ øð	Ø�K‰K�Møô ó 	Ùð	úð ðØ—‘”ð øô %ó Ùðúñ üsÌ   ‚C0F8Ã3D Ã9E Ä	F8ÄE ÄF8Ä
EÄ&E- Ä(	EÄ1EÅEÅE- Å
EÅF8ÅEÅF8Å
E(Å%F8Å'E(Å(F8Å-F5Å/F Å?F5Æ 
FÆ
F5ÆFÆF5ÆF#Æ"F5Æ#
F0Æ-F5Æ/F0Æ0F5Æ5F8c              #  ó"  #   • SSK nSSKn[        [        R                  5      nUR                  SUSSS9n [        R                  " [        R                  U5      U4v •  UR                  5         UR                  5         UR                  [        U 5      /UQUR                  P5        UR                  5         [        R                  " UR                  5        g! UR                  5         [        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 invoked with any parameters from ``PAGER``
followed by the temporary file name.
r   NÚwr  F)ÚmodeÚencodingr  Údelete)r  Útempfiler   r÷   r  ÚNamedTemporaryFiler/   r0   r  ra   rà   Úcallr†   rä   rü   Úunlink)r  r  r(   r  r1  r/  Úfs          rB   r  r  {  sÄ   é € ó Ûä ¤§¡Ó,€Hð 	×#Ñ#Ø˜8¨I¸eð 	$ð 	€AðÜ�fŠf”Q—X‘X˜qÓ! 5Ð(Ò(Ø	�‰Œ	Ø	�‰Œ	Ø�‰œ˜X›Ð<¨Ð<°Q·V±VÐ<Ô=ð 	
�‰Œ	Ü
�	Š	�!—&‘&Õøð 	
�‰Œ	Ü
�	Š	�!—&‘&Õüs   ‚4D·A2C Â)1DÃ2DÄDc              #  ó   #   • X4v •  g7f)a  Simply print unformatted text. This is the ultimate fallback.

The stream comes from elsewhere (typically ``sys.stdout``), so its lifecycle
is left untouched: :class:`_PagerWriter` never closes what it wraps, and it
is the only thing :func:`get_pager_file` hands to the caller.
NrÌ   )rÒ   r(   s     rB   rù   rù   ž  s   é € ð ˆ-Óù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 rL   )Úeditorr  Úrequire_saveÚ	extension)r@   r:  r  r;  r<  s        rB   rC   ÚEditor.__init__¬  s   € ð ŒØŒØ(ÔØ"�rE   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ê   )r@   Úkeyr»   rê   r:  s        rB   Ú
get_editorÚEditor.get_editor¸  sg   € Ø�;‰;Ñ"Ø—;‘;ÐÛ%ˆCÜ—‘—‘ Ó$ˆBßˆrØ’	ñ &÷ Š3Øå ã6ˆFÙ�V‹}Ó(Ø’ñ 7ð rE   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  rF  r  rü   rý   Úcopyrµ   r"  rû   r�   r'  r   r~   r}   ÚOSError)	r@   Ú	filenamesrú   r  r:  rý   r*  Ú	exit_coder+  s	            rB   Ú
edit_filesÚEditor.edit_filesÉ  sê   € ãÛà—‘Ó"ˆØ)-ˆà�8�8Ü—j‘j—o‘oÓ'ˆGØ�N‰N˜4Ÿ8™8Ô$ð	ð × Ñ Ø—[’[ Ó(¬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 rL   rÌ   rÕ   s     rB   ÚeditÚEditor.editç  s   € Ø=@rE   c                ó   • g rL   rÌ   rÕ   s     rB   rQ  rR  ì  s   € Ø47rE   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   rE   r   z
z	utf-8-sigzutf-8zeditor-)ÚprefixÚsuffixÚwbé   Úrb)r1  Ú
isinstanceÚbytesÚ	bytearrayÚendswithr   r  ÚencodeÚmkstempr<  rü   Úfdopenr_   ÚutimeÚpathÚgetatimeÚgetmtimerN  r;  r4  ÚopenÚreadÚdecode)	r@   rÖ   r1  ÚdataÚfdrä   r5  Ú	timestampr»   s	            rB   rQ  rR  ï  sÁ  € Ûà‰<Ø&)‰DÜ˜œu¤iÐ0×1Ñ1Ø‰Dæ˜DŸM™M¨$×/Ñ/Ø˜‘�çŠsØ—|‘| D¨&Ó1×8Ñ8¸ÓE‘à—{‘{ 7Ó+�à×#Ñ#¨9¸T¿^¹^Ð#ÐL‰ˆð	Ü—’˜2˜tÔ$¨Ø—‘˜”÷ %ô �HŠH�TœBŸG™G×,Ñ,¨TÓ2´B·G±G×4DÑ4DÀTÓ4JÈQÑ4NÐOÔPô Ÿ™×(Ñ(¨Ó.ˆIà�O‰O˜T˜GÔ$à× × ¤R§W¡W×%5Ñ%5°dÓ%;¸yÓ%HØô �IŠI�d�Oô �d˜DÔ! QØ—V‘V“X�÷ "ô ˜$¤¬	Ð 2×3Ñ3Øô �IŠI�d�Oð —9‘9˜[Ó)×1Ñ1°&¸$Ó?ä�IŠI�d�O÷3 %Ö$ú÷" "Õ!ûô �IŠI�d�OúsI   Â&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Å   )rL  z%cabc.Iterable[str | os.PathLike[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É   rC   rF  rN  r/   ÚoverloadrQ  rË   rÌ   rE   rB   r8  r8  «  s|   † ð "Ø-1Ø!Øð
#àð
#ð +ð
#ð ð	
#ð
 ð
#ð 
õ
#ôô"ð< ‡Z�ZÛ@ó Ø@ð ‡Z�ZÛ7ó Ø7÷-rE   r8  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.parsern  r   )Úurlrn  s     rB   Ú_unquote_fileÚopen_url.<locals>._unquote_file"  s)   € Ý(à�>‰>˜)×$Ñ$Ù˜#˜a˜b˜'Ó"ˆCàˆ
rE   Údarwinre  z-Wr  z	/dev/nullr-  )ÚstderrÚexplorerz/select,é   Úcygstartz-wÚ.zxdg-open)zhttp://zhttps://r   )rq  r†   rÂ   r†   )r  r÷   rÿ   rš   re  r"  r'  rà   r   r3  rK  rü   Ú	startfiler
   rb  Údirnamer   Ú
webbrowser)	rq  r'  Úlocater  rr  rI  Únullr*  r|  s	            rB   Úopen_urlr    sý  € Ûôô ‡|�|�xÓØˆxˆÞØ�K‰K˜ÔÞØ�K‰K˜ÔØ�‰‘M #Ó&Ô'Ü�K Ó%ˆð	Ø×#Ñ# DÐ#Ð6×;Ñ;Ó=à�J‰J�Lß	ŠÞÙ Ó$ˆCØ 
¨CÐ0ˆDðØ!—‘ tÓ,Ð,ðÜ—’˜SÔ!ð ß	ŠÞÙ Ó$ˆCØ¤§¡§¡°Ó 4Ð5‰Dà�<ˆDÞØ—‘˜DÔ!Ø�K‰K˜Ôð	Ø—?‘? 4Ó(Ð(ð
ÞÜ—'‘'—/‘/¡-°Ó"4Ó5×<¸‰Cá Ó$ˆCØ×Ñ˜j¨#Ð.Ó/ˆÞØ—6‘6“8ˆOØøðM �J‰J�Lûô ó Ùðûô
 ó Ùðûô ó 	áð	ûô ó Ø�>‰>Ð1×2Ñ2¾6Î$Ûà�O‰O˜CÔ ÙÙðú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    rB   Ú_translate_ch_to_excr†  e  s?   € Ø	ˆVƒ|ÜÓ!Ð!à	ˆVƒ|ŸCšCÜ‹jÐà	ˆVƒ|ŸšÜ‹jÐð €|rE   Úwin32c               #  ó   #   • Sv •  g 7f)Nr   rÌ   rÌ   rE   rB   Úraw_terminalr‰  s  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)Ú ô   Ã )r/   r0   ÚCallabler†   ÚmsvcrtÚgetwcheÚgetwchr†  )r   Úfuncr»   s      rB   Úgetcharr’  w  ss   € ö> Ü—6’6œ!Ÿ*™* R¬ WÑ-¬v¯~©~Ó>‰Dä—6’6œ!Ÿ*™* R¬ WÑ-¬v¯}©}Ó=ˆDá‹VˆàÐ!Ó!ð �$“&‰LˆBä˜RÔ Øˆ	rE   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ø   re  ÚfilenoÚtermiosÚ	tcgetattrÚttyÚsetrawÚ	tcsetattrÚ	TCSADRAINr  ra   rà   Úerror)r5  ri  Úold_settingss      rB   r‰  r‰  ©  sú   é € ô
 ”c—i‘i× Ñ Ü�ZÓ ˆAØ—‘“‰Bä—‘×!Ñ!Ó#ˆBØˆAð	Ü"×,Ò,¨RÓ0ˆLðÜ—
’
˜2”Ø’ä×!Ò! "¤g×&7Ñ&7¸ÔFÜ—
‘
× Ñ Ô"à‘=Ø—G‘G•Ið !øô ×!Ò! "¤g×&7Ñ&7¸ÔFÜ—
‘
× Ñ Ô"à‘=Ø—G‘G•Ið !ûä�}‰}ó 	Ùð	ü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ü   rf  rg  r   r÷   rø   r   r  r_   r†  )r   ri  r…  s      rB   r’  r’  Ä  sg   € ÜŒ^˜rÜ—’˜˜R“×'Ñ'Ô(9¼#¿)¹)Ó(DÀiÓPˆBæœœsŸz™z×*Ñ*Ü—
‘
× Ñ  Ô$ä  Ô$Ø÷ �^�^ús   ‹BB$Â$
B2)rì   ú	list[str]rÂ   ztuple[Path, list[str]] | NonerL   )r(   rÀ   rÂ   z.t.ContextManager[tuple[t.TextIO, bool | None]])r(   rÀ   rÂ   z!t.Generator[t.TextIO, None, None])r  r†   r  rŸ  rÂ   r¿   )r  r   r  rŸ  r(   rÀ   rÂ   ú(t.Iterator[tuple[t.TextIO, bool | None]])rÒ   rç   r(   rÀ   rÂ   r   )FF)rq  r†   r'  r¿   r}  r¿   rÂ   r|   )r…  r†   rÂ   rÃ   )rÂ   zcabc.Iterator[int])r   r¿   rÂ   r†   );rè   Ú
__future__r   Úcollections.abcÚabcÚcabcÚ
contextlibr�   rü   rú   r÷   r6   Útypingr/   r   r~   Úior   Úpathlibr   Útypesr   Ú_compatr	   r
   r   r   r   r   r   Ú
exceptionsr   Úutilsr   ÚTypeVarr   rä   r§   r`   ÚGenericr   rÎ   rî   r	  Úcontextmanagerr  r  r  r  rù   r8  r  r†  rÿ   rŽ  r‰  r’  r•  r—  rÌ   rE   rB   Ú<module>r°     s  ðñõ #å Û Û Û 	Û Û 
Û Û Ý  Ý Ý Ý å )Ý Ý &Ý Ý Ý Ý Ý &Ý à‡I‚IˆcƒN€ð ‡7�7ˆdƒ?Ø€JØ�Ià€JØ€IôQ#�!—)‘)˜A‘,ô Q#÷h
%+ñ %+ôP8ð: ð*3Øð*3à3õ*3ðZ ×Ñõó ðô.ð8 ×Ñà@DðSØðSØ )ðSØ2=ðSà-ôSó ðSðl ×Ñà@DðØðØ )ðØ2=ðà-ôó ððD ×Ñà+/ð	Øð	Ø(ð	à-ô	ó ð	÷qñ qöhCôLð ‡<�<�7ÓÛà×Ñóó ðõ,ó^ Ûà×Ñóó ðõ4rE   