ó
    áÅŸgÒv  ã                   óp  • % S r SSKrSSKJr  SSKJrJrJrJrJ	r	J
r
  \R                  S:¼  a  SSKJr  OSSKJr  SSKJr  SSKJr  SS	KJr  SS
KJrJr  SSKJr  SSKJr  SSKJrJrJrJr  \R@                  " \5        \RB                  r"\\#S'   \	" S5      r$\
\\4   r%\&r'\&r(\RR                  \RT                  \RV                  1r,\\#S'   \"RZ                  \"R\                  \"R^                  \"R`                  \"Rb                  \"Rd                  \"Rf                  \"Rh                  \"Rj                  \"Rl                  1
r7\\#S'   Sr8\\#S'   S\Rr                  \8'   SS1r:\\#S'   \Rv                  \Rx                  \Rz                  \R|                  \R~                  \R€                  1rA\\#S'   \R„                  \R†                  \Rˆ                  \RŠ                  \RŒ                  \RŽ                  \R�                  \R’                  \R”                  \R–                  \R˜                  \Rš                  \Rœ                  \Rž                  1rP\\#S'   \R’                  \Rž                  1rQ\\#S'   \Q\R”                  1-  rR\\#S'   \"R¦                  \"R¨                  \"Rª                  \"R¬                  \"R®                  1rX\\#S'   \"R²                  \"R´                  \"R¶                  \"R¸                  \"Rº                  \"R¼                  \"R¾                  1r`\\#S'   \"RÂ                  \"RÄ                  \"RÆ                  \"RÈ                  \"RÊ                  \"RÌ                  \"RÎ                  \"RÐ                  \"RÒ                  \"RÔ                  \"RÖ                  \"RØ                  \"Rª                  \"RÚ                  \"RÜ                  \"RÞ                  1rp\\#S'   \"Râ                  \"Rä                  1rs\\#S'   1 Skrt\\#S '   \"Rê                  \"Rº                  \"Rì                  1rw\\#S!'   \Rð                  \Rò                  \Rô                  \Rö                  \Rø                  \Rú                  0r~\\#S"'   \" \~GR                  5       5      r�\\#S#'   \" \~GR                  5       5      rƒ\\#S$'   \�\ƒ-  r„\\#S%'   \ƒ\GR
                  \8\GR                  \GR                  \GR                  1-  r‰\\#S&'   S'rŠ\" S(S)9 " S* S+\\$   5      5       r‹S,\S-\ŒS.\S/\�4S0 jrŽSyS1\&S2\ŒS3\�S/\�4S4 jjr�S5\\%   S/\\   4S6 jr�S5\\%   S7\‘\\(      S/\Œ4S8 jr’S5\\%   S/\\(   4S9 jr“S:\S;\%S/\\%   4S< jr”S=\%S>\%S/S4S? jr•S,\S/\%4S@ jr–S5\%S/\\   4SA jr—S5\%S/\Œ4SB jr˜S5\S/\Œ4SC jr™S5\%S/\Œ4SD jršS5\%S/\Œ4SE jr›S5\%S/\Œ4SF jrœS5\%S/\Œ4SG jr�S5\%S/\Œ4SH jrž\Rð                  \Rò                  44SI\SJ\SK\‘\   SL\Ÿ\&\&4   S/\Œ4
