Ë
    :vžjÓ  ã                   ór  — d Z ddlZddlZddlZddlmZ ddlmZmZ ddl	Z	ddl
mZ ddlmZ ddlmZmZmZmZmZmZmZmZ dd	lmZmZmZmZmZmZmZmZm Z  dd
l!m"Z"m#Z#m$Z$m%Z%m&Z& ddl'm(Z( ddl)m*Z* ddl+m,Z,m-Z- ddl.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 ddlm5Z5m6Z6 ddl7m8Z8m9Z9m:Z:m;Z;m<Z< ddl=m>Z>m?Z@ ddlAmBZBmCZCmDZDmEZEmFZF  eDd¬«      ZGdgZHdZIdZJ e3d«      ZKi dd“dd“dd“dd “d!d"“d#d$“d%d&“d'd(“d)d*“d+d,“d-d.“d/d0“d1d2“d3d4“d5d6“d7d8“d9d:“i d;d<“d=d>“d?d@“dAdB“dCdD“dEdF“dGdH“dIdJ“dKdL“dMdN“dOdP“dQdR“dSdT“dUdV“dWdX“dYdZ“d[d\“¥d]d^d_œ¥ZLi d`da“dbdc“ddde“dfdg“dhdi“djdk“dldm“dnd“dod“dpdq“drds“dtdu“dLdK“dvdw“dxdy“dzd{“d|d}“d~eJz  dd€d�d‚dƒd„d…d†d‡dˆd‰dŠd‹œ¥ZMi dŒd�g“d�dŽd�g“dŽg d�¢“d‘d’g“d“dvd”g“d•d–d”g“d—d˜d”g“d™dxdšg“d›dœg“dœg d�¢“dždŸd g“d d¡g“d¡d”d¢g“d£g d¤¢“d¥g d¦¢“d§g d¨¢“d©dzg“i dªdxg“d«dxdzg“d¬d©dªg“d­d®g“d¯d°g“d±d²g“d³d§d´g“dµd¶d·g“d¸d¹dºg“d»d¼d½g“d¾d¿g“dÀdÁg“dÂg dÃ¢“dÄdÅdÆg“dÅdÇg“dÆdÈg“dÇdÉdÊg“¥dËgdÉdÌgdÍdÎgdÏd|gdÐœ¥ZNdÑZOdÒZP G dÓ„ dÔeB«      ZQeG G dÕ„ dÖeE«      «       ZR G d×„ dØeC«      ZS G dÙ„ dÚeB«      ZT G dÛ„ dÜeE«      ZU G dÝ„ dÞeE«      ZV G dß„ dàeE«      ZWdá„ ZXdâ„ ZYdã„ ZZeG G dä„ dåeE«      «       Z[dæe%fdç„Z\ G dè„ déeF«      Z] G dê„ dëeE«      Z^dì„ Z_ G dí„ dîe «      Z` edïdð«      Za G dñ„ dò«      Zb ebdóeH«      Zcdô„ Zddõ„ ZeeG G dö„ d÷eE«      «       Zfdø„ Zgdù„ Zhdúdûgfdüdýgfdþg dÿ¢f�d g �d¢f�d�dgf�d�dgf�dg �d¢f�dg �d	¢f�d
�dgf�d�dgf�d�dgf�d�dgf�d�dgfgZi�d„ Zj�d&�d„Zk�d„ Zl�d„ Zm�d&�dendŒendæeee<enf      f�d„Zo�d'�d„Zp�d„ Zq�d„ Zr G �d„ �d«      Zs G �d„ �d «      Zt�d!„ Zug f�d"„Zv�d#„ Zw�d$endæenf�d%„Zxy((  zCParses and compiles Lark grammars into an internal representation.
é    N)Ú
namedtuple)ÚcopyÚdeepcopy)Úliteral_eval)Úsuppress)ÚListÚTupleÚUnionÚCallableÚDictÚOptionalÚSequenceÚ	Generatoré   )	ÚbfsÚloggerÚclassify_boolÚis_id_continueÚis_id_startÚbfs_all_uniqueÚsmall_factorsÚ
OrderedSetÚ	Serialize)ÚTokenÚTerminalDefÚ
PatternStrÚ	PatternREÚPattern)ÚParseTreeBuilder)ÚParsingFrontend)Ú	LexerConfÚ
ParserConf)ÚRuleOptionsÚRuleÚTerminalÚNonTerminalÚSymbolÚTOKEN_DEFAULT_PRIORITY)ÚclassifyÚ
dedup_list)ÚGrammarErrorÚUnexpectedCharactersÚUnexpectedTokenÚ
ParseErrorÚUnexpectedInput)ÚTreeÚSlottedTree)ÚTransformerÚVisitorÚv_argsÚTransformer_InPlaceÚTransformer_NonRecursiveT)ÚinlineÚgrammarsz.larkÚimsluxÚ	__empty__Ú.ÚDOTÚ,ÚCOMMAÚ:ÚCOLONÚ;Ú	SEMICOLONÚ+ÚPLUSÚ-ÚMINUSÚ*ÚSTARÚ/ÚSLASHÚ\Ú	BACKSLASHÚ|ÚVBARÚ?ÚQMARKÚ!ÚBANGÚ@ÚATÚ#ÚHASHÚ$ÚDOLLARÚ%ÚPERCENTÚ^Ú
CIRCUMFLEXÚ&Ú	AMPERSANDÚ_Ú
UNDERSCOREÚ<ÚLESSTHANÚ>ÚMORETHANÚ=ÚEQUALÚ"ÚDBLQUOTEÚ'ÚQUOTEÚ`Ú	BACKQUOTEÚ~ÚTILDEÚ(ÚLPARÚ)ÚRPARÚ{ÚLBRACEÚ}ÚRBRACEÚ[ÚLSQBÚ]ÚRSQBÚ
ÚNEWLINEz
ÚCRLFÚTABÚSPACE)Ú	Ú Ú_LPARz\(Ú_RPARz\)Ú_LBRAz\[Ú_RBRAz\]Ú_LBRACEz\{Ú_RBRACEz\}ÚOPz[+*]|[?](?![a-z_])Ú_COLONÚ_COMMAÚ_ORz\|Ú_DOTz\.(?!\.)Ú_DOTDOTz\.\.ÚRULE_MODIFIERSz(!|![?]?|[?]!?)(?=[_a-z])ÚRULEz_?[a-z][_a-z0-9]*ÚTERMINALz_?[A-Z][_A-Z0-9]*ÚSTRINGz"(\\"|\\\\|[^"\n])*?"i?z/(?!/)(\\/|\\\\|[^/])*?/[%s]*z(\r?\n)+\s*z(\r?\n)+\s*\|z[ \t]+z\s*//[^\n]*|\s*#[^\n]*z\\[ ]*\nz->z%ignorez	%overridez%declarez%extendz%importz[+-]?\d+)ÚREGEXPÚ_NLÚ_NL_ORÚWSÚCOMMENTrL   Ú_TOÚ_IGNOREÚ	_OVERRIDEÚ_DECLAREÚ_EXTENDÚ_IMPORTÚNUMBERÚstartÚ_listÚ_itemz_list _item)ÚruleÚtermÚignoreÚimportÚdeclareÚoverrideÚextendr“   r¡   zBrule_modifiers RULE template_params priority _COLON expansions _NLÚrule_modifiersÚ Úpriorityz_DOT NUMBERÚtemplate_paramsz _LBRACE _template_params _RBRACEÚ_template_paramsz_template_params _COMMA RULEÚ
expansionsÚ_expansions)Úaliasz_expansions _OR aliasz_expansions _NL_OR aliasz?aliaszexpansion _TO nonterminalÚ	expansionÚ
_expansionz_expansion exprz?expr)Úatomzatom OPzatom TILDE NUMBERz atom TILDE NUMBER _DOTDOT NUMBERz?atom)z_LPAR expansions _RPARÚmaybeÚvaluer´   )ÚterminalÚnonterminalÚliteralÚrangeÚtemplate_usagerµ   r¶   z?namez?symbolr³   z_LBRA expansions _RBRAr¸   zSTRING _DOTDOT STRINGr¹   z*nonterminal _LBRACE _template_args _RBRACEÚ_template_argsz_template_args _COMMA valuer¢   zTERMINAL _COLON expansions _NLz*TERMINAL _DOT NUMBER _COLON expansions _NLr¦   z_OVERRIDE rulez_OVERRIDE termr§   z_EXTEND rulez_EXTEND termr£   z_IGNORE expansions _NLr¥   z_DECLARE _declare_args _NLr¤   )z_IMPORT _import_path _NLz._IMPORT _import_path _LPAR name_list _RPAR _NLz!_IMPORT _import_path _TO name _NLÚ_import_pathÚ
import_libÚ
import_relÚ_import_argsz_DOT _import_argsÚnamez_import_args _DOT nameÚ
_name_listz_name_list _COMMA nameÚsymbolz_declare_args symbolr’   )Ú	name_listrÀ   Ú_declare_argsr·   é   é2   c                   ól   — e Zd Zdefd„Zdedefd„Zdeee	ef      de
e	ddf   fd„Zde	fd	„Zde	fd
„Zy)ÚFindRuleSizeÚkeep_all_tokensc                 ó   — || _         y ©N©rÈ   )ÚselfrÈ   s     úb/workspace/moltex-experiments/.pixi/envs/default/lib/python3.12/site-packages/lark/load_grammar.pyÚ__init__zFindRuleSize.__init__Æ   s
   € Ø.ˆÕó    ÚsymÚreturnc                 óÐ   — t        |t        «      r|j                  j                  d«       S t        |t        «      r| j
                  xs |j                   S |t        u ryJ |«       ‚)Nr_   F)Ú
isinstancer&   r¿   Ú
startswithr%   rÈ   Ú
filter_outÚ_EMPTY)rÌ   rÐ   s     rÍ   Ú_will_not_get_removedz"FindRuleSize._will_not_get_removedÉ   sZ   € Ü�cœ;Ô'Ø—x‘x×*Ñ*¨3Ó/Ð/Ð/Ü�cœ8Ô$Ø×'Ñ'Ò=¨s¯~©~Ð+=Ð=Ø”&‰=ØØ�cÓˆurÏ   ÚargsNc              #   ó–   K  — |D ]@  }t        |t        «      r|–— Œt        |t        «      r| j                  |«      rdnd–— Œ@J ‚ y ­w)Nr   r   )rÓ   Úintr'   r×   )rÌ   rØ   Úas      rÍ   Ú_args_as_intzFindRuleSize._args_as_intÒ   sC   è ø€ ÛˆAÜ˜!œSÔ!Ø“Ü˜AœvÔ&Ø×5Ñ5°aÔ8‘a¸aÓ?à�uñ ùs   ‚AA	c                 ó6   — t        | j                  |«      «      S rÊ   )ÚsumrÜ   ©rÌ   rØ   s     rÍ   r°   zFindRuleSize.expansionÛ   ó   € Ü�4×$Ñ$ TÓ*Ó+Ð+rÏ   c                 ó6   — t        | j                  |«      «      S rÊ   )ÚmaxrÜ   rß   s     rÍ   r­   zFindRuleSize.expansionsÞ   rà   rÏ   )Ú__name__Ú
__module__Ú__qualname__ÚboolrÎ   r'   r×   r   r
   rÚ   r   rÜ   r°   r­   © rÏ   rÍ   rÇ   rÇ   Å   sf   „ ð/¨ó /ð¨ð °Dó ð  e¨C°¨KÑ&8Ñ!9ð ¸iÈÈTÐSWÈÑ>Xó ð, ó ,ð, #ô ,rÏ   rÇ   c                   óp   — e Zd Zd„ Zdefd„Zd„ Zdedefd„Zd„ Z	d	„ Z
