Ë
    òT•ji‚  ã                   ó  — d Z d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„ Z G d„ dej*                  ej,                  «      Z G d„ deej0                  «      Z G d„ deej4                  «      Z G d„ de«      Z G d„ deej:                  «      Z G d„ deeej>                  «      Z  G d„ deeej>                  «      Z! G d„ de
jD                  «      Z#y)z¦Event loop using a proactor and related classes.

A proactor is a "notify-on-completion" multiplexer.  Currently a
proactor is only implemented on Windows with IOCP.
)ÚBaseProactorEventLoopé    Né   )Úbase_events)Ú	constants)Úfutures)Ú
exceptions)Ú	protocols)Ússlproto)Ú
transports)Útrsock)Úloggerc                 óÄ  — t        j                  |«      | j                  d<   	 |j                  «       | j                  d<   d| j                  vr	 |j                  «       | j                  d<   y y # t        j
                  $ r5 | j                  j                  «       rt        j                  d|d¬«       Y Œuw xY w# t        j
                  $ r d | j                  d<   Y y w xY w)NÚsocketÚsocknamezgetsockname() failed on %rT©Úexc_infoÚpeername)r   ÚTransportSocketÚ_extraÚgetsocknamer   ÚerrorÚ_loopÚ	get_debugr   ÚwarningÚgetpeername)Ú	transportÚsocks     ú./usr/lib/python3.12/asyncio/proactor_events.pyÚ_set_socket_extrar      sÏ   € Ü!'×!7Ñ!7¸Ó!=€I×Ñ�XÑðCØ'+×'7Ñ'7Ó'9ˆ	×Ñ˜Ñ$ð ˜×)Ñ)Ñ)ð	0Ø+/×+;Ñ+;Ó+=ˆI×Ñ˜ZÒ(ð *øô �<‰<ò CØ�?‰?×$Ñ$Ô&Ü�N‰NØ,¨d¸TõCùðCûô �|‰|ò 	0à+/ˆI×Ñ˜ZÓ(ð	0ús$   ¤A/ ÁB: Á/AB7Â6B7Â:"CÃCc                   ó„   ‡ — e Zd ZdZ	 	 dˆ fd„	Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
ej                  fd	„Zdd
„Zd„ Zd„ Zd„ Zˆ xZS )Ú_ProactorBasePipeTransportz*Base class for pipe and socket transports.c                 óþ  •— t         ‰| �  ||«       | j                  |«       || _        | j	                  |«       || _        d | _        d | _        d | _        d| _	        d| _
        d| _        d| _        d| _        | j
                  �| j
                  j                  «        | j                  j!                  | j"                  j$                  | «       |�,| j                  j!                  t&        j(                  |d «       y y )Nr   F)ÚsuperÚ__init__Ú
_set_extraÚ_sockÚset_protocolÚ_serverÚ_bufferÚ	_read_futÚ
_write_futÚ_pending_writeÚ
_conn_lostÚ_closingÚ_called_connection_lostÚ_eof_writtenÚ_attachr   Ú	call_soonÚ	_protocolÚconnection_mader   Ú_set_result_unless_cancelled©ÚselfÚloopr   ÚprotocolÚwaiterÚextraÚserverÚ	__class__s          €r   r$   z#_ProactorBasePipeTransport.__init__2   s×   ø€ ä‰Ñ˜ Ô%Ø�‰˜ÔØˆŒ
Ø×Ñ˜(Ô#ØˆŒØˆŒØˆŒØˆŒØˆÔØˆŒØˆŒØ',ˆÔ$Ø!ˆÔØ�<‰<Ð#Ø�L‰L× Ñ Ô"Ø�
‰
×Ñ˜TŸ^™^×;Ñ;¸TÔBØÐà�J‰J× Ñ ¤×!EÑ!EØ!'¨õ/ð ó    c                 óž  — | j                   j                  g}| j                  €|j                  d«       n| j                  r|j                  d«       | j                  �,|j                  d| j                  j                  «       › �«       | j                  �|j                  d| j                  ›�«       | j                  �|j                  d| j                  ›�«       | j                  r'|j                  dt        | j                  «      › �«       | j                  r|j                  d«       dj                  d	j                  |«      «      S )
NÚclosedÚclosingzfd=zread=zwrite=zwrite_bufsize=zEOF writtenz<{}>ú )r=   Ú__name__r&   Úappendr.   Úfilenor*   r+   r)   Úlenr0   ÚformatÚjoin)r7   Úinfos     r   Ú__repr__z#_ProactorBasePipeTransport.__repr__I   sü   € Ø—‘×'Ñ'Ð(ˆØ�:‰:ÐØ�K‰K˜Õ!Ø�]Š]Ø�K‰K˜	Ô"Ø�:‰:Ð!Ø�K‰K˜#˜dŸj™j×/Ñ/Ó1Ð2Ð3Ô4Ø�>‰>Ð%Ø�K‰K˜% §¡Ð1Ð2Ô3Ø�?‰?Ð&Ø�K‰K˜& §¡Ð 3Ð4Ô5Ø�<Š<Ø�K‰K˜.¬¨T¯\©\Ó):Ð(;Ð<Ô=Ø×ÒØ�K‰K˜Ô&Ø�}‰}˜SŸX™X d›^Ó,Ð,r>   c                 ó"   — || j                   d<   y )NÚpipe)r   ©r7   r   s     r   r%   z%_ProactorBasePipeTransport._set_extra[   s   € Ø"ˆ�‰�FÒr>   c                 ó   — || _         y ©N©r3   )r7   r9   s     r   r'   z'_ProactorBasePipeTransport.set_protocol^   s	   € Ø!ˆ�r>   c                 ó   — | j                   S rO   rP   ©r7   s    r   Úget_protocolz'_ProactorBasePipeTransport.get_protocola   s   € Ø�~‰~Ðr>   c                 ó   — | j                   S rO   )r.   rR   s    r   Ú
is_closingz%_ProactorBasePipeTransport.is_closingd   s   € Ø�}‰}Ðr>   c                 ó.  — | j                   ry d| _         | xj                  dz  c_        | j                  s2| j                  €&| j                  j                  | j                  d «       | j                  �"| j                  j                  «        d | _        y y )NTr   )	r.   r-   r)   r+   r   r2   Ú_call_connection_lostr*   ÚcancelrR   s    r   Úclosez _ProactorBasePipeTransport.closeg   sq   € Ø�=Š=ØØˆŒØ�Š˜1Ñ�Ø�|Š| §¡Ð 7Ø�J‰J× Ñ  ×!;Ñ!;¸TÔBØ�>‰>Ð%Ø�N‰N×!Ñ!Ô#Ø!ˆD�Nð &r>   c                 óv   — | j                   �- |d| ›�t        | ¬«       | j                   j                  «        y y )Nzunclosed transport )Úsource)r&   ÚResourceWarningrY   )r7   Ú_warns     r   Ú__del__z"_ProactorBasePipeTransport.__del__r   s5   € Ø�:‰:Ð!ÙÐ'¨ xÐ0´/È$ÕOØ�J‰J×ÑÕð "r>   c                 ó0  — 	 t        |t        «      r4| j                  j                  «       rDt	        j
                  d| |d¬«       n*| j                  j                  ||| | j                  dœ«       | j                  |«       y # | j                  |«       w xY w)Nz%r: %sTr   )ÚmessageÚ	exceptionr   r9   )	Ú
