Ë
    è×ïiÐ˜  ã                   ó€  — d Z dg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.                  «      Z G d„ dej2                  ej4                  «      Z G d„ de«      Z G d„ de«      Z G d„ de«      Zy# e	$ r dZY Œ™w xY w)zÄEvent loop using a selector and related classes.

A selector is a "notify-when-ready" multiplexer.  For a subclass which
also includes support for signal handling, see the unix_events sub-module.
ÚBaseSelectorEventLoopé    Né   )Úbase_events)Ú	constants)Úevents)Úfutures)Ú	selectors)Ú
transports)Ússlproto)Ú	coroutine)Úloggerc                 ót   — 	 | j                  |«      }t        |j                  |z  «      S # t        $ r Y yw xY w©NF)Úget_keyÚboolr   ÚKeyError)ÚselectorÚfdÚeventÚkeys       úQ/var/www/html/aiagents/fe/lib/python3.12/site-packages/asyncio/selector_events.pyÚ_test_selector_eventr      sA   € ð(Ø×Ñ˜rÓ"ˆô �C—J‘J Ñ&Ó'Ð'øô ò Ùðús   ‚+ «	7¶7c                   ó  ‡ — e Zd ZdZd%ˆ fd„	Zd%dddœd„Zd%dddddœd„Zdddddœd	„Z	 d&d
„Zˆ fd„Z	d„ Z
d„ Zd„ Zd„ Zd„ Zd„ Z	 d'd„Z	 d'd„Ze	 d'd„«       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd „ Zd!„ Z d"„ Z!d#„ Z"d$„ Z#ˆ xZ$S )(r   zJSelector event loop.

    See events.EventLoop for API specification.
    Nc                 óÐ   •— t         ‰| �  «        |€t        j                  «       }t	        j
                  d|j                  j                  «       || _        | j                  «        y )NzUsing selector: %s)
ÚsuperÚ__init__r	   ÚDefaultSelectorr   ÚdebugÚ	__class__Ú__name__Ú	_selectorÚ_make_self_pipe)Úselfr   r   s     €r   r   zBaseSelectorEventLoop.__init__0   sP   ø€ Ü‰ÑÔàÐÜ ×0Ñ0Ó2ˆHÜ�‰Ð)¨8×+=Ñ+=×+FÑ+FÔGØ!ˆŒØ×ÑÕó    ©ÚextraÚserverc                ó"   — t        | |||||«      S ©N)Ú_SelectorSocketTransport)r#   ÚsockÚprotocolÚwaiterr&   r'   s         r   Ú_make_socket_transportz,BaseSelectorEventLoop._make_socket_transport9   s   € ä'¨¨d°H¸fØ(-¨vó7ð 	7r$   F©Úserver_sideÚserver_hostnamer&   r'   c          
      óÈ   — t        j                  «       s| j                  ||||||||¬«      S t        j                  | |||||«      }	t	        | ||	||¬«       |	j
                  S )Nr/   r%   )r   Ú_is_sslproto_availableÚ_make_legacy_ssl_transportÚSSLProtocolr*   Ú_app_transport)
r#   Úrawsockr,   Ú
sslcontextr-   r0   r1   r&   r'   Ússl_protocols
             r   Ú_make_ssl_transportz)BaseSelectorEventLoop._make_ssl_transport>   sz   € ô ×.Ñ.Ô0Ø×2Ñ2Ø˜ :¨vØ'¸Ø Fð 3ó ,ð ,ô
  ×+Ñ+¨D°(¸JÈØ,7¸óJˆä   w°Ø',°Võ	=à×*Ñ*Ð*r$   c                ó(   — t        | ||||||||«	      S r)   )Ú_SelectorSslTransport)	r#   r7   r,   r8   r-   r0   r1   r&   r'   s	            r   r4   z0BaseSelectorEventLoop._make_legacy_ssl_transportM   s%   € ô %Ø�'˜8 Z°Ø˜¨%°ó9ð 	9r$   c                 ó"   — t        | |||||«      S r)   )Ú_SelectorDatagramTransport)r#   r+   r,   Úaddressr-   r&   s         r   Ú_make_datagram_transportz.BaseSelectorEventLoop._make_datagram_transportW   s   € ä)¨$°°hØ*1°6¸5óBð 	Br$   c                 óö   •— | j                  «       rt        d«      ‚| j                  «       ry | j                  «        t        ‰| �  «        | j                  �"| j                  j                  «        d | _        y y )Nz!Cannot close a running event loop)Ú
is_runningÚRuntimeErrorÚ	is_closedÚ_close_self_piper   Úcloser!   )r#   r   s    €r   rF   zBaseSelectorEventLoop.close\   sa   ø€ Ø�?‰?ÔÜÐBÓCÐCØ�>‰>ÔØØ×ÑÔÜ‰‰ŒØ�>‰>Ð%Ø�N‰N× Ñ Ô"Ø!ˆD�Nð &r$   c                 ó   — t         ‚r)   )ÚNotImplementedError©r#   s    r   Ú_socketpairz!BaseSelectorEventLoop._socketpairg   s   € Ü!Ð!r$   c                 ó  — | j                  | j                  j                  «       «       | j                  j                  «        d | _        | j                  j                  «        d | _        | xj
                  dz  c_        y )Nr   )Úremove_readerÚ_ssockÚfilenorF   Ú_csockÚ_internal_fdsrI   s    r   rE   z&BaseSelectorEventLoop._close_self_pipej   s\   € Ø×Ñ˜4Ÿ;™;×-Ñ-Ó/Ô0Ø�‰×ÑÔØˆŒØ�‰×ÑÔØˆŒØ×Ò˜aÑÖr$   c                 ó<  — | j                  «       \  | _        | _        | j                  j                  d«       | j                  j                  d«       | xj                  dz  c_        | j                  | j                  j                  «       | j                  «       y )NFr   )rJ   rM   rO   ÚsetblockingrP   Ú
