
    iKjNj                       d dl mZ d dl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mZ ddlmZmZ ddlmZmZmZmZmZmZ ddlmZmZ  ed	      Z ej<                  d
      ZdZ dez   ez   dz   ez   dz   Z! G d dee         Z"d,dZ#d-dZ$d.dZ%e G d d             Z&d/dZ'd0dZ(d1dZ)d2dZ*d3dZ+d4dZ,	 	 	 	 	 	 	 	 	 	 	 	 d5dZ-d6dZ.d7dZ/d8dZ0d8d Z1d9d!Z2d:d"Z3d;d#Z4d<d$Z5d<d%Z6d=d&Z7d1d'Z8d>d(Z9d?d)Z:d@d*Z;dAd+Z<y)B    )annotationsN)	dataclass)	AnyDictListMatchMutableMappingOptionalSetTuplecast   )InlineStateParser)HTML_ATTRIBUTESHTML_TAGNAMEPUNCTUATION
parse_linkparse_link_labelunescape_char)
escape_urlunikeyz()[]{}?*+|.^$z7(#[0-9]{1,7};|#[xX][0-9a-fA-F]+;|[^\t\n\f <&#;]{1,32};)z<[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*><z	\s*/?>|</zc\s*>|<!--(?!>|->)(?:(?!--)[\s\S])+?(?<!-)-->|<\?[\s\S]+?\?>|<![A-Z][\s\S]+?>|<!\[CDATA[\s\S]+?\]\]>c                  `    e Zd ZdZeZdZdZdez   dz   dddd	e	e
eed
dez   dz   dZdZd&d' fdZ	 d(	 	 	 	 	 	 	 	 	 d) fdZd*dZd+dZd,dZ	 	 	 	 	 	 	 	 	 	 d-dZd*dZd*dZd.dZd*dZd*dZd*dZd*dZd*dZd/d0dZd1dZd2dZd3d Zd4d!Z d5d"Z!	 d(	 	 	 	 	 	 	 	 	 d6d#Z"d1d$Z#d7d%Z$ xZ%S )8InlineParserr   z(?:\\| {2,})\n\s*z *\n\s*z(?:\\z)+z`{1,}z$\*{1,3}(?=[^\s*])|\b_{1,3}(?=[^\s_])z!?\[z.<[A-Za-z][A-Za-z0-9.+-]{1,31}:[^<>\x00-\x20]*>z<[A-Za-z][A-Za-z\d.+-]{1,31}:z</?z|<!|<\?)escapecodespanemphasislink	auto_link
auto_emailinline_html	linebreak	softbreakprec_auto_linkprec_inline_html)r   r   r   r   r    r!   r"   r#   c           	     4   t         t        |           || _        d | _        d | _        d | _        |r| j                  | j                  d<   n| j                  j                  d       | j                  D ci c]  }|t        | d|z          c}| _        y c c}w )Nr#   r$   parse_)superr   __init__	hard_wrap_fast_trigger_chars_fast_trigger_re_fast_trigger_re_charsHARD_LINEBREAKspecificationrulesappendgetattr_methods)selfr+   name	__class__s      f/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/mistune/inline_parser.pyr*   zInlineParser.__init__W   s    lD*,"7; ;?AE#.2.A.AD{+JJk*JN**U*$wtX_==*UUs   5Bc                V    t         |   ||||       d | _        d | _        d | _        y )N)before)r)   registerr,   r-   r.   )r5   r6   patternfuncr:   r7   s        r8   r;   zInlineParser.registerf   s3     	wV<#'  $&*#    c                    |j                  d      }t        |      }| j                  ||d       |j                         S )Nr   F)parse_emphasis)groupr   process_textend)r5   mstatetexts       r8   parse_escapezInlineParser.parse_escaper   s9    wwqzT"$e<uuwr>   c                d   |j                         }|j                  d      }|d   dk(  }|s"|j                  r|j                  d|d       |S d }t	        |j
                  |      \  }}|M||j                  k  r|j                  d|d       |S t        ||      \  }}|||j                  kD  r||_        y |J ||}|J |t        |j
                        k\  r|y |s| j                  ||      ry g d}	| j                  ||||	      }
