
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,a. ã                   @   s€  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Zd dlZd dl	Z	d dlm
Z ddddddd	d
ddddddgZzd dlZd dlZdZW n0 ek
rÄ   dZd dlZd dlZd dlZY n‚X d dlmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z% e &ddddddddddddd d!d"d#d$d%d&g¡ G d'd„ de'ƒZ(G d(d„ de(ƒZ)G d)d„ de(ƒZ*e�rœG d*d„ dƒZ+G d+d,„ d,e,ƒZ-n&e.ed-d.ƒZ/e0ed/ƒ�r¼ej1Z2nej3Z2e�rÖdZ4d0d1„ Z5ng Z4d2d1„ Z5d3Z6d4Z7d5Z8d6d7„ Z9d8d9„ Z:dd:œd;d„Z;d<d„ Z<dd:œd=d
„Z=G d>d„ de>ƒZ?ddddd?œd@d„Z@dAdB„ ZAdCd„ ZBdDd	„ ZCdEdF„ ZDeDƒ ZEG dGd„ de>ƒZFdS )Hé    N)Ú	monotonicÚPopenÚPIPEÚSTDOUTÚcallÚ
check_callÚgetstatusoutputÚ	getoutputÚcheck_outputÚrunÚCalledProcessErrorÚDEVNULLÚSubprocessErrorÚTimeoutExpiredÚCompletedProcessTF)ÚCREATE_NEW_CONSOLEÚCREATE_NEW_PROCESS_GROUPÚSTD_INPUT_HANDLEÚSTD_OUTPUT_HANDLEÚSTD_ERROR_HANDLEÚSW_HIDEÚSTARTF_USESTDHANDLESÚSTARTF_USESHOWWINDOWÚABOVE_NORMAL_PRIORITY_CLASSÚBELOW_NORMAL_PRIORITY_CLASSÚHIGH_PRIORITY_CLASSÚIDLE_PRIORITY_CLASSÚNORMAL_PRIORITY_CLASSÚREALTIME_PRIORITY_CLASSÚCREATE_NO_WINDOWÚDETACHED_PROCESSÚCREATE_DEFAULT_ERROR_MODEÚCREATE_BREAKAWAY_FROM_JOBr   r   r   r   r   r   r   r   ÚSTARTUPINFOr   r   r   r   r   r   r   r    r!   r"   c                   @   s   e Zd ZdS )r   N)Ú__name__Ú
__module__Ú__qualname__© r'   r'   ú//opt/alt/python38/lib64/python3.8/subprocess.pyr   `   s    c                   @   s8   e Zd Zd	dd„Zdd„ Zedd„ ƒZejdd„ ƒZdS )
r   Nc                 C   s   || _ || _|| _|| _d S ©N)Ú
returncodeÚcmdÚoutputÚstderr)Úselfr*   r+   r,   r-   r'   r'   r(   Ú__init__j   s    zCalledProcessError.__init__c                 C   sh   | j rT| j dk rTzd| jt | j  ¡f W S  tk
rP   d| j| j  f  Y S X nd| j| j f S d S )Nr   zCommand '%s' died with %r.z)Command '%s' died with unknown signal %d.z.Command '%s' returned non-zero exit status %d.)r*   r+   ÚsignalZSignalsÚ
ValueError©r.   r'   r'   r(   Ú__str__p   s     ÿ ÿ ÿzCalledProcessError.__str__c                 C   s   | j S r)   ©r,   r2   r'   r'   r(   Ústdout|   s    zCalledProcessError.stdoutc                 C   s
   || _ d S r)   r4   ©r.   Úvaluer'   r'   r(   r5   �   s    )NN©r$   r%   r&   r/   r3   Úpropertyr5   Úsetterr'   r'   r'   r(   r   c   s   

c                   @   s8   e Zd Zd	dd„Zdd„ Zedd„ ƒZejdd„ ƒZdS )
r   Nc                 C   s   || _ || _|| _|| _d S r)   )r+   Útimeoutr,   r-   )r.   r+   r;   r,   r-   r'   r'   r(   r/   �   s    zTimeoutExpired.__init__c                 C   s   d| j | jf S )Nz'Command '%s' timed out after %s seconds)r+   r;   r2   r'   r'   r(   r3   •   s    
ÿzTimeoutExpired.__str__c                 C   s   | j S r)   r4   r2   r'   r'   r(   r5   ™   s    zTimeoutExpired.stdoutc                 C   s
   || _ d S r)   r4   r6   r'   r'   r(   r5   �   s    )NNr8   r'   r'   r'   r(   r   ˆ   s   