SM jjr S5\%S/\Œ4SN jr¡SzS5\%SO\ŒS/\Œ4SP jjr¢S5\%S/\Œ4SQ jr£S5\%S/\Œ4SR jr¤S,\SS\\(   S/\Œ4ST jr¥S5\S/\Œ4SU jr¦S5\S/\4SV jr§S5\%S/\Œ4SW jr¨S5\S/\Œ4SX jr©S5\S/\Œ4SY jrªS5\S/\Œ4SZ jr«S5\%S/\Œ4S[ jr¬S5\%S/\Œ4S\ jr­S,\S/\Œ4S] jr®S,\S/\Œ4S^ jr¯S,\S/\Œ4S_ jr°S,\S/\Œ4S` jr±S,\S/\Œ4Sa jr²S,\S/\Œ4Sb jr³S,\S/\Œ4Sc jr´S,\S/\Œ4Sd jrµSe\�S/\Œ4Sf jr¶S(Sg.Sh\Si\%Sj\ŒS/S4Sk jjr·S5\%S/\\%   4Sl jr¸S,\S/S4Sm jr¹Sn\S/\\   4So jrºSn\S/\\   4Sp jr»Sn\S/\\   4Sq jr¼Sn\S/\\   4Sr jr½S,\S/\Ss   4St jr¾S,\S/\Œ4Su jr¿S5\%S/\\   4Sv jrÀS5\%S/\\   4Sw jrÁS,\S/\%4Sx jrÂg){z>
blib2to3 Node/Leaf transformation-related utility functions.
é    N)ÚIterator)ÚFinalÚGenericÚLiteralÚOptionalÚTypeVarÚUnion)é   é
   )Ú	TypeGuard)Ú
mypyc_attr)Ú	CACHE_DIR)ÚMode)Úget_string_prefixÚhas_triple_quotes)Úpygram)Útoken)ÚNLÚLeafÚNodeÚ	type_reprÚsymsÚTÚ
WHITESPACEÚ	STATEMENTé™   ÚSTANDALONE_COMMENTÚandÚorÚLOGIC_OPERATORSÚCOMPARATORSÚMATH_OPERATORSÚSTARSÚVARARGS_SPECIALSÚVARARGS_PARENTSÚUNPACKING_PARENTSÚTEST_DESCENDANTSÚTYPED_NAMES>   Ú:Ú=ú%=ú&=ú*=ú+=ú-=ú/=ú@=ú^=ú|=ú**=ú//=ú<<=ú>>=ÚASSIGNMENTSÚIMPLICIT_TUPLEÚBRACKETÚOPENING_BRACKETSÚCLOSING_BRACKETSÚBRACKETSÚALWAYS_NO_SPACEé7   T)Úallow_interpreted_subclassesc                   óH   • \ rS rSrSrS\S\\   4S jrS\S\\   4S jr	Sr
g)	ÚVisitoré•   zBBasic lib2to3 visitor that yields things of type `T` on `visit()`.ÚnodeÚreturnc              #   ó.  #   • UR                   S:  a  [        R                  UR                      nO[        [	        UR                   5      5      n[        U SU 3S5      nU(       a  U" U5       Sh  v•N   gU R                  U5       Sh  v•N   g N N7f)aJ  Main method to visit `node` and its children.

It tries to find a `visit_*()` method for the given `node.type`, like
`visit_simple_stmt` for Node objects or `visit_INDENT` for Leaf objects.
If no dedicated `visit_*()` method is found, chooses `visit_default()`
instead.

Then yields objects of type `T` from the selected visitor.
é   Úvisit_N)Útyper   Útok_nameÚstrr   ÚgetattrÚvisit_default)ÚselfrD   ÚnameÚvisitfs       ÚL/var/www/blue/EV-Temp_rev04/venv/lib/python3.13/site-packages/black/nodes.pyÚvisitÚVisitor.visit™   sy   é € ð �9‰9�s‹?Ü—>‘> $§)¡)Ñ,‰Dä”y §¡Ó+Ó,ˆDô
 ˜ ¨ v˜°Ó5ˆÞÙ˜d“|×#Ñ#à×)Ñ)¨$Ó/×/Ñ/ñ $á/ùs$   ‚A/BÁ1BÁ2BÂBÂBÂBc              #   ó”   #   • [        U[        5      (       a-  UR                   H  nU R                  U5       Sh  v•N   M     gg N
7f)zCDefault `visit_*()` implementation. Recurses to children of `node`.N)Ú
isinstancer   ÚchildrenrR   )rN   rD   Úchilds      rQ   rM   ÚVisitor.visit_default±   s:   é € ä�dœD×!Ñ!ØŸœ�ØŸ:™: eÓ,×,Ò,ò 'ð "á,ùs   ‚9A»A¼A© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚLNr   r   rR   rM   Ú__static_attributes__rY   ó    rQ   rB   rB   •   s3   † áLð0˜"ð 0 ¨!¡ô 0ð0- "ð -¨°!©÷ -ra   rB   ÚleafÚcomplex_subscriptÚmoderE   c                ó¨  • SnSnSnU R                   nU R                  nU R                  nU[        ;   a  U$ U[        R
                  :X  a  U$ Uc   SU < 35       eU[        R                  :X  a?  UR                   [        R                  [        R                  [        R                  1;  a  U$ U[        R                  :X  a   UR                   [        R                  :X  a  U$ U R                  n	U	(       Gd  [        U5      n
U
(       a  U
R                   [        ;   a  U$ U[        R                  :X  aI  U
R                   [        R                  :X  a  U$ U
R                   [        R                   :w  a	  U(       d  U$ U$ U
R                   [        R"                  :X  aŸ  U
R                  (       aŒ  U
R                  R                   [        R$                  [        R&                  [        R(                  [        R*                  1;   a  U$ U
R                  R                   [        R,                  :X  a  U
R.                  $ GOøU
R                   [        R0                  :X  aV  [3        U
5      [        R4                  :X  a9  [3        U
R                  5      [        R                  [        R6                  4;   a  U$ U
R                   [8        ;   a  [;        U
[<        [>        -  S9(       a  U$ GORU
R                   [        R                  :X  aU  U
R                  (       aC  U
R                  R                   [        R                  [        R                  1;   a  U(       a  U$ U$ OßU
R                  (       a>  U
R                  R                   [        R@                  :X  a  U
R                   [B        ;   a  U$ U
R                   [        RD                  :X  a;  UR                  (       a*  UR                  R                   [        RF                  :X  a  U$ O6U	R                   [        ;   a  U$ U	R                   [        RH                  :X  a  U$ UR                   [        R(                  [        R$                  1;   a*  U	(       a  U	R                   [        R                   :w  a  U$  U$ UR                   [        R*                  :X  a)  U	(       a   U	R                   [        R                   :w  a  U$ U$ UR                   [        R,                  :X  aƒ  U	(       d  U$ U[        R"                  :X  a  U	R                   [J        ;  a  U$  U$ U	R                   [        R"                  :X  a  U	R.                  $ U	R                   [        R                   :w  a  U$  U$ UR                   [J        ;   a;  U	(       d2  [        U5      n
U
(       a  U
R                   [        R                   :w  a  U$ U$ UR                   [        RL                  :X  a�  U[        RN                  :X  d  U[        RP                  :X  a  U$ U	(       d-  U[        RR                  :X  d  U[        RT                  :X  a  U$  U$ U	R                   [        R                   :w  a  U$  U$ UR                   [        R&                  :X  a}  U[        R"                  :X  a  U$ U	(       d5  [        U5      n
U
(       a  U
R                   [        RN                  :X  a  U$  U$ U	R                   [        R"                  1[8        -  ;   a  U$  U$ UR                   [        RF                  :X  a  U$ UR                   [        RV                  :X  a\  U	(       a  U$ [        U5      n
U
(       a<  U
R                   [        RD                  :X  d  U
R                   [        RR                  :X  a  U$  U$ UR                   [        RX                  :X  a?  U[        RN                  :X  a  U$ U	(       a   U	R                   [        RN                  :X  a  U$ U$ UR                   [        R                  [        R                  1;   a‡  U	(       d@  UR                  c   S5       eUR                  R                   [        R                  :X  a  U$ U$ U[        RZ                  :X  d  U	R                   [        RZ                  :X  a  U$ U(       d  U$  U$ UR                   [        R\                  :X  a  U	(       a  U[        RR                  :X  a  U$ U$ UR                   [        R^                  :X  a)  U	(       a   U	R                   [        R`                  :X  a  U$ U$ UR                   [        R@                  [        R4                  1;   Ga  U	(       dÇ  [        U5      n
U
(       a  U
R                   [        ;   a  U$ U
R                  nUc   eU
R                   [        R                  :X  a0  UR                   [        R                  [        R                  1;   a  U$ U
R                   [        R"                  :X  a   UR                   [        R&                  :X  a  U$ U$ U[        Rb                  [        Rd                  [        Rf                  1;   a  U$  U$ UR                   [        Rh                  :X  a‚  U[        RR                  :X  a)  U	(       a   U	R                   [        RR                  :X  a  U$ U$ U[        Rb                  :X  a/  US:X  a  U$ U	(       a   U	R                   [        RR                  :X  a  U$ U$ UR                   [        R                  :X  a  U$ UR                   [        Rj                  :X  a  U[        R0                  :X  a  U$ U$ )z×Return whitespace prefix if needed for the given `leaf`.

`complex_subscript` signals whether the given leaf is part of a subscription
which has non-trivial arguments, like arithmetic expressions or function calls.
Ú Ú z  z/INTERNAL ERROR: hand-made leaf without parent: )Úwithinzsubscripts are always parentedÚimport)6rI   ÚparentÚvaluer>   r   ÚCOMMENTÚCOLONr   Ú	subscriptÚsubscriptlistÚsliceopÚLBRACEÚfstring_replacement_fieldÚprev_siblingÚpreceding_leafr;   ÚCOMMAÚEQUALÚarglistÚargumentÚ
parametersÚvarargslistÚtypedargslistÚprefixÚSTARÚparent_typeÚ	star_exprÚ
tname_starr$   Ú	is_varargr%   r&   Úfactorr"   ÚATÚ	decoratorÚBANGr(   ÚtrailerÚLPARÚRPARÚDOTÚLSQBÚdotted_nameÚclassdefÚ
COLONEQUALÚatomÚdictsetmakerÚ
DOUBLESTARÚNAMEÚNUMBERÚSTRINGÚimport_fromÚexcept_clause)rb   rc   rd   ÚNOÚSPACEÚDOUBLESPACEÚtÚpÚvÚprevÚprevpÚprevp_parents               rQ   Ú
whitespacerŸ   ¸   sK  € ð €BØ€EØ"€KØ�	‰	€AØ�‰€AØ�
‰
€AØŒOÓØˆ	àŒE�M‰MÓØÐà‰=ÐTÐKÈDÉ8ÐTÓTˆ=ØŒE�K‰KÓ˜AŸF™FÜ�‰Ü×ÑÜ�‰ð+ó ð
 ˆ	àŒE�L‰LÓ˜QŸV™V¤t×'EÑ'EÓEØˆ	à×Ñ€DßÜ˜qÓ!ˆÞ˜Ÿ
™
Ô&6Ó6ØˆIà”—‘ÓØ�z‰zœUŸ[™[Ó(Ø�	à—‘œuŸ{™{Ó*Ö3DØ�	àˆLà�:‰:œŸ™Ó$Ø�|�|Ø—<‘<×$Ñ$Ü—L‘LÜ—M‘MÜ—O‘OÜ×$Ñ$ð	)ó ð �Ià—\‘\×&Ñ&¬$×*<Ñ*<Ó<ð !Ÿ<™<Ð'ùð �J‰Jœ%Ÿ*™*Ó$Ü˜EÓ"¤d§n¡nÓ4Ü˜EŸL™LÓ)¬d×.@Ñ.@Ä$Ç/Á/Ð-RÓRð ˆIà�Z‰ZÔ+Ó+Ü˜¤Ô9JÑ'J×KØ�	ñ Lð �Z‰Zœ5Ÿ;™;Ó&Ø�|�| §¡× 1Ñ 1´d·n±nÄdÇlÁlÐ5SÓ SÞ 1�uÐ9°rÐ9øð �L�LØ—‘×!Ñ!¤T§[¡[Ó0Ø—
‘
œnÓ,àˆIà�Z‰Zœ5Ÿ8™8Ó#¨¯¯°Q·X±X·]±]ÄdÇnÁnÓ5TàˆIøà	�‰Ô&Ó	&Øˆ	à	�‰”e—j‘jÓ	 Øˆ	à‡v�v”$—/‘/¤4§<¡<Ð0Ó0æ�t—y‘y¤E§K¡KÓ/ØˆIð 0ð\ €LðW 
�‰”4×#Ñ#Ó	#æ�D—I‘I¤§¡Ó,ØˆIðP €LðM 
�‰”4×%Ñ%Ó	%æØˆIà”—‘ÓØ�y‰y¤Ó+Ø�	ð ,ð@ €Lð{ �Y‰Yœ%Ÿ+™+Ó%ð —;‘;Ðà�Y‰Yœ%Ÿ+™+Ó%ØˆIð &ðp €Lðk 
�‰”;Ó	æÜ" 1Ó%ˆEÞ˜EŸJ™J¬%¯+©+Ó5Ø�	ð` €Lð] 
�‰”4—<‘<Ó	à”—
‘
‹?˜a¤5§:¡:›oØˆIæØ”E—I‘I‹~ ¤e§j¡j£Ø�	ð "1ðP €LðK �Y‰Yœ%Ÿ+™+Ó%ØˆIð &ðJ €LðE 
�‰”4—=‘=Ó	 à”—‘ÓØˆIæÜ" 1Ó%ˆEÞ˜EŸJ™J¬%¯*©*Ó4Ø�	ð 5ðv €Lðq �Y‰Yœ5Ÿ;™;˜-Ô*:Ñ:Ó:ØˆIð ;ðp €Lðk 
�‰”4—>‘>Ó	!àˆ	à	
�‰”4×#Ñ#Ó	#ÞØˆIä˜qÓ!ˆÞ˜Ÿ
™
¤e§h¡hÓ.°%·*±*ÄÇ	Á	Ó2IØˆIð 3JðX €LðS 
�‰”4—=‘=Ó	 Ø”—
‘
‹?ØˆIæ�D—I‘I¤§¡Ó+ØˆIðH €LðE 
�‰”D—N‘N¤D§L¡LÐ1Ó	1æØ—8‘8Ñ'ÐIÐ)IÓIÐ'Ø�x‰x�}‰}¤× 2Ñ 2Ó2Ø�àˆIà”%×"Ñ"Ó" d§i¡i´5×3CÑ3CÓ&CØˆLæ"ØˆIð #ðl €Lðg 
�‰”4—9‘9Ó	Þ�AœŸ™“NàˆIð` €Lð] 
�‰”4×$Ñ$Ó	$æ�D—I‘I¤×!1Ñ!1Ó1ØˆIðV €LðS 
�‰”D—K‘K¤§¡Ð0Ô	0æÜ" 1Ó%ˆEÞ˜EŸJ™JÔ*:Ó:Ø�	à Ÿ<™<ˆLØÑ+Ð+Ð+Ø�z‰zœUŸ[™[Ó(¨\×->Ñ->Ü—‘Ü—‘ðCó .ð �	à—‘œuŸ{™{Ó*¨|×/@Ñ/@ÄDÇMÁMÓ/QØ�	ð2 €Lð- ”5—:‘:œuŸ|™|¬U¯\©\Ð:Ó:ØˆIð ;ð, €Lð' 
�‰”4×#Ñ#Ó	#Ø”—	‘	‹>Þ˜Ÿ	™	¤U§Y¡YÓ.Ø�	ð  €Lð ”%—*‘*‹_Ø�H‹}Ø�æ˜Ÿ	™	¤U§Y¡YÓ.Ø�	ð €Lð 
�‰”4—<‘<Ó	Øˆ	à	
�‰”4×%Ñ%Ó	%Ø”—
‘
‹?ØˆIà€Lra   Únl_countÚ	form_feedÚ
empty_linec                 ó2   • U(       a  X S-
  -  S-   U-   $ X -  $ )z$Generate a normalized prefix string.é   ÚrY   )r    r¡   r¢   s      rQ   Úmake_simple_prefixr¦   ¨  s%   € æØ¨™lÑ+¨tÑ3°jÑ@Ð@ØÑ Ð ra   rD   c                 óê   • U (       a\  U R                   nU(       a4  [        U[        5      (       a  U$  [        UR	                  5       5      S   $ U R                  n U (       a  M\  g! [
         a     gf = f)z3Return the first leaf that precedes `node`, if any.éÿÿÿÿN)rs   rU   r   ÚlistÚleavesÚ
IndexErrorrj   )rD   Úress     rQ   rt   rt   ¯  sk   € æ
Ø×ÑˆÞÜ˜#œt×$Ñ$Ø�
ðÜ˜CŸJ™J›LÓ)¨"Ñ-Ð-ð
 �{‰{ˆ÷ ˆ$ð øô	 ó Ùðús   ³A% Á%
A2Á1A2Útokensc                 ó�   • U(       d  gUS   c  U SL $ U (       d  gU R                   US   :w  a  g[        U R                  USS 5      $ )a/  Return if the `node` and its previous siblings match types against the provided
list of tokens; the provided `node`has its type matched against the last element in
the list.  `None` can be used as the first element to declare that the start of the
list is anchored at the start of its parent's children.Tr¨   NF)rI   Úprev_siblings_arers   )rD   r­   s     rQ   r¯   r¯   Á  sP   € ö
 ØØˆb�zÑØ�tˆ|ÐÞØØ‡y�y�F˜2‘JÓØÜ˜T×.Ñ.°°s¸°Ó<Ð<ra   c                 óP   • U b  U R                   c  gU R                   R                  $ )zh
Returns:
    @node.parent.type, if @node is not None and has a parent.
        OR
    None, otherwise.
N)rj   rI   ©rD   s    rQ   r~   r~   Ñ  s%   € ð �|�t—{‘{Ñ*Øà�;‰;×ÑÐra   ÚancestorÚ
descendantc                 ó‚   • UnU(       a5  UR                   U :w  a%  UR                   nU(       a  UR                   U :w  a  M%  U$ )z:Return the child of `ancestor` that contains `descendant`.)rj   )r²   r³   rD   s      rQ   Úchild_towardsrµ   Þ  s3   € à#€DÞ
�4—;‘; (Ó*Ø�{‰{ˆö �4—;‘; (Õ*à€Kra   Ú	old_childÚ	new_childc                 óv   • U R                   nU(       d  gU R                  5       nUb  UR                  X15        gg)z¼
Side Effects:
    * If @old_child.parent is set, replace @old_child with @new_child in
    @old_child's underlying Node structure.
        OR
    * Otherwise, this function does nothing.
N)rj   ÚremoveÚinsert_child)r¶   r·   rj   Ú	child_idxs       rQ   Úreplace_childr¼   æ  s<   € ð ×Ñ€FÞØà× Ñ Ó"€IØÑØ×Ñ˜IÕ1ð ra   c                 óH  • U R                   nU nU(       aŒ  UR                  nUc   U$ UR                  S   R                   U:w  a   U$ UR                  [        R
                  :X  a   U$ UR                  b!  UR                  R                  [        ;   a   U$ UnU(       a  MŒ  U$ )z�Return `leaf` or one of its ancestors that is the topmost container of it.

By "container" we mean a node where `leaf` is the very first child.
r   )r|   rj   rV   rI   r   Ú
file_inputrs   r=   )rb   Úsame_prefixÚ	containerrj   s       rQ   Úcontainer_ofrÁ   ÷  s³   € ð
 —+‘+€KØ€IÞ
Ø×!Ñ!ˆØ‰>Øð Ðð �?‰?˜1Ñ×$Ñ$¨Ó3Øð Ðð �;‰;œ$Ÿ/™/Ó)Øð Ðð	 ×ÑÑ*¨v×/BÑ/B×/GÑ/GÌ8Ó/SØð Ðð ˆ	÷ ˆ)ð Ðra   c                 ó„   • [        U [        5      (       a  U $ U R                  (       a  [        U R                  S   5      $ g)z(Returns the first leaf of the node tree.r   N)rU   r   rV   Úfirst_leaf_ofr±   s    rQ   rÃ   rÃ     s2   € ä�$œ×ÑØˆØ‡}‡}Ü˜TŸ]™]¨1Ñ-Ó.Ð.àra   c                 ó˜   • U R                   [        R                  [        R                  [        R                  [        R
                  1;   $ )z?Whether node is an arithmetic or a binary arithmetic expression)rI   r   Ú
arith_exprÚ
shift_exprÚxor_exprÚand_exprr±   s    rQ   Úis_arith_likerÉ     s4   € à�9‰9Ü�‰Ü�‰Ü�‰Ü�‰ð	ñ ð ra   c                 ó@  • [        U [        5      (       aT  U R                  [        R                  :w  a  g[        U R                  5      n[        U5      R                  S5      (       a  gU R                  (       a‘  U R                  R                  [        R                  :X  ai  U R                  R                  (       dN  U R                  R                  (       a3  U R                  R                  R                  [        R                  :X  a  g[        U R                  S [        R                  [        R                   [        R                  /5      (       a  g[        U R                  [        R"                  [        R$                  [        R                  /5      (       a  gg)NFÚbBfFT)rU   r   rI   r   r“   r   rk   ÚsetÚintersectionrj   r   Úsimple_stmtrs   r¾   r¯   ÚNEWLINEÚINDENTry   rm   )rD   r|   s     rQ   Úis_docstringrÑ   $  s  € Ü�$œ×ÑØ�9‰9œŸ™Ó$Øä" 4§:¡:Ó.ˆÜˆv‹;×#Ñ# F×+Ñ+Øð 	��Ø�K‰K×Ñ¤× 0Ñ 0Ó0Ø—‘×(×(Ø�K‰K××Ø�K‰K×Ñ×#Ñ#¤t§¡Ó6àäØ�‰�dœEŸM™M¬5¯<©<¼×9IÑ9IÐJ÷ñ ð ô ˜Ÿ™¤t§¡¼¿¹ÄT×EUÑEUÐ&V×WÑWð àra   c                 ó>  • U R                   [        R                  :H  =(       az    [        U R                  5      S:H  =(       a[    U R                  S   R                   [
        R                  :H  =(       a*    U R                  S   R                   [
        R                  :H  $ )z+Return True if `node` holds an empty tuple.é   r   r¤   )rI   r   rŽ   ÚlenrV   r   r‡   rˆ   r±   s    rQ   Úis_empty_tuplerÕ   D  sq   € ð 	�	‰	”T—Y‘YÑ÷ 	0Ü�—‘Ó !Ñ#÷	0à�M‰M˜!Ñ×!Ñ!¤U§Z¡ZÑ/÷	0ð �M‰M˜!Ñ×!Ñ!¤U§Z¡ZÑ/ð	ra   c                 óð  • U R                   [        R                  :X  av  [        U 5      nUb  UR                   [        R                  :w  a  g[        UR                  5      S:H  =(       a*    UR                  S   R                   [        R                  :H  $ U R                   [        ;   =(       aI    [        U R                  5      S:H  =(       a*    U R                  S   R                   [        R                  :H  $ )zMReturn True if `node` holds a tuple with one element, with or without parens.FrÓ   r¤   )
rI   r   rŽ   Úunwrap_singleton_parenthesisÚtestlist_gexprÔ   rV   r   ru   r9   ©rD   Úgexps     rQ   Úis_one_tuplerÛ   N  s¯   € à‡y�y”D—I‘IÓÜ+¨DÓ1ˆØ‰<˜4Ÿ9™9¬×(:Ñ(:Ó:Øä�4—=‘=Ó! QÑ&×O¨4¯=©=¸Ñ+;×+@Ñ+@ÄEÇKÁKÑ+OÐOð 	�	‰	”^Ñ#÷ 	1Ü�—‘Ó !Ñ#÷	1à�M‰M˜!Ñ×!Ñ!¤U§[¡[Ñ0ðra   c                 óÒ   • U R                   [        R                  :w  a  g[        U 5      nUb  UR                   [        R                  :w  a  g[        S UR                   5       5      $ )zDReturn True if `node` holds a tuple that contains a walrus operator.Fc              3   óX   #   • U H!  oR                   [        R                  :H  v •  M#     g 7f©N)rI   r   Únamedexpr_test©Ú.0rW   s     rQ   Ú	<genexpr>Ú-is_tuple_containing_walrus.<locals>.<genexpr>f  s   é € ÐL¹m°U�z‰zœT×0Ñ0Ö0ºmùó   ‚(*©rI   r   rŽ   r×   rØ   ÚanyrV   rÙ   s     rQ   Úis_tuple_containing_walrusrç   ^  sM   € à‡y�y”D—I‘IÓØÜ'¨Ó-€DØ�|�t—y‘y¤D×$6Ñ$6Ó6ØäÑL¸d¿mºmÓLÓLÐLra   c                 óÒ   • U R                   [        R                  :w  a  g[        U 5      nUb  UR                   [        R                  :w  a  g[        S UR                   5       5      $ )zBReturn True if `node` holds a tuple that contains a star operator.Fc              3   óX   #   • U H!  oR                   [        R                  :H  v •  M#     g 7frÞ   )rI   r   r   rà   s     rQ   râ   Ú+is_tuple_containing_star.<locals>.<genexpr>q  s   é € ÐG¹°�z‰zœTŸ^™^Ö+ºùrä   rå   rÙ   s     rQ   Úis_tuple_containing_starrë   i  sM   € à‡y�y”D—I‘IÓØÜ'¨Ó-€DØ�|�t—y‘y¤D×$6Ñ$6Ó6ØäÑG¸¿ºÓGÓGÐGra   c                 óÒ   • U R                   [        R                  :w  a  g[        U 5      nUb  UR                   [        R                  :w  a  g[        S UR                   5       5      $ )z(Return True if `node` holds a generator.Fc              3   óX   #   • U H!  oR                   [        R                  :H  v •  M#     g 7frÞ   )rI   r   Úold_comp_forrà   s     rQ   râ   Úis_generator.<locals>.<genexpr>|  s   é € ÐJ¹M°5�z‰zœT×.Ñ.Ö.ºMùrä   rå   rÙ   s     rQ   Úis_generatorrð   t  sM   € à‡y�y”D—I‘IÓØÜ'¨Ó-€DØ�|�t—y‘y¤D×$6Ñ$6Ó6ØäÑJ¸D¿MºMÓJÓJÐJra   ÚopeningÚclosingrª   Úbracketsc                 ó  • U R                   UR                   4U:w  a  gUR                  S-   n[        U5       H  u  pVX`L d  M    O   [        S5      eSnUS-  nX%S  H›  nXaL a    US:  $ UR                  nX„:X  d  M   UR                   [        R
                  :X  d  M@  US-  nUR                  (       d  MX  UR                  R                   [        R                  [        R                  1;   d  M’  US-  n  US:  $    US:  $ )zIReturn True if content between `opening` and `closing` is a one-sequence.Fr¤   z#Opening paren not found in `leaves`r   NrÓ   )
rI   Úbracket_depthÚ	enumerateÚLookupErrorr   ru   rj   r   rw   r{   )	rñ   rò   rª   ró   ÚdepthÚ_opening_indexrb   Úcommasrõ   s	            rQ   Úis_one_sequence_betweenrû     s  € ð 	�‰�g—l‘lÐ# xÓ/Øà×!Ñ! AÑ%€EÜ )¨&Ö 1ÑˆØŒ?Ùñ !2ô
 Ð?Ó@Ð@à€FØ�aÑ€NØ�Ó'ˆØŠ?Øð �A‰:Ðð ×*Ñ*ˆØÕ! d§i¡i´5·;±;Õ&>Ø�a‰KˆFØ�{�{‰{˜tŸ{™{×/Ñ/Ü—‘Ü×"Ñ"ð4õ  ð ˜!‘�Øà�A‰:Ðñ (ð �A‰:Ðra   c                 óh   • [        U 5      nUSL=(       a    UR                  [        R                  :H  $ )z7Return True iff `node` is of the shape ( test := test )N)r×   rI   r   rß   )rD   Úinners     rQ   Úis_walrus_assignmentrþ   ¤  s+   € ä(¨Ó.€EØ˜Ð×B §¡¬t×/BÑ/BÑ!BÐBra   Úlastc                 ój  • U R                   [        R                  :H  =(       Ga�    [        U R                  5      S:H  =(       a[    U R                  S   R                   [
        R                  :H  =(       a*    U R                  S   R                   [
        R                  :H  =(       Gd    U=(       az    [        U R                  5      S:H  =(       a[    U R                  S   R                   [
        R                  :H  =(       a*    U R                  S   R                   [
        R                  :H  =(       dƒ    U=(       az    [        U R                  5      S:H  =(       a[    U R                  S   R                   [
        R                  :H  =(       a*    U R                  S   R                   [
        R                  :H  $ )z?Return True iff `node` is a trailer valid in a simple decoratorrÓ   r   r¤   r
   )
rI   r   r†   rÔ   rV   r   r‰   r‘   r‡   rˆ   )rD   rÿ   s     rQ   Úis_simple_decorator_trailerr  ª  s;  € à�9‰9œŸ™Ñ$÷ ð ä�—‘Ó !Ñ#÷ 4Ø—‘˜aÑ ×%Ñ%¬¯©Ñ2÷4à—‘˜aÑ ×%Ñ%¬¯©Ñ3÷	
ð 	
ð ÷ 4Ü�D—M‘MÓ" aÑ'÷4à—‘˜aÑ ×%Ñ%¬¯©Ñ3÷4ð —‘˜aÑ ×%Ñ%¬¯©Ñ3÷	
ð ÷ 4Ü�D—M‘MÓ" aÑ'÷4à—‘˜aÑ ×%Ñ%¬¯©Ñ3÷4ð —‘˜aÑ ×%Ñ%¬¯©Ñ3ð'ra   c                 óÈ  • U R                   [        R                  :X  a  gU R                   [        R                  :X  a¥  U R
                  (       a”  U R
                  S   R                   [        R                  :H  =(       ac    [        [        [        U R
                  SS 5      5      =(       a6    [        U R
                  5      S:  =(       d    [        U R
                  S   SS9$ g)aH  Return True iff `node` could be a 'dotted name' decorator

This function takes the node of the 'namedexpr_test' of the new decorator
grammar and test if it would be valid under the old decorator grammar.

The old grammar was: decorator: @ dotted_name [arguments] NEWLINE
The new grammar is : decorator: @ namedexpr_test NEWLINE
Tr   r¤   r¨   rÓ   )rÿ   F)
rI   r   r‘   r   ÚpowerrV   ÚallÚmapr  rÔ   r±   s    rQ   Úis_simple_decorator_expressionr  Ä  s¤   € ð ‡y�y”E—J‘JÓØØ‡y�y”D—J‘JÓØ�=�=à—‘˜aÑ ×%Ñ%¬¯©Ñ3÷ ÜœÔ7¸¿¹ÀqÈÐ9LÓMÓN÷ô ˜Ÿ™Ó&¨Ñ*÷ QÜ2°4·=±=ÀÑ3DÈ4ÑPðð ra   c                 ó¢  • U R                   [        R                  :X  a  g[        U 5      (       a  U R                  S:X  a  gU R                   [        R
                  :w  a  g[        U R                  5      S:w  a  gU R                  u  pnUR                   [        R                  :X  a)  UR                   [        R                  :X  a  [        U5      $ g)zAReturn True if `node` holds a `yield` or `yield from` expression.TÚyieldFr
   )rI   r   Ú
yield_exprÚis_name_tokenrk   rŽ   rÔ   rV   r   r‡   rˆ   Úis_yield)rD   ÚlparÚexprÚrpars       rQ   r  r  Ü  s�   € à‡y�y”D—O‘OÓ#Øä�T×Ñ˜tŸz™z¨WÓ4Øà‡y�y”D—I‘IÓØä
ˆ4�=‰=Ó˜QÓØà—}‘}Ñ€D�Ø‡y�y”E—J‘JÓ 4§9¡9´·
±
Ó#:Ü˜‹~Ðàra   rh   c                 óü   • U R                   [        ;  d  U R                  (       d  gU R                  nUR                   [        R                  :X  a  UR                  (       d  gUR                  nUR                   U;   $ )a2  Return True if `leaf` is a star or double star in a vararg or kwarg.

If `within` includes VARARGS_PARENTS, this applies to function signatures.
If `within` includes UNPACKING_PARENTS, it applies to right hand-side
extended iterable unpacking (PEP 3132) and additional unpacking
generalizations (PEP 448).
F)rI   r$   rj   r   r   )rb   rh   rš   s      rQ   r�   r�   ñ  sW   € ð ‡y�yÔ(Ó(°··Øà�‰€AØ‡v�v”—‘Óð �x�xØà�H‰Hˆà�6‰6�VÑÐra   c                 ó<   • U R                   [        R                  :H  $ )z&Return True if the node is an f-string)rI   r   Úfstringr±   s    rQ   Ú
is_fstringr    s   € à�9‰9œŸ™Ñ$Ð$ra   c                 óÈ   • [        U 5      [        U R                  5      S n[        [        R
                  XR                  S9nU R                  5       =(       d    SUl        U$ )z/Converts an fstring node back to a string node.N)r|   r   )rK   rÔ   r|   r   r   r“   Ú
get_linenoÚlineno)rD   Ústring_without_prefixÚstring_leafs      rQ   Úfstring_to_stringr    sL   € ä ›I¤c¨$¯+©+Ó&6Ð&8Ð9ÐÜ”u—|‘|Ð%:Ç;Á;ÑO€KØŸ™Ó*×/¨a€KÔØÐra   c                 óì   • [        U [        5      (       a  [        U 5      (       a  [        U 5      nO[        U [        5      (       a  U nOg[        UR                  5      =(       a    SUR                  ;   $ )zKReturn True if `leaf` is a multiline string that actually spans many lines.FÚ
)rU   r   r  r  r   r   rk   )rD   rb   s     rQ   Úis_multiline_stringr    sU   € ä�$œ×Ñ¤*¨T×"2Ñ"2Ü  Ó&‰Ü	�Dœ$×	Ñ	Ø‰àä˜TŸZ™ZÓ(×?¨T°T·Z±ZÑ-?Ð?ra   c                 óî   • U R                   [        R                  [        R                  1;   d   eU R                  c   eU R                  R                   [        R
                  [        R                  1;   $ rÞ   )rI   r   ÚsuiterÎ   rj   ÚfuncdefrŒ   r±   s    rQ   Úis_parent_function_or_classr  !  sU   € Ø�9‰9œŸ™¤T×%5Ñ%5Ð6Ó6Ð6Ð6Ø�;‰;Ñ"Ð"Ð"à�;‰;×Ñ¤§¡¬d¯m©mÐ<Ñ<Ð<ra   c                 óz   • U R                   [        R                  [        R                  [        R                  1;   $ rÞ   )rI   r   r  rŒ   Úasync_funcdefr±   s    rQ   Úis_function_or_classr"  (  s&   € Ø�9‰9œŸ™¤t§}¡}´d×6HÑ6HÐIÑIÐIra   c                 ó>  • U R                   b  [        U 5      (       d  gU R                  R                  5       (       a  g[	        U R
                  5      S:w  d�  U R
                  S   R                  [        R                  :w  dV  U R
                  S   R                  [        R                  :w  d+  U R
                  S   R                  [        R                  :w  a  gU R
                  S   R                  R                  5       (       a  g[        U R
                  S   5      $ )z2Return True if `node` is a suite with a stub body.Fé   r   r¤   r
   rÓ   )rj   r  r|   ÚstriprÔ   rV   rI   r   rÏ   rÐ   ÚDEDENTÚis_stub_bodyr±   s    rQ   Úis_stub_suiter(  ,  sÎ   € à‡{�{ÑÔ'BÀ4×'HÑ'HØð ‡{�{×Ñ×ÑØô 	ˆD�M‰MÓ˜aÓØ�=‰=˜Ñ× Ñ ¤E§M¡MÓ1Ø�=‰=˜Ñ× Ñ ¤E§L¡LÓ0Ø�=‰=˜Ñ× Ñ ¤E§L¡LÓ0àà‡}�}�QÑ×Ñ×$Ñ$×&Ñ&Øä˜Ÿ™ aÑ(Ó)Ð)ra   c                 óÆ  • [        U [        5      (       a  U R                  [        R                  :w  a  g[        U R                  5      S:w  a  gU R                  S   nUR                  R                  5       (       + =(       a_    UR                  [        R                  :H  =(       a;    [        UR                  5      S:H  =(       a    [        S UR                   5       5      $ )zCReturn True if `node` is a simple statement containing an ellipsis.FrÓ   r   r
   c              3   óX   #   • U H!  o[        [        R                  S 5      :H  v •  M#     g7f)Ú.N)r   r   r‰   )rá   rb   s     rQ   râ   Úis_stub_body.<locals>.<genexpr>P  s   é € ÐH¹°œœUŸY™Y¨Ó,Ö,ºùrä   )rU   r   rI   r   rÎ   rÔ   rV   r|   r%  rŽ   r  )rD   rW   s     rQ   r'  r'  C  s¤   € ä�dœD×!Ñ! T§Y¡Y´$×2BÑ2BÓ%BØä
ˆ4�=‰=Ó˜QÓØà�M‰M˜!Ñ€Eà�L‰L×ÑÓ Ô ÷ 	IØ�J‰Jœ$Ÿ)™)Ñ#÷	Iä�—‘Ó 1Ñ$÷	Iô ÑH¸¿ºÓHÓHð	ra   c                 óÚ  • [        U [        5      (       d  U R                  [        R                  :w  a  gU R
                  S   U R
                  S   p![        U[        5      =(       a„    UR                  [        R                  :H  =(       a`    UR                  S:H  =(       aJ    [        U[        5      =(       a3    UR                  [        R                  :H  =(       a    UR                  S:H  $ )zyGiven a `LN`, determines whether it's an atom `node` with invisible
parens. Useful in dedupe-ing and normalizing parens.
Fr   r¨   rf   )
rU   r   rI   r   rŽ   rV   r   r‡   rk   rˆ   )rD   Úfirstrÿ   s      rQ   Úis_atom_with_invisible_parensr/  T  s¬   € ô �$œ×Ñ §¡¬d¯i©iÓ!7Øà—-‘- Ñ" D§M¡M°"Ñ$5ˆ4ä�5œ$Ó÷ 	Ø�J‰Jœ%Ÿ*™*Ñ$÷	à�K‰K˜2Ñ÷	ô �tœTÓ"÷	ð �I‰IœŸ™Ñ#÷		ð
 �J‰J˜"Ñðra   c                 ó<   • [        U 5      =(       d    [        U 5      $ rÞ   )Úis_empty_lparÚis_empty_rpar©rb   s    rQ   Úis_empty_parr4  f  s   € Ü˜Ó×5¤-°Ó"5Ð5ra   c                 óh   • U R                   [        R                  :H  =(       a    U R                  S:H  $ ©Nrf   )rI   r   r‡   rk   r3  s    rQ   r1  r1  j  ó#   € Ø�9‰9œŸ
™
Ñ"×7 t§z¡z°RÑ'7Ð7ra   c                 óh   • U R                   [        R                  :H  =(       a    U R                  S:H  $ r6  )rI   r   rˆ   rk   r3  s    rQ   r2  r2  n  r7  ra   c                 óf  • U R                   nU R                  nU R                  n[        U[        R
                  :H  =(       ak    US:H  =(       a&    U=(       a    UR                  [        R                  :H  =(       d2    US:H  =(       a&    U=(       a    UR                  [        R                  :H  5      $ )z9Return True if the given leaf starts an import statement.ri   Úfrom)	rj   rI   rk   Úboolr   r‘   r   Úimport_namer”   )rb   rš   r™   r›   s       rQ   Ú	is_importr=  r  s€   € à�‰€AØ�	‰	€AØ�
‰
€AÜØ	ŒU�Z‰Z‰÷ 	
à�(‰]×?˜q×? Q§V¡V¬t×/?Ñ/?Ñ%?÷ BØ�V‘×@ ×@ a§f¡f´×0@Ñ0@Ñ&@ó	ð ra   c                 óØ  • [        U R                  [        R                  :H  =(       aP    U R                  S:H  =(       a:    U R
                  =(       a'    U R
                  R                  [        R                  :H  5      =(       dg    [        U R                  [        R                  :H  =(       a:    U R                  =(       a'    U R                  R                  [        R                  :H  5      $ )zDReturn True if the given leaf starts a with or async with statement.Úwith)
r;  rI   r   r‘   rk   rj   r   Ú	with_stmtÚASYNCÚnext_siblingr3  s    rQ   Úis_with_or_async_with_stmtrC  €  s£   € äØ�	‰	”U—Z‘ZÑ÷ 	/Ø�J‰J˜&Ñ ÷	/à�K‰K÷	/ð �K‰K×Ñ¤§¡Ñ.ó	÷ 	ô
 
Ø�	‰	”U—[‘[Ñ ÷ 	5Ø×Ñ÷	5à×Ñ×"Ñ"¤d§n¡nÑ4ó
ð	ra   c                 óð   • [        U R                  [        R                  :H  =(       aJ    U R                  =(       a7    U R                  R                  [
        R                  [
        R                  1;   5      $ )zºReturn True if the given leaf starts an async def/for/with statement.

Note that `async def` can be either an `async_stmt` or `async_funcdef`,
the latter is used when it has decorators.
)r;  rI   r   rA  rj   r   Ú
async_stmtr!  r3  s    rQ   Úis_async_stmt_or_funcdefrF  Ž  sU   € ô Ø�	‰	”U—[‘[Ñ ÷ 	FØ�K‰K÷	Fà�K‰K×Ñ¤§¡´$×2DÑ2DÐ EÑEóð ra   c                 ó”   • U R                   nU R                  nU[        R                  [        1;   =(       a    UR                  S5      $ )a6  Return True if the given leaf is a type comment. This function should only
be used for general type comments (excluding ignore annotations, which should
use `is_type_ignore_comment`). Note that general type comments are no longer
used in modern version of Python, this function may be deprecated in the future.z# type:)rI   rk   r   rl   r   Ú
startswith©rb   r™   r›   s      rQ   Úis_type_commentrJ  ›  s9   € ð
 	�	‰	€AØ�
‰
€AØ”—‘Ô 2Ð3Ñ3×O¸¿¹ÀYÓ8OÐOra   c                 óˆ   • U R                   nU R                  nU[        R                  [        1;   =(       a    [        U5      $ )zGReturn True if the given leaf is a type comment with ignore annotation.)rI   rk   r   rl   r   Úis_type_ignore_comment_stringrI  s      rQ   Úis_type_ignore_commentrM  ¥  s5   € à�	‰	€AØ�
‰
€AØ”—‘Ô 2Ð3Ñ3×XÔ8UÐVWÓ8XÐXra   rk   c                 ó$   • U R                  S5      $ )zOReturn True if the given string match with type comment with
ignore annotation.z# type: ignore)rH  )rk   s    rQ   rL  rL  ¬  s   € ð ×ÑÐ,Ó-Ð-ra   )Úvisiblerj   rW   rO  c                óN  • [        [        R                  U(       a  SOS5      n[        [        R                  U(       a  SOS5      nUR                  nSUl        UR                  5       =(       d    Sn[        [        R                  X1U/5      nXWl        U R                  Xg5        g)zÙWrap `child` in parentheses.

This replaces `child` with an atom holding the parentheses and the old
child.  That requires moving the prefix.

If `visible` is False, the leaves will be valueless (and thus invisible).
Ú(rf   Ú)r   N)
r   r   r‡   rˆ   r|   r¹   r   r   rŽ   rº   )rj   rW   rO  r  r  r|   Úindexr·   s           rQ   Úwrap_in_parenthesesrT  ²  su   € ô ”—
‘
¦7™C°Ó3€DÜ”—
‘
¦7™C°Ó3€DØ�\‰\€FØ€E„LØ�L‰L‹N×˜a€EÜ”T—Y‘Y ¨dÐ 3Ó4€IØÔØ
×Ñ˜Õ)ra   c                 óÒ   • [        U R                  5      S:w  a  gU R                  u  pnUR                  [        R                  :X  a  UR                  [        R
                  :X  d  gU$ )zmReturns `wrapped` if `node` is of the shape ( wrapped ).

Parenthesis can be optional. Returns None otherwiser
   N)rÔ   rV   rI   r   r‡   rˆ   )rD   r  Úwrappedr  s       rQ   r×   r×   Ä  sM   € ô ˆ4�=‰=Ó˜QÓØàŸ-™-Ñ€D�4Ø�I‰IœŸ™Ó#¨¯	©	´U·Z±ZÓ(?Øà€Nra   c                 óœ   • U R                   [        R                  :X  a  SU l        gU R                   [        R                  :X  a  SU l        gg)zŸMake sure parentheses are visible.

They could be invisible as part of some statements (see
:func:`normalize_invisible_parens` and :func:`visit_import_from`).
rQ  rR  N)rI   r   r‡   rk   rˆ   r3  s    rQ   Úensure_visiblerX  Ò  s7   € ð ‡y�y”E—J‘JÓØˆ�
Ø	�‰”e—j‘jÓ	 Øˆ�
ð 
!ra   Únlc                 ó<   • U R                   [        R                  :H  $ rÞ   )rI   r   r‘   ©rY  s    rQ   r
  r
  Þ  ó   € Ø�7‰7”e—j‘jÑ Ð ra   c                 ó<   • U R                   [        R                  :H  $ rÞ   )rI   r   r‡   r[  s    rQ   Úis_lpar_tokenr^  â  r\  ra   c                 ó<   • U R                   [        R                  :H  $ rÞ   )rI   r   rˆ   r[  s    rQ   Úis_rpar_tokenr`  æ  r\  ra   c                 ó<   • U R                   [        R                  :H  $ rÞ   )rI   r   r’   r[  s    rQ   Úis_number_tokenrb  ê  s   € Ø�7‰7”e—l‘lÑ"Ð"ra   )rE   ÚparamNc                 ó,  • U R                   nUb…  UR                  (       a)  UR                  R                  [        R                  :X  a  gUR                   (       a)  UR                   R                  [
        R                  :X  a  gUR                   nUb  M…  g)z<Returns the type of annotation this leaf is part of, if any.NrE   rc  )rj   rs   rI   r   ÚRARROWr   Útname)rb   r²   s     rQ   Úget_annotation_typerg  î  si   € à�{‰{€HØ
Ñ
Ø× ×  X×%:Ñ%:×%?Ñ%?Ä5Ç<Á<Ó%OØØ�?�?˜xŸ™×3Ñ3´t·z±zÓAØØ—?‘?ˆð Ó
ð ra   c                 ó:   • U R                   c   e[        U 5      SL$ )z7Returns whether this leaf is part of a type annotation.N)rj   rg  r3  s    rQ   Úis_part_of_annotationri  ú  s"   € à�;‰;Ñ"Ð"Ð"Ü˜tÓ$¨DÐ0Ð0ra   c                 ó„   • [        U [        5      (       a  U $ U R                  (       d  g[        U R                  S   5      $ )z,Returns the first leaf of the ancestor node.Nr   )rU   r   rV   Ú
first_leafr±   s    rQ   rk  rk     s2   € ä�$œ×ÑØˆØ�]�]Øä˜$Ÿ-™-¨Ñ*Ó+Ð+ra   c                 ó„   • [        U [        5      (       a  U $ U R                  (       d  g[        U R                  S   5      $ )z+Returns the last leaf of the ancestor node.Nr¨   )rU   r   rV   Ú	last_leafr±   s    rQ   rm  rm  
  s2   € ä�$œ×ÑØˆØ�]�]Øä˜Ÿ™ rÑ*Ó+Ð+ra   c                 óB  • U nUR                   (       a‹  UR                   R                  (       ap  XR                   R                  S   L aU  UR                   nUR                   (       a8  UR                   R                  (       a  XR                   R                  S   L a  MU  U$ )zGReturns the furthest ancestor that has this leaf node as the last leaf.r¨   )rj   rV   )rb   rD   s     rQ   Ú furthest_ancestor_with_last_leafro    sg   € à€DØ
�+�+˜$Ÿ+™+×.×.°4¿;¹;×;OÑ;OÐPRÑ;SÒ3SØ�{‰{ˆð �+�+˜$Ÿ+™+×.×.°4¿;¹;×;OÑ;OÐPRÑ;SÔ3Sà€Kra   )r  )F)Ãr^   ÚsysÚcollections.abcr   Útypingr   r   r   r   r   r	   Úversion_infor   Útyping_extensionsÚmypy_extensionsr   Úblack.cacher   Ú
black.moder   Úblack.stringsr   r   Úblib2to3r   Úblib2to3.pgen2r   Úblib2to3.pytreer   r   r   r   Ú
initializeÚpython_symbolsr   Ú__annotations__r   r_   ÚintÚLeafIDÚNodeTyper&  rÐ   rÏ   r   Úif_stmtÚ
while_stmtÚfor_stmtÚtry_stmtr•   r@  r  rŒ   Ú
match_stmtÚ
case_blockr   r   rJ   r    ÚLESSÚGREATERÚEQEQUALÚNOTEQUALÚ	LESSEQUALÚGREATEREQUALr!   ÚVBARÚ
CIRCUMFLEXÚAMPERÚ	LEFTSHIFTÚ
RIGHTSHIFTÚPLUSÚMINUSr}   ÚSLASHÚDOUBLESLASHÚPERCENTrƒ   ÚTILDEr�   r"   r#   r$   rw   rx   r†   r{   rz   r%   rŽ   r�   Ú	listmakerrØ   Útestlist_star_exprÚsubject_exprÚpatternr&   ÚtestÚlambdefÚor_testÚand_testÚnot_testÚ
comparisonr   r  rÇ   rÈ   rÆ   rÅ   Útermr  rß   r'   rf  r€   r(   r8   ÚtestlistÚexprlistr9   r‡   rˆ   rŠ   ÚRSQBrq   ÚRBRACEr:   rÌ   Úkeysr;   Úvaluesr<   r=   ru   ÚFSTRING_MIDDLEÚFSTRING_ENDr…   r>   re  rB   r;  rK   rŸ   r¦   rt   r©   r¯   r~   rµ   r¼   rÁ   rÃ   rÉ   rÑ   rÕ   rÛ   rç   rë   rð   Útuplerû   rþ   r  r  r  r�   r  r  r  r  r"  r(  r'  r/  r4  r1  r2  r=  rC  rF  rJ  rM  rL  rT  r×   rX  r
  r^  r`  rb  rg  ri  rk  rm  ro  rY   ra   rQ   Ú<module>r­     sõ  ðòó Ý $ß D× Dà×Ñ�wÓÞ å+å &å !Ý ß >Ý Ý  ß 5Ó 5à × Ò �)Ô Ø×#Ñ#€€eÓ #ñ ˆCƒL€Ø
ˆ4�ˆ:Ñ€Ø	€Ø€ð —\‘\ 5§<¡<°·±Ð?€
ˆEÓ ?à‡L�LØ‡O�OØ‡M�MØ‡M�MØ×ÑØ‡N�NØ‡L�LØ‡M�MØ‡O�OØ‡O�Oð€	ˆ5ó ð  Ð �EÓ Ø%9€‡�Ð!Ñ "Ø ˜€�Ó &à	‡J�JØ	‡M�MØ	‡M�MØ	‡N�NØ	‡O�OØ	×Ñð€ˆUó ð 
‡J�JØ	×ÑØ	‡K�KØ	‡O�OØ	×ÑØ	‡J�JØ	‡K�KØ	‡J�JØ	‡K�KØ	×ÑØ	‡M�MØ	‡H�HØ	‡K�KØ	×Ñð€�ó ð  —
‘
˜E×,Ñ,Ð-€€uÓ -Ø 5§;¡; -Ñ/Ð �%Ó /à‡L�LØ‡M�MØ‡L�LØ×ÑØ×Ñð€�ó ð 	‡I�IØ×ÑØ‡N�NØ×ÑØ×ÑØ×ÑØ‡L�LðÐ �5ó ð 	‡I�IØ‡L�LØ‡L�LØ‡M�MØ‡M�MØ‡O�OØ‡N�NØ‡I�IØ‡M�MØ‡M�MØ‡O�OØ‡O�OØ‡L�LØ‡I�IØ‡J�JØ×Ñð!Ð �%ó ð$ —j‘j $§/¡/Ð2€ˆUÓ 2ò€ˆUó ð$ Ÿ™¨×(?Ñ(?ÀÇÁÐO€�Ó Oà	‡J�J�—
‘
Ø	‡J�J�—
‘
Ø	‡L�L�%—,‘,ð€ˆó ñ
 ˜gŸlšl›nÓ-Ð �%Ó -Ù˜gŸnšnÓ.Ó/Ð �%Ó /Ø"Ð%5Ñ5€ˆ%Ó 5Ø)Ø	‡K‚KØØ	×ÒØ	×ÒØ	‡J‚Jð-ñ €�ó ð 
€ñ ¨Ñ.ô-ˆg�a‰jó -ó /ð-ðDm�Tð m°ð m¸Tð mÀcô mñ`! ð !°ð !À3ð !ÐRUõ !ð˜ "™ð ¨(°4©.ô ð$=˜H R™Lð =°$°xÀÑ7IÑ2Jð =Ètô =ð 
�h˜r‘lð 
 x°Ñ'9ô 
ð˜Dð ¨bð °X¸b±\ô ð2˜Rð 2¨Bð 2°4ô 2ð"�tð  ô ð2˜ð ˜x¨™~ô ð˜ð ˜tô ð�rð ˜dô ð@˜ð  ô ð�rð ˜dô ð M Rð M¨Dô MðH 2ð H¨$ô HðK�rð K˜dô Kð "'§¡¨U¯Z©ZÐ 8ñ	"Øð"àð"ð �‰Jð"ð �C˜�H‰oð	"ð
 
õ"ðJC˜rð C dô Cñ bð °ð Àõ ð4¨ð °ô ð0�2ð ˜$ô ð*�Dð  # h¡-ð °Dô ð.%�Tð %˜dô %ð
˜Dð  Tô ð	@˜bð 	@ Tô 	@ð= dð =¨tô =ðJ˜tð J¨ô Jð*˜ð * ô *ð.�rð ˜dô ð"¨ð ¨tô ð$6�tð 6 ô 6ð8˜ð 8 ô 8ð8˜ð 8 ô 8ð�Dð ˜Tô ð Tð ¨dô ð
 4ð 
¨Dô 
ðP˜$ð P 4ô PðY ð Y¨$ô Yð.¨ð .°ô .ð EIò * ð *¨Rð *¸Tð *ÈTõ *ð$ rð ¨h°r©lô ð	˜ð 	 $ô 	ð!�bð !˜Y t™_ô !ð!�bð !˜Y t™_ô !ð!�bð !˜Y t™_ô !ð#˜ð #˜y¨™ô #ð	˜dð 	 wÐ/FÑ'Gô 	ð1 ð 1¨ô 1ð,�Rð ,˜H T™Nô ,ð,�Bð ,˜8 D™>ô ,ð¨4ð °Bõ ra   