d
ededefd„Zd
edefd„Zd
efd„Zy)ÚEBNF_to_BNFc                 óJ   — g | _         i | _        d| _        d| _        d | _        y )NÚanonr   )Ú	new_rulesÚrules_cacheÚprefixÚiÚrule_options©rÌ   s    rÍ   rÎ   zEBNF_to_BNF.__init__ä   s'   € ØˆŒØˆÔØˆŒØˆŒØ ˆÕrÏ   Úinnerc                 óh   — d| j                   || j                  fz  }| xj                  dz  c_        |S )Nz
__%s_%s_%dr   )rî   rï   )rÌ   rò   Únew_names      rÍ   Ú
_name_rulezEBNF_to_BNF._name_ruleë   s-   € Ø 4§;¡;°°t·v±vÐ">Ñ>ˆØ�Š�!‰�ØˆrÏ   c                 óŠ   — t        |«      }| j                  j                  ||| j                  f«       || j                  |<   |S rÊ   )r&   rì   Úappendrð   rí   )rÌ   Úkeyr¿   r­   Úts        rÍ   Ú	_add_rulezEBNF_to_BNF._add_ruleð   s@   € Ü˜ÓˆØ�‰×Ñ˜t Z°×1BÑ1BÐCÔDØ !ˆ×Ñ˜ÑØˆrÏ   Útype_Úexprc           
      óè   — 	 | j                   |   S # t        $ rW | j                  |«      }t        |«      }t	        dt	        d|g«      t	        d||g«      g«      }| j                  |||«      cY S w xY w©Nr­   r°   )rí   ÚKeyErrorrõ   r&   ÚSTrú   )rÌ   rû   rü   rô   rù   Útrees         rÍ   Ú_add_recurse_rulezEBNF_to_BNF._add_recurse_ruleö   s   € ð		8Ø×#Ñ# DÑ)Ð)øÜò 	8Ø—‘ uÓ-ˆHÜ˜HÓ%ˆAÜ�lÜ�;  Ó'Ü�;  D 	Ó*ð%ó ˆDð —>‘> $¨°$Ó7Ò7ð	8ús   ‚ ‘AA1Á0A1c           
      óâ   — ||||f}	 | j                   |   S # t        $ rN | j                  d||fz  «      }t        dt        d|g|z  |g|z  z   «      g«      }| j	                  |||«      cY S w xY w)aN  Generate a rule that repeats target ``a`` times, and repeats atom ``b`` times.

        When called recursively (into target), it repeats atom for x(n) times, where:
            x(0) = 1
            x(n) = a(n) * x(n-1) + b

        Example rule when a=3, b=4:

            new_rule: target target target atom atom atom atom

        zrepeat_a%d_b%dr­   r°   )rí   rÿ   rõ   r   rú   )rÌ   rÛ   ÚbÚtargetr²   rø   rô   r  s           rÍ   Ú_add_repeat_rulezEBNF_to_BNF._add_repeat_rule  s‰   € ð �!�V˜TÐ"ˆð	7Ø×#Ñ# CÑ(Ð(øÜò 	7Ø—‘Ð'7¸1¸a¸&Ñ'@ÓAˆHÜ�l¤R¨°f°XÀ±\ÀTÀFÈQÁJÑ5NÓ%OÐ$PÓQˆDØ—>‘> # x°Ó6Ò6ð	7ús   ˆ —AA.Á-A.c                 ó€  — ||||df}	 | j                   |   S # t        $ rœ | j                  d||fz  «      }t        dt	        |«      D �cg c]  }t        d|g|z  |gz   «      ‘Œ nc c}w c}t	        |«      D �cg c]  }t        d|g|z  |g|z  z   «      ‘Œ nc c}w c}z   «      }	| j                  |||	«      cY S w xY w)a_  Creates a rule that matches atom 0 to (a*n+b)-1 times.

        When target matches n times atom, and target_opt 0 to n-1 times target_opt,

        First we generate target * i followed by target_opt, for i from 0 to a-1
        These match 0 to n*a - 1 times atom

        Then we generate target * a followed by atom * i, for i from 0 to b-1
        These match n*a to n*a + b-1 times atom

        The created rule will not have any shift/reduce conflicts so that it can be used with lalr

        Example rule when a=3, b=4:

            new_rule: target_opt
                    | target target_opt
                    | target target target_opt

                    | target target target
                    | target target target atom
                    | target target target atom atom
                    | target target target atom atom atom

        Úoptzrepeat_a%d_b%d_optr­   r°   )rí   rÿ   rõ   r   r¸   rú   )
rÌ   rÛ   r  r  Ú
target_optr²   rø   rô   rï   r  s
             rÍ   Ú_add_repeat_opt_rulez EBNF_to_BNF._add_repeat_opt_rule  sÝ   € ð2 �!�V˜T 5Ð)ˆð		7Ø×#Ñ# CÑ(Ð(øÜò 	7Ø—‘Ð';¸qÀ!¸fÑ'DÓEˆHÜ�lÜDIÈ!ÄHó%ÙDL¸q”�;  ¨¡
¨j¨\Ñ 9Õ:ÁHùô%ô AFÀaÄóÙ@H¸1”�;  ¨¡
¨d¨V°A©XÑ 5Õ6Áùôñ%ó ˆDð
 —>‘> # x°Ó6Ò6ð	7ús'   ‰ ˜2B=Á
A&Á%B=Á:BÂ"B=Â<B=r¡   ÚmnÚmxc                 ó  — |t         k  r5t        dt        ||dz   «      D �cg c]  }t        d|g|z  «      ‘Œ c}«      S |}t        |t        «      D ]  \  }}| j                  ||||«      }Œ ||k(  r|S ||z
  dz   }t        |t        «      }	|}
t        dg «      }|	dd D ].  \  }}| j                  |||
||«      }| j                  |||
|«      }
Œ0 |	d   \  }}| j                  |||
||«      }t        dt        d|g|gz   «      g«      S c c}w )z\Generates a rule tree that repeats ``rule`` exactly between ``mn`` to ``mx`` times.
        r­   r   r°   Néÿÿÿÿ)ÚREPEAT_BREAK_THRESHOLDr   r¸   r   ÚSMALL_FACTOR_THRESHOLDr  r
  )rÌ   r¡   r  r  ÚnÚ	mn_targetrÛ   r  ÚdiffÚdiff_factorsÚdiff_targetÚdiff_opt_targets               rÍ   Ú_generate_repeatszEBNF_to_BNF._generate_repeats;  sF  € ð Ô&Ò&Ü�lÌ%ÐPRÐTVÐYZÑTZÔJ[Ó$\ÑJ[ÀQ¤R¨°d°V¸a±ZÕ%@ÐJ[Ñ$\Ó]Ð]ð ˆ	Ü! "Ô&<Ö=‰DˆAˆqØ×-Ñ-¨a°°I¸tÓD‰Ið >à�Š8ØÐà�B‰w˜‰{ˆÜ$ TÔ+AÓBˆØˆÜ˜[¨"Ó-ˆØ   "Ó%‰DˆAˆqØ"×7Ñ7¸¸1¸kÈ?Ð\`ÓaˆOØ×/Ñ/°°1°kÀ4ÓH‰Kð &ð ˜BÑ‰ˆˆ1Ø×3Ñ3°A°q¸+ÀÐX\Ó]ˆä�,¤ K°)°ÀÐ?PÑ1PÓ!QÐ RÓSÐSùò1 %]s   ¡D	
Úopc                 óô  — |j                   dk(  rt        dg «      }t        d||g«      S |j                   dk(  r| j                  d|«      S |j                   dk(  r*| j                  d|«      }t        d|t        dg «      g«      S |j                   dk(  r`t        |«      d	k(  rt	        |d
   «      x}}n.t        t        |«      \  }}||k  s|d
k  rt        d|||fz  «      ‚| j                  |||«      S J |«       ‚)NrO   r°   r­   rC   ÚplusrG   Ústarrm   r   r   ú'Bad Range for %s (%d..%d isn't allowed))r´   r   r  ÚlenrÚ   Úmapr+   r  )rÌ   r¡   r  rØ   Úemptyrô   r  r  s           rÍ   rü   zEBNF_to_BNF.exprZ  s   € Ø�8‰8�sŠ?Ü�{ BÓ'ˆEÜ�l T¨5 MÓ2Ð2Ø�X‰X˜Š_ð
 ×)Ñ)¨&°$Ó7Ð7Ø�X‰X˜Š_ð
 ×-Ñ-¨f°dÓ;ˆHÜ�l X¬r°+¸rÓ/BÐ$CÓDÐDØ�X‰X˜Š_Ü�4‹y˜AŠ~Ü˜d 1™g›,Ð&�‘RäœS $›‘��BØ˜’7˜b 1šfÜ&Ð'PÐTXÐZ\Ð^`ÐSaÑ'aÓbÐbà×)Ñ)¨$°°BÓ7Ð7à�bÓˆurÏ   c                 óÂ   — | j                   xr | j                   j                  }t        |«      j                  |«      }t	        dt
        g|z  «      }t	        d||g«      S )Nr°   r­   )rð   rÈ   rÇ   Ú	transformr   rÖ   )rÌ   r¡   rÈ   Ú	rule_sizer  s        rÍ   r³   zEBNF_to_BNF.maybew  sW   € Ø×+Ñ+ÒQ°×0AÑ0A×0QÑ0QˆÜ  Ó1×;Ñ;¸DÓAˆ	Ü�;¤ ¨9Ñ 4Ó5ˆÜ�,  u Ó.Ð.rÏ   N)rã   rä   rå   rÎ   Ústrrõ   rú   r0   r  r  r
  rÚ   r  r   rü   r³   rç   rÏ   rÍ   ré   ré   â   ss   „ ò!ð ó ò
ð
8 sð 
8°$ó 
8ò7ò(#7ðJT dð T°ð T¸ó Tð>˜ð  5ó ð:/˜$ô /rÏ   ré   c                   ó@   — e Zd Zedefd„«       Zdefd„Zd„ Zdefd„Zy)ÚSimplifyRule_Visitorr  c                 óv   — | j                  | j                  «      r	 | j                  | j                  «      rŒy y rÊ   )Úexpand_kids_by_dataÚdata)r  s    rÍ   Ú_flattenzSimplifyRule_Visitor._flatten€  s+   € à×&Ñ& t§y¡yÔ1Øð ×&Ñ& t§y¡y×1rÏ   c                 óÒ  — | j                  |«       t        |j                  «      D ]±  \  }}t        |t        «      sŒ|j
                  dk(  sŒ'd|_        t        |j                  «      D ���cg c]J  }| j                  t        dt        |j                  «      D ��cg c]  \  }}||k(  r|n|‘Œ c}}«      «      ‘ŒL c}}}|_        | j                  |«        y  y c c}}w c c}}}w rþ   )	r)  Ú	enumerateÚchildrenrÓ   r0   r(  r*   Úvisitr   )rÌ   r  rï   ÚchildÚoptionÚjÚothers          rÍ   r°   zSimplifyRule_Visitor.expansion…  sÛ   € ð 	�‰�dÔä! $§-¡-Ö0‰HˆAˆuÜ˜%¤Õ&¨5¯:©:¸Ó+EØ(�”	ô 0:¸%¿.¹.Ô/Iõ!Ká/I Vð "&§¡¬B¨{ÜMVÐW[×WdÑWdÔMeô=gÙMeÁÀÀEð HIÈAÂv¹VÐSXÑ=XØMeò=gó -hõ "ià/Ió!K�”ð —‘˜dÔ#Ùñ 1ùó=gùô !Ks   Á..C"
ÂCÂ/C"
ÃC"
c                 óØ   — |j                   \  }}|j                  dk(  rLg }|j                   d   j                   D ]  }|j                  t        d||g«      «       Œ! d|_        ||_         y y )Nr­   r   r¯   )r,  r(  r÷   r   )rÌ   r  r¡   Ú
alias_nameÚaliasesr.  s         rÍ   r¯   zSimplifyRule_Visitor.alias›  se   € ØŸ=™=ÑˆˆjØ�9‰9˜Ò$ØˆGØŸ™ qÑ)×2Ô2�Ø—‘œr '¨E°:Ð+>Ó?Õ@ð 3à$ˆDŒIØ#ˆD�Mð %rÏ   c                 óÄ   — | j                  |«       t        t        |j                  «      «      t        |j                  «      k7  rt	        |j                  «      |_        y y rÊ   )r)  r  Úsetr,  r*   )rÌ   r  s     rÍ   r­   zSimplifyRule_Visitor.expansions¤  sB   € Ø�‰�dÔäŒs�4—=‘=Ó!Ó"¤c¨$¯-©-Ó&8Ò8Ü& t§}¡}Ó5ˆD�Mð 9rÏ   N)	rã   rä   rå   Ústaticmethodr0   r)  r°   r¯   r­   rç   rÏ   rÍ   r%  r%  ~  s8   „ àð�tò ó ðð˜dó ò,$ð6˜tô 6rÏ   r%  c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚRuleTreeToTextc                 ó   — |S rÊ   rç   )rÌ   Úxs     rÍ   r­   zRuleTreeToText.expansions¬  s   € ØˆrÏ   c                 ó
   — |d fS rÊ   rç   )rÌ   Úsymbolss     rÍ   r°   zRuleTreeToText.expansion¯  s   € Ø˜ˆ}ÐrÏ   c                 óH   — |\  \  }}}|�J ||d|f«       ‚||j                   fS )NrE   ©r¿   )rÌ   r;  r°   Ú_aliasr¯   s        rÍ   r¯   zRuleTreeToText.alias²  s8   € Ø%&Ñ"Ñˆ�F˜UØˆ~Ð>  y°#°vÐ>Ó>ˆ~Ø˜%Ÿ*™*Ð$Ð$rÏ   N)rã   rä   rå   r­   r°   r¯   rç   rÏ   rÍ   r9  r9  «  s   „ òòó%rÏ   r9  c                   ó&   — e Zd ZdZd„ Zed„ «       Zy)ÚPrepareAnonTerminalszfCreate a unique list of anonymous terminals. Attempt to give meaningful names to them when we add themc                 óÔ   — || _         | j                   D �ch c]  }|j                  ’Œ c}| _        |D �ci c]  }|j                  |“Œ c}| _        d| _        d | _        y c c}w c c}w ©Nr   )Ú	terminalsr¿   Úterm_setÚpatternÚterm_reverserï   rð   )rÌ   rE  Útds      rÍ   rÎ   zPrepareAnonTerminals.__init__»  s]   € Ø"ˆŒØ+/¯>ª>Ó:©> R˜Ÿ›¨>Ñ:ˆŒÙ6?Ó@±i°˜RŸZ™Z¨™^°iÑ@ˆÔØˆŒØ ˆÕùò ;ùÚ@s
   –A µA%c                 ó8  — |j                   }|| j                  v r>|j                  | j                  |   j                  j                  k7  rt	        d|z  «      ‚d }t        |t        «      r	 | j                  |   j                  }n?t        |t        «      r(|| j                  v r!| j                  |   j                  }nJ |«       ‚|€$d| j                  z  }| xj                  dz  c_        || j                  vra|| j                  vsJ ‚| j                  j!                  |«       t#        ||«      }|| j                  |<   | j$                  j'                  |«       | j(                  r| j(                  j*                  rdnt        |t        «      }t-        ||¬«      S # t        $ ru 	 t        |   }nV# t        $ rJ |rEt        |«      r:t        |d   «      r,|j                  «       | j                  vr|j                  «       }Y nw xY w|| j                  v rd }Y �ŒSw xY w)Nz+Conflicting flags for the same terminal: %sr   Fz	__ANON_%dr   ©rÕ   )r´   rH  ÚflagsrG  r+   rÓ   r   r¿   rÿ   Ú_TERMINAL_NAMESr   r   ÚupperrF  r   rï   Úaddr   rE  r÷   rð   rÈ   r%   )rÌ   Úpr´   Ú	term_nameÚtermdefrÕ   s         rÍ   rG  zPrepareAnonTerminals.patternÂ  sá  € à—‘ˆØ�×!Ñ!Ñ! a§g¡g°×1BÑ1BÀ1Ñ1E×1MÑ1M×1SÑ1SÒ&SÜÐMÐPQÑQÓRÐRàˆ	ä�aœÔ$ð%à ×-Ñ-¨aÑ0×5Ñ5‘	ô ˜œ9Ô%Ø�D×%Ñ%Ñ%Ø ×-Ñ-¨aÑ0×5Ñ5‘	à˜!‹O�5àÐØ# d§f¡fÑ,ˆIØ�FŠF�a‰K�Fà˜DŸM™MÑ)Ø˜D×-Ñ-Ñ-Ð-Ð-Ø�M‰M×Ñ˜iÔ(Ü! )¨QÓ/ˆGØ#*ˆD×Ñ˜aÑ Ø�N‰N×!Ñ! 'Ô*à"×/Ò/°D×4EÑ4E×4UÒ4U‘UÔ[eÐfgÔisÓ[tˆ