|
r|
S |t        |j
                        k  r|j
                  |   }|dk(  rEt        |j
                  |dz         \  }}|rP| j                  ||||      }|j                  |       |S |dk(  r$t	        |j
                  |dz         \  }}|r|}|r|}|y |j                  j                  d	      }|sy t        |      }|j                  |      }|rH|d
   |j                  d      d}| j                  ||||      }||d<   ||d<   |j                  |       |S y )Nr   !rF   typeraw)r   r%   r&   (r   [	ref_linksurltitle)rP   rQ   reflabel)rC   rA   in_linkappend_tokenr   srcno_close_bracket_before_parse_link_textlen_contains_nested_linkprecedence_scanr   _InlineParser__parse_link_tokenenvgetr   )r5   rD   rE   posmarkeris_imagerF   rS   end_posr1   prec_poscattrspos2tokenlabel2rO   keyr]   s                      r8   r   zInlineParser.parse_linkx   sS   eeg!9#EMMv>?J)%))S9w=e333""F6#BC
,UC8MD'|U:::4;E1"""<Dc%))n$D66tUCB''5'5AOS^#		'"ACx(GaK@t 33HdE5QE&&u-Kc/		7Q;G"G &=IIMM+.	UmmmC J1ABE++HdE5IEE%L"E'Nu%Nr>   c                   d|vryd|vr d|vr|j                   j                  d      sy| j                  dg      }|j                         }||_        d}|t        |      k  r|j                  ||      }|sy|j                  d      }|dk(  rH|j                         dk(  s||j                         dz
     d	k7  rt        ||j                         |      ry