add_readerrN   Ú_read_from_selfrI   s    r   r"   z%BaseSelectorEventLoop._make_self_piper   so   € à#'×#3Ñ#3Ó#5Ñ ˆŒ�T”[Ø�‰×Ñ Ô&Ø�‰×Ñ Ô&Ø×Ò˜aÑÕØ�‰˜Ÿ™×*Ñ*Ó,¨d×.BÑ.BÕCr$   c                  ó   — y r)   © ©r#   Údatas     r   Ú_process_self_dataz(BaseSelectorEventLoop._process_self_dataz   s   € Ør$   c                 ó˜   — 	 	 | j                   j                  d«      }|sy | j                  |«       Œ1# t        $ r Y Œ=t        $ r Y y w xY w)Ni   )rM   ÚrecvrY   ÚInterruptedErrorÚBlockingIOErrorrW   s     r   rT   z%BaseSelectorEventLoop._read_from_self}   sV   € ØðØ—{‘{×'Ñ'¨Ó-�ÙØØ×'Ñ'¨Ô-ð øô $ò ÙÜ"ò Ùðús   ƒ3 ¡3 ³	A	¾A	ÁA	c                 ó®   — | j                   }|�	 |j                  d«       y 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 socketT©Úexc_info)rO   ÚsendÚOSErrorÚ_debugr   r   )r#   Úcsocks     r   Ú_write_to_selfz$BaseSelectorEventLoop._write_to_self‰   sZ   € ð —‘ˆØÐð0Ø—
‘
˜5Õ!ð øô ò 0Ø—;’;Ü—L‘Lð "4à*.÷0ñ ð0ús   �# £,AÁAc                 ó`   — | j                  |j                  «       | j                  ||||«       y r)   )rS   rN   Ú_accept_connection)r#   Úprotocol_factoryr+   r8   r'   s        r   Ú_start_servingz$BaseSelectorEventLoop._start_serving™   s(   € à�‰˜Ÿ™› t×'>Ñ'>Ø(¨$°
¸Fõ	Dr$   c           	      óœ  — 	 |j                  «       \  }}| j                  rt        j                  d|||«       |j	                  d«       d|i}| j                  |||||«      }| j                  |«       y # t        t        t        f$ r Y y t        $ r¸}	|	j                  t        j                  t        j                  t        j                  t        j                  fv rc| j!                  d|	|dœ«       | j#                  |j%                  «       «       | j'                  t(        j*                  | j,                  ||||«       n‚ Y d }	~	y d }	~	ww xY w)Nz#%r got a new connection from %r: %rFÚpeernamez&socket.accept() out of system resource)ÚmessageÚ	exceptionÚsocket)Úacceptrd   r   r   rR   Ú_accept_connection2Úcreate_taskr]   r\   ÚConnectionAbortedErrorrc   ÚerrnoÚEMFILEÚENFILEÚENOBUFSÚENOMEMÚcall_exception_handlerrL   rN   Ú
call_laterr   ÚACCEPT_RETRY_DELAYrj   )
r#   ri   r+   r8   r'   ÚconnÚaddrr&   rp   Úexcs
             r   rh   z(BaseSelectorEventLoop._accept_connectionž   s.  € ð	%ØŸ™›‰JˆD�$Ø�{Š{Ü—‘ÐBØ# T¨4ô1à×Ñ˜UÔ#ð,   Ð&ˆEØ×-Ñ-Ð.>ÀÀeØ.8¸&óBˆFà×Ñ˜VÕ$øô1  Ô!1Ô3IÐJò 	ÙÜò 	à�y‰yœUŸ\™\¬5¯<©<Ü"Ÿ]™]¬E¯L©Lð:ñ :ð
 ×+Ñ+ØGØ!$Ø"ñ-ô ð
 ×"Ñ" 4§;¡;£=Ô1Ø—‘¤	× <Ñ <Ø $× 3Ñ 3Ø 0°$¸
ÀFõLð ô	Lûð	ús   ‚AA5 Á5EÂEÂB.EÅEc           	   #   óŽ  K  — d }d }	  |«       }t        j                  | ¬«      }|r| j                  ||||d||¬«      }n| j                  |||||¬«      }	 |E d {  –—†  y 7 Œ#  |j	                  «        ‚ xY w# t
        $ r?}	| j                  r)d|	dœ}
|�||
d<   |�||
d<   | j                  |
«       Y d }	~	y Y d }	~	y d }	~	ww xY w­w)	N©ÚloopT)r-   r0   r&   r'   )r-   r&   r'   z3Error on transport creation for incoming connection)rm   rn   r,   Ú	transport)r   ÚFuturer:   r.   rF   Ú	Exceptionrd   ry   )r#   ri   r|   r&   r8   r'   r,   r‚   r-   r~   Úcontexts              r   rq   z)BaseSelectorEventLoop._accept_connection2À   sù   è ø€ ð ˆØˆ	ð	5Ù'Ó)ˆHÜ—^‘^¨Ô.ˆFÙØ ×4Ñ4Ø˜( J°vØ $¨E¸&ð 5ó B‘	ð !×7Ñ7Ø˜(¨6¸Ø!ð 8ó #�	ðØ!×!Ò!ùðØ—‘Ô!Øûô ò 	5Ø�{Š{ð!:à!$ñ�ð
 Ð'Ø*2�G˜JÑ'ØÐ(Ø+4�G˜KÑ(Ø×+Ñ+¨G×4Ñ4ô ûð	5üsS   ‚CˆAA: ÁA$ ÁA"ÁA$ Á!CÁ"A$ Á$A7Á7A: Á:	CÂ0B=Â3
CÂ=CÃCc                 óÀ  — | j                  «        t        j                  ||| «      }	 | j                  j	                  |«      }|j                  |j
                  c}\  }}| j                  j                  ||t        j                  z  ||f«       |�|j                  «        yy# t        $ r0 | j                  j                  |t        j                  |df«       Y yw xY w)zAdd a reader callback.N)Ú_check_closedr   ÚHandler!   r   rX   Úmodifyr	   Ú
EVENT_READÚcancelr   Úregister©	r#   r   ÚcallbackÚargsÚhandler   ÚmaskÚreaderÚwriters	            r   rS   z BaseSelectorEventLoop.add_readerå   sÅ   € à×ÑÔÜ—‘˜x¨¨tÓ4ˆð
	 Ø—.‘.×(Ñ(¨Ó,ˆCð
 &)§Z¡Z°·±Ð"ˆDÑ"�6˜6Ø�N‰N×!Ñ! " d¬Y×-AÑ-AÑ&AØ#)¨6Ð"2ô4àÐ!Ø—‘•ð "øô ò 	4Ø�N‰N×#Ñ# B¬	×(<Ñ(<Ø%+¨T Nö4ð	4úó   ©B$ Â$6CÃCc                 ó|  — | j                  «       ry	 | j                  j                  |«      }|j                  |j                  c}\  }}|t
        j                   z  }|s| j                  j                  |«       n| j                  j                  ||d|f«       |�|j                  «        yy# t        $ r Y yw xY w)zRemove a reader callback.FNT)rD   r!   r   r   rX   r	   rŠ   Ú
unregisterr‰   r‹   r   ©r#   r   r   r‘   r’   r“   s         r   rL   z#BaseSelectorEventLoop.remove_readerõ   s®   € à�>‰>ÔØð	Ø—.‘.×(Ñ(¨Ó,ˆCð &)§Z¡Z°·±Ð"ˆDÑ"�6˜6Ø”Y×)Ñ)Ð)Ñ)ˆDÙØ—‘×)Ñ)¨"Õ-à—‘×%Ñ% b¨$°°v°Ô?àÐ!Ø—‘”Øàøô ò 	Ùð	úó   “B/ Â/	B;Â:B;c                 óÀ  — | j                  «        t        j                  ||| «      }	 | j                  j	                  |«      }|j                  |j
                  c}\  }}| j                  j                  ||t        j                  z  ||f«       |�|j                  «        yy# t        $ r0 | j                  j                  |t        j                  d|f«       Y yw xY w)zAdd a writer callback..N)r‡   r   rˆ   r!   r   rX   r‰   r	   ÚEVENT_WRITEr‹   r   rŒ   r�   s	            r   Ú
add_writerz BaseSelectorEventLoop.add_writer  sÅ   € à×ÑÔÜ—‘˜x¨¨tÓ4ˆð
	 Ø—.‘.×(Ñ(¨Ó,ˆCð
 &)§Z¡Z°·±Ð"ˆDÑ"�6˜6Ø�N‰N×!Ñ! " d¬Y×-BÑ-BÑ&BØ#)¨6Ð"2ô4àÐ!Ø—‘•ð "øô ò 	4Ø�N‰N×#Ñ# B¬	×(=Ñ(=Ø%)¨6 Nö4ð	4úr”   c                 ó|  — | j                  «       ry	 | j                  j                  |«      }|j                  |j                  c}\  }}|t
        j                   z  }|s| j                  j                  |«       n| j                  j                  |||df«       |�|j                  «        yy# t        $ r Y yw xY w)zRemove a writer callback.FNT)rD   r!   r   r   rX   r	   rš   r–   r‰   r‹   r   r—   s         r   Úremove_writerz#BaseSelectorEventLoop.remove_writer  s®   € à�>‰>ÔØð	Ø—.‘.×(Ñ(¨Ó,ˆCð &)§Z¡Z°·±Ð"ˆDÑ"�6˜6à”Y×*Ñ*Ð*Ñ*ˆDÙØ—‘×)Ñ)¨"Õ-à—‘×%Ñ% b¨$°¸°Ô?àÐ!Ø—‘”Øàøô ò 	Ùð	úr˜   c                 ó®   — | j                   r|j                  «       dk7  rt        d«      ‚t        j                  | ¬«      }| j                  |d||«       |S )zñReceive data from the socket.

        The return value is a bytes object representing the data received.
        The maximum amount of data to be received at once is specified by
        nbytes.

        This method is a coroutine.
        r   úthe socket must be non-blockingr€   F)rd   Ú