ä˜	¨jÔ9Ð9øô= ò 	%ð2Ü /°Ñ 6‘IøÜò 2Ù¤°Ô!6¼;ÀuÈQÁxÔ;PÐUZ×U`ÑU`ÓUbÐjn×jwÑjwÑUwØ$)§K¡K£M˜	ùð2úð  §¡Ñ-Ø $�Iúð	%ús7   Á,F Æ	HÆ%	F/Æ.HÆ/AHÇ?HÈHÈHÈHN)rã   rä   rå   Ú__doc__rÎ   Úinline_argsrG  rç   rÏ   rÍ   rB  rB  ¸  s   „ Ùpò!ð ñ):ó ñ):rÏ   rB  c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)Ú_ReplaceSymbolszHelper for ApplyTemplatesc                 ó   — i | _         y rÊ   )Únamesrñ   s    rÍ   rÎ   z_ReplaceSymbols.__init__ò  s	   € Øˆ�
rÏ   c                 óØ   — t        |«      dk(  rJt        |d   t        «      r7|d   j                  | j                  v r| j                  |d   j                     S | j                  d|d «      S )Nr   r   r´   )r  rÓ   r'   r¿   rX  Ú__default__)rÌ   Úcs     rÍ   r´   z_ReplaceSymbols.valueõ  sY   € Üˆq‹6�QŠ;œ: a¨¡d¬FÔ3¸¸!¹¿	¹	ÀTÇZÁZÑ8OØ—:‘:˜a ™dŸi™iÑ(Ð(Ø×Ñ ¨¨DÓ1Ð1rÏ   c                 ó°   — |d   j                   }|| j                  v r'| j                  d| j                  |   g|dd  z   d «      S | j                  d|d «      S )Nr   r¹   r   )r¿   rX  rZ  )rÌ   r[  r¿   s      rÍ   r¹   z_ReplaceSymbols.template_usageú  s_   € Ø�‰t�y‰yˆØ�4—:‘:ÑØ×#Ñ#Ð$4°t·z±zÀ$Ñ7GÐ6HÈ1ÈQÈRÈ5Ñ6PÐRVÓWÐWØ×ÑÐ 0°!°TÓ:Ð:rÏ   N)rã   rä   rå   rS  rÎ   r´   r¹   rç   rÏ   rÍ   rV  rV  ï  s   „ Ù#òò2ó
;rÏ   rV  c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚApplyTemplateszIApply the templates, creating new rules that represent the used templatesc                 óN   — || _         t        «       | _        t        «       | _        y rÊ   )Ú	rule_defsrV  Úreplacerr6  Úcreated_templates)rÌ   r`  s     rÍ   rÎ   zApplyTemplates.__init__  s   € Ø"ˆŒÜ'Ó)ˆŒÜ!$£ˆÕrÏ   c                 ó(  ‡	— |d   j                   Š	|dd  }‰	›ddj                  d„ |D «       «      ›d�}|| j                  vrÇ| j                  j                  |«       ˆ	fd„| j                  D «       \  \  }}}}t        |«      t        |«      k(  sJ |«       ‚t        |«      }t        t        ||«      «      | j                  _
        | j                  j                  |«       | j                  j                  |g |t        |«      f«       t        |«      S )Nr   r   rs   r=   c              3   ó4   K  — | ]  }|j                   –— Œ y ­wrÊ   r?  )Ú.0rÛ   s     rÍ   Ú	<genexpr>z0ApplyTemplates.template_usage.<locals>.<genexpr>  s   è ø€ Ð0FÁ¸A°·µÁùs   ‚ru   c              3   ó4   •K  — | ]  }|d    ‰k(  sŒ|–— Œ y­w)r   Nrç   )re  rù   r¿   s     €rÍ   rf  z0ApplyTemplates.template_usage.<locals>.<genexpr>  s   øè ø€ Ð+V±~°!ÈÈ1ÉÐQUË¬A±~ùs   ƒ‘)r¿   Újoinrb  rO  r`  r  r   ÚdictÚzipra  rX  r!  r÷   r&   )
