Ë
    îñþi¢m  ã                  ó�  — d Z ddlmZ ddlmZ ddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z  ddl!m"Z"  ejF                  d«      Z$ejJ                  dk(  rdZ&dZ'ndZ&dZ' G d„ dejP                  e$   «      Z)d(d)d„Z*	 	 	 	 	 	 	 	 d*d„Z+	 	 	 	 	 	 	 	 d*d„Z,	 	 	 	 	 	 	 	 d+d„Z- G d„ d «      Z.d,d-d!„Z/d.d"„Z0e
jb                  d#k(  rddl2Z2ejf                  d/d$„«       Z4d0d%„Z5yddl6Z6ddl7Z7ejf                  d/d&„«       Z4d0d'„Z5y)1z¿
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)Úopen_stream)Ú
strip_ansi)Úterm_len)ÚWIN)ÚClickException)ÚechoÚVÚntúú
z[?25lz[?25h
c                  ó6  — e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Z	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Zdd„Ze	dd„«       Z
e	dd	„«       Ze	dd
„«       Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd d„Zdd„Zdd„Zy)!ÚProgressBarNc                óÈ  — || _         || _        || _        || _        || _        || _        |	| _        |
| _        || _        |xs d| _	        |€t        «       }|€
t        «       }|| _        || _        || _        d| _        || _        |dk(  | _        |€ddlm}  ||d«      }|dk(  rd }|€,|€t)        d«      ‚t+        j,                  dt/        |«      «      }t1        |«      | _        || _        d| _        g | _        |  |  t9        j8                  «       x| _        | _        d| _        d| _         d | _!        d| _"        d | _#        tI        | j                  «      | _%        d | _&        y )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                     úR/root/aria/mcps/aria-brain/venv/lib/python3.12/site-packages/click/_termui_impl.pyÚ__init__zProgressBar.__init__,   s]  € ð& #ˆŒØ$ˆŒØ(ˆÔØ ˆŒØˆŒØ ˆŒØ(ˆÔØ ˆŒØ,ˆÔØš+ 2ˆŒ
àˆ<Ü'Ó)ˆDð ˆ|Ü“z�àˆŒ	ØˆŒ
Ø 0ˆÔØ$%ˆÔ!ØˆŒ
Ø$¨™zˆŒàˆ>Ý,á  ¨2Ó.ˆFà˜Š|Ø�ØÐØˆ~ÜÐ @ÓAÐAÜ—v‘vÐ0´%¸³-Ó@ˆHÜ&*¨8£nˆŒ	ØˆŒØˆŒØ "ˆŒÙÙÜ%)§Y¡Y£[Ð0ˆŒ
�T”]Ø$ˆŒØ#ˆŒØ%)ˆŒØ"ˆŒØ&*ˆÔÜ˜tŸy™yÓ)ˆŒØ&*ˆ�ó    c                ó4   — d| _         | j                  «        | S )NT)r<   Úrender_progress©r@   s    rB   Ú	__enter__zProgressBar.__enter__s   s   € ØˆŒØ×ÑÔØˆrD   c                ó$   — | j                  «        y ©N)Úrender_finish)r@   Úexc_typeÚ	exc_valueÚtbs       rB   Ú__exit__zProgressBar.__exit__x   s   € ð 	×ÑÕrD   c                óp   — | j                   st        d«      ‚| j                  «        | j                  «       S )Nú.You need to use progress bars in a with block.)r<   ÚRuntimeErrorrF   Ú	generatorrG   s    rB   Ú__iter__zProgressBar.__iter__€   s.   € Ø�|Š|ÜÐOÓPÐPØ×ÑÔØ�~‰~ÓÐrD   c                ó*   — t        t        | «      «      S rJ   )Únextr2   rG   s    rB   Ú__next__zProgressBar.__next__†   s   € ô ”D˜“JÓÐrD   c                ó¨   — | j                   s| j                  sy | j                  j                  t        «       | j                  j                  «        y rJ   )r!   r>   r'   ÚwriteÚ	AFTER_BARÚflushrG   s    rB   rK   zProgressBar.render_finishŽ   s0   € Ø�;Š;˜dŸmšmØØ�	‰	�‰œ	Ô"Ø�	‰	�‰ÕrD   c                ó„   — | j                   ryt        | j                  t        | j                  xs d«      xs dz  d«      S )Nç      ð?r   )r:   Úminr4   Úfloatr3   rG   s    rB   ÚpctzProgressBar.pct”   s5   € à�=Š=ØÜ�4—8‘8œu T§[¡[Ò%5°AÓ6Ò;¸!Ñ<¸cÓBÐBrD   c                ó„   — | j                   syt        | j                   «      t        t        | j                   «      «      z  S ©Ng        )r5   Úsumr_   ÚlenrG   s    rB   Útime_per_iterationzProgressBar.time_per_iterationš   s,   € à�xŠxØÜ�4—8‘8‹}œu¤S¨¯©£]Ó3Ñ3Ð3rD   c                ó€   — | j                   �2| j                  s&| j                  | j                   | j                  z
  z  S yrb   )r3   r:   re   r4   rG   s    rB   ÚetazProgressBar.eta    s3   € à�;‰;Ð"¨4¯=ª=Ø×*Ñ*¨d¯k©k¸D¿H¹HÑ.DÑEÐEØrD   c                óÆ   — | j                   rUt        | j                  «      }|dz  }|dz  }|dz  }|dz  }|dz  }|dz  }|dkD  r|› d|d›d|d›d|d›�S |d›d|d›d|d›�S y)Né<   é   r   zd Ú02ú:r   )r9   Úintrg   )r@   r/   ÚsecondsÚminutesÚhourss        rB   Ú
