ó
    F\h�O  ã                   ó˜  • 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JrJ	r	J
r
JrJrJrJrJrJrJrJrJrJr  \" \\\\\\15      r \  S r " S S\5      r\\\4rS rS r S	 r!S
 r"SS jr#SS jr$\$r%SS jr& " S S5      r' " S S\'5      r(S r)SS jr*\RV                  S:X  a   " S S5      r, " S S\'5      r-gg! \ a    0 r N~f = f)a   Basic infrastructure for asynchronous socket service clients and servers.

There are only two ways to have a program on a single processor do "more
than one thing at a time".  Multi-threaded programming is the simplest and
most popular way to do it, but there is another very different technique,
that lets you have nearly all the advantages of multi-threading, without
actually using multiple threads. it's really only practical if your program
is largely I/O bound. If your program is CPU bound, then pre-emptive
scheduled threads are probably what you really need. Network servers are
rarely CPU-bound, however.

If your operating system supports the select() system call in its I/O
library (and nearly all do), then you can use it to juggle multiple
communication channels at once; doing other work while your I/O is taking
place in the "background."  Although this strategy can seem strange and
complex, especially at first, it is in many ways easier to understand and
control than multi-threaded programming. The module documented here solves
many of the difficult problems for you, making the task of building
sophisticated high-performance network servers and clients a snap.
é    N)ÚEALREADYÚEINPROGRESSÚEWOULDBLOCKÚ
ECONNRESETÚEINVALÚENOTCONNÚ	ESHUTDOWNÚEISCONNÚEBADFÚECONNABORTEDÚEPIPEÚEAGAINÚ	errorcodec                 óš   •  [         R                  " U 5      $ ! [        [        [        4 a    U [
        ;   a  [
        U    s $ SU -  s $ f = f)NzUnknown error %s)ÚosÚstrerrorÚ