gettimeoutÚ
ValueErrorr   rƒ   Ú
_sock_recv)r#   r+   ÚnÚfuts       r   Ú	sock_recvzBaseSelectorEventLoop.sock_recv2  sJ   € ð �;Š;˜4Ÿ?™?Ó,°Ò1ÜÐ>Ó?Ð?Ü�n‰n $Ô'ˆØ�‰˜˜U D¨!Ô,Øˆ
r$   c           	      ó`  — |j                  «       }|r| j                  |«       |j                  «       ry 	 |j                  |«      }|j	                  |«       y # t
        t        f$ r# | j                  || j                  |d||«       Y y t        $ r}|j                  |«       Y d }~y d }~ww xY w©NT)rN   rL   Ú	cancelledr[   Ú
set_resultr]   r\   rS   r¢   r„   Úset_exception)r#   r¤   Ú
registeredr+   r£   r   rX   r~   s           r   r¢   z BaseSelectorEventLoop._sock_recvA  sš   € ð �[‰[‹]ˆÙð
 ×Ñ˜rÔ"Ø�=‰=Œ?Øð	!Ø—9‘9˜Q“<ˆDð �N‰N˜4Õ øô  Ô!1Ð2ò 	EØ�O‰O˜B §¡°°d¸DÀ!ÖDÜò 	#Ø×Ñ˜c×"Ñ"ûð	#ús   ¶A Á/B-Â
B-ÂB(Â(B-c                 óØ   — | j                   r|j                  «       dk7  rt        d«      ‚t        j                  | ¬«      }|r| j                  |d||«       |S |j                  d«       |S )a¿  Send data to the socket.

        The socket must be connected to a remote socket. This method continues
        to send data from data until either all data has been sent or an
        error occurs. None is returned on success. On error, an exception is
        raised, and there is no way to determine how much data, if any, was
        successfully processed by the receiving end of the connection.

        This method is a coroutine.
        r   rŸ   r€   FN)rd   r    r¡   r   rƒ   Ú_sock_sendallr©   )r#   r+   rX   r¤   s       r   Úsock_sendallz"BaseSelectorEventLoop.sock_sendallV  sd   € ð �;Š;˜4Ÿ?™?Ó,°Ò1ÜÐ>Ó?Ð?Ü�n‰n $Ô'ˆÙØ×Ñ˜s E¨4°Ô6ð ˆ
ð �N‰N˜4Ô Øˆ
r$   c                 ó�  — |j                  «       }|r| j                  |«       |j                  «       ry 	 |j                  |«      }|t        |«      k(  r|j                  d «       y |r||d  }| j                  || j                  |d||«       y # t        t
        f$ r d}Y Œ[t        $ r}|j                  |«       Y d }~y d }~ww xY w)Nr   T)rN   r�   r¨   rb   r]   r\   r„   rª   Úlenr©   r›   r­   )r#   r¤   r«   r+   rX   r   r£   r~   s           r   r­   z#BaseSelectorEventLoop._sock_sendallj  sµ   € Ø�[‰[‹]ˆáØ×Ñ˜rÔ"Ø�=‰=Œ?Øð	Ø—	‘	˜$“ˆAð ”�D“	Š>Ø�N‰N˜4Õ áØ˜A˜B�x�Ø�O‰O˜B × 2Ñ 2°C¸¸tÀTÕJøô  Ô!1Ð2ò 	ØŠAÜò 	Ø×Ñ˜cÔ"Üûð	ús   ¶B ÂCÂ"CÂ*C Ã Cc                 óB  — | j                   r|j                  «       dk7  rt        d«      ‚t        j                  | ¬«      }	 | j                   rt        j                  ||«       | j                  |||«       |S # t        $ r}|j                  |«       Y d}~|S d}~ww xY w)a   Connect to a remote socket at address.

        The address must be already resolved to avoid the trap of hanging the
        entire event loop when the address requires doing a DNS lookup. For
        example, it must be an IP address, not an hostname, for AF_INET and
        AF_INET6 address families. Use getaddrinfo() to resolve the hostname
        asynchronously.

        This method is a coroutine.
        r   rŸ   r€   N)	rd   r    r¡   r   rƒ   r   Ú_check_resolved_addressÚ_sock_connectrª   )r#   r+   r?   r¤   Úerrs        r   Úsock_connectz"BaseSelectorEventLoop.sock_connect�  s’   € ð �;Š;˜4Ÿ?™?Ó,°Ò1ÜÐ>Ó?Ð?Ü�n‰n $Ô'ˆð	3Ø�{Š{Ü×3Ñ3°D¸'ÔBð ×Ñ˜s D¨'Ô2Øˆ
øô	 ò 	#Ø×Ñ˜c×"Ð"ð ˆ
ûð		#ús   Á"A9 Á9	BÂBÂBc                 óŒ  — |j                  «       }	 	 	 |j                  |«       	 |j                  d «       y # t        $ r Y Œ1w xY w# t        $ rQ |j                  t        j                  | j                  |«      «       | j                  || j                  |||«       Y y t        $ r}|j                  |«       Y d }~y d }~ww xY wr)   )rN   Úconnectr\   r©   r]   Úadd_done_callbackÚ	functoolsÚpartialÚ_sock_connect_doner›   Ú_sock_connect_cbr„   rª   )r#   r¤   r+   r?   r   r~   s         r   r³   z#BaseSelectorEventLoop._sock_connect˜  s¸   € Ø�[‰[‹]ˆð	!ØðØ—L‘L Ô)ð ð �N‰N˜4Õ øô (ò Ùðûô ò 	KØ×!Ñ!¤)×"3Ñ"3°D×4KÑ4KØ46ó#8ô 9à�O‰O˜B × 5Ñ 5°s¸DÀ'ÖJÜò 	#Ø×Ñ˜c×"Ñ"ûð	#ús9   ’A ”8 ¸	AÁA ÁAÁA ÁACÂ CÂ(B>Â>Cc                 ó&   — | j                  |«       y r)   )r�   )r#   r   r¤   s      r   r»   z(BaseSelectorEventLoop._sock_connect_done«  s   € Ø×Ñ˜2Õr$   c                 ó>  — |j                  «       ry 	 |j                  t        j                  t        j                  «      }|dk7  rt        |d|›�«      ‚	 |j                  d «       y # t        t        f$ r Y y t        $ r}|j                  |«       Y d }~y d }~ww xY w)Nr   zConnect call failed )r¨   Ú
getsockoptro   Ú
SOL_SOCKETÚSO_ERRORrc   r©   r]   r\   r„   rª   )r#   r¤   r+   r?   r´   r~   s         r   r¼   z&BaseSelectorEventLoop._sock_connect_cb®  s‹   € Ø�=‰=Œ?Øð	!Ø—/‘/¤&×"3Ñ"3´V·_±_ÓEˆCØ�aŠxä™c¹wÐ#HÓIÐIð ð �N‰N˜4Õ øô  Ô!1Ð2ò 	áÜò 	#Ø×Ñ˜c×"Ñ"ûð	#ús   “AA( Á(BÁ9BÂBÂBc                 ó¬   — | j                   r|j                  «       dk7  rt        d«      ‚t        j                  | ¬«      }| j                  |d|«       |S )a|  Accept a connection.

        The socket must be bound to an address and listening for connections.
        The return value is a pair (conn, address) where conn is a new socket
        object usable to send and receive data on the connection, and address
        is the address bound to the socket on the other end of the connection.

        This method is a coroutine.
        r   rŸ   r€   F)rd   r    r¡   r   rƒ   Ú_sock_accept)r#   r+   r¤   s      r   Úsock_acceptz!BaseSelectorEventLoop.sock_accept¿  sJ   € ð �;Š;˜4Ÿ?™?Ó,°Ò1ÜÐ>Ó?Ð?Ü�n‰n $Ô'ˆØ×Ñ˜#˜u dÔ+Øˆ
r$   c                 óˆ  — |j                  «       }|r| j                  |«       |j                  «       ry 	 |j                  «       \  }}|j	                  d«       |j                  ||f«       y # t        t        f$ r" | j                  || j                  |d|«       Y y t        $ r}|j                  |«       Y d }~y d }~ww xY w)NFT)rN   rL   r¨   rp   rR   r©   r]   r\   rS   rÃ   r„   rª   )r#   r¤   r«   r+   r   r|   r?   r~   s           r   rÃ   z"BaseSelectorEventLoop._sock_acceptÏ  sª   € Ø�[‰[‹]ˆÙØ×Ñ˜rÔ"Ø�=‰=Œ?Øð	,Ø ŸK™K›M‰MˆD�'Ø×Ñ˜UÔ#ð �N‰N˜D '˜?Õ+øô  Ô!1Ð2ò 	DØ�O‰O˜B × 1Ñ 1°3¸¸dÖCÜò 	#Ø×Ñ˜c×"Ñ"ûð	#ús   ¶$A. Á..CÂCÂ&B<Â<Cc                 ód  — |D ]«  \  }}|j                   |j                  c}\  }}|t        j                  z  r1|�/|j                  r| j                  |«       n| j                  |«       |t        j                  z  sŒz|€Œ}|j                  r| j                  |«       Œ›| j                  |«       Œ­ y r)   )	ÚfileobjrX   r	   rŠ   Ú
_cancelledrL   Ú_add_callbackrš   r�   )r#   Ú
event_listr   r‘   rÇ   r’   r“   s          r   Ú_process_eventsz%BaseSelectorEventLoop._process_eventsß  sž   € Ø#ò 	/‰IˆC�Ø(+¯©°S·X±XÐ%ˆGÑ%�f˜fØ”i×*Ñ*Ò*¨vÐ/AØ×$Ò$Ø×&Ñ& wÕ/à×&Ñ& vÔ.Ø”i×+Ñ+Ó+°Ñ0BØ×$Ò$Ø×&Ñ& wÕ/à×&Ñ& vÕ.ñ	/r$   c                 ób   — | j                  |j                  «       «       |j                  «        y r)   )rL   rN   rF   )r#   r+   s     r   Ú_stop_servingz#BaseSelectorEventLoop._stop_servingí  s   € Ø×Ñ˜4Ÿ;™;›=Ô)Ø�
‰
�r$   r)   ©NNN©NN)%r    Ú
__module__Ú__qualname__Ú__doc__r   r.   r:   r4   r@   rF   rJ   rE   r"   rY   rT   rf   rj   rh   r   rq   rS   rL   r›   r�   r¥   r¢   r®   r­   rµ   r³   r»   r¼   rÄ   rÃ   rË   rÍ   Ú__classcell__©r   s   @r   r   r   *   sñ   ø„ ñõ
ð7Ø%)°$ô7ð
+Ø+0À$Ø"&¨tô+ð" 05ÀdØ)-°dô9ð CGóBô
	"ò"ò òDòò
ò0ð" 04óDð 48ó %ðD à48ò"5ó ð"5òH ò ò, ò ò.ò!ò*ò(Kò.ò.!ò&ò!ò"ò ,ò /ör$   c                   ó|   ‡ — e Zd ZdZeZdZdˆ fd„	Zd„ Zd„ Z	d„ Z
ej                  dk\  rd„ Zdd	„Zd
„ Zd„ Zd„ Zˆ xZS )Ú_SelectorTransporti   Nc                 ó  •— t         ‰| �  ||«       || j                  d<   |j                  «       | j                  d<   d| j                  vr	 |j	                  «       | j                  d<   || _        |j                  «       | _	        || _
        d| _        || _        | j                  «       | _        d| _        d| _        | j                  �| j                  j#                  «        y y # t
        j                  $ r d | j                  d<   Y Œ w xY w)Nro   Úsocknamerl   Tr   F)r   r   Ú_extraÚgetsocknameÚgetpeernamero   ÚerrorÚ_sockrN   Ú_sock_fdÚ	_protocolÚ_protocol_connectedÚ_serverÚ_buffer_factoryÚ_bufferÚ
_conn_lostÚ_closingÚ_attach)r#   r�   r+   r,   r&   r'   r   s         €r   r   z_SelectorTransport.__init__þ  së   ø€ Ü‰Ñ˜ Ô%Ø $ˆ�‰�HÑØ"&×"2Ñ"2Ó"4ˆ�‰�JÑØ˜TŸ[™[Ñ(ð/Ø*.×*:Ñ*:Ó*<�—‘˜JÑ'ð ˆŒ
ØŸ™›ˆŒØ!ˆŒØ#'ˆÔ ØˆŒØ×+Ñ+Ó-ˆŒØˆŒØˆŒØ�<‰<Ð#Ø�L‰L× Ñ Õ"ð $øô —<‘<ò /Ø*.�—‘˜JÓ'ð/ús   ÁC& Ã&"DÄ
Dc                 ó®  — | j                   j                  g}| j                  €|j                  d«       n| j                  r|j                  d«       |j                  d| j
                  z  «       | j                  �Æt        | j                  j                  | j
                  t        j                  «      }|r|j                  d«       n|j                  d«       t        | j                  j                  | j
                  t        j                  «      }|rd}nd}| j                  «       }|j                  d|›d	|›d
�«       ddj                  |«      z  S )NÚclosedÚclosingzfd=%szread=pollingz	read=idleÚpollingÚidlezwrite=<z
, bufsize=ú>z<%s>ú )r   r    rÝ   Úappendrå   rÞ   Ú_loopr   r!   r	   rŠ   rš   Úget_write_buffer_sizeÚjoin)r#   Úinforê   ÚstateÚbufsizes        r   Ú__repr__z_SelectorTransport.__repr__  s  € Ø—‘×'Ñ'Ð(ˆØ�:‰:ÐØ�K‰K˜Õ!Ø�]Š]Ø�K‰K˜	Ô"Ø�‰�G˜dŸm™mÑ+Ô,à�:‰:Ð!Ü*¨4¯:©:×+?Ñ+?Ø+/¯=©=¼)×:NÑ:NóPˆGáØ—‘˜NÕ+à—‘˜KÔ(ä*¨4¯:©:×+?Ñ+?Ø+/¯=©=Ü+4×+@Ñ+@óBˆGñ Ø!‘à�à×0Ñ0Ó2ˆGØ�KŠK²Eº7ÐCÔDØ˜Ÿ™ ›Ñ&Ð&r$   c                 ó&   — | j                  d «       y r)   )Ú_force_closerI   s    r   Úabortz_SelectorTransport.abort.  s   € Ø×Ñ˜$Õr$   c                 ó  — | j                   ry d| _         | j                  j                  | j                  «       | j                  s<| xj
                  dz  c_        | j                  j                  | j                  d «       y y ©NTr   )rå   rï   rL   rÞ   rã   rä   Ú	call_soonÚ_call_connection_lostrI   s    r   rF   z_SelectorTransport.close1  s]   € Ø�=Š=ØØˆŒØ�
‰
× Ñ  §¡Ô/Ø�|Š|Ø�OŠO˜qÑ �OØ�J‰J× Ñ  ×!;Ñ!;¸TÕBð r$   )é   é   c                 óŒ   — | j                   �8t        j                  d| z  t        «       | j                   j	                  «        y y )Nzunclosed transport %r)rÝ   ÚwarningsÚwarnÚResourceWarningrF   rI   s    r   Ú__del__z_SelectorTransport.__del__>  s5   € Ø�z‰zÐ%Ü—‘Ð5¸Ñ<¼oÔNØ—
‘
× Ñ Õ"ð &r$   c                 ó  — t        |t        t        t        f«      r4| j                  j                  «       rDt        j                  d| |d¬«       n*| j                  j                  ||| | j                  dœ«       | j                  |«       y )Nz%r: %sTr`   )rm   rn   r‚   r,   )Ú
isinstanceÚBrokenPipeErrorÚConnectionResetErrorrs   rï   Ú	get_debugr   r   ry   rß   r÷   )r#   r~   rm   s      r   Ú_fatal_errorz_SelectorTransport._fatal_errorC  st   € ä�cœOÜ0Ô2HðJô Kà�z‰z×#Ñ#Ô%Ü—‘˜X t¨W¸tÖDà�J‰J×-Ñ-Ø"Ø Ø!Ø ŸN™Nñ	/ô ð 	×Ñ˜#Õr$   c                 óš  — | j                   ry | j                  r?| j                  j                  «        | j                  j	                  | j
                  «       | j                  s,d| _        | j                  j                  | j
                  «       | xj                   dz  c_         | j                  j                  | j                  |«       y rú   )
