+
    Ž,»_Ð“  ã                   óò  € ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RI	H
t
 ]P                  ! R 4        ] R t ! R R]4      t]P(                  R	8X  d$   ^ RIt^ RIt^ RIt ! R
 R]4      t ! R R]4      tMJ]P(                  R8X  d   ^ RIt^ RIt^ RIt ! R R]4      tM!]! RP=                  ]P.                  4      4      h ! R R]4      t ! R R]4      t  ! R R]4      t! ! R R]4      t" ! R R]4      t# ! R R]#4      t$ ! R R]4      t% ! R R ]4      t& ! R! R"]4      t'R#] R$]!R%]"/t(R&]R']#R(]$R)]%R*]&R+]'/t)R, t* ! R- R.]4      t+R1R/ lt,]-R08X  d
   ],! 4        R# R#   ] d	    ]t]t EL8i ; i)2é    )Úabsolute_importN)Úcomports)Úhexlify_codecc                 ó>   € V R 8X  d   \         P                  ! 4       # R# )ÚhexlifyN)r   Úgetregentry©Úcs   &Ú7/usr/lib/python3/dist-packages/serial/tools/miniterm.pyÚ<lambda>r      s   € ¸¸i¼œ-×3Ò3Ó5ÐQÈTÐQó    c                ó~   € \        V 4      pV^ 8  d"   RP                  \        R4      V,           4      # \        V 4      # )z)generate a readable description for a keyz	Ctrl+{:c}Ú@)ÚordÚformatÚrepr)Ú	characterÚ
ascii_codes   & r   Úkey_descriptionr   !   s6   € ä�Y“€JØ�B„Ø×!Ñ!¤# c£(¨ZÕ"7Ó8Ð8ä�I‹Ðr   c                   óZ   a € ] tR t^+t o RtR tR tR tR tR t	R t
R tR	 tR
 tRtV tR# )ÚConsoleBasez8OS abstraction for console (input/output codec, no echo)c                óÄ   € \         P                  R8¼  d!   \         P                  P                  V n        M\         P                  V n        \         P                  V n        R# ©é   N)r   r   )ÚsysÚversion_infoÚstdoutÚbufferÚbyte_outputÚoutput©Úselfs   &r   Ú__init__ÚConsoleBase.__init__.   s9   € Ü×Ñ˜vÔ%Ü"Ÿz™z×0Ñ0ˆDÕä"Ÿz™zˆDÔÜ—j‘jˆŽr   c                ó   € R# )z.Set console to read single characters, no echoN© r!   s   &r   ÚsetupÚConsoleBase.setup5   ó   ‚ r   c                ó   € R# )z Restore default console settingsNr&   r!   s   &r   ÚcleanupÚConsoleBase.cleanup8   r)   r   c                ó   € R# )z"Read a single key from the consoleNr&   r!   s   &r   ÚgetkeyÚConsoleBase.getkey;   s   € ár   c                óp   € V P                   P                  V4       V P                   P                  4        R# )zWrite bytes (already encoded)N)r   ÚwriteÚflush)r"   Úbyte_strings   &&r   Úwrite_bytesÚConsoleBase.write_bytes?   s(   € à×Ñ×Ñ˜{Ô+Ø×Ñ×ÑÖ r   c                óp   € V P                   P                  V4       V P                   P                  4        R# )zWrite stringN)r    r1   r2   ©r"   Útexts   &&r   r1   ÚConsoleBase.writeD   s$   € à�‰×Ñ˜$ÔØ�‰×ÑÖr   c                ó   € R# )zCancel getkey operationNr&   r!   s   &r   ÚcancelÚConsoleBase.cancelI   r)   r   c                ó&   € V P                  4        V # ©N)r+   r!   s   &r   Ú	__enter__ÚConsoleBase.__enter__P   s   € Ø�‰ŒØˆr   c                ó&   € V P                  4        R # r>   )r'   )r"   ÚargsÚkwargss   &*,r   Ú__exit__ÚConsoleBase.__exit__T   s   € Ø�
‰
Žr   )r   r    N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r#   r'   r+   r.   r4   r1   r;   r?   rD   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r   +   s:   ø‡ € ÙBò!ò=ò/òò!ò
ò
&ò÷ð r   r   Úntc                   ó6   a € ] tR t^]t o RtR tR tR tRtV t	R# )ÚOutz$file-like wrapper that uses os.writec                ó   € Wn         R # r>   ©Úfd)r"   rT   s   &&r   r#   ÚOut.__init__`   s   € ØŽGr   c                ó   € R # r>   r&   r!   s   &r   r2   Ú	Out.flushc   s   € Ùr   c                óH   € \         P                  ! V P                  V4       R # r>   )Úosr1   rT   )r"   Úss   &&r   r1   Ú	Out.writef   s   € Ü�HŠH�T—W‘W˜aÖ r   rS   N)
rF   rG   rH   rI   rJ   r#   r2   r1   rK   rL   rM   s   @r   rQ   rQ   ]   s   ø‡ € Ù2ò	ò	÷	!ð 	!r   rQ   c                   óœ   a a€ ] tR t^it oRRRRRRRRR	R
RRRRRRRRRR/
tRRRRRRRRRRRR R!R"R#R$R%R&R'R(/
tV 3R) ltR* tR+ tR, t	R-t
VtV ;t# ).ÚConsoleÚ;zbOPÚ<zbOQÚ=zbORÚ>zbOSÚ?zb[15~r   zb[17~ÚAzb[18~ÚBzb[19~ÚCzb[20~ÚDzb[21~ÚHz[AÚPz[BÚKz[DÚMz[CÚGz[HÚOz[FÚRz[2~ÚSz[3~ÚIz[5~ÚQz[6~c                óÖ  <€ \         \        V `  4        \        P                  P
                  P                  4       V n        \        P                  P
                  P                  4       V n	        \        P                  P
                  P                  R 4       \        P                  P
                  P                  R 4       \        P                  ! 4       R8X  EdW   \        \        P                  ! 4       P!                  R4      ^,          4      R8”  Ed   ^p^ RIHp \'        VR4      '       g&   \        P(                  ! VP*                  4      Vn        \        P                  P
                  P.                  p\        P                  P
                  P0                  p\        P                  P
                  P2                  pVP+                  4       pV! V! R4      \        P4                  ! V4      4       VP6                  V,          ^ 8X  d'   V! V! R4      VP6                  V,          4       W`n        \:        P<                  ! R4      ! \?        \@        PB                  PE                  4       4      R4      V n#        \:        P<                  ! R4      ! \?        \@        PH                  PE                  4       4      R4      \@        n$        V PF                  \@        n!        RV PF                  n%        R# )	iéý  Ú10Ú.iZ)  NÚLPDWORDúUTF-8Úreplaceéõÿÿÿ)&Úsuperr]   r#   ÚctypesÚwindllÚkernel32ÚGetConsoleOutputCPÚ
_saved_ocpÚGetConsoleCPÚ
_saved_icpÚSetConsoleOutputCPÚSetConsoleCPÚplatformÚreleaseÚintÚversionÚsplitÚctypes.wintypesÚwintypesÚhasattrÚPOINTERÚDWORDrt   ÚSetConsoleModeÚGetConsoleModeÚGetStdHandleÚbyrefÚvalueÚ	_saved_cmÚcodecsÚ	getwriterrQ   r   r   Úfilenor    ÚstderrÚencoding)r"   Ú"ENABLE_VIRTUAL_TERMINAL_PROCESSINGrˆ   rŒ   r�   rŽ   ÚmodeÚ	__class__s   &      €r   r#   ÚConsole.__init__ƒ   sÙ  ø€ Ü”'˜4Ñ)Ô+Ü$Ÿm™m×4Ñ4×GÑGÓIˆDŒOÜ$Ÿm™m×4Ñ4×AÑAÓCˆDŒOÜ�M‰M×"Ñ"×5Ñ5°eÔ<Ü�M‰M×"Ñ"×/Ñ/°Ô6ô ×ÒÓ! TÕ)¬c´(×2BÒ2BÓ2D×2JÑ2JÈ3Ó2OÐPQÕ2RÓ.SÐV[Õ.[Ø5;Ð2Ý2Ü˜x¨×3Ò3Ü'-§~¢~°h·n±nÓ'E�HÔ$Ü!'§¡×!7Ñ!7×!FÑ!F�Ü!'§¡×!7Ñ!7×!FÑ!F�Ü%Ÿ}™}×5Ñ5×BÑB�Ø—~‘~Ó'�Ù™|¨CÓ0´&·,²,¸tÓ2DÔEØ—J‘JÐ!CÕCÈÔIÙ"¡<°Ó#4°d·j±jÐCeÕ6eÔfØ%)”NÜ ×*Ò*¨7Ô3´C¼¿
¹
×8IÑ8IÓ8KÓ4LÈiÓXˆDŒKä×)Ò)¨'Ô2´3´s·z±z×7HÑ7HÓ7JÓ3KÈYÓWŒCŒJØŸ™ŒCŒJØ#*ˆD�K‰KÖ r   c                ó®  € \         P                  P                  P                  V P                  4       \         P                  P                  P                  V P                  4        \         P                  P                  P                  \         P                  P                  P                  R4      V P                  4       R#   \         d     R# i ; i)é   Nrw   )ry   rz   r{   r€   r}   r�   r   rŒ   rŽ   r‘   ÚAttributeErrorr!   s   &r   Ú__del__ÚConsole.__del__ž   sˆ   € Ü�M‰M×"Ñ"×5Ñ5°d·o±oÔFÜ�M‰M×"Ñ"×/Ñ/°·±Ô@ðÜ—‘×&Ñ&×5Ñ5´f·m±m×6LÑ6L×6YÑ6YÐZ]Ó6^Ð`d×`nÑ`nÖoøÜ!ô Úðús   Á(AC ÃCÃCc                ó^  €  \         P                  ! 4       pV\        ^4      8X  d   \        ^
4      # V\        ^ 4      J g   V\        ^à4      J dL    \         P                  ! 4       pV\        ^ 4      J d   V P                  V,          # V P                  V,          # V#   \
         d     Kª  i ; i)T)ÚmsvcrtÚgetwchÚunichrÚfncodesÚnavcodesÚKeyError)r"   ÚzÚcodes   &  r   r.   ÚConsole.getkey¦   s�   € ØÜ—M’M“O�Øœ˜r›
