ó
    Ö›‘h(T  ã                  ó  • S r SSKJr  SSKrSSKrSSKJr  SSKJrJ	r	  SSK
JrJrJr  SSKJ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  SS	KJrJr  SS
KJ r   SSK!J"r"J#r#  SSK$J%r%J&r&  SSK'J(r(J)r)J*r*J+r+J,r,  \RZ                  " S5      r. SSK/J0r1  \1r0 SSK
J3r4  \4r3\&S:H  r5Sr6\5(       a
  SSK
J7r7J8r8  Sr6\%Rr                  " 5       (       a   SSK:r:Sr6 " S S5      r;\	" \\\5       " S S\;\5      5       r< " S S5      r=\	" \5       " S S\=\;5      5       r>\0c  \3b	  \" \<\5        \5(       a
  \" \<\\5        \6(       a	  \" \<\5        \?" \SS5      b	  \" \<\5        S/r@g! \2 a    Sr0 NÔf = f! \2 a    Sr3 NÙf = f! \2 a    Sr: N²f = f)z
Posix reactor base class
é    )ÚannotationsN)ÚSequence)ÚclassImplementsÚimplementer)ÚerrorÚtcpÚudp)ÚReactorBase)Ú
IConnectorÚIHalfCloseableDescriptorÚIReactorFDSetÚIReactorMulticastÚIReactorProcessÚIReactorSocketÚIReactorSSLÚIReactorTCPÚIReactorUDPÚIReactorUNIXÚIReactorUNIXDatagram)ÚCONNECTION_DONEÚCONNECTION_LOST)ÚClientFactory)ÚfailureÚlog)ÚplatformÚplatformTypeé   )ÚSignalHandlingÚ_ChildSignalHandlingÚ_IWakerÚ_MultiSignalHandlingÚ_WakerzFile descriptor lost)Útls)ÚsslÚposixF)ÚprocessÚunixTc                  óÐ   • \ rS rSrSr\R                  \R                  " \R                  " 5       5      \R                  \R                  " \R                  " 5       5      04S jr
Srg)Ú_DisconnectSelectableMixinéP   z6
Mixin providing the C{_disconnectSelectable} method.
c                óÀ  • U R                  U5        UR                  UR                  5      nU(       au  U(       aK  UR                  [        R                  :X  a-  [
        R                  " U5      (       a  UR                  U5        gU R                  U5        UR                  U5        gU R                  U5        UR                  [        R                  " U5      5        g)zŸ
Utility function for disconnecting a selectable.

Supports half-close notification, isRead should be boolean indicating
whether error resulted from doRead().
N)ÚremoveReaderÚgetÚ	__class__r   ÚConnectionDoner   Ú
providedByÚreadConnectionLostÚremoveWriterÚconnectionLostr   ÚFailure)ÚselfÚ
selectableÚwhyÚisReadÚfaildictÚfs         Ú^C:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/internet/posixbase.pyÚ_disconnectSelectableÚ0_DisconnectSelectableMixin._disconnectSelectableU   sœ   € ð  	×Ñ˜*Ô%Ø�L‰L˜Ÿ™Ó'ˆÞæØ—M‘M¤U×%9Ñ%9Ó9Ü,×7Ò7¸
×CÑCà×-Ñ-¨aÕ0à×!Ñ! *Ô-Ø×)Ñ)¨!Õ,à×Ñ˜jÔ)Ø×%Ñ%¤g§o¢o°cÓ&:Õ;ó    © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r/   r   r4   ÚConnectionLostr<   Ú__static_attributes__r?   r>   r;   r)   r)   P   sM   † ñð × Ñ  '§/¢/°%×2FÒ2FÓ2HÓ"IØ× Ñ  '§/¢/°%×2FÒ2FÓ2HÓ"Ið
÷<r>   r)   c                  ó”  ^ • \ rS rSr% SrSrSS jrS rSU 4S jjrS0 SSSSS4S	 jr	SS
 jr
 SS jrSS jrS S jrS!S jr S"S jr\(       a)  \R$                  \R&                  \R(                  4rS\S'   O\R$                  \R&                  4rS rS r S#S jrS$S jr  S%           S&S jjr S'S jrS$S jrS rSrU =r $ )(ÚPosixReactorBaseév   z´
