+
    K¡-i‚ë  ã                   óü  € ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIt ^ RIt ^ RIt^ RIt^ RIHtHtHtHtHtHt R]P*                  R]P,                  R]P.                  R]P0                  /tRtR	tR
tRtRtRtRt Rt!Rt"Rt#Rt$Rt%Rt&Rt'Rt(Rt)Rt*Rt+Rt,Rt-Rt.Rt/Rt0Rt1Rt2Rt3R t4R!t5R"t6R#t7R$t8R%t9R&t:R't;R(t<R)t=R*t>R+t?R,t@R-tAR.tBR/tCR0tDR1tER2tF]/];]0]<]1]=]2]>]3]?]4]@]5]A]6]B]7]C]8]D]9]E]:]F/tGRtHRtIRtJRtKRtLRtMR tNR!tOR"tPR#tQR$tRR%tSR&tTR3tUR4tVR5tWR6tXR7tYR8tZR9t[^€t\^@t]^ t^^t_^t`^ta^tb^tc^€td^@te^ tf^tg^th^ti^tj^tkRtlRtmRtn]PÞ                  ^]Pà                  ^]Pâ                  ^]Pä                  ^]Pæ                  ^/tt]u! R: ]tPí                  4        4       4      tw]Pð                  ^]Pò                  ^]Pô                  ^/t{]u! R; ]{Pí                  4        4       4      t|^ t}^t~^tR<t€R=t�R>t‚R?tƒ ! R@ RA]„4      t… ! RB RC]„4      t† ! RD RE]4      t‡ ! RF RG]„4      tˆ]‰RH8X  dË   ^ RIŠtŠ]‡! RIRJ4      t‹]ŠEP                  EP                  RKEP                  ]‹4      4       ]ŠEP                  EP                  RL4       ]‹EP                  RM4       ]‹EP                  4        ]ŠEP                  EP                  RNEP                  ]‹EP!                  ^4      4      4       ]‹EP#                  4        R# R#   ] d    ^ RI	H
t  ELÈi ; i  ] d	    ^ RIt ELÕi ; i)Oé    )Úabsolute_importN)Ú
SerialBaseÚSerialExceptionÚto_bytesÚ	iterbytesÚPortNotOpenErrorÚTimeoutÚdebugÚinfoÚwarningÚerroró   ðó   ñó   òó   óó   ôó   õó   öó   ÷ó   øó   ùó   úó   ûó   üó   ýó   þó   ÿs   ÿÿó    ó   ó   ó   ,ó   ó   ó   ó   ó   ó   ó   	ó   
ó   ó   ó   eó   fó   gó   hó   ió   jó   kó   ló   mó   nó   oó   pó   ó   ó   ó   ó   ó   ó   c              #   ó,   "  € T F
  w  rW!3x € K  	  R # 5i©N© ©Ú.0ÚkÚvs   &  Ú0/usr/lib/python3/dist-packages/serial/rfc2217.pyÚ	<genexpr>rG   Ø   s   é € Ð!PÑ5O©T¨Q 1¥&Ó5Oùó   ‚c              #   ó,   "  € T F
  w  rW!3x € K  	  R # 5ir@   rA   rB   s   &  rF   rG   rG   ß   s   é € Ð"RÑ6Q©d¨a A¥6Ó6QùrH   Ú	REQUESTEDÚACTIVEÚINACTIVEÚREALLY_INACTIVEc                   ó:   a € ] tR t^ít o RtRR ltR tR tRtV t	R# )ÚTelnetOptionz@Manage a single telnet option, keeps track of DO/DONT WILL/WONT.Nc
                ó€   € Wn         W n        W0n        W@n        WPn        W`n        Wpn        W€n        RV n        W�n	        R# )aë  Initialize option.
:param connection: connection used to transmit answers
:param name: a readable name for debug outputs
:param send_yes: what to send when option is to be enabled.
:param send_no: what to send when option is to be disabled.
:param ack_yes: what to expect when remote agrees on option.
:param ack_no: what to expect when remote disagrees on option.
:param initial_state: options initialized with REQUESTED are tried to
    be enabled on startup. use INACTIVE for all others.
FN)
Ú
connectionÚnameÚoptionÚsend_yesÚsend_noÚack_yesÚack_noÚstateÚactiveÚactivation_callback)
ÚselfrQ   rR   rS   rT   rU   rV   rW   Úinitial_staterZ   s
   &&&&&&&&&&rF   Ú__init__ÚTelnetOption.__init__ð   s9   € ð %ŒØŒ	ØŒØ ŒØŒØŒØŒØ"Œ
ØˆŒØ#6Ö ó    c                ó&   € RP                  V R7      # )zString for debug outputsz{o.name}:{o.active}({o.state}))Úo©Úformat©r[   s   &rF   Ú__repr__ÚTelnetOption.__repr__  s   € à/×6Ñ6¸Ð6Ó>Ð>r_   c                ó@  € WP                   8X  Ed7   V P                  \        J d5   \        V n        RV n        V P
                  e   V P                  4        R# R# V P                  \        J d   R# V P                  \        J de   \        V n        V P                  P                  V P                  V P                  4       RV n        V P
                  e   V P                  4        R# R# V P                  \        J d3   V P                  P                  V P                  V P                  4       R# \        RP                  V 4      4      hWP                  8X  dÇ   V P                  \        J d   \        V n        RV n        R# V P                  \        J dE   \        V n        V P                  P                  V P                  V P                  4       RV n        R# V P                  \        J d   R# V P                  \        J d   R# \        RP                  V 4      4      hR# )zWA DO/DONT/WILL/WONT was received for this option, update state and
answer when needed.
TNzoption in illegal state {!r}F)rV   rX   rJ   rK   rY   rZ   rL   rQ   Útelnet_send_optionrT   rS   rM   rU   Ú
ValueErrorrc   rW   ©r[   Úcommands   &&rF   Úprocess_incomingÚTelnetOption.process_incoming  sz  € ð
 —l‘lÕ"Ø�z‰zœYÓ&Ü#�”
Ø"�”Ø×+Ñ+Ò7Ø×,Ñ,Ö.ñ 8à—‘œvÓ%ÙØ—‘œxÓ'Ü#�”
Ø—‘×2Ñ2°4·=±=À$Ç+Á+ÔNØ"�”Ø×+Ñ+Ò7Ø×,Ñ,Ö.ñ 8à—‘œÓ.Ø—‘×2Ñ2°4·<±<ÀÇÁÖMä Ð!?×!FÑ!FÀtÓ!LÓMÐMØŸ™Ô#Ø�z‰zœYÓ&Ü%�”
Ø#�–Ø—‘œvÓ%Ü%�”
Ø—‘×2Ñ2°4·<±<ÀÇÁÔMØ#�–Ø—‘œxÓ'ÙØ—‘œÓ.Ùä Ð!?×!FÑ!FÀtÓ!LÓMÐMñ $r_   )
rW   rV   rZ   rY   rQ   rR   rS   rU   rT   rX   r@   )
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r]   re   rl   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @rF   rO   rO   í   s   ø‡ € ÙJô7ò0?÷$Nð $Nr_   rO   c                   ó`   a € ] tR tRt o RtRR ltR tR tR t]	! ]4      t
RR ltR	 tR
tV tR# )ÚTelnetSubnegotiationi3  zˆA object to handle subnegotiation of options. In this case actually
sub-sub options for RFC 2217. It is used to track com port options.
Nc                óf   € Vf   TpWn         W n        W0n        R V n        W@n        \
        V n        R # r@   )rQ   rR   rS   ÚvalueÚ
ack_optionrL   rX   )r[   rQ   rR   rS   r{   s   &&&&&rF   r]   ÚTelnetSubnegotiation.__init__9  s/   € ØÒØˆJØ$ŒØŒ	ØŒØˆŒ
Ø$ŒÜˆŽ
r_   c                ó&   € RP                  V R7      # )zString for debug outputs.z{sn.name}:{sn.state})Úsnrb   rd   s   &rF   re   ÚTelnetSubnegotiation.__repr__C  s   € à%×,Ñ,°Ð,Ó5Ð5r_   c                óV  € Wn         \        V n        V P                  P	                  V P
                  V P                   4       V P                  P                  '       dL   V P                  P                  P                  RP                  V P                  V P                   4      4       R# R# )z¡Request a change of the value. a request is sent to the server. if
the client needs to know if the change is performed he has to check the
state of this object.
zSB Requesting {} -> {!r}N)
rz   rJ   rX   rQ   Úrfc2217_send_subnegotiationrS   Úloggerr
   rc   rR   )r[   rz   s   &&rF   ÚsetÚTelnetSubnegotiation.setG  sr   € ð Œ
ÜˆŒ
Ø�‰×3Ñ3°D·K±KÀÇÁÔLØ�?‰?×!×!Ð!Ø�O‰O×"Ñ"×(Ñ(Ð)C×)JÑ)JÈ4Ï9É9ÐVZ×V`ÑV`Ó)aÖbñ "r_   c                óš   € V P                   \        8X  d%   \        RP                  V P                  4      4      hV P                   \
        8H  # )zcCheck if answer from server has been received. when server rejects
