ó
    F\hu9 ã                   óF  • S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSKrSSKrSSKrSSKrSSKr SSKrSSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJ r   SSK!J"r"  Sr#Sr$Sr%\&" \	S5      r'Sr(S r)S r*S r+S&S jr,S'S jr-S r.\&" \	S5      (       a  S r/OS r/S r0 " S  S!\Rb                  5      r2 " S" S#\Rf                  5      r4 " S$ S%\Rj                  5      r6g! \ a    Sr N×f = f)(a™  Base implementation of event loop.

The event loop can be broken up into a multiplexer (the part
responsible for notifying us of I/O events) and the event loop proper,
which wraps a multiplexer with functionality for scheduling callbacks,
immediately or at a given time in the future.

Whenever a public API takes a callback, subsequent positional
arguments will be passed to the callback if/when it is called.  This
avoids the proliferation of trivial lambdas implementing closures.
Keyword arguments for the callback are not supported; this is a
conscious design decision, leaving the door open for keyword arguments
to modify the meaning of the API call itself.
é    Né   )Ú	constants)Ú
coroutines)Úevents)Ú
exceptions)Úfutures)Ú	protocols)Ússlproto)Ú	staggered)Útasks)Útimeouts)Ú
transports)Útrsock)Úlogger)ÚBaseEventLoopÚServeréd   g      à?ÚAF_INET6i€Q c                 ó®   • U R                   n[        [        USS 5      [        R                  5      (       a  [        UR                  5      $ [        U 5      $ )NÚ__self__)Ú	_callbackÚ
isinstanceÚgetattrr   ÚTaskÚreprr   Ústr)ÚhandleÚcbs     Ú*/usr/lib/python3.13/asyncio/base_events.pyÚ_format_handler    G   s@   € Ø	×	Ñ	€BÜ”'˜"˜j¨$Ó/´·±×<Ñ<ä�B—K‘KÓ Ð ä�6‹{Ðó    c                 ól   • U [         R                  :X  a  gU [         R                  :X  a  g[        U 5      $ )Nz<pipe>z<stdout>)Ú
subprocessÚPIPEÚSTDOUTr   )Úfds    r   Ú_format_piper'   P   s+   € Ø	ŒZ�_‰_ÓØØ	Œz× Ñ Ó	 Øä�B‹xˆr!   c                 óÖ   • [        [        S5      (       d  [        S5      e U R                  [        R                  [        R
                  S5        g ! [         a    [        S5      ef = f)NÚSO_REUSEPORTz)reuse_port not supported by socket moduler   zTreuse_port not supported by socket module, SO_REUSEPORT defined but not implemented.)ÚhasattrÚsocketÚ
ValueErrorÚ
setsockoptÚ
SOL_SOCKETr)   ÚOSError©Úsocks    r   Ú_set_reuseportr2   Y   sc   € Ü”6˜>×*Ñ*ÜÐDÓEÐEð	JØ�O‰OœF×-Ñ-¬v×/BÑ/BÀAÕFøÜó 	JÜð Ió Jð Jð	Jús   ¢/A ÁA(c           	      ó¢  • [        [        S5      (       d  g US[        R                  [        R                  1;  d  U c  g U[        R                  :X  a  [        R                  nO&U[        R
                  :X  a  [        R                  nOg Uc  SnOH[        U[        5      (       a	  US:X  a  SnO*[        U[        5      (       a	  US:X  a  SnO [        U5      nU[        R                  :X  a<  [        R                  /n[        (       a  UR                  [        R                   5        OU/n[        U [        5      (       a  U R#                  S5      n SU ;   a  g U HJ  n [        R$                  " X€5        [        (       a  U[        R                   :X  a
  XƒUSXXV44s  $ XƒUSX44s  $    g ! [        [        4 a     g f = f! [&         a     Mr  f = f)NÚ	inet_ptonr   r!   Ú ÚidnaÚ%)r*   r+   ÚIPPROTO_TCPÚIPPROTO_UDPÚSOCK_STREAMÚ
SOCK_DGRAMr   Úbytesr   ÚintÚ	TypeErrorr,   Ú	AF_UNSPECÚAF_INETÚ	_HAS_IPv6Úappendr   Údecoder4   r/   )	ÚhostÚportÚfamilyÚtypeÚprotoÚflowinfoÚscopeidÚafsÚafs	            r   Ú_ipaddr_inforM   d   s—  € ô ”6˜;×'Ñ'Øà�Qœ×*Ñ*¬F×,>Ñ,>Ð?Ó?Ø‰LØàŒv×!Ñ!Ó!Ü×"Ñ"‰Ø	”×"Ñ"Ó	"Ü×"Ñ"‰àà�|Ø‰Ü	�Dœ%×	 Ñ	  T¨S£[Ø‰Ü	�Dœ#×	Ñ	 4¨2£:Ø‰ð	Ü�t“9ˆDð ”×!Ñ!Ó!Ü�~‰~ÐˆßŠ9Ø�J‰J”v—‘Ô'øàˆhˆä�$œ×ÑØ�{‰{˜6Ó"ˆØ
ˆdƒ{ð ãˆð	Ü×Ò˜RÔ&çŠy˜R¤6§?¡?Ó2Ø ¨¨T¸Ð,KÐKÒKà ¨¨T¨LÐ8Ò8ñ ð øô; œ:Ð&ó 	Ùð	ûô2 ó 	Úð	ús*   ÃF* Å<G ÆG Æ*F=Æ<F=Ç 
GÇGc                 óœ  • [         R                  " 5       nU  H$  nUS   nXB;  a  / X$'   X$   R                  U5        M&     [        UR	                  5       5      n/ nUS:”  a%  UR                  US   SUS-
   5        US   SUS-
  2	 UR                  S [        R                  R                  [        R                  " U6 5       5       5        U$ )z-Interleave list of addrinfo tuples by family.r   r   Nc              3   ó0   #   • U  H  nUc  M  Uv •  M     g 7f©N© )Ú.0Úas     r   Ú	<genexpr>Ú(_interleave_addrinfos.<locals>.<genexpr>®   s    é € ð ò
ˆaà÷ 	
‰ò 
ùs   ‚�	)
ÚcollectionsÚOrderedDictrB   ÚlistÚvaluesÚextendÚ	itertoolsÚchainÚfrom_iterableÚzip_longest)Ú	addrinfosÚfirst_address_family_countÚaddrinfos_by_familyÚaddrrF   Úaddrinfos_listsÚ	reordereds          r   Ú_interleave_addrinfosre   Ÿ   sã   € ô &×1Ò1Ó3ÐÛˆØ�a‘ˆØÓ,Ø*,ÐÑ'ØÑ#×*Ñ*¨4Ö0ñ	 ô
 Ð.×5Ñ5Ó7Ó8€Oà€IØ! AÓ%Ø×Ñ˜¨Ñ+Ð,KÐ-GÈ!Ñ-KÐLÔMØ˜AÑÐ>Ð :¸QÑ >Ð>Ð?Ø×Ññ Ü—?‘?×0Ñ0Ü×!Ò! ?Ð3ô
óô ð Ðr!   c                 óÎ   • U R                  5       (       d,  U R                  5       n[        U[        [        45      (       a  g [
        R                  " U 5      R                  5         g rP   )Ú	cancelledÚ	exceptionr   Ú
SystemExitÚKeyboardInterruptr   Ú	_get_loopÚstop)ÚfutÚexcs     r   Ú_run_until_complete_cbro   µ   sG   € Ø�=‰=�?‰?Ø�m‰m‹oˆÜ�cœJÔ(9Ð:×;Ñ;ð Ü×Ò�cÓ×ÑÕ!r!   ÚTCP_NODELAYc                 ó<  • U R                   [        R                  [        R                  1;   an  U R                  [        R
                  :X  aO  U R                  [        R                  :X  a0  U R                  [        R                  [        R                  S5        g g g g )Nr   )
rF   r+   r@   r   rG   r:   rH   r8   r-   rp   r0   s    r   Ú_set_nodelayrr   À   sj   € Ø�K‰KœFŸN™N¬F¯O©OÐ<Ó<Ø—	‘	œV×/Ñ/Ó/Ø—
‘
œf×0Ñ0Ó0Ø�O‰OœF×.Ñ.´×0BÑ0BÀAÕFð 1ð 0ð =r!   c                 ó   • g rP   rQ   r0   s    r   rr   rr   Æ   s   € Ør!   c                 óh   • [         b+  [        U [         R                  5      (       a  [        S5      eg g )Nz"Socket cannot be of type SSLSocket)Ússlr   Ú	SSLSocketr>   r0   s    r   Ú_check_ssl_socketrw   Ê   s*   € Ü
�œ: d¬C¯M©M×:Ñ:ÜÐ<Ó=Ð=ð ;€r!   c                   óJ   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rSrg)Ú_SendfileFallbackProtocoléÏ   c                 ó   • [        U[        R                  5      (       d  [        S5      eXl        UR                  5       U l        UR                  5       U l        UR                  U l
        UR                  5         UR                  U 5        U R                  (       a*  U R                  R                  R                  5       U l        g S U l        g )Nz.transport should be _FlowControlMixin instance)r   r   Ú_FlowControlMixinr>   Ú
_transportÚget_protocolÚ_protoÚ
is_readingÚ_should_resume_readingÚ_protocol_pausedÚ_should_resume_writingÚpause_readingÚset_protocolÚ_loopÚcreate_futureÚ_write_ready_fut)ÚselfÚtransps     r   Ú__init__Ú"_SendfileFallbackProtocol.__init__Ð   s›   € Ü˜&¤*×">Ñ">×?Ñ?ÜÐLÓMÐMØ ŒØ×)Ñ)Ó+ˆŒØ&,×&7Ñ&7Ó&9ˆÔ#Ø&,×&=Ñ&=ˆÔ#Ø×ÑÔØ×Ñ˜DÔ!Ø×&×&Ø$(§O¡O×$9Ñ$9×$GÑ$GÓ$IˆDÕ!à$(ˆDÕ!r!   c              ƒ   ó˜   #   • U R                   R                  5       (       a  [        S5      eU R                  nUc  g UI S h  v•N   g  N7f)NzConnection closed by peer)r}   Ú
is_closingÚConnectionErrorrˆ   )r‰   rm   s     r   ÚdrainÚ_SendfileFallbackProtocol.drainÞ   s>   é € Ø�?‰?×%Ñ%×'Ñ'Ü!Ð"=Ó>Ð>Ø×#Ñ#ˆØ‰;ØØ�	‹	ùs   ‚A A
ÁAÁA
c                 ó   • [        S5      e)Nz?Invalid state: connection should have been established already.©ÚRuntimeError©r‰   Ú	transports     r   Úconnection_madeÚ)_SendfileFallbackProtocol.connection_madeæ   s   € Üð Nó Oð 	Or!   c                 óÚ   • U R                   bC  Uc%  U R                   R                  [        S5      5        OU R                   R                  U5        U R                  R	                  U5        g )NzConnection is closed by peer)rˆ   Úset_exceptionr�   r   Úconnection_lost)r‰   rn   s     r   r›   Ú)_SendfileFallbackProtocol.connection_lostê   s[   € Ø× Ñ Ñ,ð ‰{Ø×%Ñ%×3Ñ3Ü#Ð$BÓCõEð ×%Ñ%×3Ñ3°CÔ8Ø�‰×#Ñ# CÕ(r!   c                 ór   • U R                   b  g U R                  R                  R                  5       U l         g rP   )rˆ   r}   r†   r‡   ©r‰   s    r   Úpause_writingÚ'_SendfileFallbackProtocol.pause_writingõ   s,   € Ø× Ñ Ñ,ØØ $§¡× 5Ñ 5× CÑ CÓ EˆÕr!   c                 ód   • U R                   c  g U R                   R                  S5        S U l         g ©NF)rˆ   Ú
set_resultrž   s    r   Úresume_writingÚ(_SendfileFallbackProtocol.resume_writingú   s-   € Ø× Ñ Ñ(ØØ×Ñ×(Ñ(¨Ô/Ø $ˆÕr!   c                 ó   • [        S5      e©Nz'Invalid state: reading should be pausedr“   )r‰   Údatas     r   Údata_receivedÚ'_SendfileFallbackProtocol.data_received   ó   € ÜÐDÓEÐEr!   c                 ó   • [        S5      er§   r“   rž   s    r   Úeof_receivedÚ&_SendfileFallbackProtocol.eof_received  r«   r!   c              ƒ   óR  #   • U R                   R                  U R                  5        U R                  (       a  U R                   R	                  5         U R
                  b  U R
                  R                  5         U R                  (       a  U R                  R                  5         g g 7frP   )	r}   r…   r   r�   Úresume_readingrˆ   Úcancelrƒ   r¤   rž   s    r   ÚrestoreÚ!_SendfileFallbackProtocol.restore  sr   é € Ø�‰×$Ñ$ T§[¡[Ô1Ø×&×&Ø�O‰O×*Ñ*Ô,Ø× Ñ Ñ,ð ×!Ñ!×(Ñ(Ô*Ø×&×&Ø�K‰K×&Ñ&Õ(ð 'ùs   ‚B%B')r   r�   rƒ   r}   rˆ   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r‹   r�   r—   r›   rŸ   r¤   r©   r­   r²   Ú__static_attributes__rQ   r!   r   ry   ry   Ï   s3   † ò)òòOò	)òFò
%òFòFõ
)r!   ry   c                   ó~   • \ rS rSr SS jrS rS rS rS rS r	S	 r
S
 r\S 5       rS rS rS rS rS rS rSrg)r   i  Nc                 ó¶   • Xl         X l        [        R                  " 5       U l        / U l        X0l        XPl        X@l        X`l	        Xpl
        SU l        S U l        g r¢   )r†   Ú_socketsÚweakrefÚWeakSetÚ_clientsÚ_waitersÚ_protocol_factoryÚ_backlogÚ_ssl_contextÚ_ssl_handshake_timeoutÚ_ssl_shutdown_timeoutÚ_servingÚ_serving_forever_fut)r‰   ÚloopÚsocketsÚprotocol_factoryÚssl_contextÚbacklogÚssl_handshake_timeoutÚssl_shutdown_timeouts           r   r‹   ÚServer.__init__  sO   € àŒ
ØŒô  ŸšÓ)ˆŒØˆŒØ!1ÔØŒØ'ÔØ&;Ô#Ø%9Ô"ØˆŒØ$(ˆÕ!r!   c                 óR   • SU R                   R                   SU R                  < S3$ )NÚ<z	 sockets=Ú>)Ú	__class__r´   rÈ   rž   s    r   Ú__repr__ÚServer.__repr__%  s'   € Ø�4—>‘>×*Ñ*Ð+¨9°T·\±\Ñ4DÀAÐFÐFr!   c                 óX   • U R                   c   eU R                  R                  U5        g rP   )r»   r¾   Úaddr•   s     r   Ú_attachÚServer._attach(  s$   € Ø�}‰}Ñ(Ð(Ð(Ø�‰×Ñ˜)Õ$r!   c                 óª   • U R                   R                  U5        [        U R                   5      S:X  a  U R                  c  U R	                  5         g g g ©Nr   )r¾   ÚdiscardÚlenr»   Ú_wakeupr•   s     r   Ú_detachÚServer._detach,  s?   € Ø�‰×Ñ˜iÔ(Üˆt�}‰}Ó Ó" t§}¡}Ñ'<Ø�L‰L�Nð (=Ð"r!   c                 óŒ   • U R                   nS U l         U H+  nUR                  5       (       a  M  UR                  S 5        M-     g rP   )r¿   Údoner£   )r‰   ÚwaitersÚwaiters      r   rÝ   ÚServer._wakeup1  s5   € Ø—-‘-ˆØˆŒÛˆFØ—;‘;—=“=Ø×!Ñ! $Ö'ò r!   c           
      ó4  • U R                   (       a  g SU l         U R                   Ho  nUR                  U R                  5        U R                  R                  U R                  XR                  X R                  U R                  U R                  5        Mq     g )NT)
rÅ   r»   ÚlistenrÁ   r†   Ú_start_servingrÀ   rÂ   rÃ   rÄ   )r‰   r1   s     r   rç   ÚServer._start_serving8  sl   € Ø�=�=ØØˆŒØ—M”MˆDØ�K‰K˜Ÿ™Ô&Ø�J‰J×%Ñ%Ø×&Ñ&¨×.?Ñ.?Ø—m‘m T×%@Ñ%@Ø×*Ñ*ö,ò "r!   c                 ó   • U R                   $ rP   )r†   rž   s    r   Úget_loopÚServer.get_loopC  s   € Ø�z‰zÐr!   c                 ó   • U R                   $ rP   )rÅ   rž   s    r   Ú
is_servingÚServer.is_servingF  s   € Ø�}‰}Ðr!   c                 óV   • U R                   c  g[        S U R                    5       5      $ )NrQ   c              3   óN   #   • U  H  n[         R                  " U5      v •  M     g 7frP   )r   ÚTransportSocket)rR   Úss     r   rT   Ú!Server.sockets.<locals>.<genexpr>M  s   é € ÐFº°1”V×+Ò+¨A×.Ð.ºùs   ‚#%)r»   Útuplerž   s    r   rÈ   ÚServer.socketsI  s$   € à�=‰=Ñ ØÜÑF¸¿ºÓFÓFÐFr!   c                 óv  • U R                   nUc  g S U l         U H  nU R                  R                  U5        M      SU l        U R                  b@  U R                  R                  5       (       d!  U R                  R                  5         S U l        [        U R                  5      S:X  a  U R                  5         g g )NFr   )
r»   r†   Ú_stop_servingrÅ   rÆ   rá   r±   rÜ   r¾   rÝ   )r‰   rÈ   r1   s      r   ÚcloseÚServer.closeO  s™   € Ø—-‘-ˆØ‰?ØØˆŒãˆDØ�J‰J×$Ñ$ TÖ*ñ ð ˆŒà×%Ñ%Ñ1Ø×-Ñ-×2Ñ2×4Ñ4Ø×%Ñ%×,Ñ,Ô.Ø(,ˆDÔ%äˆt�}‰}Ó Ó"Ø�L‰L�Nð #r!   c                 óf   • U R                   R                  5        H  nUR                  5         M     g rP   )r¾   Úcopyrø   r•   s     r   Úclose_clientsÚServer.close_clientsb  ó#   € ØŸ™×+Ñ+Ö-ˆIØ�O‰OÖò .r!   c                 óf   • U R                   R                  5        H  nUR                  5         M     g rP   )r¾   rû   Úabortr•   s     r   Úabort_clientsÚServer.abort_clientsf  rþ   r!   c              ƒ   ól   #   • U R                  5         [        R                  " S5      I S h  v•N   g  N7frÚ   )rç   r   Úsleeprž   s    r   Ústart_servingÚServer.start_servingj  s$   é € Ø×ÑÔô �kŠk˜!‹n×Óùs   ‚*4¬2­4c              ƒ   óÄ  #   • U R                   b  [        SU < S35      eU R                  c  [        SU < S35      eU R                  5         U R                  R                  5       U l          U R                   I S h  v•N    S U l         g  N! [        R                   a1     U R                  5         U R                  5       I S h  v•N    e ! e = ff = f! S U l         f = f7f)Nzserver z, is already being awaited on serve_forever()z
 is closed)
rÆ   r”   r»   rç   r†   r‡   r   ÚCancelledErrorrø   Úwait_closedrž   s    r   Úserve_foreverÚServer.serve_foreverp  sÕ   é € Ø×$Ñ$Ñ0ÜØ˜$™Ð!MÐNóPð Pà�=‰=Ñ Ü ¨©°
Ð;Ó<Ð<à×ÑÔØ$(§J¡J×$<Ñ$<Ó$>ˆÔ!ð		-Ø×+Ñ+×+Ñ+ð )-ˆDÕ%ñ ,øÜ×(Ñ(ó 	ðØ—
‘
”Ø×&Ñ&Ó(×(Ñ(àø�úð	ûð )-ˆDÕ%üs`   ‚A*C Á-B Á<B
Á=B ÂC Â
B ÂCÂ!#CÃCÃCÃ
CÃCÃCÃC Ã	CÃC c              ƒ   óª   #   • U R                   c  gU R                  R                  5       nU R                   R                  U5        UI Sh  v•N   g N7f)a„  Wait until server is closed and all connections are dropped.

- If the server is not closed, wait.
- If it is closed, but there are still active connections, wait.

Anyone waiting here will be unblocked once both conditions
(server is closed and all connections have been dropped)
have become true, in either order.

Historical note: In 3.11 and before, this was broken, returning
immediately if the server was already closed, even if there
were still active connections. An attempted fix in 3.12.0 was
still broken, returning immediately if the server was still
open and there were no active connections. Hopefully in 3.12.1
we have it right.
N)r¿   r†   r‡   rB   )r‰   rã   s     r   r	  ÚServer.wait_closed…  s?   é € ð* �=‰=Ñ ØØ—‘×)Ñ)Ó+ˆØ�‰×Ñ˜VÔ$Ø�‹ùs   ‚A	AÁAÁA)rÁ   r¾   r†   rÀ   rÅ   rÆ   r»   rÂ   rÃ   rÄ   r¿   rP   )r´   rµ   r¶   r·   r‹   rÓ   r×   rÞ   rÝ   rç   rê   rí   ÚpropertyrÈ   rø   rü   r  r  r
  r	  r¸   rQ   r!   r   r   r     se   † ð >Bô)ò Gò%òò
(ò	,òòð ñGó ðGò
ò&òòò-õ*r!   r   c                   ó
  • \ rS rSrS rS rS rSSS.S jrS rS	 r	S`SSS
.S jjr
 S`SSSSSSSS.S jjr SaS jr  SbS jr  SbS jr S`S jrS rS rS rS rS rS rS rS`S jrS rS rS rS rS  rS! rS" rS# rS$ r \!RD                  4S% jr#S& r$S' r%SS(.S) jr&SS(.S* jr'SS(.S+ jr(S, r)S- r*S. r+SS(.S/ jr,S0 r-S1 r.S2 r/S3S3S3S3S4.S5 jr0ScS6 jr1SdSS7.S8 jjr2S9 r3S: r4S; r5S`S< jr6 SbSS3S3S3SSSSSSSSS=.S> jjr7   SeS? jr8SdSS7.S@ jjr9SA r:SB r;SSSSSC.SD jr< SbS3S3S3SSSSE.SF jjr=S3\>R~                  S3S3S4.SG jr@SH rA Sb\>R„                  \>R†                  SSISSSSSSSSJ.SK jjrDSSSSL.SM jrESN rFSO rGSP rH\IR”                  \IR”                  \IR”                  SSS3SSSSQ.	SR jrK\IR”                  \IR”                  \IR”                  SSS3SSSSQ.	SS jrLST rMSU rNSV rOSW rPSX rQSY rRSZ rSS[ rTS\ rUS] rVS^ rWS_rXg)fr   i¡  c                 óÞ  • SU l         SU l        SU l        [        R                  " 5       U l        / U l        S U l        SU l        S U l	        [        R                  " S5      R                  U l        S U l        U R                  [         R"                  " 5       5        S U l        SU l        S U l        S U l        SU l        S U l        [0        R2                  " 5       U l        SU l        SU l        g )Nr   FÚ	monotonicgš™™™™™¹?)Ú_timer_cancelled_countÚ_closedÚ	_stoppingrV   ÚdequeÚ_readyÚ
_scheduledÚ_default_executorÚ_internal_fdsÚ
_thread_idÚtimeÚget_clock_infoÚ
resolutionÚ_clock_resolutionÚ_exception_handlerÚ	set_debugr   Ú_is_debug_modeÚ_old_agen_hooksÚslow_callback_durationÚ_current_handleÚ_task_factoryÚ"_coroutine_origin_tracking_enabledÚ&_coroutine_origin_tracking_saved_depthr¼   r½   Ú
_asyncgensÚ_asyncgens_shutdown_calledÚ_executor_shutdown_calledrž   s    r   r‹   ÚBaseEventLoop.__init__£  sÐ   € Ø&'ˆÔ#ØˆŒØˆŒÜ!×'Ò'Ó)ˆŒØˆŒØ!%ˆÔØˆÔð ˆŒÜ!%×!4Ò!4°[Ó!A×!LÑ!LˆÔØ"&ˆÔØ�‰”z×0Ò0Ó2Ô3à#ˆÔð '*ˆÔ#Ø#ˆÔØ!ˆÔØ27ˆÔ/Ø6:ˆÔ3ô "Ÿ/š/Ó+ˆŒà*/ˆÔ'à).ˆÕ&r!   c           	      óœ   • SU R                   R                   SU R                  5        SU R                  5        SU R	                  5        S3	$ )NrÐ   z	 running=z closed=z debug=rÑ   )rÒ   r´   Ú
is_runningÚ	is_closedÚ	get_debugrž   s    r   rÓ   ÚBaseEventLoop.__repr__Ã  sP   € à�—‘×'Ñ'Ð(¨	°$·/±/Ó2CÐ1Dð EØ—n‘nÓ&Ð' w¨t¯~©~Ó/?Ð.@ÀðCð	
r!   c                 ó*   • [         R                  " U S9$ )z,Create a Future object attached to the loop.©rÇ   )r   ÚFuturerž   s    r   r‡   ÚBaseEventLoop.create_futureÉ  s   € ä�~Š~ 4Ñ(Ð(r!   N)ÚnameÚcontextc                ó  • U R                  5         U R                  b,  Ub  X4S'   U R                  " X40 UD6nUR                  U5        O8[        R                  " U4XUS.UD6nUR
                  (       a  UR
                  S	  UA$ ! Af = f)z4Schedule a coroutine object.

Return a task object.
r6  )rÇ   r5  r6  éÿÿÿÿ)Ú_check_closedr%  Úset_namer   r   Ú_source_traceback)r‰   Úcoror5  r6  ÚkwargsÚtasks         r   Úcreate_taskÚBaseEventLoop.create_taskÍ  s�   € ð
 	×ÑÔØ×ÑÑ)ØÑ"Ø$+�yÑ!à×%Ò% dÑ;°FÑ;ˆDØ�M‰M˜$Õô —:’:˜dÐT¨À'ÑTÈVÑTˆDØ×%×%Ø×*Ñ*¨2Ð.ð	Øñ ø‘ús   ÂB ÂB	c                 óL   • Ub  [        U5      (       d  [        S5      eXl        g)a¡  Set a task factory that will be used by loop.create_task().

If factory is None the default task factory will be set.

If factory is a callable, it should have a signature matching
'(loop, coro, **kwargs)', where 'loop' will be a reference to the active
event loop, 'coro' will be a coroutine object, and **kwargs will be
arbitrary keyword arguments that should be passed on to Task.
The callable must return a Task.
Nz'task factory must be a callable or None)Úcallabler>   r%  )r‰   Úfactorys     r   Úset_task_factoryÚBaseEventLoop.set_task_factoryæ  s&   € ð Ñ¤x°×'8Ñ'8ÜÐEÓFÐFØ$Õr!   c                 ó   • U R                   $ )z<Return a task factory, or None if the default one is in use.)r%  rž   s    r   Úget_task_factoryÚBaseEventLoop.get_task_factoryõ  s   € à×!Ñ!Ð!r!   )ÚextraÚserverc                ó   • [         e)zCreate socket transport.©ÚNotImplementedError)r‰   r1   Úprotocolrã   rI  rJ  s         r   Ú_make_socket_transportÚ$BaseEventLoop._make_socket_transportù  ó
   € ô "Ð!r!   FT)Úserver_sideÚserver_hostnamerI  rJ  rÌ   rÍ   Úcall_connection_madec                ó   • [         e)zCreate SSL transport.rL  )r‰   ÚrawsockrN  Ú
sslcontextrã   rR  rS  rI  rJ  rÌ   rÍ   rT  s               r   Ú_make_ssl_transportÚ!BaseEventLoop._make_ssl_transportþ  s
   € ô "Ð!r!   c                 ó   • [         e)zCreate datagram transport.rL  )r‰   r1   rN  Úaddressrã   rI  s         r   Ú_make_datagram_transportÚ&BaseEventLoop._make_datagram_transport  rQ  r!   c                 ó   • [         e)zCreate read pipe transport.rL  ©r‰   ÚpiperN  rã   rI  s        r   Ú_make_read_pipe_transportÚ'BaseEventLoop._make_read_pipe_transport  rQ  r!   c                 ó   • [         e)zCreate write pipe transport.rL  r_  s        r   Ú_make_write_pipe_transportÚ(BaseEventLoop._make_write_pipe_transport  rQ  r!   c	              ‹   ó   #   • [         e7f)zCreate subprocess transport.rL  )
r‰   rN  ÚargsÚshellÚstdinÚstdoutÚstderrÚbufsizerI  r=  s
             r   Ú_make_subprocess_transportÚ(BaseEventLoop._make_subprocess_transport  s   é € ô "Ð!ùs   ‚	c                 ó   • [         e)z Write a byte to self-pipe, to wake up the event loop.

This may be called from a different thread.

The subclass is responsible for implementing the self-pipe.
rL  rž   s    r   Ú_write_to_selfÚBaseEventLoop._write_to_self  s
   € ô "Ð!r!   c                 ó   • [         e)zProcess selector events.rL  )r‰   Ú
event_lists     r   Ú_process_eventsÚBaseEventLoop._process_events&  s   € ä!Ð!r!   c                 ó<   • U R                   (       a  [        S5      eg )NzEvent loop is closed)r  r”   rž   s    r   r9  ÚBaseEventLoop._check_closed*  s   € Ø�<�<ÜÐ5Ó6Ð6ð r!   c                 ó<   • U R                   (       a  [        S5      eg )Nz!Executor shutdown has been called)r*  r”   rž   s    r   Ú_check_default_executorÚ%BaseEventLoop._check_default_executor.  s   € Ø×)×)ÜÐBÓCÐCð *r!   c                 óº   • U R                   R                  U5        U R                  5       (       d+  U R                  U R                  UR                  5       5        g g rP   )r(  rÛ   r.  Úcall_soon_threadsafer?  Úaclose©r‰   Úagens     r   Ú_asyncgen_finalizer_hookÚ&BaseEventLoop._asyncgen_finalizer_hook2  sB   € Ø�‰×Ñ Ô%Ø�~‰~×ÑØ×%Ñ% d×&6Ñ&6¸¿¹»ÕFð  r!   c                 óš   • U R                   (       a  [        R                  " SU< S3[        U S9  U R                  R                  U5        g )Nzasynchronous generator z3 was scheduled after loop.shutdown_asyncgens() call©Úsource)r)  ÚwarningsÚwarnÚResourceWarningr(  rÖ   r~  s     r   Ú_asyncgen_firstiter_hookÚ&BaseEventLoop._asyncgen_firstiter_hook7  sA   € Ø×*×*Ü�MŠMØ)¨$©ð 21ð 2ä¨ò.ð
 	�‰×Ñ˜DÕ!r!   c              ƒ   ó¼  #   • SU l         [        U R                  5      (       d  g[        U R                  5      nU R                  R	                  5         [
        R                  " U Vs/ s H  o"R                  5       PM     snSS06I Sh  v•N n[        X15       H5  u  pE[        U[        5      (       d  M  U R                  SU< 3UUS.5        M7     gs  snf  NN7f)z,Shutdown all active asynchronous generators.TNÚreturn_exceptionsz;an error occurred during closing of asynchronous generator )Úmessagerh   Úasyncgen)r)  rÜ   r(  rX   Úclearr   Úgatherr}  Úzipr   Ú	ExceptionÚcall_exception_handler)r‰   Úclosing_agensÚagÚresultsÚresultr  s         r   Úshutdown_asyncgensÚ BaseEventLoop.shutdown_asyncgens@  sÃ   é € à*.ˆÔ'ä�4—?‘?×#Ñ#ð ä˜TŸ_™_Ó-ˆØ�‰×ÑÔäŸšÙ$1Ó2¢M˜b�i‰iŽk¡MÑ2ð$à"ñ$÷ $ˆô   Ö7‰LˆFÜ˜&¤)×,Ó,Ø×+Ñ+ð"9Ø9=¹ð Bà!'Ø $ñ	-ö ò 8ùò 3ñ$ùs$   ‚A&CÁ(CÂ
CÂCÂ'CÂ7$Cc              ƒ   ó  #   • SU l         U R                  c  gU R                  5       n[        R                  " U R
                  U4S9nUR                  5          [        R                  " U5       ISh  v•N   UI Sh  v•N   SSS5      ISh  v•N   UR                  5         g N/ N' N! , ISh  v•N  (       d  f       N.= f! [         a:    [        R                  " SU S3[        SS9  U R                  R                  SS	9   gf = f7f)
zõSchedule the shutdown of the default executor.

The timeout parameter specifies the amount of time the executor will
be given to finish joining. The default value is None, which means
that the executor will be given an unlimited amount of time.
TN)Útargetrg  z:The executor did not finishing joining its threads within z	 seconds.é   )Ú
stacklevelF©Úwait)r*  r  r‡   Ú	threadingÚThreadÚ_do_shutdownÚstartr   ÚtimeoutÚjoinÚTimeoutErrorr…  r†  ÚRuntimeWarningÚshutdown)r‰   r£  ÚfutureÚthreads       r   Úshutdown_default_executorÚ'BaseEventLoop.shutdown_default_executorY  sß   é € ð *.ˆÔ&Ø×!Ñ!Ñ)ØØ×#Ñ#Ó%ˆÜ×!Ò!¨×):Ñ):À&ÀÑKˆØ�‰Œð		Ü×'Ò'¨×0Õ0Ø—�÷ 1×0ð �K‰K�Mñ 1Ù÷ 1×0×0Ð0ûäó 	8Ü�MŠMð 0Ø07¨y¸	ðCä(°Qò8ð ×"Ñ"×+Ñ+°Ð+Ó7ð		8üs…   ‚AD
ÁC Á3B#Á4C Á7B)Á=B%Á>B)ÂC ÂB'ÂC ÂD
Â#C Â%B)Â'C Â)C Â/B2Â0C Â<C ÃADÄD
ÄDÄD
c                 ót  •  U R                   R                  SS9  U R                  5       (       d"  U R                  [        R
                  US 5        g g ! [         aZ  nU R                  5       (       d;  UR                  5       (       d!  U R                  UR                  U5         S nAg  S nAg  S nAg S nAff = f)NTr�  )	r  r§  r.  r|  r   Ú_set_result_unless_cancelledr‘  rg   rš   )r‰   r¨  Úexs      r   r¡  ÚBaseEventLoop._do_shutdownq  sœ   € ð	DØ×"Ñ"×+Ñ+°Ð+Ñ6Ø—>‘>×#Ñ#Ø×)Ñ)¬'×*NÑ*NØ*0°$õ8ð $øô ó 	DØ—>‘>×#Ñ#¨F×,<Ñ,<×,>Ñ,>Ø×)Ñ)¨&×*>Ñ*>À×CÑCô -?Ô#ûð	Dús   ‚AA Á
B7ÁAB2Â2B7c                 ó†   • U R                  5       (       a  [        S5      e[        R                  " 5       b  [        S5      eg )Nz"This event loop is already runningz7Cannot run the event loop while another loop is running)r-  r”   r   Ú_get_running_looprž   s    r   Ú_check_runningÚBaseEventLoop._check_running{  sA   € Ø�?‰?×ÑÜÐCÓDÐDÜ×#Ò#Ó%Ñ1ÜØIóKð Kð 2r!   c                 ó`  • U R                  5         U R                  5         U R                  U R                  5        [        R
                  " 5       U l        [        R                  " 5       U l	        [        R                  " U R                  U R                  S9  [        R                  " U 5        g)zÞPrepare the run loop to process events.

This method exists so that custom custom event loop subclasses (e.g., event loops
that integrate a GUI event loop with Python's event loop) have access to all the
loop setup logic.
)Ú	firstiterÚ	finalizerN)r9  r²  Ú_set_coroutine_origin_trackingÚ_debugÚsysÚget_asyncgen_hooksr"  rŸ  Ú	get_identr  Úset_asyncgen_hooksrˆ  r€  r   Ú_set_running_looprž   s    r   Ú_run_forever_setupÚ BaseEventLoop._run_forever_setup‚  s   € ð 	×ÑÔØ×ÑÔØ×+Ñ+¨D¯K©KÔ8ä"×5Ò5Ó7ˆÔÜ#×-Ò-Ó/ˆŒÜ×ÒØ×3Ñ3Ø×3Ñ3ò	
ô
 	× Ò  Õ&r!   c                 óÒ   • SU l         SU l        [        R                  " S5        U R	                  S5        U R
                  b%  [        R                  " U R
                  6   SU l        gg)z÷Clean up after an event loop finishes the looping over events.

This method exists so that custom custom event loop subclasses (e.g., event loops
that integrate a GUI event loop with Python's event loop) have access to all the
loop cleanup logic.
FN)r  r  r   r½  r·  r"  r¹  r¼  rž   s    r   Ú_run_forever_cleanupÚ"BaseEventLoop._run_forever_cleanup–  s[   € ð ˆŒØˆŒÜ× Ò  Ô&Ø×+Ñ+¨EÔ2à×ÑÑ+Ü×"Ò" D×$8Ñ$8Ñ9Ø#'ˆDÕ ð ,r!   c                 óº   • U R                  5           U R                  5         U R                  (       a  OM$  U R                  5         g! U R                  5         f = f)zRun until stop() is called.N)r¾  Ú	_run_oncer  rÁ  rž   s    r   Úrun_foreverÚBaseEventLoop.run_forever¦  sJ   € à×ÑÔ!ð	(ØØ—‘Ô Ø—>—>Øñ ð
 ×%Ñ%Õ'øˆD×%Ñ%Õ'ús   ’%A ÁAc                 óV  • U R                  5         U R                  5         [        R                  " U5      (       + n[        R
                  " XS9nU(       a  SUl        UR                  [        5         U R                  5          UR                  [        5        UR                  5       (       d  [        S5      eUR                  5       $ !   U(       a:  UR                  5       (       a%  UR                  5       (       d  UR                  5         e = f! UR                  [        5        f = f)a,  Run until the Future is done.

If the argument is a coroutine, it is wrapped in a Task.

WARNING: It would be disastrous to call run_until_complete()
with the same coroutine twice -- it would wrap it in two
different Tasks and that can't be good.

Return the Future's result, or raise its exception.
r2  Fz+Event loop stopped before Future completed.)r9  r²  r   Úisfuturer   Úensure_futureÚ_log_destroy_pendingÚadd_done_callbackro   rÅ  rá   rg   rh   Úremove_done_callbackr”   r–  )r‰   r¨  Únew_tasks      r   Úrun_until_completeÚ BaseEventLoop.run_until_complete±  sä   € ð 	×ÑÔØ×ÑÔä×'Ò'¨Ó/Ô/ˆÜ×$Ò$ VÑ7ˆÞð +0ˆFÔ'à× Ñ Ô!7Ô8ð
	@Ø×ÑÕð ×'Ñ'Ô(>Ô?Ø�{‰{�}‰}ÜÐLÓMÐMà�}‰}‹Ðøð	Þ˜FŸK™KŸM™M°&×2BÑ2B×2DÑ2Dð × Ñ Ô"Øûà×'Ñ'Ô(>Õ?ús   Á4C
 Ã
ADÄD ÄD(c                 ó   • SU l         g)zœStop running the event loop.

Every callback already scheduled will still run.  This simply informs
run_forever to stop looping after a complete iteration.
TN)r  rž   s    r   rl   ÚBaseEventLoop.stop×  s   € ð ˆ�r!   c                 óˆ  • U R                  5       (       a  [        S5      eU R                  (       a  gU R                  (       a  [        R
                  " SU 5        SU l        U R                  R                  5         U R                  R                  5         SU l	        U R                  nUb  SU l
        UR                  SS9  gg)zžClose the event loop.

This clears the queues and shuts down the executor,
but does not wait for the executor to finish.

The event loop must not be running.
z!Cannot close a running event loopNzClose %rTFr�  )r-  r”   r  r¸  r   Údebugr  rŽ  r  r*  r  r§  ©r‰   Úexecutors     r   rø   ÚBaseEventLoop.closeß  sš   € ð �?‰?×ÑÜÐBÓCÐCØ�<�<ØØ�;�;Ü�LŠL˜ TÔ*ØˆŒØ�‰×ÑÔØ�‰×ÑÔØ)-ˆÔ&Ø×)Ñ)ˆØÑØ%)ˆDÔ"Ø×Ñ 5ÐÒ)ð  r!   c                 ó   • U R                   $ )z*Returns True if the event loop was closed.)r  rž   s    r   r.  ÚBaseEventLoop.is_closedö  s   € à�|‰|Ðr!   c                 óœ   • U R                  5       (       d7  U" SU < 3[        U S9  U R                  5       (       d  U R                  5         g g g )Nzunclosed event loop rƒ  )r.  r‡  r-  rø   )r‰   Ú_warns     r   Ú__del__ÚBaseEventLoop.__del__ú  sC   € Ø�~‰~×ÑÙÐ(¨©Ð1´?È4ÒPØ—?‘?×$Ñ$Ø—
‘
•ð %ð  r!   c                 ó   • U R                   SL$ )z*Returns True if the event loop is running.N)r  rž   s    r   r-  ÚBaseEventLoop.is_running   s   € à—‘ tÐ+Ð,r!   c                 ó,   • [         R                  " 5       $ )zÇReturn the time according to the event loop's clock.

This is a float expressed in seconds since an epoch, but the
epoch, precision, accuracy and drift are unspecified and may
differ per event loop.
)r  r  rž   s    r   r  ÚBaseEventLoop.time  s   € ô �~Š~ÓÐr!   )r6  c                ó®   • Uc  [        S5      eU R                  " U R                  5       U-   U/UQ7SU06nUR                  (       a  UR                  S	 U$ )aë  Arrange for a callback to be called at a given time.

Return a Handle: an opaque object with a cancel() method that
can be used to cancel the call.

The delay can be an int or float, expressed in seconds.  It is
always relative to the current time.

Each callback will be called exactly once.  If two callbacks
are scheduled for exactly the same time, it is undefined which
will be called first.

Any positional arguments after the callback will be passed to
the callback when it is called.
zdelay must not be Noner6  r8  )r>   Úcall_atr  r;  )r‰   ÚdelayÚcallbackr6  rg  Útimers         r   Ú
call_laterÚBaseEventLoop.call_later  s]   € ð  ‰=ÜÐ4Ó5Ð5Ø—’˜TŸY™Y›[¨5Ñ0°(ð .¸Tò .Ø%,ñ.ˆà×"×"Ø×'Ñ'¨Ð+Øˆr!   c                ód  • Uc  [        S5      eU R                  5         U R                  (       a"  U R                  5         U R	                  US5        [
        R                  " XX@U5      nUR                  (       a  UR                  S	 [        R                  " U R                  U5        SUl
        U$ )zlLike call_later(), but uses an absolute time.

Absolute time corresponds to the event loop's time() method.
zwhen cannot be Nonerâ  r8  T)r>   r9  r¸  Ú_check_threadÚ_check_callbackr   ÚTimerHandler;  ÚheapqÚheappushr  )r‰   Úwhenrä  r6  rg  rå  s         r   râ  ÚBaseEventLoop.call_at%  sŽ   € ð
 ‰<ÜÐ1Ó2Ð2Ø×ÑÔØ�;�;Ø×ÑÔ Ø× Ñ  ¨9Ô5Ü×"Ò" 4°4¸wÓGˆØ×"×"Ø×'Ñ'¨Ð+Ü�Š�t—‘¨Ô.ØˆÔØˆr!   c                óì   • U R                  5         U R                  (       a"  U R                  5         U R                  US5        U R	                  XU5      nUR
                  (       a  UR
                  S	 U$ )a$  Arrange for a callback to be called as soon as possible.

This operates as a FIFO queue: callbacks are called in the
order in which they are registered.  Each callback will be
called exactly once.

Any positional arguments after the callback will be passed to
the callback when it is called.
Ú	call_soonr8  )r9  r¸  ré  rê  Ú
_call_soonr;  ©r‰   rä  r6  rg  r   s        r   rñ  ÚBaseEventLoop.call_soon7  s_   € ð 	×ÑÔØ�;�;Ø×ÑÔ Ø× Ñ  ¨;Ô7Ø—‘ °Ó9ˆØ×#×#Ø×(Ñ(¨Ð,Øˆr!   c                 óÒ   • [         R                  " U5      (       d  [         R                  " U5      (       a  [        SU S35      e[	        U5      (       d  [        SU SU< 35      eg )Nzcoroutines cannot be used with z()z"a callable object was expected by z(), got )r   ÚiscoroutineÚiscoroutinefunctionr>   rB  )r‰   rä  Úmethods      r   rê  ÚBaseEventLoop._check_callbackJ  sp   € Ü×"Ò" 8×,Ñ,Ü×.Ò.¨x×8Ñ8ÜØ1°&°¸Ð<ó>ð >ä˜×!Ñ!ÜØ4°V°Hð =Ø‘lð$ó%ð %ð "r!   c                 ó¦   • [         R                  " XX5      nUR                  (       a  UR                  S	 U R                  R	                  U5        U$ )Nr8  )r   ÚHandler;  r  rB   )r‰   rä  rg  r6  r   s        r   rò  ÚBaseEventLoop._call_soonT  s@   € Ü—’˜x¨tÓ=ˆØ×#×#Ø×(Ñ(¨Ð,Ø�‰×Ñ˜6Ô"Øˆr!   c                 ó~   • U R                   c  g[        R                  " 5       nXR                   :w  a  [        S5      eg)aG  Check that the current thread is the thread running the event loop.

Non-thread-safe methods of this class make this assumption and will
likely behave incorrectly when the assumption is violated.

Should only be called when (self._debug == True).  The caller is
responsible for checking this condition for performance reasons.
NzMNon-thread-safe operation invoked on an event loop other than the current one)r  rŸ  r»  r”   )r‰   Ú	thread_ids     r   ré  ÚBaseEventLoop._check_thread[  s@   € ð �?‰?Ñ"ØÜ×'Ò'Ó)ˆ	ØŸ™Ó'Üð'ó(ð (ð (r!   c                óì   • U R                  5         U R                  (       a  U R                  US5        U R                  XU5      nUR                  (       a  UR                  S	 U R                  5         U$ )z"Like call_soon(), but thread-safe.r|  r8  )r9  r¸  rê  rò  r;  rp  ró  s        r   r|  Ú"BaseEventLoop.call_soon_threadsafel  s^   € à×ÑÔØ�;�;Ø× Ñ  Ð+AÔBØ—‘ °Ó9ˆØ×#×#Ø×(Ñ(¨Ð,Ø×ÑÔØˆr!   c                 ó>  • U R                  5         U R                  (       a  U R                  US5        UcB  U R                  nU R	                  5         Uc#  [
        R                  R                  SS9nXl        [        R                  " UR                  " U/UQ76 U S9$ )NÚrun_in_executorÚasyncio)Úthread_name_prefixr2  )
r9  r¸  rê  r  ry  Ú
concurrentr   ÚThreadPoolExecutorÚwrap_futureÚsubmit)r‰   rÕ  Úfuncrg  s       r   r  ÚBaseEventLoop.run_in_executorw  s–   € Ø×ÑÔØ�;�;Ø× Ñ  Ð'8Ô9ØÑØ×-Ñ-ˆHà×(Ñ(Ô*ØÑÜ%×-Ñ-×@Ñ@Ø'0ð Að �ð *2Ô&Ü×"Ò"Ø�OŠO˜DÐ( 4Ò(¨tñ5ð 	5r!   c                 óx   • [        U[        R                  R                  5      (       d  [	        S5      eXl        g )Nz,executor must be ThreadPoolExecutor instance)r   r  r   r  r>   r  rÔ  s     r   Úset_default_executorÚ"BaseEventLoop.set_default_executor‡  s-   € Ü˜(¤J×$6Ñ$6×$IÑ$I×JÑJÜÐJÓKÐKØ!)Õr!   c                 óX  • U SU< 3/nU(       a  UR                  SU< 35        U(       a  UR                  SU< 35        U(       a  UR                  SU< 35        U(       a  UR                  SU< 35        SR                  U5      n[        R                  " SU5        U R	                  5       n[
        R                  " XX4XV5      n	U R	                  5       U-
  n
SU S	U
S
-  S SU	< 3nX R                  :¼  a  [        R                  " U5        U	$ [        R                  " U5        U	$ )NÚ:zfamily=ztype=zproto=zflags=ú, zGet address info %szGetting address info z took g     @�@z.3fzms: )	rB   r¤  r   rÓ  r  r+   Úgetaddrinfor#  Úinfo)r‰   rD   rE   rF   rG   rH   ÚflagsÚmsgÚt0ÚaddrinfoÚdts              r   Ú_getaddrinfo_debugÚ BaseEventLoop._getaddrinfo_debugŒ  s  € Ø��q˜™Ð!Ð"ˆÞØ�J‰J˜ ¡
Ð+Ô,ÞØ�J‰J˜˜t™hÐ'Ô(ÞØ�J‰J˜ ™yÐ)Ô*ÞØ�J‰J˜ ™yÐ)Ô*Ø�i‰i˜‹nˆÜ�ŠÐ*¨CÔ0à�Y‰Y‹[ˆÜ×%Ò% d°&ÀÓMˆØ�Y‰Y‹[˜2Ñˆà% c U¨&°°c±¸#°¸dÀ8Á,ÐOˆØ×,Ñ,Ó,Ü�KŠK˜Ôð ˆô �LŠL˜ÔØˆr!   r   ©rF   rG   rH   r  c          
   ƒ   ó¤   #   • U R                   (       a  U R                  nO[        R                  nU R	                  S XqX#XEU5      I S h  v•N $  N7frP   )r¸  r  r+   r  r  )r‰   rD   rE   rF   rG   rH   r  Úgetaddr_funcs           r   r  ÚBaseEventLoop.getaddrinfo¤  sN   é € à�;�;Ø×2Ñ2‰Lä!×-Ñ-ˆLà×)Ñ)Ø�, d°DÀóH÷ Hð 	Hñ Hùs   ‚AAÁ	AÁ
Ac              ƒ   ó`   #   • U R                  S [        R                  X5      I S h  v•N $  N7frP   )r  r+   Úgetnameinfo)r‰   Úsockaddrr  s      r   r   ÚBaseEventLoop.getnameinfo®  s/   é € Ø×)Ñ)Ø”&×$Ñ$ hó7÷ 7ð 	7ñ 7ùs   ‚%.§,¨.)Úfallbackc             ƒ   óf  #   • U R                   (       a  UR                  5       S:w  a  [        S5      e[        U5        U R	                  XX45         U R                  XX45      I S h  v•N $  N! [        R                   a  nU(       d  e  S nAOS nAff = fU R                  XX45      I S h  v•N  $ 7f)Nr   zthe socket must be non-blocking)	r¸  Ú
gettimeoutr,   rw   Ú_check_sendfile_paramsÚ_sock_sendfile_nativer   ÚSendfileNotAvailableErrorÚ_sock_sendfile_fallback)r‰   r1   ÚfileÚoffsetÚcountr#  rn   s          r   Úsock_sendfileÚBaseEventLoop.sock_sendfile²  s²   é € à�;�;˜4Ÿ?™?Ó,°Ó1ÜÐ>Ó?Ð?Ü˜$ÔØ×#Ñ# D°Ô>ð	Ø×3Ñ3°DØ4:óC÷ Cð Cñ Cøä×3Ñ3ó 	ÞØô ûð	úð ×1Ñ1°$Ø28óA÷ Að Að 	AùsN   ‚AB1ÁA- Á&A+Á'A- Á*B1Á+A- Á-BÂBÂ	B1ÂBÂB1Â+B.Â,B1c              ƒ   óH   #   • [         R                  " SU< SU< S35      e7f)Nz-syscall sendfile is not available for socket z
 and file z combination©r   r(  ©r‰   r1   r*  r+  r,  s        r   r'  Ú#BaseEventLoop._sock_sendfile_nativeÁ  s3   é € ô ×2Ò2Ø;¸D¹8ð DØ‘x˜|ð-ó.ð 	.ùs   ‚ "c              ƒ   ór  #   • U(       a  UR                  U5        U(       a  [        U[        R                  5      O[        R                  n[	        U5      nSn  U(       a  [        XG-
  U5      nUS::  a  O][        U5      S U nU R                  S UR                  U5      I S h  v•N n	U	(       d  O"U R                  XS U	 5      I S h  v•N   Xy-  nMy  UUS:”  a&  [        US5      (       a  UR                  X7-   5        $ $ $  N\ N:! US:”  a&  [        US5      (       a  UR                  X7-   5        f f f = f7f)Nr   Úseek)
r4  Úminr   Ú!SENDFILE_FALLBACK_READBUFFER_SIZEÚ	bytearrayÚ
memoryviewr  ÚreadintoÚsock_sendallr*   )
r‰   r1   r*  r+  r,  Ú	blocksizeÚbufÚ
total_sentÚviewÚreads
             r   r)  Ú%BaseEventLoop._sock_sendfile_fallbackÈ  s+  é € ÞØ�I‰I�fÔö ô �”y×BÑBÔCÜ#×EÑEð 	ô ˜	Ó"ˆØˆ
ð	/ØÞÜ # EÑ$6¸	Ó B�IØ  A“~ØÜ! #“ z¨	Ð2�Ø!×1Ñ1°$¸¿¹ÀtÓL×L�ÞØØ×'Ñ'¨°5°D¨kÓ:×:Ð:ØÑ"�
ñ ð à˜A‹~¤'¨$°×"7Ñ"7Ø—	‘	˜&Ñ-Õ.ð #8ˆ~ñ Mñ ;øð ˜A‹~¤'¨$°×"7Ñ"7Ø—	‘	˜&Ñ-Õ.ð #8ˆ~üsC   ‚AD7ÁAD Â%DÂ&#D Ã	DÃ
D Ã-D7ÄD ÄD Ä.D4Ä4D7c                 óÐ  • S[        USS5      ;  a  [        S5      eUR                  [        R                  :X  d  [        S5      eUbO  [        U[        5      (       d  [        SR                  U5      5      eUS::  a  [        SR                  U5      5      e[        U[        5      (       d  [        SR                  U5      5      eUS:  a  [        SR                  U5      5      eg )NÚbÚmodez$file should be opened in binary modez+only SOCK_STREAM type sockets are supportedz+count must be a positive integer (got {!r})r   z0offset must be a non-negative integer (got {!r}))	r   r,   rG   r+   r:   r   r=   r>   Úformatr1  s        r   r&  Ú$BaseEventLoop._check_sendfile_paramsâ  sè   € Ø”g˜d F¨CÓ0Ó0ÜÐCÓDÐDØ�y‰yœF×.Ñ.Ó.ÜÐJÓKÐKØÑÜ˜e¤S×)Ñ)ÜØA×HÑHÈÓOóQð Qà˜‹zÜ ØA×HÑHÈÓOóQð Qä˜&¤#×&Ñ&ÜØB×IÑIØóóð ð �A‹:ÜØB×IÑIØóóð ð r!   c              ƒ   óÖ  #   • / nUR                   " U5        Uu  pVpxn	Sn
 [        R                  " XVUS9n
U
R                  S5        UbN  U H!  u  n    pŒXµ:w  a  M   U
R                  U5          O)   U(       a  UR                  5       e[	        SU< S35      eU R                  X©5      I Sh  v•N   U
S=p$ ! [         aR  nSU< S[        U5      R                  5        3n[	        UR                  U5      nUR                  U5         SnAMÁ  SnAff = f Nh! [         a*  nUR                  U5        U
b  U
R                  5         e SnAf  U
b  U
R                  5         e = f! S=pf = f7f)z$Create, bind and connect one socket.N©rF   rG   rH   Fú*error while attempting to bind on address ú: z&no matching local address with family=z found)rB   r+   ÚsetblockingÚbindr/   r   ÚlowerÚerrnoÚpopÚsock_connectrø   )r‰   r   Ú	addr_infoÚlocal_addr_infosÚmy_exceptionsrF   Útype_rH   Ú_r[  r1   ÚlfamilyÚladdrrn   r  s                  r   Ú_connect_sockÚBaseEventLoop._connect_sock÷  s}  é € àˆØ×Ò˜-Ô(Ø+4Ñ(ˆ�u Øˆð#	.Ü—=’=¨À%ÑHˆDØ×Ñ˜UÔ#ØÑ+Û/?Ñ+�G˜Q  1àÓ(Ù ð	2ØŸ	™	 %Ô(Ùñ 0@ö %Ø+×/Ñ/Ó1Ð1ä%Ð(OÈÁyÐPVÐ&WÓXÐXØ×#Ñ# DÓ2×2Ð2Øð *.Ð-ˆJ˜øô1 #ó 2ð'Ø',¡i¨r´#°c³(·.±.Ó2BÐ1CðEð ô & c§i¡i°Ó5˜Ø%×,Ñ,¨S×1Ò1ûð2úñ 3øäó 	Ø× Ñ  Ô%ØÑØ—
‘
”Øûð	ØÑØ—
‘
”Øûà)-Ð-ˆJ˜üsk   ‚E) :D ÁB5Á,?D Â+DÂ,D Â1E)Â5
DÂ?ADÄD ÄDÄD Ä
EÄ %EÅEÅE! Å!E&Å&E))ru   rF   rH   r  r1   Ú
local_addrrS  rÌ   rÍ   Úhappy_eyeballs_delayÚ
interleaveÚ
all_errorsc          	   ƒ   óÌ  ^ ^^^#   • U
b  U(       d  [        S5      eU
c  U(       a  U(       d  [        S5      eUn
Ub  U(       d  [        S5      eUb  U(       d  [        S5      eUb  [        U5        Ub  Uc  SnUc  UGbž  Ub  [        S5      eT R                  X#4U[        R                  XgT S9I Sh  v•N nU(       d  [        S	5      eU	b<  T R                  X•[        R                  UUT S9I Sh  v•N mT(       d  [        S	5      eOSmU(       a  [        UU5      n/ mUc&  U H  n T R                  TUT5      I Sh  v•N n  O0   O-[        R                  " UUU 4S
 jU 5       UT S9I Sh  v•N S   nUc¤  T VVs/ s H  nU  H  nUPM     M     snnm U(       a  [        ST5      e[        T5      S:X  a  TS   e[        TS   5      m[        U4S jT 5       5      (       a  TS   e[        SR                  SR                  S T 5       5      5      5      eO;Uc  [        S5      eUR                   [        R                  :w  a  [        SU< 35      eT R#                  X�XJUUS9I Sh  v•N u  nnT R$                  (       a+  UR'                  S5      n[(        R*                  " SX‚UUU5        UU4$  GN GNÈ GN}! [
         a     GM¨  f = f GNcs  snnf ! Smf = f Nr7f)a¶  Connect to a TCP server.

Create a streaming transport connection to a given internet host and
port: socket family AF_INET or socket.AF_INET6 depending on host (or
family if specified), socket type SOCK_STREAM. protocol_factory must be
a callable returning a protocol instance.

This method is a coroutine which will try to establish the connection
in the background.  When successful, the coroutine returns a
(transport, protocol) pair.
Nz+server_hostname is only meaningful with sslz:You must set server_hostname when using ssl without a hostú1ssl_handshake_timeout is only meaningful with sslú0ssl_shutdown_timeout is only meaningful with sslr   ú8host/port and sock can not be specified at the same time©rF   rG   rH   r  rÇ   ú!getaddrinfo() returned empty listc              3   ó:   >#   • U  H  nU4UUU4S  jjv •  M     g7f)c                 ó*   >• TR                  TU T5      $ rP   )rW  )r  r   Úladdr_infosr‰   s    €€€r   Ú<lambda>Ú;BaseEventLoop.create_connection.<locals>.<genexpr>.<lambda>  s   ø€ °$×2DÑ2DØ&¨°+ô3r!   NrQ   )rR   r  r   re  r‰   s     €€€r   rT   Ú2BaseEventLoop.create_connection.<locals>.<genexpr>|  s&   øé € ð ò ).˜Hð )1÷ õ ò ).ùs   ƒr2  r   zcreate_connection failedc              3   ó@   >#   • U  H  n[        U5      T:H  v •  M     g 7frP   ©r   )rR   rn   Úmodels     €r   rT   rh  ’  s   øé € ÐGºJ°Sœs 3›x¨5Ö0ºJùs   ƒzMultiple exceptions: {}r  c              3   ó8   #   • U  H  n[        U5      v •  M     g 7frP   rj  )rR   rn   s     r   rT   rh  —  s   é € Ð%Eº*°3¤c¨#§h hº*ùs   ‚z5host and port was not specified and no sock specifiedú"A Stream Socket was expected, got )rÌ   rÍ   r+   z%r connected to %s:%r: (%r, %r))r,   rw   Ú_ensure_resolvedr+   r:   r/   re   rW  r   Ústaggered_raceÚExceptionGrouprÜ   r   ÚallrD  r¤  rG   Ú_create_connection_transportr¸  Úget_extra_infor   rÓ  )r‰   rÉ   rD   rE   ru   rF   rH   r  r1   rY  rS  rÌ   rÍ   rZ  r[  r\  Úinfosr  Úsubrn   r–   rN  r   re  rk  s   `                     @@@r   Úcreate_connectionÚBaseEventLoop.create_connection"  sp  ûé € ð( Ñ&®sÜÐJÓKÐKàÑ"¦sö Ü ð "Aó Bð Bà"ˆOà Ñ,¶SÜØCóEð Eð  Ñ+¶CÜØBóDð Dð ÑÜ˜dÔ#àÑ+°
Ñ0BàˆJàÑ˜tÒ/ØÑÜ ØNóPð Pð ×/Ñ/Ø� VÜ×'Ñ'¨uÈð 0ð N÷ NˆEö ÜÐAÓBÐBàÑ%Ø$(×$9Ñ$9ØÜ×+Ñ+°5Ø dð %:ð %,÷ ,�ö #Ü!Ð"EÓFÐFð #ð #�æÜ-¨e°ZÓ@�àˆJØ#Ñ+ã %�Hð!Ø%)×%7Ñ%7Ø&¨°+ó&?÷  ?˜áò	 !&ô (×6Ò6öñ ).óð )Øñ÷ ð ñ�ð ‰|Ù-7ÔGªZ cÄ3¸C›cÁ3™c©ZÒG�
ð&Þ!Ü,Ð-GÈÓTÐTÜ˜:“¨!Ó+Ø(¨™mÐ+ô !$ J¨q¡MÓ 2˜ÜÔG¹JÓG×GÑGØ",¨Q¡-Ð/ô &Ð&?×&FÑ&FØ ŸI™IÑ%E¹*Ó%EÓEó'Gó Hð Hð ð( ‰|Ü ØKóMð Mà�y‰yœF×.Ñ.Ó.ô !Ø8¸¹ÐAóCð Cð %)×$EÑ$EØ CØ"7Ø!5ð %Fð %7÷ 7Ñˆ	�8ð �;�;ð ×+Ñ+¨HÓ5ˆDÜ�LŠLÐ:Ø T¨9°hô@à˜(Ð"Ð"òmNò,ò" ?øô #ó !Û ð!úòùó Høð  "&‘Júñ 7ùsŸ   †B.K$Â4J7Â5=K$Ã2J:Ã36K$Ä*K Å J=ÅK Å*K$Å/KÅ0K$Å?KÆK$ÆBK ÈAK$É/K"É0AK$Ê:K$Ê=K Ë 
KË
K$ËKËK$ËK$ËKËK$c              ƒ   ó2  #   • UR                  S5        U" 5       nU R                  5       n	U(       a-  [        U[        5      (       a  S OUn
U R	                  XX©XTUUS9nOU R                  XU	5      n U	I S h  v•N   X¸4$  N!   UR                  5         e = f7f)NF©rR  rS  rÌ   rÍ   )rJ  r‡   r   ÚboolrX  rO  rø   )r‰   r1   rÉ   ru   rS  rR  rÌ   rÍ   rN  rã   rW  r–   s               r   rr  Ú*BaseEventLoop._create_connection_transportµ  s§   é € ð 	×Ñ˜Ôá#Ó%ˆØ×#Ñ#Ó%ˆÞÜ!+¨C´×!6Ñ!6™¸CˆJØ×0Ñ0Ø 
Ø'Ø&;Ø%9ð	 1ð ;‰Ið ×3Ñ3°DÀFÓKˆIð	Ø�LˆLð
 Ð"Ð"ñ øð	Ø�O‰OÔØüs0   ‚A/BÁ2B Á7A?Á8B Á<BÁ?B ÂBÂBc             ƒ   ó  #   • UR                  5       (       a  [        S5      e[        US[        R                  R
                  5      nU[        R                  R
                  L a  [        SU< 35      eU[        R                  R                  L a   U R                  XX45      I Sh  v•N $ U(       d  [        SU< 35      eU R                  XX45      I Sh  v•N $  N4! [        R                   a  nU(       d  e  SnANSSnAff = f N/7f)a  Send a file to transport.

Return the total number of bytes which were sent.

The method uses high-performance os.sendfile if available.

file must be a regular file object opened in binary mode.

offset tells from where to start reading the file. If specified,
count is the total number of bytes to transmit as opposed to
sending the file until EOF is reached. File position is updated on
return or also in case of error in which case file.tell()
can be used to figure out the number of bytes
which were sent.

fallback set to True makes asyncio to manually read and send
the file when the platform does not support the sendfile syscall
(e.g. Windows or SSL socket on Unix).

Raise SendfileNotAvailableError if the system does not support
sendfile syscall and fallback is False.
zTransport is closingÚ_sendfile_compatiblez(sendfile is not supported for transport NzHfallback is disabled and native sendfile is not supported for transport )rŽ   r”   r   r   Ú_SendfileModeÚUNSUPPORTEDÚ
TRY_NATIVEÚ_sendfile_nativer   r(  Ú_sendfile_fallback)r‰   r–   r*  r+  r,  r#  rC  rn   s           r   ÚsendfileÚBaseEventLoop.sendfileÑ  s  é € ð0 ×Ñ×!Ñ!ÜÐ5Ó6Ð6Ü�yÐ"8Ü ×.Ñ.×:Ñ:ó<ˆà”9×*Ñ*×6Ñ6Ò6ÜØ:¸9¹-ÐHóJð Jà”9×*Ñ*×5Ñ5Ò5ðØ!×2Ñ2°9Ø39óB÷ Bð Bö Üð+Ø+4©-ð9ó:ð :ð ×,Ñ,¨YØ-3ó<÷ <ð 	<ñBøä×7Ñ7ó ÞØô  ûðúñ<ùsN   ‚BD	ÂC Â'CÂ(C Â+,D	ÃDÃD	ÃC ÃDÃ2C?Ã:D	Ã?DÄD	c              ƒ   ó6   #   • [         R                  " S5      e7f)Nz!sendfile syscall is not supportedr0  )r‰   rŠ   r*  r+  r,  s        r   r�  ÚBaseEventLoop._sendfile_native   s   é € Ü×2Ò2Ø/ó1ð 	1ùs   ‚c              ƒ   óX  #   • U(       a  UR                  U5        U(       a  [        US5      OSn[        U5      nSn[        U5      n  U(       aX  [        XG-
  U5      nUS::  aD  UUS:”  a$  [	        US5      (       a  UR                  X7-   5        UR                  5       I S h  v•N   $ [        U5      S U n	U R                  S UR                  U	5      I S h  v•N n
U
(       dD  UUS:”  a$  [	        US5      (       a  UR                  X7-   5        UR                  5       I S h  v•N   $ UR                  U	S U
 5        UR                  5       I S h  v•N   Xz-  nGM   N¶ N„ N< N! US:”  a$  [	        US5      (       a  UR                  X7-   5        UR                  5       I S h  v•N    f = f7f)Ni @  r   r4  )r4  r5  r7  ry   r*   r²   r8  r  r9  Úwriter�   )r‰   rŠ   r*  r+  r,  r;  r<  r=  rH   r>  r?  s              r   r‚  Ú BaseEventLoop._sendfile_fallback  ss  é € ÞØ�I‰I�fÔÞ).”C˜˜uÔ%°Eˆ	Ü˜	Ó"ˆØˆ
Ü)¨&Ó1ˆð	"ØÞÜ # EÑ$6¸	Ó B�IØ  A“~Ø)ð ˜A‹~¤'¨$°×"7Ñ"7Ø—	‘	˜&Ñ-Ô.Ø—-‘-“/×!Ñ!ô " #“ z¨	Ð2�Ø!×1Ñ1°$¸¿¹ÀtÓL×L�ÞØ%ð
 ˜A‹~¤'¨$°×"7Ñ"7Ø—	‘	˜&Ñ-Ô.Ø—-‘-“/×!Ñ!ð —‘˜T % 4˜[Ô)Ø—k‘k“m×#Ð#ØÑ"�
ò ñ "ñ Mñ "ñ $øð ˜A‹~¤'¨$°×"7Ñ"7Ø—	‘	˜&Ñ-Ô.Ø—-‘-“/×!Ò!üs„   ‚AF*Á	E" Á&=F*Â#EÂ$F*Â).E" ÃEÃE" Ã$=F*Ä!EÄ"F*Ä''E" ÅE ÅE" ÅF*ÅE" ÅF*Å E" Å">F'Æ F#Æ!F'Æ'F*ry  c             ƒ   ó€  #   • [         c  [        S5      e[        U[         R                  5      (       d  [	        SU< 35      e[        USS5      (       d  [	        SU< S35      eU R                  5       n[        R                  " XX8XEUUSS9	n	UR                  5         UR                  U	5        U R                  U	R                  U5      n
U R                  UR                  5      n UI Sh  v•N   U	R"                  $  N! [         a2    UR                  5         U
R!                  5         UR!                  5         e f = f7f)	zbUpgrade transport to TLS.

Return a new transport that *protocol* should start using
immediately.
Nz"Python ssl module is not availablez@sslcontext is expected to be an instance of ssl.SSLContext, got Ú_start_tls_compatibleFz
transport z  is not supported by start_tls())rÌ   rÍ   rT  )ru   r”   r   Ú
SSLContextr>   r   r‡   r
   ÚSSLProtocolr„   r…   rñ  r—   r°   ÚBaseExceptionrø   r±   Ú_app_transport)r‰   r–   rN  rW  rR  rS  rÌ   rÍ   rã   Ússl_protocolÚ
conmade_cbÚ	resume_cbs               r   Ú	start_tlsÚBaseEventLoop.start_tls  s<  é € ô ‰;ÜÐCÓDÐDä˜*¤c§n¡n×5Ñ5ÜðØ!‘nð&ó'ð 'ô �yÐ"9¸5×AÑAÜØ˜Y™MÐ)IÐJóLð Lð ×#Ñ#Ó%ˆÜ×+Ò+Ø˜JØØ"7Ø!5Ø!&ñ(ˆð 	×ÑÔ!à×Ñ˜|Ô,Ø—^‘^ L×$@Ñ$@À)ÓLˆ
Ø—N‘N 9×#;Ñ#;Ó<ˆ	ð	Ø�LˆLð ×*Ñ*Ð*ñ øÜó 	Ø�O‰OÔØ×ÑÔØ×ÑÔØð		üs0   ‚C$D>Ã'C? Ã,C=Ã-C? Ã1D>Ã=C? Ã?<D;Ä;D>)rF   rH   r  Ú
reuse_portÚallow_broadcastr1   c          
   ƒ   ón	  #   • U	bµ  U	R                   [        R                  :X  a  [        SU	< 35      eU(       d*  U(       d#  U(       d  U(       d  U(       d  U(       d  U(       aB  [	        X#XEUUUS9n
SR                  S U
R                  5        5       5      n[        SU S35      eU	R                  S5        SnGOÅU(       d   U(       d  US	:X  a  [        S
5      eXE4S44nGOÂ[        [        S5      (       a¬  U[        R                  :X  a˜  X#4 H(  nUc  M  [        U[        5      (       a  M  [        S5      e   U(       aY  US	   S;  aP   [        R                  " [        R                  " U5      R                   5      (       a  [        R"                  " U5        XE4X#444nGO0 nS	U4SU44 Hœ  u  nnUc  M  [        U[,        5      (       a  [/        U5      S:X  d  [        S5      eU R1                  Xä[        R2                  XVU S9I Sh  v•N nU(       d  ['        S5      eU H"  u  nnnnnUU4nUU;  a  SS/UU'   UUU   U'   M$     Mž     UR                  5        VVs/ s H(  u  nnU(       a  US	   c  M  U(       a  US   c  M$  UU4PM*     nnnU(       d  [        S5      e/ nU HÏ  u  u  pEu  nnSn	Sn [        R                  " U[        R2                  US9n	U(       a  [5        U	5        U(       a/  U	R7                  [        R8                  [        R:                  S5        U	R                  S5        U(       a  U	R=                  U5        U(       a#  U(       d  U R?                  U	U5      I Sh  v•N   Un  O   US	   eU" 5       nU RE                  5       nU RG                  U	UUU5      nU RH                  (       a:  U(       a  [(        RJ                  " SX#UU5        O[(        RL                  " SUUU5         UI Sh  v•N   UU4$ ! [$         a     GNx[&         a"  n[(        R*                  " SX/5         SnAGNžSnAff = f GN6s  snnf  NØ! [&         a1  nU	b  U	RA                  5         URB                  " U5         SnAGMÙ  SnAf  U	b  U	RA                  5         e = f N !   URA                  5         e = f7f)zCreate datagram connection.Nz$A datagram socket was expected, got )rY  Úremote_addrrF   rH   r  r•  r–  r  c              3   óF   #   • U  H  u  pU(       d  M  U S U 3v •  M     g7f)Ú=NrQ   )rR   ÚkÚvs      r   rT   Ú9BaseEventLoop.create_datagram_endpoint.<locals>.<genexpr>_  s    é € Ð$NºL±D°AÌA£Z¨ s¨!¨A¨3¥ZºLùs   ‚!“!zKsocket modifier keyword arguments can not be used when sock is specified. (Ú)Fr   zunexpected address family©NNÚAF_UNIXzstring is expected)r   Ú z2Unable to check or remove stale UNIX socket %r: %rr   r›  z2-tuple is expectedra  rb  zcan not get address informationrG  z@Datagram endpoint local_addr=%r remote_addr=%r created: (%r, %r)z2Datagram endpoint remote_addr=%r created: (%r, %r))'rG   r+   r:   r,   Údictr¤  ÚitemsrJ  r*   r   r   r   r>   ÚstatÚS_ISSOCKÚosÚst_modeÚremoveÚFileNotFoundErrorr/   r   Úerrorrô   rÜ   rn  r;   r2   r-   r.   ÚSO_BROADCASTrK  rO  rø   rB   r‡   r\  r¸  r  rÓ  ) r‰   rÉ   rY  r˜  rF   rH   r  r•  r–  r1   ÚoptsÚproblemsÚr_addrÚaddr_pairs_inforb   ÚerrÚ
addr_infosÚidxrt  ÚfamrT  Úpror[  ÚkeyÚ	addr_pairr   Úlocal_addressÚremote_addressrn   rN  rã   r–   s                                    r   Úcreate_datagram_endpointÚ&BaseEventLoop.create_datagram_endpointM  s�  é € ð ÑØ�y‰yœF×.Ñ.Ó.Ü Ø:¸4¹(ÐCóEð EæžkÞže¦uÞ¦/ä zØ#)¸eØ'1Ø,;ñ=�ð  Ÿ9™9Ñ$N¸D¿J¹J¼LÓ$NÓN�Ü ð0Ø08¨z¸ð<ó=ð =ð ×Ñ˜UÔ#ØŠFæ¦+Ø˜Q“;Ü$Ð%@ÓAÐAØ%+ O°\Ð#BÐ"D’Üœ ×+Ñ+°¼&¿.¹.Ó0HØ'Ó5�DØÓ'´
¸4Ä×0EÓ0EÜ'Ð(<Ó=Ð=ñ 6ö  *¨Q¡-°{Ó"Bð	6ÜŸ=š=¬¯ª°Ó)<×)DÑ)D×EÑEÜŸIšI jÔ1ð &, OØ%/Ð$=ð$?ð #B’ð  �
Ø#$ j /°A°{Ð3CÓ!D‘I�C˜ØÓ'Ü *¨4´× 7Ñ 7¼CÀ»IÈ»NÜ"+Ð,AÓ"BÐBà&*×&;Ñ&;Ø ´f×6GÑ6GØ"'¸4ð '<ð 'A÷ !A˜ö  %Ü")Ð*MÓ"NÐNã7<Ñ3˜C  C¨¨GØ#&¨ *˜CØ"¨*Ó4Ø37¸°, 
¨3¡Ø3:˜J s™O¨CÓ0ó	 8=ñ "Eð& <F×;KÑ;KÔ;Mô#EÚ;M©¨¨iÞ'¨I°a©Ló %æ(¨Y°q©\ó %�S˜)Ó$Ñ;Mð  ñ #Eö
 'Ü$Ð%FÓGÐGàˆJó 6Eñ2‘�&Ù0�- Ø�Ø�ðÜ!Ÿ=š=Ø%¬F×,=Ñ,=ÀUñL�Dæ!Ü& tÔ,Þ&ØŸ™Ü"×-Ñ-¬v×/BÑ/BÀAôGà×$Ñ$ UÔ+æ!ØŸ	™	 -Ô0Þ"Þ.Ø"&×"3Ñ"3°D¸.Ó"I×IÐIØ!/˜ñ ñ9 6Eð< ! ‘mÐ#á#Ó%ˆØ×#Ñ#Ó%ˆØ×1Ñ1Ø�(˜F Fó,ˆ	à�;�;ÞÜ—’ð 0à&°YÀõJô —’ð (à(¨)°Xô?ð	Ø�LˆLð
 ˜(Ð"Ð"øô} -ó ÚÜ"ó 6äŸšð &5à%/÷6ò 6ûð6úò !Aùó#Eñ8 Jøäó +ØÑ'ØŸ
™
œØ×%Ò% c×*Ó*ûðØÑ'ØŸ
™
œØúñ* øð	Ø�O‰OÔØüsã   ‚DR5ÄR5Ä-R5ÅAP ÆR5Æ8AR5È
Q ÈAR5É QÉ8QÊQÊ(R5Ê8B8QÍ0Q	Í1QÍ7A?R5Ï7R Ï<RÏ=R ÐR5Ð
P=ÐR5Ð	P=ÐP8Ð2R5Ð8P=Ð=R5ÑR5Ñ	QÑ
RÑ%RÑ:R5ÒRÒR5ÒR ÒR2Ò2R5c          	   ƒ   ó|   #   • US S u  px[        XxX#U/USS  Q76 n	U	b  U	/$ UR                  XxX#XES9I S h  v•N $  N7f)Nr›  r  )rM   r  )
r‰   r[  rF   rG   rH   r  rÇ   rD   rE   r  s
             r   rn  ÚBaseEventLoop._ensure_resolvedÓ  sg   é € ð ˜R˜a�[‰
ˆÜ˜D¨°eÐJ¸gÀaÀb¸kÒJˆØÑà�6ˆMà×)Ñ)¨$¸VØ05ð *ð D÷ Dð Dñ Dùs   ‚3<µ:¶<c              ƒ   ó’   #   • U R                  X4U[        R                  X@S9I S h  v•N nU(       d  [        SU< S35      eU$  N7f)N)rF   rG   r  rÇ   zgetaddrinfo(z) returned empty list)rn  r+   r:   r/   )r‰   rD   rE   rF   r  rt  s         r   Ú_create_server_getaddrinfoÚ(BaseEventLoop._create_server_getaddrinfoß  sX   é € Ø×+Ñ+¨T¨LÀÜ17×1CÑ1CØ27ð ,ð D÷ Dˆö Ü˜L¨©Ð0EÐFÓGÐGØˆñDùs   ‚%A§A¨Ar   )rF   r  r1   rË   ru   Úreuse_addressr•  Ú
keep_aliverÌ   rÍ   r  c          
   ƒ   óÒ	  #   • [        U[        5      (       a  [        S5      eUb  Uc  [        S5      eUb  Uc  [        S5      eUb  [	        U5        Uc  UGb–  Ub  [        S5      eU	c-  [
        R                  S:H  =(       a    [        R                  S:g  n	/ nUS:X  a  S/nOD[        U[        5      (       d)  [        U[        R                  R                  5      (       d  U/nOUnU Vs/ s H  nU R                  X#UUS	9PM     nn[        R                  " U6 I Sh  v•N n[!        ["        R$                  R'                  U5      5      nS
n U GHM  nUu  nnnnn [(        R(                  " UUU5      nUR3                  U5        U	(       a/  UR5                  [(        R6                  [(        R8                  S5        U
(       a/  U[(        R:                  [(        R<                  4;   a  [?        U5        U(       a/  UR5                  [(        R6                  [(        R@                  S5        [B        (       aX  U[(        R<                  :X  aD  [E        [(        S5      (       a/  UR5                  [(        RF                  [(        RH                  S5         URK                  U5        GMP     U(       d#  [M        SU Vs/ s H  nUS   PM
     sn< 35      eSnU(       d  U H  nURW                  5         M     O>Uc  [        S5      eURX                  [(        RZ                  :w  a  [        SU< 35      eU/nU H  nUR]                  S
5        M     [_        XUX‡UU5      nU(       a.  URa                  5         [        Rb                  " S5      I Sh  v•N   U R,                  (       a  [.        Rd                  " SU5        U$ s  snf  GNœ! [(        R*                   a.    U R,                  (       a  [.        R0                  " SUUUSS9   GM®  f = f! [L         a©  nSU< S[        U5      RO                  5       < 3nURP                  [P        RR                  :X  aN  URU                  5         URW                  5         U R,                  (       a  [.        R0                  " U5         SnAGMI  [M        URP                  U5      SeSnAff = fs  snf ! U(       d  U H  nURW                  5         M     f f = f GN]7f)aá  Create a TCP server.

The host parameter can be a string, in that case the TCP server is
bound to host and port.

The host parameter can also be a sequence of strings and in that case
the TCP server is bound to all hosts of the sequence. If a host
appears multiple times (possibly indirectly e.g. when hostnames
resolve to the same IP address), the server is only bound once to that
host.

Return a Server object which can be used to stop the service.

This method is a coroutine.
z*ssl argument must be an SSLContext or NoneNr^  r_  r`  ÚposixÚcygwinr5   )rF   r  Fz:create_server() failed to create socket.socket(%r, %r, %r)T©Úexc_infoÚIPPROTO_IPV6rH  rI  z%could not bind on any address out of é   z)Neither host/port nor sock were specifiedrm  r   z%r is serving)3r   rz  r>   r,   rw   r¦  r5  r¹  Úplatformr   rV   ÚabcÚIterabler¾  r   r�  Úsetr[   r\   r]   r+   rª  r¸  r   ÚwarningrB   r-   r.   ÚSO_REUSEADDRr@   r   r2   ÚSO_KEEPALIVErA   r*   rÇ  ÚIPV6_V6ONLYrK  r/   rL  rM  ÚEADDRNOTAVAILrN  rø   rG   r:   rJ  r   rç   r  r  )r‰   rÉ   rD   rE   rF   r  r1   rË   ru   rÀ  r•  rÁ  rÌ   rÍ   r  rÈ   ÚhostsÚfsrt  Ú	completedÚresrL   ÚsocktyperH   Ú	canonnameÚsar°  r  r  rJ  s                                 r   Úcreate_serverÚBaseEventLoop.create_serverç  sE  é € ô: �cœ4× Ñ ÜÐHÓIÐIà Ñ,°±ÜØCóEð Eð  Ñ+°±ÜØBóDð Dð ÑÜ˜dÔ#àÑ˜tÒ/ØÑÜ ØNóPð Pð Ñ$Ü "§¡¨7Ñ 2× O´s·|±|ÀxÑ7O�ØˆGØ�r‹zØ˜‘Ü˜T¤3×'Ñ'Ü  ¤{§¡×'?Ñ'?×@Ñ@Ø˜‘à�ñ $ó%â#�dð ×1Ñ1°$ÀVØ8=ð 2ó ?á#ð ð %ô  Ÿ,š,¨Ð+×+ˆEÜœ	Ÿ™×5Ñ5°eÓ<Ó=ˆEàˆIð7%Ü �CØ9<Ñ6�B˜ %¨°Bð!Ü%Ÿ}š}¨R°¸5ÓA˜ð —N‘N 4Ô(Þ$ØŸ™Ü"×-Ñ-¬v×/BÑ/BÀDôJö " b¬V¯^©^¼V¿_¹_Ð,MÓ&MÜ& tÔ,Þ!ØŸ™Ü"×-Ñ-¬v×/BÑ/BÀDôJ÷
 "š	Ø¤&§/¡/Ó1Ü#¤F¨N×;Ñ;ØŸ™¬×(;Ñ(;Ü(.×(:Ñ(:Ø(,ô.ð@ØŸ	™	 "ŸñA !ö\ Ý!Ù:?Ó%@º%°$ d¨1¤g¹%Ó%@ð#Có Dð Dð !�	æ Û '˜ØŸ
™
žñ !(øð ‰|Ü Ð!LÓMÐMØ�y‰yœF×.Ñ.Ó.Ü Ð#EÀdÁXÐ!NÓOÐOØ�fˆGãˆDØ×Ñ˜UÖ#ñ ô ˜Ð'7ØÐ&;Ø,ó.ˆö Ø×!Ñ!Ô#ô —+’+˜a“.× Ð à�;�;Ü�KŠK˜¨Ô0Øˆùòi%ò ,øô "Ÿ<™<ó !àŸ;Ÿ;Ü"ŸNšNð ,Gà+-¨x¸ÈòOó !ð!ûô: #ô @ó #%¤c¨#£h§n¡nÕ&6ð 8˜ð Ÿ9™9¬×(;Ñ(;Ó;à#ŸK™KœMØ ŸJ™JœLØ#Ÿ{Ÿ{Ü &§¢¨sÔ 3Þ$Ü% c§i¡i°Ó5¸4Ð?ûð@üò &Aøö !Û '˜ØŸ
™
žò !(ð !úò( !ùs¥   ‚C*S'Ã,N6ÄS'ÄN;Ä .S'ÅR> ÅN>Å6DR> ÊPÊR> Ê4R9
ËR> ËB8S'ÎS$Î4S'Î>=P Ï;R> Ï?P Ð R> Ð
R6ÐBR1ÒR> ÒR1Ò1R6Ò6R> Ò>#S!Ó!S')ru   rÌ   rÍ   c          
   ƒ   óŽ  #   • UR                   [        R                  :w  a  [        SU< 35      eUb  U(       d  [        S5      eUb  U(       d  [        S5      eUb  [	        U5        U R                  X!USSUUS9I S h  v•N u  pgU R                  (       a)  UR                  S5      n[        R                  " SX&U5        Xg4$  NC7f)	Nrm  r^  r_  r5   T)rR  rÌ   rÍ   r+   z%r handled: (%r, %r))
rG   r+   r:   r,   rw   rr  r¸  rs  r   rÓ  )r‰   rÉ   r1   ru   rÌ   rÍ   r–   rN  s           r   Úconnect_accepted_socketÚ%BaseEventLoop.connect_accepted_socketx  sÙ   é € ð
 �9‰9œ×*Ñ*Ó*ÜÐAÀ$ÁÐJÓKÐKà Ñ,¶SÜØCóEð Eð  Ñ+¶CÜØBóDð Dð ÑÜ˜dÔ#à$(×$EÑ$EØ C¨¸Ø"7Ø!5ð %Fð %7÷ 7Ñˆ	ð �;�;ð ×+Ñ+¨HÓ5ˆDÜ�LŠLÐ/°À(ÔKØÐ"Ð"ñ7ùs   ‚A=CÁ?CÂ ACc              ƒ   ó  #   • U" 5       nU R                  5       nU R                  X#U5      n UI S h  v•N   U R                  (       a&  [        R
                  " SUR                  5       XS5        XS4$  N>!   UR                  5         e = f7f)Nz Read pipe %r connected: (%r, %r))r‡   ra  rø   r¸  r   rÓ  Úfileno©r‰   rÉ   r`  rN  rã   r–   s         r   Úconnect_read_pipeÚBaseEventLoop.connect_read_pipe–  s}   é € Ù#Ó%ˆØ×#Ñ#Ó%ˆØ×2Ñ2°4À6ÓJˆ	ð	Ø�LˆLð
 �;�;Ü�LŠLÐ;ØŸ™›¨	ô=àÐ"Ð"ñ øð	Ø�O‰OÔØüó+   ‚*B	­A3 ²A1³A3 ·:B	Á1A3 Á3BÂB	c              ƒ   ó  #   • U" 5       nU R                  5       nU R                  X#U5      n UI S h  v•N   U R                  (       a&  [        R
                  " SUR                  5       XS5        XS4$  N>!   UR                  5         e = f7f)Nz!Write pipe %r connected: (%r, %r))r‡   rd  rø   r¸  r   rÓ  rß  rà  s         r   Úconnect_write_pipeÚ BaseEventLoop.connect_write_pipe¦  s}   é € Ù#Ó%ˆØ×#Ñ#Ó%ˆØ×3Ñ3°DÀFÓKˆ	ð	Ø�LˆLð
 �;�;Ü�LŠLÐ<ØŸ™›¨	ô=àÐ"Ð"ñ øð	Ø�O‰OÔØürã  c                 ó~  • U/nUb  UR                  S[        U5       35        Ub2  U[        R                  :X  a  UR                  S[        U5       35        O@Ub  UR                  S[        U5       35        Ub  UR                  S[        U5       35        [        R
                  " SR                  U5      5        g )Nzstdin=zstdout=stderr=zstdout=zstderr=Ú )rB   r'   r#   r%   r   rÓ  r¤  )r‰   r  ri  rj  rk  r  s         r   Ú_log_subprocessÚBaseEventLoop._log_subprocess¶  s¦   € ØˆuˆØÑØ�K‰K˜&¤¨eÓ!4Ð 5Ð6Ô7ØÑ &¬J×,=Ñ,=Ó"=Ø�K‰K˜.¬°fÓ)=Ð(>Ð?Õ@àÑ!Ø—‘˜g¤l°6Ó&:Ð%;Ð<Ô=ØÑ!Ø—‘˜g¤l°6Ó&:Ð%;Ð<Ô=Ü�Š�S—X‘X˜d“^Õ$r!   )	ri  rj  rk  Úuniversal_newlinesrh  rl  ÚencodingÚerrorsÚtextc       	   	   ‹   ó  #   • [        U[        [        45      (       d  [        S5      eU(       a  [        S5      eU(       d  [        S5      eUS:w  a  [        S5      eU(       a  [        S5      eU	b  [        S5      eU
b  [        S5      eU" 5       nS nU R                  (       a  S	U-  nU R                  XãXE5        U R                  " XÒS
X4XX40 UD6I S h  v•N nU R                  (       a  Ub  [        R                  " SXï5        Xý4$  N27f)Nzcmd must be a stringú universal_newlines must be Falsezshell must be Truer   úbufsize must be 0útext must be Falseúencoding must be Noneúerrors must be Nonezrun shell command %rTú%s: %r)	r   r<   r   r,   r¸  ré  rm  r   r  )r‰   rÉ   Úcmdri  rj  rk  rë  rh  rl  rì  rí  rî  r=  rN  Ú	debug_logr–   s                   r   Úsubprocess_shellÚBaseEventLoop.subprocess_shellÃ  s
  é € ô ˜#¤¤s˜|×,Ñ,ÜÐ3Ó4Ð4ÞÜÐ?Ó@Ð@ÞÜÐ1Ó2Ð2Ø�a‹<ÜÐ0Ó1Ð1ÞÜÐ1Ó2Ð2ØÑÜÐ4Ó5Ð5ØÑÜÐ2Ó3Ð3á#Ó%ˆØˆ	Ø�;�;ð /°Ñ4ˆIØ× Ñ  °6ÔBØ×9Ò9Ø˜4 °ñKØCIñK÷ Kˆ	à�;�;˜9Ñ0Ü�KŠK˜ )Ô7ØÐ"Ð"ñ	Kùs   ‚CDÃD	Ã3Dc       	   	   �   óä  #   • U(       a  [        S5      eU(       a  [        S5      eUS:w  a  [        S5      eU(       a  [        S5      eU	b  [        S5      eU
b  [        S5      eU4U-   nU" 5       nS nU R                  (       a  SU< 3nU R                  UX4U5        U R                  " XþS	X4UU40 UD6I S h  v•N nU R                  (       a  Ub  [        R
                  " S
UU5        UU4$  N47f)Nrð  zshell must be Falser   rñ  rò  ró  rô  zexecute program Frõ  )r,   r¸  ré  rm  r   r  )r‰   rÉ   Úprogramri  rj  rk  rë  rh  rl  rì  rí  rî  rg  r=  Ú
popen_argsrN  r÷  r–   s                     r   Úsubprocess_execÚBaseEventLoop.subprocess_execç  s  é € ö ÜÐ?Ó@Ð@ÞÜÐ2Ó3Ð3Ø�a‹<ÜÐ0Ó1Ð1ÞÜÐ1Ó2Ð2ØÑÜÐ4Ó5Ð5ØÑÜÐ2Ó3Ð3à�Z $Ñ&ˆ
Ù#Ó%ˆØˆ	Ø�;�;ð +¨7©+Ð6ˆIØ× Ñ  ¨E¸6ÔBØ×9Ò9Ø %¨¸Øñàñ÷ ˆ	ð �;�;˜9Ñ0Ü�KŠK˜ )¨YÔ7Ø˜(Ð"Ð"ñùs   ‚B7C0Â9C.Â:5C0c                 ó   • U R                   $ )zKReturn an exception handler, or None if the default one is in use.
        )r  rž   s    r   Úget_exception_handlerÚ#BaseEventLoop.get_exception_handler	  s   € ð ×&Ñ&Ð&r!   c                 óT   • Ub  [        U5      (       d  [        SU< 35      eXl        g)as  Set handler as the new event loop exception handler.

If handler is None, the default exception handler will
be set.

If handler is a callable object, it should have a
signature matching '(loop, context)', where 'loop'
will be a reference to the active event loop, 'context'
will be a dict object (see `call_exception_handler()`
documentation for details about context).
Nz+A callable object or None is expected, got )rB  r>   r  )r‰   Úhandlers     r   Úset_exception_handlerÚ#BaseEventLoop.set_exception_handler  s6   € ð Ñ¤x°×'8Ñ'8Üð #Ø#*¡+ð/ó 0ð 0à")Õr!   c                 óî  • UR                  S5      nU(       d  SnUR                  S5      nUb  [        U5      X3R                  4nOSnSU;  aA  U R                  b4  U R                  R                  (       a  U R                  R                  US'   U/n[        U5       H°  nUS;   a  M  X   nUS:X  a:  S	R                  [        R                  " U5      5      nS
nXxR                  5       -  nOKUS:X  a:  S	R                  [        R                  " U5      5      nSnXxR                  5       -  nO[        U5      nUR                  U SU 35        M²     [        R                  " SR                  U5      US9  g)aõ  Default exception handler.

This is called when an exception occurs and no exception
handler is set, and can be called by a custom exception
handler that wants to defer to the default behavior.

This default handler logs the error message and other
context-dependent information.  In debug mode, a truncated
stack trace is also appended showing where the given object
(e.g. a handle or future or task) was created, if any.

The context parameter has the same meaning as in
`call_exception_handler()`.
rŒ  z!Unhandled exception in event looprh   NFÚsource_tracebackÚhandle_traceback>   rŒ  rh   r5   z+Object created at (most recent call last):
z+Handle created at (most recent call last):
rI  Ú
rÅ  )ÚgetrG   Ú__traceback__r$  r;  Úsortedr¤  Ú	tracebackÚformat_listÚrstripr   rB   r   rª  )	r‰   r6  rŒ  rh   rÆ  Ú	log_linesrµ  ÚvalueÚtbs	            r   Údefault_exception_handlerÚ'BaseEventLoop.default_exception_handler  sS  € ð —+‘+˜iÓ(ˆÞØ9ˆGà—K‘K Ó,ˆ	ØÑ Ü˜Y›¨×4KÑ4KÐL‰HàˆHà gÓ-Ø×$Ñ$Ñ0Ø×$Ñ$×6×6à×$Ñ$×6Ñ6ð Ð&Ñ'ð �Iˆ	Ü˜'–?ˆCØÐ.Ó.ÙØ‘LˆEØÐ(Ó(Ø—W‘WœY×2Ò2°5Ó9Ó:�ØF�ØŸ™›Ñ$‘ØÐ*Ó*Ø—W‘WœY×2Ò2°5Ó9Ó:�ØF�ØŸ™›Ñ$‘ä˜U›�Ø×Ñ ˜u B u gÐ.Ö/ñ #ô  	�Š�T—Y‘Y˜yÓ)°HÓ=r!   c                 óÞ  • U R                   c   U R                  U5        g SnUR                  S5      nUc  UR                  S5      nUc  UR                  S5      nUb!  [        US5      (       a  UR                  5       nUb.  [        US	5      (       a  UR                  U R                   X5        gU R                  X5        g! [        [        4 a    e [         a    [
        R                  " SSS9   gf = f! [        [        4 a    e [         aY  n U R                  S
UUS.5         SnAg! [        [        4 a    e [         a    [
        R                  " SSS9    SnAgf = fSnAff = f)a8  Call the current event loop's exception handler.

The context argument is a dict containing the following keys:

- 'message': Error message;
- 'exception' (optional): Exception object;
- 'future' (optional): Future instance;
- 'task' (optional): Task instance;
- 'handle' (optional): Handle instance;
- 'protocol' (optional): Protocol instance;
- 'transport' (optional): Transport instance;
- 'socket' (optional): Socket instance;
- 'source_traceback' (optional): Traceback of the source;
- 'handle_traceback' (optional): Traceback of the handle;
- 'asyncgen' (optional): Asynchronous generator that caused
                         the exception.

New keys maybe introduced in the future.

Note: do not overload this method in an event loop subclass.
For custom exception handling, use the
`set_exception_handler()` method.
Nz&Exception in default exception handlerTrÅ  r>  r¨  r   Úget_contextÚrunz$Unhandled error in exception handler)rŒ  rh   r6  zeException in default exception handler while handling an unexpected error in custom exception handler)r  r  ri   rj   rŽ  r   rª  r
  r*   r  r  )r‰   r6  ÚctxÚthingrn   s        r   r’  Ú$BaseEventLoop.call_exception_handlerQ  sr  € ð0 ×"Ñ"Ñ*ð	,Ø×.Ñ.¨wÕ7ð$0Ø�ØŸ™ FÓ+�Ø‘=ð $ŸK™K¨Ó1�EØ‘=à#ŸK™K¨Ó1�EØÑ$¬°¸×)FÑ)FØ×+Ñ+Ó-�CØ‘?¤w¨s°E×':Ñ':Ø—G‘G˜D×3Ñ3°TÕCà×+Ñ+¨DÕ:øô3 Ô 1Ð2ó ØÜ ó ,ô —’ÐEØ&*ô,ð	,ûô0 Ô 1Ð2ó ØÜ ó 0ð0à×2Ñ2Ø#IØ%(Ø#*ñ4÷ ñ øô
 #Ô$5Ð6ó ØÜ$ó 0ô —L’Lð "?ð +/÷0ð 0ð0þð0úsG   �C ¢BC9 Â2C9 Ã/C6Ã5C6Ã9E,ÄD.Ä./E$ÅE'Å#E$Å$E'Å'E,c                 ó^   • UR                   (       d  U R                  R                  U5        gg)zAdd a Handle to _ready.N)Ú
_cancelledr  rB   ©r‰   r   s     r   Ú_add_callbackÚBaseEventLoop._add_callback›  s"   € à× × Ø�K‰K×Ñ˜vÕ&ð !r!   c                 óF   • U R                  U5        U R                  5         g)z6Like _add_callback() but called from a signal handler.N)r  rp  r  s     r   Ú_add_callback_signalsafeÚ&BaseEventLoop._add_callback_signalsafe   s   € à×Ñ˜6Ô"Ø×ÑÕr!   c                 óR   • UR                   (       a  U =R                  S-  sl        gg)z3Notification that a TimerHandle has been cancelled.r   N)r  r  r  s     r   Ú_timer_handle_cancelledÚ%BaseEventLoop._timer_handle_cancelled¥  s!   € à××Ø×'Ò'¨1Ñ,Ö'ð r!   c                 óô  • [        U R                  5      nU[        :”  a{  U R                  U-  [        :”  ad  / nU R                   H.  nUR
                  (       a	  SUl        M  UR                  U5        M0     [        R                  " U5        X l        SU l        OœU R                  (       a‹  U R                  S   R
                  (       am  U =R                  S-  sl        [        R                  " U R                  5      nSUl        U R                  (       a   U R                  S   R
                  (       a  Mm  SnU R                  (       d  U R                  (       a  SnOTU R                  (       aC  U R                  S   R                  U R                  5       -
  nU[        :”  a  [        nOUS:  a  SnU R                  R!                  U5      nU R#                  U5        SnU R                  5       U R$                  -   nU R                  (       au  U R                  S   nUR                  U:¼  a  OU[        R                  " U R                  5      nSUl        U R                  R                  U5        U R                  (       a  Mu  [        U R                  5      n['        U5       HÄ  nU R                  R)                  5       nUR
                  (       a  M0  U R*                  (       as   X0l        U R                  5       n	UR/                  5         U R                  5       U	-
  n
X R0                  :¼  a!  [2        R4                  " S[7        U5      U
5        SU l        M´  UR/                  5         MÆ     Sng! SU l        f = f)zµRun one full iteration of the event loop.

This calls all currently ready callbacks, polls for I/O,
schedules the resulting callbacks, and finally schedules
'call_later' callbacks.
Fr   r   NzExecuting %s took %.3f seconds)rÜ   r  Ú_MIN_SCHEDULED_TIMER_HANDLESr  Ú%_MIN_CANCELLED_TIMER_HANDLES_FRACTIONr  rB   rì  ÚheapifyÚheappopr  r  Ú_whenr  ÚMAXIMUM_SELECT_TIMEOUTÚ	_selectorÚselectrt  r  ÚrangeÚpopleftr¸  r$  Ú_runr#  r   rÍ  r    )r‰   Úsched_countÚnew_scheduledr   r£  rs  Úend_timeÚntodoÚir  r  s              r   rÄ  ÚBaseEventLoop._run_onceª  s“  € ô ˜$Ÿ/™/Ó*ˆØÔ6Ó6Ø×'Ñ'¨+Ñ5Ü5ó6ð ˆMØŸ/œ/�Ø×$×$Ø(-�FÖ%à!×(Ñ(¨Ö0ñ	 *ô �MŠM˜-Ô(Ø+ŒOØ*+ˆDÕ'ð —/—/ d§o¡o°aÑ&8×&C×&CØ×+Ò+¨qÑ0Õ+ÜŸš t§¡Ó7�Ø$)�Ô!ð —/—/ d§o¡o°aÑ&8×&C×&CÑ&Cð
 ˆØ�;�;˜$Ÿ.Ÿ.Ø‰GØ�_�_à—o‘o aÑ(×.Ñ.°·±³Ñ<ˆGØÔ/Ó/Ü0‘Ø˜1“Ø�à—^‘^×*Ñ*¨7Ó3ˆ
Ø×Ñ˜ZÔ(àˆ
ð —9‘9“; ×!7Ñ!7Ñ7ˆØ�o�oØ—_‘_ QÑ'ˆFØ�|‰|˜xÓ'ØÜ—]’] 4§?¡?Ó3ˆFØ %ˆFÔØ�K‰K×Ñ˜vÔ&ð �o�o‰oô �D—K‘KÓ ˆÜ�u–ˆAØ—[‘[×(Ñ(Ó*ˆFØ× × ÙØ�{�{ð	0Ø+1Ô(ØŸ™›�BØ—K‘K”MØŸ™› rÑ)�BØ×8Ñ8Ó8ÜŸšÐ'GÜ'5°fÓ'=¸rôCð ,0�DÖ(à—‘–ñ! ð" ‰øð ,0�DÕ(ús   Ë%A)M.Í.	M7c                 ó"  • [        U5      [        U R                  5      :X  a  g U(       a?  [        R                  " 5       U l        [        R
                  " [        R                  5        O [        R
                  " U R                  5        Xl        g rP   )rz  r&  r¹  Ú#get_coroutine_origin_tracking_depthr'  Ú#set_coroutine_origin_tracking_depthr   ÚDEBUG_STACK_DEPTH©r‰   Úenableds     r   r·  Ú,BaseEventLoop._set_coroutine_origin_trackingý  sk   € Ü�‹=œD ×!HÑ!HÓIÓIØæä×7Ò7Ó9ð Ô7ä×3Ò3Ü×+Ñ+õ-ô ×3Ò3Ø×;Ñ;ô=ð 3:Õ/r!   c                 ó   • U R                   $ rP   )r¸  rž   s    r   r/  ÚBaseEventLoop.get_debug  s   € Ø�{‰{Ðr!   c                 ót   • Xl         U R                  5       (       a  U R                  U R                  U5        g g rP   )r¸  r-  r|  r·  r<  s     r   r   ÚBaseEventLoop.set_debug  s/   € ØŒà�?‰?×ÑØ×%Ñ% d×&IÑ&IÈ7ÕSð r!   )r(  r)  r  r  r&  r'  r$  r¸  r  r  r*  r  r"  r  r  r  r%  r  r  r#  rP   )NNNrŸ  )r   )r   N)FNN)Yr´   rµ   r¶   r·   r‹   rÓ   r‡   r?  rD  rG  rO  rX  r\  ra  rd  rm  rp  rt  r9  ry  r€  rˆ  r—  rª  r¡  r²  r¾  rÁ  rÅ  rÎ  rl   rø   r.  r…  r†  rÛ  r-  r  ræ  râ  rñ  rê  rò  ré  r|  r  r  r  r  r   r-  r'  r)  r&  rW  rv  rr  rƒ  r�  r‚  r“  r¹  r+   r:   rn  r¾  r?   Ú
AI_PASSIVErÙ  rÜ  rá  rå  ré  r#   r$   rø  rý  r   r  r  r’  r  r!  r$  rÄ  r·  r/  r   r¸   rQ   r!   r   r   r   ¡  s   † ò/ò@
ò)ð )-°dõ ò2%ò"ð"Ø%)°$ö"ð 9=ð"à °$Ø˜tØ"&Ø!%Ø!%ö"ð CGô"ð
 @DØ(,ô"ð
 AEØ)-ô"ð 04ô"ò"ò"ò7òDòGò
"òô2ò0DòKò'ò((ò 	(ò$òLò*ò.ð %ŸM™Mô ò-ò ð :>õ ð0 6:õ ð$ 26õ ò&%òò(ð" =Aõ 	ò5ò *ò
ð2 "#¨°!¸1õHô7ðAØ(,öAò.ò/ò4ô*).ðX 59ðQ#à Ø˜1 4Ø¨TØ"&Ø!%Ø!%°$ØöQ#ðj */Ø"&Ø!%ô	#ð8-<Ø#'ö-<ò^1ò"ð4 %*Ø(,Ø.2Ø-1õ	.+ðb EIðD#à./°qÀØ26Ø7;À$ö	D#ðN '(¨f×.@Ñ.@Ø%&¨aõ
Dòð 59ðOð ×#Ñ#Ø×#Ñ#ØØØØØØØ"&Ø!%ØöOðf Ø"&Ø!%õ	#ò<#ò #ò %ð &0§_¡_Ø&0§o¡oØ&0§o¡oØ27Ø%)°1Ø(,°TÀõ"#ðJ %/§O¡O¸J¿O¹OØ%/§_¡_ÈØ$)°1Ø'+°D¸tõ	 #òD'ò
*ò"0>òdH0òT'ò
ò
-ò
Qòf:òõTr!   r   )r   r   )r   )7Ú__doc__rV   Úcollections.abcÚconcurrent.futuresr  rM  rì  r[   r¦  r+   r¤  r#   rŸ  r  r  r¹  r…  r¼   ru   ÚImportErrorr5   r   r   r   r   r   r	   r
   r   r   r   r   r   Úlogr   Ú__all__r'  r(  r*   rA   r,  r    r'   r2   rM   re   ro   rr   rw   ÚProtocolry   ÚAbstractServerr   ÚAbstractEventLoopr   rQ   r!   r   Ú<module>rM     s0  ðñó Û Û Û Û Û Û 	Û Û Û Û Û Û Û 
Û Û ðÛõ Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý ð $€ð
  #Ð ð ),Ð %ñ �F˜JÓ'€	ð #Ð òòòJô8ôvò,"ñ ˆ6�=×!Ñ!óGòò>ô
A) 	× 2Ñ 2ô A)ôHKˆV×"Ñ"ô Kô\rT�F×,Ñ,õ rTøð} ó Ø
‚Cðús   ÁD ÄD ÄD 