rÌ   r[  rØ   Úresult_nameÚ_nÚparamsr  ÚoptionsÚresult_treer¿   s
            @rÍ   r¹   zApplyTemplates.template_usage	  sé   ø€ Ø�‰t�y‰yˆØ��ˆuˆÚ"&¨¯©Ñ0FÁÓ0FÕ(FÐGˆØ˜d×4Ñ4Ñ4Ø×"Ñ"×&Ñ& {Ô3Û+V°t·~²~Ó+VÑ)Ñ'ˆR�˜˜wÜ�v“;¤# d£)Ò+Ð1¨TÓ1Ð+Ü" 4›.ˆKÜ"&¤s¨6°4Ó'8Ó"9ˆD�M‰MÔØ�M‰M×#Ñ# KÔ0Ø�N‰N×!Ñ! ;°°KÄÈ'ÓARÐ"SÔTÜ˜;Ó'Ð'rÏ   N)rã   rä   rå   rS  rÎ   r¹   rç   rÏ   rÍ   r^  r^    s   „ ÙSò'ó
(rÏ   r^  c                 ó,   ‡ — t        ˆ fd„|D «       «      S )Nc              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrÊ   )Úrfind)re  r[  Úss     €rÍ   rf  z_rfind.<locals>.<genexpr>  s   øè ø€ Ð+¡7˜aˆq�w‰w�q�z¡7ùs   ƒ)râ   )rs  Úchoicess   ` rÍ   Ú_rfindru    s   ø€ ÜÓ+¡7Ó+Ó+Ð+rÏ   c                 ód  — d}t        | «      }|D ]2  }||z  }|dk(  sŒ	 t        |«      }|dk(  r|dz  }n	|dvr|dz  }||z  }Œ4 |j	                  dd«      j	                  dd	«      }d
|z  }	 t        |«      } | S # t        $ r t        d| z  «      ‚w xY w# t        $ r}t        | |«      ‚d }~ww xY w)Nr©   rK   z/Literal ended unexpectedly (bad escaping): `%r`ú\\ÚUuxnftrz\"rg   ri   z\'z	u'''%s''')ÚiterÚnextÚStopIterationr+   Úreplacer   ÚSyntaxError)rs  Úwrï   r  Ún2Úto_evalÚes          rÍ   Úeval_escapingr‚    sæ   € Ø
€AÜˆQ‹€AÛˆØ	ˆQ‰ˆØ�‹9ðZÜ˜!“W�ð �TŠzØ�V‘‘Ø˜9Ñ$Ø�T‘	�Ø�‰G‰Að ð 	
�	‰	�%˜Ó×%Ñ% c¨5Ó1€Aà˜A‰o€Gð!Ü˜Ó!ˆð €Høô !ò ZÜ"Ð#TÐWXÑ#XÓYÐYðZûô ò !Ü˜1˜aÓ Ð ûð!ús#   ŸA:Á-B Á:BÂ	B/ÂB*Â*B/c                 ól  — t        | t        «      sJ ‚| j                  }t        |d«      dz   }|dkD  sJ ‚||d  }t	        d„ |D «       «      sJ |«       ‚| j
                  dk(  rd|v rt        d«      ‚| j
                  dk(  rd|v rd	|vrt        d
«      ‚|d | }|d   |d   k(  r|d   dv sJ ‚|dd }t        |«      }|dk(  rt        d| z  «      ‚| j
                  dk(  r*|j                  dd«      }t        ||| j                  ¬«      S | j
                  dk(  rt        ||| j                  ¬«      S J d«       ‚)Nz/"r   r   c              3   ó,   K  — | ]  }|t         v –— Œ y ­wrÊ   )Ú	_RE_FLAGS)re  Úfs     rÍ   rf  z&_literal_to_pattern.<locals>.<genexpr><  s   è ø€ Ð-¡u !ˆq”IŒ~¡uùs   ‚r‘   r{   z*You cannot put newlines in string literalsr’   r;  zLYou can only use newlines in regular expressions with the `x` (verbose) flagr  z"/r©   z$Empty terminals are not allowed (%s)rw  rK   )Úrawz:Invariant failed: literal.type not in ["STRING", "REGEXP"])rÓ   r   r´   ru  ÚallÚtyper+   r‚  r|  r   r   )r·   ÚvÚ
flag_startrL  r;  rs  s         rÍ   Ú_literal_to_patternrŒ  6  sV  € Ü�gœuÔ%Ð%Ð%Ø�‰€AÜ˜˜4“ Ñ"€JØ˜Š>Ðˆ>ØˆjˆkˆN€EÜÑ-¡uÓ-Ô-Ð4¨uÓ4Ð-à‡|�|�xÒ D¨A¡IÜÐGÓHÐHà‡|�|�xÒ D¨A¡I°#¸UÑ2BÜð 9ó :ð 	:ð 	
ˆ+ˆ:ˆ€AØˆQ‰4�1�R‘5Š=˜Q˜q™T T™\Ð)Ð)Ø	ˆ!ˆBˆ€Aä�aÓ€AàˆB‚wÜÐAÀGÑKÓLÐLà‡|�|�xÒØ�I‰I�f˜dÓ#ˆÜ˜!˜U¨¯©Ô6Ð6Ø	�‰˜Ò	!Ü˜˜E w§}¡}Ô5Ð5àRÐRÓRˆurÏ   c                   ó   — e Zd Zd„ Zd„ Zy)ÚPrepareLiteralsc                 ó.   — t        dt        |«      g«      S )NrG  )r   rŒ  )rÌ   r·   s     rÍ   r·   zPrepareLiterals.literalY  s   € Ü�)Ô1°'Ó:Ð;Ó<Ð<rÏ   c                 ó,  — |j                   |j                   cxk(  rdk(  sJ ‚ J ‚|j                  dd }|j                  dd }t        t        |«      «      t        t        |«      «      cxk(  rdk(  sJ ‚ J ‚d|›d|›d�}t	        dt        |«      g«      S )Nr‘   r   r  rw   rE   ry   rG  )r‰  r´   r  r‚  r   r   )rÌ   rž   ÚendÚregexps       rÍ   r¸   zPrepareLiterals.range\  sŽ   € Ø�z‰z˜SŸX™XÔ1¨Ò1Ð1Ñ1Ð1Ð1Ø—‘˜A˜bÐ!ˆØ�i‰i˜˜"ˆoˆÜ”= Ó'Ó(¬C´¸cÓ0BÓ,CÔHÀqÒHÐHÑHÐHÑHÚ#¢SÐ)ˆÜ�)œi¨Ó/Ð0Ó1Ð1rÏ   N)rã   rä   rå   r·   r¸   rç   rÏ   rÍ   rŽ  rŽ  W  s   „ ò=ó2rÏ   rŽ  rÑ   c                 ó   — t        | d«      S )Nrç   )r   )r’  Ú	flags_sets     rÍ   Ú_make_joined_patternr•  e  s   € Ü�V˜RÓ Ð rÏ   c                   ó\   — e Zd Zd„ Zdee   defd„Zdee   defd„Zdefd„Zd„ Z	d	„ Z
d
„ Zy)ÚTerminalTreeToPatternc                 ó   — |\  }|S rÊ   rç   )rÌ   ÚpsrP  s      rÍ   rG  zTerminalTreeToPattern.patterni  s   € Ø‰ˆØˆrÏ   ÚitemsrÑ   c                 óÄ   — |st        d«      S t        |«      dk(  r|d   S dj                  d„ |D «       «      }t        ||D �ch c]  }|j                  ’Œ c}«      S c c}w )Nr©   r   r   c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrÊ   ©Ú	to_regexp©re  rï   s     rÍ   rf  z2TerminalTreeToPattern.expansion.<locals>.<genexpr>t  s   è ø€ Ð7±¨A˜!Ÿ+™+Ÿ-±ùó   ‚)r   r  rh  r•  rL  )rÌ   rš  rG  rï   s       rÍ   r°   zTerminalTreeToPattern.expansionm  sZ   € ÙÜ˜b“>Ð!äˆu‹:˜Š?Ø˜‘8ˆOà—'‘'Ñ7±Ó7Ó7ˆÜ# G¹uÓ-E¹u¸!¨a¯g«g¸uÑ-EÓFÐFùÒ-Es   ÁA
Úexpsc                 óÖ   — t        |«      dk(  r|d   S |j                  d„ ¬«       ddj                  d„ |D «       «      z  }t        ||D �ch c]  }|j                  ’Œ c}«      S c c}w )Nr   r   c                 ó`   — | j                    | j                   t        | j                  «       fS rÊ   )Ú	max_widthÚ	min_widthr  r´   ©r;  s    rÍ   Ú<lambda>z2TerminalTreeToPattern.expansions.<locals>.<lambda>}  s!   €  !§+¡+ °·±¨|¼cÀ!Ç'Á'»l¸]Ñ KrÏ   )rø   z(?:%s)rM   c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wrÊ   r�  rŸ  s     rÍ   rf  z3TerminalTreeToPattern.expansions.<locals>.<genexpr>  s   è ø€ Ð&C¹d¸ q§{¡{§}¹dùr   )r  Úsortrh  r•  rL  )rÌ   r¡  rG  rï   s       rÍ   r­   z TerminalTreeToPattern.expansionsw  sc   € Üˆt‹9˜Š>Ø˜‘7ˆNð 	�	‰	ÑKˆ	ÔLà˜cŸh™hÑ&C¹dÓ&CÓCÑDˆÜ# G¹tÓ-D¹t¸!¨a¯g«g¸tÑ-DÓEÐEùÒ-Ds   ÁA&
c                 ó8  — |d d \  }}|dk(  rTt        |«      dk(  rdt        |d   «      z  }nDt        t        |dd  «      \  }}||k  rt        d|||fz  «      ‚d||fz  }nt        |«      dk(  sJ ‚t	        d|j                  «       ›d|›�|j                  «      S )	Né   rm   é   z{%d}r  z{%d,%d}z(?:rq   )r  rÚ   r  r+   r   rž  rL  )rÌ   rØ   rò   r  r  r  s         rÍ   rü   zTerminalTreeToPattern.expr‚  s¨   € à˜˜!�H‰	ˆˆrØ�Š9Ü�4‹y˜AŠ~Øœc $ q¡'›lÑ*‘äœS $ q r (Ó+‘��BØ˜’7Ü&Ð'PÐTYÐ[]Ð_aÐSbÑ'bÓcÐcØ " b Ñ)‘ä�t“9 ’>Ð!�>Ý u§¡Õ'8¹"Ð=¸u¿{¹{ÓKÐKrÏ   c                 ó,   — | j                  |dgz   «      S )NrO   )rü   )rÌ   rü   s     rÍ   r³   zTerminalTreeToPattern.maybe‘  s   € Ø�y‰y˜  ™Ó&Ð&rÏ   c                 ó   — t        d«      ‚)NzBAliasing not allowed in terminals (You used -> in the wrong place))r+   )rÌ   rù   s     rÍ   r¯   zTerminalTreeToPattern.alias”  s   € ÜÐ_Ó`Ð`rÏ   c                 ó   — |d   S rD  rç   ©rÌ   rŠ  s     rÍ   r´   zTerminalTreeToPattern.value—  s   € Ø�‰tˆrÏ   N)rã   rä   rå   rG  r   r   r°   r­   rü   r³   r¯   r´   rç   rÏ   rÍ   r—  r—  h  sY   „ òðG˜t G™}ð G°ó Gð	F˜t G™}ð 	F°ó 	FðL˜Gó Lò'òaórÏ   r—  c                   ó   — e Zd Zd„ Zy)ÚValidateSymbolsc                 ó>   — |\  }t        |t        t        f«      sJ ‚|S rÊ   )rÓ   r0   r'   r°  s     rÍ   r´   zValidateSymbols.valueœ  s"   € Ø‰ˆÜ˜!œd¤F˜^Ô,Ð,Ð,ØˆrÏ   N)rã   rä   rå   r´   rç   rÏ   rÍ   r²  r²  ›  s   „ órÏ   r²  c                 ó6   — t        d«      j                  | «      S )z#Deepcopy tree `t` without recursionF)r6   r!  ©rù   s    rÍ   Únr_deepcopy_treer¶  ¢  s   € ä# EÓ*×4Ñ4°QÓ7Ð7rÏ   c            	       óî   — e Zd ZU eeeeeef   f      ed<   eeeeedf   ee	f      ed<   ee   ed<   deeeeedf   ee	f      deeeeeef   f      dee   ddfd„Z
dZdeee   ee   ee   f   fd	„Zy)
ÚGrammarÚ	term_defs.r`  r£   rÑ   Nc                 ó.   — || _         || _        || _        y rÊ   ©r¹  r`  r£   )rÌ   r`  r¹  r£   s       rÍ   rÎ   zGrammar.__init__­  s   € Ø"ˆŒØ"ˆŒØˆ�rÏ   r»  c                 ó¬  ‡ ‡‡,‡-— ‰ j                   D ���cg c]  \  }\  }}|t        |«      |ff‘Œ }}}}‰ j                  D ����cg c]  \  }}}}||t        |«      |f‘Œ }}}}}|D ]Q  \  }	\  }
}|
€Œt        |
j	                  d«      «      }t        |«      dk(  sŒ5|d   j                  rŒEt        d|	z  «      ‚ t        «       t        «       z  }|D �	�
�cg c]&  \  }	\  }
}|
rt        |	|j                  |
«      |«      ‘Œ( }}
}	}t        |«      }t        «       t        «       z  |z  }|t        |«      z  }t        «       }g }d}|t        |«      k  r”||   \  }	}}}|dz  }t        |«      dk7  rŒ,|r|j                   rt#        d¬«      nd }||_        |	|_        ||_        |j                  |«      }|j                  |«      }|j)                  |	||f«       |t        |«      k  rŒ”||j*                  z  }t        |«      t        |D �	��ch c]  \  }	}}|	’Œ
 c}}}	«      k(  sJ d«       ‚t-        «       }t/        «       }g }|D �]5  }|\  }	}}|j1                  |«       |j                  |«      }t3        |«      D ]ü  \  }\  }} | r#|	j5                  d«      rt        d	|	›d
| ›d�«      ‚t7        d„ |D «       «      }!t9        |!«      r8t;        |«      xs
 t#        «       }"|!|"_        |D �#cg c]  }#|#t>        k7  sŒ|#‘Œ }}#n|}"|D ]J  }$tA        |$tB        «      sJ ‚|$jD                  sŒ"|"sŒ%|"j                   sŒ2tA        |$tF        «      sJ ‚d|$_$        ŒL tK        tM        |	«      ||| |"«      }%|j)                  |%«       Œþ �Œ8 t        tO        |«      «      t        |«      k7  rÀtQ        |d„ «      }&|&jS                  «       D ]Œ  }'t        |'«      dkD  sŒ|'d   jT                  r$t        ddjW                  d„ |'D «       «      z  «      ‚t        |'D �(ch c]%  }(|(jX                  |(jZ                  |(j\                  f’Œ' c}(«      t        |'«      k(  rŒŒJ ‚ t        t_        |«      «      }	 t        |«      })|D �(�*ch c]4  }(|(jT                  D ]#  }*tA        |*tL        «      r|*|(j`                  k7  r|*’Œ% Œ6 c}*}(Š,‰,|D �*ch c]  }*tM        |*«      ’Œ c}*z  Š,tc        |ˆ,fd„«      \  }}+|+D ]  }(te        jf                  d|(«       Œ t        |«      |)k(  rnŒ¨‰dk7  r�|D �(�ch c]/  }(|(jT                  D ]  }tA        |tF        «      r|jh                  ’Œ  Œ1 c}}(Š-tc        |ˆ ˆˆ-fd„«      \  }}+|+r.te        jf                  d|+D �cg c]  }|jh                  ‘Œ c}«       ||‰ jj                  fS c c}}}w c c}}}}w c c}}
}	w c c}}}	w c c}#w c c}(w c c}*}(w c c}*w c c}}(w c c}w )Nr°   r   r   zTerminals cannot be empty (%s)TrË   zWhoops, name collisionr_   zRule za is marked for expansion (it starts with an underscore) and isn't allowed to have aliases (alias=rq   c              3   ó.   K  — | ]  }|t         k(  –— Œ y ­wrÊ   )rÖ   )re  r;  s     rÍ   rf  z"Grammar.compile.<locals>.<genexpr>ù  s   è ø€ Ð%C¹°A a¬¥i¹ùs   ‚Fc                 ó   — | S rÊ   rç   r¦  s    rÍ   r§  z!Grammar.compile.<locals>.<lambda>  s   € ¹ArÏ   zXRules defined twice: %s

(Might happen due to colliding expansion of optionals: [] or ?)r©   c              3   ó&   K  — | ]	  }d |z  –— Œ y­w)z
  * %sNrç   rŸ  s     rÍ   rf  z"Grammar.compile.<locals>.<genexpr>  s   è ø€ Ð4RÉTÈ°ZÀ!µ^ÉTùs   ‚c                 ó    •— | j                   ‰v S rÊ   )Úorigin)ÚrÚ