”?Ü! "›:Ð%Øœ& ›)“^ q¬F°4«LÓ'8ðÜ%Ÿ}š}›˜Ø¤ q£	›>Ø#'§<¡<°Õ#5Ð5à#'§=¡=°Õ#6Ð6ð �Høô $ô Úðús   Á6B ÂB ÂB,Â+B,c                ó®   € \         P                  P                  P                  4       p\         P                  P                  P                  VR ^^ 4       R# )é   N)ry   rz   r{   ÚGetConsoleWindowÚuser32ÚPostMessageA)r"   Úhwnds   & r   r;   ÚConsole.cancel·   s:   € ô —=‘=×)Ñ)×:Ñ:Ó<ˆDÜ�M‰M× Ñ ×-Ñ-¨d°E¸4ÀÖCr   )r‘   r   r}   r    )rF   rG   rH   rI   r¤   r¥   r#   rž   r.   r;   rK   rL   Ú__classcell__©r™   rN   s   @@r   r]   r]   i   s”   ù‡ € à�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�ð
ˆð �Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�Ø�ð
ˆõ	+ò6	ò	÷"	Dò 	Dr   r]   Úposixc                   óJ   a a€ ] tR t^Ât oV 3R ltR tR tR tR tRt	Vt
V ;t# )r]   c                óâ  <€ \         \        V `  4        \        P                  P                  4       V n        \        P                  ! V P                  4      V n	        \        P                  ! V P                  4       \        P                  R8  dJ   \        P                  ! \        P                  P                   4      ! \        P                  4      V n        R# \        P                  V n        R# r   )rx   r]   r#   r   Ústdinr”   rT   ÚtermiosÚ	tcgetattrÚoldÚatexitÚregisterr+   r   r’   Ú	getreaderr–   Ú	enc_stdin)r"   r™   s   &€r   r#   rš   Ã   sˆ   ø€ Ü”'˜4Ñ)Ô+Ü—i‘i×&Ñ&Ó(ˆDŒGÜ×(Ò(¨¯©Ó1ˆDŒHÜ�OŠO˜DŸL™LÔ)Ü×Ñ &Ô(Ü!'×!1Ò!1´#·)±)×2DÑ2DÔ!EÄcÇiÁiÓ!P�–ä!$§¡�–r   c                óª  € \         P                  ! V P                  4      pV^,          \         P                  ( ,          \         P                  ( ,          \         P
                  ( ,          V^&   ^V^,          \         P                  &   ^ V^,          \         P                  &   \         P                  ! V P                  \         P                  V4       R# )r   N)
r·   r¸   rT   ÚICANONÚECHOÚISIGÚVMINÚVTIMEÚ	tcsetattrÚTCSANOW)r"   Únews   & r   r'   ÚConsole.setupÍ   s‚   € Ü×#Ò# D§G¡GÓ,ˆCØ˜•VœwŸ~™~˜oÕ-´·±°Õ=ÄÇÁÀÕMˆC�‰FØ#$ˆC��F”7—<‘<Ñ Ø$%ˆC��F”7—=‘=Ñ!Ü×Ò˜dŸg™g¤w§¡¸Ö<r   c                ór   € V P                   P                  ^4      pV\        ^4      8X  d   \        ^4      pV# )é   )r½   Úreadr£   )r"   r
   s   & r   r.   r©   Ô   s0   € Ø—‘×#Ñ# AÓ&ˆAØ”F˜4“LÔ Ü˜1“I�ØˆHr   c                óf   € \         P                  ! V P                  \        P                  R 4       R# )ó    N)ÚfcntlÚioctlrT   r·   ÚTIOCSTIr!   s   &r   r;   r°   Ú   s   € Ü�KŠK˜Ÿ™¤§¡°%Ö8r   c                óz   € \         P                  ! V P                  \         P                  V P                  4       R # r>   )r·   rÄ   rT   Ú	TCSAFLUSHr¹   r!   s   &r   r+   ÚConsole.cleanupÝ   s"   € Ü×Ò˜dŸg™g¤w×'8Ñ'8¸$¿(¹(ÖCr   )r½   rT   r¹   )rF   rG   rH   rI   r#   r'   r.   r;   r+   rK   rL   r±   r²   s   @@r   r]   r]   Â   s%   ù‡ € õ	+ò	=ò	ò	9÷	Dò 	Dr   z9Sorry no implementation for your platform ({}) available.c                   ó6   a € ] tR t^çt o RtR tR tR tRtV t	R# )Ú	Transformz&do-nothing: forward all data unchangedc                ó   € V# )ztext received from serial portr&   r7   s   &&r   ÚrxÚTransform.rxé   ó   € àˆr   c                ó   € V# )ztext to be sent to serial portr&   r7   s   &&r   ÚtxÚTransform.txí   rØ   r   c                ó   € V# )z(text to be sent but displayed on consoler&   r7   s   &&r   ÚechoÚTransform.echoñ   rØ   r   r&   N)
rF   rG   rH   rI   rJ   rÖ   rÚ   rÝ   rK   rL   rM   s   @r   rÔ   rÔ   ç   s   ø‡ € Ù0òò÷ð r   rÔ   c                   ó*   a € ] tR t^öt o RtR tRtV tR# )ÚCRLFzENTER sends CR+LFc                ó&   € VP                  R R4      # )Ú
ú
©rv   r7   s   &&r   rÚ   ÚCRLF.txù   s   € Ø�|‰|˜D &Ó)Ð)r   r&   N)rF   rG   rH   rI   rJ   rÚ   rK   rL   rM   s   @r   rà   rà   ö   s   ø‡ € Ù÷*ð *r   rà   c                   ó0   a € ] tR t^ýt o RtR tR tRtV tR# )ÚCRzENTER sends CRc                ó&   € VP                  R R4      # )Úrâ   rä   r7   s   &&r   rÖ   ÚCR.rx   ó   € Ø�|‰|˜D $Ó'Ð'r   c                ó&   € VP                  R R4      # )râ   ré   rä   r7   s   &&r   rÚ   ÚCR.tx  rë   r   r&   N©	rF   rG   rH   rI   rJ   rÖ   rÚ   rK   rL   rM   s   @r   rç   rç   ý   s   ø‡ € Ùò(÷(ð (r   rç   c                   ó   € ] tR tRtRtRtR# )ÚLFi  zENTER sends LFr&   N)rF   rG   rH   rI   rJ   rK   r&   r   r   rð   rð     s   † Ýr   rð   c                   ó‚   a € ] tR tRt o Rt]! R ]! ^ 4       4       4      t]P                  ^R^›R/4       R t	]	t
RtV tR# )	Ú
NoTerminali  z0remove typical terminal control codes from inputc              #  ó\   "  € T F"  p\        V4      R 9  g   K  VRV,           3x € K$  	  R# 5i)ú
	é $  N)r£   ©Ú.0Úxs   & r   Ú	<genexpr>ÚNoTerminal.<genexpr>  s&   é € Ð]±I¨qÄÈÃÐR\ÑA\œ?˜A˜v¨�z�?³Iùs   ‚,™,é!$  é%$  c                ó8   € VP                  V P                  4      # r>   )Ú	translateÚREPLACEMENT_MAPr7   s   &&r   rÖ   ÚNoTerminal.rx  s   € Ø�~‰~˜d×2Ñ2Ó3Ð3r   r&   N)rF   rG   rH   rI   rJ   ÚdictÚrangerÿ   ÚupdaterÖ   rÝ   rK   rL   rM   s   @r   rò   rò     sE   ø‡ € Ù:áÑ]±E¸"´IÓ]Ó]€OØ×Ñà�&Ø�&ð	
