
    F j                        % S SK r S SKJr  S SKJrJr  S SKJr  S SKJ	r	J
r
  SSKJr  Sr\\S	'   0 S
SSS._SS
SS._SSSS._SSSS._SSSS._SSSS._SSSS._SSSS._SSSS._SSSS._SSSS._SSSS._SSSS._SSSS._SSSS._SSSS._SSSS._0 SSSS._SS SS._S SSS._S!S"SS._S"S!SS._S#S$SS._S$S#SS._S%S&SS._S&S%SS._S'S(SS._S(S'SS._S)S*SS._S*S)SS._S+S,SS._S,S+SS._S-S.SS._S.S-SS._E0 S/S0SS._S0S/SS._S1S2SS._S2S1SS._S3S4SS._S4S3SS._S5S6SS._S6S5SS._S7S8SS._S8S7SS._S9S:SS._S:S9SS._S;S<SS._S<S;SS._S=S>SS._S>S=SS._S?S@SS._E0 S@S?SS._SASBSS._SBSASS._SCSDSS._SDSCSS._SESFSS._SFSESS._SGSHSS._SHSGSS._SISJSS._SKSLSS._SLSKSS._SJSISS._SMSNSS._SNSMSS._SOSPSS._SPSOSS._E0 SQSRSS._SRSQSS._SSSTSS._STSSSS._SUSVSS._SVSUSS._SWSXSS._SXSWSS._SYSZSS._SZSYSS._S[S\SS._S\S[SS._S]S^SS._S^S]SS._S_S`SS._S`S_SS._SaSbSS._E0 SbSaSS._ScSdSS._SdScSS._SeSfSS._SfSeSS._SgShSS._ShSgSS._SiSjSS._SjSiSS._SkSlSS._SlSkSS._SmSnSS._SnSmSS._SoSpSS._SpSoSS._SqSrSS._SrSqSS._E0 SsStSS._StSsSS._SuSvSS._SvSuSS._SwSxSS._SxSwSS._SySzSS._SzSySS._S{S|SS._S|S{SS._S}S~SS._S~S}SS._SSSS._SSSS._SSSS._SSSS._SSSS._ESSS.SSS.SSS.SSS.SSS.SSS.SSS.SSS.SSS.S.	Er\\\\\4   4   \S'    " S S5      r\ " S S5      5       r " S S5      r SS\S\S\S\4S jjrS\\   S\\   4S jr " S S5      rg)    N)deque)	dataclassreplace)
itemgetter)Optional	TypedDict   )TextDirection}   	MAX_DEPTH()o)pairtypec[]{}u   ༺u   ༻u   ༼u   ༽u   ᚛u   ᚜u   ⁅u   ⁆u   ⁽u   ⁾u   ₍u   ₎u   ⌈u   ⌉u   ⌊u   ⌋u   〈   〉u   ❨u   ❩u   ❪u   ❫u   ❬u   ❭u   ❮u   ❯u   ❰u   ❱u   ❲u   ❳u   ❴u   ❵u   ⟅u   ⟆u   ⟦u   ⟧u   ⟨u   ⟩u   ⟪u   ⟫u   ⟬u   ⟭u   ⟮u   ⟯u   ⦃u   ⦄u   ⦅u   ⦆u   ⦇u   ⦈u   ⦉u   ⦊u   ⦋u   ⦌u   ⦍u   ⦐u   ⦎u   ⦏u   ⦑u   ⦒u   ⦓u   ⦔u   ⦕u   ⦖u   ⦗u   ⦘u   ⧘u   ⧙u   ⧚u   ⧛u   ⧼u   ⧽u   ⸢u   ⸣u   ⸤u   ⸥u   ⸦u   ⸧u   ⸨u   ⸩u   ⹕u   ⹖u   ⹗u   ⹘u   ⹙u   ⹚u   ⹛u   ⹜u   〈   〉u   《u   》u   「u   」u   『u   』u   【u   】u   〔u   〕u   〖u   〗u   〘u   〙u   〚u   〛u   ﹙u   ﹚u   ﹛u   ﹜u   ﹝u   ﹞u   （   ）   ］   ［   ｝   ｛   ｠   ｟   ｣   ｢)	r   r   r   r   r   r   r   r!   r    BIDI_BRACKETSc            
       h    \ rS rSr/ SQrS\S\S\S\SS4