c                   @   s,   e Zd Zdddddddœdd„Zdd„ ZdS )r#   r   N©ÚdwFlagsÚ	hStdInputÚ
hStdOutputÚ	hStdErrorÚwShowWindowÚlpAttributeListc                C   s0   || _ || _|| _|| _|| _|p(dg i| _d S )NÚhandle_listr<   )r.   r=   r>   r?   r@   rA   rB   r'   r'   r(   r/   ¦   s    zSTARTUPINFO.__init__c                 C   s@   | j  ¡ }d|kr"t|d ƒ|d< t| j| j| j| j| j|d�S )NrC   r<   )	rB   ÚcopyÚlistr#   r=   r>   r?   r@   rA   )r.   Z	attr_listr'   r'   r(   rD   ¯   s    
ûzSTARTUPINFO.copy)r$   r%   r&   r/   rD   r'   r'   r'   r(   r#   ¥   s     ÿ	c                   @   s2   e Zd ZdZejfdd„Zdd„ Zdd„ ZeZ	dS )	ÚHandleFc                 C   s   | j sd| _ || ƒ d S )NT)Úclosed)r.   ÚCloseHandler'   r'   r(   ÚClose¿   s    zHandle.Closec                 C   s    | j sd| _ t| ƒS tdƒ‚d S )NTzalready closed)rG   Úintr1   r2   r'   r'   r(   ÚDetachÄ   s    zHandle.Detachc                 C   s   d| j jt| ƒf S )Nz%s(%d))Ú	__class__r$   rJ   r2   r'   r'   r(   Ú__repr__Ê   s    zHandle.__repr__N)
r$   r%   r&   rG   Ú_winapirH   rI   rK   rM   Ú__del__r'   r'   r'   r(   rF   ¼   s
   rF   ZPIPE_BUFi   ÚPollSelectorc                   C   s   d S r)   r'   r'   r'   r'   r(   Ú_cleanupè   s    rQ   c               	   C   s\   t d krd S t d d … D ]>} | jtjd�}|d k	rzt  | ¡ W q tk
rT   Y qX qd S )N©Ú
_deadstate)Ú_activeÚ_internal_pollÚsysÚmaxsizeÚremover1   )ÚinstÚresr'   r'   r(   rQ   ñ   s    éÿÿÿÿéþÿÿÿéýÿÿÿc                  C   s*   g } t jj}|dkr&|  dd|  ¡ | S )Nr   ú-ÚO)rV   ÚflagsÚoptimizeÚappend)Úargsr7   r'   r'   r(   Ú"_optim_args_from_interpreter_flags  s
    rd   c                  C   sV  dddddddœ} t ƒ }|  ¡ D ].\}}ttj|ƒ}|dkr | d	||  ¡ q tjjrd| d