|j                         dz   }|t        |      k  ry)NrN   Fz](z][rO   r   r   r   rI   T)r]   r^   
compile_sccopyrV   rY   searchrA   start_is_link_likerC   )r5   rF   rE   scnested_stater_   rD   r`   s           r8   rZ   z"InlineParser._contains_nested_link   s    d?tD 0{9S__fX&zz|CIo		$$AWWQZF}!'')q.DQ4G34N quuw='')a-C CIo r>   c                    |j                         }||_        |rd|_        d| j                  |      |d}|S d|_        d| j                  |      |d}|S )NTimagerK   childrenre   r   )rl   rV   in_imagerenderrT   )r5   ra   rF   re   rE   	new_staterg   s          r8   __parse_link_tokenzInlineParser.__parse_link_token   sk     JJL		!%I KK	2E  !%I KK	2E
 r>   c                    |j                  d      }|j                         }|j                  r| j                  ||       |S |dd }| j	                  |||       |S )Nr   r   rA   rC   rT   rB   _add_auto_link)r5   rD   rE   rF   r_   s        r8   parse_auto_linkzInlineParser.parse_auto_link   sX    wwqzeeg==dE*JAbzD$.
r>   c                    |j                  d      }|j                         }|j                  r| j                  ||       |S |dd }d|z   }| j	                  |||       |S )Nr   r   r{   zmailto:r|   )r5   rD   rE   rF   r_   rP   s         r8   parse_auto_emailzInlineParser.parse_auto_email   sb    wwqzeeg==dE*JAbz$Cu-
r>   c                L    |j                  dd|dgdt        |      id       y )Nr   rF   rJ   rP   rt   )rU   r   )r5   rP   rF   rE   s       r8   r}   zInlineParser._add_auto_link
  s/    &,T:;C1	
r>   c                d    | j                  |j                  d      |       |j                         S )Nr   )rB   rA   rC   r5   rD   rE   s      r8   r@   zInlineParser.parse_emphasis  s%    !''!*e,uuwr>   c                   |j                  d      }t        j                  d|z   dz   t        j                        }|j	                         }|j                  |j                  |      }|r|j	                         }|j                  d      }|j                  dd      }t        |j                               r'|j                  d      r|j                  d      r|dd }|j                  d|d	       |S |j                  d
|d	       |S )Nr   z	(.*?[^`])z(?!`)r   
 r{   r   rJ   rF   )rA   recompileSrC   matchrV   replacerY   strip
startswithendswithrU   )	r5   rD   rE   r`   r<   r_   m2rb   codes	            r8   parse_codespanzInlineParser.parse_codespan  s     **\F2X=rttDeeg]]599c*ffhG88A;D<<c*D4::< ??3'DMM#,>":D
4@ANv>?Jr>   c                H    |j                  ddi       |j                         S )NrK   r#   rU   rC   r   s      r8   parse_linebreakzInlineParser.parse_linebreak-       FK01uuwr>   c                H    |j                  ddi       |j                         S )NrK   r$   r   r   s      r8   parse_softbreakzInlineParser.parse_softbreak1  r   r>   c                    |j                         }|j                  d      }|j                  d|d       |j                  d      r	d|_        |S |j                  d      rd|_        |S )Nr   r"   rJ   )z<a z<a>z<A z<A>T)z</a z</a>z</A z</A>F)rC   rA   rU   r   rT   )r5   rD   rE   rb   htmls        r8   parse_inline_htmlzInlineParser.parse_inline_html5  sc    %%'wwqzM$?@??78 EM  __=>!EMr>   c                0   |rw|j                   rk|j                   d   d   dk(  rV|j                   d   j                  dd      r7t        |j                   d   d   |      s|j                   d   dxx   |z  cc<   y d|d}|sd|d<   |j                  |       y )	Nr{   rK   rF   	_emphasisTrL   rJ   F)tokensr^   _is_entity_boundaryrU   )r5   rF   rE   r@   rg   s        r8   rB   zInlineParser.process_text?  s    R (F2R $$[$7'R(8(?FLLU#t+#-3D$AE!%*k"u%r>   c                   d}| j                         }|t        |j                        k  rP| j                  |j                  |      }||j	                  |j                  |      }n[||kD  r!| j                  |j                  || |       |}|t        |j                        k\  rn|j                  |j                  |      }|s+|(| j                  |j                  ||dz    |       |dz  }n|j                         }||kD  r!|j                  || }| j                  ||       | j                  ||      }|s'|dz   }|j                  || }| j                  ||       n|}|t        |j                        k  rP|dk(  r| j                  |j                  |       n7|t        |j                        k  r| j                  |j                  |d  |       t        |j                  d| j                  v       |_
        |j                  S )Nr   r   r   )rk   rY   rV   _find_fast_text_endrm   rB   r   rn   parse_method_finalize_emphasis_tokensr   r1   )	r5   rE   r_   rp   fast_endrD   rb   holenew_poss	            r8   parsezInlineParser.parseN  s   __C		N"//		3?HIIeii-c>%%eiiH&=uE"C#eii.(HHUYY,'%%eiicAg&>F1HCggiG}yyW-!!$.''51Gkyy-!!$.? C		N"B !8eii/3uyy>!eiiou50zTZZ?WX||r>   c                   | j                         }|y | j                  |      }|j                  ||      }|t        |      S |j	                  d      dk(  r!| j                  |||j                               S |j                         S )Nr   r   )_get_fast_trigger_chars_get_fast_trigger_rerm   rY   rA   _find_linebreak_startrn   )r5   rV   r_   chars