format_etazProgressBar.format_eta¦   s–   € Ø�>Š>Ü�D—H‘H“ˆAØ˜"‘fˆGØ�"‰HˆAØ˜"‘fˆGØ�"‰HˆAØ˜‘FˆEØ�"‰HˆAØ�1ŠuØ˜˜B˜u R˜j¨¨'°"¨°Q°w¸r°lÐCÐCà ˜ 1 W¨R L°°'¸"°Ð>Ð>ØrD   c                ól   — t        | j                  «      }| j                  �|d| j                  › �z  }|S )Nú/)Ústrr4   r3   )r@   r4   s     rB   Ú
format_poszProgressBar.format_posµ   s3   € Ü�$—(‘(‹mˆØ�;‰;Ð"Ø�Q�t—{‘{�mÐ$Ñ$ˆCØˆ
rD   c                ó@   — t        | j                  dz  «      d›d�dd  S )Néd   z 4ú%r   )rm   r`   rG   s    rB   Ú
format_pctzProgressBar.format_pct»   s&   € Ü�d—h‘h ‘nÓ% bÐ)¨Ð+¨A¨BÐ/Ð/rD   c                óF  — | j                   �Rt        | j                  | j                  z  «      }| j                  |z  }|| j
                  | j                  |z
  z  z  }|S | j                  r| j                  | j                  z  }|S t        | j
                  | j                  xs dz  «      }| j                  dk7  rU| j                  |t        t        j                  | j                  | j                  z  «      dz  dz   | j                  z  «      <   dj                  |«      }|S )Nr   r   g       @g      à?r   )r3   rm   r`   r+   r   r   r:   Úlistre   ÚmathÚcosr4   Újoin)r@   Ú