¡ n$tjjrv| d¡ tjjrˆ| d¡ tj	d d … }tjj
}ttdi ƒ}d|k}|dkrÆ| d¡ n|rÔ| d¡ |râ| d¡ |D ]}| d| ¡ qæ|�r
| d¡ dD ]B}||k�r|| }	|	dk�r4|}
nd||	f }
| d|
f¡ �q|S )NÚdÚBÚSÚvÚbÚq)ÚdebugÚdont_write_bytecodeÚno_siteÚverboseÚbytes_warningÚquietr   r^   z-Iz-Ez-sÚ	_xoptionsÚdevé   zerror::BytesWarningzdefault::BytesWarningÚdefaultz-W)ú-Xrr   )ZfaulthandlerÚtracemallocZ
importtimeZshowalloccountZshowrefcountÚutf8Tz%s=%sru   )rd   ÚitemsÚgetattrrV   r`   rb   ÚisolatedÚignore_environmentÚno_user_siteÚwarnoptionsro   rX   Úextend)Zflag_opt_maprc   ÚflagÚoptrh   Zwarnoptsro   ZxoptionsÚdev_moder7   Úargr'   r'   r(   Ú_args_from_interpreter_flags  sP    ø






rƒ   ©r;   c              
   O   sL   t ||Ž�8}z|j| d�W W  5 Q R £ S    | ¡  ‚ Y nX W 5 Q R X d S )Nr„   )r   ÚwaitÚkill)r;   Ú	popenargsÚkwargsÚpr'   r'   r(   r   L  s    c                  O   s6   t | |Ž}|r2| d¡}|d kr(| d }t||ƒ‚dS )Nrc   r   )r   Úgetr   )r‡   rˆ   Úretcoder+   r'   r'   r(   r   ]  s    



c                 O   sb   d|krt dƒ‚d|krJ|d d krJ| d¡s8| d¡r>d}nd}||d< t|t| dd	œ|—ŽjS )
Nr5   z3stdout argument not allowed, it will be overridden.ÚinputÚuniversal_newlinesÚtextÚ ó    T)r5   r;   Úcheck)r1   rŠ   r   r   r5   )r;   r‡   rˆ   Úemptyr'   r'   r(   r
   p  s    #ÿc                   @   s&   e Zd Zddd„Zdd„ Zdd„ ZdS )	r   Nc                 C   s   || _ || _|| _|| _d S r)   )rc   r*   r5   r-   )r.   rc   r*   r5   r-   r'   r'   r(   r/   ®  s    zCompletedProcess.__init__c                 C   sh   d  | j¡d  | j¡g}| jd k	r4| d  | j¡¡ | jd k	rP| d  | j¡¡ d  t| ƒjd |¡¡S )Nz	args={!r}zreturncode={!r}zstdout={!r}zstderr={!r}z{}({})z, )	Úformatrc   r*   r5   rb   r-   Útyper$   Újoin)r.   rc   r'   r'   r(   rM   ´  s    

ÿ

zCompletedProcess.__repr__c                 C   s    | j rt| j | j| j| jƒ‚d S r)   )r*   r   rc   r5   r-   r2   r'   r'   r(   Úcheck_returncode½  s    ÿz!CompletedProcess.check_returncode)NN)r$   r%   r&   r/   rM   r–   r'   r'   r'   r(   r   £  s   
	)rŒ   Úcapture_outputr;   r‘   c                 O   s   | d k	r&|  d¡d k	rtdƒ‚t|d< |r^|  d¡d k	sF|  d¡d k	rNtdƒ‚t|d< t|d< t||Ž�¢}z|j| |d�\}}W n^ tk
rÊ }	 z,| ¡  tr°| ¡ \|	_|	_	n| 
¡  ‚ W 5 d }	~	X Y n   | ¡  ‚ Y nX | ¡ }
|�r|
�rt|
|j||d�‚W 5 Q R X t|j|
||ƒS )NÚstdinz/stdin and input arguments may not both be used.r5   r-   z@stdout and stderr arguments may not be used with capture_output.r„   ©r,   r-   )rŠ   r1   r   r   Úcommunicater   r†   Ú
_mswindowsr5   r-   r…   Úpollr   rc   r   )rŒ   r—   r;   r‘   r‡   rˆ   Zprocessr5   r-   Úexcr‹   r'   r'   r(   r   Ä  s8     ÿc                 C   sè   g }d}t tj| ƒD ]È}g }|r*| d¡ d|kp>d|kp>| }|rN| d¡ |D ]b}|dkrj| |¡ qR|dkr˜| dt|ƒ d ¡ g }| d¡ qR|rª| |¡ g }| |¡ qR|rÄ| |¡ |r| |¡ | d¡ qd |¡S )	NFú ú	ú"ú\é   z\"r�   )ÚmapÚosÚfsdecoderb   Úlenr~   r•   )ÚseqÚresultZ	needquoter‚   Zbs_bufÚcr'   r'   r(   Úlist2cmdline	  s4    




rª   c              
   C   sl   zt | ddtd�}d}W n. tk
rF } z|j}|j}W 5 d }~X Y nX |dd … dkrd|d d… }||fS )NT)ÚshellrŽ   r-   r   r[   Ú
)r
   r   r   r,   r*   )r+   ÚdataZexitcodeZexr'   r'   r(   r   R  s    c                 C   s   t | ƒd S ©Nrs   )r   )r+   r'   r'   r(   r	   q  s    
c               
   C   sª   t sttdƒsdS tjdkr dS zjt d¡} | jdd�}t|ƒdkrHt‚|d	 }t	t
t|d  d
¡ƒƒ}tjdkrˆ|dkrˆ|dkrˆW dS W n tttfk
r¤   Y nX dS )NÚposix_spawnFÚdarwinTÚCS_GNU_LIBC_VERSIONrs   )Úmaxsplitr¢   r   Ú.ZlinuxZglibc)r¢   é   )r›   Úhasattrr¤   rV   ÚplatformÚconfstrÚsplitr¦   r1   Útupler£   rJ   ÚAttributeErrorÚOSError)ZverÚpartsZlibcÚversionr'   r'   r(   Ú_use_posix_spawn~  s     


r¾   c                   @   s¤  e Zd ZdZdJddddœdd	„Zed
d„ ƒZejdd„ ƒZdd„ Zdd„ Z	dd„ Z
ejejfdd„Zdd„ Zdd„ ZdKdd„Zdd„ Zdd„ ZdLdd „ZdMd!d"„Zd#d$„ Ze�rd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zdejejej fd-d.„Z!d/d0„ Z"d1d2„ Z#d3d4„ Z$d5d6„ Z%d7d8„ Z&e&Z'nŠd9d&„ Zd:d;„ Z(d<d,„ Ze)j*e)j+e)j,e)j-e)j.e)j/fd=d>„Z0de)j1e)j2e3j4fd?d.„Z!d@dA„ Z5dBd0„ Z"dCd4„ Z$dDdE„ Z6dFd6„ Z%dGd8„ Z&dHdI„ Z'dS )Nr   Fr[   NTr   r'   )ÚencodingÚerrorsrŽ   c                C   sl  t ƒ  t ¡ | _d | _d| _|d kr(d}t|tƒs:tdƒ‚t	rP|d k	rˆt
dƒ‚n8|rh|sht dt¡ d}|d k	rxt
dƒ‚|dkrˆt
d	ƒ‚|| _d | _d | _d | _d | _d | _|| _|| _|d k	rà|d k	ràt|ƒt|ƒkràtd
ƒ‚|  |||¡\}}}}}}t	�rN|dk�rt | ¡ d¡}|dk�r4t | ¡ d¡}|dk�rNt | ¡ d¡}|�pb|�pb|�pb|| _d| _d| _| j�r’|dk�rŽd}d}nd}zÖ|dk�rÎt  |d|¡| _| j�rÎtj!| jd|||d�| _|dk�rt  |d|¡| _| j�rtj!| j||d�| _|dk�r:t  |d|¡| _| j�r:tj!| j||d�| _|  "||||||
||||	||||||||¡ W nþ   t#d | j| j| jfƒD ]*}z| $¡  W n t%k
�r¬   Y nX �q†| j�s`g }|t&k�rÒ| '|¡ |t&k�ræ| '|¡ |t&k�rú| '|¡ t(| dƒ�r| '| j)¡ |D ]H}z*t	�r8t|t*ƒ�r8| +¡  n
t, $|¡ W n t%k
�rZ   Y nX �q‚ Y nX d S )NFr[   zbufsize must be an integerz0preexec_fn is not supported on Windows platformszpass_fds overriding close_fds.Tz2startupinfo is only supported on Windows platformsr   z4creationflags is only supported on Windows platformszlCannot disambiguate when both text and universal_newlines are supplied but different. Pass one or the other.g      Ð?rs   Úwb)Úwrite_throughÚline_bufferingr¿   rÀ   Úrb)r¿   rÀ   Ú_devnull)-rQ   Ú	threadingZLockÚ_waitpid_lockÚ_inputÚ_communication_startedÚ
isinstancerJ   Ú	TypeErrorr›   r1   ÚwarningsÚwarnÚRuntimeWarningrc   r˜   r5   r-   Úpidr*   r¿   rÀ   Úboolr   Ú_get_handlesÚmsvcrtZopen_osfhandlerK   Ú	text_modeÚ_sigint_wait_secsÚ_closed_child_pipe_fdsÚioÚopenÚTextIOWrapperÚ_execute_childÚfilterÚcloser»   r   rb   rµ   rÅ   rF   rI   r¤   )r.   rc   ÚbufsizeÚ
executabler˜   r5   r-   Ú
preexec_fnÚ	close_fdsr«   ÚcwdÚenvr�   ÚstartupinfoÚcreationflagsÚrestore_signalsÚstart_new_sessionÚpass_fdsr¿   rÀ   rŽ   Úp2creadÚp2cwriteÚc2preadÚc2pwriteÚerrreadÚerrwriterÃ   ÚfZto_closeÚfdr'   r'   r(   r/   à  sä    


ÿþ  





 þ
 ÿ
 ÿ        ú








zPopen.__init__c                 C   s   | j S r)   )rÓ   r2   r'   r'   r(   r�   ~  s    zPopen.universal_newlinesc                 C   s   t |ƒ| _d S r)   )rÐ   rÓ   )r.   r�   r'   r'   r(   r�   „  s    c                 C   s    |  ||¡}| dd¡ dd¡S )Nz
r¬   ú)ÚdecodeÚreplace)r.   r­   r¿   rÀ   r'   r'   r(   Ú_translate_newlinesˆ  s    zPopen._translate_newlinesc                 C   s   | S r)   r'   r2   r'   r'   r(   Ú	__enter__Œ  s    zPopen.__enter__c                 C   s�   | j r| j  ¡  | jr | j ¡  d z| jr4| j ¡  W 5 |tkr€| jdkrrz| j| jd� W n tk
rp   Y nX d| _£  d S |  ¡  X  d S )Nr   r„   )	r5   rÛ   r-   ÚKeyboardInterruptrÔ   Ú_waitr   r…   r˜   )r.   Úexc_typer7   Ú	tracebackr'   r'   r(   Ú__exit__�  s     


zPopen.__exit__c                 C   sT   | j s
d S | jd kr(|d| j t| d� | j|d� | jd krPtd k	rPt | ¡ d S )Nzsubprocess %s is still running)ÚsourcerR   )Ú_child_createdr*   rÏ   ÚResourceWarningrU   rT   rb   )r.   Z_maxsizeZ_warnr'   r'   r(   rO   «  s    

 ÿzPopen.__del__c                 C   s"   t | dƒst tjtj¡| _| jS )NrÅ   )rµ   r¤   r×   ÚdevnullÚO_RDWRrÅ   r2   r'   r'   r(   Ú_get_devnullº  s    
zPopen._get_devnullc              
   C   s²   |rZz| j  |¡ W nD tk
r(   Y n2 tk
rX } z|jtjkrFn‚ W 5 d }~X Y nX z| j  ¡  W nD tk
r|   Y n2 tk
r¬ } z|jtjkršn‚ W 5 d }~X Y nX d S r)   )r˜   ÚwriteÚBrokenPipeErrorr»   ÚerrnoZEINVALrÛ   )r.   rŒ   r�   r'   r'   r(   Ú_stdin_write¿  s"    zPopen._stdin_writec                 C   sT  | j r|rtdƒ‚|d kr”| j s”| j| j| jg d ¡dkr”d }d }| jrT|  |¡ n6| jrp| j ¡ }| j ¡  n| jrŠ| j ¡ }| j ¡  |  	¡  n¸|d k	r¨t
ƒ | }nd }z„z|  |||¡\}}W nh tk
�r,   |d k	ròt| j|  |¡ƒ}n| j}d| _z| j|d� W n tk
�r$   Y nX ‚ Y nX W 5 d| _ X | j	|  |¡d�}||fS )Nz.Cannot send input after starting communicationr¢   Tr   r„   )rÉ   r1   r˜   r5   r-   Úcountr  ÚreadrÛ   r…   Ú_timeÚ_communicaterô   ÚminrÔ   Ú_remaining_timerõ   r   )r.   rŒ   r;   r5   r-   ÚendtimeÚsigint_timeoutÚstsr'   r'   r(   rš   Ø  sH    
ÿ



ÿzPopen.communicatec                 C   s   |   ¡ S r)   )rU   r2   r'   r'   r(   rœ     s    z
Popen.pollc                 C   s   |d krd S |t ƒ  S d S r)   )r  )r.   r	  r'   r'   r(   r  "  s    zPopen._remaining_timec                 C   sL   |d krd S |st ƒ |krHt| j||r0d |¡nd |r@d |¡nd d�‚d S )Nr�   r™   )r  r   rc   r•   )r.   r	  Úorig_timeoutZ
stdout_seqZ
stderr_seqÚskip_check_and_raiser'   r'   r(   Ú_check_timeout*  s     ýzPopen._check_timeoutc                 C   sŠ   |d k	rt ƒ | }z| j|d�W S  tk
r„   |d k	rLt| j|  |¡ƒ}n| j}d| _z| j|d� W n tk
r|   Y nX ‚ Y nX d S )Nr„   r   )r  rõ   rô   r  rÔ   r  r   )r.   r;   r	  r
  r'   r'   r(   r…   6  s     
ÿz
Popen.waitc           	   	   C   sô   t | dd ƒ}t ¡ �Ð}trX|dkr.| |j¡ |dkrB| |j¡ |dkrÊ| |j¡ nr|dkr~|dkr~||kr~| tj|¡ |dkr¤|dkr¤||kr¤| tj|¡ |dkrÊ|dkrÊ||krÊ| tj|¡ |d k	rà| tj|¡ W 5 Q R X d| _d S )NrÅ   r[   T)	ry   Ú
contextlibÚ	ExitStackr›   ÚcallbackrI   r¤   rÛ   rÕ   )	r.   rç   rè   ré   rê   rë   rì   Z
devnull_fdÚstackr'   r'   r(   Ú_close_pipe_fdsM  s$    
zPopen._close_pipe_fdsc                 C   s~  |d kr|d kr|d krdS d\}}d\}}d\}}	|d krtt  t j¡}|d krÜt  d d¡\}}
t|ƒ}t  |
¡ nh|tkr t  d d¡\}}t|ƒt|ƒ }}n<|tkr¸t 	|  
¡ ¡}n$t|tƒrÎt 	|¡}nt 	| ¡ ¡}|  |¡}|d k�r*t  t j¡}|d k�r˜t  d d¡\}
}t|ƒ}t  |
¡ nn|tk�rXt  d d¡\}}t|ƒt|ƒ }}n@|tk�rrt 	|  
¡ ¡}n&t|tƒ�rŠt 	|¡}nt 	| ¡ ¡}|  |¡}|d k�ræt  t j¡}	|	d k�rdt  d d¡\}
}	t|	ƒ}	t  |
¡ n~|tk�rt  d d¡\}}	t|ƒt|	ƒ }}	nP|tk�r$|}	n@|tk�r>t 	|  
¡ ¡}	n&t|tƒ�rVt 	|¡}	nt 	| ¡ ¡}	|  |	¡}	||||||	fS )N)r[   r[   r[   r[   r[   r[   ©r[   r[   r   )rN   ZGetStdHandler   Z
CreatePiperF   rH   r   r   rÒ   Zget_osfhandlerþ   rÊ   rJ   ÚfilenoÚ_make_inheritabler   r   r   )r.   r˜   r5   r-   rç   rè   ré   rê   rë   rì   Ú_r'   r'   r(   rÑ   n  st    












  þzPopen._get_handlesc                 C   s&   t  t  ¡ |t  ¡ ddt j¡}t|ƒS )Nr   rs   )rN   ZDuplicateHandleZGetCurrentProcessZDUPLICATE_SAME_ACCESSrF   )r.   ÚhandleÚhr'   r'   r(   r  ¶  s       ýzPopen._make_inheritablec                 C   s   t dd„ |D ƒƒS )Nc                 S   s,   h | ]$}|d @ d ks$t  |¡t jkr|’qS )é   )rN   ZGetFileTypeZFILE_TYPE_CHAR)Ú.0r  r'   r'   r(   Ú	<setcomp>Æ  s    ÿþz,Popen._filter_handle_list.<locals>.<setcomp>)rE   )r.   rC   r'   r'   r(   Ú_filter_handle_list¿  s    zPopen._filter_handle_listc                 C   s$  t |tƒrnNt |tƒr.|
r"tdƒ‚t|gƒ}n,t |tjƒrR|
rFtdƒ‚t|gƒ}nt|ƒ}|d k	rlt |¡}|d kr|tƒ }n| 	¡ }d|||fk}|r¸| j
tjO  _
||_||_||_|j}t|oÒd|koÒ|d ƒ}|sæ|�r^|�r^|d krøi  }|_t| dg ¡ƒ }|d< |�r0|t|ƒt|ƒt|ƒg7 }|  |¡|d d …< |�r^|�sZt dt¡ d}|
�r–| j
tjO  _
tj|_tj dd¡}d	 ||¡}|d k	�rªt |¡}t d
||||¡ z,t !||d d t| ƒ|	|||¡	\}}}}W 5 |   ||||||¡ X d| _"t#|ƒ| _$|| _%t &|¡ d S )Nz$bytes args is not allowed on Windowsú0path-like args is not allowed when shell is truer[   rC   z?startupinfo.lpAttributeList['handle_list'] overriding close_fdsFZCOMSPECzcmd.exez
{} /c "{}"úsubprocess.PopenT)'rÊ   ÚstrÚbytesrË   rª   r¤   ÚPathLiker¥   r#   rD   r=   rN   r   r>   r?   r@   rB   rÐ   rE   rŠ   rJ   r  rÌ   rÍ   rÎ   r   r   rA   Úenvironr“   rV   Úauditr  ZCreateProcessrú   rF   Ú_handlerÏ   rH   )r.   rc   rÝ   rÞ   rß   ræ   rà   rá   râ   rã   r«   rç   rè   ré   rê   rë   rì   Zunused_restore_signalsZunused_start_new_sessionZuse_std_handlesZattribute_listZhave_handle_listrC   ZcomspecZhpZhtrÏ   Útidr'   r'   r(   rÙ   Ì  sŒ    