trigger_rerD   s         r8   r   z InlineParser._find_fast_text_endz  s    ,,.=..u5
c3'9s8O771:--c3	BBwwyr>   c                *   t        t        |            }| j                  | j                  |k7  rKdt	        j
                  dj                  |            z   dz   }t	        j                  |      | _        || _        | j                  J | j                  S )NrN    ])tuplesortedr-   r.   r   r   joinr   )r5   r   ri   r<   s       r8   r   z!InlineParser._get_fast_trigger_re  s    F5M"  (D,G,G3,NBIIbggcl33c9G$&JJw$7D!*-D'$$000$$$r>   c                    |}||kD  r!||dz
     dk(  r|dz  }||kD  r||dz
     dk(  r||k(  r||kD  r||dz
     dk(  r|dz
  S |S )Nr   r   \ )r5   rV   min_posnewline_posr_   s        r8   r   z"InlineParser._find_linebreak_start  si    GmC!G 31HC GmC!G 3+#-CaLD4H7N
r>   c                    | j                   }||S t               }| j                  D ]E  }| j                  j	                  |      }t        ||      }|	d | _          y |j                  |       G || _         |S N)r,   setr1   r0   r^   _get_rule_start_charsupdate)r5   r   r6   r<   
rule_charss        r8   r   z$InlineParser._get_fast_trigger_chars  s{    ((LJJD((,,T2G.tW=J!+/(LL$  $) r>   c                   |g d}|j                         }| j                  |      }|j                  |j                  ||      }|sy |j                  }|sy |j                  dd      }	| j                  |	g      }|j                  |j                  |j                               }
|
sy | j                  |	   }|j                         }|j                  |_         ||
|      }|r||k  ry |j                  |j                         |
j                          }|j                  d|d       |j                  D ]  }|j                  |        |S )N)r   r   r%   r&   prec_r   rF   rJ   )rC   rk   rm   rV   	lastgroupr   r   rn   r4   rl   rU   r   )r5   rD   rE   rb   r1   mark_posrp   m1r   	rule_namer   r=   rx   m2_posraw_textrg   s                   r8   r[   zInlineParser.precedence_scan  s#    =NE557__U#YYuyy(G4LL	%%gr2	__i[)XXeii,}}Y'JJL				b)$')99QWWY4F8<=%%Eu% &r>   c                <    | j                  |       |j                  S r   )r   r   )r5   rE   s     r8   rw   zInlineParser.render  s    

5||r>   c                T    | j                  |      }||_        | j                  |      S r   )	state_clsrV   rw   )r5   sr]   rE   s       r8   __call__zInlineParser.__call__  s&    s#	{{5!!r>   )F)r+   boolreturnNoner   )
r6   strr<   Optional[str]r=   r   r:   r   r   r   )rD   
Match[str]rE   r   r   int)rD   r   rE   r   r   Optional[int])rF   r   rE   r   r   r   )
ra   r   rF   r   re   zOptional[Dict[str, Any]]rE   r   r   Dict[str, Any])rP   r   rF   r   rE   r   r   r   )T)rF   r   rE   r   r@   r   r   r   )rE   r   r   List[Dict[str, Any]])rV   r   r_   r   r   r   )r   zSet[str]r   zre.Pattern[str])rV   r   r   r   r   r   r   r   )r   Optional[Set[str]])
rD   r   rE   r   rb   r   r1   zOptional[List[str]]r   r   )r   r   r]   zMutableMapping[str, Any]r   r   )&__name__
__module____qualname__sc_flagr   r   STD_LINEBREAKr/   r   
AUTO_EMAILINLINE_HTMLr   SPECIFICATIONDEFAULT_RULESr*   r;   rG   r   rZ   r\   r~   r   r}   r@   r   r   r   r   rB   r   r   r   r   r   r[   rw   r   __classcell__)r7   s   @r8   r   r   /   sr   GI )M  N
 [(4/;F ""#:"\1J>!M$	MV( !%
+
+ 
+ 	
+
 
+ 

+IV.  (	
  
2	

,&*X%* &*$$ $ 	$
 #$ 
$L"r>   r   c                    i ddhddhdddhdd	d
hddhddhddhddhddhddhddhddhddhddhddhddhddhd
hdhd
hdhd }| |v r||    S |s
t               S t        |      S )!Nr   r   r   `r   *_r   rI   rN   r    r   r!   r"   r#   r   r$   r%   r&   url_linkhstrikethrough~mark=insert^superscript	subscript$>)footnoteinline_mathrubyinline_spoiler)r   _guess_pattern_start_chars)r6   r<   knowns      r8   r   r     s:   4&SE 	S#J 	c
	
 	cU 	se 	u 	dV 	dV 	3% 	SE 	SE 	# 	  	3%!" 	u#$ 	cU%& Eu%-E0 u}T{u%g..r>   c                    | s
t               S | j                  d      r't        |       dkD  r| d   }|t        v s|t        v r|hS y | d   }|t        v s|j                         ry |hS )Nr   r   r   )r   r   rY   _REGEX_META_CHARSr   isspace)r<   rd   s     r8   r   r     sl    u$CL1$4AJ!!Q+%53J
A3Jr>   c                V    | j                  d      xr t        j                  |      d uS )N&)r   _CHARREF_PREFIXr   )leftrights     r8   r   r   	  s&    ==J/"7"7">d"JJr>   c                  @    e Zd ZU ded<   ded<   ded<   ded<   ded<   y	)

_Delimiterr   indexr   r`   lengthr   can_open	can_closeN)r   r   r   __annotations__r   r>   r8   r   r     s    JKKNOr>   r   c                J   |st        |       S t        |       st        |       S g }g }t        |       }d}| D ]T  }|d   dk(  r"|j                  dd      rt	        |||||       n|j                  t        |             |t        |      z  }V t        ||       t        |      S )Nr   rK   rF   r   T)
_clean_emphasis_tokens_contains_emphasis_marker_emphasis_source_textr^   _split_text_tokenr2   _clean_emphasis_token_emphasis_source_length_process_emphasis_delimiters_merge_text_tokens)r   enabledparts
delimiterssource
source_posrg   s          r8   r   r     s    %f--$V,%f--"$E#%J"6*FJ=F"uyyd'CeVZ
KLL.u56-e44
  !