ôò4ð †Dr   rò   c                   ór   € ] tR tRtRt]! R ]! ^ 4       4       4      t]P                  ^ R^R^›R/4       Rt	R# )	Ú
NoControlsi  z%Remove all control codes, incl. CR+LFc              #  ó6   "  € T F  qR V,           3x € K  	  R# 5i)rõ   Nr&   rö   s   & r   rù   ÚNoControls.<genexpr>  s   é € Ð>±I¨q˜v¨�z�?³Iùs   ‚i#$  rû   rü   r&   N)
rF   rG   rH   rI   rJ   r  r  rÿ   r  rK   r&   r   r   r  r    s@   † Ù/áÑ>±E¸"´IÓ>Ó>€OØ×Ñà�&Ø�&Ø�&ð	
÷ð r   r  c                   ó.   a € ] tR tRt o RtR t]tRtV tR# )Ú	Printablei'  zMShow decimal code for all non-ASCII characters and replace most control codesc           	     óx  € . pV F¢  pR Tu;8:  d   R8  g
   M VR9   d   VP                  V4       K.  VR 8  d-   VP                  \        R\        V4      ,           4      4       Ka  VP                  R RP	                  \        V4      4       4       4       VP                  R 4       K¤  	  RP                  V4      # )Ú Úrô   rõ   c              3   óf   "  € T F'  p\        R \        V4      ,           ^0,
          4      x € K)  	  R# 5i)i€   N)r£   r   )r÷   Úds   & r   rù   ÚPrintable.rx.<locals>.<genexpr>2  s'   é € ÐUÑ?T¸!œ ¬¨Q«¥°"Õ 4×5Ð5Ó?Tùs   ‚/1z{:d}Ú )Úappendr£   r   Úextendr   Újoin)r"   r8   Úrr
   s   &&  r   rÖ   ÚPrintable.rx*  sŠ   € ØˆÛˆAØ�aÖ ˜&Ö  A¨¤OØ—‘˜–Ø�S”Ø—‘œ ¬¨Q«¥Ó0Ö1à—‘ÑU¸v¿}¹}ÌSÐQRËVÔ?TÓUÔUØ—‘˜–ñ ð �w‰w�q‹zÐr   r&   N)	rF   rG   rH   rI   rJ   rÖ   rÝ   rK   rL   rM   s   @r   r	  r	  '  s   ø‡ € ÙWò
ð †Dr   r	  c                   ó6   a € ] tR tRt o RtR tR tR tRtV t	R# )ÚColorizei9  z,Apply different colors for received and echoc                ó"   € R V n         RV n        R# )z[37mz[31mN)Úinput_colorÚ
echo_colorr!   s   &r   r#   ÚColorize.__init__<  s   € à%ˆÔØ$ˆŽr   c                ó(   € V P                   V,           # r>   )r  r7   s   &&r   rÖ   ÚColorize.rxA  s   € Ø×Ñ $Õ&Ð&r   c                ó(   € V P                   V,           # r>   )r  r7   s   &&r   rÝ   ÚColorize.echoD  s   € Ø�‰ Õ%Ð%r   )r  r  N)
rF   rG   rH   rI   rJ   r#   rÖ   rÝ   rK   rL   rM   s   @r   r  r  9  s   ø‡ € Ù6ò%ò
'÷&ð &r   r  c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )ÚDebugIOiH  zPrint what is sent and receivedc                óž   € \         P                  P                  R P                  V4      4       \         P                  P	                  4        V# )z [RX:{!r}] ©r   r•   r1   r   r2   r7   s   &&r   rÖ   Ú
DebugIO.rxK  ó4   € Ü�
‰
×Ñ˜×-Ñ-¨dÓ3Ô4Ü�
‰
×ÑÔØˆr   c                óž   € \         P                  P                  R P                  V4      4       \         P                  P	                  4        V# )z [TX:{!r}] r#  r7   s   &&r   rÚ   Ú
DebugIO.txP  r%  r   r&   Nrî   rM   s   @r   r!  r!  H  s   ø‡ € Ù)ò÷
ð r   r!  ÚcrlfÚcrÚlfÚdirectÚdefaultÚ	nocontrolÚ	printableÚcolorizeÚdebugc                 ó  € \         P                  P                  R4       . p \        \	        \        4       4      ^4       FI  w  pw  r#p\         P                  P                  RP                  WV4      4       V P                  V4       KK  	   \        R4      p \        V4      ^,
          p^ Tu;8:  d   \        V 4      8  g$   M \         P                  P                  R4       KZ   W,          pV#   \         d     T# i ; i)z’Show a list of ports and ask the user for a choice. To make selection
easier on systems with long device names, also allow the input of an
index.
z
--- Available ports:
z--- {:2}: {:20} {!r}
z#--- Enter port index or full name: z--- Invalid index!
)r   r•   r1   Ú	enumerateÚsortedr   r   r  Ú	raw_inputr„   ÚlenÚ
ValueError)ÚportsÚnÚportÚdescÚhwidÚindexs         r   Úask_for_portr=  k  sâ   € ô ‡J�J×ÑÐ/Ô0Ø€EÜ!*¬6´(³*Ó+=¸qÖ!AÑˆÑˆD˜Ü�
‰
×ÑÐ1×8Ñ8¸À$ÓGÔHØ�‰�TÖñ "Bð ÜÐ>Ó?ˆð	 Ü˜“I •MˆEØ˜Ö*¤ E£
Ö*Ü—
‘
× Ñ Ð!7Ô8Ùð +ð •<ˆDØˆøô	 ô 	Øð ˆð		ús   ÂAC1 Ã1D Ã?D c                   ó²   a € ] tR tRt o RtRR ltR tR tR t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R tR tR tR tR tRtV tR# )ÚMinitermi„  zƒTerminal application. Copy data from serial port to console and vice versa.
Handle special keys from the console to show menu etc.
c                ó$  € \        4       V n        Wn        W n        R V n        RV n        RV n        W0n        W@n        V P                  4        \        ^4      V n        \        ^4      V n        RV n        RV n        RV n        RV n        RV n        R# )Fru   N)r]   ÚconsoleÚserialrÝ   ÚrawÚinput_encodingÚoutput_encodingÚeolÚfiltersÚupdate_transformationsr£   Úexit_characterÚmenu_characterÚaliveÚ_reader_aliveÚreceiver_threadÚ
rx_decoderÚ
tx_decoder)r"   Úserial_instancerÝ   rF  rG  s   &&&&&r   r#   ÚMiniterm.__init__Š  s   € Ü“yˆŒØ%ŒØŒ	ØˆŒØ%ˆÔØ&ˆÔØŒØŒØ×#Ñ#Ô%Ü$ T›lˆÔÜ$ T›lˆÔØˆŒ
Ø!ˆÔØ#ˆÔØˆŒØˆŽr   c                ó¸   € RV n         \        P                  ! V P                  RR7      V n        RV P                  n        V P                  P                  4        R# )zStart reader threadTrÖ   ©ÚtargetÚnameN)rL  Ú	threadingÚThreadÚreaderrM  ÚdaemonÚstartr!   s   &r   Ú_start_readerÚMiniterm._start_readerœ  sC   € à!ˆÔä(×/Ò/°t·{±{ÈÔNˆÔØ&*ˆ×ÑÔ#Ø×Ñ×"Ñ"Ö$r   c                ó´   € RV n         \        V P                  R4      '       d   V P                  P                  4        V P                  P                  4        R# )z6Stop reader thread only, wait for clean exit of threadFÚcancel_readN)rL  r‰   rB  r^  rM  r  r!   s   &r   Ú_stop_readerÚMiniterm._stop_reader¤  s=   € à"ˆÔÜ�4—;‘; ×.Ò.Ø�K‰K×#Ñ#Ô%Ø×Ñ×!Ñ!Ö#r   c                ó  € RV n         V P                  4        \        P                  ! V P                  RR7      V n        RV P
                  n        V P
                  P                  4        V P                  P                  4        R# )zstart worker threadsTrÚ   rS  N)