ÿþ
ÿ
ÿ

 ù  þ
zPopen._execute_childc                 C   s,   | j d kr&|| jdƒ|kr&|| jƒ| _ | j S ©Nr   )r*   r%  )r.   rS   Z_WaitForSingleObjectZ_WAIT_OBJECT_0Z_GetExitCodeProcessr'   r'   r(   rU   8  s    
zPopen._internal_pollc                 C   s^   |d krt j}nt|d ƒ}| jd krXt  | j|¡}|t jkrJt| j|ƒ‚t  	| j¡| _| jS )Niè  )
rN   ZINFINITErJ   r*   ÚWaitForSingleObjectr%  ZWAIT_TIMEOUTr   rc   ÚGetExitCodeProcess)r.   r;   Ztimeout_millisr¨   r'   r'   r(   rõ   I  s    
ÿ
zPopen._waitc                 C   s   |  | ¡ ¡ | ¡  d S r)   )rb   r  rÛ   )r.   ZfhÚbufferr'   r'   r(   Ú_readerthreadY  s    zPopen._readerthreadc                 C   s\  | j rBt| dƒsBg | _tj| j| j | jfd�| _d| j_| j ¡  | j	r„t| dƒs„g | _
tj| j| j	| j
fd�| _d| j_| j ¡  | jr”|  |¡ | j d k	rÆ| j |  |¡¡ | j ¡ rÆt| j|ƒ‚| j	d k	rø| j |  |¡¡ | j ¡ røt| j|ƒ‚d }d }| j �r| j}| j  ¡  | j	�r0| j
}| j	 ¡  |�r>|d nd }|�rP|d nd }||fS )NÚ_stdout_buff)Útargetrc   TÚ_stderr_buffr   )r5   rµ   r,  rÆ   ZThreadr+  Zstdout_threadZdaemonÚstartr-   r.  Zstderr_threadr˜   r  r•   r  Zis_aliver   rc   rÛ   )r.   rŒ   r	  r  r5   r-   r'   r'   r(   r  ^  sJ    
ÿÿ

ÿÿ







zPopen._communicatec                 C   sl   | j d k	rd S |tjkr"|  ¡  nF|tjkr>t | jtj¡ n*|tjkrZt | jtj¡ nt	d 
|¡ƒ‚d S )NzUnsupported signal: {})r*   r0   ÚSIGTERMÚ	terminateZCTRL_C_EVENTr¤   r†   rÏ   ZCTRL_BREAK_EVENTr1   r“   ©r.   Zsigr'   r'   r(   Úsend_signal�  s    




zPopen.send_signalc                 C   sX   | j d k	rd S zt | jd¡ W n2 tk
rR   t | j¡}|tjkrH‚ || _ Y nX d S r®   )r*   rN   ZTerminateProcessr%  ÚPermissionErrorr)  ZSTILL_ACTIVE)r.   Zrcr'   r'   r(   r1  ž  s    

zPopen.terminatec           
      C   s,  d\}}d\}}d\}}	|d kr"n@|t kr8t ¡ \}}n*|tkrJ|  ¡ }nt|tƒrZ|}n| ¡ }|d krln@|t kr‚t ¡ \}}n*|tkr”|  ¡ }nt|tƒr¤|}n| ¡ }|d kr¶nf|t krÌt ¡ \}}	nP|tkrî|dkrâ|}	n