S	 jrS\4S
 jr	S\SS4S jr
S\4S jrSrg)BidiCharacter   character_index	character
bidi_classoriginal_bidi_classembedding_level	directionr'   r(   r+   debugreturnNc                     Xl         X l        U(       a  UR                  5       (       a  SU l        O[        R
                  " U5      U l        U R                  U l        X0l        S U l        g )NR)	r'   r(   isupperr)   unicodedatabidirectionalr*   r+   r,   )selfr'   r(   r+   r-   s        Z/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/fpdf/bidi.py__init__BidiCharacter.__init__   sR      /"Y&&((!DO)77	BDO#'?? .    c                 2    U R                   S-  (       a  S$ S$ )N   r0   L)r+   r4   s    r5   get_direction_from_level&BidiCharacter.get_direction_from_level   s    **Q.s7C7r8   clsc                     Xl         g N)r)   )r4   r?   s     r5   	set_classBidiCharacter.set_class   s    r8   c                     SU R                    SU R                   3SU R                   SU R                   3-   SU R                   SU R
                   3-   $ )Nzcharacter_index: z character: z bidi_class: z original_bidi_class: z embedding_level: z direction: r&   r<   s    r5   __repr__BidiCharacter.__repr__   sh     4 45\$..AQRdoo..DTE]E]D^_`"4#7#7"8T^^DTUV	
r8   )r)   r(   r'   r,   r+   r*   )__name__
__module____qualname____firstlineno__	__slots__intstrboolr6   r=   rB   rE   __static_attributes__ r8   r5   r$   r$      sa    I"/2EHQU	8# 8S T 
# 
r8   r$   c                   <    \ rS rSr% / SQr\\S'   \\S'   \\S'   Sr	g)DirectionalStatus   r+   directional_override_statusdirectional_isolate_statusr+   rU   rV   rP   N)
rG   rH   rI   rJ   rK   rL   __annotations__rM   rN   rO   rP   r8   r5   rR   rR      s    I
 !$$ $$r8   rR   c                   x    \ rS rSr/ SQrS\\   S\S\SS4S jrSS	 jr	S\\
\\4      4S
 jrSS jrSS jrSrg)IsolatingRun   )
charactersprevious_directionnext_directionr[   soseosr.   Nc                     Xl         X l        X0l        U R                  5         U R	                  5         U R                  5         g rA   )r[   r\   r]   resolve_weak_typesresolve_neutral_typesresolve_implicit_levels)r4   r[   r^   r_   s       r5   r6   IsolatingRun.__init__   s7    $"%!!""$$$&r8   c                   ^ ^^ [        T R                  5       H  u  pUR                  S:X  d  M  US:X  a  UR                  T R                  5        M:  UR                  T R                  US-
     R                  S;   a  SOT R                  US-
     R                  5        M     T R                  nT R                   Hk  nUR                  S;   a  UR                  nUR                  S:X  a  UR                  S5        UR                  S	:X  d  MR  US:X  d  MZ  UR                  S
5        Mm     [        T R                  5       GH"  u  pUS[        T R                  5      S-
  4;   a  M&  UR                  S:X  aQ  T R                  US-
     R                  S	:X  a1  T R                  US-      R                  S	:X  a  UR                  S	5        UR                  S:X  d  M  T R                  US-
     R                  S;   d  M  T R                  US-      R                  T R                  US-
     R                  :X  d  M  UR                  T R                  US-
     R                  5        GM%     S[        S[        4UU 4S jjmS[        S[        4UU 4S jjm[        T R                  5       Hc  u  pUR                  S:X  a+  T" U5      (       d  T" U5      (       a  UR                  S	5        UR                  S;   d  MR  UR                  S5        Me     T R                  nT R                   HJ  nUR                  S;   a  UR                  nUR                  S	:X  d  M1  US:X  d  M9  UR                  S5        ML     g )NNSMr   r	   )LRIRLIFSIPDION)r0   r;   ALrl   r0   ENANESCSrn   rm   ir.   c                    > U S:X  a  gTR                   U S-
     R                  S:X  a  T" U S-
  5      $ TR                   U S-
     R                  S:H  $ )Nr   Fr	   ETrm   )r[   r)   )rr   
prev_is_enr4   s    r5   ru   3IsolatingRun.resolve_weak_types.<locals>.prev_is_en  sU    Avq1u%00D8!!a%((??1q5)44<<r8   c                    > U [        TR                  5      S-
  :X  a  gTR                  U S-      R                  S:X  a  T" U S-   5      $ TR                  U S-      R                  S:H  $ )Nr	   Frt   rm   )lenr[   r)   )rr   
next_is_enr4   s    r5   ry   3IsolatingRun.resolve_weak_types.<locals>.next_is_en  sd    C(1,,q1u%00D8!!a%((??1q5)44<<r8   rt   )rt   ro   rp   r;   )	enumerater[   r)   rB   r\   rx   rL   rN   )r4   rr   	bidi_charlast_strong_typery   ru   s   `   @@r5   ra   IsolatingRun.resolve_weak_types   s    &doo6LA##u,6''(?(?@''??1q51<<78  "__QU3>>	 7   22I##'77#,#7#7 ##t+##C(##t+0@D0H##D) ) &doo6LAQDOO,q011$$,OOAE*55=OOAE*55=##D) $$,OOAE*55EOOAE*55??1q5)445 ##DOOAE$:$E$EF! 7(	=# 	=$ 	= 	=	=# 	=$ 	= 	= &doo6LA##t+a==JqMM''-##'99##D) 7  22I##'77#,#7#7 ##t+0@C0G##C(	 )r8   c                    / nSn/ n[        U R                  5       GH  u  pEUR                  [        ;   d  M  UR                  S:X  d  M.  [        UR                     S   S:X  a,  US:  a  / s  $ UR                  UR                  U45        US-  n[        UR                     S   S:X  d  M  US:X  a  M  [        USS5       Hk  nXS-
     u  px[        U   S	   UR                  :X  d$  [        U   S	   S
;   d  M8  UR                  S
;   d  MJ  UR                  X45        USUS-
   nUS-
  n  GM     GM     [        U[        S5      S9$ )z
Calculate all the bracket pairs on an isolate run, to be used on rule N0
How to calculate bracket pairs:
- Basic definitions 14, 15 and 16: http://www.unicode.org/reports/tr9/#BD14
- BIDI brackets for dummies: https://www.unicode.org/notes/tn39/
r   rk   r   r   ?   r	   r   r   )r   r   N)key)	r{   r[   r(   r"   r)   appendrangesortedr   )	r4   open_bracketsopen_bracket_countbracket_pairsindexcharcurrent_open_bracket	open_char
open_indexs	            r5   pair_bracketsIsolatingRun.pair_brackets#  sG    02/1$T__5KE~~.4??d3J 08C?)R/!	!(($..%)@A&!+& 08C?)Q. 056H!R0P,0=UV>V0W-	))4V<N))4V<N $. @)00*1DE,9:T<PST<T,UM1E1I.! 1Q 6( mA77r8   c                   ^ ^^ S[         S[        4UU 4S jjmS[         S[        4UU 4S jjmT R                  5       nU(       Ga  T R                  S   R	                  5       nU GH  nSnSnS n[        US   US   5       H  nT R                  U   R                  S:X  a  US:X  d#  T R                  U   R                  S	;   a
  US
:X  a  Sn  OPT R                  U   R                  S:X  a  US
:X  d'  T R                  U   R                  S	;   d  M  US:X  d  M  SnM     U(       a  UnO%U(       a  US
:X  a  SOS
nT" US   5      U:X  a  UnOUnU(       d  M  UT R                  US      l        UT R                  US      l        [        T R                  5      US   S-   :  d  GMA  T R                  US   S-      n	U	R                  S:X  d  GMi  U	R                  S:X  d  GM|  Xil        GM     [        T R                  5       HM  u  pUR                  S;   d  M  T" U
5      T" U
5      :X  a  T" U
5      Ul        M8  UR	                  5       Ul        MO     g )Nr   r.   c                    > U S:X  a  TR                   $ TR                  U S-
     R                  S:X  a  gTR                  U S-
     R                  S;   a  gT" U S-
  5      $ )Nr   r	   r;   r0   rn   rm   r0   )r\   r[   r)   )r   previous_strongr4   s    r5   r   ;IsolatingRun.resolve_neutral_types.<locals>.previous_strongD  sb    z...uqy)44;uqy)448II"519--r8   c                    > U [        TR                  5      S-
  :  a  TR                  $ TR                  U S-      R                  S:X  a  gTR                  U S-      R                  S;   a  gT" U S-   5      $ )Nr	   r;   r   r0   )rx   r[   r]   r)   )r   next_strongr4   s    r5   r   7IsolatingRun.resolve_neutral_types.<locals>.next_strongM  sq    DOO,q00***uqy)44;uqy)448IIuqy))r8   r   Fr	   r;   r   r0   Trf   rk   )BSWSrk   ri   rg   rh   rj   )