bar_lengthÚbarÚcharss       rB   Ú
format_barzProgressBar.format_bar¾   s  € Ø�;‰;Ð"Ü˜TŸX™X¨¯
©
Ñ2Ó3ˆJØ—.‘. :Ñ-ˆCØ�4—?‘? d§j¡j°:Ñ&=Ñ>Ñ>ˆCð ˆ
ð �]Š]Ø—.‘. 4§:¡:Ñ-ˆCð ˆ
ô ˜Ÿ™¨D¯J©JªO¸!Ñ<Ó=ˆEØ×&Ñ&¨!Ò+ð —N‘Nð ÜÜŸ™ $§(¡(¨T×-DÑ-DÑ"DÓEÈÑKÈcÑQØŸ*™*ñ%óñð —'‘'˜%“.ˆCØˆ
rD   c                óŠ  — | j                   }g }| j                  �|€| j                   }| j                  r|j                  | j	                  «       «       |r|j                  | j                  «       «       | j                  r7| j                  r+| j                  s|j                  | j                  «       «       | j                  �.| j                  | j                  «      }|�|j                  |«       | j                  | j                  | j                  «       | j                  j!                  |«      dœz  j#                  «       S )N)r&   r€   Úinfo)r#   r3   r$   Úappendru   ry   r"   r9   r:   rq   r%   r=   r   r&   r‚   r    r~   Úrstrip)r@   r#   Ú	info_bitsÚ	item_infos       rB   Úformat_progress_linez ProgressBar.format_progress_lineÑ   s  € Ø×(Ñ(ˆàˆ	Ø�;‰;Ð" |Ð';Ø#Ÿ}™}Ð,ˆLà�=Š=Ø×Ñ˜TŸ_™_Ó.Ô/ÙØ×Ñ˜TŸ_™_Ó.Ô/Ø�=Š=˜TŸ^š^°D·M²MØ×Ñ˜TŸ_™_Ó.Ô/Ø×ÑÐ*Ø×+Ñ+¨D×,=Ñ,=Ó>ˆIØÐ$Ø× Ñ  Ô+ð ×ÑàŸ™Ø—‘Ó(ØŸ™×*Ñ*¨9Ó5ññ÷ ‰&‹(ð	rD   c                óX  — | j                   ry | j                  sW| j                  | j                  k7  r=| j                  | _        t	        | j                  | j
                  | j                  ¬«       y g }| j                  r©dd l}| j                  }d| _	        t        | j                  «       «      }t        d|j                  «       j                  |z
  «      }||k  rF| j                  �:|j!                  t"        «       |j!                  d| j                  z  «       || _        || _	        | j                  }| j                  �| j                  }|j!                  t"        «       | j                  «       }t        |«      }| j                  �| j                  |k  r|| _        |j!                  |«       |j!                  d||z
  z  «       dj%                  |«      }|| j                  k7  rE|| _        t	        || j
                  | j                  d¬«       | j
                  j'                  «        y y )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~   r[   )	r@   Úbufr�   Ú	old_widthÚclutter_lengthÚ	new_widthÚclear_widthÚlineÚline_lens	            rB   rF   z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Ø˜9Ò$¨¯©Ð)CØ—
‘
œ:Ô&Ø—
‘
˜3 §¡Ñ/Ô0Ø!*�”Ø"ˆDŒJà—j‘jˆØ�>‰>Ð%ØŸ.™.ˆKà�
‰
”:ÔØ×(Ñ(Ó*ˆÜ˜D“>ˆØ�>‰>Ð! T§^¡^°hÒ%>Ø%ˆDŒNà�
‰
�4ÔØ�
‰
�3˜+¨Ñ0Ñ1Ô2Ø�w‰w�s‹|ˆð �4—?‘?Ò"Ø"ˆDŒOÜ�˜DŸI™I¨T¯Z©Z¸EÕBØ�I‰I�O‰OÕð #rD   c                ó  — | xj                   |z  c_         | j                  � | j                   | j                  k\  rd| _        t        j                  «       | j                  z
  dk  ry t        j                  «       | _        | j                   r/t        j                  «       | j
                  z
  | j                   z  }n!t        j                  «       | j
                  z
  }| j                  dd  |gz   | _        | j                  d u| _        y )NTr]   iúÿÿÿ)r4   r3   r:   r6   r8   r7   r5   r9   )r@   Ún_stepsÚsteps      rB   Ú	make_stepz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ˆ�rD   c                óØ   — |�|| _         | xj                  |z  c_        | j                  | j                  k\  r3| j                  | j                  «       | j	                  «        d| _        yy)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œ   rF   )r@   rš   r=   s      rB   ÚupdatezProgressBar.update0  sb   € ð  Ð#Ø ,ˆDÔà×!Ò! WÑ,Õ!à×$Ñ$¨×(=Ñ(=Ò=Ø�N‰N˜4×4Ñ4Ô5Ø× Ñ Ô"Ø()ˆDÕ%ð >rD   c                ó.   — d| _         d | _        d| _        y )NFT)r9   r=   r:   rG   s    rB   ÚfinishzProgressBar.finishJ  s   € ØˆŒØ ˆÔØˆ�rD   c              #  óX  K  — | j                   st        d«      ‚| j                  s| j                  E d{  –—†  y| j                  D ]=  }|| _        | j
                  dk(  r| j                  «        |–— | j                  d«       Œ? | j                  «        | j                  «        y7 Œr­w)z¨Return a generator which yields the items added to the bar
        during construction, and updates the progress bar *after* the
        yielded block returns.
        rQ   Nr   r   )	r<   rR   r>   r2   r=   r*   rF   rž   r    )r@   Úrvs     rB   rS   zProgressBar.generatorO  s’   è ø€ ð �|Š|ÜÐOÓPÐPà�}Š}Ø—y‘y× Ñ à—i‘iò 