t	j
 ¡ }	n.|tk�r|  ¡ }	nt|tƒ�r|}	n| ¡ }	||||||	fS )Nr  r[   )r   r¤   Úpiper   rþ   rÊ   rJ   r  r   rV   Ú
__stdout__)
r.   r˜   r5   r-   rç   rè   ré   rê   rë   rì   r'   r'   r(   rÑ   ³  sP    





  þc                 C   sî   |d krt j}i }|rJg }dD ]"}tt|d ƒ}|d k	r| |¡ q||d< g }|||	fD ]}|dkrX| t j|f¡ qX|df|df|
dffD ]"\}}|dkrŒ| t j||f¡ qŒ|r¼||d< t j|||f|Ž| _d| _	|  
|||||	|
¡ d S )	N)ÚSIGPIPEZSIGXFZÚSIGXFSZZ	setsigdefr[   r   rs   r¢   Úfile_actionsT)r¤   r#  ry   r0   rb   ÚPOSIX_SPAWN_CLOSEÚPOSIX_SPAWN_DUP2r¯   rÏ   rú   r  )r.   rc   rÝ   rá   rä   rç   rè   ré   rê   rë   rì   rˆ   ZsigsetZsignameZsignumr9  rî   Zfd2r'   r'   r(   Ú_posix_spawné  s<    ý  þzPopen._posix_spawnc           )         sÚ  t |ttfƒr|g}n(t |tjƒr6|
r.tdƒ‚|g}nt|ƒ}|
rlttdƒrPdnd}|dg| }ˆ rlˆ |d< ˆ d kr||d ‰ t 	dˆ |||¡ t
�rtj ˆ ¡�r|d k�r|�s|�s|d k�r|dksÔ|d	k�r|dksæ|d	k�r|dksø|d	k�r|�s|  |ˆ ||||||||¡
 d S ˆ }t ¡ \}}g }|d