the change, raise a ValueError.
z%remote rejected value for option {!r})rX   rM   ri   rc   rR   rK   rd   s   &rF   Úis_readyÚTelnetSubnegotiation.is_readyS  s:   € ð
 �:‰:œÔ(ÜÐD×KÑKÈDÏIÉIÓVÓWÐWØ�z‰zœVÑ#Ð#r_   c                óì   € \        V4      pVP                  4       '       g1   \        P                  ! R4       V P	                  4       '       g   KD  R# \        RP                  V P                  4      4      h)zŸWait until the subnegotiation has been acknowledged or timeout. It
can also throw a value error when the answer from the server does not
match the value sent.
çš™™™™™©?z%timeout while waiting for option {!r}N)r	   ÚexpiredÚtimeÚsleepr†   r   rc   rR   )r[   ÚtimeoutÚtimeout_timers   && rF   ÚwaitÚTelnetSubnegotiation.wait^  sU   € ô   Ó(ˆØ×'Ñ'×)Ò)Ü�JŠJ�tÔØ�}‰}�ŒÙä!Ð"I×"PÑ"PÐQU×QZÑQZÓ"[Ó\Ð\r_   c                óP  € V P                   VR\        V P                   4       8X  d   \        V n        M\        V n        V P
                  P                  '       dL   V P
                  P                  P                  RP                  V P                  WP                  4      4       R# R# )z‡Check an incoming subnegotiation block. The parameter already has
cut off the header like sub option number and com port option value.
NzSB Answer {} -> {!r} -> {})
rz   ÚlenrK   rX   rM   rQ   r‚   r
   rc   rR   )r[   Ú	suboptions   &&rF   Úcheck_answerÚ!TelnetSubnegotiation.check_answerl  sv   € ð
 �:‰:˜Ð#3¤C¨¯
©
£OÐ4Ô4ÜˆD�Jô )ˆDŒJØ�?‰?×!×!Ð!Ø�O‰O×"Ñ"×(Ñ(Ð)E×)LÑ)LÈTÏYÉYÐXa×cmÑcmÓ)nÖoñ "r_   )r{   rQ   rR   rS   rX   rz   r@   )é   )rn   ro   rp   rq   rr   r]   re   rƒ   r†   ÚpropertyrY   r�   r”   rs   rt   ru   s   @rF   rx   rx   3  s=   ø‡ € ñô
ò6ò
cò$ñ �hÓ€Fô]÷pð pr_   rx   c                   óJ  a a€ ] tR tRt oRtR"tV 3R ltR tR tR t	R t
]R 4       tR#R	 ltR
 tR tR tR tR tR t]R 4       t]R 4       t]R 4       t]R 4       t]R 4       t]P2                  R 4       tR tR tR tR tR tR tR$R lt R t!R t"R t#R  t$R!t%Vt&V ;t'# )%ÚSerializ  z<Serial port implementation for RFC 2217 remote serial ports.c                ó  <€ R V n         R V n        ^ V n        R V n        \	        R4      V n        RV n        R V n        R V n        RV n	        RV n
        ^V n        R V n        R V n        R V n        R V n        \         \"        V `J  ! V/ VB  R # )NFéÿÿÿÿ)Ú_threadÚ_socketÚ
_linestateÚ_modemstater	   Ú_modemstate_timeoutÚ_remote_suspend_flowÚ_write_lockr‚   Ú_ignore_set_control_answerÚ_poll_modem_stateÚ_network_timeoutÚ_telnet_optionsÚ_rfc2217_port_settingsÚ_rfc2217_optionsÚ_read_bufferÚsuperr™   r]   )r[   ÚargsÚkwargsÚ	__class__s   &*,€rF   r]   ÚSerial.__init__€  s�   ø€ ØˆŒØˆŒØˆŒØˆÔÜ#*¨2£;ˆÔ Ø$)ˆÔ!ØˆÔØˆŒØ*/ˆÔ'Ø!&ˆÔØ !ˆÔØ#ˆÔØ&*ˆÔ#Ø $ˆÔØ ˆÔÜŒf�dÒ$ dÐ5¨fÔ5r_   c                óü
  € RV n         RV n        RV n        ^V n        V P                  f   \        R4      hV P                  '       d   \        R4      h \        P                  ! V P                  V P                  4      ^R7      V n        V P                  P                  \        P                  \        P                  ^4       \"        P"                  ! 4       T n        \&        P(                  ! 4       T n        \-        T R\.        \0        \2        \4        \6        \8        4      \-        T R\:        \0        \2        \4        \6        \<        4      .p\-        T R	\>        \4        \6        \0        \2        \<        4      \-        T R