�Ø$&�Ô!ð
 ×,Ñ,°Ò1Ø×(Ñ(Ô*à’Ø—‘˜A•ð
ð �K‰KŒMØ× Ñ Õ"ð !ús   ‚3B*µB(¶A3B*)Nú#r‹   z%(bar)sz  FTNFNNNNr   é   )"rA   zcabc.Iterable[V] | Noner3   z
int | Noner   rt   r   rt   r   rt   r    rt   r!   Úboolr"   r¥   r#   úbool | Noner$   r¥   r%   z)t.Callable[[V | None], str | None] | Noner&   ú
str | Noner'   zt.TextIO | Noner(   r¦   r)   rm   r+   rm   ÚreturnÚNone)r¨   zProgressBar[V])rL   ztype[BaseException] | NonerM   zBaseException | NonerN   zTracebackType | Noner¨   r©   )r¨   zcabc.Iterator[V])r¨   r   )r¨   r©   )r¨   r_   ©r¨   rt   )rš   rm   r¨   r©   rJ   )rš   rm   r=   zV | Noner¨   r©   )Ú__name__Ú
__module__Ú__qualname__rC   rH   rO   rT   rW   rK   Úpropertyr`   re   rg   rq   ru   ry   r‚   r‰   rF   rœ   rž   r    rS   © rD   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ô
#rD   r   c                ó<  — t        «       }|€
t        «       }t        t        j                  «      rt        |«      st        || |«      S t        j                  t        j                  j                  dd«      «      }|r"t        rt        | ||«      ryt        | ||«      ryt        j                  j                  d«      dv rt        || |«      S t        st        j                  j                  d«      rt        | dg|«      ryt        | dg|«      ryd	dl}|j#                  «       \  }}t        j$                  |«       	 t        | dg|«      r	 t        j&                  |«       yt        || |«      t        j&                  |«       S # t        j&                  |«       w xY w)
z2Decide what method to use for paging through text.NÚPAGERr   ÚTERM)ÚdumbÚemacsÚos2ÚmoreÚlessr   )r	   r   r   ÚsysÚstdinÚ
_nullpagerÚshlexÚsplitÚosÚenvironÚgetr   Ú_tempfilepagerÚ
_pipepagerÚplatformÚ
startswithÚtempfileÚmkstempÚcloseÚunlink)rS   r(   ÚstdoutÚpager_cmd_partsrÄ   ÚfdÚfilenames          rB   ÚpagerrÌ   q  sF  € ä!Ó#€Fð €~Ü“ˆä”#—)‘)Ô¤F¨6¤NÜ˜& )¨UÓ3Ð3ô —k‘k¤"§*¡*§.¡.°¸"Ó"=Ó>€OÙÝÜ˜i¨¸%Ô@ØÜ˜	 ?°EÔ:Øä	‡z�z‡~�~�fÓÐ!2Ñ2Ü˜& )¨UÓ3Ð3ÝŒs�|‰|×&Ñ& uÔ-´>Ø�F�8˜Uô4ð 	Ü�)˜f˜X uÔ-Øãà×#Ñ#Ó%�L€BˆÜ‡H�HˆR„LðÜ�i & ¨5Ô1Øô 	�	‰	�(Õô ˜& )¨UÓ3ä
�	‰	�(ÕøŒ�	‰	�(Õús   Ä=F Å"F ÆFc                óà  — |syddl }|d   }|dd }|j                  |«      }|syt        |«      j                  «       }|j                  }ddl}	t        t        j                  «      }
|€L|dk(  rGt        j                  j                  dd«      › dj                  |«      › �}|sd	|
d<   d
}n
d|v sd|v rd
}|	j                  t        |«      g|z   d|	j                  |
dd
¬«      }|j                  €J ‚	 | D ]*  }|st        |«      }|j                  j!                  |«       Œ, 	 	 |j                  j)                  «        	 	 |j+                  «        	 y
# t"        $ r Y Œ:t$        $ r}|j'                  «        |‚d}~ww xY w# t"        $ r Y ŒLw xY w# t,        $ r Y nw xY wŒ_# 	 |j                  j)                  «        n# t"        $ r Y nw xY w	 	 |j+                  «        w # t,        $ r Y nw xY wŒ"xY w)aV  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.

    Returns ``True`` if the command was found and executed, ``False``
    otherwise so another pager can be attempted.
    Fr   Nr   r·   ÚLESSr   r‹   ú-RTÚrÚRÚreplace)Úshellr¹   ÚenvÚerrorsÚtext)r�   Úwhichr   ÚabsoluteÚnameÚ
subprocessÚdictr½   r¾   r¿   r~   ÚPopenrt   ÚPIPEr¹   r   rY   ÚBrokenPipeErrorÚ	ExceptionÚ	terminaterÆ   ÚwaitÚKeyboardInterrupt)rS   Ú	cmd_partsr(   r�   ÚcmdÚ
cmd_paramsÚcmd_filepathÚcmd_pathÚcmd_namerÚ   rÔ   Ú
less_flagsÚcrÖ   Úes                  rB   rÁ   rÁ   ž  s  € ñ$ Øãà
�A‰,€CØ˜1˜2�€Jà—<‘< Ó$€LÙØô
 �LÓ!×*Ñ*Ó,€HØ�}‰}€Hãô Œr�z‰zÓ
€Cð €}˜ VÒ+ÜŸ
™
Ÿ™ v¨rÓ2Ð3°C·H±H¸ZÓ4HÐ3IÐJˆ
ÙØˆC�‰KØ‰EØ�JÑ #¨Ñ"3ØˆEà×ÑÜ	ˆX‹ˆ˜*Ñ$ØØ�o‰oØØØð 	ó 	€Að �7‰7ÐÐÐð'Øò 	 ˆDÙÜ! $Ó'�à�G‰G�M‰M˜$Õñ		 ð"	Ø�G‰G�M‰MŒOð ðØ—‘”ð àøôG ò áÜò ð
 	
�‰ŒØˆûðûô ò 	Ùð	ûô %ò Ùðúð øð	Ø�G‰G�M‰M�Oøô ò 	Ùð	úð ðØ—‘”ð øô %ò Ùðúð ús¢   Ã3/E Ä"F Ä$E? Å F Å	E<ÅF ÅE<Å%E7Å7E<Å<F Å?	FÆ
FÆ	FÆFÆG-Æ F;Æ:G-Æ;	GÇG-ÇGÇG-ÇGÇG-Ç	G)Ç&G-Ç(G)Ç)G-c                ó¬  — |syddl }|d   }|j                  |«      }|syt        |«      j                  «       }ddl}ddl}|j                  «       \  }	}
dj                  | «      }|st        |«      }t        t        j                  «      }t        |
d«      d   5 }|j                  |j                  |«      «       ddd«       	 |j                  t!        |«      |
g«       t%        j&                  |	«       t%        j(                  |
«       y# 1 sw Y   ŒQxY w# t"        $ r Y ŒBw xY w# t%        j&                  |	«       t%        j(                  |
«       w xY w)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`.

    Returns ``True`` if the command was found and executed, ``False``
    otherwise so another pager can be attempted.
    Fr   Nr   ÚwbT)r�   r×   r   rØ   rÚ   rÄ   rÅ   r~   r   r   r¸   rÈ   r   rY   ÚencodeÚcallrt   ÚOSErrorr½   rÆ   rÇ   )rS   rã   r(   r�   rä   ræ   rç   rÚ   rÄ   rÊ   rË   rÖ   ÚencodingÚfs                 rB   rÀ   rÀ     s  € ñ Øãà
�A‰,€Cà—<‘< Ó$€LÙØô �LÓ!×*Ñ*Ó,€HãÛà×#Ñ#Ó%�L€Bˆà�7‰7�9Ó€DÙÜ˜$ÓˆÜ ¤§¡Ó,€HÜ	�X˜tÓ	$ QÑ	'ð '¨1Ø	�‰�—‘˜HÓ%Ô&÷'ðØ�‰œ˜X›¨Ð1Ô2ô
 	�‰�ŒÜ
�	‰	�(Ôà÷'ð 'ûô ò áðûô 	�‰�ŒÜ
�	‰	�(Õús0   Â!DÃD ÄDÄ	D$Ä!D' Ä#D$Ä$D' Ä',Ec                óN   — |D ]   }|st        |«      }| j                  |«       Œ" y)z>Simply print unformatted text.  This is the ultimate fallback.N)r   rY   )ÚstreamrS   r(   rÖ   s       rB   rº   rº   :  s,   € ð ò ˆÙÜ˜dÓ#ˆDØ�‰�TÕñrD   c                  ó”   — e Zd Z	 	 	 	 d	 	 	 	 	 	 	 	 	 d	d„Zd
d„Zdd„Zej                  dd„«       Zej                  dd„«       Zdd„Zy)ÚEditorNc                ó<   — || _         || _        || _        || _        y rJ   )ÚeditorrÔ   Úrequire_saveÚ	extension)r@   rø   rÔ   rù   rú   s        rB   rC   zEditor.__init__E  s!   € ð ˆŒØˆŒØ(ˆÔØ"ˆ�rD   c                óÌ   — | j                   �| j                   S dD ]'  }t        j                  j                  |«      }|sŒ%|c S  t        ryddlm} dD ]  } ||«      €Œ|c S  y)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_editorzEditor.get_editorQ  sm   € Ø�;‰;Ð"Ø—;‘;ÐØ%ò 	ˆCÜ—‘—‘ Ó$ˆBÚØ’	ð	õ Øå à6ò 	ˆFÙ�V‹}Ñ(Ø’ð	ð rD   c                ó  — ddl }ddl}| j                  «       }d}| j                  r9t        j
                  j                  «       }|j                  | j                  «       	 |j                   |j                  |«      t        |«      z   |¬«      }|j                  «       }|dk7  r$t        t        d«      j                  |¬«      «      ‚y# t        $ r+}t        t        d«      j                  ||¬«      «      |‚d}~ww xY w)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Ú   r  rÔ   r½   r¾   Úcopyrž   rÜ   r¼   r{   rá   r   Ú_Úformatrð   )	r@   Ú	filenamesr»   rÚ   rø   r¾   rê   Ú	exit_coderë   s	            rB   Ú