used_ruless    €rÍ   r§  z!Grammar.compile.<locals>.<lambda>   s   ø€ ÈQÏXÉXÐYcÑMcrÏ   zUnused rule: %srG   c                 ót   •— | j                   ‰v xs( | j                   ‰j                  v xs | j                   ‰v S rÊ   )r¿   r£   )rù   rÌ   Úterminals_to_keepÚ
used_termss    €€€rÍ   r§  z!Grammar.compile.<locals>.<lambda>+  sO   ø€ À1Ç6Á6ÈZÐCWò  DPÐ[\×[aÑ[aÐei×epÑepÐ[pò  DPÐtu×tzÑtzð  Pð  uPð  DPrÏ   zUnused terminals: %s)6r¹  r¶  r`  ÚlistÚ	find_datar  r,  r+   rŽ  r—  r   r!  rB  r²  r^  ré   rÈ   r#   rð   rî   r÷   rì   r9  r%  r-  r+  rÔ   ÚtupleÚanyr   Úempty_indicesrÖ   rÓ   r'   Úis_termr%   rÕ   r$   r&   r6  r)   Úvaluesr°   rh  r¯   Úorderrn  r   rÁ  r   r   Údebugr¿   r£   ).rÌ   rž   rÅ  r  rù   rP  r¹  Úor`  r¿   Ú	term_treerª   r­   ÚtransformerrE  Úanon_tokens_transfÚebnf_to_bnfÚrulesrï   rm  Ú	rule_treern  rð   r  ÚresÚ_tÚ_oÚrule_tree_to_textÚsimplify_ruleÚcompiled_rulesÚrule_contentr°   r¯   rË  Úexp_optionsr;  rÐ   r¡   Ú
duplicatesÚdupsrÂ  r[  rs  ÚunusedrÃ  rÆ  s.   ` `                                         @@rÍ   ÚcompilezGrammar.compile´  sß  û€ ð EIÇNÂNÕSÁN±y°q¹&¸1¸a�aÔ*¨1Ó-¨qÐ1Ò2ÀNˆ	ÒSØFJÇnÂnÖUÁn¹
¸¸1¸aÀ�a˜Ô,¨QÓ/°Ò3Ànˆ	ÓUó ,5Ñ'ˆDÑ'�9˜hØÐ ØÜ˜i×1Ñ1°+Ó>Ó?ˆJÜ�:‹ !Ó#¨J°q©M×,BÓ,BÜ"Ð#CÀdÑ#JÓKÐKð ,5ô &Ó'Ô*?Ó*AÑAˆá8AõPÙ8AÑ4˜Ñ4 	¨8ÁYô !  {×'<Ñ'<¸YÓ'GÈÕRØ8Að 	ò Pô 2°)Ó<ÐÜ%Ó'¬/Ó*;Ñ;Ð>PÑPˆð 	”~ iÓ0Ñ0ˆô "“mˆØˆØˆØ”#�i“.Ò Ø/8¸©|Ñ,ˆD�&˜) WØ�‰FˆAÜ�6‹{˜aÒØÙ@GÈG×LcÒLcœ;°tÕ<ÐimˆLØ'3ˆKÔ$Ø!%ˆKÔØ.:ÐÔ+Ø×(Ñ(¨Ó3ˆDØ#×-Ñ-¨dÓ3ˆCØ�L‰L˜$  WÐ-Ô.ð ”#�i“.Ó ð 	�×&Ñ&Ñ&ˆä�5‹zœS¹5Õ!A¹5©<¨4°°R¢$¸5Ó!AÓBÒBÐ\ÐD\Ó\ÐBô +Ó,Ðä,Ó.ˆØ%'ˆÜ!ˆLØ".ÑˆD�$˜Ø×Ñ Ô%Ø*×4Ñ4°TÓ:ˆJä)2°:Ö)>Ñ%�Ñ%�I˜uÙ˜TŸ_™_¨SÔ1Ý&ò  X\ò  ^cð  (dó  eð  eä %Ñ%C¹Ó%CÓ C�Ü�}Ô%Ü"& w£-Ò"@´;³=�KØ0=�KÔ-Ù,5Ó C©I q¸¼F»¢¨I�IÑ Cà")�Kã$�CÜ% c¬6Ô2Ð2Ð2Ø—{“{¢{°{×7RÓ7RÜ)¨#¬xÔ8Ð8Ð8Ø).˜�ð	 %ô
 œK¨Ó-¨y¸!¸UÀKÓP�Ø×%Ñ% dÕ+ò% *?ð "ô4 Œs�>Ó"Ó#¤s¨>Ó':Ò:Ü! .±+Ó>ˆJØ"×)Ñ)Ö+�Ü�t“9˜q“=Ø˜A‘w×(Ò(Ü*ð  ,HØ-/¯W©WÑ4RÉTÓ4RÓ-Rñ,Só Tð Tô ÁtÓLÁtÀ! §¡¨!¯'©'°1·9±9Ò =ÀtÑLÓMÔQTÐUYÓQZÓZÐZÐZð ,ô "¤*¨^Ó"<Ó=ˆNð Ü�NÓ#ˆAÙ%3ô /¡^ Ø%&§[¤[ Ü)¨!¬[Ô9Ø ! Q§X¡X¢ò Ø%0ð  ^ò /ˆJð ±5Ó9±5¨aœ; q�>°5Ñ9Ñ9ˆJÜ%2°>ÓCcÓ%dÑ"ˆN˜FÛ�Ü—‘Ð.°Õ2ð ä�>Ó" aÒ'Øð ð  Ò#Ù*8ô =©. QØ*+¯+¬+ QÜ$.¨q´(Ô$;ð Ÿ&›&Ø*5ð !¨.ò =ˆJô !.¨iõ  :Pó  !QÑˆI�vÙÜ—‘Ð3ÁfÓ5MÁfÀ°a·f³fÀfÑ5MÔNà˜.¨$¯+©+Ð5Ð5ùôq TùÝUùô PùôB "Bùò( !Dùò,  Mùó/ùò :ùó=ùò
 6NsA   •VÁV 
Ã+V(ÈV/Ë&V6Ë5V6Ð*V;
Ñ,9W Ò.WÔ4WÕ0W
)rã   rä   rå   r   r	   r#  r0   rÚ   Ú__annotations__r#   rÎ   Ú__serialize_fields__r   r$   râ  rç   rÏ   rÍ   r¸  r¸  §  s	  … à�E˜#˜u T¨3 YÑ/Ð/Ñ0Ñ1Ó1Ø�E˜#˜u S¨# X™°°kÐAÑBÑCÓCØ�‰IÓð $ u¨S°%¸¸S¸±/À4ÈÐ-TÑ'UÑ"Vð ÐcgÐhmÐnqÐsxÐy}ð  @Cð  zCñ  tDð  oDñ  iEñ  dFð ð  PTð  UXñ  PYð ð  ^bó ð
 >Ðð{6°5¸¸kÑ9JÈDÐQUÉJÐX\Ð]`ÑXaÐ9aÑ3bô {6rÏ   r¸  ÚPackageResourcezpkg_name pathc                   óx   — e Zd ZU dZeed<   ee   ed<   ddedee   ddfd„Zd„ Zde	dee
f   d	edee
ef   fd
„Zy)ÚFromPackageLoadera¶  
    Provides a simple way of creating custom import loaders that load from packages via ``pkgutil.get_data`` instead of using `open`.
    This allows them to be compatible even from within zip files.

    Relative imports are handled, so you can just freely use them.

    pkg_name: The name of the package. You can probably provide `__name__` most of the time
    search_paths: All the path that will be search on absolute imports.
    Úpkg_nameÚsearch_pathsrÑ   Nc                 ó    — || _         || _        y rÊ   )rè  ré  )rÌ   rè  ré  s      rÍ   rÎ   zFromPackageLoader.__init__C  s   € Ø ˆŒØ(ˆÕrÏ   c                 óf   — t        | «      j                  ›d| j                  ›d| j                  ›d�S )Nro   ú, rq   )r‰  rã   rè  ré  rñ   s    rÍ   Ú__repr__zFromPackageLoader.__repr__G  s#   € Ü# D›z×2Ó2°D·M³MÀ4×CTÓCTÐUÐUrÏ   Ú	base_pathÚgrammar_pathc                 óØ  — |€| j                   }n@t        |t        «      r|j                  | j                  k7  r
t	        «       ‚|j
                  g}d }|D ]q  }t        j
                  j                  ||«      }	 t        j                  | j                  |«      }t        | j                  |«      |r|j                  «       fc S dfc S  t	        d«      |‚# t        $ r}|}Y d }~Œ�d }~ww xY w)Nr©   z"Cannot find grammar in given paths)ré  rÓ   rå  rè  ÚIOErrorÚpathÚosrh  ÚpkgutilÚget_dataÚdecode)	rÌ   rî  rï  Úto_tryÚerrrò  Ú	full_pathÚtextr�  s	            rÍ   Ú__call__zFromPackageLoader.__call__J  sÙ   € ØÐØ×&Ñ&‰Fô ˜i¬Ô9¸Y×=OÑ=OÐSW×S`ÑS`Ò=`ä“i�Ø—n‘nÐ%ˆFàˆÛˆDÜŸ™Ÿ™ T¨<Ó8ˆIðbÜ(/×(8Ñ(8¸¿¹È	Ó(R�ô
 ' t§}¡}°iÓ@ÑTXÀ4Ç;Á;Ã=ÐaÒaÐ^`ÐaÒað ô Ð:Ó;ÀÐDøô ò Ø�Üûðús   Á8 CÃ	C)ÃC$Ã$C)))r©   )rã   rä   rå   rS  r#  rã  r   rÎ   rí  r
   rå  r	   rû  rç   rÏ   rÍ   rç  rç  5  st   … ñð ƒMØ˜3‘-Óñ) ð )°H¸S±Mð )ÈTó )òVðE %¨¨c°?Ð(BÑ"Cð EÐSVð EÐ[`ÐapÐruÐauÑ[vô ErÏ   rç  Úlarkc           	      ó’  — 	 d}| j                  «       D ]–  \  }}|€Œ	|j                  d«      D ]z  }|j                  \  }t        |t        «      rt        d|›d|›d�«      ‚t        |t        «      r&	 | |j                     }|€J ‚||j                  d<   d}Œit        |t        «      rŒzJ ‚ Œ˜ |snŒ¯| j                  «       D ]Z  \  }}|sŒ	|j                  D ]C  }|j                  «       D �	cg c]  }	t        |	«      ‘Œ }
}	t        |«      |
v sŒ7t        d	|z  «      ‚ Œ\ y # t        $ r t        d|j                  z  «      ‚w xY wc c}	w )
NTFr´   z'Rules aren't allowed inside terminals (z in rq   z!Terminal used but not defined: %sr   zNRecursion in terminal '%s' (recursion is only allowed in rules, not terminals))rš  rÈ  r,  rÓ   r&   r+   r%   r¿   rÿ   r0   Úiter_subtreesÚid)Ú	term_dictÚchangedr¿   Ú
token_treeÚexpÚitemÚ
term_valuer¢   r.  r;  Úidss              rÍ   Úresolve_term_referencesr  f  sY  € ð ØˆØ )§¡Ö 1ÑˆD�*ØÐ!ØØ!×+Ñ+¨GÖ4�ØŸ™‘�Ü˜d¤KÔ0Ý&Ò]aÒcgÐ'hÓiÐiÜ ¤hÔ/ð\Ø%.¨t¯y©yÑ%9˜
ð &Ð1Ð1Ð1Ø&0�C—L‘L ‘OØ"‘Gä% d¬DÕ1Ð1Ð1ñ 5ð !2ñ" Øð) ð,  —o‘oÖ'‰
ˆˆdÚØŸœ�Ø&+×&9Ñ&9Ô&;Ó<Ñ&; ”r˜!•uÐ&;�Ð<Ü�d“8˜s’?Ü&Ð'wÐz~Ñ'~ÓÐñ 'ñ (øô $ò \Ü*Ð+NÐQU×QZÑQZÑ+ZÓ[Ð[ð\üò =s   Á2DÃ+EÄ"Ec                 ó”   — t        | t        «      sJ ‚| j                  «       rt        | | j	                  d«      ¬«      S t        | «      S ©Nr_   rK  )rÓ   r#  Úisupperr%   rÔ   r&   ©rs  s    rÍ   Úsymbol_from_strcaser  ˆ  s:   € Ü�aœÔÐÐØ89¿	¹	¼Œ8�A !§,¡,¨sÓ"3Ô4ÐWÌÐUVËÐWrÏ   c                   ó   — e Zd Zd„ Zd„ Zy)ÚPrepareGrammarc                 óL   — t        t        |«      |j                  d«      ¬«      S r	  )r%   r#  rÔ   ©rÌ   r¿   s     rÍ   rµ   zPrepareGrammar.terminalŽ  s   € Üœ˜D›	¨d¯o©o¸cÓ.BÔCÐCrÏ   c                 ó,   — t        |j                  «      S rÊ   )r&   r´   r  s     rÍ   r¶   zPrepareGrammar.nonterminal‘  s   € Ü˜4Ÿ:™:Ó&Ð&rÏ   N)rã   rä   rå   rµ   r¶   rç   rÏ   rÍ   r  r  Œ  s   „ òDó'rÏ   r  c                 ó´   — | j                   dk(  sJ ‚| j                  d«      D ��ch c]%  }|j                  d„ «      D ]  }|j                  ’Œ Œ' c}}S c c}}w )Nr­   r°   c                 ó"   — t        | t        «      S rÊ   )rÓ   r'   rµ  s    rÍ   r§  z$_find_used_symbols.<locals>.<lambda>˜  s   € ¬Z¸¼6Ô-BrÏ   )r(  rÈ  Úscan_valuesr¿   )r  r;  rù   s      rÍ   Ú_find_used_symbolsr  •  sa   € Ø�9‰9˜Ò$Ð$Ð$Ø ŸN™N¨;Ô7ô EÑ7�qØ—]‘]Ñ#BÖC�ð �F‹FØCð Ð7ò Eð Eùó Es   ¦*Ac                  óR  — 	 t         j                  S # t        $ �rŠ t        j	                  «       D � �cg c]  \  } }t        | t        |«      «      ‘Œ nc c}} w }} }t        j	                  «       D � �cg c]2  \  } }| j                  d«      |t        | j                  d«      ¬«      f‘Œ4 nc c}} w }} }|D ������	cg c]\  \  }}}t        |«      D ]H  \  }}t        t        |«      |j                  «       D �	cg c]  }	t        |	«      ‘Œ nc c}	w c}	|d |«      ‘ŒJ Œ^ n
c c}	}}}}}w }}}}}}}	t!        |t"        «      j%                  «       }
dd l}t)        ||g d¢«      }t+        ||
dg«      }d|_        d|_        t1        ||d «      t         _        t         j                  cY S w xY w)NrO   )Úexpand1r   )r•   r–   rL   rž   ÚbasicÚlalr)Ú_get_parserÚcacheÚAttributeErrorÚ	TERMINALSrš  r   r   ÚRULESÚlstripr#   rÔ   r+  r$   r&   Úsplitr  r   r   Úcreate_callbackÚrer!   r"   Ú
lexer_typeÚparser_typer    )r¿   r´   rE  r;  rÕ  rÂ  ÚxsrÐ  rï   rs  Úcallbackr"  Ú
lexer_confÚparser_confs                 rÍ   r  r  ›  s{  € ð!Ü× Ñ Ð øÜó !ÜLUÏOÉOÔL]Ô^ÑL]¹[¸TÀ5”[ ¤y°Ó'7Õ8ÑL]ùÓ^ˆ	Ñ^ô  %Ÿ{™{œ}ô.Ù,‘G�D˜!ð —+‘+˜cÓ" A¤{¸4¿?¹?È3Ó;OÔ'PÒQÙ,ùó.ˆñ .ñ "'÷Bð BÙ!&‘X�Q˜˜A´9¸R¶=©4¨1¨aô ”k !“nÀqÇwÁwÄyÓ&QÁyÀ!Ô':¸1Õ'=ÁyùÔ&QÐSTÐVZÐ\]Õ^Ø3@ð _Ù!&ù÷Bˆõ Bô $ E¬2Ó.×>Ñ>Ó@ˆÛÜ˜y¨"Ò.LÓMˆ
Ü  ¨°7°)Ó<ˆØ 'ˆ
ÔØ"(ˆÔÜ+¨J¸ÀTÓJŒÔÜ× Ñ Ò ð!ús?   ‚ ’!F&³AÁ!F&Á37B+Â*F&Â=;DÃ8DÄ
DÄBF&Æ%F&zIncorrect type of valueza: 1
zUnclosed parenthesisza: (
zUnmatched closing parenthesis)za: )
za: [)
za: (]
z5Expecting rule or terminal definition (missing colon))za
zA
za->
zA->
za A
z#Illegal name for rules or terminalszAa:
zAlias expects lowercase namez
a: -> "a"
zUnexpected colon)za::
za: b:
za: B:
za: "a":
zMisplaced operator)za: b??za: b(?)za:+
za:?
za:*
za:|*
z;Expecting option ("|") or a new rule or terminal definitionza:a
()
z"Terminal names cannot contain dotszA.B
z%Expecting rule or terminal definitionz"a"
z%import expects a namez%import "a"
z%ignore expects a valuez%ignore %import
c                 óZ   — |j                  | t        d¬«      }|r|S d|j                  v ryy )NT)Úuse_acceptsr‘   zExpecting a value)Úmatch_examplesÚGRAMMAR_ERRORSÚexpected)Úparser�  Úerrors      rÍ   Ú_translate_parser_exceptionr0  ¿  s5   € Ø× Ñ  ¬ÀDÐ ÓIˆÙØˆLØ˜Ÿ™Ñ#Ø&ð $rÏ   c           
      óÐ  — 	 t        «       j                  | dz   |«      }t        «       j                  |«      S # t        $ r<}|j                  | «      }t	        d|j
                  |j                  ||fz  «      ‚d }~wt        $ ra}|j                  | «      }t        t        «       j                  |«      }|r*t	        |›d|j
                  ›d|j                  ›d|›�«      ‚‚ d }~ww xY w)Nr{   z1Unexpected input at line %d column %d in %s: 

%sz
, at line z column z

)r  r.  r,   Úget_contextr+   ÚlineÚcolumnr-   r0  r  r!  )rú  r¿   rž   r  r�  Úcontextr/  s          rÍ   Ú_parse_grammarr6  Æ  sÏ   € ðÜ‹}×"Ñ" 4¨$¡;°Ó6ˆô Ó×%Ñ% dÓ+Ð+øô  ò >Ø—-‘- Ó%ˆÜÐPØŸF™F A§H¡H¨d°GÐ<ñ=ó >ð 	>ûäò Ø—-‘- Ó%ˆÜ+¬K«M×,?Ñ,?ÀÓCˆÙÜÂ5È!Ï&Ë&ÐRS×RZÓRZÑ\cÐdÓeÐeØûðús"   ‚8 ¸	C%Á7A8Á8C%ÂAC Ã C%c                 ó  — t        | t        «      rgt        t        «       j                  | «      }|r|S dj                  | j                  xs | j                  «      }dt        | j                  «      ›d|›d�S t        | «      S )Nrì  zUnexpected token z. Expected one of: {ru   )
rÓ   r-   r0  r  r.  rh  Úacceptsr-  r#  Útoken)r/  Úerror2r-  s      rÍ   Ú_error_reprr;  Ö  sb   € Ü�%œÔ)Ü,¬[«]×-@Ñ-@À%ÓHˆÙØˆMØ—9‘9˜UŸ]™]Ò<¨e¯n©nÓ=‰Ü?BÀ5Ç;Á;Õ?OÒQYÐZÐZä�5‹zÐrÏ   c                 óT   — d„ }t        d| fg|«      D ]  \  }} ||«      sŒ||fc S  y )Nc              3   ó®   K  — | \  }}|j                  «       D ]*  }t        |d«      }	 |j                  |«      }||fz   |f–— Œ, y # t        $ r Y Œ9w xY w­w)Nr©   )rt  r   Ú
feed_tokenr.   )Únoderò  rP  Úchoicerù   Únew_ps         rÍ   Úexpandz*_search_interactive_parser.<locals>.expandá  sd   è ø€ Ø‰ˆˆaØ—i‘i–kˆFÜ�f˜bÓ!ˆAð.ØŸ™ Q›�ð ˜f˜YÑ&¨Ð-Ó-ñ "øô ò Ùðüs'   ‚%A¨A¹AÁ	AÁAÁAÁArç   )r   )Úinteractive_parserÚ	predicaterB  rò  rP  s        rÍ   Ú_search_interactive_parserrE  à  s8   € ò	.ô " BÐ(:Ð#;Ð"<¸fÖE‰ˆˆaÙ�Q�<Ø˜�7ŠNñ FrÏ   rú  c                 óÜ   ‡— g Šˆfd„}t        «       j                  | dz   ||¬«      }t        ‰d„ «      }|j                  «       D �cg c]  }|d   ‘Œ	 c}Š‰D ]  }d |d   _        Œ ‰S c c}w )Nc                 ó0  •— ‰j                  | t        | «      f«       t        | j                  j	                  «       d„ «      \  }}|D ]'  }| j                  j                  t        |d«      «       Œ) | j                  j                  t        dd«      «       y)Nc                 ó&   — d| j                  «       v S )Nr“   )rt  )rP  s    rÍ   r§  z7find_grammar_errors.<locals>.on_error.<locals>.<lambda>ö  s   € ÐbgÐkl×ktÑktÓkvÑbvrÏ   r©   r“   r{   T)r÷   r;  rE  rC  Úas_immutabler>  r   )r�  Ú
token_pathr_   Ú
token_typeÚerrorss       €rÍ   Úon_errorz%find_grammar_errors.<locals>.on_errorò  s}   ø€ Ø�‰�qœ+ a›.Ð)Ô*ô 3°1×3GÑ3G×3TÑ3TÓ3VÑXvÓw‰ˆ
�AÛ$ˆJØ× Ñ ×+Ñ+¬E°*¸bÓ,AÕBð %à	×Ñ×'Ñ'¬¨e°TÓ(:Ô;ØrÏ   r{   )rM  c                 ó    — | d   j                   S rD  )r3  )r�  s    rÍ   r§  z%find_grammar_errors.<locals>.<lambda>þ  s   € °°!±·	²	rÏ   r   )r  r.  r)   rÍ  rC  )rú  rž   rM  Ú_treeÚerrors_by_lineÚelr�  rL  s          @rÍ   Úfind_grammar_errorsrR  ð  s|   ø€ Ø€Fôô ‹M×Ñ  t¡¨U¸XÐÓF€Eä˜fÑ&9Ó:€NØ,×3Ñ3Ô5Ó6Ñ5˜ˆb�‹eÐ5Ñ6€FãˆØ"&ˆˆ!‰Õð à€Mùò	 7s   ÁA)c                 ó   ‡ ‡‡— ˆˆˆ fd„}|S )Nc                 óf   •— | ‰v r‰|    } n| d   dk(  rd‰›d| dd  ›�} n‰›d| ›�} ‰� ‰| «      } | S )Nr   r_   Ú__r   rç   )rs  r4  Úbase_manglerî   s    €€€rÍ   Úmanglez_get_mangle.<locals>.mangle  sL   ø€ Ø�‰<Ø˜‘
‰Aà�‰t�s‹{Ú!'¨¨1¨2©Ð/‘â &©Ð*�ØÐ"Ù˜A“ˆAØˆrÏ   rç   )rî   r4  rV  rW  s   ``` rÍ   Ú_get_manglerX    s   ú€ ö
ð €MrÏ   c                 óæ   — |€| S t        | «      } | j                  «       D ]N  }t        |j                  «      D ]4  \  }}t	        |t
        «      sŒ|j                  |«      |j                  |<   Œ6 ŒP | S rÊ   )r   rþ  r+  r,  rÓ   r'   Úrenamed)r  rW  rù   rï   r[  s        rÍ   Ú_mangle_definition_treer[    sf   € Ø€~Øˆ