3e$$r>   c                h    | D ]-  }|d   dk(  s|j                  dd      s|d   }d|v sd|v s- y y)	NrK   rF   r   TrL   r   r   F)r^   )r   rg   rL   s      r8   r  r  +  sC    =F"uyyd'C,CczSCZ	 
 r>   c                >    | D cg c]  }t        |       c}S c c}w r   )r
  )r   rg   s     r8   r  r  4  s     6<=fU!%(f===s   c                V    d| vr| S | j                         } | j                  dd        | S )Nr   )rl   poprg   s    r8   r
  r
  8  s-    %JJLE	IIk4 Lr>   c                    g }| D ]I  }|d   dk(  r|j                  |d           |d   dv r|j                  d       9|j                  d       K dj                  |      S )NrK   rF   rL   )r$   r#   r   u   ￼r   )r2   r   )r   valuesrg   s      r8   r  r  @  sb    F=F"MM%,'6]88MM$MM(#  776?r>   c                0    | d   dk(  rt        | d         S y)NrK   rF   rL   r   rY   r  s    r8   r  r  L  s     V}5<  r>   c           	        | d   }d}|t        |      k  r||   dvr&t        ||      }|j                  d||| d       |};||   }|}|t        |      k  r$||   |k(  r|dz  }|t        |      k  r	||   |k(  r||z
  }	||z   }