k �rT| |¡ t |¡}�q2|D ]}t |¡ �qX�zJzî|d k	�rÈg }| ¡ D ]>\}}t |¡}d|k�rªtdƒ‚| |d t |¡ ¡ �q†nd }t ˆ ¡‰ tj ˆ ¡�rìˆ f}nt‡ fdd„t |¡D ƒƒ}t|ƒ}| |¡ t |||tttt|ƒƒƒ|||||||||||||¡| _d| _W 5 t |¡ X |   ||||||¡ t!ƒ }t "|d¡}||7 }|�r´t#|ƒdk�r„�q´�q„W 5 t |¡ X |�rÖz6t $| jd¡\} }!| | jk�rö|  %|!¡ ntj&| _'W n t(k
�r   Y nX z| )dd	¡\}"}#}$|$ *¡ }$W n, tk
�rb   d}"d}#d +t|ƒ¡}$Y nX t,t-|" *d¡t.ƒ}%t/|%t0ƒ�rÎ|#�rÎt|#dƒ}&|$dk}'|'�rªd}$|}(n|}(|&dk�rÂt 1|&¡}$|%|&|$|(ƒ‚|%|$ƒ‚d S )Nr  Zgetandroidapilevelz/system/bin/shz/bin/shz-cr   r  r[   r¢   r  ó   =z!illegal environment variable namec                 3   s"   | ]}t j t  |¡ˆ ¡V  qd S r)   )r¤   Úpathr•   Úfsencode)r  Údir©rÝ   r'   r(   Ú	<genexpr>b  s   ÿz'Popen._execute_child.<locals>.<genexpr>TiPÃ  ó   :s   SubprocessErroró   0z#Bad exception data from child: {!r}Úasciié   Znoexecr�   )2rÊ   r   r!  r¤   r"  rË   rE   rµ   rV   r$  Ú_USE_POSIX_SPAWNr>  Údirnamer<  r5  rb   ÚduprÛ   rx   r?  r1   r¹   Úget_exec_pathÚsetÚaddÚ_posixsubprocessZ	fork_execÚsortedr£   rJ   rÏ   rú   r  Ú	bytearrayr  r¦   ÚwaitpidÚ_handle_exitstatusrW   r*   ÚChildProcessErrorr¸   rð   r“   ry   Úbuiltinsr   Ú
issubclassr»   Ústrerror))r.   rc   rÝ   rÞ   rß   ræ   rà   rá   râ   rã   r«   rç   rè   ré   rê   rë   rì   rä   rå   Z
unix_shellZorig_executableZerrpipe_readZerrpipe_writeZlow_fds_to_closeZlow_fdZenv_listÚkrh   Zexecutable_listZfds_to_keepZerrpipe_dataÚpartrÏ   r  Zexception_nameZ	hex_errnoÚerr_msgZchild_exception_typeZ	errno_numZchild_exec_never_calledZerr_filenamer'   rA  r(   rÙ     s"   	ÿÿ
ÿþýüûúúùùøø	÷
   ý