Ü
�3‹-€CØ×ÑÖ ˆÜ˜aŸj™jÖ)‰DˆAˆqÜ˜!œVÕ$Ø !§	¡	¨&Ó 1�—
‘
˜1’ñ *ð !ð
 €JrÏ   c           	      ój  — | j                   r5| j                   \  }d|v }|r|j                  d«      rt        d«      ‚d|v }nd}d}|j                   r|j                   \  }t        |«      }	nd }	|�#|j                   D �
cg c]  }
|
j                  ‘Œ }}
|||t        |||	|r|¬«      fS d ¬«      fS c c}
w )NrO   r_   z4Inlined rules (_rule) cannot use the ?rule modifier.rQ   F)rª   Útemplate_source)r,  rÔ   r+   rÚ   r´   r#   )Úmodifiers_treer¿   rm  Úpriority_treer­   Úmr  rÈ   rP  rª   rù   s              rÍ   Ú_make_rule_tuplera    sÕ   € Ø×ÒØ×$Ñ$‰ˆØ˜�(ˆÙ�t—‘ sÔ+ÜÐUÓVÐVØ ˜(‰àˆØˆà×ÒØ×#Ñ#‰ˆÜ�q“6‰àˆàÐØ#)§?¢?Ó3¡?˜a�!—'“' ?ˆÐ3à�˜¤[°À'ÐT\ÙJPÀ$ô&]ð ]ð ]ØVZô&]ð ]ð ]ùò 4s   Á>B0c                   ó   — e Zd Zdd„Zy)Ú
DefinitionNc                 óN   — || _         || _        t        |«      | _        || _        y rÊ   )rÌ  r  rÉ  rm  rn  )rÌ   rÌ  r  rm  rn  s        rÍ   rÎ   zDefinition.__init__8  s"   € ØˆŒØˆŒ	Ü˜F“mˆŒØˆ�rÏ   ©rç   N)rã   rä   rå   rÎ   rç   rÏ   rÍ   rc  rc  7  s   „ ôrÏ   rc  c                   ón  — e Zd ZU eed<   eeeef      ed<   e	eef   ed<   e	ee
f   ed<   ee   ed<   ddedeeeeef         dee	eef      ddfd	„Zd
„ Zd„ Zd ddœd„Zd d„Zd„ Zd„ Zd„ Zd!dededeeegef      ddfd„Zd„ Zd"deedf   dee   de	eef   deeegef      ddf
d„Zd#d„Zdefd„Zy)$ÚGrammarBuilderÚglobal_keep_all_tokensÚimport_pathsÚ
used_filesÚ_definitionsÚ_ignore_namesFNrÑ   c                 óZ   — || _         |xs g | _        |xs i | _        i | _        g | _        y rÊ   )rh  ri  rj  rk  rl  )rÌ   rh  ri  rj  s       rÍ   rÎ   zGrammarBuilder.__init__G  s3   € Ø&<ˆÔ#Ø(Ò.¨BˆÔØ$Ò*¨ˆŒà35ˆÔØ(*ˆÕrÏ   c                 óà   — i }t        |d¬«      D ]B  \  }}|dk(  rdn
t        |«      }||d|z   <   d|   x|d|z   <   }|j                  «       |d|z   <   ŒD t         |j                  di |¤Ž«      ‚)	Nr   ©rž   r©   r¿   )r¡   rµ   r‰  ÚTyperç   )r+  r#  Útitler+   Úformat)	rÌ   rÌ  ÚmsgrX  rØ   rï   r¿   ÚpostfixÚlowercase_types	            rÍ   Ú_grammar_errorzGrammarBuilder._grammar_errorO  sˆ   € ØˆÜ  ¨a×0‰GˆAˆtØ šF‘b¬¨A«ˆGØ%)ˆD�˜'Ñ!Ñ"Ø6JÈ7Ñ6SÐSˆD�˜'Ñ!Ñ" ^Ø%3×%9Ñ%9Ó%;ˆD�˜'Ñ!Ò"ð	 1ô
 ˜:˜3Ÿ:™:Ñ-¨Ñ-Ó.Ð.rÏ   c                 óÞ   — |r/|€d}|S t        |t        «      st        dt        |«      ›�«      ‚|S |€t	        «       }nt        |t        «      st        d«      ‚| j
                  rd|_        |S )Nr   z@Terminal require a single int as 'options' (e.g. priority), got z1Rules require a RuleOptions instance as 'options'T)rÓ   rÚ   r+   r‰  r#   rh  rÈ   )rÌ   rÌ  rn  s      rÍ   Ú_check_optionszGrammarBuilder._check_optionsX  sx   € ÙØˆØ�ð ˆô   ¬Ô-Ý"ÔkoÐpwÔkxÐ#zÓ{Ð{ð ˆð ˆÜ%›-‘Ü ¬Ô5Ü"Ð#VÓWÐWØ×*Ò*Ø*.�Ô'ØˆrÏ   )r¦   c          	      ó  — || j                   v r|s)| j                  |d|«       n|r| j                  |d|«       |j                  d«      r| j                  |d|«       t        |||| j	                  ||«      «      | j                   |<   y )Nz&{Type} '{name}' defined more than oncez+Cannot override a nonexisting {type} {name}rU  zDNames starting with double-underscore are reserved (Error at {name}))rk  rv  rÔ   rc  rx  )rÌ   r¿   rÌ  r  rm  rn  r¦   s          rÍ   Ú_definezGrammarBuilder._defineh  sˆ   € Ø�4×$Ñ$Ñ$ÙØ×#Ñ# GÐ-UÐW[Õ\ÙØ×Ñ Ð)VÐX\Ô]à�?‰?˜4Ô Ø×Ñ Ð)oÐquÔvä",¨W°c¸6À4×CVÑCVÐW^Ð`gÓChÓ"iˆ×Ñ˜$ÒrÏ   c                 óÎ  — || j                   vr| j                  |d|«       | j                   |   }||j                  k7  r| j                  |d|«       t        |«      |j                  k7  r| j                  |d|«       |j
                  €| j                  |d|«       |j
                  }t        |t        «      r|j                  dk(  sJ ‚|j                  j                  d|«       y )Nz6Can't extend {type} {name} as it wasn't defined beforezHCannot extend {type} {name} - one is a terminal, while the other is not.z6Cannot extend {type} with different parameters: {name}z,Can't extend {type} {name} - it is abstract.r­   r   )rk  rv  rÌ  rÉ  rm  r  rÓ   r0   r(  r,  Úinsert)rÌ   r¿   rÌ  r  rm  rn  ÚdÚbases           rÍ   Ú_extendzGrammarBuilder._extendt  sÏ   € Ø�t×(Ñ(Ñ(Ø×Ñ Ð)aÐcgÔhà×Ñ˜dÑ#ˆà�a—i‘iÒØ×Ñ Ð)sÐuyÔzÜ�‹=˜AŸH™HÒ$Ø×Ñ Ð)aÐcgÔhà�6‰6ˆ>Ø×Ñ Ð)WÐY]Ô^ð �v‰vˆä˜$¤Ô%¨$¯)©)°|Ò*CÐCÐCØ�‰×Ñ˜Q Õ$rÏ   c                 ó¢  — t        |t        «      r| j                  j                  |«       y t        |t        «      sJ ‚|}|j
                  dk(  r®t        |j                  «      dk(  r–|j                  \  }|j
                  dk(  ryt        |j                  «      dk(  ra|j                  \  }|j
                  dk(  rD|j                  \  }t        |t        «      r&| j                  j                  |j                  «       y dt        | j                  «      z  }| j                  j                  |«       t        d|t        ¬«      | j                  |<   y )Nr­   r   r°   r´   z__IGNORE_%dT)rn  )rÓ   r#  rl  r÷   r0   r(  r  r,  r%   r¿   rc  r(   rk  )rÌ   Úexp_or_namerù   Út2r  r¿   s         rÍ   Ú_ignorezGrammarBuilder._ignoreˆ  s  € Ü�k¤3Ô'Ø×Ñ×%Ñ% kÕ2ä˜k¬4Ô0Ð0Ð0ØˆAØ�v‰v˜Ò%¬#¨a¯j©j«/¸QÒ*>Ø—j‘j‘�Ø—7‘7˜KÒ'¬C°·±Ó,<ÀÒ,AØŸK™K‘F�DØ—y‘y GÒ+Ø $§¡™˜Ü% d¬HÔ5à ×.Ñ.×5Ñ5°d·i±iÔ@Ø"à ¤# d×&8Ñ&8Ó"9Ñ9ˆDØ×Ñ×%Ñ% dÔ+Ü&0°°qÔBXÔ&YˆD×Ñ˜dÒ#rÏ   c                 óò  — t        |j                  «      dkD  r|j                  \  }}n|j                  \  }d }t        |t        «      r7t	        |j                  «      }|j                  }t        t        ||«      «      }nat	        |j                  d d «      }|s|j                  \  }t        d|z  «      ‚|j                  d   }|j                  |xs |j                  i}|j                  dk(  rd }	nð|dk(  r<	 t        j                  j                  t        j                  d   j                  «      }