t        ||
|	|      }t	        ||
|	|      }t        |      }|j                  d||| d       |s|r|j                  t        |||	||             |}|t        |      k  ry y )NrL   r   *_rF   rJ   r   )rY   _next_delimiter_runr2   _can_open_emphasis_can_close_emphasisr   )rg   r  source_startr  r  rF   r_   rC   r`   r  absoluter  r  r   s                 r8   r	  r	  R  s    <D
C
D	/9D %dC0CLL&c#?@CcCIo$s)v"51HC CIo$s)v"5s#%%fhG'&&I	E
fT#c];<yj)TU' D	/r>   c                f    |t        |       k  r"| |   dvr|dz  }|t        |       k  r| |   dvr|S )Nr  r   r  )rF   r_   s     r8   r  r  q  s>    
D	/d3it3q D	/d3it3Jr>   c                    d}i }|t        |      k  r||   }|j                  r|j                  dk(  r|dz  }5|j                  |j                  dz  |j                  f}|dz
  }|j                  |d      }d }||k\  rS||   }	|	j                  |j                  k(  r*|	j                  r|	j                  dkD  rt        |	|      r|	}n|dz  }||k\  rS||||<   |dz  }|j                  dk\  r|j                  dk\  rd}
nd}
|
dk(  rt        | ||      sd}
|
dk(  rt        | ||      s|dz  })t        | |j                  dz   |j                        s|dz  }T| |j                     }| |j                     }|d   dk7  s|d   dk7  r|dz  }|d   d |
  |d<   |d   |
d  |d<   | |j                  dz   |j                   }|
dk(  rd|d	}nd
|d	}|j                  }|g| |j                  dz   | ||j                  z
  dz
  }|j                  dz   |_
        |rV|D ]Q  }|j                  |j                  cxk  r|k  rn nd|_        -|j                  |k\  s=|xj                  |z  c_
        S |xj                  |
z  c_        |xj                  |
z  c_        |j                  dk(  rd|_        |j                  dk(  rd|_        |j                  s|j                  rt        ||j                  |d            }n|dz  }|t        |      k  ry y )Nr   r         rK   rF   rL   strong)rK   ru   r   F)rY   r  r  r`   r  r^   _can_match_emphasis_delimiters_has_strong_enabled_has_emphasis_enabled_has_emphasis_contentr   max)r  r  
closer_posopeners_bottomcloser
opener_key
opener_posopener_bottomopener	candidate
use_lengthopener_textcloser_textru   nodeold_closer_indexremoved	delimiters                     r8   r  r  w  s,   J79N
s:
&J'6==A#5!OJmmV]]Q%6H
!^
&**:q9M)":.I  FMM1&&$$q(29fE"!OJ M) >)3N:&!OJ==A&--1"4JJ?#6uff#MJ?#8#O!OJ$UFLL1,<fllK!OJFLL)FLL)v&(K,?6,I!OJ(/*=E(/
<E)FLL9?$(;D&H=D!<<6:VfllQ!12"V\\1A5||a''	<<)//D4DD'(I$__(88OOw.O	 ( 	##==A#FO==A$F??f..Z););J)JKJ!OJY s:
&r>   c                    t        t        | |j                                 dk\  xr$ t        t        | |j                                 dk\  S )Nr&  )rY   	_text_rawr   r  r3  r/  s      r8   r)  r)    s>    yv||,-.!3`IeFLLFY<Z8[_`8``r>   c                x    t        t        | |j                           xr t        | |j                                 S r   )r   r=  r   r>  s      r8   r*  r*    s.    	%-.Q9U6<<=P3QRRr>   c                :    | d   dk(  rt        t        | d         S y)NrK   rF   rL   r   )r   r   r  s    r8   r=  r=    s"    V}Cu&&r>   c                <    | || D ]  }|d   dk7  s	|d   dk7  s y y)NrK   rF   rL   r   TFr   )r  rn   rC   parts       r8   r+  r+    s2    eC <6!T%[B%6 ! r>   c                    | j                   s|j                  rG| j                  |j                  z   dz  dk7  xs& | j                  dz  dk(  xr |j                  dz  dk(  S y)Nr%  r   T)r  r  r  )r3  r/  s     r8   r(  r(    s]    6??-2a7l6==1;LPQ;Q;lV\VcVcfgVgklVllr>   c                   |dkD  r	| |dz
     }nd}||z   t        |       k  r	| ||z      }nd}|dk(  r!|j                         r|j                         ry|j                         ryt        |      r|j                         st        |      syyNr   r   r   r   FTrY   isalnumr   _is_punctuationrF   rn   sizer`   previous	next_chars         r8   r  r    s    qy	?t|c$i&		}))+	0A0A0Cy!(*:*:*<_U]E^r>   c                   |dkD  r	| |dz
     }nd}||z   t        |       k  r	| ||z      }nd}|dk(  r!|j                         r|j                         ry|j                         ryt        |      r|j                         st        |      syyrE  rF  rI  s         r8   r   r     s    qy	?t|c$i&		}))+	0A0A0Cx ):):)<_U^E_r>   c                J    | j                          xr | j                          S r   )r   rG  )rd   s    r8   rH  rH    s    yy{?.199;.r>   c                    g }| D ]k  }|d   dk(  r	|d   dk(  r|d   dk(  r6|r4|d   d   dk(  r)t        |d   d   |d         s|d   dxx   |d   z  cc<   R|j                  t        |             m |S )NrK   rF   rL   r   r{   )r   r2   r
  )r   resultrg   s      r8   r  r    s    #%F=F"uU|r'9=F"v&*V2D2N&vbz%'8%,Gr
5!U5\1!+E23  Mr>   c                t    t        | |      }|d t        | j                        fS | j                  || |dz   fS )Nr   )_find_closing_bracketrY   rV   )rE   r_   	close_poss      r8   rX   rX     sA    %eS1IS^##99S#Y]22r>   c                T   | j                   j                  t        | j                              }|%|d   | j                  u r|d   j                  |      S t	        | j                        }| j                  |f| j                   t        | j                        <   |j                  |      S )Nr   r   )link_bracketsr^   idrV   _build_closing_bracket_map)rE   r_   cachepairss       r8   rR  rR     s    ##BuyyM2EU1X2Qx||C  &uyy1E*/))U);E599&99S>r>   c                   t        | |      \  }}|t        ||      \  }}|y|J |J |t        |       k\  r5|j                  j	                  d      }t        |xr t        |      |v       S | |   }|dk(  rt        | |dz         \  }}t        |      S |dk(  rt        | |dz         \  }	}|sy|	r|	}|j                  j	                  d      }t        |xr t        |      |v       S )NFrO   rM   r   rN   )r   rX   rY   r]   r^   r   r   r   )
rV   r_   rE   rS   rb   rO   r`   _attrsr   rh   s
             r8   ro   ro   *  s    %c3/NE7})%5w=#c(IIMM+.	I<&-9"<==\F}$S'A+6G}}*3!<E		k*I	8fUmy899r>   c                    i }g }d}|t        |       k  rX| |   }|dk(  r|dz  }|dk(  r|j                  |dz          n|dk(  r|r|||j                         <   |dz  }|t        |       k  rX|S )Nr   r   r&  rN   r   r   )rY   r2   r  )rV   rY  stackr_   rd   s        r8   rW  rW  H  s    EE