þ
          ù
  þ
ÿÿ
 þ


c                 C   sL   ||ƒr||ƒ | _ n2||ƒr*||ƒ| _ n||ƒr@||ƒ | _ ntdƒ‚d S )NzUnknown child exit status!)r*   r   )r.   r  Z_WIFSIGNALEDZ	_WTERMSIGZ
_WIFEXITEDZ_WEXITSTATUSZ_WIFSTOPPEDZ	_WSTOPSIGr'   r'   r(   rQ  ¬  s    zPopen._handle_exitstatusc              
   C   s´   | j d kr®| j d¡sd S z†z>| j d k	r4| j W W ¢pS || j|ƒ\}}|| jkrX|  |¡ W nB tk
rœ } z$|d k	r||| _ n|j|krŒd| _ W 5 d }~X Y nX W 5 | j ¡  X | j S )NFr   )r*   rÇ   ÚacquireÚreleaserÏ   rQ  r»   r  )r.   rS   Z_waitpidZ_WNOHANGZ_ECHILDrÏ   r  Úer'   r'   r(   rU   ¾  s     	



c                 C   s>   zt  | j|¡\}}W n tk
r4   | j}d}Y nX ||fS r'  )r¤   rP  rÏ   rR  )r.   Z
wait_flagsrÏ   r  r'   r'   r(   Ú	_try_waitá  s    
zPopen._try_waitc              	   C   s  | j d k	r| j S |d k	rºtƒ | }d}| j d¡r~z>| j d k	rDW ¢0q¸|  tj¡\}}|| jkrn|  	|¡ W ¢q¸W 5 | j ¡  X |  
|¡}|dkrœt| j|ƒ‚t|d |dƒ}t |¡ q&n\| j d k�r| j�B | j d k	ræW 5 Q R £ �q|  d¡\}}|| jk�r
|  	|¡ W 5 Q R X qº| j S )Ngü©ñÒMb@?Fr   r¢   gš™™™™™©?)r*   r  rÇ   rY  rZ  r\  r¤   ÚWNOHANGrÏ   rQ  r  r   rc   r  ÚtimeÚsleep)r.   r;   r	  ZdelayrÏ   r  Z	remainingr'   r'   r(   rõ   î  s6    







c              
   C   s"  | j rX| jsXz| j  ¡  W n tk
r.   Y nX |sXz| j  ¡  W n tk
rV   Y nX d }d }| js�i | _| jr~g | j| j< | jr�g | j| j< | jr¢| j| j }| jr´| j| j }|  |¡ | j	rÎt
| j	ƒ}tƒ ��¼}| j rò|rò| | j tj¡ | j�r| jj�s| | jtj¡ | j�r6| jj�s6| | jtj¡ | ¡ �rŽ|  |¡}|d k	�rz|dk �rz| j||||dd� tdƒ‚| |¡}	|  ||||¡ |	D ]ð\}
}|
j| j k�r6|| j| jt … }z|  jt |
j|¡7  _W n, tk
�r
   | |