n|}
|
rtt        |
t"        «      rAt#        |
j$                  t        j                  j'                  |
j                  «      d   «      }	nZt        j                  j'                  |
«      d   }	n7t        j                  j                  t        j                  j(                  «      }	||	|fS # t         $ r d }
Y Œ¿w xY w)Nr   r  z&Nothing was imported from grammar `%s`r¼   ú<string>Ú__main__r   )r  r,  rÓ   r0   rÉ  ri  rj  r+   r´   r(  ró  rò  ÚabspathÚsysÚmodulesÚ__file__r  rå  rè  r   Úcurdir)rÌ   ÚstmtÚgrammar_nameÚ	path_nodeÚarg1Údotted_pathrX  r4  r¿   rî  Ú	base_files              rÍ   Ú_unpack_importzGrammarBuilder._unpack_import�  s—  € Üˆt�}‰}Ó Ò!Ø"Ÿm™m‰OˆI‘tàŸ™‰JˆIØˆDä�dœDÔ!Ü 	× 2Ñ 2Ó3ˆKØ—M‘MˆEÜœ3˜u eÓ,Ó-‰Gä 	× 2Ñ 2°3°BÐ 7Ó8ˆKÙØ!×*Ñ*‘�Ü"Ð#KÈdÑ#RÓSÐSØ×%Ñ% bÑ)ˆDØ—z‘z D¢L¨D×#7Ñ#7Ð8ˆGà�>‰>˜\Ò)Ø‰Ià˜zÒ)ð%Ü "§¡§¡´·±¸JÑ0G×0PÑ0PÓ Q‘Ið )�	ÙÜ˜i¬Ô9Ü /°	×0BÑ0BÄBÇGÁGÇMÁMÐR[×R`ÑR`ÓDaÐbcÑDdÓ e‘Iä "§¡§¡¨iÓ 8¸Ñ ;‘IäŸG™GŸO™O¬B¯G©G¯N©NÓ;�	à˜I wÐ.Ð.øô &ò %Ø $’Ið%ús   Ã9:G( Ç(G6Ç5G6c                 ó|  ‡— |j                   dk(  rt        |j                  Ž \  }}}}d}nb|j                  d   j                  }d}t	        |j                  «      dk(  rt        |j                  d   «      nt        }|j                  d   }d}‰�t        ˆfd	„|D «       «      } ‰|«      }t        |‰«      }|||||fS )
Nr¡   Fr   rç   r¬  r   r  Tc              3   ó.   •K  — | ]  } ‰|«      –— Œ y ­wrÊ   rç   )re  rP  rW  s     €rÍ   rf  z4GrammarBuilder._unpack_definition.<locals>.<genexpr>Ñ  s   øè ø€ Ð5©f¨™6 !Ÿ9©fùs   ƒ)	r(  ra  r,  r´   r  rÚ   r(   rÉ  r[  )rÌ   r  rW  r¿   rm  r  ÚoptsrÌ  s     `     rÍ   Ú_unpack_definitionz!GrammarBuilder._unpack_definitionÄ  s¹   ø€ à�9‰9˜ÒÜ&6¸¿¹Ð&FÑ#ˆD�&˜#˜tØ‰Gà—=‘= Ñ#×)Ñ)ˆDØˆFÜ,/°·±Ó,>À!Ò,C”3�t—}‘} QÑ'Ô(ÔI_ˆDØ—-‘- Ñ#ˆCØˆGàÐÜÓ5©fÓ5Ó5ˆFÙ˜$“<ˆDä% c¨6Ó2ˆØ�W˜c 6¨4Ð/Ð/rÏ   Úgrammar_textr�  rW  c                 ó,  — t        ||«      }i }|j                  D ]`  }|j                  dk(  sŒ| j                  ||«      \  }}}		 ||   \  }
}||
k(  sJ ddj	                  |«      z  «       ‚|j                  |	«       Œb |j                  «       D ]  \  }\  }}	| j                  |||	|«       Œ |j                  D �]m  }|j                  dv r  | j                  | j                  ||«      Ž  Œ2|j                  dk(  r1|j                  \  } | j                  | j                  ||«      ddiŽ Œr|j                  dk(  r.|j                  \  } | j                  | j                  ||«      Ž  Œ¯|j                  dk(  r|�ŒÁ | j                  |j                  Ž  ŒÛ|j                  d	k(  rn|j                  D ]]  }t        |t        «      sJ |«       ‚t        |t        «      }|€|j                   }n ||j                   «      }| j                  ||d «       Œ_ �ŒX|j                  dk(  r�ŒiJ |«       ‚ | j"                  j                  «       D ��ci c]  \  }}|j$                  r||j&                  “Œ  }}}t)        |«       y # t        $ r ||	f||<   Y �Œqw xY wc c}}w )
Nr¤   zInconsistent base_path for %s.r;   )r¢   r¡   r¦   Tr§   r£   r¥   )r6  r,  r(  r’  rh  Úupdaterÿ   rš  Ú	do_importrz  r–  r  rƒ  rÓ   r'   r%   r¿   rk  rÌ  r  r  )rÌ   r—  r�  rW  r  ÚimportsrŒ  r�  rî  r4  Úimport_base_pathÚimport_aliasesrÂ  rÁ   rÌ  r¿   r}  r¹  s                     rÍ   Úload_grammarzGrammarBuilder.load_grammarØ  sy  € Ü˜l¨LÓ9ˆàOQˆà—M”MˆDØ�y‰y˜HÓ$Ø26×2EÑ2EÀdÈLÓ2YÑ/�˜Y¨ð>Ø7>¸{Ñ7KÑ4Ð$ nØ$Ð(8Ò8ÐrÐ:ZÐ]`×]eÑ]eÐfqÓ]rÑ:rÓrÐ8Ø"×)Ñ)¨'Õ2ð "ð 29·±¶Ñ-ˆKÑ-˜) WØ�N‰N˜;¨	°7¸FÕCð 2Að —M•MˆDØ�y‰yÐ,Ñ,Ø�—‘˜d×5Ñ5°d¸FÓCÒDØ—‘˜jÒ(Ø—]‘]‘�Ø�—‘˜d×5Ñ5°a¸Ó@ÐPÈ4ÓPØ—‘˜hÒ&Ø—]‘]‘�Ø�—‘˜d×5Ñ5°a¸Ó@ÒAØ—‘˜hÒ&à‘>Ø �D—L‘L $§-¡-Ò0Ø—‘˜iÒ'Ø"Ÿmœm�FÜ% f¬fÔ5Ð=°vÓ=Ð5Ü(¨´Ó:�GØ�~Ø%Ÿ{™{™á% f§k¡kÓ2˜Ø—L‘L  w°Õ5ò ,ð —‘˜hÒ&Ùà"˜dÓ"�uð3 "ð:  ×,Ñ,×2Ñ2Ô4ô
Ù4‘��aØ�yŠyð ˜AŸF™F‘lØ4ð 	ñ 
ô 	  	Õ*øôM  ò >Ø+4°gÐ+=�G˜KÔ(ð>üóD
s   Á7I9É#JÉ9JÊJc                 ó¶   ‡ — ˆ fd„}t        t        ||«      «      }‰ j                  j                  «       D ��ci c]  \  }}||v sŒ||“Œ c}}‰ _        y c c}}w )Nc                 ó¸   •— 	 ‰j                   |    }|j                  rg S t        |j                  «      t        |j                  «      z
  S # t        $ r g cY S w xY wrÊ   )rk  rÿ   rÌ  r  r  r6  rm  )rÁ   r}  rÌ   s     €rÍ   Úrule_dependenciesz8GrammarBuilder._remove_unused.<locals>.rule_dependencies  sX   ø€ ðØ×%Ñ% fÑ-�ð �yŠyØ�	Ü% a§f¡fÓ-´°A·H±H³Ñ=Ð=øô	 ò Ø’	ðús   ƒA ÁAÁA)r6  r   rk  rš  )rÌ   Úusedr¡  Ú_usedÚkrŠ  s   `     rÍ   Ú_remove_unusedzGrammarBuilder._remove_unused  sV   ø€ ô	>ô ”C˜Ð/Ó0Ó1ˆØ.2×.?Ñ.?×.EÑ.EÔ.GÔVÑ.G¡d a¨È1ÐPUÊ:˜Q ™TÐ.GÒVˆÕùÓVs   ¹AÁAr�  .rî  r4  rV  c           	      óâ  — |sJ ‚t        dj                  |«      ||«      }t        j                  j                  |Ž t        z   }| j
                  |�|gng z   t        gz   }|D �]V  }	 t        |«      r |||«      \  }	}
nFt        j                  j                  ||«      }	t        |	d¬«      5 }|j                  «       }
d d d «       t        
«      }| j                  j                  |	|«      |k7  rt        d«      ‚|| j                  |	<   t        | j                  | j
                  | j                  «      }|j!                  |
|	|«       |j#                  t%        ||«      «       |j&                  D ]"  }|| j&                  v sŒt)        d|›d|›d�«      ‚  | j&                  j*                  d
i |j&                  ¤Ž  y  t        |d¬«       J d|›d	�«       ‚# 1 sw Y   �ŒxY w# t,        $ r Y �Œ‹w xY w)NrU  Úutf8©Úencodingz)Grammar file was changed during importingzCannot import 'z' from 'z': Symbol already defined.zCouldn't import grammar zP, but a corresponding file was found at a place where lark doesn't search for itrç   )rX  rh  ró  rò  ÚEXTri  Ústdlib_loaderÚcallableÚopenÚreadÚsha256_digestrj  ÚgetÚRuntimeErrorrg  rh  rž  r¥  r  rk  r+   r™  rñ  )rÌ   r�  rî  r4  rV  rW  rï  r÷  ÚsourceÚjoined_pathrú  r†  ÚhÚgbr¿   s                  rÍ   rš  zGrammarBuilder.do_import  sÉ  € ÙÐˆ{Ü˜TŸY™Y {Ó3°W¸kÓJˆÜ—w‘w—|‘| [Ð1´CÑ7ˆØ×"Ñ"°YÐ5J y¡kÐPRÑSÔWdÐVeÑeˆÜˆFðÜ˜FÔ#Ù(.¨y¸,Ó(GÑ%�K¡ä"$§'¡'§,¡,¨v°|Ó"D�KÜ˜k°FÕ;¸qØ Ÿv™v›x˜÷ <ô
 " $Ó'�Ø—?‘?×&Ñ& {°AÓ6¸!Ò;Ü&Ð'RÓSÐSØ/0�—‘ Ñ,ä# D×$?Ñ$?À×ARÑARÐTX×TcÑTcÓd�Ø—‘  k°6Ô:Ø×!Ñ!¤# f¨gÓ"6Ô7ØŸOœO�DØ˜t×0Ñ0Ò0Ý*ÒfjÒlxÐ+yÓzÐzð ,ð )�×!Ñ!×(Ñ(Ñ;¨2¯?©?Ò;Ùð1 ô6 �¨Õ/ñ Xò  KVð  Xó  X�5÷- <Ñ;ûäò Úðús+   Á'AG!Â,GÂ=G!ÇG	ÇG!Ç!	G.Ç-G.c           
      óL  — | j                   j                  «       D �]¡  \  }}|j                  }|j                  }t	        |«      D ]>  \  }}|| j                   v rt        d|›d|›d�«      ‚||d | v sŒ.t        d|›d|›d�«      ‚ |€Œn|j                  d«      D ]Þ  }|j                  d   j                  }|j                  dd  }	||vsŒ0|| j                   vr | j                  |j                  d|z  |«       t        |	«      t        | j                   |   j                  «      k7  sŒ�t        | j                   |   j                  «      t        |	«      }}
