
    z%if                         	 d dl Z d dlZd dlZd dlZd dlZg dZ G d de      Zd
dZd
dZ	d
dZ
ddZd	 Z	 d dlZej                  ej                  f eZy# eef$ r 	 d dlZe	ZY y# e$ r e
ZY Y yw xY ww xY w)    N)getpassgetuserGetPassWarningc                       e Zd Zy)r   N)__name__
__module____qualname__     ;/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/getpass.pyr   r      s    r   r   c                    	 d }t        j                         5 }	 t        j                  dt        j                  t        j
                  z        }t        j                  |d      }|j                  |       t        j                  |      }|j                  |       |s|}|	 t'        j(                  |      }|d d  }|dxx   t&        j*                   z  cc<   t&        j,                  }	t/        t&        d      r|	t&        j0                  z  }		 t'        j2                  ||	|       t5        | ||      }t'        j2                  ||	|       |j7                          	 |j;                  d       |cd d d        S # t        $ ry |j                          	 t        j                  j                         }n## t        t         f$ r d }t#        | |      }Y nw xY wt        j                  }|st        j$                  }Y Ww xY w# t'        j2                  ||	|       |j7                          w xY w# t&        j8                  $ r' | ||ur|j                          t#        | |      }Y w xY w# 1 sw Y   y xY w)Nz/dev/ttyzw+   TCSASOFT)input
)
contextlib	ExitStackosopenO_RDWRO_NOCTTYioFileIOenter_contextTextIOWrapperOSErrorclosesysstdinfilenoAttributeError
ValueErrorfallback_getpassstderrtermios	tcgetattrECHO	TCSAFLUSHhasattrr   	tcsetattr
_raw_inputflusherrorwrite)
promptstreampasswdstackfdttyr   oldnewtcsetattr_flagss
             r   unix_getpassr8      s    F				 15	$RYYr{{%:;B))B%C$$$S)E& >:''+!fA7<<-'")"3"37J/#w'7'77O#%%b/3?'eDF%%b/3?LLN 	Tc1 1  
	$KKM:YY%%'"J/ :)&&9: IIE
	$0 %%b/3?LLN== 
:%  &KKM)&&9
:I1 1s   I$BE6 I$#A)H'%G;2'H'I$6G8F/.G8/GG8G%G84I$7G88I$;)H$$H''6I!I$ I!!I$$I-c                 h   	 t         j                  t         j                  urt        | |      S | D ]  }t	        j
                  |        d}	 t	        j                         }|dk(  s|dk(  rn|dk(  rt        |dk(  r|d d }n||z   };t	        j
                  d       t	        j
                  d       |S )N r   )r   r   	__stdin__r#   msvcrtputwchgetwchKeyboardInterrupt)r/   r0   cpws       r   win_getpassrF   a   s    D
yy%// a	B
MMO9T	;##9CRBaB  MM$
MM$Ir   c                     t        j                  dt        d       |st        j                  }t        d|       t        | |      S )Nz%Can not control echo on the terminal.   )
stacklevelz&Warning: Password input may be echoed.)file)warningswarnr   r   r$   printr+   )r/   r0   s     r   r#   r#   x   s:    MM9> 	
2@ff%%r   c                    |st         j                  }|st         j                  }t        |       } | r"	 |j	                  |        |j                          |j                         }|st        |d   dk(  r|d d }|S # t
        $ rK | j                  |j                  d      } | j                  |j                        } |j	                  |        Y w xY w)Nreplacer>   r   )r   r$   r   strr.   UnicodeEncodeErrorencodeencodingdecoder,   readlineEOFError)r/   r0   r   lines       r   r+   r+      s    		[F	!LL  	>>DBx4CRyK " 	!]]6??I>F]]6??3FLL 		!s   A; ;ACCc                      	 dD ]'  } t         j                  j                  |       }|s%|c S  dd l}|j	                  t        j
                               d   S )N)LOGNAMEUSERLNAMEUSERNAMEr   )r   environgetpwdgetpwuidgetuid)nameuserr_   s      r   r   r      sQ     9 zz~~d#K <<		$Q''r   )z
Password: N)r:   NN)r   r   r   r   rK   __all__UserWarningr   r8   rF   r#   r+   r   r%   r&   r*   r   ImportErrorr!   r@   r
   r   r   <module>rg      s   
   	 	 
 
0 ([ 'AH.&2($ w((( G 	^$    #"#s/   A A7 A($A7(A3/A72A33A7