ó
    F\h;ÿ  ã                   ó–  • S r SSKrSSKrSSK7  SSKJrJr  SSKJrJ	r	J
r
  SQSSSS.S	 jjrS
 r SRSSS.S jjrS rS rSSS jrS rS rSTS jr\R(                  " S5      rSUS jrS rSS.S jrS r " S S\5      r " S S\5      rSrSr\" \ S 5      (       d(  S! r!S" r"S# r#S$ r$\%" \!\"5      \ l&        \%" \#\$5      \ l'         " S% S&\(5      r)S' r* " S( S)\ \)S*9r+ " S+ S,\ \)S*9r, " S- S.\ \)S*9r- " S/ S0\ \)S*9r. " S1 S2\ \)S*9r/\/r0\+\1\2\34\,\44\-\54\.\(" S5      \64\/\(" S35      40r7\+\640r8\6S0\(" S5      S0\1S)\2S)\3S)\4S,\5S.\(" S35      S20r9 " S4 S5\:5      r; " S6 S7\;5      r< " S8 S9\;5      r=\" \>S:5      (       d  S; r?S< r@\%" \?\@5      \>lA         " S= S>\B5      rC " S? S@\D5      rE " SA SB\D5      rF " SC SD\D5      rGSE\H" \R’                  R”                  S-   5      -   rK\
" \5       " SF SG5      5       rLSHrMSIrN/ \MQ\NQ7rO " SJ SK\5      rPSL rQSM V s0 s H  n U \R" 5       R§                  U 5      _M     sn rTSN rUSO rV\WSP:X  a  \V" 5         ggs  sn f )Vaö  
The `ast` module helps Python applications to process trees of the Python
abstract syntax grammar.  The abstract syntax itself might change with
each Python release; this module helps to find out programmatically what
the current grammar looks like and allows modifications of it.

An abstract syntax tree can be generated by passing `ast.PyCF_ONLY_AST` as
a flag to the `compile()` builtin function or by using the `parse()`
function from this module.  The result will be a tree of objects whose
classes all inherit from `ast.AST`.

A modified abstract syntax tree can be compiled into a Python code object
using the built-in `compile()` function.

Additionally various helper functions are provided that make working with
the trees simpler.  The main intention of the helper functions and this
module in general is to provide an easy to use interface for libraries
that work tightly with the python syntax (template engines for example).

:copyright: Copyright 2008 by Armin Ronacher.
:license: Python License.
é    N)Ú*)ÚcontextmanagerÚnullcontext)ÚIntEnumÚautoÚ_simple_enumFéÿÿÿÿ)Útype_commentsÚfeature_versionÚoptimizec          	      óÌ   • [         nUS:”  a	  U[        -  nU(       a	  U[        -  nUc  SnO/[        U[        5      (       a  Uu  pxUS:w  a  [        SU 35      eUn[        XX&XES9$ )z­
Parse the source into an AST node.
Equivalent to compile(source, filename, mode, PyCF_ONLY_AST).
Pass type_comments=True to get back type comments where the syntax allows.
r   r	   é   zUnsupported major version: )Ú_feature_versionr   )ÚPyCF_ONLY_ASTÚPyCF_OPTIMIZED_ASTÚPyCF_TYPE_COMMENTSÚ
isinstanceÚtupleÚ
ValueErrorÚcompile)	ÚsourceÚfilenameÚmoder
   r   r   ÚflagsÚmajorÚminors	            Ú/usr/lib/python3.13/ast.pyÚparser      s}   € ô €EØ�!ƒ|ØÔ#Ñ#ˆÞØÔ#Ñ#ˆØÑØ‰Ü	�O¤U×	+Ñ	+Ø&‰ˆØ�A‹:ÜÐ:¸5¸'ÐBÓCÐCØˆä�6 TØ$3ñHð Hó    c                 óè   ^^^^• [        U [        5      (       a  [        U R                  S5      SS9n [        U [        5      (       a  U R
                  n S mU4S jmU4S jmUUUU4S jmT" U 5      $ )a<  
Evaluate an expression node or a string containing only a Python
expression.  The string or node provided may only consist of the following
Python literal structures: strings, bytes, numbers, tuples, lists, dicts,
sets, booleans, and None.

Caution: A complex expression can overflow the C stack and cause a crash.
z 	Úeval)r   c                 ób   • Sn[        U SS 5      =n(       a  USU 3-  n[        USU < 3-   5      e)Nzmalformed node or stringÚlinenoz	 on line ú: )Úgetattrr   )ÚnodeÚmsgÚlnos      r   Ú_raise_malformed_nodeÚ+literal_eval.<locals>._raise_malformed_nodeC   sB   € Ø(ˆÜ˜$ ¨$Ó/Ð/ˆ3Õ/Ø�Y˜s˜eÐ$Ñ$ˆCÜ˜  D¡8˜}Ñ,Ó-Ð-r   c                 ó¦   >• [        U [        5      (       a(  [        U R                  5      [        [
        [        4;  a  T" U 5        U R                  $ ©N)r   ÚConstantÚtypeÚvalueÚintÚfloatÚcomplex)r&   r)   s    €r   Ú_convert_numÚ"literal_eval.<locals>._convert_numH   s:   ø€ Ü˜$¤×)Ñ)¬T°$·*±*Ó-=ÄcÌ5ÔRYÐEZÓ-ZÙ! $Ô'Ø�z‰zÐr   c                 óö   >• [        U [        5      (       a\  [        U R                  [        [        45      (       a7  T" U R
                  5      n[        U R                  [        5      (       a  U7$ U* $ T" U 5      $ r,   )r   ÚUnaryOpÚopÚUAddÚUSubÚoperand)r&   r:   r3   s     €r   Ú_convert_signed_numÚ)literal_eval.<locals>._convert_signed_numL   s^   ø€ Ü�dœG×$Ñ$¬°D·G±G¼dÄD¸\×)JÑ)JÙ" 4§<¡<Ó0ˆGÜ˜$Ÿ'™'¤4×(Ñ(Ø �yÐ à �yÐ Ù˜DÓ!Ð!r   c           	      óú  >• [        U [        5      (       a  U R                  $ [        U [        5      (       a  [	        [        TU R                  5      5      $ [        U [        5      (       a  [        [        TU R                  5      5      $ [        U [        5      (       a  [        [        TU R                  5      5      $ [        U [        5      (       af  [        U R                  [        5      (       aG  U R                  R                  S:X  a-  U R                  U R                   s=:X  a  / :X  a   [        5       $   [        U ["        5      (       aq  [%        U R&                  5      [%        U R(                  5      :w  a  T" U 5        [+        [-        [        TU R&                  5      [        TU R(                  5      5      5      $ [        U [.        5      (       a   [        U R0                  [2        [4        45      (       a{  T" U R6                  5      nT" U R8                  5      n[        U[:        [<        45      (       a<  [        U[>        5      (       a'  [        U R0                  [2        5      (       a  X-   $ X-
  $ T" U 5      $ )NÚset) r   r-   r/   ÚTupler   ÚmapÚeltsÚListÚlistÚSetr>   ÚCallÚfuncÚNameÚidÚargsÚkeywordsÚDictÚlenÚkeysÚvaluesÚdictÚzipÚBinOpr7   ÚAddÚSubÚleftÚrightr0   r1   r2   )r&   rT   rU   Ú_convertr3   r;   r)   s      €€€€r   rV   Úliteral_eval.<locals>._convertT   s´  ø€ Ü�dœH×%Ñ%Ø—:‘:ÐÜ˜œe×$Ñ$Üœ˜X t§y¡yÓ1Ó2Ð2Ü˜œd×#Ñ#Üœ˜H d§i¡iÓ0Ó1Ð1Ü˜œc×"Ñ"Ü”s˜8 T§Y¡YÓ/Ó0Ð0Ü˜œt×$Ñ$¬°D·I±I¼t×)DÑ)DØ�i‰i�l‰l˜eÓ#¨¯	©	°T·]±]Õ(HÀbÔ(HÜ“5ˆLð )Iä˜œd×#Ñ#Ü�4—9‘9‹~¤ T§[¡[Ó!1Ó1Ù% dÔ+ÜœœC ¨$¯)©)Ó4Ü ¨$¯+©+Ó6ó8ó 9ð 9ä˜œe×$Ñ$¬°D·G±G¼cÄ3¸Z×)HÑ)HÙ& t§y¡yÓ1ˆDÙ  §¡Ó,ˆEÜ˜$¤¤e ×-Ñ-´*¸UÄG×2LÑ2LÜ˜dŸg™g¤s×+Ñ+Ø™<Ð'à™<Ð'Ù" 4Ó(Ð(r   )r   Ústrr   ÚlstripÚ
ExpressionÚbody)Únode_or_stringrV   r3   r;   r)   s    @@@@r   Úliteral_evalr]   6   sg   û€ ô �.¤#×&Ñ&Ü˜~×4Ñ4°UÓ;À&ÑIˆÜ�.¤*×-Ñ-Ø'×,Ñ,ˆò.õ
õ"÷)ð )ñ4 �NÓ#Ð#r   )ÚindentÚ
show_emptyc                óâ   ^^^^^• SUUUUU4S jjm[        U [        5      (       d"  [        SU R                  R                  -  5      eTb  [        T[
        5      (       d  ST-  mT" U 5      S   $ )aß  
Return a formatted dump of the tree in node.  This is mainly useful for
debugging purposes.  If annotate_fields is true (by default),
the returned string will show the names and the values for fields.
If annotate_fields is false, the result string will be more compact by
omitting unambiguous field names.  Attributes such as line
numbers and column offsets are not dumped by default.  If this is wanted,
include_attributes can be set to true.  If indent is a non-negative
integer or string, then the tree will be pretty-printed with that indent
level. None (the default) selects the single line representation.
If show_empty is False, then empty lists and fields that are None
will be omitted from the output for better readability.
r   c                 óV  >^• Tb  TS-  mSTT-  -   nSTT-  -   nOSnSn[        U [        5      (       Gaÿ  [        U 5      n/ n/ nSnTnU R                   Hé  n	 [	        X	5      n
U
c  [	        XIS5      c  SnM#  T(       dw  U
/ :X  aW  UR                  R                  U	[        5      n[	        USS5      [        L a#  U(       d  UR                  [        U
5      5        M‡  U(       d  UR                  U5        / nT" U
T5      u  p¬U=(       a    UnU(       a  UR                  U	< S	U
< 35        MØ  UR                  U
5        Më     T(       ap  U R                  (       a_  U R                   HO  n	 [	        X	5      n
U
c  [	        XIS5      c  M!  T" U
T5      u  p¬U=(       a    UnUR                  U	< S	U
< 35        MQ     U(       aC  [        U5      S
::  a4  U R                  R                   < SSR#                  U5      < S3U(       + 4$ U R                  R                   < SU< UR#                  U5      < S3S4$ [        U [        5      (       a.  U (       d  gSU< UR#                  UU4S jU  5       5      < S3S4$ [        U 5      S4$ ! [
         a    Sn GM@  f = f! [
         a     GMA  f = f)Né   Ú
z,
Ú ú, T.Ú
__origin__Ú=r   Ú(Ú)F)z[]TÚ[c              3   ó<   >#   • U  H  nT" UT5      S    v •  M     g7f©r   N© )Ú.0ÚxÚ_formatÚlevels     €€r   Ú	<genexpr>Ú(dump.<locals>._format.<locals>.<genexpr>»   s   øé € Ð/SÊdÈ±¸¸5Ó0AÀ!Ö0DÊdùs   ƒÚ])r   ÚASTr.   Ú_fieldsr%   ÚAttributeErrorÚ_field_typesÚgetÚobjectrC   ÚappendÚreprÚextendÚ_attributesrL   Ú	__class__Ú__name__Újoin)r&   rq   ÚprefixÚsepÚclsrI   Úargs_bufferÚ	allsimplerJ   Únamer/   Ú
field_typeÚsimplerp   Úannotate_fieldsÚinclude_attributesr^   r_   s    `           €€€€€r   rp   Údump.<locals>._formatƒ   si  ù€ ØÑØ�Q‰JˆEØ˜F U™NÑ*ˆFØ˜& 5™.Ñ(‰CàˆFØˆCÜ�dœC× Ò Ü�t“*ˆCØˆDØˆKØˆIØ&ˆHØŸœ�ðÜ# DÓ/�Eð ‘=¤W¨S¸Ó%<Ñ%DØ#�HÙÞ!Ø “{Ø%(×%5Ñ%5×%9Ñ%9¸$ÄÓ%G˜
Ü" :¨|¸SÓAÄTÒIÞ#+Ø +× 2Ñ 2´4¸³;Ô ?Ù$Þ#ØŸ™ KÔ0Ø&(˜Ù '¨¨uÓ 5‘�Ø%×0¨&�	ÞØ—K‘K«4²Ð 7Ö8à—K‘K Ö&ñ1 %ö2 " d×&6×&6Ø ×,Ô,�Dð!Ü '¨Ó 3˜ð ‘}¬°¸CÓ)@Ñ)HÙ Ù$+¨E°5Ó$9‘M�EØ )× 4¨f�IØ—K‘K«4²Ð 7Ö8ñ -ö œS ›Y¨!›^Ø#'§>¡>×#:Ô#:¸D¿I¹IÀd¾OÐLÐRVÌhÐVÐVØ!%§¡×!8Ô!8º&À#Ç(Á(È4Æ.ÐQÐSXÐXÐXÜ˜œd×#Ñ#ÞØ!ð â% s§x¡xÕ/SÉdÓ/SÖ'SÐTÐV[Ð[Ð[Ü�D‹z˜4ÐÐøôQ &ó Ø#�HÛðûô4 *ó !Û ð!ús$   ÁJÅ*JÊJÊJÊ
J(Ê'J(zexpected AST, got %rÚ )r   )r   ru   Ú	TypeErrorr   r€   rX   )r&   rŠ   r‹   r^   r_   rp   s    ````@r   Údumpr�   q   sb   ü€ ÷$9 ó 9 ôv �dœC× Ñ ÜÐ.°·±×1HÑ1HÑHÓIÐIØÑ¤*¨V´S×"9Ñ"9Ø�v‘ˆÙ�4‹=˜ÑÐr   c                 óæ   • S Hj  nX!R                   ;   d  M  X R                   ;   d  M%  [        XS5      nUc*  [        X5      (       d  MF  UR                  S5      (       d  M^  [	        XU5        Ml     U $ )z 
Copy source location (`lineno`, `col_offset`, `end_lineno`, and `end_col_offset`
attributes) from *old_node* to *new_node* if possible, and return *new_node*.
)r#   Ú
col_offsetÚ
end_linenoÚend_col_offsetNÚend_)r~   r%   ÚhasattrÚ
startswithÚsetattr)Únew_nodeÚold_nodeÚattrr/   s       r   Úcopy_locationr›   Å   se   € ó
 GˆØ×'Ñ'Õ'¨D×4HÑ4HÕ,HÜ˜H¨DÓ1ˆEð Ñ Ü˜×'Ó'¨D¯O©O¸F×,CÓ,Cä˜¨Ö.ñ Gð €Or   c                 ó,   ^• U4S jmT" U SSSS5        U $ )ac  
When you compile a node tree with compile(), the compiler expects lineno and
col_offset attributes for every node that supports them.  This is rather
tedious to fill in for generated nodes, so this helper adds these attributes
recursively where not already set, by setting them to the values of the
parent node.  It works recursively starting at *node*.
c                 óÒ  >• SU R                   ;   a$  [        U S5      (       d  Xl        OU R                  nSU R                   ;   a!  [        U SS 5      c  X0l        OU R                  nSU R                   ;   a$  [        U S5      (       d  X l        OU R
                  nSU R                   ;   a!  [        U SS 5      c  X@l        OU R                  n[        U 5       H  nT" XQX#U5        M     g )Nr#   r’   r‘   r“   )r~   r•   r#   r%   r’   r‘   r“   Úiter_child_nodes)r&   r#   r‘   r’   r“   ÚchildÚ_fixs         €r   r    Ú#fix_missing_locations.<locals>._fixÞ   sÊ   ø€ Ø�t×'Ñ'Ó'Ü˜4 ×*Ñ*Ø$•àŸ™�Ø˜4×+Ñ+Ó+Ü�t˜\¨4Ó0Ñ8Ø",•à!Ÿ_™_�
Ø˜4×+Ñ+Ó+Ü˜4 ×.Ñ.Ø",•à!Ÿ_™_�
Ø˜t×/Ñ/Ó/Ü�tÐ-¨tÓ4Ñ<Ø&4Õ#à!%×!4Ñ!4�Ü% dÖ+ˆEÙ� 
¸ÖGò ,r   rb   r   rm   )r&   r    s    @r   Úfix_missing_locationsr¢   Ö   s    ø€ õHñ. 	ˆˆq�!�Q˜ÔØ€Kr   rb   c                 ó&  • [        U 5       H�  n[        U[        5      (       a  [        USS5      U-   Ul        M/  SUR
                  ;   a  [        USS5      U-   Ul        SUR
                  ;   d  Mf  [        USS5      =nc  Mx  X1-   Ul        Mƒ     U $ )z¤
Increment the line number and end line number of each node in the tree
starting at *node* by *n*. This is useful to "move code" to a different
location in a file.
r#   r   r’   )Úwalkr   Ú
TypeIgnorer%   r#   r~   r’   )r&   ÚnrŸ   r’   s       r   Úincrement_linenor§   ù   s�   € ô �d–ˆô �eœZ×(Ñ(Ü" 5¨(°AÓ6¸Ñ:ˆEŒLÙà�u×(Ñ(Ó(Ü" 5¨(°AÓ6¸Ñ:ˆEŒLà˜E×-Ñ-Õ-Ü& u¨l¸AÓ>Ð>�ÓKà)™~ˆEÖñ ð €Kr   c              #   ót   #   • U R                    H  n U[        X5      4v •  M     g! [         a     M%  f = f7f)zg
Yield a tuple of ``(fieldname, value)`` for each field in ``node._fields``
that is present on *node*.
N)rv   r%   rw   )r&   Úfields     r   Úiter_fieldsrª     s=   é € ð
 —”ˆð	Øœ Ó-Ð-Ô-ò øô ó 	Úð	üs   ‚8“'¢8§
5±8´5µ8c              #   óà   #   • [        U 5       H[  u  p[        U[        5      (       a  Uv •  M   [        U[        5      (       d  M7  U H  n[        U[        5      (       d  M  Uv •  M      M]     g7f)z}
Yield all direct child nodes of *node*, that is, all fields that are nodes
and all items of fields that are lists of nodes.
N)rª   r   ru   rC   )r&   r‡   r©   Úitems       r   rž   rž     sS   é € ô
 # 4Ö(‰ˆÜ�eœS×!Ñ!ØŒKÜ˜œt×$Ó$Û�Ü˜d¤C×(Ó(Ø”Jó ò	 )ùs   ‚?A.ÁA.Á!A.c                 óê  • [        U [        [        [        [        45      (       d"  [        SU R                  R                  -  5      eU R                  (       a"  [        U R                  S   [        5      (       d  gU R                  S   R                  n [        U [        5      (       a,  [        U R                  [        5      (       a  U R                  nOgU(       a  SSKnUR                  U5      nU$ )a+  
Return the docstring for the given node or None if no docstring can
be found.  If the node provided does not have docstrings a TypeError
will be raised.

If *clean* is `True`, all tabs are expanded to spaces and any whitespace
that can be uniformly removed from the second line onwards is removed.
z%r can't have docstringsr   N)r   ÚAsyncFunctionDefÚFunctionDefÚClassDefÚModulerŽ   r   r€   r[   ÚExprr/   r-   rX   ÚinspectÚcleandoc)r&   ÚcleanÚtextr³   s       r   Úget_docstringr·   *  s«   € ô �dÔ-¬{¼HÄfÐM×NÑNÜÐ2°T·^±^×5LÑ5LÑLÓMÐMØ�9�9œ D§I¡I¨a¡L´$×7Ñ7ØØ�9‰9�Q‰<×Ñ€DÜ�$œ×!Ñ!¤j°·±¼S×&AÑ&AØ�z‰z‰àÞÛØ×Ñ Ó%ˆØ€Kr   z(.*?(?:\r\n|\n|\r|$))c                 ó˜   • / n[        [        R                  U 5      S5       H$  u  p4Ub  X1:”  a    U$ UR                  US   5        M&     U$ )zuSplit a string into lines ignoring form feed and other chars.

This mimics how the Python parser splits source code.
rb   r   )Ú	enumerateÚ_line_patternÚfinditerr{   )r   ÚmaxlinesÚlinesr#   Úmatchs        r   Ú_splitlines_no_ffr¿   C  sT   € ð
 €EÜ"¤=×#9Ñ#9¸&Ó#AÀ1ÖE‰ˆØÑ FÓ$5Øà€Lð 	�‰�U˜1‘XÖñ Fð €Lr   c                 ó>   • SnU  H  nUS;   a  X-  nM  US-  nM     U$ )z6Replace all chars except '\f\t' in a line with spaces.rd   z	r�   rm   )r   ÚresultÚcs      r   Ú_pad_whitespacerÃ   P  s/   € à€FÛˆØ�‹;Ø‰KŠFà�c‰MŠFñ	 ð
 €Mr   )Úpaddedc                ó   •  UR                   b  UR                  c  gUR                  S-
  nUR                   S-
  nUR                  nUR                  n[        XS-   S9nXC:X  a"  Xs   R                  5       XV R                  5       $ U(       a-  [        Xs   R                  5       SU R                  5       5      nOSnX‡U   R                  5       US R                  5       -   n	Xt   R                  5       SU R                  5       n
XsS-   U nUR                  SU	5        UR                  U
5        SR                  U5      $ ! [         a     gf = f)a.  Get source code segment of the *source* that generated *node*.

If some location information (`lineno`, `end_lineno`, `col_offset`,
or `end_col_offset`) is missing, return None.

If *padded* is `True`, the first line of a multi-line statement will
be padded with spaces to match its original position.
Nrb   )r¼   rd   r   )r’   r“   r#   r‘   rw   r¿   ÚencodeÚdecoderÃ   Úinsertr{   r�   )r   r&   rÄ   r#   r’   r‘   r“   r½   ÚpaddingÚfirstÚlasts              r   Úget_source_segmentrÌ   [  s@  € ðØ�?‰?Ñ" d×&9Ñ&9Ñ&AØØ—‘˜q‘ˆØ—_‘_ qÑ(ˆ
Ø—_‘_ˆ
Ø×,Ñ,ˆô ˜f¸!©|Ñ<€EØÓØ‰}×#Ñ#Ó% jÐ@×GÑGÓIÐIæÜ! %¡-×"6Ñ"6Ó"8¸¸*Ð"E×"LÑ"LÓ"NÓO‰àˆà˜F‘m×*Ñ*Ó,¨Z¨[Ð9×@Ñ@ÓBÑB€EØÑ×#Ñ#Ó% o ~Ð6×=Ñ=Ó?€DØ˜‘(˜:Ð&€Eà	‡L�L��EÔØ	‡L�L�ÔØ�7‰7�5‹>Ðøô% ó Ùðús   ‚E  �6E  Å 
EÅEc              #   ó¨   #   • SSK Jn  U" U /5      nU(       a8  UR                  5       n UR                  [	        U 5      5        U v •  U(       a  M7  gg7f)zÕ
Recursively yield all descendant nodes in the tree starting at *node*
(including *node* itself), in no specified order.  This is useful if you
only want to modify nodes in place and don't care about the context.
r   )ÚdequeN)ÚcollectionsrÎ   Úpopleftr}   rž   )r&   rÎ   Útodos      r   r¤   r¤   €  sA   é € õ "Ù�$�‹=€DÞ
Ø�|‰|‹~ˆØ�‰Ô$ TÓ*Ô+ØŠ
÷ Š$ùs   ‚AAÁAc                   ó*   • \ rS rSrSrS rS rS rSrg)ÚNodeVisitoriŽ  a  
A node visitor base class that walks the abstract syntax tree and calls a
visitor function for every node found.  This function may return a value
which is forwarded by the `visit` method.

This class is meant to be subclassed, with the subclass adding visitor
methods.

Per default the visitor functions for the nodes are ``'visit_'`` +
class name of the node.  So a `TryFinally` node visit function would
be `visit_TryFinally`.  This behavior can be changed by overriding
the `visit` method.  If no visitor function exists for a node
(return value `None`) the `generic_visit` visitor is used instead.

Don't use the `NodeVisitor` if you want to apply changes to nodes during
traversing.  For this a special visitor exists (`NodeTransformer`) that
allows modifications.
c                 óp   • SUR                   R                  -   n[        XU R                  5      nU" U5      $ )zVisit a node.Úvisit_)r   r€   r%   Úgeneric_visit)Úselfr&   ÚmethodÚvisitors       r   ÚvisitÚNodeVisitor.visit¢  s2   € à˜DŸN™N×3Ñ3Ñ3ˆÜ˜$¨×(:Ñ(:Ó;ˆÙ�t‹}Ðr   c                 ó  • [        U5       Hu  u  p#[        U[        5      (       a3  U H+  n[        U[        5      (       d  M  U R	                  U5        M-     MM  [        U[        5      (       d  Md  U R	                  U5        Mw     g)z9Called if no explicit visitor function exists for a node.N)rª   r   rC   ru   rÚ   )r×   r&   r©   r/   r¬   s        r   rÖ   ÚNodeVisitor.generic_visit¨  s^   € ä'¨Ö-‰LˆEÜ˜%¤×&Ñ&Û!�DÜ! $¬×,Ó,ØŸ
™
 4Ö(ó "ô ˜E¤3×'Ó'Ø—
‘
˜5Ö!ò .r   c                 ót  • UR                   n[        R                  [        U5      5      nUc1  [        R	                  5        H  u  pE[        X$5      (       d  M  Un  O   Ub7  SU-   n [        X5      nSS KnUR                  U S3[        S5        U" U5      $ U R                  U5      $ ! [         a     Nf = f)NrÕ   r   z" is deprecated; add visit_Constanté   )r/   Ú_const_node_type_namesry   r.   Úitemsr   r%   ÚwarningsÚwarnÚDeprecationWarningrw   rÖ   )	r×   r&   r/   Ú	type_namer„   r‡   rØ   rÙ   râ   s	            r   Úvisit_ConstantÚNodeVisitor.visit_Constant²  s½   € Ø—
‘
ˆÜ*×.Ñ.¬t°E«{Ó;ˆ	ØÑÜ3×9Ñ9Ö;‘	�Ü˜e×)Ó)Ø $�IÙñ <ð Ñ Ø 	Ñ)ˆFð%Ü! $Ó/�ó  Ø—‘  Ð(JÐKÜ0°!ô5á˜t“}Ð$Ø×!Ñ! $Ó'Ð'øô "ó Ùðús   Á(B* Â*
B7Â6B7rm   N)	r€   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rÚ   rÖ   ræ   Ú__static_attributes__rm   r   r   rÓ   rÓ   Ž  s   † ñò&ò"õ(r   rÓ   c                   ó   • \ rS rSrSrS rSrg)ÚNodeTransformeriÈ  aß  
A :class:`NodeVisitor` subclass that walks the abstract syntax tree and
allows modification of nodes.

The `NodeTransformer` will walk the AST and use the return value of the
visitor methods to replace or remove the old node.  If the return value of
the visitor method is ``None``, the node will be removed from its location,
otherwise it is replaced with the return value.  The return value may be the
original node in which case no replacement takes place.

Here is an example transformer that rewrites all occurrences of name lookups
(``foo``) to ``data['foo']``::

   class RewriteName(NodeTransformer):

       def visit_Name(self, node):
           return Subscript(
               value=Name(id='data', ctx=Load()),
               slice=Constant(value=node.id),
               ctx=node.ctx
           )

Keep in mind that if the node you're operating on has child nodes you must
either transform the child nodes yourself or call the :meth:`generic_visit`
method for the node first.

For nodes that were part of a collection of statements (that applies to all
statement nodes), the visitor may also return a list of nodes rather than
just a single node.

Usually you use the transformer like this::

   node = YourTransformer().visit(node)
c                 óÊ  • [        U5       HÓ  u  p#[        U[        5      (       au  / nU Hg  n[        U[        5      (       a>  U R	                  U5      nUc  M.  [        U[        5      (       d  UR                  U5        MV  UR                  U5        Mi     XCS S & M�  [        U[        5      (       d  M¦  U R	                  U5      nUc  [        X5        MÇ  [        XU5        MÕ     U$ r,   )	rª   r   rC   ru   rÚ   r}   r{   Údelattrr—   )r×   r&   r©   Ú	old_valueÚ
new_valuesr/   r˜   s          r   rÖ   ÚNodeTransformer.generic_visitì  sÂ   € Ü +¨DÖ 1ÑˆEÜ˜)¤T×*Ñ*Ø�
Û&�EÜ! %¬×-Ñ-Ø $§
¡
¨5Ó 1˜Ø ™=Ù$Ü!+¨E´3×!7Ñ!7Ø&×-Ñ-¨eÔ4Ù$Ø×%Ñ% eÖ,ñ 'ð  *™!’Ü˜I¤s×+Ó+ØŸ:™: iÓ0�ØÑ#Ü˜DÖ(ä˜D¨Ö2ñ% !2ð& ˆr   rm   N)r€   rè   ré   rê   rë   rÖ   rì   rm   r   r   rî   rî   È  s   † ñ!õFr   rî   zN{name} is deprecated and will be removed in Python {remove}; use value insteadzU{name} is deprecated and will be removed in Python {remove}; use ast.Constant insteadr¦   c                 óL   • SSK nUR                  S[        SS9  U R                  $ )úDeprecated. Use value instead.r   NúAttribute n©r   é   ©ÚmessageÚremove©râ   Ú_deprecatedÚ_DEPRECATED_VALUE_ALIAS_MESSAGEr/   ©r×   râ   s     r   Ú	_n_getterr     ó,   € ãØ×ÑØÔ#BÈ7ð 	ñ 	
ð �z‰zÐr   c                 óB   • SS K nUR                  S[        SS9  Xl        g )Nr   rö   r÷   rù   rü   ©r×   r/   râ   s      r   Ú	_n_setterr    ó'   € ÛØ×ÑØÔ#BÈ7ð 	ñ 	
ð �
r   c                 óL   • SSK nUR                  S[        SS9  U R                  $ )rõ   r   NúAttribute sr÷   rù   rü   rÿ   s     r   Ú	_s_getterr     r  r   c                 óB   • SS K nUR                  S[        SS9  Xl        g )Nr   r  r÷   rù   rü   r  s      r   Ú	_s_setterr
  (  r  r   c                   ó    • \ rS rSrS rS rSrg)Ú_ABCi2  c                 ó   • SU l         g )Nz3Deprecated AST node class. Use ast.Constant instead)rë   )r„   rI   s     r   Ú__init__Ú_ABC.__init__4  s	   € ØOˆ�r   c                 ó„  • U [         ;   a&  SS KnUR                  SU R                   3[        SS9  [        U[        5      (       d  gU [         ;   aL   UR                  n[        U[         U    5      =(       a%    [        U[        R                  U S5      5      (       + $ [        R                  X5      $ ! [         a     gf = f)Nr   úast.r÷   rù   Frm   )Ú_const_typesrâ   rý   ré   Ú_DEPRECATED_CLASS_MESSAGEr   r-   r/   Ú_const_types_notry   rw   r.   Ú__instancecheck__)r„   Úinstrâ   r/   s       r   r  Ú_ABC.__instancecheck__7  s½   € Ø”,ÓÛØ× Ñ Ø�s×'Ñ'Ð(Ð)Ü1Øð !ñ ô
 ˜$¤×)Ñ)ØØ”,ÓðØŸ
™
�ô
 ˜u¤l°3Ñ&7Ó8÷ IÜ" 5Ô*:×*>Ñ*>¸sÀBÓ*GÓHÔHðô ×%Ñ% cÓ0Ð0øô "ó Ùðús   ÁB2 Â2
B?Â>B?rm   N)r€   rè   ré   rê   r  r  rì   rm   r   r   r  r  2  s   † òPõ1r   r  c                 ój  • U HY  nX0R                   ;  a  M  U R                   R                  U5      nU[        U5      :  d  M@  [        U R                   SU< 35      e   U [
        ;   a1  SS KnUR                  SU R                   3[        SS9  [        U0 UD6$ [        R                  " U /UQ70 UD6$ )Nz" got multiple values for argument r   r  r÷   rù   )rv   ÚindexrL   rŽ   r€   r  râ   rý   ré   r  r-   Ú__new__)r„   rI   ÚkwargsÚkeyÚposrâ   s         r   Ú_newr  M  s·   € ÛˆØ—k‘kÓ!áØ�k‰k×Ñ Ó$ˆØ”�T“�?Ü˜sŸ|™|˜nÐ,NÈsÉgÐVÓWÐWñ ð ŒlÓÛØ×ÑØ�3×#Ñ#Ð$Ð%Ô/HÐQXð 	ñ 	
ô ˜Ð( Ñ(Ð(Ü×Ò˜CÐ1 $Ò1¨&Ñ1Ð1r   c                   ó   • \ rS rSrSr\rSrg)ÚNumi]  )r¦   rm   N©r€   rè   ré   rê   rv   r  r  rì   rm   r   r   r   r   ]  ó   † Ø€GØƒGr   r   )Ú	metaclassc                   ó   • \ rS rSrSr\rSrg)ÚStria  ©Úsrm   Nr!  rm   r   r   r%  r%  a  r"  r   r%  c                   ó   • \ rS rSrSr\rSrg)ÚBytesie  r&  rm   Nr!  rm   r   r   r)  r)  e  r"  r   r)  c                   ó   • \ rS rSr\rSrg)ÚNameConstantii  rm   N)r€   rè   ré   rê   r  r  rì   rm   r   r   r+  r+  i  s   † ØƒGr   r+  c                   ó   • \ rS rSrSrS rSrg)ÚEllipsisil  rm   c                 ó˜   • U [         L a(  SS KnUR                  S[        SS9  [	        S/UQ70 UD6$ [        R
                  " U /UQ70 UD6$ )Nr   zast.Ellipsisr÷   rù   .)Ú_ast_Ellipsisrâ   rý   r  r-   r  )r„   rI   r  râ   s       r   r  ÚEllipsis.__new__o  sZ   € Ø”-ÒÛØ× Ñ ØÔ(AÈ'ð !ñ ô ˜CÐ1 $Ò1¨&Ñ1Ð1Ü×Ò Ð5 dÒ5¨fÑ5Ð5r   N)r€   rè   ré   rê   rv   r  rì   rm   r   r   r-  r-  l  s   † Ø€Gõ6r   r-  .c                   ó   • \ rS rSrSrSrg)Úslicei“  zDeprecated AST node class.rm   N©r€   rè   ré   rê   rë   rì   rm   r   r   r2  r2  “  s   † Ü$r   r2  c                   ó   • \ rS rSrSrS rSrg)ÚIndexi–  z@Deprecated AST node class. Use the index value directly instead.c                 ó   • U$ r,   rm   )r„   r/   r  s      r   r  ÚIndex.__new__˜  s   € Øˆr   rm   N©r€   rè   ré   rê   rë   r  rì   rm   r   r   r5  r5  –  s
   † ÙJõr   r5  c                   ó"   • \ rS rSrSrSS jrSrg)ÚExtSlicei›  z1Deprecated AST node class. Use ast.Tuple instead.rm   c                 ó>   • [        [        U5      [        5       40 UD6$ r,   )r?   rC   ÚLoad)r„   Údimsr  s      r   r  ÚExtSlice.__new__�  s   € Ü”T˜$“Z¤£Ñ2¨6Ñ2Ð2r   N)rm   r8  rm   r   r   r:  r:  ›  s
   † Ù;÷3r   r:  r=  c                 ó   • U R                   $ )zDeprecated. Use elts instead.©rA   ©r×   s    r   Ú_dims_getterrB  ¥  s   € à�y‰yÐr   c                 ó   • Xl         g r,   r@  ©r×   r/   s     r   Ú_dims_setterrE  ©  s   € Ø�	r   c                   ó   • \ rS rSrSrSrg)ÚSuitei®  ú/Deprecated AST node class.  Unused in Python 3.rm   Nr3  rm   r   r   rG  rG  ®  ó   † Ü9r   rG  c                   ó   • \ rS rSrSrSrg)ÚAugLoadi±  rH  rm   Nr3  rm   r   r   rK  rK  ±  rI  r   rK  c                   ó   • \ rS rSrSrSrg)ÚAugStorei´  rH  rm   Nr3  rm   r   r   rM  rM  ´  rI  r   rM  c                   ó   • \ rS rSrSrSrg)ÚParami·  rH  rm   Nr3  rm   r   r   rO  rO  ·  rI  r   rO  Ú1ec                   ó  • \ rS rSrSr\" 5       r\" 5       r\" 5       r\" 5       r	\" 5       r
\" 5       r\" 5       r\" 5       r\" 5       r\r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       rS rSrg)Ú_Precedencei¿  z5Precedence table that originated from python grammar.c                 óP   •  U R                  U S-   5      $ ! [         a    U s $ f = f©Nrb   )r   r   rA  s    r   ÚnextÚ_Precedence.nextØ  s.   € ð	Ø—>‘> $¨¡(Ó+Ð+øÜó 	ØŠKð	ús   ‚ –%¤%rm   N)r€   rè   ré   rê   rë   r   Ú
NAMED_EXPRÚTUPLEÚYIELDÚTESTÚORÚANDÚNOTÚCMPÚEXPRÚBORÚBXORÚBANDÚSHIFTÚARITHÚTERMÚFACTORÚPOWERÚAWAITÚATOMrU  rì   rm   r   r   rR  rR  ¿  s�   † á?á“€JÙ‹F€EÙ‹F€EÙ‹6€DÙ	‹€BÙ
‹&€CÙ
‹&€CÙ
‹&€Cá‹6€DØ
€CÙ‹6€DÙ‹6€DÙ‹F€EÙ‹F€EÙ‹6€DÙ‹V€FÙ‹F€EÙ‹F€EÙ‹6€Dõr   rR  )Ú'Ú")z"""ú'''c                   óð  ^ • \ rS rSrSrS rS rS rS rS”S jr	S r
\S•S
 j5       r\S	S.S j5       r\S 5       rS rS rS rS rS rS rU 4S jrS rS rS rS rS rS rS rS rS rS rS r S  r!S! r"S" r#S# r$S$ r%S% r&S& r'S' r(S( r)S) r*S* r+S+ r,S, r-S- r.S. r/S/ r0S0 r1S1 r2S2 r3S3 r4S4 r5S5 r6S6 r7S7 r8S8 r9S9 r:S: r;S; r<S< r=S= r>S> r?S? r@\AS@SA.SB jrB\ASC.SD jrCSE rDS–SF jrESG rFSH rGSI rHSJ rISK rJSL rKSM rLSN rMSO rNSP rOSQ rPSR rQSS rRST rSSU rTSVSWSXSYSZ.rU\VR®                  \VR°                  \VR°                  \VR°                  S[.rYS\ rZSXSYS]S^S_S`SaSbScSdSeSfSgSh.r[\VR¸                  \VR¸                  \VRº                  \VRº                  \VRº                  \VRº                  \VR¼                  \VR¼                  \VR¾                  \VRÀ                  \VRÂ                  \VRº                  \VRÄ                  Si.rc\d" Sj5      reSk rfSlSmSnSoSpSqSrSsStSuSv.
rgSw rhSxSySz.ri\VRÔ                  \VRÖ                  S{.rlS| rmS} rnS~ roS rpS€ rqS� rrS‚ rsSƒ rtS„ ruS… rvS† rwS‡ rxSˆ ryS‰ rzSŠ r{S‹ r|SŒ r}S� r~SŽ rS� r€S� r�S‘ r‚S’ rƒS“r„U =r…$ )—Ú	_Unparseriã  z…Methods in this class recursively traverse an AST and
output source code for the abstract syntax; original formatting
is disregarded.c                 óJ   • / U l         0 U l        0 U l        SU l        SU l        g )Nr   F)Ú_sourceÚ_precedencesÚ_type_ignoresÚ_indentÚ_in_try_starrA  s    r   r  Ú_Unparser.__init__è  s(   € ØˆŒØˆÔØˆÔØˆŒØ!ˆÕr   c                 óŽ   • [        U5      n U" [        U5      5        U H  nU" 5         U" U5        M     g! [         a     gf = f)z7Call f on each item in seq, calling inter() in between.N)ÚiterrU  ÚStopIteration)r×   ÚinterÚfÚseqro   s        r   Ú
interleaveÚ_Unparser.interleaveï  sG   € ä�3‹iˆð	ÙŒd�3‹iŒLó �Ù”Ù�!–ò øô ó 	Ùð	ús   �7 ·
AÁAc                 óŠ   ^ • [        U5      S:X  a  U" US   5        T R                  S5        gT R                  U 4S jX5        g)z—Traverse and separate the given *items* with a comma and append it to
the buffer. If *items* is a single item sequence, a trailing comma
will be added.rb   r   Ú,c                  ó&   >• T R                  S5      $ ©Nre   ©ÚwriterA  s   €r   Ú<lambda>Ú&_Unparser.items_view.<locals>.<lambda>  ó   ø€  D§J¡J¨tÔ$4r   N)rL   rƒ  r|  )r×   Ú	traverserrá   s   `  r   Ú
items_viewÚ_Unparser.items_viewû  s6   ø€ ô ˆu‹:˜‹?Ù�e˜A‘hÔØ�J‰J�s�Oà�O‰OÔ4°iÕGr   c                 óJ   • U R                   (       a  U R                  S5        gg)z8Adds a newline if it isn't the start of generated sourcerc   N)rp  rƒ  rA  s    r   Úmaybe_newlineÚ_Unparser.maybe_newline  s   € à�<�<Ø�J‰J�tÕð r   c                 óf   • U R                  5         U R                  SU R                  -  U-   5        g)zPIndent a piece of text and append it, according to the current
indentation levelz    N)r‹  rƒ  rs  ©r×   r¶   s     r   ÚfillÚ_Unparser.fill
  s*   € ð 	×ÑÔØ�
‰
�6˜DŸL™LÑ(¨4Ñ/Õ0r   c                 ó:   • U R                   R                  U5        g)zAdd new source partsN)rp  r}   rŽ  s     r   rƒ  Ú_Unparser.write  s   € à�‰×Ñ˜DÕ!r   Nc              #   óN   #   • Uc  / nU R                   nXl         Uv •  X l         g 7fr,   )rp  )r×   ÚbufferÚoriginal_sources      r   ÚbufferedÚ_Unparser.buffered  s'   é € à‰>ØˆFàŸ,™,ˆØŒØŠØ&�ùs   ‚#%©Úextrac             #   óº   #   • U R                  S5        U(       a  U R                  U5        U =R                  S-  sl        Sv •  U =R                  S-  sl        g7f)zèA context manager for preparing the source for blocks. It adds
the character':', increases the indentation on enter and decreases
the indentation on exit. If *extra* is given, it will be directly
appended after the colon character.
Ú:rb   N)rƒ  rs  )r×   r™  s     r   ÚblockÚ_Unparser.block  s@   é € ð 	�
‰
�3ŒÞØ�J‰J�uÔØ�Š˜Ñ�ÛØ�Š˜ÑŽùs   ‚AAc              #   óX   #   • U R                  U5        Sv •  U R                  U5        g7f)zA context manager for preparing the source for expressions. It adds
*start* to the buffer and enters, after exit it adds *end*.Nr‚  )r×   ÚstartÚends      r   ÚdelimitÚ_Unparser.delimit,  s!   é € ð
 	�
‰
�5ÔÛØ�
‰
�3�ùs   ‚(*c                 óF   • U(       a  U R                  X5      $ [        5       $ r,   )r¡  r   )r×   rŸ  r   Ú	conditions       r   Ú
delimit_ifÚ_Unparser.delimit_if5  s   € ÞØ—<‘< Ó+Ð+ä“=Ð r   c                 óL   • U R                  SSU R                  U5      U:„  5      $ )z,Shortcut to adding precedence related parensrh   ri   )r¥  Úget_precedence)r×   Ú
precedencer&   s      r   Úrequire_parensÚ_Unparser.require_parens;  s%   € à�‰˜s C¨×)<Ñ)<¸TÓ)BÀZÑ)OÓPÐPr   c                 óV   • U R                   R                  U[        R                  5      $ r,   )rq  ry   rR  rZ  ©r×   r&   s     r   r¨  Ú_Unparser.get_precedence?  s!   € Ø× Ñ ×$Ñ$ T¬;×+;Ñ+;Ó<Ð<r   c                 ó2   • U H  nXR                   U'   M     g r,   )rq  )r×   r©  Únodesr&   s       r   Úset_precedenceÚ_Unparser.set_precedenceB  s   € ÛˆDØ&0×Ñ˜dÓ#ò r   c                 óR  • [        U[        [        [        [        45      (       a  [        UR                  5      S:  a  gUR                  S   n[        U[        5      (       d  gUR                  n[        U[        5      (       a"  [        UR                  [        5      (       a  U$ gg)z›If a docstring node is found in the body of the *node* parameter,
return that docstring node, None otherwise.

Logic mirrored from ``_PyAST_GetDocString``.rb   Nr   )r   r®   r¯   r°   r±   rL   r[   r²   r/   r-   rX   r­  s     r   Úget_raw_docstringÚ_Unparser.get_raw_docstringF  s„   € ô
 ØÔ#¤[´(¼FÐC÷
ñ 
ä�—‘‹^˜aÓØØ�y‰y˜‰|ˆÜ˜$¤×%Ñ%ØØ�z‰zˆÜ�dœH×%Ñ%¬*°T·Z±ZÄ×*EÑ*EØˆKð +FÐ%r   c                 ó„   • U R                   R                  UR                  5      =(       d    UR                  nUb  SU 3$ g )Nz	 # type: )rr  ry   r#   Útype_comment)r×   r&   Úcomments      r   Úget_type_commentÚ_Unparser.get_type_commentV  s?   € Ø×$Ñ$×(Ñ(¨¯©Ó5×J¸×9JÑ9JˆØÑØ˜w˜iÐ(Ð(ð r   c                 ó„   >• [        U[        5      (       a  U H  nU R                  U5        M     g [        TU ]  U5        g r,   )r   rC   ÚtraverseÚsuperrÚ   )r×   r&   r¬   r   s      €r   r¼  Ú_Unparser.traverse[  s4   ø€ Ü�dœD×!Ñ!Û�Ø—‘˜dÖ#ò ô ‰G‰M˜$Õr   c                 óh   • / U l         U R                  U5        SR                  U R                   5      $ )zzOutputs a source code string that, if converted back to an ast
(using ast.parse) will generate an AST equivalent to *node*rd   )rp  r¼  r�   r­  s     r   rÚ   Ú_Unparser.visite  s*   € ð ˆŒØ�‰�dÔØ�w‰w�t—|‘|Ó$Ð$r   c                 óÊ   • U R                  U5      =n(       a0  U R                  U5        U R                  UR                  SS  5        g U R                  UR                  5        g rT  )r´  Ú_write_docstringr¼  r[   )r×   r&   Ú	docstrings      r   Ú"_write_docstring_and_traverse_bodyÚ,_Unparser._write_docstring_and_traverse_bodyl  sL   € Ø×/Ñ/°Ó5Ð5ˆIÕ5Ø×!Ñ! )Ô,Ø�M‰M˜$Ÿ)™) A B˜-Õ(à�M‰M˜$Ÿ)™)Õ$r   c                 óØ   • UR                    Vs0 s H  nUR                  SUR                   3_M     snU l        U R	                  U5        U R                  R                  5         g s  snf )NÚignore)Útype_ignoresr#   Útagrr  rÄ  Úclear)r×   r&   rÇ  s      r   Úvisit_ModuleÚ_Unparser.visit_Modules  se   € ð ×+Ò+ó
â+�ð �M‰M˜V F§J¡J <Ð0Ò0Ù+ñ
ˆÔð 	×/Ñ/°Ô5Ø×Ñ× Ñ Õ"ùò
s   �$A'c                 ó  ^ • T R                  SS5         T R                  U 4S jT R                  UR                  5        S S S 5        T R	                  S5        T R                  UR
                  5        g ! , (       d  f       N;= f)Nrh   ri   c                  ó&   >• T R                  S5      $ r�  r‚  rA  s   €r   r„  Ú._Unparser.visit_FunctionType.<locals>.<lambda>~  ó   ø€ ˜Ÿ
™
 4Ô(r   ú -> )r¡  r|  r¼  Úargtypesrƒ  Úreturnsr­  s   ` r   Úvisit_FunctionTypeÚ_Unparser.visit_FunctionType{  sX   ø€ Ø�\‰\˜#˜sÕ#Ø�O‰OÜ(¨$¯-©-¸¿¹ô÷ $ð
 	�
‰
�6ÔØ�‰�d—l‘lÕ#÷ $Õ#ús   ”,A5Á5
Bc                 ó®   • U R                  5         U R                  [        R                  UR                  5        U R                  UR                  5        g r,   )r�  r±  rR  rY  r/   r¼  r­  s     r   Ú
visit_ExprÚ_Unparser.visit_Expr„  s5   € Ø�	‰	ŒØ×ÑœK×-Ñ-¨t¯z©zÔ:Ø�‰�d—j‘jÕ!r   c                 óp  • U R                  [        R                  U5         U R                  [        R                  UR
                  UR                  5        U R                  UR
                  5        U R                  S5        U R                  UR                  5        S S S 5        g ! , (       d  f       g = f)Nz := )	rª  rR  rW  r±  ri  Útargetr/   r¼  rƒ  r­  s     r   Úvisit_NamedExprÚ_Unparser.visit_NamedExpr‰  sp   € Ø× Ñ ¤×!7Ñ!7¸Õ>Ø×Ñ¤× 0Ñ 0°$·+±+¸t¿z¹zÔJØ�M‰M˜$Ÿ+™+Ô&Ø�J‰J�vÔØ�M‰M˜$Ÿ*™*Ô%÷	 ?×>Ö>ús   ¡A=B'Â'
B5c                 ó~   ^ • T R                  S5        T R                  U 4S jT R                  UR                  5        g )Nzimport c                  ó&   >• T R                  S5      $ r�  r‚  rA  s   €r   r„  Ú(_Unparser.visit_Import.<locals>.<lambda>’  ó   ø€  §
¡
¨4Ô 0r   )r�  r|  r¼  Únamesr­  s   ` r   Úvisit_ImportÚ_Unparser.visit_Import�  s(   ø€ Ø�	‰	�)ÔØ�‰Ô0°$·-±-ÀÇÁÕLr   c                 óF  ^ • T R                  S5        T R                  SUR                  =(       d    S-  5        UR                  (       a  T R                  UR                  5        T R                  S5        T R	                  U 4S jT R
                  UR                  5        g )Nzfrom Ú.r   z import c                  ó&   >• T R                  S5      $ r�  r‚  rA  s   €r   r„  Ú,_Unparser.visit_ImportFrom.<locals>.<lambda>š  rà  r   )r�  rƒ  rq   Úmoduler|  r¼  rá  r­  s   ` r   Úvisit_ImportFromÚ_Unparser.visit_ImportFrom”  sd   ø€ Ø�	‰	�'ÔØ�
‰
�3˜$Ÿ*™*Ÿ/¨Ñ*Ô+Ø�;�;Ø�J‰J�t—{‘{Ô#Ø�
‰
�:ÔØ�‰Ô0°$·-±-ÀÇÁÕLr   c                 óX  • U R                  5         UR                   HE  nU R                  [        R                  U5        U R                  U5        U R                  S5        MG     U R                  UR                  5        U R                  U5      =n(       a  U R                  U5        g g )Nú = )	r�  Útargetsr±  rR  rX  r¼  rƒ  r/   r¹  )r×   r&   rÚ  r·  s       r   Úvisit_AssignÚ_Unparser.visit_Assignœ  s€   € Ø�	‰	ŒØ—l”lˆFØ×Ñ¤× 1Ñ 1°6Ô:Ø�M‰M˜&Ô!Ø�J‰J�uÖñ #ð 	�‰�d—j‘jÔ!Ø×0Ñ0°Ó6Ð6ˆ<Õ6Ø�J‰J�|Õ$ð 7r   c                 ó  • U R                  5         U R                  UR                  5        U R                  SU R                  UR
                  R                  R                     -   S-   5        U R                  UR                  5        g )Nr�   z= )	r�  r¼  rÚ  rƒ  Úbinopr7   r   r€   r/   r­  s     r   Úvisit_AugAssignÚ_Unparser.visit_AugAssign¦  sZ   € Ø�	‰	ŒØ�‰�d—k‘kÔ"Ø�
‰
�3˜Ÿ™ D§G¡G×$5Ñ$5×$>Ñ$>Ñ?Ñ?À$ÑFÔGØ�‰�d—j‘jÕ!r   c                 óè  • U R                  5         U R                  SSUR                  (       + =(       a    [        UR                  [
        5      5         U R                  UR                  5        S S S 5        U R                  S5        U R                  UR                  5        UR                  (       a-  U R                  S5        U R                  UR                  5        g g ! , (       d  f       Ny= f)Nrh   ri   r$   rì  )
r�  r¥  r‰   r   rÚ  rG   r¼  rƒ  Ú
annotationr/   r­  s     r   Úvisit_AnnAssignÚ_Unparser.visit_AnnAssign¬  s–   € Ø�	‰	ŒØ�_‰_˜S #¨4¯;©;¤×'X¼:ÀdÇkÁkÔSWÓ;XÕYØ�M‰M˜$Ÿ+™+Ô&÷ Zà�
‰
�4ÔØ�‰�d—o‘oÔ&Ø�:�:Ø�J‰J�uÔØ�M‰M˜$Ÿ*™*Õ%ð ÷	 ZÕYús   ÁC#Ã#
C1c                 ó¢   • U R                  S5        UR                  (       a-  U R                  S5        U R                  UR                  5        g g )NÚreturnr�   )r�  r/   rƒ  r¼  r­  s     r   Úvisit_ReturnÚ_Unparser.visit_Return¶  s5   € Ø�	‰	�(ÔØ�:�:Ø�J‰J�sŒOØ�M‰M˜$Ÿ*™*Õ%ð r   c                 ó&   • U R                  S5        g )NÚpass©r�  r­  s     r   Ú
visit_PassÚ_Unparser.visit_Pass¼  s   € Ø�	‰	�&Õr   c                 ó&   • U R                  S5        g )NÚbreakrþ  r­  s     r   Úvisit_BreakÚ_Unparser.visit_Break¿  s   € Ø�	‰	�'Õr   c                 ó&   • U R                  S5        g )NÚcontinuerþ  r­  s     r   Úvisit_ContinueÚ_Unparser.visit_ContinueÂ  s   € Ø�	‰	�*Õr   c                 ó~   ^ • T R                  S5        T R                  U 4S jT R                  UR                  5        g )Nzdel c                  ó&   >• T R                  S5      $ r�  r‚  rA  s   €r   r„  Ú(_Unparser.visit_Delete.<locals>.<lambda>Ç  rà  r   )r�  r|  r¼  rí  r­  s   ` r   Úvisit_DeleteÚ_Unparser.visit_DeleteÅ  s(   ø€ Ø�	‰	�&ÔØ�‰Ô0°$·-±-ÀÇÁÕNr   c                 óØ   • U R                  S5        U R                  UR                  5        UR                  (       a-  U R	                  S5        U R                  UR                  5        g g )Nzassert re   )r�  r¼  Útestr'   rƒ  r­  s     r   Úvisit_AssertÚ_Unparser.visit_AssertÉ  sF   € Ø�	‰	�)ÔØ�‰�d—i‘iÔ Ø�8�8Ø�J‰J�tÔØ�M‰M˜$Ÿ(™(Õ#ð r   c                 ó~   ^ • T R                  S5        T R                  U 4S jT R                  UR                  5        g )Nzglobal c                  ó&   >• T R                  S5      $ r�  r‚  rA  s   €r   r„  Ú(_Unparser.visit_Global.<locals>.<lambda>Ò  rà  r   ©r�  r|  rƒ  rá  r­  s   ` r   Úvisit_GlobalÚ_Unparser.visit_GlobalÐ  s(   ø€ Ø�	‰	�)ÔØ�‰Ô0°$·*±*¸d¿j¹jÕIr   c                 ó~   ^ • T R                  S5        T R                  U 4S jT R                  UR                  5        g )Nz	nonlocal c                  ó&   >• T R                  S5      $ r�  r‚  rA  s   €r   r„  Ú*_Unparser.visit_Nonlocal.<locals>.<lambda>Ö  rà  r   r  r­  s   ` r   Úvisit_NonlocalÚ_Unparser.visit_NonlocalÔ  s(   ø€ Ø�	‰	�+ÔØ�‰Ô0°$·*±*¸d¿j¹jÕIr   c                 óh  • U R                  [        R                  U5         U R                  S5        UR                  (       aV  U R                  S5        U R                  [        R                  UR                  5        U R                  UR                  5        S S S 5        g ! , (       d  f       g = f)NÚawaitr�   )rª  rR  rh  rƒ  r/   r±  ri  r¼  r­  s     r   Úvisit_AwaitÚ_Unparser.visit_AwaitØ  ól   € Ø× Ñ ¤×!2Ñ!2°DÕ9Ø�J‰J�wÔØ�z�zØ—
‘
˜3”Ø×#Ñ#¤K×$4Ñ$4°d·j±jÔAØ—‘˜dŸj™jÔ)÷ :×9Ö9úó   ¡A9B#Â#
B1c                 óh  • U R                  [        R                  U5         U R                  S5        UR                  (       aV  U R                  S5        U R                  [        R                  UR                  5        U R                  UR                  5        S S S 5        g ! , (       d  f       g = f)NÚyieldr�   )rª  rR  rY  rƒ  r/   r±  ri  r¼  r­  s     r   Úvisit_YieldÚ_Unparser.visit_Yieldà  r!  r"  c                 ó\  • U R                  [        R                  U5         U R                  S5        UR                  (       d  [        S5      eU R                  [        R                  UR                  5        U R                  UR                  5        S S S 5        g ! , (       d  f       g = f)Nzyield from z-Node can't be used without a value attribute.)	rª  rR  rY  rƒ  r/   r   r±  ri  r¼  r­  s     r   Úvisit_YieldFromÚ_Unparser.visit_YieldFromè  sm   € Ø× Ñ ¤×!2Ñ!2°DÕ9Ø�J‰J�}Ô%Ø—:—:Ü Ð!PÓQÐQØ×Ñ¤× 0Ñ 0°$·*±*Ô=Ø�M‰M˜$Ÿ*™*Ô%÷ :×9Ö9ús   ¡A3BÂ
B+c                 óV  • U R                  S5        UR                  (       d  UR                  (       a  [        S5      eg U R	                  S5        U R                  UR                  5        UR                  (       a-  U R	                  S5        U R                  UR                  5        g g )NÚraisez*Node can't use cause without an exception.r�   z from )r�  ÚexcÚcauser   rƒ  r¼  r­  s     r   Úvisit_RaiseÚ_Unparser.visit_Raiseð  sn   € Ø�	‰	�'ÔØ�x�xØ�z�zÜ Ð#MÓOÐOØØ�
‰
�3ŒØ�‰�d—h‘hÔØ�:�:Ø�J‰J�xÔ Ø�M‰M˜$Ÿ*™*Õ%ð r   c                 ó–  • U R                  S5        U R                  5          U R                  UR                  5        S S S 5        UR                   H  nU R                  U5        M     UR
                  (       aE  U R                  S5        U R                  5          U R                  UR
                  5        S S S 5        UR                  (       aF  U R                  S5        U R                  5          U R                  UR                  5        S S S 5        g g ! , (       d  f       Nà= f! , (       d  f       Nw= f! , (       d  f       g = f)NÚtryÚelseÚfinally)r�  rœ  r¼  r[   ÚhandlersÚorelseÚ	finalbody)r×   r&   Úexs      r   Údo_visit_tryÚ_Unparser.do_visit_tryü  sÇ   € Ø�	‰	�%ÔØ�Z‰Z�\Ø�M‰M˜$Ÿ)™)Ô$÷ à—-”-ˆBØ�M‰M˜"Öñ  à�;�;Ø�I‰I�fÔØ—‘•Ø—‘˜dŸk™kÔ*÷ à�>�>Ø�I‰I�iÔ Ø—‘•Ø—‘˜dŸn™nÔ-÷ �ð ÷ �\ú÷ •ú÷ •ús#   ¢DÂD)Ã2D:Ä
D&Ä)
D7Ä:
Ec                 óp   • U R                   n SU l         U R                  U5        X l         g ! X l         f = f)NF©rt  r8  ©r×   r&   Úprev_in_try_stars      r   Ú	visit_TryÚ_Unparser.visit_Try  s7   € Ø×,Ñ,Ðð	1Ø %ˆDÔØ×Ñ˜dÔ#à 0ÕøÐ 0Õúó   Ž- ­5c                 óp   • U R                   n SU l         U R                  U5        X l         g ! X l         f = f)NTr;  r<  s      r   Úvisit_TryStarÚ_Unparser.visit_TryStar  s7   € Ø×,Ñ,Ðð	1Ø $ˆDÔØ×Ñ˜dÔ#à 0ÕøÐ 0Õúr@  c                 óÊ  • U R                  U R                  (       a  SOS5        UR                  (       a,  U R                  S5        U R	                  UR                  5        UR
                  (       a,  U R                  S5        U R                  UR
                  5        U R                  5          U R	                  UR                  5        S S S 5        g ! , (       d  f       g = f)Nzexcept*Úexceptr�   ú as )r�  rt  r.   rƒ  r¼  r‡   rœ  r[   r­  s     r   Úvisit_ExceptHandlerÚ_Unparser.visit_ExceptHandler  s€   € Ø�	‰	˜t×0×0‘)°hÔ?Ø�9�9Ø�J‰J�sŒOØ�M‰M˜$Ÿ)™)Ô$Ø�9�9Ø�J‰J�vÔØ�J‰J�t—y‘yÔ!Ø�Z‰Z�\Ø�M‰M˜$Ÿ)™)Ô$÷ �\Ž\ús   Â/CÃ
C"c                 ó(  • U R                  5         UR                   H%  nU R                  S5        U R                  U5        M'     U R                  SUR                  -   5        [        US5      (       a  U R                  UR                  5        U R                  SSUR                  =(       d    UR                  S9   SnUR                   H/  nU(       a  U R                  S5        OS	nU R                  U5        M1     UR                   H/  nU(       a  U R                  S5        OS	nU R                  U5        M1     S S S 5        U R                  5          U R                  U5        S S S 5        g ! , (       d  f       N9= f! , (       d  f       g = f)
NÚ@zclass Útype_paramsrh   ri   )r¤  Fre   T)r‹  Údecorator_listr�  r¼  r‡   r•   Ú_type_params_helperrK  r¥  ÚbasesrJ   rƒ  rœ  rÄ  )r×   r&   ÚdecoÚcommaÚes        r   Úvisit_ClassDefÚ_Unparser.visit_ClassDef&  s'  € Ø×ÑÔØ×'Ô'ˆDØ�I‰I�cŒNØ�M‰M˜$Öñ (ð 	�	‰	�(˜TŸY™YÑ&Ô'Ü�4˜×'Ñ'Ø×$Ñ$ T×%5Ñ%5Ô6Ø�_‰_˜S #°4·:±:×3NÀÇÁˆ_ÒOØˆEØ—Z”Z�ÞØ—J‘J˜tÕ$à �EØ—‘˜aÖ ñ  ð —]”]�ÞØ—J‘J˜tÕ$à �EØ—‘˜aÖ ñ #÷ Pð �Z‰Z�\Ø×3Ñ3°DÔ9÷ ˆ\÷ PÕOú÷ �\ús   Â>BE2ÅFÅ2
F Æ
Fc                 ó(   • U R                  US5        g )NÚdef©Ú_function_helperr­  s     r   Úvisit_FunctionDefÚ_Unparser.visit_FunctionDef@  s   € Ø×Ñ˜d EÕ*r   c                 ó(   • U R                  US5        g )Nz	async defrV  r­  s     r   Úvisit_AsyncFunctionDefÚ _Unparser.visit_AsyncFunctionDefC  s   € Ø×Ñ˜d KÕ0r   c                 óÆ  • U R                  5         UR                   H%  nU R                  S5        U R                  U5        M'     US-   UR                  -   nU R                  U5        [        US5      (       a  U R                  UR                  5        U R                  SS5         U R                  UR                  5        S S S 5        UR                  (       a,  U R                  S5        U R                  UR                  5        U R                  U R                  U5      S9   U R                  U5        S S S 5        g ! , (       d  f       N„= f! , (       d  f       g = f)NrJ  r�   rK  rh   ri   rÑ  r˜  )r‹  rL  r�  r¼  r‡   r•   rM  rK  r¡  rI   rÓ  rƒ  rœ  r¹  rÄ  )r×   r&   Úfill_suffixrO  Údef_strs        r   rW  Ú_Unparser._function_helperF  sþ   € Ø×ÑÔØ×'Ô'ˆDØ�I‰I�cŒNØ�M‰M˜$Öñ (ð  Ñ# d§i¡iÑ/ˆØ�	‰	�'ÔÜ�4˜×'Ñ'Ø×$Ñ$ T×%5Ñ%5Ô6Ø�\‰\˜#˜sÕ#Ø�M‰M˜$Ÿ)™)Ô$÷ $à�<�<Ø�J‰J�vÔØ�M‰M˜$Ÿ,™,Ô'Ø�Z‰Z˜d×3Ñ3°DÓ9ˆZÒ:Ø×3Ñ3°DÔ9÷ ;Ð:÷ $Õ#ú÷
 ;Õ:ús   Â'EÄ&EÅ
EÅ
E c                 óÈ   ^ • UbM  [        U5      S:”  a=  T R                  SS5         T R                  U 4S jT R                  U5        S S S 5        g g g ! , (       d  f       g = f)Nr   rj   rt   c                  ó&   >• T R                  S5      $ r�  r‚  rA  s   €r   r„  Ú/_Unparser._type_params_helper.<locals>.<lambda>Z  ó   ø€ ¨¯
©
°4Ô(8r   )rL   r¡  r|  r¼  )r×   rK  s   ` r   rM  Ú_Unparser._type_params_helperW  sO   ø€ ØÑ"¤s¨;Ó'7¸!Ó';Ø—‘˜c 3Õ'Ø—‘Ô 8¸$¿-¹-ÈÔU÷ (Ð'ð (<Ð"ß'Õ'ús   ¦"AÁ
A!c                 ó0  • U R                  UR                  5        UR                  (       a,  U R                  S5        U R                  UR                  5        UR                  (       a-  U R                  S5        U R                  UR                  5        g g )Nr$   rì  )rƒ  r‡   Úboundr¼  Údefault_valuer­  s     r   Úvisit_TypeVarÚ_Unparser.visit_TypeVar\  sa   € Ø�
‰
�4—9‘9ÔØ�:�:Ø�J‰J�tÔØ�M‰M˜$Ÿ*™*Ô%Ø××Ø�J‰J�uÔØ�M‰M˜$×,Ñ,Õ-ð r   c                 ó¼   • U R                  SUR                  -   5        UR                  (       a-  U R                  S5        U R                  UR                  5        g g )Nr   rì  ©rƒ  r‡   rh  r¼  r­  s     r   Úvisit_TypeVarTupleÚ_Unparser.visit_TypeVarTuplee  sB   € Ø�
‰
�3˜Ÿ™‘?Ô#Ø××Ø�J‰J�uÔØ�M‰M˜$×,Ñ,Õ-ð r   c                 ó¼   • U R                  SUR                  -   5        UR                  (       a-  U R                  S5        U R                  UR                  5        g g )Nú**rì  rl  r­  s     r   Úvisit_ParamSpecÚ_Unparser.visit_ParamSpeck  sC   € Ø�
‰
�4˜$Ÿ)™)Ñ#Ô$Ø××Ø�J‰J�uÔØ�M‰M˜$×,Ñ,Õ-ð r   c                 óê   • U R                  S5        U R                  UR                  5        U R                  UR                  5        U R                  S5        U R                  UR                  5        g )Nztype rì  )r�  r¼  r‡   rM  rK  rƒ  r/   r­  s     r   Úvisit_TypeAliasÚ_Unparser.visit_TypeAliasq  sN   € Ø�	‰	�'ÔØ�‰�d—i‘iÔ Ø× Ñ  ×!1Ñ!1Ô2Ø�
‰
�5ÔØ�‰�d—j‘jÕ!r   c                 ó(   • U R                  SU5        g )Nzfor ©Ú_for_helperr­  s     r   Ú	visit_ForÚ_Unparser.visit_Forx  s   € Ø×Ñ˜ Õ&r   c                 ó(   • U R                  SU5        g )Nz
async for rw  r­  s     r   Úvisit_AsyncForÚ_Unparser.visit_AsyncFor{  s   € Ø×Ñ˜ tÕ,r   c                 ó~  • U R                  U5        U R                  [        R                  UR                  5        U R                  UR                  5        U R                  S5        U R                  UR                  5        U R                  U R                  U5      S9   U R                  UR                  5        S S S 5        UR                  (       aF  U R                  S5        U R                  5          U R                  UR                  5        S S S 5        g g ! , (       d  f       Nf= f! , (       d  f       g = f)Nú in r˜  r2  )r�  r±  rR  rX  rÚ  r¼  rƒ  rw  rœ  r¹  r[   r5  )r×   r�  r&   s      r   rx  Ú_Unparser._for_helper~  sÊ   € Ø�	‰	�$ŒØ×ÑœK×-Ñ-¨t¯{©{Ô;Ø�‰�d—k‘kÔ"Ø�
‰
�6ÔØ�‰�d—i‘iÔ Ø�Z‰Z˜d×3Ñ3°DÓ9ˆZÒ:Ø�M‰M˜$Ÿ)™)Ô$÷ ;à�;�;Ø�I‰I�fÔØ—‘•Ø—‘˜dŸk™kÔ*÷ �ð ÷ ;Õ:ú÷ •ús   Â!DÃ7D.Ä
D+Ä.
D<c                 óì  • U R                  S5        U R                  UR                  5        U R                  5          U R                  UR                  5        S S S 5        UR
                  (       aø  [        UR
                  5      S:X  aß  [        UR
                  S   [        5      (       a½  UR
                  S   nU R                  S5        U R                  UR                  5        U R                  5          U R                  UR                  5        S S S 5        UR
                  (       a=  [        UR
                  5      S:X  a$  [        UR
                  S   [        5      (       a  M½  UR
                  (       aF  U R                  S5        U R                  5          U R                  UR
                  5        S S S 5        g g ! , (       d  f       GNp= f! , (       d  f       NÆ= f! , (       d  f       g = f)Nzif rb   r   zelif r2  )	r�  r¼  r  rœ  r[   r5  rL   r   ÚIfr­  s     r   Úvisit_IfÚ_Unparser.visit_If‹  s1  € Ø�	‰	�%ÔØ�‰�d—i‘iÔ Ø�Z‰Z�\Ø�M‰M˜$Ÿ)™)Ô$÷ ð �k�kœc $§+¡+Ó.°!Ó3¼
À4Ç;Á;ÈqÁ>ÔSU×8VÑ8VØ—;‘;˜q‘>ˆDØ�I‰I�gÔØ�M‰M˜$Ÿ)™)Ô$Ø—‘•Ø—‘˜dŸi™iÔ(÷ ð	 �k�kœc $§+¡+Ó.°!Ó3¼
À4Ç;Á;ÈqÁ>ÔSU×8VÓ8Vð �;�;Ø�I‰I�fÔØ—‘•Ø—‘˜dŸk™kÔ*÷ �ð ÷ Ž\ú÷ •ú÷
 •ús#   ½GÃ8GÆG%Ç
GÇ
G"Ç%
G3c                 ó¶  • U R                  S5        U R                  UR                  5        U R                  5          U R                  UR                  5        S S S 5        UR
                  (       aF  U R                  S5        U R                  5          U R                  UR
                  5        S S S 5        g g ! , (       d  f       Nf= f! , (       d  f       g = f)Nzwhile r2  )r�  r¼  r  rœ  r[   r5  r­  s     r   Úvisit_WhileÚ_Unparser.visit_While�  s„   € Ø�	‰	�(ÔØ�‰�d—i‘iÔ Ø�Z‰Z�\Ø�M‰M˜$Ÿ)™)Ô$÷ à�;�;Ø�I‰I�fÔØ—‘•Ø—‘˜dŸk™kÔ*÷ �ð ÷ �\ú÷ •ús   ½B9ÂC
Â9
CÃ

Cc                 ó$  ^ • T R                  S5        T R                  U 4S jT R                  UR                  5        T R	                  T R                  U5      S9   T R                  UR                  5        S S S 5        g ! , (       d  f       g = f)Nzwith c                  ó&   >• T R                  S5      $ r�  r‚  rA  s   €r   r„  Ú&_Unparser.visit_With.<locals>.<lambda>©  rà  r   r˜  ©r�  r|  r¼  rá   rœ  r¹  r[   r­  s   ` r   Ú
visit_WithÚ_Unparser.visit_With§  s]   ø€ Ø�	‰	�'ÔØ�‰Ô0°$·-±-ÀÇÁÔLØ�Z‰Z˜d×3Ñ3°DÓ9ˆZÒ:Ø�M‰M˜$Ÿ)™)Ô$÷ ;×:Ö:úó   ÁBÂ
Bc                 ó$  ^ • T R                  S5        T R                  U 4S jT R                  UR                  5        T R	                  T R                  U5      S9   T R                  UR                  5        S S S 5        g ! , (       d  f       g = f)Nzasync with c                  ó&   >• T R                  S5      $ r�  r‚  rA  s   €r   r„  Ú+_Unparser.visit_AsyncWith.<locals>.<lambda>¯  rà  r   r˜  r‹  r­  s   ` r   Úvisit_AsyncWithÚ_Unparser.visit_AsyncWith­  s]   ø€ Ø�	‰	�-Ô Ø�‰Ô0°$·-±-ÀÇÁÔLØ�Z‰Z˜d×3Ñ3°DÓ9ˆZÒ:Ø�M‰M˜$Ÿ)™)Ô$÷ ;×:Ö:úrŽ  F©Úquote_typesÚescape_special_whitespacec                óÞ  ^^^• U4S jnSR                  [        UT5      5      mUnST;   a  U Vs/ s H  of[        ;   d  M  UPM     nnU Vs/ s H  ofT;  d  M
  UPM     nnU(       d,  [        T5      m[	        U4S jU 5       TS   5      nTSS U/4$ T(       aD  UR                  U4S jS	9  US   S   TS   :X  a"  [        US   5      S
:X  d   eTSS S-   TS   -   mTU4$ s  snf s  snf )z{Helper for writing string literals, minimizing escapes.
Returns the tuple (string literal to write, possible quote types).
c                 óœ   >• T(       d  U S;   a  U $ U S:X  d  U R                  5       (       d   U R                  S5      R                  S5      $ U $ )Nz
	Ú\Úunicode_escapeÚascii)ÚisprintablerÆ   rÇ   )rÂ   r–  s    €r   Úescape_charÚ2_Unparser._str_literal_helper.<locals>.escape_char¹  sD   ø€ ö -°°f³Ø�à�D‹y §¡§¡Ø—x‘xÐ 0Ó1×8Ñ8¸ÓAÐAØˆHr   rd   rc   c              3   ó>   >#   • U  H  nTS    U;   d  M  Uv •  M     g7frl   rm   )rn   ÚqÚstrings     €r   rr   Ú0_Unparser._str_literal_helper.<locals>.<genexpr>Í  s   øé € ÐC¢[ °F¸1±IÀ±NŸ!™!¢[ùs   ƒ”	r   rb   r	   c                 ó   >• U S   TS   :H  $ )Nr   r	   rm   )r   Úescaped_strings    €r   r„  Ú/_Unparser._str_literal_helper.<locals>.<lambda>Ñ  s   ø€ ¨q°©t°~ÀbÑ7IÒ/Ir   )r  r   Nr™  )r�   r@   Ú_MULTI_QUOTESr|   rU  ÚsortrL   )	r×   r¡  r•  r–  r�  Úpossible_quotesr   Úquoter¤  s	    ` `    @r   Ú_str_literal_helperÚ_Unparser._str_literal_helper³  s
  ú€ õ	ð Ÿ™¤ [°&Ó!9Ó:ˆØ%ˆØ�>Ó!Ù*9ÓPª/ QÄ-Ñ=OŸq©/ˆOÐPÙ&5ÓQ¢o À.Ñ9PŸ1¡oˆÐQÞô ˜&“\ˆFÜÔC¡[ÓCÀVÈAÁYÓOˆEØ˜!˜B�< % Ð(Ð(Þà× Ñ Ô%IÐ ÑJð ˜qÑ! !Ñ$¨°rÑ(:Ó:Ü˜?¨1Ñ-Ó.°!Ó3Ð3Ð3Ø!/°°Ð!4°tÑ!;¸nÈRÑ>PÑ!P�Ø˜Ð.Ð.ùò# QùÚQs   ±C%ÁC%Á	C*ÁC*©r•  c                ó^   • U R                  XS9u  pUS   nU R                  U U U 35        g)zKWrite string literal value with a best effort attempt to avoid backslashes.r¬  r   N)rª  rƒ  )r×   r¡  r•  Ú
quote_types       r   Ú_write_str_avoiding_backslashesÚ)_Unparser._write_str_avoiding_backslashesÙ  s:   € à"×6Ñ6°vÐ6ÐWÑˆØ  ‘^ˆ
Ø�
‰
�j�\ & ¨*¨Ð6Õ7r   c                 ó  • U R                  S5        / nUR                   H]  nU R                  5        nU R                  U5        S S S 5        UR	                  SR                  W5      [        U[        5      45        M_     / n[        [        5      nSnU H¤  u  p8U(       a9  U R                  UUSS9u  p9[        U	5      R                  U5      (       a  Sn  OfU	nONSU;   a&  U V
s/ s H  oª[        ;   d  M  U
PM     nn
U(       d   eU V
s/ s H  oªU;  d  M
  U
PM     n	n
U	(       a  U	nUR	                  U5        M¦     U(       az  S/nUR                  5         U Ha  u  p8U(       aD  [        SU-   5      nS	nUR!                  U5      (       d   [        U5      5       eU[#        U5      S
 nUR	                  U5        Mc     SR                  U5      nUS   nU R                  U U U 35        g ! , (       d  f       GN¯= fs  sn
f s  sn
f )Nrz  rd   FTr”  rc   rl  rk  z'"r	   r   )rƒ  rN   r–  Ú_write_fstring_innerr{   r�   r   r-   rC   Ú_ALL_QUOTESrª  r>   Ú
isdisjointr¦  rÊ  r|   r–   rL   )r×   r&   Úfstring_partsr/   r”  Únew_fstring_partsr•  Úfallback_to_reprÚis_constantÚnew_quote_typesr   Úexpected_prefixr®  s                r   Úvisit_JoinedStrÚ_Unparser.visit_JoinedStrß  sì  € Ø�
‰
�3ŒàˆØ—[”[ˆEØ—‘” FØ×)Ñ)¨%Ô0÷ !à× Ñ Ø—‘˜“¤*¨U´HÓ"=Ð>öñ !ð ÐÜœ;Ó'ˆØ ÐÛ"/ÑˆEÞØ)-×)AÑ)AØØ +Ø.2ð *Bð *Ñ&�ô
 �Ó'×2Ñ2°;×?Ñ?Ø'+Ð$ÙØ-‘à˜5“=Ù.9Ó"Pªk¨Ä-Ñ=O§1©k�KÐ"PÞ&Ð&˜;á.9Ó"Lªk¨Àe¹^§1©k�Ð"LÞ"Ø"1�KØ×$Ñ$ UÖ+ñ' #0ö* ð !˜'ˆKØ×#Ñ#Ô%Û&3Ñ"�ÞÜ   u¡Ó-�EØ&+�OØ ×+Ñ+¨O×<Ñ<ÐI¼dÀ5»kÓIÐ<Ø!¤# oÓ"6°rÐ:�EØ!×(Ñ(¨Ö/ñ '4ð —‘Ð)Ó*ˆØ  ‘^ˆ
Ø�
‰
�j�\ % ¨¨Ð5Õ6÷[ !–üò, #Qùò #Ms#   ³G-Ã%G?Ã6G?Ä	HÄHÇ-
G<	c                 ó`  • [        U[        5      (       a#  UR                   H  nU R                  X2S9  M     g [        U[        5      (       a¬  [        UR
                  [        5      (       a�  UR
                  R                  SS5      R                  SS5      nU(       aH  UR                  SS5      nUR                  SS	5      nUR                  S
S5      nUR                  SS5      nU R                  U5        g [        U[        5      (       a  U R                  U5        g [        SU< 35      e)N©Úis_format_specÚ{z{{Ú}z}}r™  z\\rj  z\'rk  z\"rc   z\nz"Unexpected node inside JoinedStr, )r   Ú	JoinedStrrN   r²  r-   r/   rX   Úreplacerƒ  ÚFormattedValueÚvisit_FormattedValuer   )r×   r&   r¿  r/   s       r   r²  Ú_Unparser._write_fstring_inner  së   € Ü�dœI×&Ñ&àŸœ�Ø×)Ñ)¨%Ð)ÓOò %ä˜œh×'Ñ'¬J°t·z±zÄ3×,GÑ,GØ—J‘J×&Ñ& s¨DÓ1×9Ñ9¸#¸tÓDˆEæØŸ™ d¨FÓ3�ØŸ™ c¨5Ó1�ØŸ™ c¨5Ó1�ØŸ™ d¨EÓ2�Ø�J‰J�uÕÜ˜œn×-Ñ-Ø×%Ñ% dÕ+äÐAÀ$ÁÐJÓKÐKr   c                 óä  ^ • U 4S jnT R                  SS5         U" UR                  5      nUR                  S5      (       a  T R                  S5        T R                  U5        UR                  S:w  a'  T R                  S[        UR                  5       35        UR                  (       a+  T R                  S5        T R                  UR                  SS	9  S S S 5        g ! , (       d  f       g = f)
Nc                 ó¢   >• [        T5      " 5       nUR                  [        R                  R	                  5       U 5        UR                  U 5      $ r,   )r.   r±  rR  rZ  rU  rÚ   )ÚinnerÚunparserr×   s     €r   Úunparse_innerÚ5_Unparser.visit_FormattedValue.<locals>.unparse_inner'  s<   ø€ Ü˜D”z“|ˆHØ×#Ñ#¤K×$4Ñ$4×$9Ñ$9Ó$;¸UÔCØ—>‘> %Ó(Ð(r   rÀ  rÁ  r�   r	   Ú!r›  Tr¾  )r¡  r/   r–   rƒ  Ú
conversionÚchrÚformat_specr²  )r×   r&   rË  Úexprs   `   r   rÅ  Ú_Unparser.visit_FormattedValue&  s®   ø€ õ	)ð
 �\‰\˜#˜sÕ#Ù  §¡Ó,ˆDØ�‰˜s×#Ñ#à—
‘
˜3”Ø�J‰J�tÔØ�‰ "Ó$Ø—
‘
˜Qœs 4§?¡?Ó3Ð4Ð5Ô6Ø××Ø—
‘
˜3”Ø×)Ñ)¨$×*:Ñ*:È4Ð)ÑP÷ $×#Ö#ús   šB>C!Ã!
C/c                 ó:   • U R                  UR                  5        g r,   )rƒ  rH   r­  s     r   Ú
visit_NameÚ_Unparser.visit_Name8  s   € Ø�
‰
�4—7‘7Õr   c                 ó¢   • U R                  5         UR                  S:X  a  U R                  S5        U R                  UR                  [
        S9  g )NÚur¬  )r�  Úkindrƒ  r¯  r/   r¦  r­  s     r   rÂ  Ú_Unparser._write_docstring;  s9   € Ø�	‰	ŒØ�9‰9˜ÓØ�J‰J�sŒOØ×,Ñ,¨T¯Z©ZÄ]Ð,ÒSr   c           
      ó
  • [        U[        [        45      (       aN  U R                  [	        U5      R                  S[        5      R                  SS[         S[         S35      5        g U R                  [	        U5      5        g )NÚinfÚnanrh   Ú-ri   )r   r1   r2   rƒ  r|   rÃ  Ú_INFSTRrD  s     r   Ú_write_constantÚ_Unparser._write_constantA  sb   € Ü�eœe¤WÐ-×.Ñ.ð �J‰JÜ�U“ß‘˜¤Ó(ß‘˜ !¤G 9¨A¬g¨Y°aÐ 8Ó9õð �J‰J”t˜E“{Õ#r   c                 ó~  • UR                   n[        U[        5      (       a8  U R                  SS5         U R	                  U R
                  U5        S S S 5        g USL a  U R                  S5        g UR                  S:X  a  U R                  S5        U R                  UR                   5        g ! , (       d  f       g = f)Nrh   ri   .ú...r×  )r/   r   r   r¡  rˆ  rß  rƒ  rØ  )r×   r&   r/   s      r   ræ   Ú_Unparser.visit_ConstantM  s‡   € Ø—
‘
ˆÜ�eœU×#Ñ#Ø—‘˜c 3Õ'Ø—‘ × 4Ñ 4°eÔ<÷ (Ð'à�cŠ\Ø�J‰J�uÕà�y‰y˜CÓØ—
‘
˜3”Ø× Ñ  §¡Õ,÷ (Õ'ús   ´B.Â.
B<c                 ó´   ^ • T R                  SS5         T R                  U 4S jT R                  UR                  5        S S S 5        g ! , (       d  f       g = f)Nrj   rt   c                  ó&   >• T R                  S5      $ r�  r‚  rA  s   €r   r„  Ú&_Unparser.visit_List.<locals>.<lambda>[  r†  r   )r¡  r|  r¼  rA   r­  s   ` r   Ú
visit_ListÚ_Unparser.visit_ListY  s6   ø€ Ø�\‰\˜#˜sÕ#Ø�O‰OÔ4°d·m±mÀTÇYÁYÔO÷ $×#Ö#úó   ”,A	Á	
Ac                 óÚ   • U R                  SS5         U R                  UR                  5        UR                   H  nU R                  U5        M     S S S 5        g ! , (       d  f       g = f)Nrj   rt   ©r¡  r¼  ÚeltÚ
generators©r×   r&   Úgens      r   Úvisit_ListCompÚ_Unparser.visit_ListComp]  óF   € Ø�\‰\˜#˜sÕ#Ø�M‰M˜$Ÿ(™(Ô#Ø—”�Ø—‘˜cÖ"ñ '÷ $×#Ö#úó   “A AÁ
A*c                 óÚ   • U R                  SS5         U R                  UR                  5        UR                   H  nU R                  U5        M     S S S 5        g ! , (       d  f       g = f)Nrh   ri   rë  rî  s      r   Úvisit_GeneratorExpÚ_Unparser.visit_GeneratorExpc  rò  ró  c                 óÚ   • U R                  SS5         U R                  UR                  5        UR                   H  nU R                  U5        M     S S S 5        g ! , (       d  f       g = f)NrÀ  rÁ  rë  rî  s      r   Úvisit_SetCompÚ_Unparser.visit_SetCompi  rò  ró  c                 ó2  • U R                  SS5         U R                  UR                  5        U R                  S5        U R                  UR                  5        UR
                   H  nU R                  U5        M     S S S 5        g ! , (       d  f       g = f)NrÀ  rÁ  r$   )r¡  r¼  r  rƒ  r/   rí  rî  s      r   Úvisit_DictCompÚ_Unparser.visit_DictCompo  sb   € Ø�\‰\˜#˜sÕ#Ø�M‰M˜$Ÿ(™(Ô#Ø�J‰J�tÔØ�M‰M˜$Ÿ*™*Ô%Ø—”�Ø—‘˜cÖ"ñ '÷	 $×#Ö#ús   “A,BÂ
Bc                 ó@  • UR                   (       a  U R                  S5        OU R                  S5        U R                  [        R                  UR
                  5        U R                  UR
                  5        U R                  S5        U R                  " [        R                  R                  5       UR                  /UR                  Q76   U R                  UR                  5        UR                   H%  nU R                  S5        U R                  U5        M'     g )Nz async for z for r  ú if )Úis_asyncrƒ  r±  rR  rX  rÚ  r¼  rZ  rU  rw  Úifs)r×   r&   Ú	if_clauses      r   Úvisit_comprehensionÚ_Unparser.visit_comprehensionw  s¹   € Ø�=�=Ø�J‰J�}Õ%à�J‰J�wÔØ×ÑœK×-Ñ-¨t¯{©{Ô;Ø�‰�d—k‘kÔ"Ø�
‰
�6ÔØ×ÒœK×,Ñ,×1Ñ1Ó3°T·Y±YÐJÀÇÁÓJØ�‰�d—i‘iÔ ØŸœˆIØ�J‰J�vÔØ�M‰M˜)Ö$ò "r   c                 ó8  • U R                  [        R                  U5         U R                  [        R                  R	                  5       UR
                  UR                  5        U R                  UR
                  5        U R                  S5        U R                  UR                  5        U R                  S5        U R                  [        R                  UR                  5        U R                  UR                  5        S S S 5        g ! , (       d  f       g = f)Nrþ  z else )
rª  rR  rZ  r±  rU  r[   r  r¼  rƒ  r5  r­  s     r   Úvisit_IfExpÚ_Unparser.visit_IfExp…  s¯   € Ø× Ñ ¤×!1Ñ!1°4Õ8Ø×Ñ¤× 0Ñ 0× 5Ñ 5Ó 7¸¿¹ÀDÇIÁIÔNØ�M‰M˜$Ÿ)™)Ô$Ø�J‰J�vÔØ�M‰M˜$Ÿ)™)Ô$Ø�J‰J�xÔ Ø×Ñ¤× 0Ñ 0°$·+±+Ô>Ø�M‰M˜$Ÿ+™+Ô&÷ 9×8Ö8ús   ¡C!DÄ
Dc                 óú   ^ • UR                   (       aG  T R                  SS5         T R                  U 4S jT R                  UR                   5        S S S 5        g T R	                  S5        g ! , (       d  f       g = f)NrÀ  rÁ  c                  ó&   >• T R                  S5      $ r�  r‚  rA  s   €r   r„  Ú%_Unparser.visit_Set.<locals>.<lambda>’  rd  r   z{*()})rA   r¡  r|  r¼  rƒ  r­  s   ` r   Ú	visit_SetÚ_Unparser.visit_Set�  sP   ø€ Ø�9�9Ø—‘˜c 3Õ'Ø—‘Ô 8¸$¿-¹-ÈÏÉÔS÷ (Ð'ð
 �J‰J�wÕ÷ (Õ'ús   ¥,A,Á,
A:c           	      óä   ^ ^• U 4S jmU U4S jnT R                  SS5         T R                  U 4S jU[        UR                  UR                  5      5        S S S 5        g ! , (       d  f       g = f)Nc                 ól   >• TR                  U 5        TR                  S5        TR                  U5        g ©Nr$   ©r¼  rƒ  )ÚkÚvr×   s     €r   Úwrite_key_value_pairÚ2_Unparser.visit_Dict.<locals>.write_key_value_pair™  s'   ø€ Ø�M‰M˜!ÔØ�J‰J�tÔØ�M‰M˜!Õr   c                 óª   >• U u  pUcC  TR                  S5        TR                  [        R                  U5        TR	                  U5        g T" X5        g )Nrp  )rƒ  r±  rR  r_  r¼  )r¬   r  r  r×   r  s      €€r   Ú
write_itemÚ(_Unparser.visit_Dict.<locals>.write_itemž  sG   ø€ Ø‰DˆAØ‰yð —
‘
˜4Ô Ø×#Ñ#¤K×$4Ñ$4°aÔ8Ø—‘˜aÕ á$ QÕ*r   rÀ  rÁ  c                  ó&   >• T R                  S5      $ r�  r‚  rA  s   €r   r„  Ú&_Unparser.visit_Dict.<locals>.<lambda>«  rÐ  r   )r¡  r|  rP   rM   rN   )r×   r&   r  r  s   `  @r   Ú
visit_DictÚ_Unparser.visit_Dict˜  sK   ù€ õ	ö
		+ð �\‰\˜#˜sÕ#Ø�O‰OÜ(¨*´c¸$¿)¹)ÀTÇ[Á[Ó6Qô÷ $×#Ö#ús   ¢6A!Á!
A/c                 ó(  • U R                  SS[        UR                  5      S:H  =(       d"    U R                  U5      [        R
                  :„  5         U R                  U R                  UR                  5        S S S 5        g ! , (       d  f       g = f)Nrh   ri   r   )r¥  rL   rA   r¨  rR  rX  rˆ  r¼  r­  s     r   Úvisit_TupleÚ_Unparser.visit_Tuple®  sg   € Ø�_‰_ØØÜ�—	‘	‹N˜aÑ×P 4×#6Ñ#6°tÓ#<¼{×?PÑ?PÑ#Põ
ð
 �O‰O˜DŸM™M¨4¯9©9Ô5÷
÷ 
ö 
ús   Á'BÂ
BÚ~ÚnotÚ+rÝ  )ÚInvertÚNotr8   r9   )r  r  r   rÝ  c                 ó¨  • U R                   UR                  R                  R                     nU R                  U   nU R                  X15         U R                  U5        U[        R                  La  U R                  S5        U R                  X1R                  5        U R                  UR                  5        S S S 5        g ! , (       d  f       g = f©Nr�   )Úunopr7   r   r€   Úunop_precedencerª  rƒ  rR  rf  r±  r:   r¼  )r×   r&   ÚoperatorÚoperator_precedences       r   Úvisit_UnaryOpÚ_Unparser.visit_UnaryOp¾  s–   € Ø—9‘9˜TŸW™W×.Ñ.×7Ñ7Ñ8ˆØ"×2Ñ2°8Ñ<ÐØ× Ñ Ð!4Õ;Ø�J‰J�xÔ ð #¬+×*<Ñ*<Ò<Ø—
‘
˜3”Ø×ÑÐ 3·\±\ÔBØ�M‰M˜$Ÿ,™,Ô'÷ <×;Ö;ús   ÁA,CÃ
Cr   rJ  Ú/Ú%ú<<ú>>Ú|Ú^Ú&ú//rp  )rR   rS   ÚMultÚMatMultÚDivÚModÚLShiftÚRShiftÚBitOrÚBitXorÚBitAndÚFloorDivÚPow)r   rÝ  r   rJ  r+  r,  r-  r.  r/  r0  r1  r2  rp  )rp  c                 ó<  • U R                   UR                  R                  R                     nU R                  U   nU R                  X15         X R                  ;   a  UR                  5       nUnOUnUR                  5       nU R                  XAR                  5        U R                  UR                  5        U R                  SU S35        U R                  XQR                  5        U R                  UR                  5        S S S 5        g ! , (       d  f       g = fr$  )rñ  r7   r   r€   Úbinop_precedencerª  Úbinop_rassocrU  r±  rT   r¼  rƒ  rU   )r×   r&   r'  r(  Úleft_precedenceÚright_precedences         r   Úvisit_BinOpÚ_Unparser.visit_BinOpë  sÙ   € Ø—:‘:˜dŸg™g×/Ñ/×8Ñ8Ñ9ˆØ"×3Ñ3°HÑ=ÐØ× Ñ Ð!4Õ;Ø×,Ñ,Ó,Ø"5×":Ñ":Ó"<�Ø#6Ñ à"5�Ø#6×#;Ñ#;Ó#=Ð à×Ñ ·±Ô;Ø�M‰M˜$Ÿ)™)Ô$Ø�J‰J˜˜8˜* A�Ô'Ø×ÑÐ 0·*±*Ô=Ø�M‰M˜$Ÿ*™*Ô%÷ <×;Ö;ús   ÁB6DÄ
Dz==z!=Ú<z<=Ú>z>=Úiszis notÚinznot in)
ÚEqÚNotEqÚLtÚLtEÚGtÚGtEÚIsÚIsNotÚInÚNotInc                 ó  • U R                  [        R                  U5         U R                  " [        R                  R	                  5       UR
                  /UR                  Q76   U R                  UR
                  5        [        UR                  UR                  5       HN  u  p#U R                  SU R                  UR                  R                     -   S-   5        U R                  U5        MP     S S S 5        g ! , (       d  f       g = fr$  )rª  rR  r^  r±  rU  rT   Úcomparatorsr¼  rP   Úopsrƒ  Úcmpopsr   r€   )r×   r&   ÚorQ  s       r   Úvisit_CompareÚ_Unparser.visit_Compare	  s°   € Ø× Ñ ¤§¡°$Õ7Ø×Ò¤§¡× 4Ñ 4Ó 6¸¿	¹	ÐUÀD×DTÑDTÓUØ�M‰M˜$Ÿ)™)Ô$Ü˜DŸH™H d×&6Ñ&6Ö7‘�Ø—
‘
˜3 §¡¨Q¯[©[×-AÑ-AÑ!BÑBÀSÑHÔIØ—‘˜aÖ ñ 8÷ 8×7Ö7ús   ¡CC<Ã<
D
ÚandÚor)ÚAndÚOr)rZ  r[  c                 ó6  ^ ^^• T R                   UR                  R                  R                     nT R                  U   mUU 4S jnT R                  TU5         SU S3mT R                  UU 4S jX1R                  5        S S S 5        g ! , (       d  f       g = f)Nc                 ól   >• TR                  5       mTR                  TU 5        TR                  U 5        g r,   )rU  r±  r¼  )r&   r(  r×   s    €€r   Úincreasing_level_traverseÚ9_Unparser.visit_BoolOp.<locals>.increasing_level_traverse  s/   ø€ à"5×":Ñ":Ó"<ÐØ×ÑÐ 3°TÔ:Ø�M‰M˜$Õr   r�   c                  ó&   >• TR                  T 5      $ r,   r‚  )r'  r×   s   €€r   r„  Ú(_Unparser.visit_BoolOp.<locals>.<lambda>   s   ø€  D§J¡J¨q¤Mr   )Úboolopsr7   r   r€   Úboolop_precedencerª  r|  rN   )r×   r&   r'  r`  r(  r'  s   `   @@r   Úvisit_BoolOpÚ_Unparser.visit_BoolOp  sw   ú€ Ø—<‘< §¡× 1Ñ 1× :Ñ :Ñ;ˆØ"×4Ñ4°XÑ>Ðö	 ð × Ñ Ð!4°dÕ;Ø�H�:˜Q�ˆAØ�O‰OÕ1Ð3LÏkÉkÔZ÷ <×;Ö;ús   Á(B
Â

Bc                 ó˜  • U R                  [        R                  UR                  5        U R	                  UR                  5        [        UR                  [        5      (       a:  [        UR                  R                  [        5      (       a  U R                  S5        U R                  S5        U R                  UR                  5        g )Nr�   rå  )
r±  rR  ri  r/   r¼  r   r-   r0   rƒ  rš   r­  s     r   Úvisit_AttributeÚ_Unparser.visit_Attribute"  s{   € Ø×ÑœK×,Ñ,¨d¯j©jÔ9Ø�‰�d—j‘jÔ!ô �d—j‘j¤(×+Ñ+´
¸4¿:¹:×;KÑ;KÌS×0QÑ0QØ�J‰J�sŒOØ�
‰
�3ŒØ�
‰
�4—9‘9Õr   c                 óæ  • U R                  [        R                  UR                  5        U R	                  UR                  5        U R                  SS5         SnUR                   H/  nU(       a  U R                  S5        OSnU R	                  U5        M1     UR                   H/  nU(       a  U R                  S5        OSnU R	                  U5        M1     S S S 5        g ! , (       d  f       g = f)Nrh   ri   Fre   T)	r±  rR  ri  rF   r¼  r¡  rI   rƒ  rJ   )r×   r&   rP  rQ  s       r   Ú
visit_CallÚ_Unparser.visit_Call-  s©   € Ø×ÑœK×,Ñ,¨d¯i©iÔ8Ø�‰�d—i‘iÔ Ø�\‰\˜#˜sÕ#ØˆEØ—Y”Y�ÞØ—J‘J˜tÕ$à �EØ—‘˜aÖ ñ ð —]”]�ÞØ—J‘J˜tÕ$à �EØ—‘˜aÖ ñ #÷ $×#Ö#ús   ÁBC"Ã"
C0c                 ó²  • S nU R                  [        R                  UR                  5        U R	                  UR                  5        U R                  SS5         U" UR                  5      (       a1  U R                  U R                  UR                  R                  5        OU R	                  UR                  5        S S S 5        g ! , (       d  f       g = f)Nc                 óH   • [        U [        5      =(       a    U R                  $ r,   )r   r?   rA   )Úslice_values    r   Úis_non_empty_tupleÚ5_Unparser.visit_Subscript.<locals>.is_non_empty_tuple@  s   € ä˜;¬Ó.÷ %Ø×$Ñ$ðr   rj   rt   )	r±  rR  ri  r/   r¼  r¡  r2  rˆ  rA   )r×   r&   rq  s      r   Úvisit_SubscriptÚ_Unparser.visit_Subscript?  s†   € ò	ð 	×ÑœK×,Ñ,¨d¯j©jÔ9Ø�‰�d—j‘jÔ!Ø�\‰\˜#˜sÕ#Ù! $§*¡*×-Ñ-à—‘ §¡¨t¯z©z¯©Õ?à—‘˜dŸj™jÔ)÷ $×#Ö#ús   ÁA$CÃ
Cc                 ó°   • U R                  S5        U R                  [        R                  UR                  5        U R                  UR                  5        g )Nr   )rƒ  r±  rR  r_  r/   r¼  r­  s     r   Úvisit_StarredÚ_Unparser.visit_StarredO  s7   € Ø�
‰
�3ŒØ×ÑœK×,Ñ,¨d¯j©jÔ9Ø�‰�d—j‘jÕ!r   c                 ó&   • U R                  S5        g )Nrâ  r‚  r­  s     r   Úvisit_EllipsisÚ_Unparser.visit_EllipsisT  s   € Ø�
‰
�5Õr   c                 óR  • UR                   (       a  U R                  UR                   5        U R                  S5        UR                  (       a  U R                  UR                  5        UR                  (       a-  U R                  S5        U R                  UR                  5        g g )Nr›  )Úlowerr¼  rƒ  ÚupperÚstepr­  s     r   Úvisit_SliceÚ_Unparser.visit_SliceW  sb   € Ø�:�:Ø�M‰M˜$Ÿ*™*Ô%Ø�
‰
�3ŒØ�:�:Ø�M‰M˜$Ÿ*™*Ô%Ø�9�9Ø�J‰J�sŒOØ�M‰M˜$Ÿ)™)Õ$ð r   c                 óø   • U R                  S5        U R                  UR                  5        U R                  5          UR                   H  nU R                  U5        M     S S S 5        g ! , (       d  f       g = f)Nzmatch )r�  r¼  Úsubjectrœ  Úcases)r×   r&   Úcases      r   Úvisit_MatchÚ_Unparser.visit_Matcha  sK   € Ø�	‰	�(ÔØ�‰�d—l‘lÔ#Ø�Z‰Z�\ØŸ
œ
�Ø—‘˜dÖ#ñ #÷ �\Ž\ús   ½%A+Á+
A9c                 ó¶   • U R                  UR                  5        UR                  (       a-  U R                  S5        U R                  UR                  5        g g r  )rƒ  Úargrõ  r¼  r­  s     r   Ú	visit_argÚ_Unparser.visit_argh  s:   € Ø�
‰
�4—8‘8ÔØ�?�?Ø�J‰J�tÔØ�M‰M˜$Ÿ/™/Õ*ð r   c                 óê  • SnUR                   UR                  -   nS /[        U5      [        UR                  5      -
  -  UR                  -   n[	        [        X45      S5       HŠ  u  pVUu  pxU(       a  SnOU R                  S5        U R                  U5        U(       a"  U R                  S5        U R                  U5        U[        UR                   5      :X  d  My  U R                  S5        MŒ     UR                  (       d  UR                  (       a³  U(       a  SnOU R                  S5        U R                  S5        UR                  (       av  U R                  UR                  R                  5        UR                  R                  (       a6  U R                  S5        U R                  UR                  R                  5        UR                  (       av  [        UR                  UR                  5       HR  u  pxU R                  S5        U R                  U5        U(       d  M0  U R                  S5        U R                  U5        MT     UR                  (       a–  U(       a  SnOU R                  S5        U R                  S	UR                  R                  -   5        UR                  R                  (       a7  U R                  S5        U R                  UR                  R                  5        g g g )
NTrb   Fre   rg   z, /r   r$   rp  )ÚposonlyargsrI   rL   Údefaultsr¹   rP   rƒ  r¼  ÚvarargÚ
kwonlyargsrˆ  rõ  Úkw_defaultsÚkwarg)	r×   r&   rÊ   Úall_argsr�  r  ÚelementsÚaÚds	            r   Úvisit_argumentsÚ_Unparser.visit_argumentsn  sü  € Øˆà×#Ñ# d§i¡iÑ/ˆØ�6œS ›]¬S°·±Ó-?Ñ?Ñ@À4Ç=Á=ÑPˆÜ(¬¨XÓ)@À!ÖD‰OˆEØ‰DˆAÞØ‘à—
‘
˜4Ô Ø�M‰M˜!ÔÞØ—
‘
˜3”Ø—‘˜aÔ Øœ˜D×,Ñ,Ó-Õ-Ø—
‘
˜5Ö!ñ  Eð �;�;˜$Ÿ/Ÿ/ÞØ‘à—
‘
˜4Ô Ø�J‰J�sŒOØ�{�{Ø—
‘
˜4Ÿ;™;Ÿ?™?Ô+Ø—;‘;×)×)Ø—J‘J˜tÔ$Ø—M‘M $§+¡+×"8Ñ"8Ô9ð �?�?Ü˜DŸO™O¨T×-=Ñ-=Ö>‘�Ø—
‘
˜4Ô Ø—‘˜aÔ ß�1Ø—J‘J˜s”OØ—M‘M !Ö$ñ ?ð �:�:ÞØ‘à—
‘
˜4Ô Ø�J‰J�t˜dŸj™jŸn™nÑ,Ô-Ø�z‰z×$×$Ø—
‘
˜4Ô Ø—‘˜dŸj™j×3Ñ3Õ4ð %ð r   c                 óÐ   • UR                   c  U R                  S5        O,U R                  UR                   5        U R                  S5        U R                  UR                  5        g )Nrp  rg   )rˆ  rƒ  r¼  r/   r­  s     r   Úvisit_keywordÚ_Unparser.visit_keyword¡  sC   € Ø�8‰8ÑØ�J‰J�tÕà�J‰J�t—x‘xÔ Ø�J‰J�sŒOØ�‰�d—j‘jÕ!r   c                 ó  • U R                  [        R                  U5         U R                  S5        U R	                  5        nU R                  UR                  5        S S S 5        W(       a  U R                  " S/UQ76   U R                  S5        U R                  [        R                  UR                  5        U R                  UR                  5        S S S 5        g ! , (       d  f       N‡= f! , (       d  f       g = f)NÚlambdar�   r$   )	rª  rR  rZ  rƒ  r–  r¼  rI   r±  r[   )r×   r&   r”  s      r   Úvisit_LambdaÚ_Unparser.visit_Lambda©  s¥   € Ø× Ñ ¤×!1Ñ!1°4Õ8Ø�J‰J�xÔ Ø—‘” FØ—‘˜dŸi™iÔ(÷ !æØ—
’
˜3Ð( Ó(Ø�J‰J�tÔØ×Ñ¤× 0Ñ 0°$·)±)Ô<Ø�M‰M˜$Ÿ)™)Ô$÷ 9Ð8ç •ú÷ 9Õ8ús$   ¡"C1ÁC ÁA8C1Ã 
C.	Ã*C1Ã1
C?c                 óš   • U R                  UR                  5        UR                  (       a  U R                  SUR                  -   5        g g ©NrF  )rƒ  r‡   Úasnamer­  s     r   Úvisit_aliasÚ_Unparser.visit_alias´  s3   € Ø�
‰
�4—9‘9ÔØ�;�;Ø�J‰J�v §¡Ñ+Õ,ð r   c                 ó¶   • U R                  UR                  5        UR                  (       a-  U R                  S5        U R                  UR                  5        g g r   )r¼  Úcontext_exprÚoptional_varsrƒ  r­  s     r   Úvisit_withitemÚ_Unparser.visit_withitem¹  s@   € Ø�‰�d×'Ñ'Ô(Ø××Ø�J‰J�vÔØ�M‰M˜$×,Ñ,Õ-ð r   c                 ó`  • U R                  S5        U R                  UR                  5        UR                  (       a,  U R	                  S5        U R                  UR                  5        U R                  5          U R                  UR                  5        S S S 5        g ! , (       d  f       g = f)Nzcase rþ  )r�  r¼  ÚpatternÚguardrƒ  rœ  r[   r­  s     r   Úvisit_match_caseÚ_Unparser.visit_match_case¿  sd   € Ø�	‰	�'ÔØ�‰�d—l‘lÔ#Ø�:�:Ø�J‰J�vÔØ�M‰M˜$Ÿ*™*Ô%Ø�Z‰Z�\Ø�M‰M˜$Ÿ)™)Ô$÷ �\Ž\ús   Á:BÂ
B-c                 ó:   • U R                  UR                  5        g r,   )r¼  r/   r­  s     r   Úvisit_MatchValueÚ_Unparser.visit_MatchValueÈ  s   € Ø�‰�d—j‘jÕ!r   c                 ó:   • U R                  UR                  5        g r,   )rß  r/   r­  s     r   Úvisit_MatchSingletonÚ_Unparser.visit_MatchSingletonË  s   € Ø×Ñ˜TŸZ™ZÕ(r   c                 ó´   ^ • T R                  SS5         T R                  U 4S jT R                  UR                  5        S S S 5        g ! , (       d  f       g = f)Nrj   rt   c                  ó&   >• T R                  S5      $ r�  r‚  rA  s   €r   r„  Ú/_Unparser.visit_MatchSequence.<locals>.<lambda>Ñ  rÐ  r   )r¡  r|  r¼  Úpatternsr­  s   ` r   Úvisit_MatchSequenceÚ_Unparser.visit_MatchSequenceÎ  s8   ø€ Ø�\‰\˜#˜sÕ#Ø�O‰OÜ(¨$¯-©-¸¿¹ô÷ $×#Ö#úré  c                 óN   • UR                   nUc  SnU R                  SU 35        g )NÚ_r   )r‡   rƒ  )r×   r&   r‡   s      r   Úvisit_MatchStarÚ_Unparser.visit_MatchStarÔ  s'   € Ø�y‰yˆØ‰<ØˆDØ�
‰
�Q�t�f�:Õr   c                 óJ  ^ • U 4S jnT R                  SS5         UR                  nT R                  U 4S jU[        X1R                  SS95        UR
                  nUb,  U(       a  T R                  S5        T R                  SU 35        S S S 5        g ! , (       d  f       g = f)	Nc                 ót   >• U u  pTR                  U5        TR                  S5        TR                  U5        g r  r  )Úpairr  Úpr×   s      €r   Úwrite_key_pattern_pairÚ<_Unparser.visit_MatchMapping.<locals>.write_key_pattern_pairÛ  s.   ø€ Ø‰DˆAØ�M‰M˜!ÔØ�J‰J�tÔØ�M‰M˜!Õr   rÀ  rÁ  c                  ó&   >• T R                  S5      $ r�  r‚  rA  s   €r   r„  Ú._Unparser.visit_MatchMapping.<locals>.<lambda>ä  rÐ  r   T©Ústrictre   rp  )r¡  rM   r|  rP   r·  Úrestrƒ  )r×   r&   rÂ  rM   rÈ  s   `    r   Úvisit_MatchMappingÚ_Unparser.visit_MatchMappingÚ  s   ø€ õ	ð �\‰\˜#˜sÕ#Ø—9‘9ˆDØ�O‰OÜ(Ø&Ü�DŸ-™-°Ñ5ôð
 —9‘9ˆDØÑÞØ—J‘J˜tÔ$Ø—
‘
˜R ˜v˜;Ô'÷ $×#Ö#ús   šA1BÂ
B"c                 óö  ^ • T R                  [        R                  UR                  5        T R	                  UR                  5        T R                  SS5         UR                  nT R                  U 4S jT R                  U5        UR                  nU(       aG  U 4S jnU(       a  T R                  S5        T R                  U 4S jU[        X1R                  SS95        S S S 5        g ! , (       d  f       g = f)	Nrh   ri   c                  ó&   >• T R                  S5      $ r�  r‚  rA  s   €r   r„  Ú,_Unparser.visit_MatchClass.<locals>.<lambda>ô  rÐ  r   c                 óX   >• U u  pTR                  U S35        TR                  U5        g )Nrg   )rƒ  r¼  )rÀ  rš   rª  r×   s      €r   Úwrite_attr_patternÚ6_Unparser.visit_MatchClass.<locals>.write_attr_patternø  s(   ø€ Ø$(‘M�DØ—J‘J $  q˜zÔ*Ø—M‘M 'Õ*r   re   c                  ó&   >• T R                  S5      $ r�  r‚  rA  s   €r   r„  rÍ     s   ø€ ˜DŸJ™J tÔ,r   TrÆ  )r±  rR  ri  r„   r¼  r¡  r·  r|  Ú	kwd_attrsrƒ  rP   Úkwd_patterns)r×   r&   r·  ÚattrsrÏ  s   `    r   Úvisit_MatchClassÚ_Unparser.visit_MatchClassî  s­   ø€ Ø×ÑœK×,Ñ,¨d¯h©hÔ7Ø�‰�d—h‘hÔØ�\‰\˜#˜sÕ#Ø—}‘}ˆHØ�O‰OÜ(¨$¯-©-¸ôð —N‘NˆEÞõ+ö
 Ø—J‘J˜tÔ$Ø—‘Ü,Ø&Ü˜×0Ñ0¸Ñ>ô÷ $×#Ö#ús   ÁBC*Ã*
C8c                 óÖ  • UR                   nUR                  nUc  U R                  S5        g Uc  U R                  UR                   5        g U R                  [        R
                  U5         U R                  [        R                  UR                  5        U R                  UR                  5        U R                  SUR                    35        S S S 5        g ! , (       d  f       g = f)Nr»  rF  )	r‡   rª  rƒ  rª  rR  rZ  r±  r`  r¼  )r×   r&   r‡   rª  s       r   Úvisit_MatchAsÚ_Unparser.visit_MatchAs  sš   € Ø�y‰yˆØ—,‘,ˆØ‰<Ø�J‰J�s�OØ‰_Ø�J‰J�t—y‘yÕ!à×$Ñ$¤[×%5Ñ%5°tÕ<Ø×#Ñ#¤K§O¡O°T·\±\ÔBØ—‘˜dŸl™lÔ+Ø—
‘
˜T $§)¡) Ð-Ô.÷ =×<Ö<ús   Á-A$CÃ
C(c                 óB  ^ • T R                  [        R                  U5         T R                  " [        R                  R	                  5       /UR
                  Q76   T R                  U 4S jT R                  UR
                  5        S S S 5        g ! , (       d  f       g = f)Nc                  ó&   >• T R                  S5      $ )Nz | r‚  rA  s   €r   r„  Ú)_Unparser.visit_MatchOr.<locals>.<lambda>  s   ø€  D§J¡J¨uÔ$5r   )rª  rR  r`  r±  rU  r·  r|  r¼  r­  s   ` r   Úvisit_MatchOrÚ_Unparser.visit_MatchOr  s`   ø€ Ø× Ñ ¤§¡°$Õ7Ø×Ò¤§¡× 4Ñ 4Ó 6ÐG¸¿¹ÓGØ�O‰OÔ5°t·}±}ÀdÇmÁmÔT÷ 8×7Ö7ús   ¢A%BÂ
B)rt  rs  rq  rp  rr  )rd   r,   )F)†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â  ré  rî  rò  rö  rú  rÿ  r  r  r  r  r  r  r  r%  r(  r.  r8  r>  rB  rG  rR  rX  r[  rW  rM  ri  rm  rq  rt  ry  r|  rx  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%  rR  r]  rf  r&  r)  rñ  rd  re  rc  r`  ra  rb  rg  r?  Ú	frozensetr@  rC  rV  rX  rd  r\  r[  re  rf  ri  rl  rs  rv  ry  r  r…  r‰  r–  r™  r�  r¢  r§  r¬  r¯  r²  r¸  r¼  rÉ  rÕ  rØ  rÝ  rì   Ú__classcell__)r   s   @r   rn  rn  ã  s�  ø† ñò"ò
òHòô
1ò"ð ó'ó ð'ð Ø#ô ó ðð ñó ðò!òQò=ò1òò )õ
 ò%ò%ò#ò$ò"ò
&òMòMò%ò"ò&ò&òòòòOò$òJòJò*ò*ò&ò
&ò.ò1ò1ò	%ò:ò4+ò1ò:ò"Vò
.ò.ò.ò"ò'ò-ò+ò+ò$+ò%ò%ð &1ÈEõ$/ðL FQõ 8ò27ôhLò&Qò$òTò
$ò
-òPò#ò#ò#ò#ò%ò'ò òò,6ð  %°¸cÑB€Dà�‰Ø×ÑØ×ÑØ×Ññ	€Oò
(ð ØØØØØØØØØØØØñ€Eð" ×ÑØ×ÑØ×ÑØ×ÑØ×ÑØ×ÑØ×ÑØ×ÑØ�_‰_Ø×ÑØ×ÑØ×ÑØ×ÑñÐñ  ˜WÓ%€Lò&ð$ ØØØØØØØØØñ€Fò!ð  4Ñ(€GØ +§¡°{·~±~ÑFÐò[ò	ò!ò$*ò "ò
ò%ò$ò+ò15òf"ò	%ò-ò
.ò%ò"ò)òòò(ò(ò./÷Uð Ur   rn  c                 ó8   • [        5       nUR                  U 5      $ r,   )rn  rÚ   )Úast_objrÊ  s     r   Úunparserã    s   € Ü‹{€HØ�>‰>˜'Ó"Ð"r   )r   r%  r)  r+  r-  c                 óœ   • U [         ;   a4  [         U    =[        5       U '   nSS KnUR                  SU  3[        SS9  U$ [        SU  S35      e)Nr   r  r÷   rù   zmodule 'ast' has no attribute 'rj  )Ú_deprecated_globalsÚglobalsrâ   rý   r  rw   )r‡   r/   râ   s      r   Ú__getattr__rç  !  s`   € ØÔ"Ó"Ü"5°dÑ";Ð;Œ‹	�$‰˜%ÛØ×ÑØ�4�&ˆMÔ#<ÀWð 	ñ 	
ð ˆÜ
Ð:¸4¸&ÀÐBÓ
CÐCr   c                  ó¤  • SS K n U R                  SS9nUR                  SSSSS9  UR                  S	S
SSSS9  UR                  SSSSS9  UR                  SSSSS9  UR                  SS[        SSS9  UR	                  5       nUR
                  S:X  a+  Sn[        R                  R                  R                  5       nO;UR
                  n[        UR
                  S5       nUR                  5       nS S S 5        [        WX2R                  UR                  S 9n[        [        XbR                   UR"                  S!95        g ! , (       d  f       NU= f)"Nr   zpython -m ast)ÚprogÚinfileÚ?rÝ  z$the file to parse; defaults to stdin)ÚnargsÚdefaultÚhelpz-mz--modeÚexec)rï  Úsingler!   Ú	func_typez(specify what kind of code must be parsed)rí  Úchoicesrî  z--no-type-commentsTÚstore_falsez)don't add information about type comments)rí  Úactionrî  z-az--include-attributesÚ
store_truez:include attributes such as line numbers and column offsets)rô  rî  z-iz--indentr   z'indentation of nodes (number of spaces))r.   rí  rî  z<stdin>Úrb)r
   )r‹   r^   )ÚargparseÚArgumentParserÚadd_argumentr0   Ú
parse_argsrê  ÚsysÚstdinr”  ÚreadÚopenr   r   Úno_type_commentsÚprintr�   r‹   r^   )r÷  ÚparserrI   r‡   r   rê  Útrees          r   Úmainr  ,  sO  € Ûà×$Ñ$¨/Ð$Ð:€FØ
×Ñ˜¨°SØCð ñ Eà
×Ñ˜˜h°Ø GØGð ñ Ið ×ÑÐ,°dÀ=ØHð ñ Jà
×Ñ˜Ð4¸\ð.ð ñ /ð ×Ñ˜˜j¬s¸AØFð ñ Hà×ÑÓ€Dà‡{�{�cÓØˆÜ—‘×!Ñ!×&Ñ&Ó(‰à�{‰{ˆÜ�$—+‘+˜tÔ$¨Ø—[‘[“]ˆF÷ %ä�˜Ÿy™y¸×8MÑ8MÑN€DÜ	Œ$ˆt×(?Ñ(?ÈÏÉÑ
TÕU÷ %Õ$ús   Ã!EÅ
EÚ__main__)z	<unknown>rï  )TF)rb   )Tr,   )Xrë   rû  ÚreÚ_astÚ
contextlibr   r   Úenumr   r   r   r   r]   r�   r›   r¢   r§   rª   rž   r·   r   rº   r¿   rÃ   rÌ   r¤   rz   rÓ   rî   rþ   r  r•   r-   r   r  r  r
  Úpropertyr¦   r'  r.   r  r  r   r%  r)  r+  r-  r/  r0   r1   r2   rX   ÚbytesÚboolr  r  rà   ru   r2  r5  r:  r?   rB  rE  r=  ÚmodrG  Úexpr_contextrK  rM  rO  r|   Ú
float_infoÚ
max_10_exprÞ  rR  Ú_SINGLE_QUOTESr¦  r³  rn  rã  ræ  Úpoprå  rç  r  r€   )r‡   s   0r   Ú<module>r     s0  ðñó, Û 	Ü ß 2ß ,Ñ ,ðHØ¨t¸böHò08$ðx 49ðQð ˜EöQòhò" ôFò.	òôð0 —
’
Ð3Ó4€ô
òð 05õ "òJô7(�&ô 7(ôt8�kô 8ðx Uð  ðð ñ ˆx˜×Ñòòòòñ ˜) YÓ/€H„JÙ˜) YÓ/€H„Jô1ˆ4ô 1ò62ô ˆ(˜dò ôˆ(˜dò ôˆH ò ô�8 tò ô
6ˆx 4ò 
6ð €ð ˆ#ˆu�gÐ	Øˆ#ˆØ	ˆEˆ8Ø‘4˜“:˜tÐ$Ø‰t�C‹yˆlð€ð ˆ$ˆðÐ ð
 	ˆ.ÙˆƒJ�ØˆØ	ˆ5ØˆUØˆØ	ˆ7ÙˆƒIˆzð	Ð ô%ˆCô %ôˆEô ô
3ˆuô 3ñ ˆu�f×Ñòòñ ˜,¨Ó5€E„Jô:ˆCô :ô:ˆlô :ô:ˆ|ô :ô:ˆLô :ð ‘�c—n‘n×/Ñ/°!Ñ3Ó4Ñ
4€áˆgÓ÷ð ó ðð> €Ø€Ø/�Ð/ Ñ/€ôrU�ô rUòh!#ñ DóâCˆð 	‰'‹)�-‰-˜Ó
ÒÙCñÐ ò
DòVð8 ˆzÓÙ…Fð ùòYs   È!I