rä   rã   Úclearrï   r�   rÞ   rå   rL   rû   rü   ©r#   r~   s     r   r÷   z_SelectorTransport._force_closeR  s…   € Ø�?Š?ØØ�<Š<Ø�L‰L×ÑÔ Ø�J‰J×$Ñ$ T§]¡]Ô3Ø�}Š}Ø ˆDŒMØ�J‰J×$Ñ$ T§]¡]Ô3Ø�Š˜1Ñ�Ø�
‰
×Ñ˜T×7Ñ7¸Õ=r$   c                 ó²  — 	 | j                   r| j                  j                  |«       | j                  j	                  «        d | _        d | _        d | _        | j                  }|�|j                  «        d | _        y y # | j                  j	                  «        d | _        d | _        d | _        | j                  }|�|j                  «        d | _        w w xY wr)   )rà   rß   Úconnection_lostrÝ   rF   rï   rá   Ú_detach)r#   r~   r'   s      r   rü   z(_SelectorTransport._call_connection_lost^  sº   € ð	$Ø×'Ò'Ø—‘×.Ñ.¨sÔ3à�J‰J×ÑÔØˆDŒJØ!ˆDŒNØˆDŒJØ—\‘\ˆFØÐ!Ø—‘Ô Ø#�•ð "øð �J‰J×ÑÔØˆDŒJØ!ˆDŒNØˆDŒJØ—\‘\ˆFØÐ!Ø—‘Ô Ø#�•ð "ús   ‚'A? Á?ACc                 ó,   — t        | j                  «      S r)   )r°   rã   rI   s    r   rð   z(_SelectorTransport.get_write_buffer_sizel  s   € Ü�4—<‘<Ó Ð r$   rÏ   )zFatal error on transport)r    rÐ   rÑ   Úmax_sizeÚ	bytearrayrâ   rÝ   r   rõ   rø   rF   ÚsysÚversion_infor  r	  r÷   rü   rð   rÓ   rÔ   s   @r   rÖ   rÖ   ò  sT   ø„ ð €Hà€Oð
 €Eõ#ò('ò8 òCð ×Ñ˜6Ò!ò	#ó