\@        \0        \2        \4        \6        \<        4      \-        T R\@        \4        \6        \0        \2        \<        4      \-        T R\.        \4        \6        \0        \2        \8        4      \-        T R\:        \4        \6        \0        \2        \<        4      .T,           T n!        R\E        T R\F        \H        4      R\E        T R\J        \L        4      R\E        T R\N        \P        4      R\E        T R\R        \T        4      /T n+        R\E        T R\X        \Z        4      R\E        T R\\        \^        4      /T n0        T P`                  Pc                  T PV                  4       ^ T n2        RT n3        \i        R4      T n5        RT n6        RT n        \&        Pn                  ! T Pp                  R7      T n9        T Pr                  Pu                  R4       T Pr                  Pw                  RP!                  T P                  4      4       T Pr                  Py                  4         T PB                   F?  pTPz                  \<        J g   K  T P}                  TP~                  TP€                  4       KA  	  \i        T P                  4      pTPƒ                  4       '       gA   \„        P†                  ! R4       \‰        R T 4       4      \‰        R T 4       4      8X  g   KU  M\        RP!                  T4      4      hT P                   '       d5   T P                   P‹                  RP!                  T PB                  4      4       T P�                  4        T PŽ                  '       g   T P‘                  4        T P’                  '       g   T P•                  4        T P—                  4        T P™                  4        R#   \         d2   pRT n        \        RP!                  T P                  T4      4      hRp?ii ; i   T P›                  4        h ; i)z`Open port with current settings. This may throw a SerialException
if the port cannot be opened.
NFz.Port must be configured before it can be used.zPort is already open.)r�   zCould not open port {}: {}ú	we-BINARYú
we-RFC2217ÚECHOúwe-SGAúthey-SGAúthey-BINARYúthey-RFC2217ÚbaudrateÚdatasizeÚparityÚstopsizeÚpurgeÚcontrolT)Útargetz&pySerial RFC 2217 reader thread for {}r‰   c              3   ó8   "  € T F  qP                   x € K  	  R # 5ir@   ©rY   ©rC   ra   s   & rF   rG   ÚSerial.open.<locals>.<genexpr>Þ  s   é € Ð;Ñ): A—x–xÓ):ùó   ‚c              3   óF   "  € T F  qP                   \        8g  x € K  	  R # 5ir@   )rX   rL   rÀ   s   & rF   rG   rÁ   Þ  s   é € ÐBrÑ`qÐ[\Ç7Á7ÌhÖCVÓ`qùs   ‚!z;Remote does not seem to support RFC2217 or BINARY mode {!r}zNegotiated options: {}r›   )Nr‚   r£   r¤   r¥   Ú_portr   Úis_openÚsocketÚcreate_connectionÚfrom_urlÚportstrr�   Ú
setsockoptÚIPPROTO_TCPÚTCP_NODELAYÚ	Exceptionrc   ÚQueuer©   Ú	threadingÚLockr¢   rO   ÚBINARYÚWILLÚWONTÚDOÚDONTrL   ÚCOM_PORT_OPTIONrJ   r²   ÚSGAr¦   rx   ÚSET_BAUDRATEÚSERVER_SET_BAUDRATEÚSET_DATASIZEÚSERVER_SET_DATASIZEÚ
SET_PARITYÚSERVER_SET_PARITYÚSET_STOPSIZEÚSERVER_SET_STOPSIZEr§   Ú
PURGE_DATAÚSERVER_PURGE_DATAÚSET_CONTROLÚSERVER_SET_CONTROLr¨   Úupdaterž   rŸ   r	   r    r¡   ÚThreadÚ_telnet_read_looprœ   Ú	setDaemonÚsetNameÚstartrX   rh   rT   rS   rŠ   r‹   rŒ   Úsumr   Ú_reconfigure_portÚ_dsrdtrÚ_update_dtr_stateÚ_rtsctsÚ_update_rts_stateÚreset_input_bufferÚreset_output_bufferÚclose)r[   ÚmsgÚmandadory_optionsrS   r�   s   &    rF   ÚopenÚSerial.open’  s  € ð
 ˆŒØ*/ˆÔ'Ø!&ˆÔØ !ˆÔØ�:‰:ÒÜ!Ð"RÓSÐSØ�<�<ˆ<Ü!Ð"9Ó:Ð:ð	ZÜ!×3Ò3°D·M±MÀ$Ç,Á,Ó4OÐYZÔ[ˆDŒLØ�L‰L×#Ñ#¤F×$6Ñ$6¼×8JÑ8JÈAÔNô "ŸKšK›MˆÔô %Ÿ>š>Ó+ˆÔô ˜˜{¬F´D¼$ÄÄDÌ(ÓSÜ˜˜|¬_¼dÄDÌ"ÌdÔT]Ó^ð
Ðô ˜˜v¤t¬R´´t¼TÄ9ÓMÜ˜˜x¬¬d´D¼"¼dÄIÓNÜ˜˜z¬3´´D¼$ÄÄiÓPÜ˜˜}¬f´b¼$ÄÄdÌHÓUÜ˜˜~¬ÄÄDÌ$ÔPTÔV_Ó`ð 
ð õ ˆÔð Ô,¨T°:¼|ÔM`ÓaØÔ,¨T°:¼|ÔM`ÓaØÔ,¨T°8¼zÔM^Ó_ØÔ,¨T°:¼|ÔM`Óað	'
ˆÔ#ð Ô,¨T°7¼zÔM^Ó_ØÔ,¨T°9¼{ÔM_Ó`ð!
ˆÔð 	×Ñ×$Ñ$ T×%@Ñ%@ÔAàˆŒØˆÔÜ#*¨2£;ˆÔ à$)ˆÔ!àˆŒÜ ×'Ò'¨t×/EÑ/EÔFˆŒØ�‰×Ñ˜tÔ$Ø�‰×ÑÐE×LÑLÈTÏZÉZÓXÔYØ�‰×ÑÔð	à×.Ô.�Ø—<‘<¤9Õ,Ø×+Ñ+¨F¯O©O¸V¿]¹]ÖKñ /ô ˜d×3Ñ3Ó4ˆGØ—o‘o×'Ò'Ü—
’
˜4Ô ÜÑ;Ñ):Ó;Ó;¼sÑBrÑ`qÓBrÓ?rÖrØä%ØQ×XÑXÐYjÓkómð mà�{�{ˆ{Ø—‘× Ñ Ð!9×!@Ñ!@À×AUÑAUÓ!VÔWð ×"Ñ"Ô$à—<—<�<Ø×&Ñ&Ô(Ø—<—<�<Ø×&Ñ&Ô(Ø×#Ñ#Ô%Ø×$Ñ$Ö&øôY ô 	ZØˆDŒLÜ!Ð">×"EÑ"EÀdÇlÁlÐTWÓ"XÓYÐYûð	ZûðZ	Ø�J‰JŒLØúsK   ÁA/T) Î U( Î>AU( Ð:U( Ñ,U( Ñ?AU( Ó!U( Ó70U( Ô)U%Ô4,U Õ U%Õ(U;c                óh  € V P                   f   \        R4      hV P                  e   \        R4      h^ V P                  u;8  d   R8  g'   M \        RP                  V P                  4      4      hV P                  R,          P                  \        P                  ! RV P                  4      4       V P                  R,          P                  \        P                  ! RV P                  4      4       V P                  R	,          P                  \        P                  ! R\        V P                  ,          4      4       V P                  R
,          P                  \        P                  ! R\        V P                  ,          4      4       V P                  P!                  4       pV P"                  '       d+   V P"                  P%                  RP                  V4      4       \'        V P(                  4      pVP+                  4       '       g:   \,        P.                  ! R4       \1        R V 4       4      \3        V4      8X  g   KN  M\        RP                  V4      4      hV P"                  '       d+   V P"                  P5                  RP                  V4      4       V P6                  '       d   V P8                  '       d   \        R4      hV P6                  '       d   V P;                  \<        4       R# V P8                  '       d   V P;                  \>        4       R# V P;                  \@        4       R# )z,Set communication parameters on opened port.NzCan only operate on open portsz(write_timeout is currently not supportedzinvalid baudrate: {!r}r·   ó   !Ir¸   ó   !Br¹   rº   zNegotiating settings: {}r‰   c              3   ó8   "  € T F  qP                   x € K  	  R # 5ir@   r¿   rÀ   s   & rF   rG   Ú+Serial._reconfigure_port.<locals>.<genexpr>  s   é € Ð+¡U —8–8£UùrÂ   z7Remote does not accept parameter change (RFC2217): {!r}zNegotiated settings: {}z-xonxoff and rtscts together are not supportedl        )!r�   r   Ú_write_timeoutÚNotImplementedErrorÚ	_baudrateri   rc   r§   rƒ   ÚstructÚpackÚ	_bytesizeÚRFC2217_PARITY_MAPÚ_parityÚRFC2217_STOPBIT_MAPÚ	_stopbitsÚvaluesr‚   r
   r	   r¥   rŠ   r‹   rŒ   rê   r’   r   rî   Ú_xonxoffÚrfc2217_set_controlÚSET_CONTROL_USE_HW_FLOW_CONTROLÚSET_CONTROL_USE_SW_FLOW_CONTROLÚSET_CONTROL_USE_NO_FLOW_CONTROL)r[   Úitemsr�   s   &  rF   rë   ÚSerial._reconfigure_portó  s-  € à�<‰<ÒÜ!Ð"BÓCÐCð
 ×ÑÒ*Ü%Ð&PÓQÐQð
 �4—>‘>Ö+ GÖ+ÜÐ5×<Ñ<¸T¿^¹^ÓLÓMÐMØ×#Ñ# JÕ/×3Ñ3´F·K²KÀÀtÇ~Á~Ó4VÔWØ×#Ñ# JÕ/×3Ñ3´F·K²KÀÀtÇ~Á~Ó4VÔWØ×#Ñ# HÕ-×1Ñ1´&·+²+¸eÔEWÐX\×XdÑXdÕEeÓ2fÔgØ×#Ñ# JÕ/×3Ñ3´F·K²KÀÔGZÐ[_×[iÑ[iÕGjÓ4kÔlð ×+Ñ+×2Ñ2Ó4ˆØ�;�;ˆ;Ø�K‰K×ÑÐ8×?Ñ?ÀÓFÔGÜ˜$×/Ñ/Ó0ˆØ—/‘/×#Ò#Ü�JŠJ�tÔÜÑ+¡UÓ+Ó+¬s°5«zÖ9Øä!Ð"[×"bÑ"bÐchÓ"iÓjÐjØ�;�;ˆ;Ø�K‰K×ÑÐ6×=Ñ=¸eÓDÔEà�<�<ˆ<˜DŸMŸM˜MÜÐLÓMÐMØ�\�\ˆ\Ø×$Ñ$Ô%DÖEØ�]�]ˆ]Ø×$Ñ$Ô%DÖEà×$Ñ$Ô%DÖEr_   c                óp  € RV n         V P                  '       dE    V P                  P                  \        P                  4       V P                  P                  4        V P                  '       d9   V P                  P                  ^4       RV n        \        P                  ! R4       RV n        R#     LW; i)z
Close portFNç333333Ó?)
rÅ   r�   ÚshutdownrÆ   Ú	SHUT_RDWRrò   rœ   Újoinr‹   rŒ   rd   s   &rF   rò   ÚSerial.close  s   € àˆŒØ�<�<ˆ<ðØ—‘×%Ñ%¤f×&6Ñ&6Ô7Ø—‘×"Ñ"Ô$ð �<�<ˆ<Ø�L‰L×Ñ˜aÔ ØˆDŒLä�JŠJ�sŒOØˆŽøðáús   ›AB1 Â1B5c                ó”  € \         P                  ! V4      pVP                  R8w  d%   \        RP	                  VP                  4      4      h \         P
                  ! VP                  R4      P                  4        FÞ  w  r4VR8X  d{   \        P                  ! 4        \        P                  ! R4      V n        V P                  P                  \        V^ ,          ,          4       V P                  P                  R4       K†  VR8X  d
   RV n        K–  VR8X  d
   RV n        K¦  VR	8X  d   \#        V^ ,          4      V n        KÆ  \'        R
P	                  V4      4      h	  ^ VP(                  u;8:  d   R8  g   M \'        R4      h TP*                  TP(                  3#   \&         d    p\        RP	                  T4      4      hRp?ii ; i)z]extract host and port from an URL string, other settings are extracted
an stored in instance
Úrfc2217zqexpected a string in the form "rfc2217://<host>:<port>[?option[&option...]]": not starting with rfc2217:// ({!r})TÚloggingzpySerial.rfc2217zenabled loggingÚign_set_controlÚ
poll_modemr�   zunknown option: {!r}i   zport not in range 0...65535zPexpected a string in the form "rfc2217://<host>:<port>[?option[&option...]]": {}N)ÚurlparseÚurlsplitÚschemer   rc   Úparse_qsÚqueryr  r  ÚbasicConfigÚ	getLoggerr‚   ÚsetLevelÚLOGGER_LEVELSr
   r£   r¤   Úfloatr¥   ri   ÚportÚhostname)r[   ÚurlÚpartsrS   r  Úes   &&    rF   rÈ   ÚSerial.from_url0  s€  € ô
 ×!Ò! #Ó&ˆØ�<‰<˜9Ô$Ü!ð6ç6<±f¸U¿\¹\Ó6JóLð Lð	Pä"*×"3Ò"3°E·K±KÀÓ"F×"LÑ"LÖ"N‘�Ø˜YÔ&Ü×'Ò'Ô)Ü")×"3Ò"3Ð4FÓ"G�D”KØ—K‘K×(Ñ(¬°v¸aµyÕ)AÔBØ—K‘K×%Ñ%Ð&7Ö8ØÐ0Ô0Ø6:�DÖ3Ø˜|Ô+Ø-1�DÖ*Ø˜yÔ(Ü,1°&¸µ)Ó,<�DÖ)ä$Ð%;×%BÑ%BÀ6Ó%JÓKÐKñ #Oð ˜Ÿ
™
Ö* UÖ*Ü Ð!>Ó?Ð?ð +ð —‘ §
¡
Ð+Ð+øô	 ô 	PÜ!ðEßEKÁVÈAÃYóPð Pûð	Pús   ÁD7F ÆGÆ(GÇGc                ón   € V P                   '       g   \        4       hV P                  P                  4       # )z9Return the number of bytes currently in the input buffer.)rÅ   r   r©   Úqsizerd   s   &rF   Ú
in_waitingÚSerial.in_waitingU  s+   € ð �|�|ˆ|Ü"Ó$Ð$Ø× Ñ ×&Ñ&Ó(Ð(r_   c                ó  € V P                   '       g   \        4       h\        4       p \        V P                  4      p\        V4      V8  d”   V P                  e!   V P                  P                  4       '       g   \        R4      hV P                  P                  RVP                  4       4      pVf   \        V4      # W$,          pVP                  4       '       g   K¢  M \        V4      #   \        P                   d     L"i ; i)z±Read size bytes from the serial port. If a timeout is set it may
return less characters as requested. With no timeout it will block
until the requested number of bytes is read.
z&connection failed (reader thread died)T)rÅ   r   Ú	bytearrayr	   Ú_timeoutr’   rœ   Úis_aliver   r©   ÚgetÚ	time_leftÚbytesrŠ   rÎ   ÚEmpty)r[   ÚsizeÚdatar�   Úbufs   &&   rF   ÚreadÚSerial.read\  sÔ   € ð �|�|ˆ|Ü"Ó$Ð$Ü‹{ˆð	Ü˜dŸm™mÓ,ˆGÜ�d“)˜dÔ"Ø—<‘<Ò'¨t¯|©|×/DÑ/D×/FÒ/FÜ)Ð*RÓSÐSØ×'Ñ'×+Ñ+¨D°'×2CÑ2CÓ2EÓF�Ø’;Ü  ›;Ð&Ø•�Ø—?‘?×$Ô$Øð #ô �T‹{Ðøô �{‰{ô 	Ùð	ús   ¨AC, Á;AC, Â?C, Ã,DÄDc                óš  € V P                   '       g   \        4       hV P                  ;_uu_ 4         V P                  P	                  \        V4      P                  \        \        4      4        RRR4       \        T4      #   \        P                   d    p\        RP                  T4      4      hRp?ii ; i  + '       g   i     LR; i)z’Output the given byte string over the serial port. Can block if the
connection is blocked. May raise SerialException if the connection is
closed.
z$connection failed (socket error): {}N)rÅ   r   r¢   r�   Úsendallr   ÚreplaceÚIACÚIAC_DOUBLEDrÆ   r   r   rc   r’   )r[   r6  r'  s   && rF   ÚwriteÚSerial.writet  s•   € ð �|�|ˆ|Ü"Ó$Ð$Ø××ÓðXØ—‘×$Ñ$¤X¨d£^×%;Ñ%;¼CÄÓ%MÕN÷ ô
 �4‹yÐøô —<‘<ô XÜ%Ð&L×&SÑ&SÐTUÓ&VÓWÐWûðXú÷ ×ús(   ±B:³<BÂB7ÂB2Â2B7Â7B:Â:C
	c                óâ   € V P                   '       g   \        4       hV P                  \        4       V P                  P                  4       '       d   V P                  P                  R4       K=  R# )z9Clear input buffer, discarding all that is in the buffer.FN)rÅ   r   Úrfc2217_send_purgeÚPURGE_RECEIVE_BUFFERr©   r*  r1  rd   s   &rF   rð   ÚSerial.reset_input_bufferƒ  sQ   € à�|�|ˆ|Ü"Ó$Ð$Ø×ÑÔ 4Ô5à×Ñ×%Ñ%×'Ò'Ø×Ñ×!Ñ! %Ö(ñ (r_   c                óh   € V P                   '       g   \        4       hV P                  \        4       R# )z[Clear output buffer, aborting the current output and
discarding all that is in the buffer.
N)rÅ   r   rB  ÚPURGE_TRANSMIT_BUFFERrd   s   &rF   rñ   ÚSerial.reset_output_bufferŒ  s%   € ð
 �|�|ˆ|Ü"Ó$Ð$Ø×ÑÔ 5Ö6r_   c                óZ  € V P                   '       g   \        4       hV P                  '       d?   V P                  P                  RP	                  V P
                  '       d   RMR4      4       V P
                  '       d   V P                  \        4       R# V P                  \        4       R# )zCSet break: Controls TXD. When active, to transmitting is
possible.
zset BREAK to {}rY   ÚinactiveN)	rÅ   r   r‚   r   rc   Ú_break_stater  ÚSET_CONTROL_BREAK_ONÚSET_CONTROL_BREAK_OFFrd   s   &rF   Ú_update_break_stateÚSerial._update_break_state•  su   € ð
 �|�|ˆ|Ü"Ó$Ð$Ø�;�;ˆ;Ø�K‰K×ÑÐ.×5Ñ5À$×BS×BSÐBS±hÐYcÓdÔeØ××ÐØ×$Ñ$Ô%9Ö:à×$Ñ$Ô%:Ö;r_   c                óZ  € V P                   '       g   \        4       hV P                  '       d?   V P                  P                  RP	                  V P
                  '       d   RMR4      4       V P
                  '       d   V P                  \        4       R# V P                  \        4       R# )z*Set terminal status line: Request To Send.zset RTS to {}rY   rI  N)	rÅ   r   r‚   r   rc   Ú
_rts_stater  ÚSET_CONTROL_RTS_ONÚSET_CONTROL_RTS_OFFrd   s   &rF   rï   ÚSerial._update_rts_state£  ól   € à�|�|ˆ|Ü"Ó$Ð$Ø�;�;ˆ;Ø�K‰K×Ñ˜_×3Ñ3ÀÇÇÀ±HÐU_Ó`ÔaØ�?�?ˆ?Ø×$Ñ$Ô%7Ö8à×$Ñ$Ô%8Ö9r_   c                óZ  € V P                   '       g   \        4       hV P                  '       d?   V P                  P                  RP	                  V P
                  '       d   RMR4      4       V P
                  '       d   V P                  \        4       R# V P                  \        4       R# )z.Set terminal status line: Data Terminal Ready.zset DTR to {}rY   rI  N)	rÅ   r   r‚   r   rc   Ú
