§
    (¶ÕiÄ  ã                   ó  — d Z ddlZej        dk    r ed¦  «        ‚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ZdZej        Zej        Z ej        ¦   «         Zdded	œd
„Z G d„ d¦  «        Z G d„ dej        ¦  «        ZdS )z)Various Windows specific bits and pieces.é    NÚwin32z
win32 only)ÚpipeÚPopenÚPIPEÚ
PipeHandlei    F)TT)ÚduplexÚ
overlappedÚbufsizec           
      óR  — t          j        d                     t          j        ¦   «         t          t          ¦  «        ¦  «        ¬¦  «        }| r*t          j        }t          j	        t          j
        z  }||}}nt          j        }t          j
        }d|}}|t          j        z  }|d         r|t          j        z  }|d         rt          j        }nd}dx}	}
	 t          j        ||t          j        d||t          j        t          j        ¦  «        }	t          j        ||dt          j        t          j        |t          j        ¦  «        }
t          j        |	d¬¦  «        }|                     d¦  «         |	|
fS #  |	�t          j        |	¦  «         |
�t          j        |
¦  «         ‚ xY w)zELike os.pipe() but with overlapped support and using handles not fds.z\\.\pipe\python-pipe-{:d}-{:d}-)Úprefixr   é   NT©r	   )ÚtempfileÚmktempÚformatÚosÚgetpidÚnextÚ_mmap_counterÚ_winapiÚPIPE_ACCESS_DUPLEXÚGENERIC_READÚGENERIC_WRITEÚPIPE_ACCESS_INBOUNDÚFILE_FLAG_FIRST_PIPE_INSTANCEÚFILE_FLAG_OVERLAPPEDÚCreateNamedPipeÚ	PIPE_WAITÚNMPWAIT_WAIT_FOREVERÚNULLÚ
CreateFileÚOPEN_EXISTINGÚConnectNamedPipeÚGetOverlappedResultÚCloseHandle)r   r	   r
   ÚaddressÚopenmodeÚaccessÚobsizeÚibsizeÚflags_and_attribsÚh1Úh2Úovs               ú,/usr/lib/python3.11/asyncio/windows_utils.pyr   r       s›  € åŒoØ1×8Ò8ÝŒI‰KŒK��mÑ,Ô,ñ.ô .ð/ñ /ô /€Gð ð $ÝÔ-ˆÝÔ%­Ô(=Ñ=ˆØ  '�ˆˆåÔ.ˆÝÔ&ˆØ˜G�ˆà•Ô5Ñ5€Hà�!„}ð 1Ø•GÔ0Ñ0ˆà�!„}ð Ý#Ô8ÐÐàÐà€N€BˆðÝÔ$Ø�X�wÔ0Øˆv�v�wÔ;½W¼\ñKô Kˆõ ÔØ�V˜Q¥¤­gÔ.CØ�wœ|ñ-ô -ˆõ Ô% b°TÐ:Ñ:Ô:ˆØ
×Ò˜tÑ$Ô$Ð$Ø�2ˆvˆøðØˆ>ÝÔ Ñ#Ô#Ð#Øˆ>ÝÔ Ñ#Ô#Ð#Øøøøs   ÃBE7 Å7/F&c                   óp   — e Zd ZdZd„ Zd„ Zed„ ¦   «         Zd„ Ze	j
        dœd„Zej        fd„Zd	„ Zd
„ ZdS )r   z�Wrapper for an overlapped pipe handle which is vaguely file-object like.

    The IOCP event loop can use these instead of socket objects.
    c                 ó   — || _         d S ©N©Ú_handle©ÚselfÚhandles     r/   Ú__init__zPipeHandle.__init__V   s   € ØˆŒˆˆó    c                 óP   — | j         �d| j         ›�}nd}d| j        j        › d|› d�S )Nzhandle=Úclosedú<ú ú>)r4   Ú	__class__Ú__name__r5   s     r/   Ú__repr__zPipeHandle.__repr__Y   s>   € ØŒ<Ð#Ø/˜tœ|Ð/Ð/ˆFˆFàˆFØ6�4”>Ô*Ð6Ð6¨VÐ6Ð6Ð6Ð6r9   c                 ó   — | j         S r2   r3   ©r6   s    r/   r7   zPipeHandle.handle`   s
   € àŒ|Ðr9   c                 ó<   — | j         €t          d¦  «        ‚| j         S )NzI/O operation on closed pipe)r4   Ú
ValueErrorrC   s    r/   ÚfilenozPipeHandle.filenod   s!   € ØŒ<ÐÝÐ;Ñ<Ô<Ð<ØŒ|Ðr9   )r%   c                óF   — | j         � || j         ¦  «         d | _         d S d S r2   r3   )r6   r%   s     r/   ÚclosezPipeHandle.closei   s/   € ØŒ<Ð#ØˆK˜œÑ%Ô%Ð%ØˆDŒLˆLˆLð $Ð#r9   c                 ól   — | j         �, |d| ›�t          | ¬¦  «         |                      ¦   «          d S d S )Nz	unclosed )Úsource)r4   ÚResourceWarningrH   )r6   Ú_warns     r/   Ú__del__zPipeHandle.__del__n   sC   € ØŒ<Ð#ØˆEÐ&˜dÐ&Ð&­ÀÐEÑEÔEÐEØ�JŠJ‰LŒLˆLˆLˆLð $Ð#r9   c                 ó   — | S r2   © rC   s    r/   Ú	__enter__zPipeHandle.__enter__s   s   € Øˆr9   c                 ó.   — |                       ¦   «          d S r2   )rH   )r6   ÚtÚvÚtbs       r/   Ú__exit__zPipeHandle.__exit__v   s   € Ø�
Š
‰Œˆˆˆr9   N)r@   Ú
__module__Ú__qualname__Ú__doc__r8   rA   Úpropertyr7   rF   r   r%   rH   ÚwarningsÚwarnrM   rP   rU   rO   r9   r/   r   r   Q   sÀ   € € € € € ðð ðð ð ð7ð 7ð 7ð ðð ñ „Xððð ð ð
 $+Ô#6ð  ð  ð  ð  ð  ð
 %œMð ð ð ð ð