ò
>ò$ö!r$   rÖ   c                   óN   ‡ — e Zd Z	 	 d	ˆ fd„	Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
ˆ xZS )
r*   c                 ó„  •— t         ‰| �  |||||«       d| _        d| _        | j                  j                  | j                  j                  | «       | j                  j                  | j                  j                  | j                  | j                  «       |�'| j                  j                  |j                  d «       y y r   )r   r   Ú_eofÚ_pausedrï   rû   rß   Úconnection_maderS   rÞ   Ú_read_readyÚ_set_result_unless_cancelled)r#   r�   r+   r,   r-   r&   r'   r   s          €r   r   z!_SelectorSocketTransport.__init__r  s–   ø€ ä‰Ñ˜˜t X¨u°fÔ=ØˆŒ	ØˆŒà�
‰
×Ñ˜TŸ^™^×;Ñ;¸TÔBà�
‰
×Ñ˜TŸZ™Z×2Ñ2Ø!Ÿ]™]¨D×,<Ñ,<ô	>àÐà�J‰J× Ñ  ×!DÑ!DÀdÕKð r$   c                 ó  — | j                   rt        d«      ‚| j                  rt        d«      ‚d| _        | j                  j	                  | j
                  «       | j                  j                  «       rt        j                  d| «       y y ©Nz#Cannot pause_reading() when closingzAlready pausedTz%r pauses reading©	rå   rC   r  rï   rL   rÞ   r  r   r   rI   s    r   Úpause_readingz&_SelectorSocketTransport.pause_reading€  si   € Ø�=Š=ÜÐDÓEÐEØ�<Š<ÜÐ/Ó0Ð0ØˆŒØ�
‰
× Ñ  §¡Ô/Ø�:‰:×ÑÔ!Ü�L‰LÐ,¨dÕ3ð "r$   c                 ó  — | j                   st        d«      ‚d| _         | j                  ry | j                  j	                  | j
                  | j                  «       | j                  j                  «       rt        j                  d| «       y y ©Nz
Not pausedFz%r resumes reading©
r  rC   rå   rï   rS   rÞ   r  r  r   r   rI   s    r   Úresume_readingz'_SelectorSocketTransport.resume_readingŠ  óg   € Ø�|Š|Ü˜|Ó,Ð,ØˆŒØ�=Š=ØØ�
‰
×Ñ˜dŸm™m¨T×-=Ñ-=Ô>Ø�:‰:×ÑÔ!Ü�L‰LÐ-¨tÕ4ð "r$   c                 ó   — 	 | j                   j                  | j                  «      }|r| j                  j	                  |«       y | j
                  j                  «       rt        j                  d| «       | j                  j                  «       }|r&| j
                  j                  | j                  «       y | j                  «        y # t        t        f$ r Y y t        $ r}| j!                  |d«       Y d }~y d }~ww xY w)Nú%r received EOFz$Fatal read error on socket transport)rÝ   r[   r  rß   Údata_receivedrï   r  r   r   Úeof_receivedrL   rÞ   rF   r]   r\   r„   r	  ©r#   rX   Ú	keep_openr~   s       r   r  z$_SelectorSocketTransport._read_ready”  sÂ   € ð	!Ø—:‘:—?‘? 4§=¡=Ó1ˆDñ Ø—‘×,Ñ,¨TÕ2à—:‘:×'Ñ'Ô)Ü—L‘LÐ!2°DÔ9Ø ŸN™N×7Ñ7Ó9�	Ùð —J‘J×,Ñ,¨T¯]©]Õ;à—J‘J•Løô#  Ô!1Ð2ò 	ÙÜò 	KØ×Ñ˜cÐ#I×JÑJûð	Kús   ‚%C ÃC=ÃC=Ã!C8Ã8C=c                 óÆ  — t        |t        t        t        f«      st	        dt        |«      «      ‚| j                  rt        d«      ‚|sy | j                  rH| j                  t        j                  k\  rt        j                  d«       | xj                  dz  c_        y | j                  sT	 | j                  j                  |«      }||d  }|sy | j(                  j+                  | j,                  | j.                  «       | j                  j1                  |«       | j3                  «        y # t         t"        f$ r Y Œmt$        $ r}| j'                  |d«       Y d }~y d }~ww xY w)Nú#data argument must be byte-ish (%r)z%Cannot call write() after write_eof()úsocket.send() raised exception.r   ú%Fatal write error on socket transport)r  Úbytesr  Ú