edit_fileszEditor.edit_filesb  sî   € ãÛà—‘Ó"ˆØ)-ˆà�8Š8Ü—j‘j—o‘oÓ'ˆGØ�N‰N˜4Ÿ8™8Ô$ð	ð × Ñ Ø �U—[‘[ Ó(¬4°	«?Ñ:Øð !ó ˆAð Ÿ™›ˆIØ˜AŠ~Ü$ÜÐ0Ó1×8Ñ8ÀÐ8ÓGóð ð øô ò 	Ü ÜÐ1Ó2×9Ñ9ÀÈ1Ð9ÓMóàðûð	ús   Á!A(C
 Ã
	C>Ã&C9Ã9C>c                 ó   — y rJ   r¯   ©r@   rÖ   s     rB   ÚeditzEditor.edit€  s   € Ø=@rD   c                 ó   — y rJ   r¯   r  s     rB   r  zEditor.edit…  s   € Ø47rD   c                ó–  — dd l }|€d}njt        |t        t        f«      r|}nQ|r|j	                  d«      s|dz  }t
        r"|j                  dd«      j                  d«      }n|j                  d«      }|j                  d| j                  ¬«      \  }}	 t        j                  |d	«      5 }|j                  |«       d d d «       t        j                  |t        j                  j                  |«      t        j                  j!                  |«      d