_dtr_stater  ÚSET_CONTROL_DTR_ONÚSET_CONTROL_DTR_OFFrd   s   &rF   rí   ÚSerial._update_dtr_state®  rT  r_   c                ó‚   € V P                   '       g   \        4       h\        V P                  4       \        ,          4      # )z)Read terminal status line: Clear To Send.)rÅ   r   ÚboolÚget_modem_stateÚMODEMSTATE_MASK_CTSrd   s   &rF   ÚctsÚ
Serial.cts¹  ó0   € ð �|�|ˆ|Ü"Ó$Ð$Ü�D×(Ñ(Ó*Ô-@Õ@ÓAÐAr_   c                ó‚   € V P                   '       g   \        4       h\        V P                  4       \        ,          4      # )z*Read terminal status line: Data Set Ready.)rÅ   r   r[  r\  ÚMODEMSTATE_MASK_DSRrd   s   &rF   ÚdsrÚ
Serial.dsrÀ  r`  r_   c                ó‚   € V P                   '       g   \        4       h\        V P                  4       \        ,          4      # )z*Read terminal status line: Ring Indicator.)rÅ   r   r[  r\  ÚMODEMSTATE_MASK_RIrd   s   &rF   ÚriÚ	Serial.riÇ  ó0   € ð �|�|ˆ|Ü"Ó$Ð$Ü�D×(Ñ(Ó*Ô-?Õ?Ó@Ð@r_   c                ó‚   € V P                   '       g   \        4       h\        V P                  4       \        ,          4      # )z*Read terminal status line: Carrier Detect.)rÅ   r   r[  r\  ÚMODEMSTATE_MASK_CDrd   s   &rF   ÚcdÚ	Serial.cdÎ  ri  r_   c                ó   € V P                   # )z Get the current timeout setting.)r/  rd   s   &rF   r�   ÚSerial.timeoutÕ  s   € ð �}‰}Ðr_   c                óÂ   € Ve,    V^,            T^ 8  d   \        RP                  T4      4      hWn        R#   \          d    \        RP                  T4      4      hi ; i)zChange timeout setting.NzNot a valid timeout: {!r})Ú	TypeErrorri   rc   r/  ©r[   r�   s   &&rF   r�   ro  Ú  sf   € ð ÒðNØ˜!–ð ˜Œ{Ü Ð!<×!CÑ!CÀGÓ!LÓMÐMØŽøô	 ô NÜ Ð!<×!CÑ!CÀGÓ!LÓMÐMðNús	   †	8 ¸&Ac                ój  € \         pRp V P                  '       Ed£    V P                  P                  R4      pT'       g   T P                  P                  R4       EMa\        T4       EFN  pT\         8X  d?   T\        8X  d	   \        pK"  Te   Y%,          pK0  T P                  P                  T4       KM  T\        8X  dÑ   T\        8X  d:   Te   T\        ,          pMT P                  P                  \        4       \         pKœ  T\        8X  d   \!        4       p\         pK¹  T\"        8X  d%   T P%                  \'        T4      4       Rp\         pKè  T\(        \*        \,        \.        39   d   Tp\0        pEK  T P3                  T4       \         pEK(  T\0        8X  g   EK6  T P5                  XT4       \         pEKQ  	  EKµ  V P                  '       d   V P                  P                  R4       R# R#   \        P
                   d     EKÿ  \        P                   dc   pT P                  '       d+   T P                  P                  RP                  T4      4       T P                  P                  R4        Rp?K»  Rp?ii ; i  T P                  '       d   T P                  P                  R4       i i ; i)zRead loop for the socket.Ni   z!socket error in reader thread: {}zread thread terminated)ÚM_NORMALrÅ   r�   ÚrecvrÆ   r�   r   r‚   r
   rc   r©   Úputr   r=  Ú
M_IAC_SEENÚSBr.  ÚSEÚ_telnet_process_subnegotiationr3  rÔ   rÕ   rÒ   rÓ   ÚM_NEGOTIATEÚ_telnet_process_commandÚ_telnet_negotiate_option)r[   Úmoder“   r6  r'  ÚbyteÚtelnet_commands   &      rF   ræ   ÚSerial._telnet_read_loopë  s  € äˆØˆ	ð<	<Ø—,—,‘,ðØŸ<™<×,Ñ,¨TÓ2�D÷ Ø×%Ñ%×)Ñ)¨$Ô/ÙÜ% dŸO�DØœxÔ'à¤3œ;Ü#-šDð  )Ò4Ø )Õ 1¢	à $× 1Ñ 1× 5Ñ 5°dÖ ;Ø¤Ô+Ø¤3œ;ð  )Ò4Ø )¬SÕ 0¡	à $× 1Ñ 1× 5Ñ 5´cÔ :Ü#+šDØ!¤RœZä(1«˜IÜ#+šDØ!¤RœZà ×?Ñ?ÄÀiÓ@PÔQØ(,˜IÜ#+šDØ!¤b¬$´´dÐ%;Ô;à-1˜NÜ#.›Dð !×8Ñ8¸Ô>Ü#+›DØ¤×,Ø×5Ñ5°nÀdÔKÜ'›ôQ ,ðT �{�{ˆ{Ø—‘×!Ñ!Ð":Ö;ñ øôo —~‘~ô ó Ü—|‘|ô à—{—{�{ØŸ™×)Ñ)Ð*M×*TÑ*TÐUVÓ*WÔXØ×%Ñ%×)Ñ)¨$Ô/Ýûðûðf �{�{ˆ{Ø—‘×!Ñ!Ð":Õ;ð úsS   ŠJ žG0 ¹J ÁEJ Æ J Ç0I?ÈJ È	I?ÈI?ÈAI:É4J É:I?É?J Ê0J2c                ó‚   € V P                   '       d-   V P                   P                  RP                  V4      4       R# R# ©z1Process commands other than DO, DONT, WILL, WONT.zignoring Telnet command: {!r}N©r‚   r   rc   rj   s   &&rF   r|  ÚSerial._telnet_process_command/  ó0   € ð �;�;ˆ;Ø�K‰K×ÑÐ ?× FÑ FÀwÓ OÖPñ r_   c                óŠ  € RpV P                    F)  pVP                  V8X  g   K  VP                  V4       RpK+  	  V'       g€   V\        8X  g   V\        8X  dh   T P                  V\        8X  d   \        M\        V4       V P                  '       d-   V P                  P                  RP                  V4      4       R# R# R# R# ©z&Process incoming DO, DONT, WILL, WONT.FTzrejected Telnet option: {!r}N©r¦   rS   rl   rÒ   rÔ   rh   rÕ   rÓ   r‚   r   rc   ©r[   rk   rS   ÚknownÚitems   &&&  rF   r}  ÚSerial._telnet_negotiate_option5  óœ   € ð ˆØ×(Ô(ˆDð �{‰{˜fÖ$Ø×%Ñ% gÔ.Ø’ñ )÷ ð œ$Œ '¬R¤-Ø×'Ñ'°¼D´­ÄdÈVÔTØ—;—;�;Ø—K‘K×'Ñ'Ð(F×(MÑ(MÈfÓ(UÖVñ ñ #0ñ r_   c                óŒ  € VR,          \         8X  Edó   VR,          \        8X  dr   \        V4      ^8¼  db   \        VR,          4      V n        V P
                  '       d7   V P
                  P                  RP                  V P                  4      4       R# R# VR,          \        8X  d‹   \        V4      ^8¼  d{   \        VR,          4      V n	        V P
                  '       d5   V P
                  P                  RP                  V P                  4      4       V P                  P                  R4       R# VR,          \        8X  d
   RV n        R# VR,          \        8X  d
   RV n        R# V P                  P!                  4        F?  pVP"                  VR,          8X  g   K  VP%                  \'        VR	,          4      4        R# 	  V P
                  '       d-   V P
                  P)                  R
P                  V4      4       R# R# V P
                  '       d-   V P
                  P)                  RP                  V4      4       R# R# )ú;Process subnegotiation, the data between IAC SB and IAC SE.ºr   é   Nºr’  é   Nºr”  r–   NzNOTIFY_LINESTATE: {}úNOTIFY_MODEMSTATE: {}r  TFºr”  NNzignoring COM_PORT_OPTION: {!r}zignoring subnegotiation: {!r}N)rÖ   ÚSERVER_NOTIFY_LINESTATEr’   Úordrž   r‚   r   rc   ÚSERVER_NOTIFY_MODEMSTATErŸ   r    ÚrestartÚFLOWCONTROL_SUSPENDr¡   ÚFLOWCONTROL_RESUMEr¨   r  r{   r”   r3  r   )r[   r“   rŒ  s   && rF   rz  Ú%Serial._telnet_process_subnegotiationH  s›  € à�S�>œ_Õ,Ø˜�~Ô!8Ô8¼SÀ»^ÈqÔ=PÜ"% i°¥nÓ"5�”Ø—;—;�;Ø—K‘K×$Ñ$Ð%;×%BÑ%BÀ4Ç?Á?Ó%SÖTñ à˜3•Ô#;Ô;ÄÀIÃÐRSÔ@SÜ#& y°¥~Ó#6�Ô Ø—;—;�;Ø—K‘K×$Ñ$Ð%<×%CÑ%CÀD×DTÑDTÓ%UÔVà×(Ñ(×0Ñ0°Ö5Ø˜3•Ô#6Ô6Ø,0�Ö)Ø˜3•Ô#5Ô5Ø,1�Ö)à ×1Ñ1×8Ñ8Ö:�DØ—‘¨)°C­.Ö8à×)Ñ)¬%°	¸"µÓ*>Ô?Úñ	 ;ð —{—{�{ØŸ™×+Ñ+Ð,L×,SÑ,SÐT]Ó,^Ö_ñ #ð �{�{ˆ{Ø—‘×#Ñ#Ð$C×$JÑ$JÈ9Ó$UÖVñ r_   c                óž   € V P                   ;_uu_ 4        V P                  P                  V4       RRR4       R#   + '       g   i     R# ; i)zGinternal socket write with no data escaping. used to send telnet stuff.N)r¢   r�   r;  )r[   r6  s   &&rF   Ú_internal_raw_writeÚSerial._internal_raw_writeh  s/   € à××ÓØ�L‰L× Ñ  Ô&÷ ××Òús	   •;»A	c                óL   € V P                  \        V,           V,           4       R# ©zSend DO, DONT, WILL, WONT.N)r   r=  ©r[   ÚactionrS   s   &&&rF   rh   ÚSerial.telnet_send_optionm  s   € à× Ñ ¤ v¥°Õ!6Ö7r_   c                óØ   € VP                  \        \        4      pV P                  \        \        ,           \
        ,           V,           V,           \        ,           \        ,           4       R# )z%Subnegotiation of RFC2217 parameters.N)r<  r=  r>  r   rx  rÖ   ry  ©r[   rS   rz   s   &&&rF   r�   Ú"Serial.rfc2217_send_subnegotiationq  s>   € à—‘œc¤;Ó/ˆØ× Ñ ¤¤r¥¬OÕ!;¸fÕ!DÀuÕ!LÌsÕ!RÔUWÕ!WÖXr_   c                ó„   € V P                   R,          pVP                  V4       VP                  V P                  4       R# )zfSend purge request to the remote.
(PURGE_RECEIVE_BUFFER / PURGE_TRANSMIT_BUFFER / PURGE_BOTH_BUFFERS)
r»   N)r¨   rƒ   r�   r¥   ©r[   rz   rŒ  s   && rF   rB  ÚSerial.rfc2217_send_purgev  s1   € ð
 ×$Ñ$ WÕ-ˆØ�‰�ŒØ�	‰	�$×'Ñ'Ö(r_   c                óØ   € V P                   R,          pVP                  V4       V P                  '       d   \        P                  ! R4       R# VP                  V P                  4       R# )z)transmit change of control line to remoter¼   gš™™™™™¹?N)r¨   rƒ   r£   r‹   rŒ   r�   r¥   r«  s   && rF   r  ÚSerial.rfc2217_set_control  sH   € à×$Ñ$ YÕ/ˆØ�‰�ŒØ×*×*Ð*ô �JŠJ�sŽOà�I‰I�d×+Ñ+Ö,r_   c                ó   € R# )zHcheck if server is ready to receive data. block for some time when
not.
NrA   rd   s   &rF   Úrfc2217_flow_server_readyÚ Serial.rfc2217_flow_server_ready‹  s   ‚ r_   c                ó°  € V P                   '       dô   V P                  P                  4       '       dÔ   V P                  '       d   V P                  P	                  R4       V P                  \        4       \        V P                  4      pVP                  4       '       g:   \        P                  ! R4       V P                  P                  4       '       d   KN  M-V P                  '       d   V P                  P                  R4       V P                  e:   V P                  '       d   V P                  P	                  R4       V P                  # \        R4      h)z×get last modem state (cached value. If value is "old", request a new
one. This cache helps that we don't issue to many requests when e.g. all
status lines, one after the other is queried by the user (CTS, DSR
etc.)
zpolling modem stater‰   zpoll for modem state failedzusing cached modem statez!remote sends no NOTIFY_MODEMSTATE)r¤   r    rŠ   r‚   r
   r�   ÚNOTIFY_MODEMSTATEr	   r¥   r‹   rŒ   r   rŸ   r   rr  s   & rF   r\  ÚSerial.get_modem_state“  sò   € ð ×!×!Ð! d×&>Ñ&>×&FÑ&F×&HÒ&HØ�{�{ˆ{Ø—‘×!Ñ!Ð"7Ô8à×,Ñ,Ô->Ô?Ü˜d×3Ñ3Ó4ˆGØ—o‘o×'Ò'Ü—
’
˜4Ô ð ×/Ñ/×7Ñ7×9Ô9Øà—;—;�;Ø—K‘K×'Ñ'Ð(EÔFð
 ×ÑÒ'Ø�{�{ˆ{Ø—‘×!Ñ!Ð"<Ô=Ø×#Ñ#Ð#ô "Ð"EÓFÐFr_   )r£   rž   rŸ   r    r¥   r¤   r©   r¡   r¨   r§   r�   r¦   rœ   r/  r¢   rÅ   r‚   )é2   éK   én   é†   é–   éÈ   i,  iX  i°  i  i`	  iÀ  i€%  i K  i –  i á  é Â )r’  ©r_   )(rn   ro   rp   rq   rr   Ú	BAUDRATESr]   rõ   rë   rò   rÈ   r—   r+  r8  r?  rð   rñ   rM  rï   rí   r^  rc  rg  rl  r�   Úsetterræ   r|  r}  rz  r   rh   r�   rB  r  r°  r\  rs   rt   Ú__classcell__)r­   rv   s   @@rF   r™   r™   z  s-  ù‡ € ÙFð4€Iõ6ò$_òB*FòXò"!,ðJ ñ)ó ð)ôò0ò)ò7ò<ò	:ò	:ð ñBó ðBð ñBó ðBð ñAó ðAð ñAó ðAð ñó ðð ‡^�^ñ	 ó ð	 ò @<òHQòWò&Wò@'ò