rK  r[  rV  rW  ÚwriterÚtransmitter_threadrY  rZ  rA  r'   r!   s   &r   rZ  ÚMiniterm.start«  s^   € àˆŒ
Ø×ÑÔä"+×"2Ò"2¸$¿+¹+ÈDÔ"QˆÔØ)-ˆ×ÑÔ&Ø×Ñ×%Ñ%Ô'Ø�‰×ÑÖr   c                ó   € RV n         R# )zset flag to stop worker threadsFN)rK  r!   s   &r   ÚstopÚMiniterm.stopµ  s	   € àˆŽ
r   c                óî   € V P                   P                  4        V'       gS   \        V P                  R4      '       d   V P                  P	                  4        V P
                  P                  4        R# R# )z$wait for worker threads to terminater^  N)rc  r  r‰   rB  r^  rM  )r"   Útransmit_onlys   &&r   r  ÚMiniterm.join¹  sO   € à×Ñ×$Ñ$Ô&ßÜ�t—{‘{ M×2Ò2Ø—‘×'Ñ'Ô)Ø× Ñ ×%Ñ%Ö'ñ r   c                ó:   € V P                   P                  4        R # r>   )rB  Úcloser!   s   &r   rl  ÚMiniterm.closeÁ  s   € Ø�‰×ÑÖr   c                ó  € \         V P                  ,          .V P                   Uu. uF  p\        V,          NK  	  up,           pV Uu. uF	  q3! 4       NK  	  upV n        \        \        V P                  4      4      V n        R# u upi u upi )zFtake list of transformation classes and instantiate them for rx and txN)ÚEOL_TRANSFORMATIONSrF  rG  ÚTRANSFORMATIONSÚtx_transformationsÚlistÚreversedÚrx_transformations)r"   ÚfÚtransformationsÚts   &   r   rH  ÚMiniterm.update_transformationsÄ  s}   € ä.¨t¯x©xÕ8Ð9ØFJÇlÂló=TÙFRÀô >MÈQ×=OÐ=OÙFRñ=Tõ Tˆá0?Ó"@±¨1 1¦3±Ñ"@ˆÔÜ"&¤x°×0GÑ0GÓ'HÓ"IˆÖùò=Tùâ"@s   ¦BÁ	B