z
  f«       t        j                  j!                  |«      }| j#                  |f«       | j$                  r9t        j                  j!                  |«      |k(  r	 t        j&                  |«       y t)        |d«      5 }|j+                  «       }d d d «       t        |t        t        f«      rt        j&                  |«       S j-                  d«      j                  dd«      t        j&                  |«       S # 1 sw Y   �Œ]xY w# 1 sw Y   ŒyxY w# t        j&                  |«       w xY w)Nr   rD   r   z
z	utf-8-sigzutf-8zeditor-)ÚprefixÚsuffixrí   é   Úrb)rÄ   Ú
isinstanceÚbytesÚ	bytearrayÚendswithr   rÒ   rî   rÅ   rú   r½   ÚfdopenrY   ÚutimeÚpathÚgetatimeÚgetmtimer  rù   rÇ   ÚopenÚreadÚdecode)	r@   rÖ   rÄ   ÚdatarÊ   rÙ   rò   Ú	timestampr¢   s	            rB   r  zEditor.editˆ  sÆ  € Ûàˆ<Ø&)‰DÜ˜œu¤iÐ0Ô1Ø‰Dá˜DŸM™M¨$Ô/Ø˜‘�åØ—|‘| D¨&Ó1×8Ñ8¸ÓE‘à—{‘{ 7Ó+�à×#Ñ#¨9¸T¿^¹^Ð#ÓL‰ˆˆDð	Ü—‘˜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Øô �I‰I�d�Oð —9‘9˜[Ó)×1Ñ1°&¸$Ó?ä�I‰I�d�O÷3ñ ú÷"ð ûô �I‰I�d�OúsI   ÂH1 Â+HÂ=B<H1 ÆH1 ÆH%Æ-H1 Ç" H1 ÈH"ÈH1 È%H.È*H1 È1I)NNTz.txt)
rø   r§   rÔ   zcabc.Mapping[str, str] | Nonerù   r¥   rú   rt   r¨   r©   rª   )r	  ú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­   rC   r  r  r/   Úoverloadr  r¯   rD   rB   rö   rö   D  s|   „ ð "Ø-1Ø!Øð
#àð
#ð +ð
#ð ð	
#ð
 ð
#ð 
ó
#óó"ð< ‡Z�ZÚ@ó Ø@ð ‡Z�ZÚ7ó Ø7ô-rD   rö   c                ó`  — dd l }dd„}t        j                  dk(  r~dg}|r|j                  d«       |r|j                  d«       |j                   || «      «       t	        dd«      }	 |j                  ||¬	«      j                  «       |j                  «        S t        r\|r || «      } d
d| › �g}n8dg}|r|j                  d«       |j                  d«       |j                  | «       	 |j                  |«      S t        re|r* || «      } dt        j                  j                  | «      g}n'dg}|r|j                  d«       |j                  | «       	 |j                  |«      S 	 |r*t        j                  j                   || «      «      xs d} n || «      } |j                  d| g«      }|r|j                  «       S y# |j                  «        w xY w# t        $ r Y yw xY w# t        $ r Y yw xY w# t        $ r/ | j                  d«      r|s|sdd l}|j	                  | «       Y yY yw xY w)Nr   c                óJ   — ddl m} | j                  d«      r || dd  «      } | S )Nr   )Úunquotezfile://é   )Úurllib.parser'  rÃ   )Úurlr'  s     rB   Ú_unquote_filezopen_url.<locals>._unquote_file»  s&   € Ý(à�>‰>˜)Ô$Ù˜#˜a˜b˜'Ó"ˆCàˆ
rD   Údarwinr  z-WrÏ   z	/dev/nullÚw)ÚstderrÚexplorerz/select,r7   z/WAITr   é   Úcygstartz-wú.zxdg-open)zhttp://zhttps://r   )r*  rt   r¨   rt   )rÚ   r¸   rÂ   r…   r  rÜ   rá   rÆ   r   rï   rð   r
   r½   r  ÚdirnamerÃ   Ú