j¡ |
j ¡  Y n*X | jt| j	ƒk�r†| |
j¡ |
j ¡  nP|
j| j| jfk�r˜t |
jd¡}|�st| |
j¡ |
j ¡  | j|
j  |¡ �q˜�q6W 5 Q R X | j |  |¡d� |d k	�r¾d !|¡}|d k	�rÒd !|¡}| j"�r|d k	�rú|  #|| jj$| jj%¡}|d k	�r|  #|| jj$| jj%¡}||fS )Nr   T)r  zN_check_timeout(..., skip_check_and_raise=True) failed to raise TimeoutExpired.i €  r„   r�   )&r˜   rÉ   Úflushr   rÛ   Z_fileobj2outputr5   r-   Ú_save_inputrÈ   Ú
memoryviewÚ_PopenSelectorÚregisterÚ	selectorsZEVENT_WRITErG   Z
EVENT_READZget_mapr  r  ÚRuntimeErrorÚselectZfileobjÚ_input_offsetÚ	_PIPE_BUFr¤   rÿ   rî   Z
unregisterr¦   r  rb   r…   r•   rÓ   rò   r¿   rÀ   )r.   rŒ   r	  r  r5   r-   Z
input_viewZselectorr;   ZreadyÚkeyZeventsÚchunkr­   r'   r'   r(   r    s¢    





 þÿ
ÿ
$




þ
þc                 C   sF   | j rB| jd krBd| _|| _|d k	rB| jrB| j | j j| j j¡| _d S r'  )r˜   rÈ   rh  rÓ   Úencoder¿   rÀ   )r.   rŒ   r'   r'   r(   ra  }  s    ÿzPopen._save_inputc                 C   s   | j d krt | j|¡ d S r)   )r*   r¤   r†   rÏ   r2  r'   r'   r(   r3  ‰  s    
c                 C   s   |   tj¡ d S r)   )r3  r0   r0  r2   r'   r'   r(   r1  �  s    c                 C   s   |   tj¡ d S r)   )r3  r0   ÚSIGKILLr2   r'   r'   r(   r†   ”  s    z
Popen.kill)r[   NNNNNTFNNNNr   TFr'   )NN)F)N)7r$   r%   r&   rú   r/   r9   r�   r:   rò   ró   rø   rV   rW   rÌ   rÍ   rO   rþ   r  rš   rœ   r  r  r…   r  r›   rÑ   r  r  rÙ   rN   r(  ZWAIT_OBJECT_0r)  rU   rõ   r+  r  r3  r1  r†   r<  r¤   ÚWIFSIGNALEDÚWTERMSIGÚ	WIFEXITEDÚWEXITSTATUSÚ
WIFSTOPPEDÚWSTOPSIGrQ  rP  r]  r  ZECHILDr\  ra  r'   r'   r'   r(   r   °  sš   .                       ú  ú 


D	 ÿ

H	lý
26'   ý
 ÿ
#)f)GrS  r  rÖ   r¤   r^  r0   rV   rÆ   rÌ   r  r   r  Ú__all__rÒ   rN   r›   ÚModuleNotFoundErrorrM  rg  re  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r~   Ú	Exceptionr   r   r   r#   rJ   rF   ry   ri  rµ   rP   rc  ZSelectSelectorrT   rQ   r   r   r   rd   rƒ   r   r   r
   Úobjectr   r   rª   r   r	   r¾   rG  r   r'   r'   r'   r(   Ú<module>,   s¨         þP
        ÷%	

;3"   ÿEI/