c                óT   € Wn         \        P                  ! V4      ! V4      V n        R# )zset encoding for received dataN)rD  r’   ÚgetincrementaldecoderrN  ©r"   r–   Úerrorss   &&&r   Úset_rx_encodingÚMiniterm.set_rx_encodingË  s   € à&ÔÜ ×6Ò6°xÔ@ÀÓHˆŽr   c                óT   € Wn         \        P                  ! V4      ! V4      V n        R# )z!set encoding for transmitted dataN)rE  r’   ÚgetincrementalencoderÚ
tx_encoderr{  s   &&&r   Úset_tx_encodingÚMiniterm.set_tx_encodingÐ  s   € à'ÔÜ ×6Ò6°xÔ@ÀÓHˆŽr   c                óB  € \         P                  P                  RP                  V P                  R7      4       \         P                  P                  RP                  V P                  P
                  '       d   RMRV P                  P                  '       d   RMRV P                  P                  '       d   RMR4      4        \         P                  P                  RP                  V P                  P                  '       d   RMRV P                  P                  '       d   RMRV P                  P                  '       d   RMRV P                  P                  '       d   RMR4      4       \         P                  P                  RP                  V P                  P                  '       d   RMR4      4       \         P                  P                  RP                  V P                  P                  '       d   RMR4      4       \         P                  P                  R	P                  V P                  4      4       \         P                  P                  R
P                  V P                   4      4       \         P                  P                  RP                  V P"                  P%                  4       4      4       \         P                  P                  RP                  RP'                  V P(                  4      4      4       R#   \        P                   d     EL¯i ; i)z$Write current settings to sys.stderrzK
--- Settings: {p.name}  {p.baudrate},{p.bytesize},{p.parity},{p.stopbits}
©Úpz&--- RTS: {:8}  DTR: {:8}  BREAK: {:8}
ÚactiveÚinactivez---- CTS: {:8}  DSR: {:8}  RI: {:8}  CD: {:8}
z--- software flow control: {}
z--- hardware flow control: {}
ú--- serial input encoding: {}
ú--- serial output encoding: {}
z--- EOL: {}
ú--- filters: {}
r  N)r   r•   r1   r   rB  ÚrtsÚdtrÚbreak_conditionÚctsÚdsrÚriÚcdÚSerialExceptionÚxonxoffÚrtsctsrD  rE  rF  Úupperr  rG  r!   s   &r   Údump_port_settingsÚMiniterm.dump_port_settingsÕ  s	  € ä�
‰
×ÑÐh×oÑoØ�k‰kð pó ô 	ä�
‰
×ÑÐB×IÑIØŸ™ŸŸ˜‰X¨jØŸ™ŸŸ˜‰X¨jØŸ™×4×4Ð4‰X¸*óGô 	Hð		Ü�J‰J×ÑÐM×TÑTØ!Ÿ[™[Ÿ_Ÿ_˜_‘°*Ø!Ÿ[™[Ÿ_Ÿ_˜_‘°*Ø!Ÿ[™[Ÿ^Ÿ^˜^‘°Ø!Ÿ[™[Ÿ^Ÿ^˜^‘°ó	>ô ?ô 	�
‰
×ÑÐ:×AÑAÈdÏkÉk×Na×NaÐNaÁ(ÐgqÓrÔsÜ�
‰
×ÑÐ:×AÑAÈdÏkÉk×N`×N`ÐN`Á(ÐfpÓqÔrÜ�
‰
×ÑÐ:×AÑAÀ$×BUÑBUÓVÔWÜ�
‰
×ÑÐ;×BÑBÀ4×CWÑCWÓXÔYÜ�
‰
×Ñ˜×/Ñ/°·±·±Ó0@ÓAÔBÜ�
‰
×ÑÐ,×3Ñ3°C·H±H¸T¿\¹\Ó4JÓKÖLøô ×%Ñ%ô 	ò ð	ús*   Ã?L ÄL Ä$L ÅL Å"L ÌLÌLc                óf  €  V P                   '       dã   V P                  '       dÏ   V P                  P                  V P                  P                  ;'       g    ^4      pV'       g   Kg  V P
                  '       d   V P                  P                  V4       K–  V P                  P                  V4      pV P                   F  pVP                  V4      pK  	  V P                  P                  V4       Kò  R# R#   \        P                   d$    RT n         T P                  P                  4        h i ; i)zloop and copy serial->consoleFN)rK  rL  rB  rÊ   Ú
in_waitingrC  rA  r4   rN  Údecodert  rÖ   r1   r“  r;   )r"   Údatar8   Útransformations   &   r   rX  ÚMiniterm.readerî  sà   € ð	Ø—*—*�* ×!3×!3Ð!3à—{‘{×'Ñ'¨¯©×(>Ñ(>×(CÐ(CÀ!ÓD�ß‘4Ø—x—x�xØŸ™×0Ñ0°Ö6à#Ÿ™×5Ñ5°dÓ;˜Ø.2×.EÔ.E˜NØ#1×#4Ñ#4°TÓ#:šDñ /FàŸ™×*Ñ*¨4Ö0ñ "4‘*øô ×%Ñ%ô 	ØˆDŒJØ�L‰L×ÑÔ!Øð	ús(   ‚C8 ”C8 ¦1C8 ÁC8 Á)C8 Á;A9C8 Ã88D0c                óÞ  € Rp V P                   '       Ed6    V P                  P                  4       pV P                   '       g   R# V'       d   V P	                  V4       RpK_  W P
                  8X  d   RpKs  W P                  8X  d   V P                  4        R# TpV P                   F  pVP                  V4      pK  	  V P                  P                  V P                  P                  V4      4       V P                  '       g   EK  TpV P                   F  pVP                  V4      pK  	  V P                  P                  V4       EKH  R#   \         d    Rp EL,i ; i   RT n         h ; i)z�Loop and copy console->serial until self.exit_character character is
found. When self.menu_character is found, interpret the next key
locally.
FÚTN)rK  rA  r.   ÚKeyboardInterruptÚhandle_menu_keyrJ  rI  rf  rq  rÚ   rB  r1   r�  ÚencoderÝ   )r"   Úmenu_activer
   r8   r�  Ú	echo_texts   &     r   rb  ÚMiniterm.writer  s0  € ð ˆð	Ø—*—*‘*ðØŸ™×+Ñ+Ó-�Að —z—z�zÙßØ×(Ñ(¨Ô+Ø"'’KØ×-Ñ-Ô-Ø"&’KØ×-Ñ-Ô-Ø—I‘I”KÙð �DØ*.×*AÔ*A˜Ø-×0Ñ0°Ó6šñ +Bà—K‘K×%Ñ% d§o¡o×&<Ñ&<¸TÓ&BÔCØ—y—y“yØ$%˜	Ø.2×.EÔ.E˜NØ(6×(;Ñ(;¸IÓ(FšIñ /FàŸ™×*Ñ*¨9×5ñ3 øô )ô Ø“Aðûð.	ØˆDŒJØúsH   „E" ˜E ²E" ÁE" ÁA	E" ÂA)E" ÄAE" ÅEÅE" ÅEÅE" Å"
E,c                ó¨  € WP                   8X  g   WP                  8X  df   V P                  P                  V P                  P                  V4      4       V P                  '       d   V P                  P                  V4       R%# R%# VR8X  d   V P                  4        R%# VR9   d0   \        P                  P                  V P                  4       4       R%# VR8X  dy   V P                  P                  '       * V P                  n        \        P                  P                  RP                  V P                  P                  '       d   RMR4      4       R%# VR8X  dy   V P                  P                  '       * V P                  n        \        P                  P                  RP                  V P                  P                  '       d   RMR4      4       R%# VR	8X  dy   V P                  P                  '       * V P                  n        \        P                  P                  R
P                  V P                  P                  '       d   RMR4      4       R%# VR8X  d[   V P                  '       * V n        \        P                  P                  RP                  V P                  '       d   RMR4      4       R%# VR8X  d   V P!                  4        R%# VR8X  d©   \#        \$        4      pVP'                  V P(                  4      ^,           pV\+        V4      8¼  d   ^ pW#,          V n        \        P                  P                  RP                  V P(                  P-                  4       4      4       V P/                  4        R%# VR8X  d   V P1                  4        R%# VR8X  d   V P3                  4        R%# VR9   d   V P5                  4        R%# VR9   d   V P7                  4        R%# VR9   d   V P9                  4        R%# VR8X  d2   \        P:                  V P                  n        V P3                  4        R%# VR8X  d2   \        P>                  V P                  n        V P3                  4        R%# VR9   d2   \        P@                  V P                  n!        V P3                  4        R%# VR9   d2   \        PD                  V P                  n!        V P3                  4        R%# VR9   d2   \        PF                  V P                  n!        V P3                  4        R%# VR9   d2   \        PH                  V P                  n!        V P3                  4        R%# VR9   d2   \        PJ                  V P                  n!        V P3                  4        R%# VR8X  d2   \        PL                  V P                  n'        V P3                  4        R%# VR8X  d2   \        PP                  V P                  n'        V P3                  4        R%# VR8X  d2   \        PR                  V P                  n'        V P3                  4        R%# VR9   d'   VR 8H  V P                  n*        V P3                  4        R%# VR!9   d'   VR"8H  V P                  n+        V P3                  4        R%# VR#9   d   V PY                  4        R%# \        P                  P                  R$P                  \[        V4      4      4       R%# )&z"Implement a simple menu / settingsÚzhH?Úz--- RTS {} ---
r‡  rˆ  Úz--- DTR {} ---
Úz--- BREAK {} ---
Úz--- local echo {} ---
ÚÚz--- EOL: {} ---
ÚÚ	ÚpPÚzZÚbBÚ8Ú7ÚeEÚoOÚmMÚsSÚnNÚ1Ú2Ú3ÚxXÚXÚrRrm   ÚqQz!--- unknown menu character {} --
N).rJ  rI  rB  r1   r�  r£  rÝ   rA  Úupload_filer   r•   Úget_help_textrŒ  r   r�  rŽ  Úchange_filterrr  ro  r<  rF  r5  r–  rH  Úchange_encodingr—  Úchange_portÚsuspend_portÚchange_baudrateÚ	EIGHTBITSÚbytesizeÚ	SEVENBITSÚPARITY_EVENÚparityÚ
PARITY_ODDÚPARITY_MARKÚPARITY_SPACEÚPARITY_NONEÚSTOPBITS_ONEÚstopbitsÚSTOPBITS_TWOÚSTOPBITS_ONE_POINT_FIVEr”  r•  rf  r   )r"   r
   ÚmodesrF  s   &&  r   r¢  ÚMiniterm.handle_menu_key'  sˆ  € à×#Ñ#Ô# q×,?Ñ,?Ô'?à�K‰K×Ñ˜dŸo™o×4Ñ4°QÓ7Ô8Ø�y�yˆyØ—‘×"Ñ" 1Ö%ñ à�&Œ[Ø×ÑÖØ�)Œ^Ü�J‰J×Ñ˜T×/Ñ/Ó1Ö2Ø�&Œ[Ø"&§+¡+§/¡/Ô1ˆD�K‰KŒOÜ�J‰J×ÑÐ/×6Ñ6À4Ç;Á;Ç?Ç?À?±xÐXbÓcÖdØ�&Œ[Ø"&§+¡+§/¡/Ô1ˆD�K‰KŒOÜ�J‰J×ÑÐ/×6Ñ6À4Ç;Á;Ç?Ç?À?±xÐXbÓcÖdØ�&Œ[Ø.2¯k©k×.IÑ.IÔ*IˆD�K‰KÔ'Ü�J‰J×ÑÐ1×8Ñ8ÀTÇ[Á[×E`×E`ÐE`¹ÐfpÓqÖrØ�&Œ[Ø ŸI™IœˆDŒIÜ�J‰J×ÑÐ6×=Ñ=È$Ï)Ï)È)¹hÐYcÓdÖeØ�&Œ[Ø×ÑÖ Ø�&Œ[ÜÔ,Ó-ˆEØ—+‘+˜dŸh™hÓ'¨!Õ+ˆCØ”c˜%“jÔ Ø�Ø•zˆDŒHÜ�J‰J×ÑÐ0×7Ñ7¸¿¹¿¹Ó8HÓIÔJØ×'Ñ'Ö)Ø�&Œ[Ø× Ñ Ö"Ø�&Œ[Ø×#Ñ#Ö%ð �$ŒYØ×ÑÖØ�$ŒYØ×ÑÖØ�$ŒYØ× Ñ Ö"Ø�#ŒXÜ#)×#3Ñ#3ˆD�K‰KÔ Ø×#Ñ#Ö%Ø�#ŒXÜ#)×#3Ñ#3ˆD�K‰KÔ Ø×#Ñ#Ö%Ø�$ŒYÜ!'×!3Ñ!3ˆD�K‰KÔØ×#Ñ#Ö%Ø�$ŒYÜ!'×!2Ñ!2ˆD�K‰KÔØ×#Ñ#Ö%Ø�$ŒYÜ!'×!3Ñ!3ˆD�K‰KÔØ×#Ñ#Ö%Ø�$ŒYÜ!'×!4Ñ!4ˆD�K‰KÔØ×#Ñ#Ö%Ø�$ŒYÜ!'×!3Ñ!3ˆD�K‰KÔØ×#Ñ#Ö%Ø�#ŒXÜ#)×#6Ñ#6ˆD�K‰KÔ Ø×#Ñ#Ö%Ø�#ŒXÜ#)×#6Ñ#6ˆD�K‰KÔ Ø×#Ñ#Ö%Ø�#ŒXÜ#)×#AÑ#AˆD�K‰KÔ Ø×#Ñ#Ö%Ø�$ŒYØ#$¨¡8ˆD�K‰KÔØ×#Ñ#Ö%Ø�$ŒYØ"# s¡(ˆD�K‰KÔØ×#Ñ#Ö%Ø�$ŒYØ�I‰IŽKä�J‰J×ÑÐA×HÑHÌÐYZÓI[Ó\Ö]r   c           	     óÔ  € \         P                  P                  R4       \         P                  P                  4        V P                  ;_uu_ 4        \         P
                  P                  4       P                  R4      pV'       dì    \        VR4      ;_uu_ 4       p\         P                  P                  RP                  V4      4        VP                  R4      pV'       g   MVV P                  P                  V4       V P                  P                  4        \         P                  P                  R4       Kq  RRR4       \         P                  P                  RP                  V4      4       RRR4       R#   + '       g   i     LH; i  \         d9   p\         P                  P                  R	P                  Y4      4        Rp?L[Rp?ii ; i  + '       g   i     R# ; i)
z,Ask user for filenname and send its contentsz
--- File to upload: rã   Úrbz--- Sending file {} ---
i   rs   Nz
--- File {} sent ---
z"--- ERROR opening file {}: {} ---
)r   r•   r1   r2   rA  r¶   ÚreadlineÚrstripÚopenr   rÊ   rB  ÚIOError)r"   Úfilenameru  ÚblockÚes   &    r   rÂ  ÚMiniterm.upload_file}  s?  € ä�
‰
×ÑÐ1Ô2Ü�
‰
×ÑÔØ�\�\‹\Ü—y‘y×)Ñ)Ó+×2Ñ2°6Ó:ˆHßð`Ü˜h¨×-Ô-°ÜŸ
™
×(Ñ(Ð)D×)KÑ)KÈHÓ)UÔVØ"Ø$%§F¡F¨4£L˜Eß#(Ø %Ø ŸK™K×-Ñ-¨eÔ4à ŸK™K×-Ñ-Ô/ÜŸJ™J×,Ñ,¨SÖ1÷ .ô —J‘J×$Ñ$Ð%?×%FÑ%FÀxÓ%PÔQ÷ ‰\÷ .×-ûô ô `Ü—J‘J×$Ñ$Ð%J×%QÑ%QÐRZÓ%^×_Ñ_ûð`ú÷ �\ˆ\úsP   Á6GÂ	FÂAE=	Ã&AE=	Ä=6FÅ=FÆFÆGÆ.GÇ	GÇGÇGÇG'	c           	     ó˜  € \         P                  P                  R4       \         P                  P                  RP                  R \	        \
        P                  4       4       4       4      4       \         P                  P                  RP                  RP                  V P                  4      4      4       V P                  ;_uu_ 4        \         P                  P                  4       P                  4       P                  4       pRRR4       X'       d[   V F>  pV\
        9  g   K  \         P                  P                  RP                  V4      4        M	  Wn        V P                  4        \         P                  P                  RP                  RP                  V P                  4      4      4       R#   + '       g   i     L»; i)	zchange the i/o transformationsz
--- Available Filters:
râ   c              3   óH   "  € T F  w  rR P                  W4      x € K  	  R# 5i)z---   {:<10} = {.__doc__}N©r   ©r÷   ÚkÚvs   &  r   rù   Ú)Miniterm.change_filter.<locals>.<genexpr>–  s'   é € ð #9á7‘�ð (×.Ñ.¨q×4Ð4Û7ùó   ‚ "z$
--- Enter new filter name(s) [{}]: r  Nz--- unknown filter: {!r}
r‹  )r   r•   r1   r  r3  rp  Úitemsr   rG  rA  r¶   rÚ  Úlowerr†   rH  )r"   Únew_filtersru  s   &  r   rÄ  ÚMiniterm.change_filter“  s+  € ä�
‰
×ÑÐ5Ô6Ü�
‰
×Ñ˜Ÿ™ñ #9äœ×4Ñ4Ó6Ô7ó#9ó 9ô 	:ô 	�
‰
×ÑÐ@×GÑGÈÏÉÐQU×Q]ÑQ]ÓH^Ó_Ô`Ø�\�\‹\ÜŸ)™)×,Ñ,Ó.×4Ñ4Ó6×<Ñ<Ó>ˆK÷ çÛ �ØœOÖ+Ü—J‘J×$Ñ$Ð%A×%HÑ%HÈÓ%KÔLÙñ !ð
  +”Ø×+Ñ+Ô-Ü�
‰
×ÑÐ,×3Ñ3°C·H±H¸T¿\¹\Ó4JÓKÖL÷ �\ús   Ã;F9Æ9G		c                ó  € \         P                  P                  RP                  V P                  4      4       V P
                  ;_uu_ 4        \         P                  P                  4       P                  4       pRRR4       X'       d:    \        P                  ! V4       V P                  V4       V P                  V4       \         P                  P                  RP                  V P                  4      4       \         P                  P                  RP                  V P                  4      4       R#   + '       g   i     LÃ; i  \         d2    \         P                  P                  RP                  T4      4        LÀi ; i)z"change encoding on the serial portz#
--- Enter new encoding name [{}]: Nz--- invalid encoding name: {}
r‰  rŠ  )r   r•   r1   r   rD  rA  r¶   rÚ  Ústripr’   Úlookupr}  r‚  ÚLookupErrorrE  )r"   Únew_encodings   & r   rÅ  ÚMiniterm.change_encoding¦  s  € ä�
‰
×ÑÐ?×FÑFÀt×GZÑGZÓ[Ô\Ø�\�\‹\ÜŸ9™9×-Ñ-Ó/×5Ñ5Ó7ˆL÷ çð3Ü—’˜lÔ+ð ×$Ñ$ \Ô2Ø×$Ñ$ \Ô2Ü�
‰
×ÑÐ:×AÑAÀ$×BUÑBUÓVÔWÜ�
‰
×ÑÐ;×BÑBÀ4×CWÑCWÓXÖY÷ �\ûô
 ô YÜ—
‘
× Ñ Ð!B×!IÑ!IÈ,Ó!WÖXðYús   Á-D5ÂE Ä5E	Å9FÆFc                ód  € \         P                  P                  R4       \         P                  P                  4        V P                  ;_uu_ 4        V P
                  P                  p \        \         P                  P                  4       P                  4       4      V P
                  n        V P                  4        RRR4       R#   \         dI   p\         P                  P                  RP                  T4      4       YP
                  n         Rp?LXRp?ii ; i  + '       g   i     R# ; i)zchange the baudratez
--- Baudrate: z#--- ERROR setting baudrate: {} ---
N)r   r•   r1   r2   rA  rB  Úbaudrater„   r¶   rÚ  rï  r—  r6  r   )r"   Úbackuprà  s   &  r   rÈ  ÚMiniterm.change_baudrate¶  sÅ   € ä�
‰
×ÑÐ+Ô,Ü�
‰
×ÑÔØ�\�\‹\Ø—[‘[×)Ñ)ˆFð*Ü'*¬3¯9©9×+=Ñ+=Ó+?×+EÑ+EÓ+GÓ'H�—‘Ô$ð
 ×'Ñ'Ô)÷ ‰\øô ô .Ü—