8ôYò
)ò
-ò÷!Gò !Gr_   r™   c                   ól   a € ] tR tRt o RtRR ltR tR tRR ltRR lt	R	 t
R
 tR tR tR tRtV tR# )ÚPortManageriº  zÚThis class manages the state of Telnet and RFC 2217. It needs a serial
instance and a connection to work with. Connection is expected to implement
a (thread safe) write function, that writes the string to the network.
Nc                ó  € Wn         W n        W0n        R V n        \        V n        RV n        RV n        ^ÿV n        RV n	        ^ V n
        \        V R\        \        \        \        \         \"        4      \        V R\$        \        \        \        \         \"        4      \        V R\$        \        \         \        \        \&        4      \        V R\(        \        \        \        \         \&        4      \        V R\(        \        \         \        \        \"        4      \        V R\*        \        \        \        \         \"        V P,                  4	      \        V R\*        \        \         \        \        \&        V P,                  4	      .V n        V P                  '       d   V P                  P1                  R	4       V P.                   F?  pVP2                  \"        J g   K  V P5                  VP6                  VP8                  4       KA  	  R# )
FNr²   r³   r´   r°   rµ   r±   r¶   z*requesting initial Telnet/RFC 2217 options)ÚserialrQ   r‚   Ú_client_is_rfc2217rt  r~  r“   r€  Úmodemstate_maskÚlast_modemstateÚlinstate_maskrO   r²   rÒ   rÓ   rÔ   rÕ   rJ   r×   rL   rÑ   rÖ   Ú
_client_okr¦   r
   rX   rh   rT   rS   )r[   Úserial_portrQ   r‚   rS   s   &&&& rF   r]   ÚPortManager.__init__Á  sX  € Ø!ŒØ$ŒØŒØ"'ˆÔô ˆŒ	ØˆŒØ"ˆÔð  #ˆÔØ#ˆÔØˆÔô ˜˜v¤t¬T´4¼¼TÄ9ÓMÜ˜˜x¬¬d´D¼"¼dÄIÓNÜ˜˜z¬3´´D¼$ÄÄhÓOÜ˜˜{¬F´D¼$ÄÄDÌ(ÓSÜ˜˜}¬f´b¼$ÄÄdÌIÓVÜ˜˜|¬_¼dÄDÌ"ÌdÔT]Ð_c×_nÑ_nÓoÜ˜˜~¬ÄÄDÌ$ÔPTÔV^Ð`d×`oÑ`oÓpð 