webbrowser)	r*  rá   ÚlocaterÚ   r+  r  Únullrê   r4  s	            rB   Úopen_urlr7  ¸  s  € Ûóô ‡|�|�xÒØˆxˆÙØ�K‰K˜ÔÙØ�K‰K˜ÔØ�‰‘M #Ó&Ô'Ü�K Ó%ˆð	Ø×#Ñ# D°Ð#Ó6×;Ñ;Ó=à�J‰J�LÝ	ÙÙ Ó$ˆCØ (¨3¨%Ð 0Ð1‰Dà�9ˆDÙØ—‘˜GÔ$Ø�K‰K˜ŒOØ�K‰K˜Ôð	Ø—?‘? 4Ó(Ð(õ 
ÙÙ Ó$ˆCØ¤§¡§¡°Ó 4Ð5‰Dà�<ˆDÙØ—‘˜DÔ!Ø�K‰K˜Ôð	Ø—?‘? 4Ó(Ð(ð
ÙÜ—'‘'—/‘/¡-°Ó"4Ó5Ò<¸‰Cá Ó$ˆCØ×Ñ˜j¨#Ð.Ó/ˆÙØ—6‘6“8ˆOØøðO �J‰J�Lûô ò 	áð	ûô ò 	áð	ûô ò Ø�>‰>Ð1Ô2¹6É$Ûà�O‰O˜CÔ ÙÙðúsC   Á) G Ã+G ÅG& Å(AG5 ÇGÇ	G#Ç"G#Ç&	G2Ç1G2Ç53H-È,H-c                óx   — | dk(  r
t        «       ‚| dk(  rt        s
t        «       ‚| dk(  rt        r
t        «       ‚y y )Núúú)râ   r   ÚEOFError)Úchs    rB   Ú_translate_ch_to_excr>  ÿ  s;   € Ø	ˆV‚|ÜÓ!Ð!à	ˆV‚|�CÜ‹jÐà	ˆV‚|�Ü‹jÐð €|rD   Úwin32c               #  ó   K  — d–— y ­w)Nr   r¯   r¯   rD   rB   Úraw_terminalrA    s   è ø€ à‹ùs   ‚c                ó8  — | r<t        j                  t         j                  g t        f   t        j
                  «      }n;t        j                  t         j                  g t        f   t        j                  «      } |«       }|dv r