memoryviewÚ	TypeErrorÚtyper  rC   rä   r   Ú!LOG_THRESHOLD_FOR_CONNLOST_WRITESr   Úwarningrã   rÝ   rb   r]   r\   r„   r	  rï   r›   rÞ   Ú_write_readyÚextendÚ_maybe_pause_protocol)r#   rX   r£   r~   s       r   Úwritez_SelectorSocketTransport.writeª  s   € Ü˜$¤¬	´:Ð >Ô?ÜÐAÜ  ›Jó(ð (à�9Š9ÜÐFÓGÐGÙØà�?Š?Ø�‰¤)×"MÑ"MÒMÜ—‘Ð@ÔAØ�OŠO˜qÑ �OØà�|Š|ð
Ø—J‘J—O‘O DÓ)�ð ˜A˜B�x�ÙØà�J‰J×!Ñ! $§-¡-°×1BÑ1BÔCð 	�‰×Ñ˜DÔ!Ø×"Ñ"Õ$øô $Ô%5Ð6ò ÙÜò Ø×!Ñ! #Ð'NÔOÜûðús   Â,D+ Ä+E Ä<E ÅEÅE c                 ó²  — | j                   sJ d«       ‚	 | j                  j                  | j                   «      }|r| j                   d |…= | j                  «        | j                   sz| j                  j                  | j                  «       | j                  r| j                  d «       y | j                  r*| j                  j                  t        j                  «       y y y # t        t        f$ r Y y t        $ r[}| j                  j                  | j                  «       | j                   j!                  «        | j#                  |d«       Y d }~y d }~ww xY w)NzData should not be emptyr.  )rã   rÝ   rb   Ú_maybe_resume_protocolrï   r�   rÞ   rå   rü   r  Úshutdownro   ÚSHUT_WRr]   r\   r„   r  r	  ©r#   r£   r~   s      r   r5  z%_SelectorSocketTransport._write_readyÍ  s  € Ø�|Š|Ð7Ð7Ó7ˆ|ð	8Ø—
‘
—‘ §¡Ó-ˆAñ Ø—L‘L  ! Ð$Ø×'Ñ'Ô)Ø—<’<Ø—
‘
×(Ñ(¨¯©Ô7Ø—=’=Ø×.Ñ.¨tÕ4Ø—Y’YØ—J‘J×'Ñ'¬¯©Õ7ð ð	  øô  Ô!1Ð2ò 	ÙÜò 	LØ�J‰J×$Ñ$ T§]¡]Ô3Ø�L‰L×ÑÔ Ø×Ñ˜cÐ#J×KÑKûð	Lús   •%C" Ã"EÃ3EÃ;AEÅEc                 ó˜   — | j                   ry d| _         | j                  s*| j                  j                  t        j
                  «       y y r§   )r  rã   rÝ   r;  ro   r<  rI   s    r   Ú	write_eofz"_SelectorSocketTransport.write_eofã  s5   € Ø�9Š9ØØˆŒ	Ø�|Š|Ø�J‰J×Ñ¤§¡Õ/ð r$   c                  ó   — yr§   rV   rI   s    r   Úcan_write_eofz&_SelectorSocketTransport.can_write_eofê  s   € Ør$   rÎ   )r    rÐ   rÑ   r   r  r#  r  r8  r5  r?  rA  rÓ   rÔ   s   @r   r*   r*   p  s3   ø„ à48Ø$(õLò4ò5ò!ò,!%òF8ò,0ör$   r*   c                   ó\   ‡ — e Zd ZeZ	 	 	 d
ˆ fd„	Zdd„Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd„ Zd	„ Zˆ xZS )r<   c
                 óú  •— t         €t        d«      ‚|st        j                  ||«      }|ddœ}
|r|s||
d<    |j                  |fi |
¤Ž}t
        ‰| �  |||||	«       d| _        || _        || _	        || _
        d| _        | j                  j                  |¬«       | j                  j                  «       r1t!        j"                  d| «       | j                  j%                  «       }nd }| j'                  |«       y )Nzstdlib ssl module not availableF)r0   Údo_handshake_on_connectr1   )r8   z%r starts SSL handshake)ÚsslrC   r   Ú_create_transport_contextÚwrap_socketr   r   rà   Ú_server_hostnameÚ_waiterÚ_sslcontextr  rÙ   Úupdaterï   r  r   r   ÚtimeÚ_on_handshake)r#   r�   r7   r,   r8   r-   r0   r1   r&   r'   Úwrap_kwargsÚsslsockÚ