ð ð ðð ð ð ð r9   r   c                   ó$   ‡ — e Zd ZdZdˆ fd„	Zˆ xZS )r   zˆReplacement for subprocess.Popen using overlapped pipe handles.

    The stdin, stdout, stderr are None or instances of PipeHandle.
    Nc                 óŒ  •— |                      d¦  «        rJ ‚|                      dd¦  «        dk    sJ ‚d x}x}}d x}	x}
}|t          k    r4t          dd¬¦  «        \  }}	t          j        |t
          j        ¦  «        }n|}|t          k    r)t          d¬¦  «        \  }
}t          j        |d¦  «        }n|}|t          k    r)t          d¬¦  «        \  }}t          j        |d¦  «        }n|t          k    r|}n|}	  t          ¦   «         j	        |f|||d	œ|¤Ž |	�t          |	¦  «        | _        |
�t          |
¦  «        | _        |�t          |¦  «        | _        n$#  |	|
|fD ]}|�t          j        |¦  «         Œ‚ xY w|t          k    rt          j        |¦  «         |t          k    rt          j        |¦  «         |t          k    rt          j        |¦  «         d S d S # |t          k    rt          j        |¦  «         |t          k    rt          j        |¦  «         |t          k    rt          j        |¦  «         w w xY w)
NÚuniversal_newlinesr
   r   )FTT)r	   r   )TFr   )ÚstdinÚstdoutÚstderr)Úgetr   r   ÚmsvcrtÚopen_osfhandler   ÚO_RDONLYÚSTDOUTÚsuperr8   r   r_   r`   ra   r   r%   rH   )r6   Úargsr_   r`   ra   ÚkwdsÚ	stdin_rfdÚ
stdout_wfdÚ
stderr_wfdÚstdin_whÚ	stdout_rhÚ	stderr_rhÚstdin_rhÚ	stdout_whÚ	stderr_whÚhr?   s                   €r/   r8   zPopen.__init__‚   s}  ø€ Ø—8’8Ð0Ñ1Ô1Ð1Ð1Ð1Ø�xŠx˜	 1Ñ%Ô%¨Ò*Ð*Ð*Ð*Ø.2Ð2ˆ	Ð2�J Ø+/Ð/ˆÐ/�9˜yØ•DŠ=ˆ=Ý!%°ÀtÐ!LÑ!LÔ!LÑˆH�hÝÔ-¨h½¼ÑDÔDˆIˆIàˆIØ•TŠ>ˆ>Ý#'°=Ð#AÑ#AÔ#AÑ ˆI�yÝÔ.¨y¸!Ñ<Ô<ˆJˆJàˆJØ•TŠ>ˆ>Ý#'°=Ð#AÑ#AÔ#AÑ ˆI�yÝÔ.¨y¸!Ñ<Ô<ˆJˆJØ•vÒÐØ#ˆJˆJàˆJð	%Ø�E‰GŒGÔ˜Tð 8¨¸:Ø$.ð8ð 8Ø26ð8ð 8ð 8ð Ð#Ý'¨Ñ1Ô1�”
ØÐ$Ý(¨Ñ3Ô3�”ØÐ$Ý(¨Ñ3Ô3�”øøð	Ø 	¨9Ð5ð +ð +�Ø�=ÝÔ'¨Ñ*Ô*Ð*øØøøøð �Š}ˆ}Ý”˜Ñ#Ô#Ð#Ø�Š~ˆ~Ý”˜Ñ$Ô$Ð$Ø�Š~ˆ~Ý”˜Ñ$Ô$Ð$Ð$Ð$ð ˆ~øð	 �Š}ˆ}Ý”˜Ñ#Ô#Ð#Ø�Š~ˆ~Ý”˜Ñ$Ô$Ð$Ø�Š~ˆ~Ý”˜Ñ$Ô$Ð$Ð$ð øøøs    Ã=E ÄAG# Å!E?Å?G# Ç#A I)NNN)r@   rV   rW   rX   r8   Ú__classcell__)r?   s   @r/   r   r   }   sG   ø€ € € € € ðð ð+%ð +%ð +%ð +%ð +%ð +%ð +%ð +%ð +%ð +%r9   r   )rX   ÚsysÚplatformÚImportErrorr   Ú	itertoolsrc   r   Ú
subprocessr   rZ   Ú__all__ÚBUFSIZEr   rf   Úcountr   r   r   r   rO   r9   r/   ú<module>r}      s%  ðØ /Ð /à 
€
€
€
à„<�7ÒÐØ
ˆ+�lÑ
#Ô
#Ð#à €€€Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ø €€€Ø €€€ð 0€ð €Ø„€Ø	Ô	€Ø�	”Ñ!Ô!€ð  \¸7ð +ð +ð +ð +ð +ðb&ð &ð &ð &ð &ñ &ô &ð &ðX0%ð 0%ð 0%ð 0%ð 0%ˆJÔñ 0%ô 0%ð 0%ð 0%ð 0%r9   