C
C.H91HC8LLq!#X%!$E%))+q C. Lr>   )r6   r   r<   r   r   r   )r<   r   r   r   )r   r   r   r   r   r   )r   r   r  r   r   r   )r   r   r   r   )r   r   r   r   )rg   r   r   r   )r   r   r   r   )rg   r   r   r   )rg   r   r  r   r!  r   r  r   r  List[_Delimiter]r   r   )rF   r   r_   r   r   r   )r  r   r  r^  r   r   )r  r   r3  r   r/  r   r   r   )rg   r   r   r   )r  r   rn   r   rC   r   r   r   )r3  r   r/  r   r   r   )
rF   r   rn   r   rJ  r   r`   r   r   r   )rd   r   r   r   )rE   r   r_   r   r   zTuple[Optional[str], int])rE   r   r_   r   r   r   )rV   r   r_   r   rE   r   r   r   )rV   r   r   zDict[int, int])=
__future__r   r   dataclassesr   typingr   r   r   r   r	   r
   r   r   r   corer   r   helpersr   r   r   r   r   r   utilr   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r  r  r	  r  r  r)  r*  r=  r+  r(  r  r   rH  r  rX   rR  ro   rW  r   r>   r8   <module>re     sp   " 	 !
 
 
 &  %() "**WX=  	</) -
 
 g"6+& g"T/@ K   %*>	   	
 ! 
>OdaS$$/
3:<r>   