start_timer   s                €r   r   z_SelectorSslTransport.__init__ò  s÷   ø€ ô ˆ;ÜÐ@ÓAÐAáÜ!×;Ñ;¸KÈÓYˆJð 'Ø',ñ
ˆñ ¡;Ø-<ˆKÐ)Ñ*Ø(�*×(Ñ(¨Ñ@°KÑ@ˆä‰Ñ˜˜w¨°%¸Ô@à#(ˆÔ à /ˆÔØˆŒØ%ˆÔØˆŒð 	�‰×Ñ jÐÔ1à�:‰:×ÑÔ!Ü�L‰LÐ2°DÔ9ØŸ™Ÿ™Ó*‰JàˆJØ×Ñ˜:Õ&r$   c                 óà   — | j                   €y | j                   j                  «       s@|�#| j                   j                  |«       d | _         y | j                   j                  d «       d | _         y r)   )rI  r¨   rª   r©   r  s     r   Ú_wakeup_waiterz$_SelectorSslTransport._wakeup_waiter  sZ   € Ø�<‰<ÐØØ�|‰|×%Ñ%Ô'ØˆØ—‘×*Ñ*¨3Ô/ð ˆ�ð —‘×'Ñ'¨Ô-Øˆ�r$   c                 óà  — 	 | j                   j                  «        | j                  j                  | j                  «       | j                  j                  | j                  «       | j                   j)                  «       }t+        | j,                  d«      sT| j.                  rH| j,                  j0                  t        j2                  k7  r!	 t        j4                  || j.                  «       | j6                  j9                  || j                   j;                  «       | j                   j=                  «       ¬«       d| _        d| _         | j                  j                  | j                  | jB                  «       d| _"        | j                  jG                  | jH                  jJ                  | «       | j                  jG                  | j"                  «       | j                  j                  «       r8| j                  jM                  «       |z
  }t        jN                  d| |d	z  «       y y # t        j                  $ r4 | j                  j                  | j                  | j                  |«       Y y t        j                  $ r4 | j                  j                  | j                  | j                  |«       Y y t        $ rÂ}| j                  j                  «       rt        j                  d| d¬«       | j                  j                  | j                  «       | j                  j                  | j                  «       | j                   j!                  «        | j#                  |«       t%        |t&        «      rY d }~y ‚ d }~ww xY w# t&        $ rg}| j                  j                  «       rt        j                  d| d¬«       | j                   j!                  «        | j#                  |«       Y d }~y d }~ww xY w)
Nz%r: SSL handshake failedTr`   Úcheck_hostnamez1%r: SSL handshake failed on matching the hostname)ÚpeercertÚcipherÚcompressionFz%r: SSL handshake took %.1f msg     @�@)(rÝ   Údo_handshakerE  ÚSSLWantReadErrorrï   rS   rÞ   rM  ÚSSLWantWriteErrorr›   ÚBaseExceptionr  r   r4  rL   r�   rF   rR  r  r„   ÚgetpeercertÚhasattrrJ  rH  Úverify_modeÚ	CERT_NONEÚmatch_hostnamerÙ   rK  rV  rW  Ú_read_wants_writeÚ_write_wants_readr  rà   rû   rß   r  rL  r   )r#   rP  r~   rU  Údts        r   rM  z#_SelectorSslTransport._on_handshake   sä  € ð	Ø�J‰J×#Ñ#Ô%ð, 	�
‰
× Ñ  §¡Ô/Ø�
‰
× Ñ  §¡Ô/à—:‘:×)Ñ)Ó+ˆÜ�t×'Ñ'Ð)9Ô:ð ×%Ò%Ø× Ñ ×,Ñ,´·±Ò=ð	Ü×&Ñ& x°×1FÑ1FÔGð 	�‰×Ñ HØ"&§*¡*×"3Ñ"3Ó"5Ø'+§z¡z×'=Ñ'=Ó'?ð 	ô 	ð
 "'ˆÔØ!&ˆÔØ�
‰
×Ñ˜dŸm™m¨T×-=Ñ-=Ô>Ø#'ˆÔ Ø�
‰
×Ñ˜TŸ^™^×;Ñ;¸TÔBà�
‰
×Ñ˜T×0Ñ0Ô1à�:‰:×ÑÔ!Ø—‘—‘Ó" ZÑ/ˆBÜ�L‰LÐ9¸4ÀÀcÁÕJð "øôo ×#Ñ#ò 	Ø�J‰J×!Ñ! $§-¡-Ø"&×"4Ñ"4°jôBáÜ×$Ñ$ò 	Ø�J‰J×!Ñ! $§-¡-Ø"&×"4Ñ"4°jôBáÜò 	Ø�z‰z×#Ñ#Ô%Ü—‘Ð9Ø#¨dõ4à�J‰J×$Ñ$ T§]¡]Ô3Ø�J‰J×$Ñ$ T§]¡]Ô3Ø�J‰J×ÑÔØ×Ñ Ô$Ü˜#œyÔ)Üàûð	ûô0 !ò Ø—z‘z×+Ñ+Ô-ÜŸ™ð (Bà'+°dõ<ð —J‘J×$Ñ$Ô&Ø×'Ñ'¨Ô,ÜûðúsE   ‚H% Ã
 M= È%AM:É+AM:Ê0M:Ê8B7M5Í4M5Í5M:Í=	O-ÎAO(Ï(O-c                 ó  — | j                   rt        d«      ‚| j                  rt        d«      ‚d| _        | j                  j	                  | j
                  «       | j                  j                  «       rt        j                  d| «       y y r  r  rI   s    r   r  z#_SelectorSslTransport.pause_reading^  sk   € ð �=Š=ÜÐDÓEÐEØ�<Š<ÜÐ/Ó0Ð0ØˆŒØ�
‰
× Ñ  §¡Ô/Ø�:‰:×ÑÔ!Ü�L‰LÐ,¨dÕ3ð "r$   c                 ó  — | j                   st        d«      ‚d| _         | j                  ry | j                  j	                  | j
                  | j                  «       | j                  j                  «       rt        j                  d| «       y y r!  r"  rI   s    r   r#  z$_SelectorSslTransport.resume_readingn  r$  r$   c                 óÆ  — | j                   rSd| _         | j                  «        | j                  r0| j                  j	                  | j
                  | j                  «       	 | j                  j                  | j                  «      }|r| j                  j                  |«       y 	 | j                  j                  «       rt        j                  d| «       | j                  j                  «       }|rt        j                  d«       | j!                  «        y # | j!                  «        w xY w# t"        t$        t&        j(                  f$ r Y y t&        j*                  $ r_ d| _        | j                  j/                  | j
                  «       | j                  j	                  | j
                  | j                  «       Y y t0        $ r}| j3                  |d«       Y d }~y d }~ww xY w)NFr&  z?returning true from eof_received() has no effect when using sslTz!Fatal read error on SSL transport)rb  r5  rã   rï   r›   rÞ   rÝ   r[   r  rß   r'  r  r   r   r(  r4  rF   r]   r\   rE  rY  rZ  ra  rL   r„   r	  r)  s       r   r  z!_SelectorSslTransport._read_readyx  sb  € Ø×!Ò!Ø%*ˆDÔ"Ø×ÑÔà�|Š|Ø—
‘
×%Ñ% d§m¡m°T×5FÑ5FÔGð	!Ø—:‘:—?‘? 4§=¡=Ó1ˆDñ Ø—‘×,Ñ,¨TÕ2ð!Ø—z‘z×+Ñ+Ô-ÜŸ™Ð%6¸Ô=Ø $§¡× ;Ñ ;Ó =�IÙ ÜŸ™ð (Fô Gð —J‘J•Lø�D—J‘J•Lûô)  Ô!1´3×3GÑ3GÐHò 	ÙÜ×$Ñ$ò 	DØ%)ˆDÔ"Ø�J‰J×$Ñ$ T§]¡]Ô3Ø�J‰J×!Ñ! $§-¡-°×1BÑ1BÖCÜò 	HØ×Ñ˜cÐ#F×GÑGûð	Hús2   Á!%D, Â%A!D ÄD)Ä,G ÅA.G Æ<G ÇGÇG c                 ó´  — | j                   r_d| _         | j                  «        | j                  s<| j                  s0| j                  j                  | j                  | j                  «       | j                  r7	 | j                  j                  | j                  «      }|r| j                  d |…= | j)                  «        | j                  sD| j                  j                  | j                  «       | j                  r| j+                  d «       y y y # t        t        t        j                  f$ r d}Y Œ”t        j                  $ r1 d}| j                  j                  | j                  «       d| _        Y ŒÖt"        $ r[}| j                  j                  | j                  «       | j                  j%                  «        | j'                  |d«       Y d }~y d }~ww xY w)NFr   Tz"Fatal write error on SSL transport)ra  r  r  rå   rï   rS   rÞ   rã   rÝ   rb   r]   r\   rE  rZ  rY  r�   rb  r„   r  r	  r:  rü   r=  s      r   r5  z"_SelectorSslTransport._write_ready˜  sa  € Ø×!Ò!Ø%*ˆDÔ"Ø×ÑÔà—L’L D§M¢MØ—
‘
×%Ñ% d§m¡m°T×5EÑ5EÔFà�<Š<ðØ—J‘J—O‘O D§L¡LÓ1�ñ Ø—L‘L  ! Ð$à×#Ñ#Ô%à�|Š|Ø�J‰J×$Ñ$ T§]¡]Ô3Ø�}Š}Ø×*Ñ*¨4Õ0ð ð øô# $Ô%5´s×7LÑ7LÐMò Ø’Ü×'Ñ'ò .Ø�Ø—
‘
×(Ñ(¨¯©Ô7Ø)-�Ö&Üò Ø—
‘
×(Ñ(¨¯©Ô7Ø—‘×"Ñ"Ô$Ø×!Ñ! #Ð'KÔLÜûð	ús&   Á9%D Ä GÄ2A GÅ4GÅ<AGÇGc                 óà  — t        |t        t        t        f«      st	        dt        |«      «      ‚|sy | j                  rH| j                  t        j                  k\  rt        j                  d«       | xj                  dz  c_        y | j                  s0| j                  j                  | j                  | j                  «       | j                  j!                  |«       | j#                  «        y )Nr,  r-  r   )r  r/  r  r0  r1  r2  rä   r   r3  r   r4  rã   rï   r›   rÞ   r5  r6  r7  rW   s     r   r8  z_SelectorSslTransport.write¹  s¬   € Ü˜$¤¬	´:Ð >Ô?ÜÐAÜ  ›Jó(ð (áØà�?Š?Ø�‰¤)×"MÑ"MÒMÜ—‘Ð@ÔAØ�OŠO˜qÑ �OØà�|Š|Ø�J‰J×!Ñ! $§-¡-°×1BÑ1BÔCð 	�‰×Ñ˜DÔ!Ø×"Ñ"Õ$r$   c                  ó   — yr   rV   rI   s    r   rA  z#_SelectorSslTransport.can_write_eofÍ  s   € Ør$   )NFNNNr)   )r    rÐ   rÑ   r  râ   r   rR  rM  r  r#  r  r5  r8  rA  rÓ   rÔ   s   @r   r<   r<   î  sC   ø„ à€OàCGØ48Ø$(õ"'óHò<Kò|4ò 5ò!ò@1òB%ö(r$   r<   c                   óV   ‡ — e Zd Zej                  Z	 	 dˆ fd„	Zd„ Zd„ Zdd„Z	d„ Z
ˆ xZS )r>   c                 ót  •— t         ‰| �  ||||«       || _        | j                  j	                  | j
                  j                  | «       | j                  j	                  | j                  j                  | j                  | j                  «       |�'| j                  j	                  |j                  d «       y y r)   )r   r   Ú_addressrï   rû   rß   r  rS   rÞ   r  r  )r#   r�   r+   r,   r?   r-   r&   r   s          €r   r   z#_SelectorDatagramTransport.__init__Õ  s�   ø€ ä‰Ñ˜˜t X¨uÔ5ØˆŒØ�
‰
×Ñ˜TŸ^™^×;Ñ;¸TÔBà�
‰
×Ñ˜TŸZ™Z×2Ñ2Ø!Ÿ]™]¨D×,<Ñ,<ô	>àÐà�J‰J× Ñ  ×!DÑ!DÀdÕKð r$   c                 ó:   — t        d„ | j                  D «       «      S )Nc              3   ó8   K  — | ]  \  }}t        |«      –— Œ y ­wr)   )r°   )Ú.0rX   Ú_s      r   ú	<genexpr>zC_SelectorDatagramTransport.get_write_buffer_size.<locals>.<genexpr>â  s   è ø€ Ò9¡  q”3�t—9Ñ9ùs   ‚)Úsumrã   rI   s    r   rð   z0_SelectorDatagramTransport.get_write_buffer_sizeá  s   € ÜÑ9¨D¯L©LÔ9Ó9Ð9r$   c                 óV  — 	 | j                   j                  | j                  «      \  }}| j                  j	                  ||«       y # t
        t        f$ r Y y t        $ r%}| j                  j                  |«       Y d }~y d }~wt        $ r}| j                  |d«       Y d }~y d }~ww xY w)Nz&Fatal read error on datagram transport)rÝ   Úrecvfromr  rß   Údatagram_receivedr]   r\   rc   Úerror_receivedr„   r	  ©r#   rX   r}   r~   s       r   r  z&_SelectorDatagramTransport._read_readyä  s�   € ð		9ØŸ™×,Ñ,¨T¯]©]Ó;‰JˆD�$ð �N‰N×,Ñ,¨T°4Õ8øô  Ô!1Ð2ò 	ÙÜò 	/Ø�N‰N×)Ñ)¨#×.Ñ.ûÜò 	MØ×Ñ˜cÐ#K×LÑLûð	Mús)   ‚(A ÁB(ÁB(Á B Â B(ÂB#Â#B(c                 óÊ  — t        |t        t        t        f«      st	        dt        |«      «      ‚|sy | j                  r(|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                  sF	 | j                  r| j                  j                  |«       y | j                  j!                  ||«       y | j                  j9                  t        |«      |f«       | j;                  «        y # t"        t$        f$ r3 | j&                  j)                  | j*                  | j,                  «       Y Œxt.        $ r%}| j0                  j3                  |«       Y d }~y d }~wt4        $ r}| j7                  |d«       Y d }~y d }~ww xY w)Nr,  z!Invalid address: must be None or r-  r   ú'Fatal write error on datagram transport)r  r/  r  r0  r1  r2  rl  r¡   rä   r   r3  r   r4  rã   rÝ   rb   Úsendtor]   r\   rï   r›   rÞ   Ú_sendto_readyrc   rß   rv  r„   r	  rî   r7  rw  s       r   rz  z!_SelectorDatagramTransport.sendtoð  s}  € Ü˜$¤¬	´:Ð >Ô?ÜÐAÜ  ›Jó(ð (áØà�=Š=˜T¨$°·±Ð)>Ñ>ÝØ"Ÿmšmð.ó /ð /ð �?Š?˜tŸ}š}Ø�‰¤)×"MÑ"MÒMÜ—‘Ð@ÔAØ�OŠO˜qÑ �OØà�|Š|ðØ—=’=Ø—J‘J—O‘O DÔ)ð ð —J‘J×%Ñ% d¨DÔ1Øð 	�‰×ÑœU 4›[¨$Ð/Ô0Ø×"Ñ"Õ$øô $Ô%5Ð6ò IØ—
‘
×%Ñ% d§m¡m°T×5GÑ5GÖHÜò Ø—‘×-Ñ-¨cÔ2ÜûÜò Ø×!Ñ! #Ø"KôMäûðús0   Ã'E Ã=E Å?G"ÆG"ÆF:Æ:G"ÇGÇG"c                 ó¼  — | j                   ro| j                   j                  «       \  }}	 | j                  r| j                  j	                  |«       n| j                  j                  ||«       | j                   rŒo| j                  «        | j                   sD| j                  j!                  | j"                  «       | j$                  r| j'                  d «       y y y # t        t        f$ r  | j                   j                  ||f«       Y Œ�t        $ r%}| j                  j                  |«       Y d }~y d }~wt        $ r}| j                  |d«       Y d }~y d }~ww xY w)Nry  )rã   Úpopleftrl  rÝ   rb   rz  r]   r\   Ú
appendleftrc   rß   rv  r„   r	  r:  rï   r�   rÞ   rå   rü   rw  s       r   r{  z(_SelectorDatagramTransport._sendto_ready  s  € Ø�lŠlØŸ™×-Ñ-Ó/‰JˆD�$ðØ—=’=Ø—J‘J—O‘O DÕ)à—J‘J×%Ñ% d¨DÔ1ð �l‹lð$ 	×#Ñ#Ô%Ø�|Š|Ø�J‰J×$Ñ$ T§]¡]Ô3Ø�}Š}Ø×*Ñ*¨4Õ0ð ð øô $Ô%5Ð6ò Ø—‘×'Ñ'¨¨t¨Ô5ÙÜò Ø—‘×-Ñ-¨cÔ2ÜûÜò Ø×!Ñ! #Ø"KôMäûðús*   «AC Ã,EÄEÄD3Ä3EÄ?EÅErÎ   r)   )r    rÐ   rÑ   ÚcollectionsÚdequerâ   r   rð   r  rz  r{  rÓ   rÔ   s   @r   r>   r>   Ñ  s/   ø„ à!×'Ñ'€Oà59Ø$(õ
Lò:ò
9ó%%öN1r$   r>   )rÒ   Ú__all__r  rt   r¹   ro   r  r   rE  ÚImportErrorÚ r   r   r   r   r	   r
   r   Ú
coroutinesr   Úlogr   r   ÚBaseEventLoopr   Ú_FlowControlMixinÚ	TransportrÖ   r*   r<   r>   rV   r$   r   ú<module>r‰     sÉ   ðñð #Ð
#€ã Û Û Û Û 
Û ðÛõ Ý Ý Ý Ý Ý Ý Ý !Ý ò(ôE˜K×5Ñ5ô EôP{!˜×5Ñ5Ø#×-Ñ-ô{!ô|{Ð1ô {ô|`Ð.ô `ôF]1Ð!3õ ]1øðA ò Ø
‚Cðús   ŸB3 Â3B=Â<B=