§
    øžyj�  ã                  ó†   — d Z ddlmZ ddlZddlZddlZddlmZ ddhZddhZ	d	d
hZ
ddœdd„Zddœdd„Zdd„Zdd„Zdd„ZdS )z1Secret input prompts with masked typing feedback.é    )ÚannotationsN)ÚCallableúúúú
úúÚ*©ÚmaskÚ	read_charúCallable[[], str]ÚwriteúCallable[[str], object]ÚpromptÚstrr   Úreturnc               óÄ  — g } ||¦  «         	  | ¦   «         }|dk    r |d¦  «         t           ‚|t          v r  |d¦  «         d                     |¦  «        S |dk    r |d¦  «         t          ‚|t          v r |d¦  «         t           ‚|t
          v r"|r|                     ¦   «           |d¦  «         Œª|dk    rŒ±|                     |¦  «         |r ||¦  «         ŒÓ)zCRead one secret line while writing a mask character per typed char.TÚ z
úz ú)ÚEOFErrorÚ_ENTER_CHARSÚjoinÚKeyboardInterruptÚ
_EOF_CHARSÚ_BACKSPACE_CHARSÚpopÚappend)r   r   r   r   ÚvalueÚchs         ú>/home/ragecks/.hermes/hermes-agent/hermes_cli/secret_prompt.pyÚ_collect_masked_inputr$      s  € ð €EØ	€Eˆ&�M„M€MðØˆY‰[Œ[ˆØ�Š8ˆ8ØˆE�&‰MŒMˆMÝˆNØ•ÐÐØˆE�&‰MŒMˆMØ—7’7˜5‘>”>Ð!Ø�Š<ˆ<ØˆE�&‰MŒMˆMÝ#Ð#Ø•ÐÐØˆE�&‰MŒMˆMÝˆNØÕ!Ð!Ð!Øð Ø—	’	‘”�Ø��g‘”�ØØ�Š<ˆ<ð à�Š�RÑÔÐØð 	ØˆE�$‰KŒKˆKð5ó    c               óÒ  — t           j        }t           j        }t          |¦  «        rt          |¦  «        st	          j        | ¦  «        S t
          j        dk    rG	 t          | |¬¦  «        S # t          t          f$ r ‚ t          $ r t	          j        | ¦  «        cY S w xY w	 t          | |¬¦  «        S # t          t          f$ r ‚ t          $ r t	          j        | ¦  «        cY S w xY w)z½Prompt for a secret while showing masked typing feedback.

    Falls back to ``getpass.getpass`` when stdin/stdout are not interactive or
    when raw terminal handling is unavailable.
    Úntr   )ÚsysÚstdinÚstdoutÚ_stream_is_ttyÚgetpassÚosÚnameÚ_masked_secret_prompt_windowsr   r   Ú	ExceptionÚ_masked_secret_prompt_posix)r   r   r)   r*   s       r#   Úmasked_secret_promptr2   8   s  € õ ŒI€EÝŒZ€Få˜%Ñ Ô ð '­°vÑ(>Ô(>ð 'ÝŒ˜vÑ&Ô&Ð&å	„w�$‚€ð	+Ý0°¸dÐCÑCÔCÐCøÝ!¥8Ð,ð 	ð 	ð 	ØÝð 	+ð 	+ð 	+Ý”? 6Ñ*Ô*Ð*Ð*Ð*ð	+øøøð'Ý*¨6¸Ð=Ñ=Ô=Ð=øÝ�xÐ(ð ð ð ØÝð 'ð 'ð 'ÝŒ˜vÑ&Ô&Ð&Ð&Ð&ð'øøøs$   ÁA- Á-/BÂBÂ#B4 Â4/C&Ã%C&Úboolc                óh   — 	 t          |                      ¦   «         ¦  «        S # t          $ r Y dS w xY w)NF)r3   Úisattyr0   )Ústreams    r#   r+   r+   T   s?   € ðÝ�F—M’M‘O”OÑ$Ô$Ð$øÝð ð ð Øˆuˆuðøøøs   ‚ # £
1°1c               óF   ‡— dd l Šd	ˆfd„}d
d„}t          ||| |¬¦  «        S )Nr   r   r   c                 ód   •— ‰                      ¦   «         } | dv r‰                      ¦   «          dS | S )N>   õ   Ã ú r   )Úgetwch)r"   Úmsvcrts    €r#   r   z0_masked_secret_prompt_windows.<locals>.read_char^   s3   ø€ Ø�]Š]‰_Œ_ˆØÐ!Ð!Ð!Ø�MŠM‰OŒOˆOØ�6Øˆ	r%   ÚtextÚNonec                ó€   — t           j                             | ¦  «         t           j                             ¦   «          d S ©N©r(   r*   r   Úflush©r=   s    r#   r   z,_masked_secret_prompt_windows.<locals>.writee   ó2   € ÝŒ
×Ò˜ÑÔÐÝŒ
×ÒÑÔÐÐÐr%   r   ©r   r   ©r=   r   r   r>   )r<   r$   )r   r   r   r   r<   s       @r#   r/   r/   [   sW   ø€ Ø€M€M€Mðð ð ð ð ð ðð ð ð õ ! ¨E°6ÀÐEÑEÔEÐEr%   c               óT  — dd l }dd l}t          j                             ¦   «         }|                     |¦  «        }d	d„}d
d„}	 |                     |¦  «         t          ||| |¬¦  «        |                     ||j	        |¦  «         S # |                     ||j	        |¦  «         w xY w)Nr   r   r   c                 ó@   — t           j                             d¦  «        S )Né   )r(   r)   Úread© r%   r#   r   z._masked_secret_prompt_posix.<locals>.read_chars   s   € ÝŒy�~Š~˜aÑ Ô Ð r%   r=   r>   c                ó€   — t           j                             | ¦  «         t           j                             ¦   «          d S r@   rA   rC   s    r#   r   z*_masked_secret_prompt_posix.<locals>.writev   rD   r%   r   rE   rF   )
ÚtermiosÚttyr(   r)   ÚfilenoÚ	tcgetattrÚsetrawr$   Ú	tcsetattrÚ	TCSADRAIN)r   r   rM   rN   ÚfdÚ	old_attrsr   r   s           r#   r1   r1   l   sÉ   € Ø€N€N€NØ€J€J€Jå	Œ×	Ò	Ñ	Ô	€BØ×!Ò! "Ñ%Ô%€Ið!ð !ð !ð !ðð ð ð ð<Ø�
Š
�2‰ŒˆÝ$ Y°°vÀDÐIÑIÔIà×Ò˜"˜gÔ/°Ñ;Ô;Ð;Ð;øˆ×Ò˜"˜gÔ/°Ñ;Ô;Ð;Ð;øøøs   Á'B	 Â	B')
r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   )r   r3   )Ú__doc__Ú
__future__r   r,   r-   r(   Úcollections.abcr   r   r   r   r$   r2   r+   r/   r1   rK   r%   r#   ú<module>rY      sú   ðØ 7Ð 7à "Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø 
€
€
€
Ø $Ð $Ð $Ð $Ð $Ð $ð ˜&�>Ð Ø�dˆ|€Ø�fÐ€
ð ð%ð %ð %ð %ð %ð %ðP 69ð 'ð 'ð 'ð 'ð 'ð 'ð8ð ð ð ðFð Fð Fð Fð"<ð <ð <ð <ð <ð <r%   