rL   rM   r   r[   r=   r   r)   rx   r*   r{   )r4   bracketsembedding_directionbstrong_same_directionstrong_opposite_directionresulting_directionr   opposite_direction	next_charrr   r|   r   r   s   `           @@r5   rb   "IsolatingRun.resolve_neutral_typesC  s:   	.3 	.3 	. 	.	*s 	*s 	* 	* %%'"&//!"4"M"M"O(-%,1)&*#"1Q41.E.99S@/36.99=NN/3604-.99S@/36.99=NN/36481# /$ )*='.0Cs0JPS&&qt,0BB.@+.A+&&7JDOOAaD)47JDOOAaD)44??+adQh6$(OOAaD1H$=	%99UB ) 4 4 <3F0O R &doo6LA## 	( 	 #1%Q7+:1+=I(+4+M+M+OI( 7r8   c                 :   U R                    H  nUR                  S-  S:X  aN  UR                  S:X  a  U=R                  S-  sl        UR                  S;   a  U=R                  S-  sl        Mb  Md  UR                  S;   d  Mv  U=R                  S-  sl        M     g )Nr:   r   r0   r	   rq   )r;   rm   rn   )r[   r+   r)   )r4   r|   s     r5   rc   $IsolatingRun.resolve_implicit_levels  s    I ((1,1''3.--2-''<7--2- 8
 ''+<<--2- )r8   )r[   r]   r\   r.   N)rG   rH   rI   rJ   rK   listr$   rM   r6   ra   tuplerL   r   rb   rc   rO   rP   r8   r5   rY   rY      s[    FI'4#6 'S 's 't 'O)b8tE#s(O4 8@PPd3r8   rY   stringstop_at_pdir-   r.   c                    SnU  H  n[         R                  " U5      nU(       a  UR                  5       (       a  SnUS:X  a  US:X  a  U(       a  [        R                  s  $ US;   a  US-  nUS:X  a  US:  a  US-  nUS;   a  US:X  a  [        R
                  s  $ US:X  d  M  US:X  d  M  [        R                  s  $    [        R                  $ )a4  
This function applies rules P2 and P3 to detect the direction of a paragraph, retuning
the first strong direction and skipping over isolate sequences.
P1 must be applied before calling this function (breaking into paragraphs)
stop_at_pdi can be set to True to get the direction of a single isolate sequence
r   r0   rj   rg   rh   ri   r	   )r0   rl   r;   )r2   r3   r1   r
   LTRRTL)r   r   r-   isolater   r)   s         r5   auto_detect_base_directionr     s     G ..t4
Z''))J7a<K $$$..qLG7Q;qLG$A $$$A $$$  r8   	paragraphc           	      6    " S S[         5      n/ n/ nU S   R                  nU  HI  nUR                  U:w  a%  UR                  UUSSSS.5        / nUR                  nUR                  U5        MK     UR                  UUSSSS.5        S[        S[        4S	 jn[        U5       H  u  pxUS
   (       a  M  US:X  a  U" US   5      n	OU" [        US   X'S-
     S   5      5      n	U[        U5      S-
  :X  a  U" US   5      n
O?US   S   R                  S;   a  U" US   5      n
OU" [        US   X'S-      S   5      5      n
XS'   XS'   M     / n[        U5       H  u  p|US
   (       a  M  US   n	US   n
US   nSUS
'   US   S   R                  S;   af  X'S-   S   H[  nUS   US   :X  d  M  US   S   R                  S:X  d  M)  US==   US   -  ss'   SUS
'   US   n
US   S   R                  S;  d  M[    O   UR                  [        XU
S95        M     U$ )Nc                   N    \ rS rSr% \\S'   \\   \S'   \\S'   \	\S'   \	\S'   Sr
g)	(calculate_isolate_runs.<locals>.LevelRuni  leveltextcompleter^   r_   rP   N)rG   rH   rI   rJ   rL   rW   r   r$   rN   rM   rO   rP   r8   r5   LevelRunr     s!    
=!!r8   r   r   F )r   r   r   r^   r_   r   r.   c                     U S-  S:X  a  gg)Nr:   r   r;   r0   rP   )r   s    r5   level_to_direction2calculate_isolate_runs.<locals>.level_to_direction  s    19>r8   r   r	   r   r   r   r^   r_   Trj   )r[   r^   r_   )
r   r+   r   rL   rM   r{   maxrx   r*   rY   )r   r   	level_runlrlr_embedding_levelr|   r   r   lr1r^   r_   isolate_runslr2ir_charsnlrs                  r5   calculate_isolate_runsr     sy   9  !#I B'l::	$$(::/ % B!*!:!:
		)  '	
# #   	*
z?A:$S\2C$SWy7KG7T%UVCC	NQ&&$S\2C6{2226KK(W6(Gi	&:7&CD E
E
% +* (*L	*
z?%j%jv;Jv;r?..2GG -LCL0FA::eCK3v;.K&*C
Oe*C6{2::BWW . 	LH3OP% +( r8   c            	          \ rS rSrSr  SS\S\\   S\SS4S jjr	S\
\   4S	 jrS\
\   4S
 jrS\\S4   4S jrS\\
\   \\S4   4   4S jrS\4S jrS\\\\4   S4   4S jrSS jrS\\\\4   S4   4S jrS\\S4   4S jrSrg)BidiParagraphi  )r   base_directionr-   base_embedding_levelr[   Nr   r   r-   r.   c                     Xl         U(       d  [        U R                   U5      OUU l        X0l        U R                  [        R
                  :X  a  SOSU l        / U l        U R                  5         g )Nr   r	   )	r   r   r   r-   r
   r   r   r[   get_bidi_characters)r4   r   r   r-   s       r5   r6   BidiParagraph.__init__"  se     	 " 'tyy%8 	
 
$$(9(99Aq 	! 02  "r8   c                     U R                   $ rA   )r[   r<   s    r5   get_charactersBidiParagraph.get_characters5  s    r8   c                 :    U R                  5         U R                  $ rA   )reorder_resolved_levelsr[   r<   s    r5   #get_characters_with_embedding_level1BidiParagraph.get_characters_with_embedding_level8  s     	$$&r8   .c                 "    U R                  5       $ rA   )r   r<   s    r5   get_reordered_characters&BidiParagraph.get_reordered_characters>  s    ++--r8   c                 :    U R                   U R                  5       4$ rA   )r[   r   r<   s    r5   get_allBidiParagraph.get_allA  s     < < >>>r8   c                 N    SR                  S U R                  5        5       5      $ )zUsed for conformance validationr   c              3   8   #    U  H  oR                   v   M     g 7frA   )r(   ).0r   s     r5   	<genexpr>5BidiParagraph.get_reordered_string.<locals>.<genexpr>F  s     K,Jq{{,Js   )joinr   r<   s    r5   get_reordered_string"BidiParagraph.get_reordered_stringD  s     wwKD,H,H,JKKKr8   c                 "    U R                  5       $ rA   )split_bidi_fragmentsr<   s    r5   get_bidi_fragments BidiParagraph.get_bidi_fragmentsH  s    ((**r8   c                    [        5       n[        U R                  SSS9nUR                  [	        U5      5        SnSnSn/ n[        U R                  5       GHO  u  px[        XxUR                  U R                  5      n	S n
U	R                  S:X  a@  [        U R                  US-   S  SU R                  S9[        R                  :X  a  S	OS
U	l
        U	R                  S;   Ga  U	R                  S   S:X  a  UR                  S-   S-  nOUR                  S-   S-  nU	R                  S   S:X  a  UR                  S:w  a  UR                  n
U[        ::  a}  US:X  aw  US:X  aq  Xl        U	R                  S   S:X  a  U	R                  S   OSUl        U	R                  S   S:X  a  US-  nSUl        OSUl        UR                  [	        U5      5        O$U	R                  S   S:X  a  US-  nOUS:X  a  US-  nU	R                  S;  a  UR                  S:w  a  UR                  n
U	R                  S:X  a  US:  a  US-  nOSUS:  aM  Sn US   R                   (       d  UR#                  5         M'   UR#                  5         [	        US   5      nUS-  n[%        U[        5      (       d   eUR                  U	l        UR                  S:w  a  UR                  n
U	R                  S:X  aP  US:X  aJ  US:  a  US-  nO>UR                   (       d-  ['        U5      S:  a  UR#                  5         [	        US   5      nU
(       a  Xl
        U	R                  S;  d  GM  U	R                  S:X  a  U R                  U	l        O!U	R(                  S;  a  UR                  U	l        UR                  U	5        GMR     U(       d  / U l        g X`l        [-        U5        g )NNFrT   r   ri   r	   T)r   r-   rg   rh   )RLELRERLOLROrh   rg   r0   r:   IO)	r   BNr   r   r   r   PDFri   rj   rj   r   r   )r   r   r   r   r   r   r   r   )r   rR   r   r   r   r{   r   r$   r+   r-   r)   r   r
   r   rU   r   rV   pop