ˆÔð �;�;ˆ;Ø�K‰K×ÑÐJÔKØ×*Ô*ˆFØ�|‰|œyÕ(Ø×'Ñ'¨¯©¸¿¹ÖGó +r_   c                ó’   € RV n         V P                  '       d   V P                  P                  R4       V P                  RR7       R# )zßcallback of telnet option. It gets called when option is activated.
This one here is used to detect when the client agrees on RFC 2217. A
flag is set so that other functions like check_modem_lines know if the
client is OK.
Tzclient accepts RFC 2217©Úforce_notificationN)rÄ  r‚   r   Úcheck_modem_linesrd   s   &rF   rÈ  ÚPortManager._client_okä  s;   € ð #'ˆÔØ�;�;ˆ;Ø�K‰K×ÑÐ6Ô7ð 	×Ñ°$ÐÖ7r_   c                ó`   € V P                   P                  \        V,           V,           4       R# r£  )rQ   r?  r=  r¤  s   &&&rF   rh   ÚPortManager.telnet_send_optionø  s   € à�‰×Ñœc F�l¨VÕ3Ö4r_   c                óì   € VP                  \        \        4      pV P                  P	                  \        \
        ,           \        ,           V,           V,           \        ,           \        ,           4       R# )z&Subnegotiation of RFC 2217 parameters.N)r<  r=  r>  rQ   r?  rx  rÖ   ry  r¨  s   &&&rF   r�   Ú'PortManager.rfc2217_send_subnegotiationü  sB   € à—‘œc¤;Ó/ˆØ�‰×Ñœc¤B�h¬Õ8¸6ÕAÀEÕIÌCÕOÔRTÕTÖUr_   c                ó  € V P                   P                  ;'       d    \        V P                   P                  ;'       d    \        ,          V P                   P
                  ;'       d    \        ,          V P                   P                  ;'       d    \        ,          pY P                  ;'       g    ^ ,          pV\        ,          '       d   V\        ,          pV\        ,          '       d   V\        ,          pV\        ,          '       d   V\        ,          pV\        ,          '       d   V\        ,          pW P                  8w  g	   V'       d¯   V P                  '       d   W P                  ,          '       g	   V'       dm   V P!                  \"        \%        W P                  ,          .4      4       V P&                  '       d+   V P&                  P)                  RP+                  V4      4       V^ð,          V n	        R# R# )zhread control lines from serial port and compare the last value sent to remote.
