+
    5i                       a  R t0 t ^ RIt^ RIHt ^ RIHtHt ^ RIHt ^ RI	H
t
Ht ^RIHt ^}t] ^ k / RRR	R
R/bR	RRR
R/bRRRR
R/bRRRR
R/bRRRR
R/bRRRR
R/bRRRR
R/bRRRR
R/bRRRR
R/bRRRR
R/bRRRR
R/bRRRR
R/bRRRR
R/bRRRR
R/bRRRR
R/bRRRR
R/bRRRR
R/b/ RRRR
R/bRRRR
R/bRRRR
R/bRRR R
R/bR RRR
R/bR!RR"R
R/bR"RR!R
R/bR#RR$R
R/bR$RR#R
R/bR%RR&R
R/bR&RR%R
R/bR'RR(R
R/bR(RR'R
R/bR)RR*R
R/bR*RR)R
R/bR+RR,R
R/bR,RR+R
R/bC/ R-RR.R
R/bR.RR-R
R/bR/RR0R
R/bR0RR/R
R/bR1RR2R
R/bR2RR1R
R/bR3RR4R
R/bR4RR3R
R/bR5RR6R
R/bR6RR5R
R/bR7RR8R
R/bR8RR7R
R/bR9RR:R
R/bR:RR9R
R/bR;RR<R
R/bR<RR;R
R/bR=RR>R
R/bC/ R>RR=R
R/bR?RR@R
R/bR@RR?R
R/bRARRBR
R/bRBRRAR
R/bRCRRDR
R/bRDRRCR
R/bRERRFR
R/bRFRRER
R/bRGRRHR
R/bRIRRJR
R/bRJRRIR
R/bRHRRGR
R/bRKRRLR
R/bRLRRKR
R/bRMRRNR
R/bRNRRMR
R/bC/ RORRPR
R/bRPRROR
R/bRQRRRR
R/bRRRRQR
R/bRSRRTR
R/bRTRRSR
R/bRURRVR
R/bRVRRUR
R/bRWRRXR
R/bRXRRWR
R/bRYRRZR
R/bRZRRYR
R/bR[RR\R
R/bR\RR[R
R/bR]RR^R
R/bR^RR]R
R/bR_RR`R
R/bC/ R`RR_R
R/bRaRRbR
R/bRbRRaR
R/bRcRRdR
R/bRdRRcR
R/bReRRfR
R/bRfRReR
R/bRgRRhR
R/bRhRRgR
R/bRiRRjR
R/bRjRRiR
R/bRkRRlR
R/bRlRRkR
R/bRmRRnR
R/bRnRRmR
R/bRoRRpR
R/bRpRRoR
R/bC/ RqRRrR
R/bRrRRqR
R/bRsRRtR
R/bRtRRsR
R/bRuRRvR
R/bRvRRuR
R/bRwRRxR
R/bRxRRwR
R/bRyRRzR
R/bRzRRyR
R/bR{RR|R
R/bR|RR{R
R/bR}RR~R
R/bR~RR}R
R/bRRRR
R/bRRRR
R/bRRRR
R/bCRRRR
R/RRRR
R/RRRR
R/RRRR
R/RRRR
R/RRRR
R/RRRR
R/RRRR
R/RRRR
R//	Ct] ^k  ! R R4      t] ! R R4      4       t ! R R4      tRR R lltR R lt ! R R4      tR# )    N)deque)	dataclassreplace)
itemgetter)Optional	TypedDict)TextDirection(pair)typeo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   （u   ）u   ［u   ］u   ｛u   ｝u   ｟u   ｠u   ｢u   ｣c                   p   a  ] tR t^t o . ROtV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltR	t	V t
R
# )BidiCharacterc          
      6   < V ^8  d   QhRS[ RS[RS[ RS[RR/# )   character_index	characterembedding_leveldebugreturnNintstrbool)format__classdict__s   "O/Users/agent/.openclaw/workspace/venv/lib/python3.14/site-packages/fpdf/bidi.py__annotate__BidiCharacter.__annotate__   s5      "/2EHQU	    c                    Wn         W n        V'       d   VP                  4       '       d	   R V n        M\        P
                  ! V4      V n        V P                  V n        W0n        RV n        R# )RN)	r   r   isupper
bidi_classunicodedatabidirectionaloriginal_bidi_classr   	direction)selfr   r   r   r   s   &&&&&r%   __init__BidiCharacter.__init__   sR      /"Y&&((!DO)77	BDO#'?? .r(   c                    < V ^8  d   QhRS[ /# r   r   r!   )r#   r$   s   "r%   r&   r'      s     8 8# 8r(   c                <    V P                   ^,          '       d   R# R# )r   r*   L)r   r1   s   &r%   get_direction_from_level&BidiCharacter.get_direction_from_level   s    **Q..s7C7r(   c                $   < V ^8  d   QhRS[ RR/# )r   clsr   Nr6   )r#   r$   s   "r%   r&   r'      s      S T r(   c                    Wn         R # N)r,   )r1   r=   s   &&r%   	set_classBidiCharacter.set_class   s    r(   c                    < V ^8  d   QhRS[ /# r5   r6   )r#   r$   s   "r%   r&   r'      s     
 
# 
r(   c                    R V P                    RV P                   2RV P                   RV P                   2,           RV P                   RV P
                   2,           # )zcharacter_index: z character: z bidi_class: z original_bidi_class: z embedding_level: z direction: r   r   r,   r/   r   r0   r9   s   &r%   __repr__BidiCharacter.__repr__   sh     4 45\$..AQRdoo..DTE]E]D^_`"4#7#7"8T^^DTUV	
r(   )r,   r   r   r0   r   r/   NrD   )__name__
__module____qualname____firstlineno__	__slots__r2   r:   r@   rE   __static_attributes____classdictcell__r$   s   @r%   r   r      s4     I 8 8 
 
r(   r   c                   4   a  ] tR t^t o . ROtV 3R ltRtV tR# )DirectionalStatusc                >   < V ^8  d   Qh/ S[ ;R&   S[;R&   S[;R&   # )r   r   directional_override_statusdirectional_isolate_statusr   )r#   r$   s   "r%   r&   DirectionalStatus.__annotate__   s,        "%$  !%$ r(    Nr   rR   rS   )rG   rH   rI   rJ   rK   __annotate_func__rL   rM   rN   s   @r%   rP   rP      s     I  r(   rP   c                      a  ] tR t^t o . ROtV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltV 3R	 lR
 lt	Rt
V tR# )IsolatingRunc                @   < V ^8  d   QhRS[ S[,          RS[RS[RR/# )r   
characterssoseosr   N)listr   r!   )r#   r$   s   "r%   r&   IsolatingRun.__annotate__   s.     ' '4#6 'S 's 't 'r(   c                    Wn         W n        W0n        V P                  4        V P	                  4        V P                  4        R # r?   )r[   previous_directionnext_directionresolve_weak_typesresolve_neutral_typesresolve_implicit_levels)r1   r[   r\   r]   s   &&&&r%   r2   IsolatingRun.__init__   s7    $"%!!""$$$&r(   c                   < V ^8  d   QhRR/# r   r   NrU   )r#   r$   s   "r%   r&   r_      s     O) O)D O)r(   c                r  a aa \        S P                  4       F  w  rVP                  R 8X  g   K  V^ 8X  d   VP                  S P                  4       K<  TP                  S P                  V^,
          ,          P                  R9   d   RM#S P                  V^,
          ,          P                  4       K  	  S P                  pS P                   Fo  pVP                  R9   d   VP                  pVP                  R8X  d   VP                  R4       VP                  R8X  g   KU  VR8X  g   K^  VP                  R4       Kq  	  \        S P                  4       EF^  w  rV^ \        S P                  4      ^,
          39   d   K+  VP                  R8X  dd   S P                  V^,
          ,          P                  R8X  d;   S P                  V^,           ,          P                  R8X  d   VP                  R4       VP                  R8X  g   K  S P                  V^,
          ,          P                  R9   g   K  S P                  V^,           ,          P                  S P                  V^,
          ,          P                  8X  g   EK+  VP                  S P                  V^,
          ,          P                  4       EKa  	  R	 VV 3R
 lloR VV 3R llo\        S P                  4       Fg  w  rVP                  R8X  d.   S! V4      '       g   S! V4      '       d   VP                  R4       VP                  R9   g   KV  VP                  R4       Ki  	  S P                  pS P                   FM  pVP                  R9   d   VP                  pVP                  R8X  g   K3  VR8X  g   K<  VP                  R4       KO  	  R# )NSMONr*   r8   ALENANESCSc                0    V ^8  d   QhR\         R\        /# r   ir   r    r"   )r#   s   "r%   r&   5IsolatingRun.resolve_weak_types.<locals>.__annotate__       	= 	=# 	=$ 	=r(   c                    < V ^ 8X  d   R# SP                   V ^,
          ,          P                  R8X  d   S! V ^,
          4      # SP                   V ^,
          ,          P                  R8H  # )r   FETrm   )r[   r,   )rs   
prev_is_enr1   s   &r%   ry   3IsolatingRun.resolve_weak_types.<locals>.prev_is_en  sU    Avq1u%00D8!!a%((??1q5)44<<r(   c                0    V ^8  d   QhR\         R\        /# rr   rt   )r#   s   "r%   r&   ru     rv   r(   c                   < V \        SP                  4      ^,
          8X  d   R# SP                  V ^,           ,          P                  R8X  d   S! V ^,           4      # SP                  V ^,           ,          P                  R8H  # )   Frx   rm   )lenr[   r,   )rs   
next_is_enr1   s   &r%   r   3IsolatingRun.resolve_weak_types.<locals>.next_is_en  sd    C(1,,q1u%00D8!!a%((??1q5)44<<r(   rx   N)LRIRLIFSIPDI)r*   r8   rl   rn   rm   )rx   ro   rp   )	enumerater[   r,   r@   ra   r~   )r1   rs   	bidi_charlast_strong_typer   ry   s   f   @@r%   rc   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(	 )r(   c                F   < V ^8  d   QhRS[ S[S[S[3,          ,          /# r5   )r^   tupler    )r#   r$   s   "r%   r&   r_   #  s!     8 8tE#s(O4 8r(   c                   . p^ p. p\        V P                  4       EFQ  w  rEVP                  \        9   g   K  VP                  R8X  g   K0  \        VP                  ,          R,          R8X  d2   V^?8  d   . u # VP                  VP                  V34       V^,          p\        VP                  ,          R,          R8X  g   K  V^ 8X  d   K  \        V^ R4       F  pW^,
          ,          w  rx\        V,          R,          VP                  8X  g/   \        V,          R,          R	9   g   KR  VP                  R	9   g   Ke  VP                  W34       VRV^,
           pV^,
          p EKO  	  EKT  	  \        V\        ^ 4      R7      # )
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/
rk   r   r   r   r   N)key)r   r   )	r   r[   r   BIDI_BRACKETSr,   appendrangesortedr   )	r1   open_bracketsopen_bracket_countbracket_pairsindexcharcurrent_open_bracket	open_char
open_indexs	   &        r%   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7r(   c                   < V ^8  d   QhRR/# rh   rU   )r#   r$   s   "r%   r&   r_   C  s     PP PPt PPr(   c                ,  a aa R  VV 3R lloR VV 3R lloS P                  4       pV'       Ed   S P                  ^ ,          P                  4       pV EF  pRpRpRp\        V^ ,          V^,          4       F  pS P                  V,          P                  R8X  d   VR8X  g*   S P                  V,          P                  R9   d   VR8X  d   Rp M\S P                  V,          P                  R8X  d   VR8X  g.   S P                  V,          P                  R9   g   K  VR8X  g   K  RpK  	  V'       d   TpM,V'       d%   VR8X  d   RMRpS! V^ ,          4      V8X  d   TpMTpV'       g   EK  VS P                  V^ ,          ,          n        VS P                  V^,          ,          n        \        S P                  4      V^,          ^,           8  g   EK  S P                  V^,          ^,           ,          p	V	P                  R	8X  g   EK  V	P                  R
8X  g   EK  Win        EK  	  \        S P                  4       FO  w  rVP                  R9   g   K  S! V
4      S! V
4      8X  d   S! V
4      Vn        K:  VP                  4       Vn        KQ  	  R# )c                0    V ^8  d   QhR\         R\        /# r   r   r   r    r!   )r#   s   "r%   r&   8IsolatingRun.resolve_neutral_types.<locals>.__annotate__D  s     	. 	.3 	.3 	.r(   c                    < V ^ 8X  d   SP                   # SP                  V ^,
          ,          P                  R8X  d   R# SP                  V ^,
          ,          P                  R9   d   R# S! V ^,
          4      # )r   r8   r*   r*   rn   rm   )ra   r[   r,   )r   previous_strongr1   s   &r%   r   ;IsolatingRun.resolve_neutral_types.<locals>.previous_strongD  sb    z...uqy)44;uqy)448II"519--r(   c                0    V ^8  d   QhR\         R\        /# r   r   )r#   s   "r%   r&   r   M  s     	* 	*s 	*s 	*r(   c                 (  < V \        SP                  4      ^,
          8  d   SP                  # SP                  V ^,           ,          P                  R8X  d   R# SP                  V ^,           ,          P                  R9   d   R# S! V ^,           4      # )r}   r8   r*   r   )r~   r[   rb   r,   )r   next_strongr1   s   &r%   r   7IsolatingRun.resolve_neutral_types.<locals>.next_strongM  sq    DOO,q00***uqy)44;uqy)448IIuqy))r(   FNr8   r*   Trj   rk   r   )BSWSrk   r   r   r   r   )r   r[   r:   r   r,   r~   r/   r   )r1   bracketsembedding_directionbstrong_same_directionstrong_opposite_directionresulting_directionr   opposite_direction	next_charrs   r   r   r   s   f           @@r%   rd   "IsolatingRun.resolve_neutral_typesC  s    	. 	.	* 	* %%'8"&//!"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( 7r(   c                   < V ^8  d   QhRR/# rh   rU   )r#   r$   s   "r%   r&   r_     s     3 3 3r(   c                d   V P                    F  pVP                  ^,          ^ 8X  dY   VP                  R8X  d   V;P                  ^,          un        VP                  R9   d   V;P                  ^,          un        Kq  Ks  VP                  R9   g   K  V;P                  ^,          un        K  	  R# )r   r*   Nr   )r8   rm   rn   )r[   r   r,   )r1   r   s   & r%   re   $IsolatingRun.resolve_implicit_levels  s    I ((1,1''3.--2-''<7--2- 8
 ''+<<--2- )r(   )r[   rb   ra   N)r[   ra   rb   )rG   rH   rI   rJ   rK   r2   rc   r   rd   re   rL   rM   rN   s   @r%   rY   rY      sE     FI' 'O) O)b8 8@PP PPd3 3r(   rY   c                H    V ^8  d   QhR\         R\        R\        R\        /# )r   stringstop_at_pdir   r   )r!   r"   r	   )r#   s   "r%   r&   r&     s,      "37r(   c                   ^ pV  F  p\         P                  ! V4      pV'       d   VP                  4       '       d   RpVR8X  d"   V^ 8X  d   V'       d   \        P                  u # VR9   d
   V^,          pVR8X  d   V^ 8  d
   V^,          pVR9   d   V^ 8X  d   \        P
                  u # VR8X  g   K  V^ 8X  g   K  \        P                  u # 	  \        P                  # )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*   r   r8   r   r   r   )r*   rl   )r-   r.   r+   r	   LTRRTL)r   r   r   isolater   r,   s   &&&   r%   auto_detect_base_directionr     s     G ..t4
Z''))J7a<K $$$..qLG7Q;qLG$A $$$A $$$  r(   c                \    V ^8  d   QhR\         \        ,          R\         \        ,          /# )r   	paragraphr   )r^   r   rY   )r#   s   "r%   r&   r&     s(     U Ud=&9 Ud<>P Ur(   c                 V    ! R  R\         4      p. p. pV ^ ,          P                  pV  FN  pVP                  V8w  d*   VP                  RVRVRRRRRR/4       . pVP                  pVP                  V4       KP  	  VP                  RVRVRRRRRR/4       R	 R
 lp\        V4       F  w  rxVR,          '       d   K  V^ 8X  d   V! VR,          4      p	M-V! \	        VR,          W'^,
          ,          R,          4      4      p	V\        V4      ^,
          8X  d   V! VR,          4      p
M\VR,          R,          P                  R9   d   V! VR,          4      p
M-V! \	        VR,          W'^,           ,          R,          4      4      p
WR&   WR&   K  	  . p\        V4       EF  w  r|VR,          '       d   K  VR,          p	VR,          p
VR,          pRVR&   VR,          R,          P                  R9   d   W'^,           R  F  pVR,          VR,          8X  g   K  VR,          ^ ,          P                  R8X  g   K;  VR;;,          VR,          ,          uu&   RVR&   VR,          p
VR,          R,          P                  R9  g   K   M	  VP                  \        WV
R7      4       EK
  	  V# )c                   ,   a  ] tR tRt o V 3R ltRtV tR# )(calculate_isolate_runs.<locals>.LevelRuni  c                f   < V ^8  d   Qh/ S[ ;R&   S[S[,          ;R&   S[;R&   S[;R&   S[;R&   # )r   leveltextcompleter\   r]   )r    r^   r   r"   r!   )r#   r$   s   "r%   r&   5calculate_isolate_runs.<locals>.LevelRun.__annotate__  sC     
 =!!    	 
  r(   rU   N)rG   rH   rI   rJ   rW   rL   rM   rN   s   @r%   LevelRunr     s      r(   r   r   r   r   Fr\    r]   c                0    V ^8  d   QhR\         R\        /# )r   r   r   r   )r#   s   "r%   r&   ,calculate_isolate_runs.<locals>.__annotate__  s      # # r(   c                 &    V ^,          ^ 8X  d   R# R# )r   r8   r*   rU   )r   s   &r%   level_to_direction2calculate_isolate_runs.<locals>.level_to_direction  s    19>r(   TNr   )r[   r\   r]   r   r   )r   r   r   r   maxr~   r/   rY   )r   r   	level_runlrlr_embedding_levelr   r   r   lr1r\   r]   isolate_runslr2ir_charsnlrs   &              r%   calculate_isolate_runsr     s   9  !#I B'l::	$$(::/B22 B!*!:!:
		)  'B22	
  	*
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% +( r(   c                      a  ] tR tRt o RtRV 3R lR lltV 3R lR ltV 3R lR ltV 3R	 lR
 ltV 3R lR lt	V 3R lR lt
V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltRtV tR# )BidiParagraphi  Nc                @   < V ^8  d   QhRS[ RS[S[,          RS[RR/# )r   r   base_directionr   r   N)r!   r   r	   r"   )r#   r$   s   "r%   r&   BidiParagraph.__annotate__"  s8     # ## !/# 	#
 
#r(   c                    Wn         V'       g   \        V P                   V4      MTV n        W0n        V P                  \        P
                  8X  d   ^ M^V n        . V n        V P                  4        R# )r   N)	r   r   r   r   r	   r   base_embedding_levelr[   get_bidi_characters)r1   r   r   r   s   &&&&r%   r2   BidiParagraph.__init__"  se     	 " 'tyy%8 	
 
$$(9(99Aq 	! 02  "r(   c                0   < V ^8  d   QhRS[ S[,          /# r5   r^   r   )r#   r$   s   "r%   r&   r   5  s      ] 3 r(   c                    V P                   # r?   )r[   r9   s   &r%   get_charactersBidiParagraph.get_characters5  s    r(   c                0   < V ^8  d   QhRS[ S[,          /# r5   r   )r#   r$   s   "r%   r&   r   8  s      T-5H r(   c                :    V P                  4        V P                  # r?   )reorder_resolved_levelsr[   r9   s   &r%   #get_characters_with_embedding_level1BidiParagraph.get_characters_with_embedding_level8  s     	$$&r(   c                4   < V ^8  d   QhRS[ S[R3,          /# r   r   .r   r   )r#   r$   s   "r%   r&   r   >  s     . .%s0B*C .r(   c                "    V P                  4       # r?   )r   r9   s   &r%   get_reordered_characters&BidiParagraph.get_reordered_characters>  s    ++--r(   c                Z   < V ^8  d   QhRS[ S[S[,          S[ S[R3,          3,          /# r   )r   r^   r   )r#   r$   s   "r%   r&   r   A  s-     ? ?tM2E-:L4MMN ?r(   c                :    V P                   V P                  4       3# r?   )r[   r   r9   s   &r%   get_allBidiParagraph.get_allA  s     < < >>>r(   c                    < V ^8  d   QhRS[ /# r5   r6   )r#   r$   s   "r%   r&   r   D  s     L Lc Lr(   c                N    RP                  R V P                  4        4       4      # )zUsed for conformance validationr   c              3   8   "   T F  qP                   x  K  	  R # 5ir?   )r   ).0r   s   & r%   	<genexpr>5BidiParagraph.get_reordered_string.<locals>.<genexpr>F  s     K,Jq{{,Js   )joinr   r9   s   &r%   get_reordered_string"BidiParagraph.get_reordered_stringD  s     wwKD,H,H,JKKKr(   c                J   < V ^8  d   QhRS[ S[ S[S[3,          R3,          /# r   r   r!   r	   )r#   r$   s   "r%   r&   r   H  s(     + +E%]0B*CS*H$I +r(   c                "    V P                  4       # r?   )split_bidi_fragmentsr9   s   &r%   get_bidi_fragments BidiParagraph.get_bidi_fragmentsH  s    ((**r(   c                   < V ^8  d   QhRR/# rh   rU   )r#   r$   s   "r%   r&   r   K  s     G( G(T G(r(   c                   \        4       p\        V P                  R RR7      pVP                  \	        V4      4       ^ p^ p^ p. p\        V P                  4       EF  w  rx\        WxVP                  V P                  4      p	Rp
V	P                  R8X  dI   \        V P                  V^,           R RV P                  R7      \        P                  8X  d   RMRV	n
        V	P                  R9   EdQ   V	P                  ^ ,          R	8X  d   VP                  ^,           ^,          pMVP                  ^,           R,          pV	P                  ^,          R
8X  d   VP                  R 8w  d   VP                  p
V\        8:  d   V^ 8X  d   V^ 8X  d   Wn        V	P                  ^,          R8X  d   V	P                  ^ ,          MR Vn        V	P                  ^,          R
8X  d   V^,          pRVn        MRVn        VP                  \	        V4      4       M2V	P                  ^,          R
8X  d   V^,          pMV^ 8X  d
   V^,          pV	P                  R9  d   VP                  R 8w  d   VP                  p
V	P                  R8X  d   V^ 8  d   V^,          pMaV^ 8  d[   ^ p VR,          P                   '       g   VP#                  4        K,   TP#                  4        \	        TR,          4      pT^,          p\%        V\        4      '       g   Q hVP                  V	n        VP                  R 8w  d   VP                  p
V	P                  R8X  d]   V^ 8X  dV   V^ 8  d   V^,          pMDVP                   '       g3   \'        V4      ^8  d#   VP#                  4        \	        VR,          4      pV
'       d   Wn
        V	P                  R9  g   EKj  V	P                  R8X  d   V P                  V	n        M"V	P(                  R9  d   VP                  V	n        VP                  V	4       EK  	  V'       g
   . V n        R# W`n        \-        V4       R# )NFrV   Nr   T)r   r   r   r   r*   IOr   PDFr   )RLELRERLOLROr   r   )	r   BNr  r  r  r  r  r   r   r   )r  r  r  r  r  r  r   )r   rP   r   r   r   r   r   r   r   r   r,   r   r	   r   rR   	MAX_DEPTHrS   pop
isinstancer~   r/   r[   r   )r1   stackcurrent_statusoverflow_isolate_countoverflow_embedding_countvalid_isolate_countresultsr   r   r   new_bidi_classnew_embedding_levels   &           r%   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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 I #E
Q!IIK-4U2Y-?N'5$## ,  ''3.040I0II-22:OO0>0N0NI-y)c 0f  DO!w'r(   c                J   < V ^8  d   QhRS[ S[ S[S[3,          R3,          /# r   r  )r#   r$   s   "r%   r&   r     s(     !% !%eE#}2D,Es,J&K !%r(   c                   . p\        V P                  4      ^ 8X  d   R# RpRpV P                   F|  pVP                  4       V8w  dS   V'       d9   TP                  TVR8X  d   \        P
                  M\        P                  34       RpVP                  4       pW$P                  ,          pK~  	  V'       d9   TP                  TVR8X  d   \        P
                  M\        P                  34       \        V4      # )r   r   r*   rU   )	r~   r[   r:   r   r	   r   r   r   r   )r1   bidi_fragmentscurrent_fragmentcurrent_directionr   s   &    r%   r  "BidiParagraph.split_bidi_fragments  s    :<t1$IA))+/@@#")), $5#; !. 1 1%2%6%6	 $& $%$>$>$@!+ !  !!$ -3 &))*..	 ^$$r(   c                4   < V ^8  d   QhRS[ S[R3,          /# r   r   )r#   r$   s   "r%   r&   r     s     4* 4*}c/A)B 4*r(   c                8   R pR p^ pRp\        V P                  4       F  pVP                  R9   d   V P                  Vn        R pM7VP                  R9   d#   V'       g	   V'       d   V P                  Vn        MRpRpVP                  V8  d   VP                  pVP                  ^,          ^ 8w  g   K  VP                  V8  g   K  VP                  pK  	  V P                  P                  4       p\        W4^,
          R4       F  p. p. p	V FZ  pVP                  V8  d   V	P                  V4       K'  V	'       d   V	P                  4        W,          p. p	VP                  V4       K\  	  V	'       d   V	P                  4        W,          pTpK  	  \        V4      # )Ti  F)r   r   )r  r   r   r   r   r   r   )
reversedr[   r/   r   r   copyr   r   reverser   )
r1   before_separatorend_of_line	max_levelmin_odd_levelr   reordered_paragraphr   temp_resultsrevs
   &         r%   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 #". =  ())r(   )r   r   r[   r   r   )r   r   r   r   r[   )NF)rG   rH   rI   rJ   rK   r2   r   r   r   r   r  r  r   r  r   rL   rM   rN   s   @r%   r   r     sv     I# #&  . .? ?L L+ +G( G(R!% !%F4* 4*r(   r   c                    V ^8  d   Qh/ ^ \         9   d
   \        ;R&   ^\         9   d,   \        \        \        \        \        3,          3,          ;R&   # )r   r  r   )__conditional_annotations__r    dictr!   )r#   s   "r%   r&   r&      sE        3  A AtCc3h'( A r(   )FF)r6  r-   collectionsr   dataclassesr   r   operatorr   typingr   r   enumsr	   r  r   r   rP   rY   r   r   r   r&   )r6  s   @r%   <module>r=     s  
    *  &  	 
A,&#vs	#A,&#vs	#A, &#vs	#A, &#vs	#	A,
 &#vs	#A, &#vs	#A, 
FE63'A, 
FE63'A, 
FE63'A, 
FE63'A, 
FE63'A, 
FE63'A, 
FE63'A, 
FE63'A, 
FE63'A,  
FE63'!A," 
FE63'#A,$ 
FE63'%A,& 
FE63''A,( 
FE63')A,* 
FE63'+A,, 
FE63'-A,. 
FE63'/A,0 
FE63'1A,2 
FE63'3A,4 
FE63'5A,6 
FE63'7A,8 
FE63'9A,: 
FE63';A,< 
FE63'=A,> 
FE63'?A,@ 
FE63'AA,B 
FE63'CA,D 
FE63'EA,F 
FE63'GA,H 
FE63'IA,J 
FE63'KA,L 
FE63'MA,N 
FE63'OA,P 
FE63'QA,R 
FE63'SA,T 
FE63'UA,V 
FE63'WA,X 
FE63'YA,Z 
FE63'[A,\ 
FE63']A,^ 
FE63'_A,` 
FE63'aA,b 
FE63'cA,d 
FE63'eA,f 
FE63'gA,h 
FE63'iA,j 
FE63'kA,l 
FE63'mA,n 
FE63'oA,p 
FE63'qA,r 
FE63'sA,t 
FE63'uA,v 
FE63'wA,x 
FE63'yA,z 
FE63'{A,| 
FE63'}A,~ 
FE63'A,@ 
FE63'AA,B 
FE63'CA,D 
FE63'EA,F 
FE63'GA,H 
FE63'IA,J 
FE63'KA,L 
FE63'MA,N 
FE63'OA,P 
FE63'QA,R 
FE63'SA,T 
FE63'UA,V 
FE63'WA,X 
FE63'YA,Z 
FE63'[A,\ 
FE63']A,^ 
FE63'_A,` 
FE63'aA,b 
FE63'cA,d 
FE63'eA,f 
FE63'gA,h 
FE63'iA,j 
FE63'kA,l 
FE63'mA,n 
FE63'oA,p 
FE63'qA,r 
FE63'sA,t 
FE63'uA,v 
FE63'wA,x 
FE63'yA,z 
FE63'{A,| 
FE63'}A,~ 
FE63'A,@ 
FE63'AA,B 
FE63'CA,D 
FE63'EA,F 
FE63'GA,H 
FE63'IA,J 
FE63'KA,L 
FE63'MA,N 
FE63'OA,P 
FE63'QA,R 
FE63'SA,T 
FE63'UA,V 
FE63'WA,X 
FE63'YA,Z 
FE63'[A,\ 
FE63']A,^ 
FE63'_A,` 
FE63'aA,b 
FE63'cA,d 
FE63'eA,f 
FE63'gA,h 
FE63'iA,j 
FE63'kA,l 
FE63'mA,n 
FE63'oA,p 
FE63'	FE63'	FE63'	FE63'	FE63'	FE63'	FE63'	FE63'	FE63'AA, AH"
 "
J % % %[3 [3|8UpR* R*r(   