isinstancerx   r*   r[   r   )r4   stackcurrent_statusoverflow_isolate_countoverflow_embedding_countvalid_isolate_countresultsr   r   r|   new_bidi_classnew_embedding_levels               r5   r   !BidiParagraph.get_bidi_charactersK  s    +0'* 55(+',

 	W^,-!"#$ ') %TYY/KE%^;;TZZI "N##u, 2		%!)+.D

 %(() 
  $ ##'QQ''*c1&66:+'
 '66:+' ((+s2&BBcI%3%O%ON'94.!30A55H2 %//2c9 ",,Q/  #>
 !++A.#5+q0+DHADIALL!89 ++A.#5.!3.1Q6494## 
, 
 "==D%3%O%ON##u,)A-*a/*(1,/0,$RyCC!IIK$IIK%,U2Y%7N'1,'!.2CDDDD,:,J,J	)!==D%3%O%ON##u,)Q./!30A50 !/ I I #E
Q!IIK-4U2Y-?N'5$## ,  ''3.040I0II-22:OO0>0N0NI-y)c 0f  DO!w'r8   c                    / n[        U R                  5      S:X  a  gSnSnU R                   Hu  nUR                  5       U:w  aP  U(       a7  UR                  UUS:X  a  [        R
                  O[        R                  45        SnUR                  5       nX$R                  -  nMw     U(       a7  UR                  UUS:X  a  [        R
                  O[        R                  45        [        U5      $ )Nr   rP   r   r0   )	rx   r[   r=   r   r
   r   r   r(   r   )r4   bidi_fragmentscurrent_fragmentcurrent_directionr   s        r5   r   "BidiParagraph.split_bidi_fragments  s    :<t1$A))+/@@#")), $5#; !. 1 1%2%6%6	 $& $%$>$>$@!+ !  !!$ -3 &))*..	 ^$$r8   c                    SnSnSnSn[        U R                  5       H  nUR                  S;   a  U R                  Ul        SnO4UR                  S;   a   U(       d  U(       a  U R                  Ul        OSnSnUR                  U:  a  UR                  nUR                  S-  S:w  d  M  UR                  U:  d  M  UR                  nM     U R                  R                  5       n[        X4S-
  S	5       H~  n/ n/ n	U HT  nUR                  U:  a  U	R                  U5        M&  U	(       a  U	R                  5         X-  n/ n	UR                  U5        MV     U	(       a  U	R                  5         X-  nUnM     [        U5      $ )
NTr   i  )r   r   )r   r   ri   rg   rh   rj   Fr:   r	   r   )
reversedr[   r*   r   r+   copyr   r   reverser   )
r4   before_separatorend_of_line	max_levelmin_odd_levelr|   reordered_paragraphr   temp_resultsrevs
             r5   r   %BidiParagraph.reorder_resolved_levels  sq   	!$//2I ,,
:,0,E,E	)#' .. 3  ${040I0II-#( #((94%55	))A-2--= ) 9 95 3< #oo2249a&7<E02L')C0	,,5JJy)$+  ''	2 1 #". =  ())r8   )r   r   r[   r-   r   )NFr   )rG   rH   rI   rJ   rK   rM   r   r
   rN   r6   r   r$   r   r   r   r   r   r   r   r   r   r   rO   rP   r8   r5   r   r     s
   I 37	## !/# 	#
 
#&] 3 T-5H .%s0B*C .?tM2E-:L4MMN ?Lc L+E%]0B*CS*H$I +G(R!%eE#}2D,Es,J&K !%F4*}c/A)B 4*r8   r   )FF)r2   collectionsr   dataclassesr   r   operatorr   typingr   r   enumsr
   r   rL   rW   r"   dictrM   r$   rR   rY   rN   r   r   r   r   rP   r8   r5   <module>r     s+
  
   *  &  	3 
A,#s	#A,#s	#A, #s	#A, #s	#	A,
 #s	#A, #s	#A, 
E3'A, 
E3'A, 
E3'A, 
E3'A, 
E3'A, 
E3'A, 
E3'A, 
E3'A, 
E3'A,  
E3'!A," 
E3'#A,$ 
E3'%A,& 
E3''A,( 
E3')A,* 
E3'+A,, 
E3'-A,. 
E3'/A,0 
E3'1A,2 
E3'3A,4 
E3'5A,6 
E3'7A,8 
E3'9A,: 
E3';A,< 
E3'=A,> 
E3'?A,@ 
E3'AA,B 
E3'CA,D 
E3'EA,F 
E3'GA,H 
E3'IA,J 
E3'KA,L 
E3'MA,N 
E3'OA,P 
E3'QA,R 
E3'SA,T 
E3'UA,V 
E3'WA,X 
E3'YA,Z 
E3'[A,\ 
E3']A,^ 
E3'_A,` 
E3'aA,b 
E3'cA,d 
E3'eA,f 
E3'gA,h 
E3'iA,j 
E3'kA,l 
E3'mA,n 
E3'oA,p 
E3'qA,r 
E3'sA,t 
E3'uA,v 
E3'wA,x 
E3'yA,z 
E3'{A,| 
E3'}A,~ 
E3'A,@ 
E3'AA,B 
E3'CA,D 
E3'EA,F 
E3'GA,H 
E3'IA,J 
E3'KA,L 
E3'MA,N 
E3'OA,P 
E3'QA,R 
E3'SA,T 
E3'UA,V 
E3'WA,X 
E3'YA,Z 
E3'[A,\ 
E3']A,^ 
E3'_A,` 
E3'aA,b 
E3'cA,d 
E3'eA,f 
E3'gA,h 
E3'iA,j 
E3'kA,l 
E3'mA,n 
E3'oA,p 
E3'qA,r 
E3'sA,t 
E3'uA,v 
E3'wA,x 
E3'yA,z 
E3'{A,| 
E3'}A,~ 
E3'A,@ 
E3'AA,B 
E3'CA,D 
E3'EA,F 
E3'GA,H 
E3'IA,J 
E3'KA,L 
E3'MA,N 
E3'OA,P 
E3'QA,R 
E3'SA,T 
E3'UA,V 
E3'WA,X 
E3'YA,Z 
E3'[A,\ 
E3']A,^ 
E3'_A,` 
E3'aA,b 
E3'cA,d 
E3'eA,f 
E3'gA,h 
E3'iA,j 
E3'kA,l 
E3'mA,n 
E3'oA,p 3'3'3'3'3'3'3'3'3'AA,tCc3h'( AH"
 "
J % % %[3 [3~ ;@"378Ud=&9 Ud<>P UpR* R*r8   