ValueErrorÚOverflowErrorÚ	NameErrorr   )Úerrs    Ú,/usr/lib/python3.13/test/support/asyncore.pyÚ	_strerrorr   J   sI   € ð'Ü�{Š{˜3ÓÐøÜœ¤yÐ1ó 'Ø”)ÓÜ˜S‘>Ò!Ø! 3Ñ&Ò&ð'ús   ‚ ˜(A
ÁA
Á	A
c                   ó   • \ rS rSrSrg)ÚExitNowéR   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    r   r   r   R   s   † Úr"   r   c                 óh   •  U R                  5         g ! [         a    e   U R                  5          g = f©N)Úhandle_read_eventÚ_reraised_exceptionsÚhandle_error©Úobjs    r   Úreadr*   W   ó1   € ðØ×ÑÕøÜó ØðØ×ÑÖúó   ‚ “1c                 óh   •  U R                  5         g ! [         a    e   U R                  5          g = fr$   )Úhandle_write_eventr&   r'   r(   s    r   Úwriter/   _   s1   € ðØ×ÑÕ øÜó ØðØ×ÑÖúr,   c                 óh   •  U R                  5         g ! [         a    e   U R                  5          g = fr$   )Úhandle_expt_eventr&   r'   r(   s    r   Ú
_exceptionr2   g   r+   r,   c                 ód  •  U[         R                  -  (       a  U R                  5         U[         R                  -  (       a  U R	                  5         U[         R
                  -  (       a  U R                  5         U[         R                  [         R                  -  [         R                  -  -  (       a  U R                  5         g g ! [         aC  nUR                  [        ;  a  U R                  5          S nAg U R                  5          S nAg S nAf[         a    e   U R                  5          g = fr$   )ÚselectÚPOLLINr%   ÚPOLLOUTr.   ÚPOLLPRIr1   ÚPOLLHUPÚPOLLERRÚPOLLNVALÚhandle_closeÚOSErrorÚerrnoÚ_DISCONNECTEDr'   r&   )r)   ÚflagsÚes      r   Ú	readwriterA   o   sÐ   € ðØ”6—=‘=× Ø×!Ñ!Ô#Ø”6—>‘>×!Ø×"Ñ"Ô$Ø”6—>‘>×!Ø×!Ñ!Ô#Ø”F—N‘N¤V§^¡^Ñ3´f·o±oÑE×FØ×ÑÕð Gøäó Ø�7‰7œ-Ó'Ø×Ñ×Ñà×Ñ×ÑûÜó ØðØ×ÑÖús   ‚CC Ã
D/Ã$DÃ9DÄD/c                 ó  • Uc  [         nU(       Gaq  / n/ n/ n[        UR                  5       5       H‡  u  pVUR                  5       nUR	                  5       nU(       a  UR                  U5        U(       a"  UR                  (       d  UR                  U5        U(       d	  U(       d  Mv  UR                  U5        M‰     / Us=:X  a  Us=:X  a  U:X  a  O  O[        R                  " U 5        g [        R                  " X#X@5      u  p#nU H$  nUR                  U5      nUc  M  [        U5        M&     U H$  nUR                  U5      nUc  M  [        U5        M&     U H$  nUR                  U5      nUc  M  [        U5        M&     g g r$   )Ú
socket_mapÚlistÚitemsÚreadableÚwritableÚappendÚ	acceptingÚtimeÚsleepr4   Úgetr*   r/   r2   )	ÚtimeoutÚmapÚrÚwr@   Úfdr)   Úis_rÚis_ws	            r   ÚpollrT   ƒ   s/  € Ø
�{Üˆß
Øˆ�B�˜B˜Ü˜CŸI™I›KÖ(‰GˆBØ—<‘<“>ˆDØ—<‘<“>ˆDÞØ—‘˜”æ˜CŸMŸMØ—‘˜”Þ—t�tØ—‘˜–ñ )ð �Õ�aÕ˜1ÖÜ�JŠJ�wÔØä—-’-  aÓ1‰ˆˆaãˆBØ—'‘'˜"“+ˆCØ‰{ÙÜ�ŽIñ	 ó ˆBØ—'‘'˜"“+ˆCØ‰{ÙÜ�#ŽJñ	 ó ˆBØ—'‘'˜"“+ˆCØ‰{ÙÜ�sŽOò	 ð= r"   c                 óL  • Uc  [         nU b  [        U S-  5      n [        R                  " 5       nU(       aî  [	        UR                  5       5       H“  u  p4SnUR                  5       (       a$  U[        R                  [        R                  -  -  nUR                  5       (       a$  UR                  (       d  U[        R                  -  nU(       d  M‚  UR                  X55        M•     UR                  U 5      nU H&  u  p5UR                  U5      nUc  M  [        XE5        M(     g g )Niè  r   )rC   Úintr4   rT   rD   rE   rF   r5   r7   rG   rI   r6   ÚregisterrL   rA   )rM   rN   ÚpollsterrQ   r)   r?   rO   s          r   Úpoll2rY   ª   sÜ   € à
�{ÜˆØÑä�g˜d‘lÓ#ˆÜ�{Š{‹}€HÞ
Ü˜CŸI™I›KÖ(‰GˆBØˆEØ�|‰|�~‰~ØœŸ™¬¯©Ñ7Ñ7�à�|‰|�~‰~ c§m§mØœŸ™Ñ'�ßˆuØ×!Ñ! "Ö,ñ )ð �M‰M˜'Ó"ˆÛ‰IˆBØ—'‘'˜"“+ˆCØ‰{ÙÜ�cÖ!ò	 ð r"   c                 óú   • Uc  [         nU(       a  [        [        S5      (       a  [        nO[        nUc  U(       a  U" X5        U(       a  M  g g U(       a%  US:”  a  U" X5        US-
  nU(       a	  US:”  a  M  g g g g )NrT   r   é   )rC   Úhasattrr4   rY   rT   )rM   Úuse_pollrN   ÚcountÚpoll_funs        r   Úloopr`   Æ   si   € Ø
�{Üˆæ”GœF F×+Ñ+Ü‰äˆà�}ÞÙ�WÔ"÷ Šcö �e˜a“iÙ�WÔ"Ø˜A‘IˆEö �e˜a–iˆc�iˆcr"   c                   ó6  • \ rS rSrSrSrSrSrSrSr	\
" S15      rS$S jrS rS%S jrS%S jr\R"                  \R$                  4S	 jrS%S
 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&S 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,S#r-g)'Ú
dispatcheréØ   FNÚwarningc                 ól  • Uc  [         U l        OX l        S U l        U(       a@  UR                  S5        U R	                  X5        SU l         UR                  5       U l        g S U l        g ! [         a=  nUR                  [        [        4;   a  SU l         S nAg U R                  U5        e S nAff = f)NFT)rC   Ú_mapÚ_filenoÚsetblockingÚ
set_socketÚ	connectedÚgetpeernameÚaddrr<   r=   r   r   Údel_channelÚsocket)ÚselfÚsockrN   r   s       r   Ú__init__Údispatcher.__init__â   sŸ   € Ø‰;Ü"ˆD�IàŒIàˆŒæð ×Ñ˜UÔ#Ø�O‰O˜DÔ&Ø!ˆDŒNðØ ×,Ñ,Ó.�•	ð ˆD�Køô ó 
Ø—9‘9¤¬6Ð 2Ó2ð &+�D—N‘Nð
 ×$Ñ$ SÔ)Øûð
ús   ÁA, Á,
B3Á6!B.ÂB.Â.B3c                 ó  • U R                   R                  S-   U R                   R                  -   /nU R                  (       a#  U R                  (       a  UR                  S5        O"U R                  (       a  UR                  S5        U R                  b   UR                  SU R                  -  5        SSR                  U5      [        U 5      4-  $ ! [         a'    UR                  [        U R                  5      5         NOf = f)NÚ.Ú	listeningrj   z%s:%dz<%s at %#x>Ú )Ú	__class__r   r   rI   rl   rH   rj   Ú	TypeErrorÚreprÚjoinÚid)ro   Ústatuss     r   Ú__repr__Údispatcher.__repr__  s¼   € Ø—.‘.×+Ñ+¨CÑ/°·±×0KÑ0KÑKÐLˆØ�>�>˜dŸiŸiØ�M‰M˜+Õ&Ø�^�^Ø�M‰M˜+Ô&Ø�9‰9Ñ ð/Ø—‘˜g¨¯	©	Ñ1Ô2ð  §¡¨Ó 0´"°T³(Ð;Ñ;Ð;øô ó /Ø—‘œd 4§9¡9›oÖ.ð/ús   ÂC Ã.DÄDc                 ó>   • Uc  U R                   nXU R                  '   g r$   )rf   rg   )ro   rN   s     r   Úadd_channelÚdispatcher.add_channel  s   € à‰;Ø—)‘)ˆCØ ˆD�L‰LÒr"   c                 óV   • U R                   nUc  U R                  nX!;   a  X	 S U l         g r$   )rg   rf   )ro   rN   rQ   s      r   rm   Údispatcher.del_channel  s*   € Ø�\‰\ˆØ‰;Ø—)‘)ˆCØ‹9à�Øˆ�r"   c                 ó„   • X4U l         [        R                  " X5      nUR                  S5        U R                  U5        g ©NF)Úfamily_and_typern   rh   ri   )ro   ÚfamilyÚtyperp   s       r   Úcreate_socketÚdispatcher.create_socket  s4   € Ø%˜|ˆÔÜ�}Š}˜VÓ*ˆØ×Ñ˜ÔØ�‰˜Õr"   c                 ó\   • Xl         UR                  5       U l        U R                  U5        g r$   )rn   Úfilenorg   r€   ©ro   rp   rN   s      r   ri   Údispatcher.set_socket$  s"   € ØŒØ—{‘{“}ˆŒØ×Ñ˜Õr"   c                 ó
  •  U R                   R                  [         R                  [         R                  U R                   R	                  [         R                  [         R                  5      S-  5        g ! [
         a     g f = f)Nr[   )rn   Ú
setsockoptÚ
SOL_SOCKETÚSO_REUSEADDRÚ
getsockoptr<   ©ro   s    r   Úset_reuse_addrÚdispatcher.set_reuse_addr)  sj   € ð	Ø�K‰K×"Ñ"Ü×!Ñ!¤6×#6Ñ#6Ø—‘×&Ñ&¤v×'8Ñ'8Ü'-×':Ñ':ó<Ø>?ñ@õøô
 ó 	Ùð	ús   ‚A2A5 Á5
BÂBc                 ó   • g©NTr   r”   s    r   rF   Údispatcher.readable:  ó   € Ør"   c                 ó   • gr˜   r   r”   s    r   rG   Údispatcher.writable=  rš   r"   c                 ó~   • SU l         [        R                  S:X  a  US:”  a  SnU R                  R	                  U5      $ )NTÚnté   )rI   r   Únamern   Úlisten)ro   Únums     r   r¡   Údispatcher.listenD  s4   € ØˆŒÜ�7‰7�d‹?˜s Q›wØˆCØ�{‰{×!Ñ! #Ó&Ð&r"   c                 óD   • Xl         U R                  R                  U5      $ r$   )rl   rn   Úbind)ro   rl   s     r   r¥   Údispatcher.bindJ  s   € ØŒ	Ø�{‰{×Ñ Ó%Ð%r"   c                 ó4  • SU l         SU l        U R                  R                  U5      nU[        [
        [        4;   d  U[        :X  a  [        R                  S:X  a  Xl
        g US[        4;   a  Xl
        U R                  5         g [        U[        U   5      e)NFTrž   r   )rj   Ú
connectingrn   Ú
connect_exr   r   r   r   r   r    rl   r
   Úhandle_connect_eventr<   r   )ro   Úaddressr   s      r   ÚconnectÚdispatcher.connectN  sz   € ØˆŒØˆŒØ�k‰k×$Ñ$ WÓ-ˆØ”;¤¬+Ð6Ó6Ø”&‹=œRŸW™W¨›_ØŒIØØ�1”g�,ÓØŒIØ×%Ñ%Õ'ä˜#œy¨™~Ó.Ð.r"   c                 óÆ   •  U R                   R                  5       u  pX4$ ! [         a     g [         a*  nUR                  [
        [        [        4;   a   S nAg e S nAff = fr$   )rn   Úacceptrx   r<   r=   r   r   r   )ro   Úconnrl   Úwhys       r   r¯   Údispatcher.accept\  s[   € ð
	ØŸ™×+Ñ+Ó-‰JˆDð �:Ðøô ó 	ÙÜó 	Ø�y‰yœ[¬,¼Ð?Ó?Üàûð		ús   ‚! ¡
A ­	A ¶AÁAÁA c                 óè   •  U R                   R                  U5      nU$ ! [         aH  nUR                  [        :X  a   S nAgUR                  [
        ;   a  U R                  5          S nAge S nAff = f©Nr   )rn   Úsendr<   r=   r   r>   r;   )ro   ÚdataÚresultr±   s       r   rµ   Údispatcher.sendj  s]   € ð
	Ø—[‘[×%Ñ% dÓ+ˆFØˆMøÜó 	Ø�y‰yœKÓ'ÜØ—‘œmÓ+Ø×!Ñ!Ô#Üàûð	ús    ‚ Ÿ
A1©A,Á$A,Á+A,Á,A1c                 óæ   •  U R                   R                  U5      nU(       d  U R                  5         gU$ ! [         a/  nUR                  [
        ;   a  U R                  5          S nAge S nAff = f©Nr"   )rn   Úrecvr;   r<   r=   r>   )ro   Úbuffer_sizer¶   r±   s       r   r»   Údispatcher.recvw  sb   € ð	Ø—;‘;×#Ñ# KÓ0ˆDÞð ×!Ñ!Ô#Øà�øÜó 	à�y‰yœMÓ)Ø×!Ñ!Ô#Üàûð	ús   ‚27 µ7 ·
A0Á$A+Á*A+Á+A0c                 ó  • SU l         SU l        SU l        U R                  5         U R                  b   U R                  R                  5         g g ! [         a%  nUR                  [        [        4;  a  e  S nAg S nAff = fr…   )
rj   rI   r¨   rm   rn   Úcloser<   r=   r   r   )ro   r±   s     r   r¿   Údispatcher.close‰  sr   € ØˆŒØˆŒØˆŒØ×ÑÔØ�;‰;Ñ"ðØ—‘×!Ñ!Õ#ð #øô ó Ø—9‘9¤X¬uÐ$5Ó5Øô 6ûðús   ´A Á
A?ÁA:Á:A?c                 óZ   • [         R                  R                  S[        U5      -  5        g )Nzlog: %s
)ÚsysÚstderrr/   Ústr)ro   Úmessages     r   ÚlogÚdispatcher.log™  s   € Ü�
‰
×Ñ˜¤s¨7£|Ñ3Õ4r"   c                 óH   • X R                   ;  a  [        U< SU< 35        g g )Nz: )Úignore_log_typesÚprint)ro   rÅ   rˆ   s      r   Úlog_infoÚdispatcher.log_infoœ  s    € Ø×,Ñ,Ó,Ü›d¢GÐ,Õ-ð -r"   c                 óî   • U R                   (       a  U R                  5         g U R                  (       d2  U R                  (       a  U R	                  5         U R                  5         g U R                  5         g r$   )rI   Úhandle_acceptrj   r¨   rª   Úhandle_readr”   s    r   r%   Údispatcher.handle_read_event   sI   € Ø�>�>ð ×ÑÕ Ø——Ø��Ø×)Ñ)Ô+Ø×ÑÕà×ÑÕr"   c                 óæ   • U R                   R                  [         R                  [         R                  5      nUS:w  a  [	        U[        U5      5      eU R                  5         SU l        SU l        g )Nr   TF)	rn   r“   r‘   ÚSO_ERRORr<   r   Úhandle_connectrj   r¨   ©ro   r   s     r   rª   Údispatcher.handle_connect_event¬  sT   € Ø�k‰k×$Ñ$¤V×%6Ñ%6¼¿¹ÓHˆØ�!‹8Ü˜#œy¨›~Ó.Ð.Ø×ÑÔØˆŒØˆ�r"   c                 ó¬   • U R                   (       a  g U R                  (       d!  U R                  (       a  U R                  5         U R	                  5         g r$   )rI   rj   r¨   rª   Úhandle_writer”   s    r   r.   Údispatcher.handle_write_event´  s4   € Ø�>�>ð à�~�~Ø��Ø×)Ñ)Ô+Ø×ÑÕr"   c                 óÂ   • U R                   R                  [         R                  [         R                  5      nUS:w  a  U R	                  5         g U R                  5         g r´   )rn   r“   r‘   rÒ   r;   Úhandle_exptrÔ   s     r   r1   Údispatcher.handle_expt_event¿  sE   € ð �k‰k×$Ñ$¤V×%6Ñ%6¼¿¹ÓHˆØ�!‹8ð ×ÑÕà×ÑÕr"   c                 óÆ   • [        5       u  pp4 [        U 5      nU R                  SU< SU< SU< SU< S3	S5        U R	                  5         g !   S[        U 5      -  n NF= f)Nz)<__repr__(self) failed for object at %0x>z-uncaptured python exception, closing channel z (Ú:rv   Ú)Úerror)Úcompact_tracebackry   r{   rË   r;   )ro   ÚnilÚtÚvÚtbinfoÚ	self_reprs         r   r'   Údispatcher.handle_errorÎ  sf   € Ü-Ó/Ñˆ�ð	OÜ˜T›
ˆIð 	�ŠãÛÛÛð	ð ô	ð 	×ÑÕøð	OØCÄbÈÃhÑNŠIús   �A ÁA c                 ó(   • U R                  SS5        g )Nz!unhandled incoming priority eventrd   ©rË   r”   s    r   rÚ   Údispatcher.handle_exptâ  s   € Ø�‰Ð9¸9ÕEr"   c                 ó(   • U R                  SS5        g )Nzunhandled read eventrd   rè   r”   s    r   rÏ   Údispatcher.handle_readå  s   € Ø�‰Ð,¨iÕ8r"   c                 ó(   • U R                  SS5        g )Nzunhandled write eventrd   rè   r”   s    r   r×   Údispatcher.handle_writeè  s   € Ø�‰Ð-¨yÕ9r"   c                 ó(   • U R                  SS5        g )Nzunhandled connect eventrd   rè   r”   s    r   rÓ   Údispatcher.handle_connectë  s   € Ø�‰Ð/°Õ;r"   c                 óJ   • U R                  5       nUb  U R                  " U6   g g r$   )r¯   Úhandle_accepted)ro   Úpairs     r   rÎ   Údispatcher.handle_acceptî  s&   € Ø�{‰{‹}ˆØÑØ× Ò  $Ò'ð r"   c                 óH   • UR                  5         U R                  SS5        g )Nzunhandled accepted eventrd   )r¿   rË   )ro   rp   rl   s      r   rñ   Údispatcher.handle_acceptedó  s   € Ø�
‰
ŒØ�‰Ð0°)Õ<r"   c                 óH   • U R                  SS5        U R                  5         g )Nzunhandled close eventrd   )rË   r¿   r”   s    r   r;   Údispatcher.handle_close÷  s   € Ø�‰Ð-¨yÔ9Ø�
‰
�r"   )rg   rf   rI   rl   rj   r¨   r†   rn   ©NNr$   )Úinfo).r   r   r   r    Údebugrj   rI   r¨   Úclosingrl   Ú	frozensetrÉ   rq   r}   r€   rm   rn   ÚAF_INETÚSOCK_STREAMr‰   ri   r•   rF   rG   r¡   r¥   r¬   r¯   rµ   r»   r¿   rÆ   rË   r%   rª   r.   r1   r'   rÚ   rÏ   r×   rÓ   rÎ   rñ   r;   r!   r   r"   r   rb   rb   Ø   sÖ   † à€EØ€IØ€IØ€JØ€GØ€DÙ  ) Ó-Ðôò@<ô!ôð $*§>¡>¸×8JÑ8Jô ôò
	ò"òò'ò&ò/òòòò$
ò 5ô.ò
ò ò	òòò(Fò9ò:ò<ò(ò
=õr"   rb   c                   ó6   • \ rS rSrS	S jrS rS rS rS rSr	g)
Údispatcher_with_sendi   Nc                 ó>   • [         R                  XU5        SU l        g rº   )rb   rq   Ú
out_bufferr�   s      r   rq   Údispatcher_with_send.__init__  s   € Ü×Ñ˜D¨Ô,Øˆ�r"   c                 ót   • Sn[         R                  X R                  S S 5      nU R                  US  U l        g )Nr   i   )rb   rµ   r  )ro   Únum_sents     r   Úinitiate_sendÚ"dispatcher_with_send.initiate_send  s2   € ØˆÜ—?‘? 4¯©¸¸%Ð)@ÓAˆØŸ/™/¨(¨)Ð4ˆ�r"   c                 ó$   • U R                  5         g r$   )r  r”   s    r   r×   Ú!dispatcher_with_send.handle_write  s   € Ø×ÑÕr"   c                 ó\   • U R                   (       + =(       d    [        U R                  5      $ r$   )rj   Úlenr  r”   s    r   rG   Údispatcher_with_send.writable  s   € Ø—N‘NÔ"×;¤s¨4¯?©?Ó';Ð;r"   c                 ó¨   • U R                   (       a  U R                  S[        U5      -  5        U R                  U-   U l        U R	                  5         g )Nz
sending %s)rú   rË   ry   r  r  )ro   r¶   s     r   rµ   Údispatcher_with_send.send  s:   € Ø�:�:Ø�M‰M˜,¬¨d«Ñ3Ô4ØŸ/™/¨DÑ0ˆŒØ×ÑÕr"   )r  rø   )
r   r   r   r    rq   r  r×   rG   rµ   r!   r   r"   r   r   r      s   † ôò5ò
ò<õr"   r   c                  óð  • [         R                  " 5       n U R                  nU(       d  [        S5      e/ nU(       ax  UR	                  UR
                  R                  R                  UR
                  R                  R                  [        UR                  5      45        UR                  nU(       a  Mx  AUS   u  p4nSR                  U Vs/ s H  nSU-  PM
     sn5      nX4U4[        U 5      X4$ s  snf )Nztraceback does not existéÿÿÿÿrv   z
[%s|%s|%s])rÂ   Ú	exceptionÚ__traceback__ÚAssertionErrorrH   Útb_frameÚf_codeÚco_filenameÚco_namerÄ   Ú	tb_linenoÚtb_nextrz   rˆ   )ÚexcÚtbrä   ÚfileÚfunctionÚlineÚxrù   s           r   rà   rà     sÔ   € Ü
�-Š-‹/€CØ	×	Ñ	€BÞÜÐ7Ó8Ð8Ø€FÞ
Ø�‰Ø�K‰K×Ñ×*Ñ*Ø�K‰K×Ñ×&Ñ&Ü�—‘Óðô 	ð
 �Z‰Zˆ÷ ˆ"ð 	à! "™:Ñ€D�DØ�8‰8©vÓ6ªv¨!�\ AÔ%©vÑ6Ó7€DØ˜DÐ!¤4¨£9¨cÐ7Ð7ùò 7s   ÃC3c                 ó6  • U c  [         n [        U R                  5       5       H  n UR                  5         M     U R                  5         g ! [         a-  nUR
                  [        :X  a   S nAMM  U(       d  e  S nAM[  S nAf[         a    e   U(       d  e  Mu  = fr$   )	rC   rD   Úvaluesr¿   r<   r=   r   r&   Úclear)rN   Ú
ignore_allr  s      r   Ú	close_allr$  0  s|   € Ø
�{ÜˆÜ�#—*‘*“,Öˆð	Ø�G‰GŽIñ  ð ‡I�I…Køô ó 	Ø�w‰wœ%ÓÝÞØõ  ûä#ó 	Øð	ÞØò ús   §AÁ
BÁA>Á0A>Á>BÚposixc                   óJ   • \ rS rSrS rS rS rS rSS jr\r	\r
S rS	 rS
rg)Úfile_wrapperiP  c                 ó:   • [         R                  " U5      U l        g r$   )r   ÚduprQ   ©ro   rQ   s     r   rq   Úfile_wrapper.__init__U  s   € Ü—f’f˜R“jˆD�Gr"   c                 ó~   • U R                   S:¼  a  [        R                  " SU -  [        U S9  U R	                  5         g )Nr   zunclosed file %r)Úsource)rQ   ÚwarningsÚwarnÚResourceWarningr¿   r”   s    r   Ú__del__Úfile_wrapper.__del__X  s/   € Ø�w‰w˜!‹|Ü—’Ð0°4Ñ7¼Ø%)ò+à�J‰J�Lr"   c                 óD   • [         R                  " U R                  /UQ76 $ r$   )r   r*   rQ   ©ro   Úargss     r   r»   Úfile_wrapper.recv^  s   € Ü—7’7˜4Ÿ7™7Ð* TÒ*Ð*r"   c                 óD   • [         R                  " U R                  /UQ76 $ r$   )r   r/   rQ   r4  s     r   rµ   Úfile_wrapper.senda  s   € Ü—8’8˜DŸG™GÐ+ dÒ+Ð+r"   Nc                 óx   • U[         R                  :X  a  U[         R                  :X  a  U(       d  g[        S5      e)Nr   z-Only asyncore specific behaviour implemented.)rn   r‘   rÒ   ÚNotImplementedError)ro   ÚlevelÚoptnameÚbuflens       r   r“   Úfile_wrapper.getsockoptd  s4   € Øœ×*Ñ*Ó*Øœ6Ÿ?™?Ó*ÞØÜ%ð '5ó 6ð 6r"   c                 óx   • U R                   S:  a  g U R                   nSU l         [        R                  " U5        g )Nr   r  )rQ   r   r¿   r*  s     r   r¿   Úfile_wrapper.closeo  s+   € Ø�w‰w˜‹{ØØ—‘ˆBØˆDŒGÜ�HŠH�R�Lr"   c                 ó   • U R                   $ r$   ©rQ   r”   s    r   rŒ   Úfile_wrapper.filenov  s   € Ø—7‘7ˆNr"   rB  r$   )r   r   r   r    rq   r1  r»   rµ   r“   r*   r/   r¿   rŒ   r!   r   r"   r   r'  r'  P  s1   † ò
	!ò	ò	+ò	,ô	6ð ˆØˆò	õ	r"   r'  c                   ó$   • \ rS rSrSS jrS rSrg)Úfile_dispatcheriy  Nc                 óÒ   • [         R                  U S U5        SU l         UR                  5       nU R                  U5        [        R                  " US5        g ! [         a     N5f = f)NTF)rb   rq   rj   rŒ   ÚAttributeErrorÚset_filer   Úset_blocking)ro   rQ   rN   s      r   rq   Úfile_dispatcher.__init__{  s[   € Ü×Ñ  d¨CÔ0Ø!ˆDŒNðØ—Y‘Y“[�ð �M‰M˜"Ôä�OŠO˜B Õ&øô	 "ó Ùðús    A Á
A&Á%A&c                 ó‚   • [        U5      U l        U R                  R                  5       U l        U R	                  5         g r$   )r'  rn   rŒ   rg   r€   r*  s     r   rH  Úfile_dispatcher.set_file†  s.   € Ü& rÓ*ˆDŒKØŸ;™;×-Ñ-Ó/ˆDŒLØ×ÑÕr"   )rg   rj   rn   r$   )r   r   r   r    rq   rH  r!   r   r"   r   rE  rE  y  s   † ô		'õ	r"   rE  )g        N)g      >@FNNr…   ).Ú__doc__r4   rn   rÂ   rJ   r.  r   r=   r   r   r   r   r   r   r	   r
   r   r   r   r   r   rü   r>   rC   r   r   Ú	Exceptionr   ÚKeyboardInterruptÚ
SystemExitr&   r*   r/   r2   rA   rT   rY   Úpoll3r`   rb   r   rà   r$  r    r'  rE  r   r"   r   Ú<module>rR     s
  ðñBó* Û Û 
Û Û ã 	÷÷ ÷ õ ñ
 ˜: x°¸LÈ%Ø ð"ó #€ðÙò'ô	ˆiô 	ð  Ð!2°JÐ?Ð òòòòô(%ôN"ð4 	€ô÷$añ aôP	˜:ô ò68ô*ð> ‡7�7ˆgÓ÷'ñ 'ôR˜*õ ðU øðQ ó Ø‚Jðús   ÁB> Â>C	ÃC	