isinstanceÚOSErrorr   r   r   ÚdebugÚcall_exception_handlerr3   Ú_force_close)r7   Úexcr`   s      r   Ú_fatal_errorz'_ProactorBasePipeTransport._fatal_errorw   sy   € ð	#Ü˜#œwÔ'Ø—:‘:×'Ñ'Ô)Ü—L‘L ¨4°À4ÖHà—
‘
×1Ñ1Ø&Ø!$Ø!%Ø $§¡ñ	3ô ð ×Ñ˜cÕ"øˆD×Ñ˜cÕ"ús   ‚A.B ÂBc                 óH  — | j                   �S| j                   j                  «       s9|€| j                   j                  d «       n| j                   j                  |«       | j                  r| j
                  ry d| _        | xj                  dz  c_        | j                  r!| j                  j                  «        d | _        | j                  r!| j                  j                  «        d | _	        d| _
        d | _        | j                  j                  | j                  |«       y )NTr   r   )Ú_empty_waiterÚdoneÚ
set_resultÚset_exceptionr.   r/   r-   r+   rX   r*   r,   r)   r   r2   rW   )r7   rg   s     r   rf   z'_ProactorBasePipeTransport._force_close†   sØ   € Ø×ÑÐ)°$×2DÑ2D×2IÑ2IÔ2KØˆ{Ø×"Ñ"×-Ñ-¨dÕ3à×"Ñ"×0Ñ0°Ô5Ø�=Š=˜T×9Ò9ØØˆŒØ�Š˜1Ñ�Ø�?Š?Ø�O‰O×"Ñ"Ô$Ø"ˆDŒOØ�>Š>Ø�N‰N×!Ñ!Ô#Ø!ˆDŒNØˆÔØˆŒØ�
‰
×Ñ˜T×7Ñ7¸Õ=r>   c                 ó  — | j                   ry 	 | j                  j                  |«       t        | j                  d«      rF| j                  j                  «       dk7  r)| j                  j                  t        j                  «       | j                  j                  «        d | _        | j                  }|�|j                  «        d | _
        d| _         y # t        | j                  d«      rF| j                  j                  «       dk7  r)| j                  j                  t        j                  «       | j                  j                  «        d | _        | j                  }|�|j                  «        d | _
        d| _         w xY w)NÚshutdownéÿÿÿÿT)r/   r3   Úconnection_lostÚhasattrr&   rE   ro   r   Ú	SHUT_RDWRrY   r(   Ú_detach)r7   rg   r<   s      r   rW   z0_ProactorBasePipeTransport._call_connection_lostš   s  € Ø×'Ò'Øð	0Ø�N‰N×*Ñ*¨3Ô/ô �t—z‘z :Ô.°4·:±:×3DÑ3DÓ3FÈ"Ò3LØ—
‘
×#Ñ#¤F×$4Ñ$4Ô5Ø�J‰J×ÑÔØˆDŒJØ—\‘\ˆFØÐ!Ø—‘Ô Ø#�”Ø+/ˆDÕ(øô �t—z‘z :Ô.°4·:±:×3DÑ3DÓ3FÈ"Ò3LØ—
‘
×#Ñ#¤F×$4Ñ$4Ô5Ø�J‰J×ÑÔØˆDŒJØ—\‘\ˆFØÐ!Ø—‘Ô Ø#�”Ø+/ˆDÕ(ús   �C ÃB+E?c                 óf   — | j                   }| j                  �|t        | j                  «      z  }|S rO   )r,   r)   rF   )r7   Úsizes     r   Úget_write_buffer_sizez0_ProactorBasePipeTransport.get_write_buffer_size®   s/   € Ø×"Ñ"ˆØ�<‰<Ð#Ø”C˜Ÿ™Ó%Ñ%ˆDØˆr>   ©NNN)zFatal error on pipe transport)rC   Ú
__module__Ú__qualname__Ú__doc__r$   rJ   r%   r'   rS   rU   rY   ÚwarningsÚwarnr^   rh   rf   rW   rw   Ú__classcell__©r=   s   @r   r!   r!   .   sQ   ø„ á4à48Ø$(õ/ò.-ò$#ò"òòò	"ð %ŸM™Mó ó
#ò>ò(0ö(r>   r!   c                   óN   ‡ — e Zd ZdZ	 	 d	ˆ fd„	Zd„ Zd„ Zd„ Zd„ Zd„ Z	d
d„Z
ˆ xZS )Ú_ProactorReadPipeTransportzTransport for read pipes.c                 óÂ   •— d| _         d| _        t        ‰| �  ||||||«       t	        |«      | _        | j                  j                  | j                  «       d| _        y )Nrp   TF)	Ú_pending_data_lengthÚ_pausedr#   r$   Ú	bytearrayÚ_datar   r2   Ú_loop_reading)	r7   r8   r   r9   r:   r;   r<   Úbuffer_sizer=   s	           €r   r$   z#_ProactorReadPipeTransport.__init__¹   sT   ø€ à$&ˆÔ!ØˆŒÜ‰Ñ˜˜t X¨v°u¸fÔEä˜{Ó+ˆŒ
Ø�
‰
×Ñ˜T×/Ñ/Ô0Øˆ�r>   c                 ó:   — | j                    xr | j                   S rO   )r„   r.   rR   s    r   Ú
is_readingz%_ProactorReadPipeTransport.is_readingÃ   s   € Ø—<‘<ÐÒ5¨¯©Ð$5Ð5r>   c                 ó¦   — | j                   s| j                  ry d| _        | j                  j                  «       rt	        j
                  d| «       y y )NTz%r pauses reading)r.   r„   r   r   r   rd   rR   s    r   Úpause_readingz(_ProactorReadPipeTransport.pause_readingÆ   s?   € Ø�=Š=˜DŸLšLØØˆŒð �:‰:×ÑÔ!Ü�L‰LÐ,¨dÕ3ð "r>   c                 ó¢  — | j                   s| j                  sy d| _        | j                  €&| j                  j	                  | j
                  d «       | j                  }d| _        |dkD  r4| j                  j	                  | j                  | j                  d | |«       | j                  j                  «       rt        j                  d| «       y y )NFrp   z%r resumes reading)r.   r„   r*   r   r2   r‡   rƒ   Ú_data_receivedr†   r   r   rd   )r7   Úlengths     r   Úresume_readingz)_ProactorReadPipeTransport.resume_readingÙ   s¤   € Ø�=Š= §¢ØàˆŒØ�>‰>Ð!Ø�J‰J× Ñ  ×!3Ñ!3°TÔ:à×*Ñ*ˆØ$&ˆÔ!Ø�BŠ;ð �J‰J× Ñ  ×!4Ñ!4°d·j±jÀÀ&Ð6IÈ6ÔRà�:‰:×ÑÔ!Ü�L‰LÐ-¨tÕ4ð "r>   c                 ó.  — | j                   j                  «       rt        j                  d| «       	 | j                  j                  «       }|s| j                  «        y y # t        t        f$ r ‚ t        $ r}| j                  |d«       Y d }~y d }~ww xY w)Nz%r received EOFz1Fatal error: protocol.eof_received() call failed.)r   r   r   rd   r3   Úeof_receivedÚ
SystemExitÚKeyboardInterruptÚBaseExceptionrh   rY   )r7   Ú	keep_openrg   s      r   Ú_eof_receivedz(_ProactorReadPipeTransport._eof_receivedë   s†   € Ø�:‰:×ÑÔ!Ü�L‰LÐ*¨DÔ1ð	ØŸ™×3Ñ3Ó5ˆIñ Ø�J‰J�Lð øô Ô-Ð.ò 	ØÜò 	Ø×ÑØÐHôJäûð	ús   ²A  Á BÁ8BÂBc                 óª  — | j                   r| j                  dk(  sJ ‚|| _        y |dk(  r| j                  «        y t        | j                  t
        j                  «      r"	 t        j                  | j                  |«       y | j                  j                  |«       y # t        t        f$ r ‚ t        $ r}| j                  |d«       Y d }~y d }~ww xY w)Nrp   r   z3Fatal error: protocol.buffer_updated() call failed.)r„   rƒ   r—   rb   r3   r	   ÚBufferedProtocolÚ_feed_data_to_buffered_protor“   r”   r•   rh   Údata_received)r7   Údatar�   rg   s       r   rŽ   z)_ProactorReadPipeTransport._data_receivedû   s¾   € Ø�<Š<ð ×,Ñ,°Ò2Ð2Ð2Ø(.ˆDÔ%Øà�QŠ;Ø×ÑÔ Øä�d—n‘n¤i×&@Ñ&@ÔAðÜ×6Ñ6°t·~±~ÀtÕLð �N‰N×(Ñ(¨Õ.øô Ô 1Ð2ò ØÜ ò Ø×!Ñ! #ð#1ô2ô ûð	ús   Á! B ÂCÂ6CÃCc                 óš  — d}d }	 |� | j                   |u s| j                   €| j                  sJ ‚d | _         |j                  «       rQ|j                  «       }|dk(  r	 |dkD  r| j	                  ||«       y y t        t        | j                  «      d | «      }n|j                  «        | j                  r	 |dkD  r| j	                  ||«       y y | j                  s?| j                  j                  j                  | j                  | j                  «      | _         | j                  s&| j                   j                  | j                  «       	 |dkD  r| j	                  ||«       y y # t         $ rZ}| j                  s| j#                  |d«       n1| j                  j%                  «       rt'        j(                  dd¬«       Y d }~Œwd }~wt*        $ r}| j-                  |«       Y d }~Œ™d }~wt.        $ r}| j#                  |d«       Y d }~Œ¼d }~wt0        j2                  $ r | j                  s‚ Y Œáw xY w# |dkD  r| j	                  ||«       w w xY w)Nrp   r   z"Fatal read error on pipe transportz*Read error on pipe transport while closingTr   )r*   r.   rk   ÚresultrŽ   ÚbytesÚ
memoryviewr†   rX   r„   r   Ú	_proactorÚ	recv_intor&   Úadd_done_callbackr‡   ÚConnectionAbortedErrorrh   r   r   rd   ÚConnectionResetErrorrf   rc   r   ÚCancelledError)r7   Úfutr�   rœ   rg   s        r   r‡   z(_ProactorReadPipeTransport._loop_reading  sÿ  € ØˆØˆð.	2ØˆØ—~‘~¨Ñ,°·±Ð1GØ15·²ð@ð @à!%�”Ø—8‘8”:à ŸZ™Z›\�FØ ’{àðF ˜Š{Ø×#Ñ# D¨&Õ1ð ôA !¤¨D¯J©JÓ!7¸¸Ð!@ÓA‘Dð —J‘J”Là�}Š}àð2 ˜Š{Ø×#Ñ# D¨&Õ1ð ð) —<’<à!%§¡×!5Ñ!5×!?Ñ!?ÀÇ
Á
ÈDÏJÉJÓ!W�”ð —<’<Ø—‘×0Ñ0°×1CÑ1CÕDà˜Š{Ø×#Ñ# D¨&Õ1ð øô# &ò 	,Ø—=’=Ø×!Ñ! #Ð'KÕLØ—‘×%Ñ%Ô'Ü—‘ÐIØ&*õ,ÿøä#ò 	#Ø×Ñ˜c×"Ñ"ûÜò 	IØ×Ñ˜cÐ#G×HÑHûÜ×(Ñ(ò 	Ø—=’=Øñ !ð	ûð ˜Š{Ø×#Ñ# D¨&Õ1ð úsn   †AE$ Á6>E$ ÃAE$ Ä2H0 Å$	H-Å-AGÆ=H0 ÇH-ÇG$ÇH0 Ç$H-Ç0HÈH0 È#H-È*H0 È,H-È-H0 È0I
)NNNi   rO   )rC   ry   rz   r{   r$   rŠ   rŒ   r�   r—   rŽ   r‡   r~   r   s   @r   r�   r�   µ   s/   ø„ á#à48Ø6;õò6ò4ò&5ò$ò /÷212r>   r�   c                   óR   ‡ — e Zd ZdZdZˆ fd„Zd„ Zdd„Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zˆ xZS )Ú_ProactorBaseWritePipeTransportzTransport for write pipes.Tc                 ó2   •— t        ‰| �  |i |¤Ž d | _        y rO   )r#   r$   rj   ©r7   ÚargsÚkwr=   s      €r   r$   z(_ProactorBaseWritePipeTransport.__init__N  s   ø€ Ü‰Ñ˜$Ð% "Ò%Ø!ˆÕr>   c                 ó¢  — t        |t        t        t        f«      s!t	        dt        |«      j                  › �«      ‚| j                  rt        d«      ‚| j                  �t        d«      ‚|sy | j                  rH| j                  t        j                  k\  rt        j                  d«       | xj                  dz  c_
        y | j                  €*| j                   �J ‚| j#                  t        |«      ¬«       y | j                   s!t        |«      | _        | j%                  «        y | j                   j'                  |«       | j%                  «        y )Nz/data argument must be a bytes-like object, not zwrite_eof() already calledz(unable to write; sendfile is in progresszsocket.send() raised exception.r   )rœ   )rb   rŸ   r…   r    Ú	TypeErrorÚtyperC   r0   ÚRuntimeErrorrj   r-   r   Ú!LOG_THRESHOLD_FOR_CONNLOST_WRITESr   r   r+   r)   Ú_loop_writingÚ_maybe_pause_protocolÚextend)r7   rœ   s     r   Úwritez%_ProactorBaseWritePipeTransport.writeR  s  € Ü˜$¤¬	´:Ð >Ô?ÜðÜ˜D“z×*Ñ*Ð+ð-ó.ð .ð ×ÒÜÐ;Ó<Ð<Ø×ÑÐ)ÜÐIÓJÐJáØà�?Š?Ø�‰¤)×"MÑ"MÒMÜ—‘Ð@ÔAØ�OŠO˜qÑ �OØð �?‰?Ð"Ø—<‘<Ð'Ð'Ð'à×Ñ¤E¨$£KÐÕ0Ø—’ä$ T›?ˆDŒLØ×&Ñ&Õ(ð �L‰L×Ñ Ô%Ø×&Ñ&Õ(r>   c                 óN  — 	 |�| j                   €| j                  ry || j                   u sJ ‚d | _         d| _        |r|j                  «        |€| j                  }d | _        |sx| j                  r&| j
                  j                  | j                  d «       | j                  r)| j                  j                  t        j                  «       | j                  «        nË| j
                  j                  j                  | j                  |«      | _         | j                   j!                  «       sW| j                  dk(  sJ ‚t#        |«      | _        | j                   j%                  | j&                  «       | j)                  «        n%| j                   j%                  | j&                  «       | j*                  �)| j                   €| j*                  j-                  d «       y y y # t.        $ r}| j1                  |«       Y d }~y d }~wt2        $ r}| j5                  |d«       Y d }~y d }~ww xY w)Nr   z#Fatal write error on pipe transport)r+   r.   r,   rž   r)   r   r2   rW   r0   r&   ro   r   ÚSHUT_WRÚ_maybe_resume_protocolr¡   Úsendrk   rF   r£   r³   r´   rj   rl   r¥   rf   rc   rh   )r7   Úfrœ   rg   s       r   r³   z-_ProactorBaseWritePipeTransport._loop_writingx  s´  € ð&	JØˆ} §¡Ð!8¸T¿]º]ð Ø˜Ÿ™Ñ'Ð'Ð'Ø"ˆDŒOØ"#ˆDÔÙØ—‘”
Øˆ|Ø—|‘|�Ø#�”ÙØ—=’=Ø—J‘J×(Ñ(¨×)CÑ)CÀTÔJØ×$Ò$Ø—J‘J×'Ñ'¬¯©Ô7ð ×+Ñ+Õ-à"&§*¡*×"6Ñ"6×";Ñ";¸D¿J¹JÈÓ"M�”Ø—‘×+Ñ+Ô-Ø×.Ñ.°!Ò3Ð3Ð3Ü*-¨d«)�DÔ'Ø—O‘O×5Ñ5°d×6HÑ6HÔIØ×.Ñ.Õ0à—O‘O×5Ñ5°d×6HÑ6HÔIØ×!Ñ!Ð-°$·/±/Ð2IØ×"Ñ"×-Ñ-¨dÕ3ð 3JÐ-øä#ò 	#Ø×Ñ˜c×"Ñ"ûÜò 	JØ×Ñ˜cÐ#H×IÑIûð	Jús)   ‚G �F=G Ç	H$Ç&G<Ç<H$ÈHÈH$c                  ó   — y©NT© rR   s    r   Úcan_write_eofz-_ProactorBaseWritePipeTransport.can_write_eof¡  ó   € Ør>   c                 ó$   — | j                  «        y rO   )rY   rR   s    r   Ú	write_eofz)_ProactorBaseWritePipeTransport.write_eof¤  s   € Ø�
‰
�r>   c                 ó&   — | j                  d «       y rO   ©rf   rR   s    r   Úabortz%_ProactorBaseWritePipeTransport.abort§  ó   € Ø×Ñ˜$Õr>   c                 óÔ   — | j                   �t        d«      ‚| j                  j                  «       | _         | j                  €| j                   j                  d «       | j                   S )NzEmpty waiter is already set)rj   r±   r   Úcreate_futurer+   rl   rR   s    r   Ú_make_empty_waiterz2_ProactorBaseWritePipeTransport._make_empty_waiterª  sY   € Ø×ÑÐ)ÜÐ<Ó=Ð=Ø!ŸZ™Z×5Ñ5Ó7ˆÔØ�?‰?Ð"Ø×Ñ×)Ñ)¨$Ô/Ø×!Ñ!Ð!r>   c                 ó   — d | _         y rO   )rj   rR   s    r   Ú_reset_empty_waiterz3_ProactorBaseWritePipeTransport._reset_empty_waiter²  s
   € Ø!ˆÕr>   ©NN)rC   ry   rz   r{   Ú_start_tls_compatibler$   r¶   r³   r¿   rÂ   rÅ   rÉ   rË   r~   r   s   @r   r©   r©   H  s7   ø„ á$à Ðô"ò$)óL'JòRòò ò"ö"r>   r©   c                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )Ú_ProactorWritePipeTransportc                 óØ   •— t        ‰| �  |i |¤Ž | j                  j                  j	                  | j
                  d«      | _        | j                  j                  | j                  «       y )Né   )	r#   r$   r   r¡   Úrecvr&   r*   r£   Ú_pipe_closedr«   s      €r   r$   z$_ProactorWritePipeTransport.__init__·  sO   ø€ Ü‰Ñ˜$Ð% "Ò%ØŸ™×-Ñ-×2Ñ2°4·:±:¸rÓBˆŒØ�‰×(Ñ(¨×):Ñ):Õ;r>   c                 óB  — |j                  «       ry |j                  «       dk(  sJ ‚| j                  r| j                  �J ‚y || j                  u sJ || j                  f«       ‚d | _        | j                  �| j                  t        «       «       y | j                  «        y )Nr>   )Ú	cancelledrž   r.   r*   r+   rf   ÚBrokenPipeErrorrY   )r7   r§   s     r   rÓ   z(_ProactorWritePipeTransport._pipe_closed¼  s‡   € Ø�=‰=Œ?àØ�z‰z‹|˜sÒ"Ð"Ð"Ø�=Š=Ø—>‘>Ð)Ð)Ð)ØØ�d—n‘nÑ$Ð; s¨D¯N©NÐ&;Ó;Ð$ØˆŒØ�?‰?Ð&Ø×ÑœoÓ/Õ0à�J‰J�Lr>   )rC   ry   rz   r$   rÓ   r~   r   s   @r   rÏ   rÏ   ¶  s   ø„ ô<ö
r>   rÏ   c                   óR   ‡ — e Zd ZdZ	 	 d	ˆ fd„	Zd„ Zd„ Zd„ Zd
d„Zd
d„Z	d
d„Z
ˆ xZS )Ú_ProactorDatagramTransporti   c                 óÔ   •— || _         d | _        d| _        t        ‰| �  |||||¬«       t        j                  «       | _        | j                  j                  | j                  «       y )Nr   )r:   r;   )Ú_addressrj   Ú_buffer_sizer#   r$   ÚcollectionsÚdequer)   r   r2   r‡   )r7   r8   r   r9   Úaddressr:   r;   r=   s          €r   r$   z#_ProactorDatagramTransport.__init__Ï  s^   ø€ àˆŒØ!ˆÔØˆÔô 	‰Ñ˜˜t X°fÀEÐÔJô #×(Ñ(Ó*ˆŒØ�
‰
×Ñ˜T×/Ñ/Õ0r>   c                 ó   — t        | |«       y rO   ©r   rM   s     r   r%   z%_ProactorDatagramTransport._set_extraÜ  ó   € Ü˜$ Õ%r>   c                 ó   — | j                   S rO   )rÛ   rR   s    r   rw   z0_ProactorDatagramTransport.get_write_buffer_sizeß  s   € Ø× Ñ Ð r>   c                 ó&   — | j                  d «       y rO   rÄ   rR   s    r   rÅ   z _ProactorDatagramTransport.abortâ  rÆ   r>   c                 ór  — t        |t        t        t        f«      st	        dt        |«      «      ‚|sy | j                  �(|d | j                  fvrt        d| j                  › �«      ‚| j                  rT| j                  rH| j                  t        j                  k\  rt        j                  d«       | xj                  dz  c_        y | j                  j                  t        |«      |f«       | xj                  t!        |«      z  c_        | j"                  €| j%                  «        | j'                  «        y )Nz,data argument must be bytes-like object (%r)z!Invalid address: must be None or z!socket.sendto() raised exception.r   )rb   rŸ   r…   r    r¯   r°   rÚ   Ú
ValueErrorr-   r   r²   r   r   r)   rD   rÛ   rF   r+   r³   r´   )r7   rœ   Úaddrs      r   Úsendtoz!_ProactorDatagramTransport.sendtoå  sþ   € Ü˜$¤¬	´:Ð >Ô?ÜÐJÜ  ›Jó(ð (ñ Øà�=‰=Ð$¨°d¸D¿M¹MÐ5JÑ)JÜØ3°D·M±M°?ÐCóEð Eð �?Š?˜tŸ}š}Ø�‰¤)×"MÑ"MÒMÜ—‘ÐBÔCØ�OŠO˜qÑ �OØð 	�‰×ÑœU 4›[¨$Ð/Ô0Ø×ÒœS ›YÑ&Õà�?‰?Ð"à×ÑÔ ð 	×"Ñ"Õ$r>   c                 óš  — 	 | j                   ry || j                  u sJ ‚d | _        |r|j                  «        | j                  r| j                   r?| j                  r3| j
                  r&| j                  j                  | j                  d «       y | j                  j                  «       \  }}| xj                  t        |«      z  c_
        | j                  �6| j                  j                  j                  | j                  |«      | _        n7| j                  j                  j                  | j                  ||¬«      | _        | j                  j!                  | j"                  «       | j%                  «        y # t&        $ r%}| j(                  j+                  |«       Y d }~y d }~wt,        $ r}| j/                  |d«       Y d }~y d }~ww xY w)N)ræ   z'Fatal write error on datagram transport)r-   r+   rž   r)   rÚ   r.   r   r2   rW   ÚpopleftrÛ   rF   r¡   rº   r&   rç   r£   r³   r¹   rc   r3   Úerror_receivedÚ	Exceptionrh   )r7   r§   rœ   ræ   rg   s        r   r³   z(_ProactorDatagramTransport._loop_writing  sd  € ð	*Ø�ŠØà˜$Ÿ/™/Ñ)Ð)Ð)Ø"ˆDŒOÙà—
‘
”à—<’< D§O¢O¸¿ºà—=’=Ø—J‘J×(Ñ(¨×)CÑ)CÀTÔJØàŸ™×-Ñ-Ó/‰JˆD�$Ø×Ò¤ T£Ñ*ÕØ�}‰}Ð(Ø"&§*¡*×"6Ñ"6×";Ñ";¸D¿J¹JØ<@ó#B�•ð #'§*¡*×"6Ñ"6×"=Ñ"=¸d¿j¹jØ>BØCGð #>ó #I�”ð �O‰O×-Ñ-¨d×.@Ñ.@ÔAØ×'Ñ'Õ)øô ò 	/Ø�N‰N×)Ñ)¨#×.Ñ.ûÜò 	NØ×Ñ˜cÐ#L×MÑMûð	Nús0   ‚E9 �A?E9 ÂB4E9 Å9	G
ÆF"Æ"G
Æ.GÇG
c                 ó‚  — d }	 | j                   r!	 |r| j                  j                  |«       y y | j                  |u s| j                  €| j                  sJ ‚d | _        |�_|j                  «       }| j                  r#d }	 |r| j                  j                  |«       y y | j                  �|| j                  }}n|\  }}| j                   r!	 |r| j                  j                  |«       y y | j                  �@| j                  j                  j                  | j                  | j                  «      | _        n?| j                  j                  j                  | j                  | j                  «      | _        | j                  �&| j                  j                  | j                  «       	 |r| j                  j                  |«       y y # t        $ r%}| j                  j!                  |«       Y d }~ŒId }~wt"        j$                  $ r | j                  s‚ Y Œnw xY w# |r| j                  j                  |«       w w xY wrO   )r-   r3   Údatagram_receivedr*   r.   rž   rÚ   r   r¡   rÒ   r&   Úmax_sizeÚrecvfromr£   r‡   rc   rê   r   r¦   )r7   r§   rœ   ræ   Úresrg   s         r   r‡   z(_ProactorDatagramTransport._loop_reading$  só  € Øˆð'	=Ø�ŠØñH Ø—‘×0Ñ0°°tÕ<ð ðE —>‘> SÑ(¨T¯^©^Ð-CØ-1¯]ª]ð<ð <ð "ˆDŒNØˆØ—j‘j“l�à—=’=à�DØñ0 Ø—‘×0Ñ0°°tÕ<ð ð- —=‘=Ð,Ø!$ d§m¡m˜$‘Dà!$‘J�D˜$à�ŠØñ  Ø—‘×0Ñ0°°tÕ<ð ð �}‰}Ð(Ø!%§¡×!5Ñ!5×!:Ñ!:¸4¿:¹:Ø;?¿=¹=ó"J�•ð "&§¡×!5Ñ!5×!>Ñ!>¸t¿z¹zØ?C¿}¹}ó"N�”ð �~‰~Ð)Ø—‘×0Ñ0°×1CÑ1CÕDáØ—‘×0Ñ0°°tÕ<ð øô ò 	/Ø�N‰N×)Ñ)¨#×.Ñ.ûÜ×(Ñ(ò 	Ø—=’=Øñ !ð	ûñ Ø—‘×0Ñ0°°tÕ<ð úsN   „G ±AG Â!,G Ã.BG Å92H Ç	HÇG4Ç/H Ç4#HÈH ÈHÈH È!H>rx   rO   )rC   ry   rz   rî   r$   r%   rw   rÅ   rç   r³   r‡   r~   r   s   @r   rØ   rØ   Ì  s2   ø„ à€HØ59Ø$(õ1ò&ò!ò ó%ó: *÷D)=r>   rØ   c                   ó   — e Zd ZdZd„ Zd„ Zy)Ú_ProactorDuplexPipeTransportzTransport for duplex pipes.c                  ó   — y)NFr¾   rR   s    r   r¿   z*_ProactorDuplexPipeTransport.can_write_eofU  s   € Ør>   c                 ó   — t         ‚rO   )ÚNotImplementedErrorrR   s    r   rÂ   z&_ProactorDuplexPipeTransport.write_eofX  s   € Ü!Ð!r>   N)rC   ry   rz   r{   r¿   rÂ   r¾   r>   r   rò   rò   P  s   „ ñ &òó"r>   rò   c                   óf   ‡ — e Zd ZdZej
                  j                  Z	 	 dˆ fd„	Zd„ Z	d„ Z
d„ Zˆ xZS )Ú_ProactorSocketTransportz Transport for connected sockets.c                 óX   •— t         ‰| �  ||||||«       t        j                  |«       y rO   )r#   r$   r   Ú_set_nodelayr6   s          €r   r$   z!_ProactorSocketTransport.__init__c  s(   ø€ ä‰Ñ˜˜t X¨v°u¸fÔEÜ× Ñ  Õ&r>   c                 ó   — t        | |«       y rO   rà   rM   s     r   r%   z#_ProactorSocketTransport._set_extrah  rá   r>   c                  ó   — yr½   r¾   rR   s    r   r¿   z&_ProactorSocketTransport.can_write_eofk  rÀ   r>   c                 ó°   — | j                   s| j                  ry d| _        | j                  €*| j                  j	                  t
        j                  «       y y r½   )r.   r0   r+   r&   ro   r   r¸   rR   s    r   rÂ   z"_ProactorSocketTransport.write_eofn  sA   € Ø�=Š=˜D×-Ò-ØØ ˆÔØ�?‰?Ð"Ø�J‰J×Ñ¤§¡Õ/ð #r>   rx   )rC   ry   rz   r{   r   Ú_SendfileModeÚ
TRY_NATIVEÚ_sendfile_compatibler$   r%   r¿   rÂ   r~   r   s   @r   r÷   r÷   \  s4   ø„ ñ +à$×2Ñ2×=Ñ=Ðà48Ø$(õ'ò
&òö0r>   r÷   c                   óô   ‡ — e Zd Zˆ fd„Z	 	 dd„Z	 ddddddddœd„Z	 dd„Z	 	 d d„Z	 	 d d	„Z	 	 d d
„Z	ˆ fd„Z
d„ Zd„ Zd„ Zd!d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zd„ Z	 	 	 d"d„Zd„ Zd„ Zd„ Zˆ xZS )#r   c                 óœ  •— t         ‰| �  «        t        j                  d|j                  j
                  «       || _        || _        d | _        i | _	        |j                  | «       | j                  «        t        j                  «       t        j                  «       u r.t        j                   | j"                  j%                  «       «       y y )NzUsing proactor: %s)r#   r$   r   rd   r=   rC   r¡   Ú	_selectorÚ_self_reading_futureÚ_accept_futuresÚset_loopÚ_make_self_pipeÚ	threadingÚcurrent_threadÚmain_threadÚsignalÚset_wakeup_fdÚ_csockrE   )r7   Úproactorr=   s     €r   r$   zBaseProactorEventLoop.__init__x  sœ   ø€ Ü‰ÑÔÜ�‰Ð)¨8×+=Ñ+=×+FÑ+FÔGØ!ˆŒØ!ˆŒØ$(ˆÔ!Ø!ˆÔØ×Ñ˜$ÔØ×ÑÔÜ×#Ñ#Ó%¬×)>Ñ)>Ó)@Ñ@ä× Ñ  §¡×!3Ñ!3Ó!5Õ6ð Ar>   Nc                 ó"   — t        | |||||«      S rO   )r÷   )r7   r   r9   r:   r;   r<   s         r   Ú_make_socket_transportz,BaseProactorEventLoop._make_socket_transport…  s   € ä'¨¨d°H¸fØ(-¨vó7ð 	7r>   F)Úserver_sideÚserver_hostnamer;   r<   Ússl_handshake_timeoutÚssl_shutdown_timeoutc          
      ót   — t        j                  | ||||||	|
¬«      }t        | ||||¬«       |j                  S )N)r  r  ©r;   r<   )r
   ÚSSLProtocolr÷   Ú_app_transport)r7   Úrawsockr9   Ú
sslcontextr:   r  r  r;   r<   r  r  Ússl_protocols               r   Ú_make_ssl_transportz)BaseProactorEventLoop._make_ssl_transportŠ  sI   € ô  ×+Ñ+Ø�h 
¨FØ˜_Ø&;Ø%9ô	;ˆô
 	!  w°Ø',°Võ	=à×*Ñ*Ð*r>   c                 ó"   — t        | |||||«      S rO   )rØ   )r7   r   r9   rÞ   r:   r;   s         r   Ú_make_datagram_transportz.BaseProactorEventLoop._make_datagram_transport™  s   € ä)¨$°°hÀØ*0°%ó9ð 	9r>   c                 ó    — t        | ||||«      S rO   )rò   ©r7   r   r9   r:   r;   s        r   Ú_make_duplex_pipe_transportz1BaseProactorEventLoop._make_duplex_pipe_transportž  s   € ä+¨DØ,0°(¸FÀEóKð 	Kr>   c                 ó    — t        | ||||«      S rO   )r�   r  s        r   Ú_make_read_pipe_transportz/BaseProactorEventLoop._make_read_pipe_transport£  s   € ä)¨$°°hÀÈÓNÐNr>   c                 ó    — t        | ||||«      S rO   )rÏ   r  s        r   Ú_make_write_pipe_transportz0BaseProactorEventLoop._make_write_pipe_transport§  s   € ô +¨4Ø+/°¸6À5óJð 	Jr>   c                 ó„  •— | j                  «       rt        d«      ‚| j                  «       ry t        j                  «       t        j
                  «       u rt        j                  d«       | j                  «        | j                  «        | j                  j                  «        d | _
        d | _        t        ‰| �-  «        y )Nz!Cannot close a running event looprp   )Ú
is_runningr±   Ú	is_closedr  r  r	  r
  r  Ú_stop_accept_futuresÚ_close_self_piper¡   rY   r  r#   )r7   r=   s    €r   rY   zBaseProactorEventLoop.close­  s‘   ø€ Ø�?‰?ÔÜÐBÓCÐCØ�>‰>ÔØä×#Ñ#Ó%¬×)>Ñ)>Ó)@Ñ@Ü× Ñ  Ô$ð 	×!Ñ!Ô#Ø×ÑÔØ�‰×ÑÔØˆŒØˆŒô 	‰‰�r>   c              ƒ   óV   K  — | j                   j                  ||«      ƒ d {  –—† S 7 Œ­wrO   )r¡   rÒ   )r7   r   Úns      r   Ú	sock_recvzBaseProactorEventLoop.sock_recvÁ  s#   è ø€ Ø—^‘^×(Ñ(¨¨qÓ1×1Ð1Ð1úó   ‚ )¢'£)c              ƒ   óV   K  — | j                   j                  ||«      ƒ d {  –—† S 7 Œ­wrO   )r¡   r¢   )r7   r   Úbufs      r   Úsock_recv_intoz$BaseProactorEventLoop.sock_recv_intoÄ  s#   è ø€ Ø—^‘^×-Ñ-¨d°CÓ8×8Ð8Ð8úr-  c              ƒ   óV   K  — | j                   j                  ||«      ƒ d {  –—† S 7 Œ­wrO   )r¡   rï   )r7   r   Úbufsizes      r   Úsock_recvfromz#BaseProactorEventLoop.sock_recvfromÇ  s#   è ø€ Ø—^‘^×,Ñ,¨T°7Ó;×;Ð;Ð;úr-  c              ƒ   ór   K  — |st        |«      }| j                  j                  |||«      ƒ d {  –—† S 7 Œ­wrO   )rF   r¡   Úrecvfrom_into)r7   r   r/  Únbytess       r   Úsock_recvfrom_intoz(BaseProactorEventLoop.sock_recvfrom_intoÊ  s1   è ø€ ÙÜ˜“XˆFà—^‘^×1Ñ1°$¸¸VÓD×DÐDÐDús   ‚.7°5±7c              ƒ   óV   K  — | j                   j                  ||«      ƒ d {  –—† S 7 Œ­wrO   )r¡   rº   )r7   r   rœ   s      r   Úsock_sendallz"BaseProactorEventLoop.sock_sendallÐ  s#   è ø€ Ø—^‘^×(Ñ(¨¨tÓ4×4Ð4Ð4úr-  c              ƒ   óZ   K  — | j                   j                  ||d|«      ƒ d {  –—† S 7 Œ­w)Nr   )r¡   rç   )r7   r   rœ   rÞ   s       r   Úsock_sendtoz!BaseProactorEventLoop.sock_sendtoÓ  s'   è ø€ Ø—^‘^×*Ñ*¨4°°q¸'ÓB×BÐBÐBús   ‚"+¤)¥+c              ƒ   óV   K  — | j                   j                  ||«      ƒ d {  –—† S 7 Œ­wrO   )r¡   Úconnect)r7   r   rÞ   s      r   Úsock_connectz"BaseProactorEventLoop.sock_connectÖ  s#   è ø€ Ø—^‘^×+Ñ+¨D°'Ó:×:Ð:Ð:úr-  c              ƒ   óT   K  — | j                   j                  |«      ƒ d {  –—† S 7 Œ­wrO   )r¡   ÚacceptrM   s     r   Úsock_acceptz!BaseProactorEventLoop.sock_acceptÙ  s!   è ø€ Ø—^‘^×*Ñ*¨4Ó0×0Ð0Ð0ús   ‚(¡&¢(c              ƒ   ó„  K  — 	 |j                  «       }	 t        j                  |«      j                  }|r|n|}|syt        |d«      }|rt        ||z   |«      n|}	t        ||«      }d}
	 	 t        |	|z
  |«      }|dk  r|
|
dkD  r|j                  |«       S S | j                  j                  ||||«      ƒ d {  –—†  ||z  }|
|z  }
Œ^# t        t        j                  f$ r}t	        j
                  d«      ‚d }~ww xY w# t        $ r t	        j
                  d«      ‚w xY w7 Œg# |
dkD  r|j                  |«       w w xY w­w)Nznot a regular filer   l   ÿÿ )rE   ÚAttributeErrorÚioÚUnsupportedOperationr   ÚSendfileNotAvailableErrorÚosÚfstatÚst_sizerc   ÚminÚseekr¡   Úsendfile)r7   r   ÚfileÚoffsetÚcountrE   ÚerrÚfsizeÚ	blocksizeÚend_posÚ
total_sents              r   Ú_sock_sendfile_nativez+BaseProactorEventLoop._sock_sendfile_nativeÜ  s_  è ø€ ð	MØ—[‘[“]ˆFð	MÜ—H‘H˜VÓ$×,Ñ,ˆEñ #‘E¨ˆ	ÙØä˜	 ;Ó/ˆ	Ù05”#�f˜u‘n eÔ,¸5ˆÜ�V˜UÓ#ˆØˆ
ð
	"ØÜ ¨&Ñ 0°)Ó<�	Ø ’>Ø%ð
 ˜AŠ~Ø—	‘	˜&Õ!ð ð	 —n‘n×-Ñ-¨d°D¸&À)ÓL×LÐLØ˜)Ñ#�Ø˜iÑ'�
ð øô ¤× 7Ñ 7Ð8ò 	MÜ×6Ñ6Ð7KÓLÐLûð	Mûô ò 	MÜ×6Ñ6Ð7KÓLÐLð	Múð Mùð ˜AŠ~Ø—	‘	˜&Õ!ð üsh   ‚E „C
 •D  ´6E Á+D$ ÂE Â!D$ Â:D"Â;D$ Ã
C=Ã#C8Ã8C=Ã=E Ä DÄE Ä"D$ Ä$D=Ä=E c              ƒ   ój  K  — |j                  «       }|j                  «        |j                  «       ƒ d {  –—†  	 | j                  |j                  |||d¬«      ƒ d {  –—† |j                  «        |r|j                  «        S S 7 ŒP7 Œ)# |j                  «        |r|j                  «        w w xY w­w)NF)Úfallback)rŠ   rŒ   rÉ   Úsock_sendfiler&   rË   r�   )r7   ÚtransprM  rN  rO  r�   s         r   Ú_sendfile_nativez&BaseProactorEventLoop._sendfile_nativeù  s®   è ø€ Ø×*Ñ*Ó,ˆØ×ÑÔØ×'Ñ'Ó)×)Ð)ð	(Ø×+Ñ+¨F¯L©L¸$ÀÈØ5:ð ,ó <÷ <ð ×&Ñ&Ô(ÙØ×%Ñ%Õ'ð ð 	*øð<ùð ×&Ñ&Ô(ÙØ×%Ñ%Õ'ð üs8   ‚4B3¶B·B3¼#B ÁB	Á B Á#%B3Â	B Â%B0Â0B3c                 ó  — | j                   �!| j                   j                  «        d | _         | j                  j                  «        d | _        | j                  j                  «        d | _        | xj
                  dz  c_        y )Nr   )r  rX   Ú_ssockrY   r  Ú_internal_fdsrR   s    r   r)  z&BaseProactorEventLoop._close_self_pipe  sg   € Ø×$Ñ$Ð0Ø×%Ñ%×,Ñ,Ô.Ø(,ˆDÔ%Ø�‰×ÑÔØˆŒØ�‰×ÑÔØˆŒØ×Ò˜aÑÖr>   c                 óÜ   — t        j                  «       \  | _        | _        | j                  j	                  d«       | j                  j	                  d«       | xj
                  dz  c_        y )NFr   )r   Ú
socketpairr\  r  Úsetblockingr]  rR   s    r   r  z%BaseProactorEventLoop._make_self_pipe  sN   € ä#)×#4Ñ#4Ó#6Ñ ˆŒ�T”[Ø�‰×Ñ Ô&Ø�‰×Ñ Ô&Ø×Ò˜aÑÖr>   c                 ót  — 	 |�|j                  «        | j                  |ury | j                  j                  | j                  d«      }|| _        |j                  | j                  «       y # t        j                  $ r Y y t        t        f$ r ‚ t        $ r}| j                  d|| dœ«       Y d }~y d }~ww xY w)Ni   z.Error on reading from the event loop self pipe)r`   ra   r8   )rž   r  r¡   rÒ   r\  r£   Ú_loop_self_readingr   r¦   r“   r”   r•   re   )r7   r»   rg   s      r   rb  z(BaseProactorEventLoop._loop_self_reading  sµ   € ð	9Øˆ}Ø—‘”
Ø×(Ñ(°Ñ1ð Ø—‘×#Ñ# D§K¡K°Ó6ˆAð )*ˆDÔ%Ø×Ñ × 7Ñ 7Õ8øô ×(Ñ(ò 	áÜÔ-Ð.ò 	ØÜò 	Ø×'Ñ'ØKØ Øñ)÷ ñ ûð	ús"   ‚ A, £&A, Á,B7ÂB7ÂB2Â2B7c                 ó®   — | j                   }|€y 	 |j                  d«       y # t        $ r( | j                  rt	        j
                  dd¬«       Y y Y y w xY w)Nó    z3Fail to write a null byte into the self-pipe socketTr   )r  rº   rc   Ú_debugr   rd   )r7   Úcsocks     r   Ú_write_to_selfz$BaseProactorEventLoop._write_to_self2  sU   € ð —‘ˆØˆ=Øð	,Ø�J‰J�uÕøÜò 	,Ø�{Š{Ü—‘ð 0à&*÷,ñ ð	,ús   ‘# £,AÁAc           	      óP   ‡ ‡‡‡‡‡‡‡— dˆˆˆ ˆˆˆˆˆfd„	Š‰ j                  ‰«       y )Nc           
      ó  •— 	 | �s| j                  «       \  }}‰j                  rt        j                  d‰||«        ‰«       }‰�‰j	                  ||‰dd|i‰‰