A basis for reactors that use file descriptors.

@ivar _childWaker: L{None} or a reference to the L{_SIGCHLDWaker}
    which is used to properly notice child process termination.
Nc                ó   • [        5       $ ©N)r"   ©r5   s    r;   Ú_wakerFactoryÚPosixReactorBase._wakerFactoryƒ   s	   € Ü‹xˆr>   c                óÒ   • U R                   (       dV  U R                  5       U l         U R                  R                  U R                   5        U R	                  U R                   5        gg)zÅ
Install a `waker' to allow threads and signals to wake up the IO thread.

We use the self-pipe trick (http://cr.yp.to/docs/selfpipe.html) to wake
the reactor. On Windows we use a pair of sockets.
N)ÚwakerrM   Ú_internalReadersÚaddÚ	addReaderrL   s    r;   ÚinstallWakerÚPosixReactorBase.installWaker†   sH   € ð �z�zØ×+Ñ+Ó-ˆDŒJØ×!Ñ!×%Ñ% d§j¡jÔ1Ø�N‰N˜4Ÿ:™:Õ&ð r>   c                óŽ   >• [         TU ]  5       n[        S:X  a+  [        U[	        U R
                  U R                  5      45      $ U$ )zR
Customize reactor signal handling to support child processes on POSIX
platforms.
r%   )ÚsuperÚ_signalsFactoryr   r!   r   Ú_addInternalReaderÚ_removeInternalReader)r5   ÚbaseHandlingr.   s     €r;   rX   Ú PosixReactorBase._signalsFactory’   sS   ø€ ô
 ‘wÑ.Ó0ˆä˜7Ó"ä'ð !ä(Ø×/Ñ/Ø×2Ñ2óð	ó
ð 
ð Ðr>   r?   r   c
                ó¦  • [         S:X  aM  U(       a(  U	b  [        S5      e[        R                  " XX4XQXgU5	      $ [        R                  " U UUUUUUUU	5	      $ [         S:X  af  Ub  [        S5      eUb  [        S5      eU(       a  [        S5      eU	(       a  [        S5      e[
        (       a  SS	KJn
  U
" XX#XE5      $ [        S
5      e[        S5      e)Nr%   z1Using childFDs is not supported with usePTY=True.Úwin32z,Setting UID is unsupported on this platform.z,Setting GID is unsupported on this platform.z1The usePTY parameter is not supported on Windows.z1Customizing childFDs is not supported on Windows.r   )ÚProcessz:spawnProcess not available since pywin32 is not installed.z0spawnProcess only available on Windows or POSIX.)r   Ú
ValueErrorr&   Ú
PTYProcessr_   Úwin32processÚtwisted.internet._dumbwin32procÚNotImplementedError)r5   ÚprocessProtocolÚ
executableÚargsÚenvÚpathÚuidÚgidÚusePTYÚchildFDsr_   s              r;   ÚspawnProcessÚPosixReactorBase.spawnProcess¬   s÷   € ô ˜7Ó"ÞØÑ'Ü$ØKóð ô ×)Ò)Ø d°ÈÐRXóð ô —’ØØØØØØ#ØØØó
ð 
ô ˜WÓ$Ø‰Ü Ð!OÓPÐPØ‰Ü Ð!OÓPÐPÞÜ Ð!TÓUÐUÞÜ Ð!TÓUÐUçŠ|ÝCá˜t°jÈÓRÐRä)ØPóð ô &ØBóð r>   c                óV   • [         R                  " XX4U 5      nUR                  5         U$ )zwConnects a given L{DatagramProtocol} to the given numeric UDP port.

@returns: object conforming to L{IListeningPort}.
)r	   ÚPortÚstartListening)r5   ÚportÚprotocolÚ	interfaceÚmaxPacketSizeÚps         r;   Ú	listenUDPÚPosixReactorBase.listenUDPæ   s'   € ô
 �HŠH�T Y¸tÓDˆØ	×ÑÔØˆr>   c                óV   • [         R                  " XX4X5      nUR                  5         U$ )z€Connects a given DatagramProtocol to the given numeric UDP port.

EXPERIMENTAL.

@returns: object conforming to IListeningPort.
)r	   ÚMulticastPortrr   )r5   rs   rt   ru   rv   ÚlistenMultiplerw   s          r;   ÚlistenMulticastÚ PosixReactorBase.listenMulticastñ   s.   € ô ×ÒØ˜I°dó
ˆð 	
×ÑÔØˆr>   c                óz   • [         (       d   S5       e[        R                  " XX0U5      nUR                  5         U$ ©NúUNIX support is not present)ÚunixEnabledr'   Ú	ConnectorÚconnect)r5   ÚaddressÚfactoryÚtimeoutÚcheckPIDÚcs         r;   ÚconnectUNIXÚPosixReactorBase.connectUNIX  s2   € ßŠ{Ð9Ð9Ó9ˆ{Ü�NŠN˜7¨W¸HÓEˆØ	�	‰	ŒØˆr>   c                óz   • [         (       d   S5       e[        R                  " XX4X5      nUR                  5         U$ r€   )r‚   r'   rq   rr   )r5   r…   r†   ÚbacklogÚmodeÚwantPIDrw   s          r;   Ú
listenUNIXÚPosixReactorBase.listenUNIX  s5   € ßŠ{Ð9Ð9Ó9ˆ{Ü�IŠI�g¨°tÓEˆØ	×ÑÔØˆr>   c                óz   • [         (       d   S5       e[        R                  " XX4U 5      nUR                  5         U$ )z{
Connects a given L{DatagramProtocol} to the given path.

EXPERIMENTAL.

@returns: object conforming to L{IListeningPort}.
r�   )r‚   r'   ÚDatagramPortrr   )r5   r…   rt   rv   rŽ   rw   s         r;   ÚlistenUNIXDatagramÚ#PosixReactorBase.listenUNIXDatagram  s9   € ÷ Š{Ð9Ð9Ó9ˆ{Ü×Ò˜g°ÀdÓKˆØ	×ÑÔØˆr>   c                óz   • [         (       d   S5       e[        R                  " XX4XP5      nUR                  5         U$ )zL
Connects a L{ConnectedDatagramProtocol} instance to a path.

EXPERIMENTAL.
r�   )r‚   r'   ÚConnectedDatagramPortrr   )r5   r…   rt   rv   rŽ   ÚbindAddressrw   s          r;   ÚconnectUNIXDatagramÚ$PosixReactorBase.connectUNIXDatagram  s>   € ÷ Š{Ð9Ð9Ó9ˆ{Ü×&Ò&Ø˜}°Kó
ˆð 	
×ÑÔØˆr>   zSequence[socket.AddressFamily]Ú_supportedAddressFamiliesc                ó0  • X R                   ;  a  [        R                  " U5      e[        (       a5  U[        R
                  :X  a!  [        R                  R                  XU5      nO [        R                  R                  XX#5      nUR                  5         U$ )a  
Create a new L{IListeningPort} from an already-initialized socket.

This just dispatches to a suitable port implementation (eg from
L{IReactorTCP}, etc) based on the specified C{addressFamily}.

@see: L{twisted.internet.interfaces.IReactorSocket.adoptStreamPort}
)r›   r   ÚUnsupportedAddressFamilyr‚   ÚsocketÚAF_UNIXr'   rq   Ú_fromListeningDescriptorr   rr   )r5   ÚfileDescriptorÚaddressFamilyr†   rw   s        r;   ÚadoptStreamPortÚ PosixReactorBase.adoptStreamPort:  ss   € ð × >Ñ >Ó>Ü×0Ò0°Ó?Ð?çŠ;˜=¬F¯N©NÓ:Ü—	‘	×2Ñ2°4ÈÓQ‰Aä—‘×1Ñ1Ø móˆAð 	
×ÑÔØˆr>   c                ó
  • X R                   ;  a  [        R                  " U5      e[        (       a4  U[        R
                  :X  a   [        R                  R                  XU 5      $ [        R                  R                  XX05      $ )zO
@see:
    L{twisted.internet.interfaces.IReactorSocket.adoptStreamConnection}
)
r›   r   r�   r‚   rž   rŸ   r'   ÚServerÚ_fromConnectedSocketr   )r5   r¡   r¢   r†   s       r;   ÚadoptStreamConnectionÚ&PosixReactorBase.adoptStreamConnectionO  sd   € ð
 × >Ñ >Ó>Ü×0Ò0°Ó?Ð?çŠ;˜=¬F¯N©NÓ:Ü—;‘;×3Ñ3°NÈTÓRÐRä—:‘:×2Ñ2Ø¨wóð r>   c                óØ   • U[         R                  [         R                  4;  a  [        R                  " U5      e[
        R                  R                  XX#US9nUR                  5         U$ )N)rv   )	rž   ÚAF_INETÚAF_INET6r   r�   r	   rq   r    rr   )r5   r¡   r¢   rt   rv   rw   s         r;   ÚadoptDatagramPortÚ"PosixReactorBase.adoptDatagramPort^  s]   € ð ¤§¡´·±Ð AÓAÜ×0Ò0°Ó?Ð?ä�H‰H×-Ñ-Ø -Èð .ð 
ˆð 	
×ÑÔØˆr>   c                óV   • [         R                  " XX4U 5      nUR                  5         U$ rK   )r   rq   rr   )r5   rs   r†   r�   ru   rw   s         r;   Ú	listenTCPÚPosixReactorBase.listenTCPl  s%   € Ü�HŠH�T G¸Ó=ˆØ	×ÑÔØˆr>   c                óV   • [         R                  " XX4XP5      nUR                  5         U$ rK   )r   rƒ   r„   )r5   Úhostrs   r†   r‡   r˜   r‰   s          r;   Ú
connectTCPÚPosixReactorBase.connectTCPq  s$   € ô �MŠM˜$ g¸ÓJˆØ	�	‰	ŒØˆr>   c           	     óÔ   • [         b*  [         R                  USU5      nU R                  XXuU5      $ [        b*  [        R	                  XX4XVU 5      nUR                  5         U$  S5       e)NTúSSL support is not present)r#   ÚTLSMemoryBIOFactoryr´   r$   rƒ   r„   )	r5   r³   rs   r†   ÚcontextFactoryr‡   r˜   Ú
tlsFactoryr‰   s	            r;   Ú
connectSSLÚPosixReactorBase.connectSSL  sg   € ô ‰?Ü×0Ñ0°ÀÀwÓOˆJØ—?‘? 4¨zÀKÓPÐPÜ‰_Ü—‘Ø˜G°WÈ4óˆAð �I‰IŒKØˆHà6Ð6Ó6�5r>   c                óâ   • [         b2  [         R                  USU5      nU R                  XXE5      nSUl        U$ [        b)  [        R                  XX4XP5      nUR                  5         U$  S5       e)NFÚTLSr·   )r#   r¸   r°   Ú_typer$   rq   rr   )r5   rs   r†   r¹   r�   ru   rº   rw   s           r;   Ú	listenSSLÚPosixReactorBase.listenSSLŽ  sj   € Ü‰?Ü×0Ñ0°ÀÈÓPˆJØ—>‘> $°GÓGˆDØˆDŒJØˆKÜ‰_Ü—‘˜¨ÀÓQˆAØ×ÑÔØˆHà6Ð6Ó6�5r>   c                óÊ   • [        U5      U R                  -
  nU H  nU R                  U5        M     [        U5      nU H  nU R                  U5        M     [	        X5-  5      $ )a/  
Remove all readers and writers, and list of removed L{IReadDescriptor}s
and L{IWriteDescriptor}s.

Meant for calling from subclasses, to implement removeAll, like::

  def removeAll(self):
      return self._removeAll(self._reads, self._writes)

where C{self._reads} and C{self._writes} are iterables.
)ÚsetrQ   r,   r2   Úlist)r5   ÚreadersÚwritersÚremovedReadersÚreaderÚremovedWritersÚwriters          r;   Ú
_removeAllÚPosixReactorBase._removeAll›  sc   € ô ˜W›¨×(=Ñ(=Ñ=ˆÛ$ˆFØ×Ñ˜fÖ%ñ %ô ˜W›ˆÛ$ˆFØ×Ñ˜fÖ%ñ %ô �NÑ3Ó4Ð4r>   )rP   )Úreturnr    )rÍ   r   )Ú é    )rÎ   rÏ   F)é   r   )é2   é¶  r   )rÏ   rÒ   )rÏ   rÒ   N)rÏ   )rÑ   rÎ   )g      >@N)r³   Ústrrs   Úintr†   z'ClientFactory'r‡   Úfloatr˜   ztuple[str, int] | NonerÍ   r   )rÐ   N)!r@   rA   rB   rC   rD   Ú_childWakerrM   rT   rX   rn   rx   r}   rŠ   r�   r”   r™   r‚   rž   r«   r¬   rŸ   r›   Ú__annotations__r£   r¨   r­   r°   r´   r»   rÀ   rË   rF   Ú__classcell__)r.   s   @r;   rH   rH   v   s'  ø‡ ñð €Kôò
'÷ð< ØØØØØØô6ôtð PUôô"ôôð NRôö" à�N‰NØ�O‰OØ�N‰NðE
Ð!Ð#Aô 	
ð �N‰NØ�O‰Oð%
Ð!ò
ò*ð  FJô
ôð Ø.2ð
àð
ð ð
ð !ð	
ð
 ð
ð ,ð
ð 
õ
ð LPô7ô7÷5ð 5r>   rH   c                  ó   • \ rS rSrSrS rSrg)Ú_PollLikeMixini²  a€  
Mixin for poll-like reactors.

Subclasses must define the following attributes::

  - _POLL_DISCONNECTED - Bitmask for events indicating a connection was
    lost.
  - _POLL_IN - Bitmask for events indicating there is input to read.
  - _POLL_OUT - Bitmask for events indicating output can be written.

Must be mixed in to a subclass of PosixReactorBase (for
_disconnectSelectable).
c                ó  • SnSnX0R                   -  (       a2  X0R                  -  (       d  X R                  ;   a	  Sn[        nOt[        nOm UR                  5       S:X  a  [        nOQX0R                  -  (       a  UR                  5       nSnU(       d%  X0R                  -  (       a  UR                  5       nSnU(       a  U R                  XU5        gg! [         a0    [        R                  " 5       S   n[        R                  " 5          NTf = f)zO
fd is available for read or write, do the work and raise errors if
necessary.
NFTéÿÿÿÿr   )Ú_POLL_DISCONNECTEDÚ_POLL_INÚ_readsr   r   ÚfilenoÚ_NO_FILEDESCÚdoReadÚ	_POLL_OUTÚdoWriteÚBaseExceptionÚsysÚexc_infor   Úerrr<   )r5   r6   ÚfdÚeventr7   ÚinReads         r;   Ú_doReadOrWriteÚ_PollLikeMixin._doReadOrWriteÁ  så   € ð
 ˆØˆØ×*Ñ*×*°E¿M¹M×4Ið —[‘[Ó ð
 �Ü%‘ô &‘ðð ×$Ñ$Ó&¨"Ó,ô '‘CàŸ}™}×,à(×/Ñ/Ó1˜Ø!%˜Þ 5¯>©>×#9ð )×0Ñ0Ó2˜Ø!&˜ö Ø×&Ñ& z¸Õ?ð øô !ó ô —l’l“n QÑ'�Ü—’–	ð	ús   ÁC Á&AC Ã7DÄDr?   N)r@   rA   rB   rC   rD   rì   rF   r?   r>   r;   rÚ   rÚ   ²  s   † ñõ7@r>   rÚ   c                  ól   • \ 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S rS rS rS rS rSrg)Ú_ContinuousPollingiû  ao  
Schedule reads and writes based on the passage of time, rather than
notification.

This is useful for supporting polling filesystem files, which C{epoll(7)}
does not support.

The implementation uses L{_PollLikeMixin}, which is a bit hacky, but
re-implementing and testing the relevant code yet again is unappealing.

@ivar _reactor: The L{EPollReactor} that is using this instance.

@ivar _loop: A C{LoopingCall} that drives the polling, or L{None}.

@ivar _readers: A C{set} of C{FileDescriptor} objects that should be read
    from.

@ivar _writers: A C{set} of C{FileDescriptor} objects that should be
    written to.
r   é   é   c                óZ   • Xl         S U l        [        5       U l        [        5       U l        g rK   )Ú_reactorÚ_looprÃ   Ú_readersÚ_writers)r5   Úreactors     r;   Ú__init__Ú_ContinuousPolling.__init__  s    € ØŒØˆŒ
Ü›ˆŒÜ›ˆ�r>   c                ót  • U R                   (       d  U R                  (       ac  U R                  cU  SSKJnJn  U" U R                  5      U l        U R                  U R                  l        U R                  R                  USS9  ggU R                  (       a"  U R                  R                  5         SU l        gg)zP
Start or stop a C{LoopingCall} based on whether there are readers and
writers.
Nr   )Ú_EPSILONÚLoopingCallF)Únow)rõ   rö   rô   Útwisted.internet.taskrû   rü   Úiterateró   ÚclockÚstartÚstop)r5   rû   rü   s      r;   Ú
_checkLoopÚ_ContinuousPolling._checkLoop  s   € ð
 �=�=˜DŸMŸMØ�z‰zÑ!ßGá(¨¯©Ó6�”
Ø#'§=¡=�—
‘
Ô ð —
‘
× Ñ  ¨uÐ Ò5ð "ð �Z�ZØ�J‰J�O‰OÔØˆD�Jð r>   c                óä   • [        U R                  5       H  nU R                  XU R                  5        M!     [        U R                  5       H  nU R                  X"U R
                  5        M!     g)zH
Call C{doRead} and C{doWrite} on all readers and writers respectively.
N)rÄ   rõ   rì   rÞ   rö   rã   )r5   rÈ   rÊ   s      r;   rÿ   Ú_ContinuousPolling.iterate/  sR   € ô ˜4Ÿ=™=Ö)ˆFØ×Ñ °·±Ö>ñ *ä˜4Ÿ=™=Ö)ˆFØ×Ñ °·±Ö?ò *r>   c                óZ   • U R                   R                  U5        U R                  5         g)zE
Add a C{FileDescriptor} for notification of data available to read.
N)rõ   rR   r  ©r5   rÈ   s     r;   rS   Ú_ContinuousPolling.addReader8  ó    € ð 	�‰×Ñ˜&Ô!Ø�‰Õr>   c                óZ   • U R                   R                  U5        U R                  5         g)zF
Add a C{FileDescriptor} for notification of data available to write.
N)rö   rR   r  ©r5   rÊ   s     r;   Ú	addWriterÚ_ContinuousPolling.addWriter?  r
  r>   c                ó|   •  U R                   R                  U5        U R                  5         g! [         a     gf = f)zI
Remove a C{FileDescriptor} from notification of data available to read.
N)rõ   ÚremoveÚKeyErrorr  r  s     r;   r,   Ú_ContinuousPolling.removeReaderF  s9   € ð	Ø�M‰M× Ñ  Ô(ð 	�‰Õøô ó 	Ùð	úó   ‚. ®
;º;c                ó|   •  U R                   R                  U5        U R                  5         g! [         a     gf = f)zJ
Remove a C{FileDescriptor} from notification of data available to
write.
N)rö   r  r  r  r  s     r;   r2   Ú_ContinuousPolling.removeWriterP  s9   € ð
	Ø�M‰M× Ñ  Ô(ð 	�‰Õøô ó 	Ùð	úr  c                ó²   • [        U R                  U R                  -  5      nU R                  R                  5         U R                  R                  5         U$ )z!
Remove all readers and writers.
)rÄ   rõ   rö   Úclear)r5   Úresults     r;   Ú	removeAllÚ_ContinuousPolling.removeAll[  sB   € ô �d—m‘m d§m¡mÑ3Ó4ˆð 	�‰×ÑÔØ�‰×ÑÔØˆr>   c                ó,   • [        U R                  5      $ )z
Return a list of the readers.
)rÄ   rõ   rL   s    r;   Ú
getReadersÚ_ContinuousPolling.getReadersf  ó   € ô �D—M‘MÓ"Ð"r>   c                ó,   • [        U R                  5      $ )z
Return a list of the writers.
)rÄ   rö   rL   s    r;   Ú
getWritersÚ_ContinuousPolling.getWritersl  r  r>   c                ó   • XR                   ;   $ )a*  
Checks if the file descriptor is currently being observed for read
readiness.

@param fd: The file descriptor being checked.
@type fd: L{twisted.internet.abstract.FileDescriptor}
@return: C{True} if the file descriptor is being observed for read
    readiness, C{False} otherwise.
@rtype: C{bool}
)rõ   ©r5   ré   s     r;   Ú	isReadingÚ_ContinuousPolling.isReadingr  ó   € ð —]‘]Ñ"Ð"r>   c                ó   • XR                   ;   $ )a,  
Checks if the file descriptor is currently being observed for write
readiness.

@param fd: The file descriptor being checked.
@type fd: L{twisted.internet.abstract.FileDescriptor}
@return: C{True} if the file descriptor is being observed for write
    readiness, C{False} otherwise.
@rtype: C{bool}
)rö   r#  s     r;   Ú	isWritingÚ_ContinuousPolling.isWriting  r&  r>   )rô   ró   rõ   rö   N)r@   rA   rB   rC   rD   rÝ   rÞ   rã   rø   r  rÿ   rS   r  r,   r2   r  r  r   r$  r(  rF   r?   r>   r;   rï   rï   û  sV   † ñð, ÐØ€HØ€Iòòò$@òòòò	ò	ò#ò#ò#õ#r>   rï   Úfromfd)ArD   Ú
__future__r   rž   ræ   Útypingr   Úzope.interfacer   r   Útwisted.internetr   r   r	   Útwisted.internet.baser
   Útwisted.internet.interfacesr   r   r   r   r   r   r   r   r   r   r   Útwisted.internet.mainr   r   Útwisted.internet.protocolr   Útwisted.pythonr   r   Útwisted.python.runtimer   r   Ú_signalsr   r   r    r!   r"   ÚConnectionFdescWentAwayrá   Útwisted.protocolsr#   Ú_tlsÚImportErrorr$   Ú_sslr‚   ÚprocessEnabledr&   r'   Ú	isWindowsrb   r)   rH   rÚ   rï   ÚgetattrÚ__all__r?   r>   r;   Ú<module>r?     s¿  ðñ
õ #ã Û 
Ý ç 7ç ,Ñ ,Ý -÷÷ ÷ ñ ÷ CÝ 3ß 'ß 9÷õ ð ×,Ò,Ð-CÓD€ðÝ-ð €CðÝ,ð €Cà˜gÑ%€à€Þß.à€Nð ×Ò×ÑðÛàˆ÷
#<ñ #<ñL ˆ[˜+Ð'8Ó9ôx5Ð1°;ó x5ó :ðx5÷v	F@ñ F@ñR ˆ]ÓôN#˜Ð)Có N#ó ðN#ðb �?�c‘oÙÐ$ kÔ2ÞÙÐ$ lÐ4HÔIÞÙÐ$ oÔ6Ù
ˆ6�8˜TÓ"Ñ.ÙÐ$ nÔ5àÐ
�øðI ó Ø
‚Cðûð ó Ø
‚Cðûð& ó ØŠðús6   ÂE ÂE( ÃE6 ÅE%Å$E%Å(E3Å2E3Å6FÆ F