send updates on changes.
r–  N)rÃ  r^  r]  rc  rb  rg  rf  rl  rk  rÆ  ÚMODEMSTATE_MASK_CTS_CHANGEÚMODEMSTATE_MASK_DSR_CHANGEÚMODEMSTATE_MASK_RI_CHANGEÚMODEMSTATE_MASK_CD_CHANGErÄ  rÅ  r�   rš  r   r‚   r   rc   )r[   rÍ  Ú
modemstateÚdeltass   &&  rF   rÎ  ÚPortManager.check_modem_lines  sp  € ð �[‰[�_‰_×4Ð4Ô!4Ø�[‰[�_‰_×4Ð4Ô!4õ6à�[‰[�^‰^×2Ð2Ô 2õ4ð �[‰[�^‰^×2Ð2Ô 2õ4ð 	ð ×3Ñ3×8Ð8°qÕ9ˆØÔ'×'Ô'ØÔ4Õ4ˆJØÔ'×'Ô'ØÔ4Õ4ˆJØÔ&×&Ô&ØÔ3Õ3ˆJØÔ&×&Ô&ØÔ3Õ3ˆJð ×-Ñ-Ô-×1CØ×'×'Ð'¨Z×:NÑ:N×-NÔ-N×TfØ×0Ñ0Ü,Ü˜j×+?Ñ+?Õ?Ð@ÓAôCð —;—;�;Ø—K‘K×$Ñ$Ð%<×%CÑ%CÀJÓ%OÔPð $.°Õ#4ˆDÖ ñ 2Dr_   c              #  ót   "  € \        V4       F$  pV\        8X  d   \        x € \        x € K   Vx € K&  	  R# 5i)zÓThis generator function is for the user. All outgoing data has to be
properly escaped, so that no IAC character in the data stream messes up
the Telnet state machine in the server.

socket.sendall(escape(data))
N)r   r=  ©r[   r6  r  s   && rF   ÚescapeÚPortManager.escape(  s+   é € ô ˜d–OˆDØ”sŒ{Ü’	Ü”	à”
ó $ùs   ‚68c              #  ó�  "  € \        V4       EF±  pV P                  \        8X  dH   V\        8X  d   \        V n        K1  V P
                  e   V ;P
                  V,          un        KZ  Vx € K`  V P                  \        8X  dþ   V\        8X  d:   V P
                  e   V ;P
                  V,          un        MVx € \        V n        K¹  V\        8X  d   \        4       V n        \        V n        Kà  V\        8X  d:   V P                  \        V P
                  4      4       RV n        \        V n        EK$  V\        \        \        \        39   d   W n        \         V n        EKS  V P#                  V4       \        V n        EKr  V P                  \         8X  g   EKŠ  V P%                  V P                  V4       \        V n        EK´  	  R# 5i)a¢  Handle a bunch of incoming bytes. This is a generator. It will yield
all characters not of interest for Telnet/RFC 2217.

The idea is that the reader thread pushes data from the socket through
this filter:

for byte in filter(socket.recv(1024)):
    # do things like CR/LF conversion/whatever
    # and write data to the serial port
    serial.write(byte)

(socket error handling code left as exercise for the reader)
N)r   r~  rt  r=  rw  r“   rx  r.  ry  rz  r3  rÔ   rÕ   rÒ   rÓ   r€  r{  r|  r}  rÝ  s   && rF   ÚfilterÚPortManager.filter9  s)  é € ô ˜d—OˆDØ�y‰yœHÔ$àœ3”;Ü *�D–Ið —~‘~Ò1ØŸš¨$Õ.Ÿà"œ
Ø—‘œjÔ(Øœ3”;ð —~‘~Ò1ØŸš¨$Õ.žà"š
Ü (�D–IØœR”Zä%.£[�D”NÜ (�D–IØœR”Zà×7Ñ7¼¸d¿n¹nÓ8MÔNØ%)�D”NÜ (�D—IØœb¤$¬¬dÐ3Ô3à*.Ô'Ü +�D—Ið ×0Ñ0°Ô6Ü (�D—IØ—‘œk×)Ø×-Ñ-¨d×.AÑ.AÀ4ÔHÜ$�—	óQ $ùs   ‚FGÆ.Gc                ó‚   € V P                   '       d-   V P                   P                  RP                  V4      4       R# R# rƒ  r„  rj   s   &&rF   r|  Ú#PortManager._telnet_process_commandt  r†  r_   c                óŠ  € RpV P                    F)  pVP                  V8X  g   K  VP                  V4       RpK+  	  V'       g€   V\        8X  g   V\        8X  dh   T P                  V\        8X  d   \        M\        V4       V P                  '       d-   V P                  P                  RP                  V4      4       R# R# R# R# rˆ  r‰  rŠ  s   &&&  rF   r}  Ú$PortManager._telnet_negotiate_optionz  rŽ  r_   c                ó”  € VR,          \         8X  Edã   V P                  '       d+   V P                  P                  RP                  V4      4       VR,          \        8X  dë   V P
                  P                  p \        P                  ! RVR,          4      w  pV^ 8w  d   W0P
                  n        V P                  '       dJ   V P                  P                  RP                  V'       d   RMRV P
                  P                  4      4       T P                  \        \        P                  ! RT P
                  P                  4      4       R
# VR,          \        8X  dë   V P
                  P                   p \        P                  ! RVR,          4      w  pV^ 8w  d   WPP
                  n        V P                  '       dJ   V P                  P                  RP                  V'       d   RMRV P
                  P                   4      4       T P                  \"        \        P                  ! RT P
                  P                   4      4       R
# VR,          \$        8X  Ed   V P
                  P&                  p \        P                  ! RVR,          4      ^ ,          pV^ 8w  d   \(        V,          V P
                  n        V P                  '       dJ   V P                  P                  RP                  V'       d   RMRV P
                  P&                  4      4       T P                  \*        \        P                  ! R\,        T P
                  P&                  ,          4      4       R
# VR,          \.        8X  Ed   V P
                  P0                  p \        P                  ! RVR,          4      ^ ,          pV^ 8w  d   \2        V,          V P
                  n        V P                  '       dJ   V P                  P                  RP                  V'       d   RMRV P
                  P0                  4      4       T P                  \4        \        P                  ! R\6        T P
                  P0                  ,          4      4       R
# VR,          \8        8X  EdA   VR,          \:        8X  d�   V P
                  P<                  '       d   V P                  \>        \@        4       R
# V P
                  PB                  '       d   V P                  \>        \D        4       R
# V P                  \>        \F        4       R
# VR,          \F        8X  dl   RV P
                  n        RV P
                  n!        V P                  '       d   V P                  P                  R4       V P                  \>        \F        4       R
# VR,          \@        8X  d[   RV P
                  n        V P                  '       d   V P                  P                  R4       V P                  \>        \@        4       R
# VR,          \D        8X  d[   RV P
                  n!        V P                  '       d   V P                  P                  R4       V P                  \>        \D        4       R
# VR,          \H        8X  d0   V P                  '       d   V P                  PK                  R4       R
# VR,          \L        8X  d[   RV P
                  n'        V P                  '       d   V P                  P                  R4       V P                  \>        \L        4       R
# VR,          \P        8X  d[   RV P
                  n'        V P                  '       d   V P                  P                  R4       V P                  \>        \P        4       R
# VR,          \R        8X  d0   V P                  '       d   V P                  PK                  R4       R
# VR,          \T        8X  d[   RV P
                  n+        V P                  '       d   V P                  P                  R4       V P                  \>        \T        4       R
# VR,          \X        8X  d[   RV P
                  n+        V P                  '       d   V P                  P                  R4       V P                  \>        \X        4       R
# VR,          \Z        8X  d0   V P                  '       d   V P                  PK                  R4       R
# VR,          \\        8X  d[   RV P
                  n/        V P                  '       d   V P                  P                  R4       V P                  \>        \\        4       R
# VR,          \`        8X  d[   RV P
                  n/        V P                  '       d   V P                  P                  R 4       V P                  \>        \`        4       R
# R
# VR,          \b        8X  d#   V P                  \d        \g        ^ .4      4       R
# VR,          \h        8X  dB   V P                  '       d   V P                  P                  R!4       V Pk                  RR"7       R
# VR,          \l        8X  d7   V P                  '       d   V P                  P                  R#4       RV n7        R
# VR,          \p        8X  d7   V P                  '       d   V P                  P                  R$4       RV n7        R
# VR,          \r        8X  db   \u        VR,          4      V n;        V P                  '       d7   V P                  P                  R%P                  V Pv                  4      4       R
# R
# VR,          \x        8X  db   \u        VR,          4      V n=        V P                  '       d7   V P                  P                  R&P                  V Pz                  4      4       R
# R
# VR,          \|        8X  EdÊ   VR,          \~        8X  dd   V P
                  P�                  4        V P                  '       d   V P                  P                  R'4       V P                  \‚        \~        4       R
# VR,          \„        8X  dd   V P
                  P‡                  4        V P                  '       d   V P                  P                  R(4       V P                  \‚        \„        4       R
# VR,          \ˆ        8X  d~   V P
                  P�                  4        V P
                  P‡                  4        V P                  '       d   V P                  P                  R)4       V P                  \‚        \ˆ        4       R
# V P                  '       d=   V P                  P                  R*P                  \‹        VR+,          4      4      4       R
# R
# V P                  '       d=   V P                  P                  R,P                  \‹        VR-,          4      4      4       R
# R
# V P                  '       d-   V P                  PK                  R.P                  V4      4       R
# R
#   \         dX   pT P                  '       d+   T P                  P                  R	P                  T4      4       Y P
                  n         R
p?ELˆR
p?ii ; i  \         dX   pT P                  '       d+   T P                  P                  RP                  T4      4       Y P
                  n         R
p?ELñR
p?ii ; i  \         dX   pT P                  '       d+   T P                  P                  RP                  T4      4       Y P
                  n         R
p?ELHR
p?ii ; i  \         dX   pT P                  '       d+   T P                  P                  RP                  T4      4       Y P
                  n         R
p?EL”R
p?ii ; i)/r�  r‘  zreceived COM_PORT_OPTION: {!r}r“  rø   :r”  é   Nz{} baud rate: {}rƒ   r1  zfailed to set baud rate: {}Nrù   r•  z{} data size: {}zfailed to set data size: {}z{} parity: {}zfailed to set parity: {}z{} stop bits: {}zfailed to set stop bits: {}Fzchanged flow control to NoneTz changed flow control to XON/XOFFzchanged flow control to RTS/CTSz'requested break state - not implementedzchanged BREAK to activezchanged BREAK to inactivez%requested DTR state - not implementedzchanged DTR to activezchanged DTR to inactivez%requested RTS state - not implementedzchanged RTS to activezchanged RTS to inactivezrequest for modem staterÌ  ÚsuspendÚresumezline state mask: 0x{:02x}zmodem state mask: 0x{:02x}zpurge inz	purge outz
purge bothzundefined PURGE_DATA: {!r}r—  zundefined COM_PORT_OPTION: {!r}:r’  NNzunknown subnegotiation: {!r})FrÖ   r‚   r
   rc   rØ   rÃ  r·   rÿ   Úunpackr   ri   r   r�   rÙ   r   rÚ   ÚbytesizerÛ   rÜ   r¹   ÚRFC2217_REVERSE_PARITY_MAPrÝ   r  rÞ   ÚstopbitsÚRFC2217_REVERSE_STOPBIT_MAPrß   r  râ   ÚSET_CONTROL_REQ_FLOW_SETTINGÚxonxoffrã   r
  Úrtsctsr	  r  ÚSET_CONTROL_REQ_BREAK_STATEr   rK  Úbreak_conditionrL  ÚSET_CONTROL_REQ_DTRrW  ÚdtrrX  ÚSET_CONTROL_REQ_RTSrQ  ÚrtsrR  ÚNOTIFY_LINESTATEr˜  r   r³  rÎ  rœ  r¡   r�  ÚSET_LINESTATE_MASKr™  rÇ  ÚSET_MODEMSTATE_MASKrÅ  rà   rC  rð   rá   rF  rñ   ÚPURGE_BOTH_BUFFERSÚlist)r[   r“   Úbackupr·   r'  r¸   r¹   rî  s   &&      rF   rz  Ú*PortManager._telnet_process_subnegotiation�  s¨
  € à�S�>œ_Õ,Ø�{�{ˆ{Ø—‘×!Ñ!Ð"B×"IÑ"IÈ)Ó"TÔUØ˜�~¤Ô-ØŸ™×-Ñ-�ð
xÜ"(§-¢-°°yÀµ~Ó"F‘K�XØ 1”}Ø/7Ÿ™Ô,ð —{—{�{ØŸ™×(Ñ(Ð);×)BÑ)BÏHÁ5ÐZ_Ðae×alÑal×auÑauÓ)vÔwØ×0Ñ0Ô1DÄfÇkÂkÐRWÐY]×YdÑYd×YmÑYmÓFnÖoØ˜3•¤<Ô/ØŸ™×-Ñ-�ð
xÜ"(§-¢-°°yÀµ~Ó"F‘K�XØ 1”}Ø/7Ÿ™Ô,ð —{—{�{ØŸ™×(Ñ(Ð);×)BÑ)BÏHÁ5ÐZ_Ðae×alÑal×auÑauÓ)vÔwØ×0Ñ0Ô1DÄfÇkÂkÐRWÐY]×YdÑYd×YmÑYmÓFnÖoØ˜3•¤:Õ-ØŸ™×+Ñ+�ð
qÜ#Ÿ]š]¨5°)¸Cµ.ÓAÀ!ÕD�FØ ”{Ü-GÈÕ-O˜Ÿ™Ô*ð —{—{�{ØŸ™×(Ñ(¨×)?Ñ)?ÏÁÐUZÐ\`×\gÑ\g×\nÑ\nÓ)oÔpØ×0Ñ0Ü%Ü—K’K Ô'9¸$¿+¹+×:LÑ:LÕ'MÓNöPð ˜3•¤<Õ/ØŸ™×-Ñ-�ð
xÜ%Ÿ}š}¨U°I¸cµNÓCÀAÕF�HØ 1”}Ü/JÈ8Õ/T˜Ÿ™Ô,ð —{—{�{ØŸ™×(Ñ(Ð);×)BÑ)BÏHÁ5ÐZ_Ðae×alÑal×auÑauÓ)vÔwØ×0Ñ0Ü'Ü—K’K Ô':¸4¿;¹;×;OÑ;OÕ'PÓQöSð ˜3•¤;Õ.Ø˜S•>Ô%AÔAØ—{‘{×*×*Ð*Ø×8Ñ8Ô9KÔMlÖmØŸ™×+×+Ð+Ø×8Ñ8Ô9KÔMlÖmà×8Ñ8Ô9KÔMlÖmØ˜s•^Ô'FÔFØ*/�D—K‘KÔ'Ø).�D—K‘KÔ&Ø—{—{�{ØŸ™×(Ñ(Ð)GÔHØ×4Ñ4Ô5GÔIhÖiØ˜s•^Ô'FÔFØ*.�D—K‘KÔ'Ø—{—{�{ØŸ™×(Ñ(Ð)KÔLØ×4Ñ4Ô5GÔIhÖiØ˜s•^Ô'FÔFØ)-�D—K‘KÔ&Ø—{—{�{ØŸ™×(Ñ(Ð)JÔKØ×4Ñ4Ô5GÔIhÖiØ˜s•^Ô'BÔBØ—{—{�{ØŸ™×+Ñ+Ð,UÔVÙØ˜s•^Ô';Ô;Ø26�D—K‘KÔ/Ø—{—{�{ØŸ™×(Ñ(Ð)BÔCØ×4Ñ4Ô5GÔI]Ö^Ø˜s•^Ô'<Ô<Ø27�D—K‘KÔ/Ø—{—{�{ØŸ™×(Ñ(Ð)DÔEØ×4Ñ4Ô5GÔI^Ö_Ø˜s•^Ô':Ô:Ø—{—{�{ØŸ™×+Ñ+Ð,SÔTÙØ˜s•^Ô'9Ô9Ø&*�D—K‘K”OØ—{—{�{ØŸ™×(Ñ(Ð)@ÔAØ×4Ñ4Ô5GÔI[Ö\Ø˜s•^Ô':Ô:Ø&+�D—K‘K”OØ—{—{�{ØŸ™×(Ñ(Ð)BÔCØ×4Ñ4Ô5GÔI\Ö]Ø˜s•^Ô':Ô:Ø—{—{�{ØŸ™×+Ñ+Ð,SÔTÙà˜s•^Ô'9Ô9Ø&*�D—K‘K”OØ—{—{�{ØŸ™×(Ñ(Ð)@ÔAØ×4Ñ4Ô5GÔI[Ö\Ø˜s•^Ô':Ô:Ø&+�D—K‘K”OØ—{—{�{ØŸ™×(Ñ(Ð)BÔCØ×4Ñ4Ô5GÔI\Ö]ñ	 ;ð ˜3•Ô#3Ô3à×0Ñ0Ü+Ü˜a˜S“Mö#ð ˜3•Ô#4Ô4Ø—;—;�;Ø—K‘K×$Ñ$Ð%>Ô?à×&Ñ&¸$Ð&Ö?Ø˜3•Ô#6Ô6Ø—;—;�;Ø—K‘K×$Ñ$ YÔ/Ø,0�Ö)Ø˜3•Ô#5Ô5Ø—;—;�;Ø—K‘K×$Ñ$ XÔ.Ø,1�Ö)Ø˜3•Ô#5Ô5Ü%(¨°3­Ó%8�Ô"Ø—;—;�;Ø—K‘K×$Ñ$Ð%@×%GÑ%GÈ×HZÑHZÓ%[Ö\ñ à˜3•Ô#6Ô6Ü'*¨9°S­>Ó':�Ô$Ø—;—;�;Ø—K‘K×$Ñ$Ð%A×%HÑ%HÈ×I]ÑI]Ó%^Ö_ñ à˜3•¤:Õ-Ø˜S•>Ô%9Ô9Ø—K‘K×2Ñ2Ô4Ø—{—{�{ØŸ™×(Ñ(¨Ô4Ø×4Ñ4Ô5FÔH\Ö]Ø˜s•^Ô'<Ô<Ø—K‘K×3Ñ3Ô5Ø—{—{�{ØŸ™×(Ñ(¨Ô5Ø×4Ñ4Ô5FÔH]Ö^Ø˜s•^Ô'9Ô9Ø—K‘K×2Ñ2Ô4Ø—K‘K×3Ñ3Ô5Ø—{—{�{ØŸ™×(Ñ(¨Ô6Ø×4Ñ4Ô5FÔHZÖ[à—{—{�{ØŸ™×)Ñ)Ð*F×*MÑ*MÌdÐS\Ð]_ÕS`ÓNaÓ*bÖcñ #ð —;—;�;Ø—K‘K×%Ñ%Ð&G×&NÑ&NÌtÐT]Ð^`ÕTaÓObÓ&cÖdñ ð �{�{ˆ{Ø—‘×#Ñ#Ð$B×$IÑ$IÈ)Ó$TÖUñ øôe "ô 2Ø—{—{�{ØŸ™×)Ñ)Ð*G×*NÑ*NÈqÓ*QÔRØ+1—K‘K×(Ò(ûð2ûô "ô 2Ø—{—{�{ØŸ™×)Ñ)Ð*G×*NÑ*NÈqÓ*QÔRØ+1—K‘K×(Ò(ûð2ûô "ô 0Ø—{—{�{ØŸ™×)Ñ)Ð*D×*KÑ*KÈAÓ*NÔOØ)/—K‘K×&Ò&ûð0ûô  "ô 2Ø—{—{�{ØŸ™×)Ñ)Ð*G×*NÑ*NÈqÓ*QÔRØ+1—K‘K×(Ò(ûð2úsf   Á97x6 Å57z É2A|  ÎA}% ø6zùAzúzú{=ú&A{8û8{=ü }"üA}ý}"ý%ý0Aÿ)rÄ  r¡   r¦   rQ   rÆ  rÇ  r‚   r~  rÅ  rÃ  r“   r€  r@   r¼  )F)rn   ro   rp   rq   rr   r]   rÈ  rh   r�   rÎ  rÞ  rá  r|  r}  rz  rs   rt   ru   s   @rF   rÁ  rÁ  º  sL   ø‡ € ñô HòF8ò(5ôVô 5òHò"7%òvQòW÷&~Vð ~Vr_   rÁ  Ú__main__zrfc2217://localhost:7000r»  z{}
z	write...
s   hello
z	read: {}
)’Ú
__future__r   r  rÆ   rÿ   rÏ   r‹   r  ÚImportErrorÚurllib.parseÚparserÎ   ÚqueuerÃ  Úserial.serialutilr   r   r   r   r   r	   ÚDEBUGÚINFOÚWARNINGÚERRORr!  ry  ÚNOPÚDMÚBRKÚIPÚAOÚAYTÚECÚELÚGArx  rÒ   rÓ   rÔ   rÕ   r=  r>  rÑ   r²   r×   rÖ   rØ   rÚ   rÜ   rÞ   râ   rù  r³  rœ  r�  rú  rû  rà   rÙ   rÛ   rÝ   rß   rã   r˜  rš  ÚSERVER_FLOWCONTROL_SUSPENDÚSERVER_FLOWCONTROL_RESUMEÚSERVER_SET_LINESTATE_MASKÚSERVER_SET_MODEMSTATE_MASKrá   ÚRFC2217_ANSWER_MAPrð  r  r
  r	  ró  rK  rL  rõ  rW  rX  r÷  rQ  rR  ÚSET_CONTROL_REQ_FLOW_SETTING_INÚ"SET_CONTROL_USE_NO_FLOW_CONTROL_INÚ!SET_CONTROL_USE_SW_FLOW_CONTOL_INÚ!SET_CONTROL_USE_HW_FLOW_CONTOL_INÚ SET_CONTROL_USE_DCD_FLOW_CONTROLÚ SET_CONTROL_USE_DTR_FLOW_CONTROLÚ SET_CONTROL_USE_DSR_FLOW_CONTROLÚLINESTATE_MASK_TIMEOUTÚLINESTATE_MASK_SHIFTREG_EMPTYÚLINESTATE_MASK_TRANSREG_EMPTYÚLINESTATE_MASK_BREAK_DETECTÚLINESTATE_MASK_FRAMING_ERRORÚLINESTATE_MASK_PARTIY_ERRORÚLINESTATE_MASK_OVERRUN_ERRORÚLINESTATE_MASK_DATA_READYrk  rf  rb  r]  rØ  r×  rÖ  rÕ  rC  rF  rü  ÚPARITY_NONEÚ
PARITY_ODDÚPARITY_EVENÚPARITY_MARKÚPARITY_SPACEr  Údictr  rí  ÚSTOPBITS_ONEÚSTOPBITS_ONE_POINT_FIVEÚSTOPBITS_TWOr  rï  rt  rw  r{  rJ   rK   rL   rM   ÚobjectrO   rx   r™   rÁ  rn   ÚsysÚsÚstdoutr?  rc   Úflushr8  rò   rA   r_   rF   Ú<module>r6     sj  ðõz 'ã Û Û Û Û ð$ÛðÛó ÷)÷ )ð ˆW�]‰]Ø
ˆG�L‰LØˆw�‰ØˆW�]‰]ð	€ð €Ø€Ø€Ø€Ø€Ø€Ø€Ø€Ø€Ø€Ø€Ø€Ø€Ø€Ø€Ø€Ø€ð 
€Ø€Ø€ð €ð €Ø€Ø€
Ø€Ø€ØÐ ØÐ ØÐ ØÐ ØÐ ØÐ Ø€
àÐ ØÐ ØÐ ØÐ ØÐ Ø!Ð Ø"Ð Ø$Ð Ø#Ð Ø#Ð Ø$Ð ØÐ ð Ð%ØÐ%ØÐ!ØÐ%ØÐ#ØÐ-ØÐ/ØÐ3ØÐ1ØÐ1ØÐ3ØÐ!ðÐ ð  'Ð Ø")Ð Ø")Ð Ø")Ð Ø%Ð ØÐ ØÐ ØÐ ØÐ ØÐ ØÐ ØÐ ØÐ Ø")Ð Ø%,Ð "Ø$+Ð !Ø$+Ð !Ø#*Ð  Ø#*Ð  Ø#*Ð  àÐ Ø "Ð Ø "Ð Ø Ð Ø Ð ØÐ Ø Ð ØÐ àÐ ØÐ ØÐ ØÐ ØÐ ØÐ ØÐ ØÐ àÐ ØÐ ØÐ ð
 ×Ñ˜Ø
×Ñ�qØ
×Ñ˜Ø
×Ñ˜Ø
×Ñ˜ðÐ ñ "Ñ!PÐ5G×5MÑ5MÔ5OÓ!PÓPÐ ð ×Ñ˜Ø
×"Ñ" AØ
×Ñ˜ðÐ ñ
 #Ñ"RÐ6I×6OÑ6OÔ6QÓ"RÓRÐ ð €Ø€
Ø€ð €	Ø	€Ø€Ø#€ôCN�6ô CNôLDp˜6ô DpôNzGˆZô zGô@QV�&ô QVðj ˆzÔÛÙÐ)¨6Ó2€AØ‡J‚J×Ò�V—]’] 1Ó%Ô&à‡J‚J×Ò�\Ô"Ø‡G‚GˆJÔØ‡G‚G„IØ‡J‚J×Ò�\×(Ò(¨¯ª°«Ó3Ô4Ø‡G‚G†Iñ øðS( ô $ß#Ð#ð$ûð ô Þðús"   œK ¡K, ËK)Ë(K)Ë,K;Ë:K;