‰¬«       n‰j                  ||d|i‰¬«       ‰j                  «       ry ‰j                  j                  ‰	«      } | ‰j                  ‰	j                  «       <   | j                  ‰«       y # t        $ r„}‰	j                  «       dk7  r9‰j                  d|t        j                  ‰	«      dœ«       ‰	j!                  «        n.‰j                  rt        j                  d	‰	d¬
«       Y d }~y Y d }~y Y d }~y d }~wt"        j$                  $ r ‰	j!                  «        Y y w xY w)Nz#%r got a new connection from %r: %rTr   )r  r;   r<   r  r  r  rp   zAccept failed on a socket)r`   ra   r   zAccept failed on socket %rr   )rž   re  r   rd   r  r  r'  r¡   r@  r  rE   r£   rc   re   r   r   rY   r   r¦   )r»   Úconnræ   r9   rg   r8   Úprotocol_factoryr7   r<   r   r  r  r  s        €€€€€€€€r   r8   z2BaseProactorEventLoop._start_serving.<locals>.loopI  sw  ø€ ð#*Ø�=Ø!"§¡£‘J�D˜$Ø—{’{ÜŸ™Ð%JØ%+¨T°4ô9á/Ó1�HØ!Ð-Ø×0Ñ0Ø  (¨JÀDØ#-¨tÐ"4¸VØ2GØ1Eð	 1õ Gð ×3Ñ3Ø  (Ø#-¨tÐ"4¸Vð 4ô Eð —>‘>Ô#ØØ—N‘N×)Ñ)¨$Ó/�ð 78�×$Ñ$ T§[¡[£]Ñ3Ø×#Ñ# DÕ)øô ò 
6Ø—;‘;“= BÒ&Ø×/Ñ/Ø#>Ø%(Ü"(×"8Ñ"8¸Ó">ñ1ô ð
 —J‘J•LØ—[’[Ü—L‘LÐ!=Ø!%°÷6ò 6ô !ô !ûô ×,Ñ,ò Ø—
‘
–ðús%   ƒBC Â	C Ã	FÃA0EÅ&FÆFrO   )r2   )	r7   rk  r   r  r<   Úbacklogr  r  r8   s	   ````` ``@r   Ú_start_servingz$BaseProactorEventLoop._start_servingD  s   ÿ€ ÷
$	*ô $	*ðL 	�‰�tÕr>   c                  ó   — y rO   r¾   )r7   Ú
event_lists     r   Ú_process_eventsz%BaseProactorEventLoop._process_eventsq  s   € àr>   c                 ó–   — | j                   j                  «       D ]  }|j                  «        Œ | j                   j                  «        y rO   )r  ÚvaluesrX   Úclear)r7   Úfutures     r   r(  z*BaseProactorEventLoop._stop_accept_futuresu  s;   € Ø×*Ñ*×1Ñ1Ó3ò 	ˆFØ�M‰M�Oð	à×Ñ×"Ñ"Õ$r>   c                 óÒ   — | j                   j                  |j                  «       d «      }|r|j                  «        | j                  j                  |«       |j                  «        y rO   )r  ÚpoprE   rX   r¡   Ú_stop_servingrY   )r7   r   rt  s      r   rw  z#BaseProactorEventLoop._stop_servingz  sG   € Ø×%Ñ%×)Ñ)¨$¯+©+«-¸Ó>ˆÙØ�M‰MŒOØ�‰×$Ñ$ TÔ*Ø�
‰
�r>   rx   rO   rÌ   )r   )NNéd   NN)rC   ry   rz   r$   r  r  r  r   r"  r$  rY   r,  r0  r3  r7  r9  r;  r>  rA  rU  rZ  r)  r  rb  rg  rm  rp  r(  rw  r~   r   s   @r   r   r   v  sß   ø„ ô7ð =AØ26ó7ð 9=ð+à °$Ø˜tØ"&Ø!%ô+ð  CGó9ð
 BFØ*.óKð
 @DØ(,óOð AEØ)-óJôò(2ò9ò<óEò5òCò;ò1ò"ò:
(ò ò ó9ò8,ð& >AØ-1Ø,0ó+òZò%ö
r>   r   )$r{   Ú__all__rD  rG  r   r|   r
  r  rÜ   Ú r   r   r   r   r	   r
   r   r   Úlogr   r   Ú_FlowControlMixinÚBaseTransportr!   ÚReadTransportr�   ÚWriteTransportr©   rÏ   ÚDatagramTransportrØ   Ú	Transportrò   r÷   ÚBaseEventLoopr   r¾   r>   r   ú<module>rƒ     s  ðñð #€ã 	Û 	Û Û Û Û Û å Ý Ý Ý Ý Ý Ý Ý Ý ò0ô$D ×!=Ñ!=Ø!+×!9Ñ!9ôDôNP2Ð!;Ø!+×!9Ñ!9ôP2ôfk"Ð&@Ø&0×&?Ñ&?ôk"ô\Ð"Aô ô,A=Ð!;Ø!+×!=Ñ!=ôA=ôH	"Ð#=Ø#BØ#-×#7Ñ#7ô	"ô0Ð9Ø>Ø)×3Ñ3ô0ô4I˜K×5Ñ5õ Ir>   