| j                  |j                  d	|
›d
|›d�||«       Œà t        |«      D ]4  }|| j                   vsŒ||vsŒ| j                  |j                  d||«       Œ6 �Œ¤ t        | j                   «      j                  | j                  «      s7t        dt        | j                  «      t        | j                   «      z
  z  «      ‚y )Nz'Template Parameter conflicts with rule z (in template rq   zDuplicate Template Parameter r¹   r   r   z5Template '%s' used but not defined (in {type} {name})z=Wrong number of template arguments used for {name} (expected z, got z) (in {type2} {name2})z9{Type} '{name}' used but not defined (in {type2} {name2})z8Terminals %s were marked to ignore but were not defined!)rk  rš  rm  r  r+  r+   rÈ  r,  r¿   rv  rÌ  r  r  r6  Ú
issupersetrl  )rÌ   r¿   r}  rm  r  rï   rP  ÚtemprÐ   rØ   r-  Úactuals               rÍ   ÚvalidatezGrammarBuilder.validate?  s  € Ø×(Ñ(×.Ñ.×0‰GˆD�!Ø—X‘XˆFØ—&‘&ˆCä! &Ö)‘��1Ø˜×)Ñ)Ñ)Ý&ÒghÒjnÐ'oÓpÐpØ˜˜r ˜
’?Ý&Ò]^Ò`dÐ'eÓfÐfð	 *ð ˆ{ØàŸ™Ð&6Ö7�Ø—m‘m AÑ&×+Ñ+�Ø—}‘} Q RÐ(�Ø˜fÒ$Ø $×"3Ñ"3Ñ3Ø×+Ñ+¨A¯I©IÐ7nÐqtÑ7tÐvzÔ{Ü˜4“y¤C¨×(9Ñ(9¸#Ñ(>×(EÑ(EÓ$FÓFÜ+.¨t×/@Ñ/@ÀÑ/E×/LÑ/LÓ+MÌsÐSWËy &˜Ø×+Ñ+¨A¯IªIÚ\dÒflð8nØorÐtxõzð 8ô *¨#Ö.�Ø˜d×/Ñ/Ò/°C¸vÒ4EØ×'Ñ'¨¯	©	Ð3nÐpsÐuyÕzò /ð1 1ô8 �4×$Ñ$Ó%×0Ñ0°×1CÑ1CÔDÜÐYÔ]`Ðae×asÑasÓ]tÔwzÐ{÷  |Mñ  |Mó  xNñ  ^Nñ   Oó  Pð  Pð ErÏ   c                 ór  — | j                  «        g }g }| j                  j                  «       D ]p  \  }}|j                  |j                  |j
                  }}}|j                  r&t        |«      dk(  sJ ‚|j                  |||ff«       Œ\|j                  ||||f«       Œr t        ||| j                  «      S rD  )rº  rk  rš  rm  r  rn  rÌ  r  r÷   r¸  rl  )rÌ   r`  r¹  r¿   r}  rm  r  rn  s           rÍ   ÚbuildzGrammarBuilder.build_  s©   € Ø�‰ŒØˆ	Øˆ	Ø×(Ñ(×.Ñ.Ö0‰GˆD�!Ø%&§X¡X¨q¯v©v°q·y±y˜'�SˆVØ�yŠyÜ˜6“{ aÒ'Ð'Ð'Ø× Ñ  $¨¨g¨Ð!7Õ8à× Ñ  $¨°°WÐ!=Õ>ð 1ô �y )¨T×-?Ñ-?Ó@Ð@rÏ   )FNNre  )z<?>NrÊ   )rÑ   N)rã   rä   rå   ræ   rã  r   r
   r#  r   r   rc  r   rÎ   rv  rx  rz  r  rƒ  r’  r–  rž  r¥  r	   rš  rº  r¸  r¼  rç   rÏ   rÍ   rg  rg  >  s°  … à Ó Ø�u˜S (˜]Ñ+Ñ,Ó,Ø�S˜#�X‘Óà�s˜J�Ñ'Ó'Ø˜‘9Óñ+¨tð +ÈÐRVÐW\Ð]`ÐbjÐ]jÑWkÑRlÑImð +ð  AIð  JNð  ORð  TWð  OWñ  JXñ  AYð +ð  cgó +ò/òð 
jÈuô 
jó%ò(Zò*%/òN0ñ(2+¨ð 2+¸Cð 2+ÈxÐX`ÐbeÐafÐhkÐakÑXlÑOmð 2+Ðw{ó 2+òjWñ!X U¨3°¨8¡_ð !XÀÈ#Áð !XÐY]Ð^aÐcfÐ^fÑYgð !XÐv~ð  @Hð  JMð  INð  PSð  ISñ  @Tñ  wUð !Xð  _có !XóHPð@A�wô ArÏ   rg  c                 ó   — | j                  «       D ]Ó  \  }}d }t        |t        «      rFt        j                  j                  |«      r't        |d¬«      5 }|j                  «       }d d d «       nIt        |t        «      r9t        t        «      5  t        j                  |Ž j                  d«      }d d d «       |€Œªt        |«      }||k7  sŒ»t        j                   d|z  «        y y# 1 sw Y   Œ9xY w# 1 sw Y   ŒExY w)Nr§  r¨  zutf-8z"File %r changed, rebuilding ParserFT)rš  rÓ   r#  ró  rò  Úexistsr­  r®  rå  r   rñ  rô  rõ  rö  r¯  r   Úinfo)Úfile_hashesrò  Úoldrú  r†  Úcurrents         rÍ   Úverify_used_filesrÃ  n  sÍ   € Ø ×&Ñ&Ö(‰	ˆˆcØˆÜ�dœCÔ ¤R§W¡W§^¡^°DÔ%9Ü�d VÕ,°Ø—v‘v“x�÷ -Ð,ä˜œoÔ.Üœ'Õ"Ü×'Ñ'¨Ð.×5Ñ5°gÓ>�÷ #àˆ<Øä Ó%ˆØ�'‹>Ü�K‰KÐ<¸tÑCÔDÙð )ð ÷ -Ð,ú÷ #Ð"ús   ÁC(Â"C4Ã(C1	Ã4C=	c                 ó„   — t        d|«      }|j                  | d«       t        |j                  j	                  «       «      S )zXReturns a list of paths to the lark grammars imported by the given grammar (recursively)Fr…  )rg  rž  rÇ  rj  Úkeys)Úgrammarri  Úbuilders      rÍ   Úlist_grammar_importsrÈ  €  s8   € ä˜U LÓ1€GØ×Ñ˜ *Ô-Ü�×"Ñ"×'Ñ'Ó)Ó*Ð*rÏ   c                 óv   — t        ||«      }|j                  | |«       |j                  «       |j                  fS rÊ   )rg  rž  r¼  rj  )rÆ  r²  ri  rh  rÇ  s        rÍ   rž  rž  †  s6   € ÜÐ3°\ÓB€GØ×Ñ˜ &Ô)Ø�=‰=‹?˜G×.Ñ.Ð.Ð.rÏ   rs  c                 óô   — t         j                  dk\  r4t        j                  | j	                  d«      d¬«      j                  «       S t        j                  | j	                  d«      «      j                  «       S )z’Get the sha256 digest of a string

    Supports the `usedforsecurity` argument for Python 3.9+ to allow running on
    a FIPS-enabled system.
    )r¬  é	   r§  F)Úusedforsecurity)rˆ  Úversion_infoÚhashlibÚsha256ÚencodeÚ	hexdigestr  s    rÍ   r¯  r¯  Œ  sV   € ô ×Ñ˜6Ò!Ü�~‰~˜aŸh™h vÓ.ÀÔF×PÑPÓRÐRä�~‰~˜aŸh™h vÓ.Ó/×9Ñ9Ó;Ð;rÏ   ro  rÊ   )yrS  rÎ  Úos.pathró  rˆ  Úcollectionsr   r   r   rô  Úastr   Ú
contextlibr   Útypingr   r	   r
   r   r   r   r   r   Úutilsr   r   r   r   r   r   r   r   r   Úlexerr   r   r   r   r   Úparse_tree_builderr   Úparser_frontendsr    Úcommonr!   r"   rÆ  r#   r$   r%   r&   r'   r(   r)   r*   Ú
exceptionsr+   r,   r-   r.   r/   r  r0   r1   r   Úvisitorsr2   r3   r4   r5   r6   rT  ÚIMPORT_PATHSrª  r…  rÖ   rM  r  r  r  r  rÇ   ré   r%  r9  rB  rV  r^  ru  r‚  rŒ  rŽ  r•  r—  r²  r¶  r¸  rå  rç  r«  r  r  r  r  r  r,  r0  r6  r;  rE  r#  rR  rX  r[  ra  rc  rg  rÃ  rÈ  rž  r¯  rç   rÏ   rÍ   Ú<module>rß     sP  ðñó Û Û 
Ý "ß Û Ý Ý ß T× TÓ T÷ A÷  Aõ  Aß EÕ Eå 0Ý -ß )ß ]× ]ß 'ß hÕ hç )ß aÕ aÙ˜DÔ!€àˆ|€à€à€	á	�Ó	€ð%Øˆ%ð%àˆ'ð%ð ˆ'ð%ð ˆ+ð	%ð
 ˆ&ð%ð ˆ'ð%ð ˆ&ð%ð ˆ'ð%ð 	ˆ;ð%ð ˆ&ð%ð ˆ'ð%ð ˆ&ð%ð ˆ$ð%ð ˆ&ð%ð ˆ(ð%ð  ˆ)ð!%ð" ˆ,ñ#%ð$ ˆ+ð%%ð& ˆ,ð'%ð( ˆ*ð)%ð* ˆ*ð+%ð, ˆ'ð-%ð. ˆ*ð/%ð0 	ˆ7ð1%ð2 ˆ+ð3%ð4 ˆ'ð5%ð6 ˆ&ð7%ð8 ˆ&ð9%ð: ˆ(ð;%ð< ˆ(ð=%ð> ˆ&ð?%ð@ ˆ&ðA%ðB 	ˆ9ðC%ðD ˆVñE%ðF Ø
òI%€ðPØˆUðàˆUðð ˆUðð ˆUð	ð
 ˆuðð ˆuðð 	Ð
ðð ˆcðð ˆcðð 
ˆ5ðð ˆKðð ˆwðð ˆSðð Ð1ðð Ððð  Ð#ð!ð" Ð(ð#ð$ /°Ñ:ØØØ
Ø(ØØØØØØØØò=€	ðBK	ØˆgˆYðK	àˆw˜Ð&ðK	ð ÒZðK	ð
 ÐQÐRðK	ð Ð'ØððK	ð �ØððK	ð Ð:ØððK	ð ˜Ø7ð9ðK	ð �=�/ðK	ð ò 0ðK	ð& Ð.°Ð<ð'K	ð( �,�ð)K	ð, �2Ð(Ð)ð-K	ð0 ò ð1K	ð< ò ð=K	ðD ò  ðEK	ðP ��ñQK	ðR �F�8ðSK	ðV ˆf�jÐ!ðWK	ðX �
˜MÐ*ðYK	ð\ Ð&Ð'ð]K	ð^ Ð%Ð&ð_K	ðb ÐCÐDðcK	ðd �wØ4ð6ðeK	ðj Ð-Ø9ð;ðkK	ðn Ð!Ø!ð#ðoK	ðr ˆ~ØððsK	ðv Ð'Ð(ðwK	ðx Ð,Ð-ðyK	ðz ò 4ð{K	ðB �\ <Ð0ðCK	ðD �>Ð"ðEK	ðF Ð&Ð'ðGK	ðH �VÐ5Ð6ñIK	ðL �ØÐ3Ð4àÐ 6Ð7Ø˜(Ð#òUK	€ð` Ð ð
 Ð ô,�;ô ,ð: ôX/Ð%ó X/ó ðX/ôv*6˜7ô *6ôZ
%�[ô 
%ô4:Ð.ô 4:ôn;Ð)ô ;ô$(Ð(ô (ò.,òò4SðB ô
2Ð)ó 
2ó ð
2ð!¨yó !ô0Ð4ô 0ôfÐ)ô ò8ô
H6ˆiô H6ñV Ð.°Ó@€÷*Eñ *EñZ " &¨,Ó7€ò@òDXð ô'Ð(ó 'ó ð'òEò!ð* 
# X JÐ/Ø	 ( Ð,Ø	(Ò*JÐKÙ	@ÓBkÐlÙ	.±°	Ð:Ù	'©-¨Ð9Ù	ÓIÐJÙ	ÓYÐZÙ	FÉÈÐVÙ	-±¨yÐ9Ù	0±7°)Ð<Ù	!¡OÐ#4Ð5Ù	"Ñ%8Ð$9Ð:ð€ó 'õ,ó óó ˜cð ¨#ð ¸$¸uÀ_ÐVYÐEYÑ?ZÑ:[ô õ,ó	ó]÷0ó ÷mAó mAó`	ð$ 02ô +ó/ñ	<�Sð 	<˜Sõ 	<rÏ   