| |«       z  }t        |«       |S )N)ú õ   Ã )r/   r0   ÚCallablert   ÚmsvcrtÚgetwcheÚgetwchr>  )r   Úfuncr¢   s      rB   ÚgetcharrJ    ss   € ñ> Ü—6‘6œ!Ÿ*™* R¬ WÑ-¬v¯~©~Ó>‰Dä—6‘6œ!Ÿ*™* R¬ WÑ-¬v¯}©}Ó=ˆDá‹VˆàÐ!Ñ!ð ‘$“&‰LˆBä˜RÔ Øˆ	rD   c               #  óª  K  — t        t        j                  «      st        d«      } | j	                  «       }n t        j                  j	                  «       }d } 	 t        j                  |«      }	 t        j                  |«       |–— t        j                  |t
        j                  |«       t        j                  j                  «        | �| j                  «        y y # t        j                  |t
        j                  |«       t        j                  j                  «        | �| j                  «        w w xY w# t
        j                  $ r Y y w xY w­w)Nz/dev/tty)r   r¸   r¹   r  ÚfilenoÚtermiosÚ	tcgetattrÚttyÚsetrawÚ	tcsetattrÚ	TCSADRAINrÈ   r[   rÆ   Úerror)rò   rÊ   Úold_settingss      rB   rA  rA  C  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ÁD: Á/C ÂAD: ÃEÃAD7Ä7D: Ä:EÅEÅEÅEc                óJ  — t        «       5 }t        j                  |d«      j                  t	        t
        j                  «      d«      }| r8t        t
        j                  «      rt
        j                  j                  |«       t        |«       |cd d d «       S # 1 sw Y   y xY w)Né    rÒ   )rA  r½   r  r   r   r¸   r¹   r   rÈ   rY   r>  )r   rÊ   r=  s      rB   rJ  rJ  ^  so   € Ü‹^ð 	˜rÜ—‘˜˜R“×'Ñ'Ô(9¼#¿)¹)Ó(DÀiÓPˆBáœœsŸz™zÔ*Ü—
‘
× Ñ  Ô$ä  Ô$Ø÷	÷ 	ò 	ús   ‹BBÂB"rJ   )rS   r#  r(   r¦   r¨   r©   )rS   r#  rã   z	list[str]r(   r¦   r¨   r¥   )rô   zt.TextIOrS   r#  r(   r¦   r¨   r©   )FF)r*  rt   rá   r¥   r5  r¥   r¨   rm   )r=  rt   r¨   r©   )r¨   zcabc.Iterator[int])r   r¥   r¨   rt   )8Ú__doc__Ú
__future__r   Úcollections.abcÚabcÚcabcÚ
contextlibr|   r½   r»   r¸   r6   Útypingr/   r   r  Úior   Úpathlibr   Útypesr   Ú_compatr	   r
   r   r   r   r   r   r   Ú
exceptionsr   Úutilsr   ÚTypeVarr   rÙ   r‘   rZ   ÚGenericr   rÌ   rÁ   rÀ   rº   rö   r7  r>  rÂ   rF  ÚcontextmanagerrA  rJ  rM  rO  r¯   rD   rB   ú<module>rg     s  ðñõ #å Û Û Û 	Û Û 
Û Û Ý  Ý Ý Ý å )Ý Ý &Ý Ý  Ý Ý Ý Ý &Ý à€A‡I�IˆcƒN€à‡7�7ˆd‚?Ø€JØ�Ià€JØ€IôC#�!—)‘)˜A‘,ô C#ôL
*ðZeØ!ðeØ.7ðeØ@Kðeà	óeðP1Ø!ð1Ø.7ð1Ø@Kð1à	ó1ðhØðØ!3ðØ<Gðà	ó÷qñ qôhDóNð ‡<�<�7ÒÛà×Ñòó ðô,ó^ Ûà×Ñòó ðô4rD   