‘
× Ñ Ð!G×!NÑ!NÈqÓ!QÔRØ'-—‘×$Ñ$ûð.ú÷	 �\ˆ\ús7   ÁDÁ*ACÂ.DÃDÃ>DÄDÄDÄDÄD/	c                óð  € V P                   ;_uu_ 4         \        4       pRRR4       X'       EdG   WP                  P                  8w  Ed*   V P                  4        V P                  P                  4       p \        P                  ! VRR7      pVP                  V4       V P                  P                  Vn	        V P                  P                  Vn
        VP                  4        V P                  P                  Vn        V P                  P                  4        W0n        \        P                  P!                  RP#                  V P                  P                  4      4       V P'                  4        R# R# R#   \         d    Rp ELii ; i  + '       g   i     ELv; i  \$         dI   p\        P                  P!                  RP#                  T4      4       XP                  4         Rp?LŒRp?ii ; i)z;Have a conversation with the user to change the serial portNT)Údo_not_openz--- Port changed to: {} ---
z#--- ERROR opening new port: {} ---
)rA  r=  r¡  rB  r9  r_  ÚgetSettingsDictÚserial_for_urlÚapplySettingsDictrŒ  r�  rÜ  rŽ  rl  r   r•   r1   r   Ú	Exceptionr[  )r"   r9  ÚsettingsÚ
new_serialrà  s   &    r   rÆ  ÚMiniterm.change_portÄ  s`  € à�\�\‹\ðÜ#“~�÷ ÷
 ˆ4�DŸK™K×,Ñ,Õ,à×ÑÔà—{‘{×2Ñ2Ó4ˆHð[Ü#×2Ò2°4ÀTÔJ�
à×,Ñ,¨XÔ6Ø!%§¡§¡�
”Ø!%§¡§¡�
”Ø—‘Ô!Ø-1¯[©[×-HÑ-H�
Ô*ð
 —‘×!Ñ!Ô#Ø(”Ü—
‘
× Ñ Ð!@×!GÑ!GÈÏÉ×HXÑHXÓ!YÔZà×ÑÖ ñ+ -‰4øô %ô Ø“ðú÷ �\ˆ\ûô$ ô #Ü—
‘
× Ñ Ð!G×!NÑ!NÈqÓ!QÔRØ× Ñ ×"Ñ"ûð#úsA   •F—
E:Á8B
F" Å:FÆFÆ
FÆFÆF	Æ"G5Æ->G0Ç0G5c                óÊ  € V P                  4        V P                  P                  4        \        P                  P                  RP                  V P                  P                  4      4       RpV P                  P                  '       g¥   \        P                  P                  RP                  \        V P                  4      R7      4       V P                  P                  4       pW P                  8X  d   V P                  4        M'VR9   d   RpM V P                  P                  4        KÀ  V'       d   V P!                  4        R# V P#                  4        \        P                  P                  R	P                  V P                  P                  4      4       R#   \         d;   p\        P                  P                  RP                  T4      4        Rp?EKn  Rp?ii ; i)
zTopen port temporarily, allow reconnect, exit and port change to get
out of the loop
z
--- Port closed: {} ---
FzC--- Quit: {exit} | p: port change | any other key to reconnect ---
)Úexitr±  Tz--- ERROR opening port: {} ---
Nz--- Port opened: {} ---
)r_  rB  rl  r   r•   r1   r   r9  Úis_openr   rI  rA  r.   rf  rÜ  rý  rÆ  r[  )r"   Údo_change_portræ  rà  s   &   r   rÇ  ÚMiniterm.suspend_portâ  s\  € ð 	×ÑÔØ�‰×ÑÔÜ�
‰
×ÑÐ6×=Ñ=¸d¿k¹k×>NÑ>NÓOÔPØˆØ—+‘+×%×%Ð%Ü�J‰J×ÑÐc×jÑjÜ$ T×%8Ñ%8Ó9ð kó ;ô <à—‘×#Ñ#Ó%ˆAØ×'Ñ'Ô'Ø—	‘	”ØØ�d”Ø!%�ØðOØ—‘× Ñ Ö"÷ Ø×ÑÖð ×ÑÔ Ü�J‰J×ÑÐ8×?Ñ?ÀÇÁ×@PÑ@PÓQÖRøô ô OÜ—
‘
× Ñ Ð!C×!JÑ!JÈ1Ó!M×NÓNûðOús   ÄF ÆG"Æ(.GÇG"c                óH  € RP                  \        \        RR4      \        V P                  4      \        V P
                  4      \        R4      \        R4      \        R4      \        R4      \        R4      \        R	4      \        R
4      \        R4      \        R4      R7      # )zreturn the help textab  
--- pySerial ({version}) - miniterm - help
---
--- {exit:8} Exit program (alias {menu} Q)
--- {menu:8} Menu escape key, followed by:
--- Menu keys:
---    {menu:7} Send the menu character itself to remote
---    {exit:7} Send the exit character itself to remote
---    {info:7} Show info
---    {upload:7} Upload file (prompt will be shown)
---    {repr:7} encoding
---    {filter:7} edit filters
--- Toggles:
---    {rts:7} RTS   {dtr:7} DTR   {brk:7} BREAK
---    {echo:7} echo  {eol:7} EOL
---
--- Port settings ({menu} followed by the following):
---    p          change port
---    7 8        set data bits
---    N E O S M  change parity (None, Even, Odd, Space, Mark)
---    1 2 3      set stop bits (1, 2, 1.5)
---    b          change baud rate
---    x X        disable/enable software flow control
---    r R        disable/enable hardware flow control
ÚVERSIONzunknown versionr©  rª  r«  r¬  r°  r¨  r¯  r­  r®  )r…   r  ÚmenurŒ  r�  ÚbrkrÝ   ÚinfoÚuploadr   ÚfilterrF  )r   ÚgetattrrB  r   rI  rJ  r!   s   &r   rÃ  ÚMiniterm.get_help_text  s�   € ð÷0 �F”7œ6 9Ð.?Ó@Ü × 3Ñ 3Ó4Ü × 3Ñ 3Ó4Ü˜vÓ&Ü˜vÓ&Ü˜vÓ&Ü Ó'Ü Ó'Ü! &Ó)Ü Ó'Ü! &Ó)Ü˜vÓ&ð ó (ð1#	(r   )rL  rK  rA  rÝ   rF  rI  rG  rD  rJ  rE  rC  rM  rN  rt  rB  rc  rO  r�  rq  N)Fr(  r&   )Frä   )rF   rG   rH   rI   rJ   r#   r[  r_  rZ  rf  r  rl  rH  r}  r‚  r—  rX  rb  r¢  rÂ  rÄ  rÅ  rÈ  rÆ  rÇ  rÃ  rK   rL   rM   s   @r   r?  r?  „  s„   ø‡ € ñô
ò$%ò$òòô(òòJôIô
Iò
Mò2ò&$òLT^òl`ò,Mò&Zò *ò!ò<S÷>&(ð &(r   r?  c           
     ó’  € ^ RI pVP                  RR7      pVP                  RRRV R7       VP                  RR\        R	VR
7       VP	                  R4      pVP                  R. R^OR RRR7       VP                  RRRRR7       VP                  RRRRR7       VP                  R\        RVR7       VP                  R\        RVR7       VP                  RRRR R!R"7       VP                  R#RR$RR7       VP	                  R%4      pVP                  R&R'RR(RR7       VP                  R)R*R+R,R-R.7       VP                  R/R0R1R2R3. R47       VP                  R5. R_OR7 R8R6R7       VP                  R9RR:RR7       VP	                  R;4      pVP                  R<\        R=R>^R?7       VP                  R@\        R=RA^R?7       VP	                  RB4      pVP                  RCRDRRERR7       VP                  RFRRGRR7       VP                  4       pVP                  VP                  8X  d   VP                  RH4       VP                  '       dÃ   RIVP                  9   d¥   \        P                  P                  RJ4       \        P                  P                  RKP                  RL \        \        P!                  4       4       4       4      4       \        P                  P                  RK4       \        P"                  ! ^4       VP                  pMRM.p VP$                  e   VP$                  RN8X  d4    \'        4       Vn        VP$                  '       g   VP                  RO4        \*        P,                  ! VP$                  VP.                  VP0                  VP2                  VP4                  R!RQ7      p	\7        V	RR4      '       g   ^V	n        VP:                  ef   VP<                  '       gC   \        P                  P                  RSP?                  VP:                  '       d   RTMRU4      4       VP:                  V	n        VP@                  ef   VP<                  '       gC   \        P                  P                  RVP?                  VP@                  '       d   RTMRU4      4       VP@                  V	n         \C        V	\*        PD                  4      '       d   VPF                  V	n#        V	PI                  4         \Q        T	TPR                  TPT                  PW                  4       TRX7      p\Y        TP                  4      Tn-        \Y        TP                  4      Tn.        TP^                  Tn/        TPa                  TPb                  4       TPe                  TPb                  4       TP<                  '       g­   \        P                  P                  RYP?                  TP*                  RZ7      4       \        P                  P                  R[P?                  \g        TPZ                  4      \g        TP\                  4      \g        TP\                  4      \g        R\4      4      4       TPi                  4         TP                  R!4       TP<                  '       g    \        P                  P                  R]4       TP                  4        TPk                  4        R#   \(         d5    \        P                  P                  RK4       TP                  RP4        EL­i ; i  \*        PJ                   d�   p
\        P                  P                  RWP?                  TP$                  T
4      4       TPL                  '       d   h TPN                  '       g   \        P"                  ! ^4        Rp
?
EK”  RNTn         Rp
?
EK¢  Rp
?
ii ; i  \(         d     ELIi ; i)`zCommand line tool, entry pointNz9Miniterm - A simple terminal program for the serial port.)Údescriptionr9  rb   z(serial port name ("-" to show port list))ÚnargsÚhelpr,  rõ  z#set baud rate, default: %(default)s)r  Útyper  r,  zport settingsz--parityÚNc                 ó"   € V P                  4       # r>   ©r–  r	   s   &r   r   Úmain.<locals>.<lambda>G  ó
   € �q—w‘w”yr   z*set parity, one of {N E O S M}, default: N)Úchoicesr  r  r,  z--rtsctsÚ
store_truez)enable RTS/CTS flow control (default off)F)Úactionr  r,  z	--xonxoffz*enable software flow control (default off)z--rtsz2set initial RTS line state (possible values: 0, 1))r  r  r,  z--dtrz2set initial DTR line state (possible values: 0, 1)z--non-exclusiveÚ	exclusiveÚstore_falsez disable locking for native portsT)Údestr  r  r,  z--askz"ask again for port when open failszdata handlingz-ez--echozenable local echo (default off)z
--encodingÚserial_port_encodingÚCODECzXset the encoding for the serial port (e.g. hexlify, Latin1, UTF-8), default: %(default)sru   )r  Úmetavarr  r,  z-fz--filterr  ÚNAMEzadd text transformation)r  r!  r  r,  z--eolrà   c                 ó"   € V P                  4       # r>   r  r	   s   &r   r   r  ‰  r  r   zend of line modez--rawz)Do no apply any encodings/transformationsÚhotkeysz--exit-charÚNUMzWUnicode of special character that is used to exit the application, default: %(default)s)r  r!  r  r,  z--menu-charz_Unicode code of special character that is used to control miniterm (menu), default: %(default)sÚdiagnosticsz-qz--quietzsuppress non-error messagesz	--developzshow Python traceback on errorz.--exit-char can not be the same as --menu-charr  zAvailable filters:
râ   c              3   óH   "  € T F  w  rR P                  W4      x € K  	  R# 5i)z{:<10} = {.__doc__}Nrä  rå  s   &  r   rù   Úmain.<locals>.<genexpr>¹  s'   é € ð '=á;‘D�Að &×,Ñ,¨Q×2Ð2Û;ùré  r,  Ú-zport is not givenz"user aborted and port is not given)rÍ  r•  r”  rù  r^  z--- forcing DTR {}
r‡  rˆ  z--- forcing RTS {}
zcould not open port {!r}: {}
)rÝ   rF  rG  zP--- Miniterm on {p.name}  {p.baudrate},{p.bytesize},{p.parity},{p.stopbits} ---
r…  z6--- Quit: {} | Menu: {} | Help: {} followed by {} ---
Úz
--- exit ---
)r  ÚErl   rn   rj   )rç   rð   rà   )6ÚargparseÚArgumentParserÚadd_argumentr„   Úadd_argument_groupÚ
parse_argsÚ	menu_charÚ	exit_charÚerrorr  r   r•   r1   r  r3  rp  rê  r  r9  r=  r¡  rB  rû  rõ  rÍ  r•  r”  r‰   Útimeoutr�  Úquietr   rŒ  Ú
isinstanceÚSerialr  rÜ  r“  ÚdevelopÚaskr?  rÝ   rF  rë  r£   rI  rJ  rC  r}  r  r‚  r   rZ  rl  )Údefault_portÚdefault_baudrateÚdefault_rtsÚdefault_dtrr,  ÚparserÚgrouprB   rG  rP  rà  Úminiterms   &&&&        r   ÚmainrA  -  sÛ  € ó à×$Ñ$ØOð %ó Q€Fð ×ÑØØØ7Øð	 ô ð ×ÑØØÜØ2Ø ð ô "ð ×%Ñ% oÓ6€Eà	×ÑØÚ)Ù Ø9Øð ô ð 
×ÑØØØ8Øð	 ô ð 
×ÑØØØ9Øð	 ô ð 
×ÑØÜØAØð	 ô ð 
×ÑØÜØAØð	 ô ð 
×ÑØØØØ/Øð ô ð 
×ÑØØØ1Øð	 ô ð ×%Ñ% oÓ6€Eà	×ÑØˆhØØ.Øð	 ô ð 
×ÑØØ#ØØgØð ô ð 
×ÑØˆjØØØ&Øð ô ð 
×ÑØÚ$Ù ØØð ô ð 
×ÑØØØ8Øð	 ô ð ×%Ñ% iÓ0€Eà	×ÑØÜØØfØð ô ð 
×ÑØÜØØnØð ô ð ×%Ñ% mÓ4€Eà	×ÑØˆiØØ*Øð	 ô ð 
×ÑØØØ-Øð	 ô ð ×ÑÓ€Dà‡~�~˜Ÿ™Ô'Ø�‰ÐEÔFà‡{‡{€{Ø�T—[‘[Ô Ü�J‰J×ÑÐ3Ô4Ü�J‰J×Ñ˜TŸY™Yñ '=ä"¤?×#8Ñ#8Ó#:Ô;ó'=ó =ô >ô �J‰J×Ñ˜TÔ"Ü�HŠH�QŒKØ—+‘+‰à�+ˆà
à�9‰9Ò §	¡	¨SÔ 0ð6Ü(›N�”	ð
 —y—y�yØ—L‘LÐ!4Ô5ð#	Ü$×3Ò3Ø—	‘	Ø—‘Ø—{‘{Ø—{‘{ØŸ™Ø ô"ˆOô ˜?¨M×:Ò:à*+�Ô'à�x‰xÒ#Ø—z—z�zÜ—J‘J×$Ñ$Ð%;×%BÑ%BÈtÏxÏxÈxÁ8Ð]gÓ%hÔiØ&*§h¡h�Ô#Ø�x‰xÒ#Ø—z—z�zÜ—J‘J×$Ñ$Ð%;×%BÑ%BÈtÏxÏxÈxÁ8Ð]gÓ%hÔiØ&*§h¡h�Ô#ä˜/¬6¯=©=×9Ò9Ø,0¯N©N�Ô)à× Ñ Ô"ð äØØ�Y‰YØ�H‰H�N‰NÓØô	€Hô
 % T§^¡^Ó4€HÔÜ$ T§^¡^Ó4€HÔØ—8‘8€H„LØ×Ñ˜T×6Ñ6Ô7Ø×Ñ˜T×6Ñ6Ô7à�:�:ˆ:Ü�
‰
×ÑÐl×sÑsØ�o‰oð tó ô 	 ä�
‰
×ÑÐR×YÑYÜ˜H×3Ñ3Ó4Ü˜H×3Ñ3Ó4Ü˜H×3Ñ3Ó4Ü˜FÓ#ó	%ô 	&ð ‡N�NÔðØ�‰�dÔð �:�:ˆ:Ü�
‰
×ÑÐ+Ô,Ø‡M�M„OØ‡N�NÖøôO %ô CÜ—
‘
× Ñ  Ô&Ø—‘ÐA×BðCûô@ ×%Ñ%ô 	 Ü�J‰J×ÑÐ=×DÑDÀTÇYÁYÐPQÓRÔSØ�|�|ˆ|ØØ—8—8�8Ü—’˜—“à�—	“	ûð	 ûôD ô Úðúsc   Ì.[ Í!B\ Ï(5\ Ð<\ Ñ5\ ÒA\ Ù+^7 Û;\Ü\Ü^4Ü&A^/Þ^/Þ!^/Þ/^4Þ7_ß_Ú__main__)Ni€%  NN).Ú
__future__r   r’   rY   r   rV  rB  Úserial.tools.list_portsr   Úserial.toolsr   r»   r4  Ú	NameErrorÚinputÚchrr£   r   Úobjectr   rU  r¡   ry   r‚   rQ   r]   rº   r·   rÍ   ÚNotImplementedErrorr   rÔ   rà   rç   rð   rò   r  r	  r  r!  ro  rp  r=  r?  rA  rF   r&   r   r   Ú<module>rK     sº  ðõ 'ã Û 	Û 
Û ã Ý ,Ý &ð ‡‚ÑQÔ RðÙòô*�&ô *ðZ ‡7�7ˆd„?ÛÛÛô
!ˆfô 
!ôRD�+õ RDðh ‡W�W�ÔÛÛÛôD�+õ Dñ> ØC×JÑJÈ3Ï<É<ÓXóZð Zô�ô ô*ˆ9ô *ô(ˆô (ôˆô ô�ô ô 	�ô 	ô�	ô ô$&ˆyô &ôˆiô ð& ˆDØˆ"Øˆ"ðÐ ð ˆiØˆzØ�Ø�Ø�ØˆWð€òô2c(ˆvô c(ôRaðH ˆzÔÙ†Fñ øðm ô à€IØƒFðús   »E' Å'E6Å5E6