ó
    {ñ:it¤ ã                  óò  • S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSKrSSKJr  SSKrSSKJrJrJrJrJrJrJrJrJrJrJrJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&  SSK'r(SSK)J*r*  SSK+J,r,J-r-J.r.J/r/  SS	K0J1r1J2r2J3r3  SS
K4J5r5J6r6J7r7J8r8  \Rr                  (       a  SSK:J;r;  SSK4J<r<  \Rz                  " 5         \R|                  " S5      r?S€S jr@ " S S\5      rAS\AlB         " S S\5      rCS\ClB         " S S5      rD " S S\5      rE " S S\5      rF " S S\RŽ                  5      rH " S S\H\R’                  S9rJ " S S\J5      rK " S  S!\J5      rL " S" S#\L\R’                  S9rM " S$ S%\M5      rN " S& S'\M5      rO " S( S)\L5      rP " S* S+\P5      rQS,rRS-rS " S. S/5      rT " S0 S1\T5      rU " S2 S3\T5      rV " S4 S5\T5      rW " S6 S7\T5      rX " S8 S9\T5      rY0 S:\Y_S;\Y_S<\X_S=\U_S>\U_S?\U_S@\U_SA\U_SB\U_SC\U_SD\V_SE\V_SF\V_SG\V_SH\V_SI\V_SJ\V_\Y\YSK.ErZS�SM jr[ " SN SO5      r\ " SP SQ\\5      r] " SR SS\]5      r^ " ST SU\]5      r_ " SV SW\\5      r` " SX SY\`5      ra " SZ S[\]5      rb " S\ S]\b5      rc " S^ S_\b5      rd " S` Sa\]5      re " Sb Sc\e5      rf " Sd Se\e5      rg " Sf Sg\5      rh\h" ShSiSShS5      \h" ShSiSjShS5      \h" ShSiSkShS5      \h" ShShSSiS5      \h" ShShSSiSj5      \h" ShShSSiSk5      \h" ShShSShS5      \h" ShSiSSlS5      Sm.\hli         " Sn So\\5      rj " Sp Sq\c5      rk " Sr Ss\d5      rl " St Su\\5      rm " Sv Sw\c5      rn " Sx Sy\c5      roS‚SƒSz jjrpS„S{ jrq " S| SL5      rrS…S} jrs " S~ S5      rtg)†z.
Implementation details for :mod:`.mathtext`.
é    )ÚannotationsN)Ú
NamedTuple)ÚEmptyÚForwardÚLiteralÚGroupÚNotAnyÚ	OneOrMoreÚOptionalÚParseBaseExceptionÚParseExceptionÚParseExpressionÚParseFatalExceptionÚParserElementÚParseResultsÚQuotedStringÚRegexÚ	StringEndÚ
ZeroOrMoreÚpyparsing_commonÚnested_exprÚone_ofé   )Úcbook)Úlatex_to_bakomaÚstix_glyph_fixesÚstix_virtual_fontsÚtex2uni)ÚFontPropertiesÚfindfontÚget_font)ÚFT2FontÚFT2ImageÚKerningÚ	LoadFlags)ÚIterable)ÚGlyphzmatplotlib.mathtextc                ó°   •  [        U 5      $ ! [         a     Of = f [        U R                  S5         $ ! [         a  n[        U < S35      UeSnAff = f)zË
Return the integer index (from the Unicode table) of *symbol*.

Parameters
----------
symbol : str
    A single (Unicode) character, a TeX command (e.g. r'\pi') or a Type1
    symbol name (e.g. 'phi').
Ú\z5 is not a valid Unicode character or TeX/Type1 symbolN)ÚordÚ	TypeErrorr   ÚstripÚKeyErrorÚ
ValueError)ÚsymbolÚerrs     ÚW/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/matplotlib/_mathtext.pyÚget_unicode_indexr2   /   sg   € ðÜ�6‹{ÐøÜó ÙðúðÜ�v—|‘| DÓ)Ñ*Ð*øÜó ÜØ‰jÐMÐNóàð	ûðús!   ‚
 �
™ž6 ¶
AÁ AÁAc                  óL   • \ rS rSr% SrS\S'   S\S'   S\S'   S\S'   S	\S
'   Srg)ÚVectorParseéE   zô
The namedtuple type returned by ``MathTextParser("path").parse(...)``.

Attributes
----------
width, height, depth : float
    The global metrics.
glyphs : list
    The glyphs including their positions.
rect : list
    The list of rectangles.
ÚfloatÚwidthÚheightÚdepthz.list[tuple[FT2Font, float, int, float, float]]Úglyphsz'list[tuple[float, float, float, float]]Úrects© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__Ú__static_attributes__r<   ó    r1   r4   r4   E   s$   ‡ ñð ƒLØƒMØƒLØ:Ó:Ø2Ö2rE   r4   c                  óV   • \ rS rSr% SrS\S'   S\S'   S\S'   S\S'   S\S'   S	\S
'   Srg)ÚRasterParseé[   zè
The namedtuple type returned by ``MathTextParser("agg").parse(...)``.

Attributes
----------
ox, oy : float
    The offsets are always zero.
width, height, depth : float
    The global metrics.
image : FT2Image
    A raster image.
r6   ÚoxÚoyr7   r8   r9   r#   Úimager<   Nr=   r<   rE   r1   rG   rG   [   s'   ‡ ñð 	ƒIØƒIØƒLØƒMØƒLØ†OrE   rG   c                  ó6   • \ rS rSrSrSS jrS	S jrS
S jrSrg)ÚOutputér   zÂ
Result of `ship`\ping a box: lists of positioned glyphs and rectangles.

This class is not exposed to end users, but converted to a `VectorParse` or
a `RasterParse` by `.MathTextParser.parse`.
c                ó,   • Xl         / U l        / U l        g ©N©Úboxr:   r;   )ÚselfrR   s     r1   Ú__init__ÚOutput.__init__z   s   € ØŒØ;=ˆŒØ>@ˆ�
rE   c                ó   • [        [        R                  U R                  R                  U R                  R
                  U R                  R                  /5      u  pnU R                   VVVs/ s H:  u  pEnUR                  UR                  UR                  XBU-
  UR                  -   4PM<     nnnnU R                   VV	V
Vs/ s H  u  p‰p«X‚U-
  X¨-
  X¹-
  4PM     nn
n	nn[        XU-   X7U5      $ s  snnnf s  snn
n	nf rP   )ÚmapÚnpÚceilrR   r7   r8   r9   r:   ÚfontÚfontsizeÚnumÚoffsetr;   r4   )rS   ÚwÚhÚdrI   rJ   ÚinfoÚgsÚx1Úy1Úx2Úy2Úrss                r1   Ú	to_vectorÚOutput.to_vector   sÛ   € ÜÜ�G‰G�d—h‘h—n‘n d§h¡h§o¡o°t·x±x·~±~ÐFóH‰ˆˆað #'§+¢+õ/Ú"-‘,�"˜$ð �y‰y˜$Ÿ-™-¨¯©°2¸2±vÀÇÁÑ7KÓLÙ"-ð 	ò /ð %)§J¢Jö0Ú$.‘.�"˜"ð �r‘6˜2™7 B¡GÓ,Ù$.ð 	ó 0ä˜1 !™e Q¨BÓ/Ð/ùô	/ùõ0s   Á-AC1ÃC8
c               ój  • [        / U R                   VVVs/ s H  u  p#oBUR                  R                  -   PM      snnnQU R                   VVVVs/ s H  u  pVpxUPM
     snnnnQSP5      S-
  n	[        / U R                   VVVs/ s H  u  p#oCUR                  R
                  -
  PM      snnnQU R                   VVVVs/ s H  u  pVpxUPM
     snnnnQSP5      S-
  n
[        / U R                   VVVs/ s H  u  p#oBUR                  R                  -   PM      snnnQU R                   VVVVs/ s H  u  pVpxUPM
     snnnnQSP5      S-   n[        / U R                   VVVs/ s H  u  p#oCUR                  R                  -
  PM      snnnQU R                   VVVVs/ s H  u  pVpxUPM
     snnnnQSP5      S-   nX¹-
  nXÊ-
  U R                  R                  -
  nXÊ-
  U R                  R                  -
  n[        [        [        R                  " U5      5      [        [        R                  " U[        US5      -   5      5      5      n[!        U R                  U	* U
* 45      nUR                   HU  u  p#nUR"                  R%                  U[        U5      [        X4R                  R&                  -
  5      UR(                  US9  MW     UR                   HŠ  u  pVpx[        [        X†-
  5      S-
  S5      nUS:X  a  X†-   S-  n[        UUS-   S-  -
  5      nO[        U5      nUR+                  [        U5      U[        [        R                  " U5      5      UU-   5        MŒ     [-        SSXÞU-   UU5      $ s  snnnf s  snnnnf s  snnnf s  snnnnf s  snnnf s  snnnnf s  snnnf s  snnnnf )Nr   r   )Úantialiasedé   )Úminr:   ÚmetricsÚxminr;   ÚymaxÚmaxÚxmaxÚyminrR   r9   r8   r#   ÚintrX   rY   ÚshiprZ   Údraw_glyph_to_bitmapÚicebergÚglyphÚdraw_rect_filledrG   )rS   rk   rI   rJ   ra   rc   rd   re   rf   ro   rs   rr   rp   r^   r_   r`   rK   Úshiftedr8   ÚcenterÚys                        r1   Ú	to_rasterÚOutput.to_rasterˆ   s3  € ô ð ?ÀÇÂÕMÂ±°¸˜4Ÿ<™<×,Ñ,Ô,ÁÓMð ?Ø/3¯zªzÖ:ªz™^˜R R“b©zÔ:ð?Ø<=ð?ó @ØBCñDˆäð ?ÀÇÂÕMÂ±°¸˜4Ÿ<™<×,Ñ,Ô,ÁÓMð ?Ø/3¯zªzÖ:ªz™^˜R R“b©zÔ:ð?Ø<=ð?ó @ØBCñDˆäð ?ÀÇÂÕMÂ±°¸˜4Ÿ<™<×,Ñ,Ô,ÁÓMð ?Ø/3¯zªzÖ:ªz™^˜R R“b©zÔ:ð?Ø<=ð?ó @ØBCñDˆäð ?ÀÇÂÕMÂ±°¸˜4Ÿ<™<×,Ñ,Ô,ÁÓMð ?Ø/3¯zªzÖ:ªz™^˜R R“b©zÔ:ð?Ø<=ð?ó @ØBCñDˆà‰KˆØ‰K˜$Ÿ(™(Ÿ.™.Ñ(ˆØ‰K˜$Ÿ(™(Ÿ/™/Ñ)ˆÜœœRŸWšW Q›Z›¬#¬b¯gªg°a¼#¸aÀ»)±mÓ.DÓ*EÓFˆô �t—x‘x 4 %¨$¨ Ó0ˆà#ŸNœN‰LˆB�DØ�I‰I×*Ñ*Ø”s˜2“w¤ B¯©×)=Ñ)=Ñ$=Ó >ÀÇ
Á
Ø'ð +ó )ñ +ð &Ÿmœm‰NˆB�BÜœ˜R™W›¨Ñ)¨1Ó-ˆFØ˜‹{Ø™' Q™�Ü˜ &¨1¡*°Ñ!1Ñ1Ó2‘ä˜“G�Ø×"Ñ"¤3 r£7¨A¬s´2·7²7¸2³;Ó/?ÀÀVÁÖLñ ,ô ˜1˜a ¨¡E¨1¨eÓ4Ð4ùô? NùÝ:ùÜMùÝ:ùÜMùÝ:ùÜMùÝ:s/   —%M9ÁN Â%NÃNÃ7%NÄ2NÅ'%N&Æ"N-rQ   N)rR   ÚBox)Úreturnr4   )rk   Úboolr€   rG   )	r>   r?   r@   rA   rB   rT   rh   r}   rD   r<   rE   r1   rM   rM   r   s   † ñôAô
0÷"5rE   rM   c                  ót   • \ rS rSr% SrS\S'   S\S'   S\S'   S\S'   S\S'   S\S	'   S\S
'   S\S'   S\S'   Srg)ÚFontMetricsé­   a  
Metrics of a font.

Attributes
----------
advance : float
    The advance distance (in points) of the glyph.
height : float
    The height of the glyph in points.
width : float
    The width of the glyph in points.
xmin, xmax, ymin, ymax : float
    The ink rectangle of the glyph.
iceberg : float
    The distance from the baseline to the top of the glyph. (This corresponds to
    TeX's definition of "height".)
slanted : bool
    Whether the glyph should be considered as "slanted" (currently used for kerning
    sub/superscripts).
r6   Úadvancer8   r7   ro   rr   rs   rp   rw   r�   Úslantedr<   Nr=   r<   rE   r1   rƒ   rƒ   ­   s6   ‡ ñð( ƒNØƒMØƒLØ
ƒKØ
ƒKØ
ƒKØ
ƒKØƒNØ†MrE   rƒ   c                  ó\   • \ rS rSr% S\S'   S\S'   S\S'   S\S	'   S
\S'   S\S'   S\S'   Srg)ÚFontInfoéÍ   r"   rZ   r6   r[   ÚstrÚpostscript_namerƒ   rn   rt   r\   r'   rx   r]   r<   N©r>   r?   r@   rA   rC   rD   r<   rE   r1   rˆ   rˆ   Í   s'   ‡ Ø
ƒMØƒOØÓØÓØ	ƒHØƒLØ†MrE   rˆ   c                  óÔ   • \ rS rSrSrSS jr            SS jrSS jr    SS jr    SS jr	          SS jr
          SS	 jrSS
 jrSS jr    SS jrSrg)ÚFontsé×   zå
An abstract base class for a system of fonts to use for mathtext.

The class must be able to take symbol keys and font file names and
return the character metrics.  It also delegates to a backend class
to do the actual drawing.
c                ó   • Xl         X l        g)a>  
Parameters
----------
default_font_prop : `~.font_manager.FontProperties`
    The default non-math font, or the base font for Unicode (generic)
    font rendering.
load_glyph_flags : `.ft2font.LoadFlags`
    Flags passed to the glyph loader (e.g. ``FT_Load_Glyph`` and
    ``FT_Load_Char`` for FreeType-based fonts).
N©Údefault_font_propÚload_glyph_flags)rS   r’   r“   s      r1   rT   ÚFonts.__init__à   s   € ð "3ÔØ 0ÕrE   c
                ó   • g)z‡
Get the kerning distance for font between *sym1* and *sym2*.

See `~.Fonts.get_metrics` for a detailed description of the parameters.
ç        r<   )
rS   Úfont1Ú
fontclass1Úsym1Ú	fontsize1Úfont2Ú
fontclass2Úsym2Ú	fontsize2Údpis
             r1   Úget_kernÚFonts.get_kernî   s   € ð rE   c                ó   • [         erP   ©ÚNotImplementedError)rS   rZ   s     r1   Ú	_get_fontÚFonts._get_fontø   s   € Ü!Ð!rE   c                ó   • [         erP   r£   )rS   rZ   Ú
font_classÚsymr[   rŸ   s         r1   Ú	_get_infoÚFonts._get_infoû   ó   € ä!Ð!rE   c                ó@   • U R                  XX4U5      nUR                  $ )a{  
Parameters
----------
font : str
    One of the TeX font names: "tt", "it", "rm", "cal", "sf", "bf",
    "default", "regular", "bb", "frak", "scr".  "default" and "regular"
    are synonyms and use the non-math font.
font_class : str
    One of the TeX font names (as for *font*), but **not** "bb",
    "frak", or "scr".  This is used to combine two font classes.  The
    only supported combination currently is ``get_metrics("frak", "bf",
    ...)``.
sym : str
    A symbol in raw TeX form, e.g., "1", "x", or "\sigma".
fontsize : float
    Font size in points.
dpi : float
    Rendering dots-per-inch.

Returns
-------
FontMetrics
)rª   rn   )rS   rZ   r¨   r©   r[   rŸ   ra   s          r1   Úget_metricsÚFonts.get_metricsÿ   s    € ð2 �~‰~˜d°¸sÓCˆØ�|‰|ÐrE   c	                ód   • U R                  XEXgU5      n	UR                  R                  X#U	45        g)z„
At position (*ox*, *oy*), draw the glyph specified by the remaining
parameters (see `get_metrics` for their detailed description).
N)rª   r:   Úappend)
rS   ÚoutputrI   rJ   rZ   r¨   r©   r[   rŸ   ra   s
             r1   Úrender_glyphÚFonts.render_glyph  s,   € ð �~‰~˜d°¸sÓCˆØ�‰×Ñ˜b d˜^Õ,rE   c                ó>   • UR                   R                  X#XE45        g)z<
Draw a filled rectangle from (*x1*, *y1*) to (*x2*, *y2*).
N)r;   r±   ©rS   r²   rc   rd   re   rf   s         r1   Úrender_rect_filledÚFonts.render_rect_filled$  s   € ð
 	�‰×Ñ˜R RÐ,Õ-rE   c                ó   • [        5       e)z6
Get the xheight for the given *font* and *fontsize*.
r£   ©rS   rZ   r[   rŸ   s       r1   Úget_xheightÚFonts.get_xheight+  s   € ô "Ó#Ð#rE   c                ó   • [        5       e)z~
Get the line thickness that matches the given font.  Used as a
base unit for drawing lines such as in a fraction or radical.
r£   rº   s       r1   Úget_underline_thicknessÚFonts.get_underline_thickness1  s   € ô
 "Ó#Ð#rE   c                ó
   • X4/$ )zê
Override if your font provides multiple sizes of the same
symbol.  Should return a list of symbols matching *sym* in
various sizes.  The expression renderer will select the most
appropriate size for a given situation from this list.
r<   ©rS   Úfontnamer©   s      r1   Ú!get_sized_alternatives_for_symbolÚ'Fonts.get_sized_alternatives_for_symbol8  s   € ð �Ð Ð rE   r‘   N©r’   r   r“   r%   ©r—   rŠ   r˜   rŠ   r™   rŠ   rš   r6   r›   rŠ   rœ   rŠ   r�   rŠ   rž   r6   rŸ   r6   r€   r6   )rZ   rŠ   r€   r"   )rZ   rŠ   r¨   rŠ   r©   rŠ   r[   r6   rŸ   r6   r€   rˆ   )rZ   rŠ   r¨   rŠ   r©   rŠ   r[   r6   rŸ   r6   r€   rƒ   )r²   rM   rI   r6   rJ   r6   rZ   rŠ   r¨   rŠ   r©   rŠ   r[   r6   rŸ   r6   r€   ÚNone©r²   rM   rc   r6   rd   r6   re   r6   rf   r6   r€   rÇ   ©rZ   rŠ   r[   r6   rŸ   r6   r€   r6   ©rÂ   rŠ   r©   rŠ   r€   zlist[tuple[str, str]])r>   r?   r@   rA   rB   rT   r    r¥   rª   r®   r³   r·   r»   r¾   rÃ   rD   r<   rE   r1   rŽ   rŽ   ×   sé   † ñô1ðØðØ),ðØ47ðØDIðàðà %ôô"ð"Øð"Ø!)ô"ðØðØ#.ôð8-Ø!$ð-Ø+.ð-Ø:?ð-ØFKð-ØPTô-ð.Ø$ð.Ø*/ð.Ø5:ð.Ø@Eð.ØJNô.ô$ô$ð!Ø/2ð!Ø7L÷!rE   rŽ   c                  ó¬   ^ • \ rS rSrSrSU 4S jjrSS jr    SS jr    SS jr    SS jr	SS jr
SS	 jr            SU 4S
 jjrSrU =r$ )ÚTruetypeFontsiC  zU
A generic base class for all font setups that use Truetype fonts
(through FT2Font).
c                ó  >• [         TU ]  X5        [        R                  " U R                  5      U l        0 U l        0 U l        [        U R                  5      n[        U5      nX@R
                  S'   X@R
                  S'   g )NÚdefaultÚregular)
ÚsuperrT   Ú	functoolsÚcacherª   Ú_fontsÚfontmapr    r’   r!   )rS   r’   r“   ÚfilenameÚdefault_fontÚ	__class__s        €r1   rT   ÚTruetypeFonts.__init__I  se   ø€ Ü‰ÑÐ*Ô=ä"Ÿš¨¯©Ó8ˆŒØˆŒØ-/ˆŒä˜D×2Ñ2Ó3ˆÜ Ó)ˆØ!-�‰�IÑØ!-�‰�IÒrE   c                óÞ  • XR                   ;   a  U R                   U   nO[        R                  " [        U5      nU R                  R                  U5      nUc{  [        R                  R                  U5      (       aW  [        U5      nX0R                  U'   X0R                  UR                  '   X0R                  UR                  R                  5       '   [        R                  " [        U5      $ rP   )rÔ   ÚTÚcastrŠ   rÓ   ÚgetÚosÚpathÚexistsr!   r‹   Úlowerr"   )rS   rZ   ÚbasenameÚcached_fonts       r1   r¥   ÚTruetypeFonts._get_fontU  sª   € Ø—<‘<ÓØ—|‘| DÑ)‰Hô —v’vœc 4Ó(ˆHØ—k‘k—o‘o hÓ/ˆØÑ¤2§7¡7§>¡>°(×#;Ñ#;Ü" 8Ó,ˆKØ$/�K‰K˜Ñ!Ø7B�K‰K˜×3Ñ3Ñ4Ø?J�K‰K˜×3Ñ3×9Ñ9Ó;Ñ<Ü�vŠv”g˜{Ó+Ð+rE   c                ó`   • UR                   S:X  a  UR                  S-  S-  US-  U-  S-  -   $ g)NÚCmex10é@   rl   é   éH   r–   )r‹   r8   )rS   rZ   rx   r[   rŸ   s        r1   Ú_get_offsetÚTruetypeFonts._get_offsetd  s:   € à×Ñ 8Ó+Ø—L‘L 2Ñ%¨Ñ)¨h°q©j¸3Ñ.>¸rÑ.AÑBÐBØrE   c                ó   • [         erP   r£   )rS   rÂ   r¨   r©   s       r1   Ú
_get_glyphÚTruetypeFonts._get_glyphj  r¬   rE   c                óš  • U R                  XU5      u  pgnUR                  XE5        UR                  XpR                  S9n	S U	R                   5       u  p«pÍU R                  XiXE5      n[        U	R                  S-  U	R                  S-  U	R                  S-  U
UX¾-   XÞ-   U	R                  S-  U-   US9	n[        UUUR                  UUU	US9$ )N)Úflagsc              3  ó*   #   • U  H	  oS -  v •  M     g7f)ræ   Nr<   )Ú.0Úvals     r1   Ú	<genexpr>Ú*TruetypeFonts._get_info.<locals>.<genexpr>u  s   é € Ð!A²j¨s¨¦(²jùs   ‚é   ræ   )	r…   r8   r7   ro   rr   rs   rp   rw   r†   )rZ   r[   r‹   rn   r\   rx   r]   )rì   Úset_sizeÚ	load_charr“   Úbboxré   rƒ   ÚlinearHoriAdvancer8   r7   ÚhoriBearingYrˆ   r‹   )rS   rÂ   r¨   r©   r[   rŸ   rZ   r\   r†   rx   ro   rs   rr   rp   r]   rn   s                   r1   rª   ÚTruetypeFonts._get_infoo  sÞ   € à!Ÿ_™_¨XÀ3ÓGÑˆ�7Ø�‰�hÔ$Ø—‘˜s×*?Ñ*?�Ð@ˆá!A°e·j²jÓ!AÑˆ�DØ×!Ñ! $¨xÓ=ˆÜØ×+Ñ+¨eÑ3Ø—<‘< "Ñ$Ø—+‘+ Ñ"ØØØ‘Ø‘à×&Ñ&¨Ñ+¨fÑ4Øñ
ˆô ØØØ ×0Ñ0ØØØØñ
ð 	
rE   c                óü   • U R                  U5      nUR                  X#5        UR                  S5      nUc1  U R                  U[        R
                  S   SX#5      nUR                  $ US   S-  US-  -  US-  -  nU$ )NÚpcltúmathtext.defaultÚxÚxHeightg      P@g      (@g      Y@)r¥   rö   Úget_sfnt_tabler®   ÚmplÚrcParamsrw   )rS   rÂ   r[   rŸ   rZ   rý   rn   r   s           r1   r»   ÚTruetypeFonts.get_xheightŽ  s„   € Ø�~‰~˜hÓ'ˆØ�‰�hÔ$Ø×"Ñ" 6Ó*ˆØ‰<à×&Ñ&Øœ#Ÿ,™,Ð'9Ñ:¸CÀóPˆGà—?‘?Ð"Ø˜	‘? TÑ)¨h¸©oÑ>À#ÈÁ+ÑNˆØˆrE   c                ó   • SU-  U-  S-  $ )Ng      °?g      R@r<   rº   s       r1   r¾   Ú%TruetypeFonts.get_underline_thicknessš  s   € ð  Ñ(¨3Ñ.°$Ñ6Ð6rE   c
                ó  >• X:X  ao  XH:X  aj  U R                  XX4U	5      n
U R                  XVXxU	5      nU
R                  nUR                  U
R                  UR                  [        R
                  5      S-  $ [        TU ]  XX4XVXxU	5	      $ )Nræ   )rª   rZ   Úget_kerningr\   r$   ÚDEFAULTrÐ   r    )rS   r—   r˜   r™   rš   r›   rœ   r�   rž   rŸ   Úinfo1Úinfo2rZ   r×   s                €r1   r    ÚTruetypeFonts.get_kern   s�   ø€ ð ‹>˜iÓ4Ø—N‘N 5°dÀsÓKˆEØ—N‘N 5°dÀsÓKˆEØ—:‘:ˆDØ×#Ñ# E§I¡I¨u¯y©y¼'¿/¹/ÓJÈRÑOÐOÜ‰wÑ °4Ø %°4ÀCóIð 	IrE   )rÓ   rª   rÔ   rÅ   )rZ   z	str | intr€   r"   )
rZ   r"   rx   r'   r[   r6   rŸ   r6   r€   r6   ©rÂ   rŠ   r¨   rŠ   r©   rŠ   r€   ztuple[FT2Font, int, bool])rÂ   rŠ   r¨   rŠ   r©   rŠ   r[   r6   rŸ   r6   r€   rˆ   )rÂ   rŠ   r[   r6   rŸ   r6   r€   r6   rÉ   rÆ   )r>   r?   r@   rA   rB   rT   r¥   ré   rì   rª   r»   r¾   r    rD   Ú__classcell__©r×   s   @r1   rÌ   rÌ   C  s�   ø† ñ÷

.ô,ðØðØ#(ôð"Øð"Ø 9ô"ð

Øð
Ø!)ô
ô>
ô7ð	IØð	IØ),ð	IØ47ð	IØDIð	Iàð	Ià %÷	Iõ 	IrE   rÌ   )Ú	metaclassc                  ó|  ^ • \ rS rSrSrSSSSSSS	S
.rS8U 4S jjr\" SR                  5       5      r	    S9S jr
0 S/ SQ_S/ SQ_S/ SQ_S/ SQ_S/ SQ_S/ SQ_S/ SQ_S/ SQ_S/ SQ_S / S!Q_S"/ S#Q_S$/ S%Q_S&/ S'Q_S(/ S)Q_S*/ S+Q_S,/ S-Q_S./ S/Q_S0S1/S2S3/S4.ErS5 H  u  rr\\   \\'   M         S:S6 jrS7rU =r$ );ÚBakomaFontsi¬  z–
Use the Bakoma TrueType fonts for rendering.

Symbols are strewn about a number of font files, each of which has
its own proprietary 8-bit encoding.
Úcmsy10Úcmr10Úcmtt10Úcmmi10Úcmb10Úcmss10Úcmex10)ÚcalÚrmÚttÚitÚbfÚsfÚexc                óØ   >• [        X5      U l        [        TU ]  X5        U R                  R                  5        H,  u  p4[        U5      nXPR                  U'   XPR                  U'   M.     g rP   )Ú	StixFontsÚ_stix_fallbackrÐ   rT   Ú_fontmapÚitemsr    rÔ   )rS   r’   r“   Úkeyrò   Úfullpathr×   s         €r1   rT   ÚBakomaFonts.__init__½  sY   ø€ Ü'Ð(9ÓLˆÔä‰ÑÐ*Ô=ØŸ™×+Ñ+Ö-‰HˆCÜ “}ˆHØ (�L‰L˜ÑØ (�L‰L˜Óò .rE   ú
\int \ointc                ó|  • S nXR                   ;   aA  U[        ;   a7  [        U   u  pVUS:H  =(       d    X0R                  ;   nU R                  U5      nO3[	        U5      S:X  a$  US:H  nU R                  U5      nUb  [        U5      nUb  UR                  W5      S:w  a  XFW4$ U R                  R                  XU5      $ )Nr  r   r  r   )	rÔ   r   Ú_slanted_symbolsr¥   Úlenr*   Úget_char_indexr#  rì   )rS   rÂ   r¨   r©   rZ   rá   r\   r†   s           r1   rì   ÚBakomaFonts._get_glyphÈ  s¸   € àˆØ—|‘|Ó#¨¬Ó(>Ü+¨CÑ0‰MˆHØ 8Ñ+×L°×7LÑ7LÑ0LˆGØ—>‘> (Ó+‰DÜ�‹X˜‹]Ø 4Ñ'ˆGØ—>‘> (Ó+ˆDØÑÜ˜#“h�ØÑ × 3Ñ 3°CÓ 8¸AÓ =Ø˜gÐ%Ð%à×&Ñ&×1Ñ1°(ÈÓLÐLrE   Ú())r  r/  )r   ô   Â¡)r   ô   Â³)r   ô   Âµ)r   ô   ÃƒÚ)))r  r4  )r   ô   Â¢)r   ô   Â´)r   ô   Â¶)r   Ú!Ú{))r  r9  )r   ô   Â©)r   Ún)r   ô   Â½)r   r/  Ú}))r  r=  )r   ô   Âª)r   Úo)r   ô   Â¾)r   r4  Ú[))r  rA  )r   ô   Â£)r   r_   )r   Ú"Ú]))r  rD  )r   ô   Â¤)r   Úi)r   Ú#z\lfloor))r   ô   Â¥)r   Új)r   ô   Â¹)r   Ú$z\rfloor))r   ô   Â¦)r   Úk)r   ô   Âº)r   Ú%z\lceil))r   ô   Â§)r   Úl)r   ô   Â»)r   Ú&z\rceil))r   ô   Â¨)r   Úm)r   ô   Â¼)r   Ú'z\langle))r   ô   Â­©r   ÚD)r   ô   Â¿)r   Ú*z\rangle))r   ô   Â®©r   ÚE)r   ô   Ã€)r   Ú+ú	\__sqrt__))r   Úp)r   Úq)r   Úr)r   Úsz
\backslash))r   ô   Â²)r   Ú/)r   ô   Ã‚)r   Ú-rh  ))r  rh  )r   ô   Â±)r   Ú.)r   ô   Ã‹)r   Ú,z\widehat))r  Ú^)r   Úb)r   Úc)r   r`   z
\widetilde))r  Ú~)r   Úe)r   Úf)r   Úg)r  r_   rY  )r  rF  r^  )Ú<Ú>)
)z
\leftparenr/  )z\rightparenr4  )z
\leftbracer9  )z\rightbracer=  )z\leftbracketrA  )z\rightbracketrD  )ú\{r9  )ú\}r=  )ú\[rA  )ú\]rD  c                ó>   • U R                   R                  X!U4/5      $ rP   )Ú_size_alternativesrÜ   rÁ   s      r1   rÃ   Ú-BakomaFonts.get_sized_alternatives_for_symbol  s    € à×&Ñ&×*Ñ*¨3¸C°Ð0AÓBÐBrE   )r#  rÅ   r  rÊ   )r>   r?   r@   rA   rB   r$  rT   ÚsetÚsplitr+  rì   r}  ÚaliasÚtargetrÃ   rD   r  r  s   @r1   r  r  ¬  s¼  ø† ñð ØØØØØØñ€H÷)ñ ˜=×.Ñ.Ó0Ó1ÐðMØðMØ 9ôMð('
Øò 8ð'
ð 	ò 8ð'
ð
 	ò 8ð'
ð 	ò 8ð'
ð 	ò (ð'
ð 	ò (ð'
ð 	ò 8ð'
ð" 	ò 8ð#'
ð& 	ò 8ð''
ð* 	ò 8ð+'
ð. 	ò 8ð/'
ð2 	ò 8ð3'
ð6 	ò 8ð7'
ð: 	ò 8ð;'
ð> 	ò 8ð?'
ðB 	ò (ðC'
ðF 	ò (ðG'
ðJ % kÐ2Ø$ kÐ2òM'
ÐóR	(‰ˆˆvð %7°vÑ$>Ð˜5Ó!ñ	(ðCØ/2ðCØ7L÷Cò CrE   r  c                  óœ   ^ • \ rS rSrSrSSS.rSU 4S jjr\" SR                  5       5      r	    SS jr
    SS	 jr    SS
 jrSrU =r$ )ÚUnicodeFontsi  aD  
An abstract base class for handling Unicode fonts.

While some reasonably complete Unicode fonts (such as DejaVu) may
work in some situations, the only Unicode font I'm aware of with a
complete set of math symbols is STIX.

This class will "fallback" on the Bakoma fonts when a required
symbol cannot be found in the font.
é£   é¡   )r�   i"  c                ó^  >• [         R                  S   n[        [        [        S.R                  U5      nU(       a  U" X5      OS U l        [        TU ]!  X5        SR                  5        H2  n[         R                  SU-      n[        U5      nXpR                  U'   M4     [        S5      n[        U5      nXpR                  S'   [        U R                  [        5      (       aJ  SSS	S
SSS.nUR                  5        H,  u  pš[        U
5      nX°R                  U	'   X°R                  U
'   M.     g g )Nzmathtext.fallback)ÚstixÚstixsansÚcmzcal rm tt it bf sf bfitz	mathtext.r  r   ÚSTIXGeneralÚSTIXSizeOneSymÚSTIXSizeTwoSymÚSTIXSizeThreeSymÚSTIXSizeFourSymÚSTIXSizeFiveSym)r   r   rl   rç   é   é   )r  r  r"  ÚStixSansFontsr  rÜ   Ú_fallback_fontrÐ   rT   r€  r    rÔ   r   Ú
isinstancer%  )rS   r’   r“   Úfallback_rcÚfont_clsÚtexfontÚproprZ   ÚstixsizedaltfontsÚsizeÚnamer'  r×   s               €r1   rT   ÚUnicodeFonts.__init__*  s$  ø€ ä—l‘lÐ#6Ñ7ˆäÜ%Üñ0
÷ ‰#ˆkÓ
ð	 	ö #+ñ  (Ð(9ÔLØ04ð 	Ôô 	‰ÑÐ*Ô=Ø0×6Ñ6Ö8ˆGÜ—<‘< ¨gÑ 5Ñ6ˆDÜ˜D“>ˆDØ$(�L‰L˜Ó!ñ 9ô ˜hÓ'ˆÜ˜‹~ˆØ!�‰�TÑô �d×)Ñ)¬9×5Ñ5à!Ø$Ø$Ø&Ø%Ø%ñ!'Ðð 0×5Ñ5Ö7‘
�Ü# D›>�Ø%-—‘˜TÑ"Ø%-—‘˜TÓ"ò 8ð 6rE   r)  c                ó   • X4$ rP   r<   )rS   rÂ   r¨   Úuniindexs       r1   Ú_map_virtual_fontÚUnicodeFonts._map_virtual_fontO  s   € àÐ!Ð!rE   c                óÈ  •  [        U5      nSnU R                  XU5      u  pUnU(       aö  US:X  aZ  US:  aT  [        U5      n[        R                  " U5      S   S:w  d*  [        R                  " U5      R                  S	5      (       a  S
nUS:H  =(       d    X0R                  ;   nSnU R                  U5      n	U	bf  X@R                  ;   a>  U	R                  S:X  a.  [        [         R"                  " S5      5      n	U R                  U   nU	R%                  U5      n
U
S:w  a  SnU(       Gd  U R&                  (       a—  US;   a!  [)        U R&                  [*        5      (       a  S
nU R&                  R-                  XU5      nUS   R                  nU[/        [0        R2                  R5                  5       5      ;   a  Sn[        R7                  SX<5        U$ US;   a'  [)        U [*        5      (       a  U R-                  S
X#5      $ [        R	                  SXcU5        U R                  S
5      n	SnSnW	UW4$ ! [         a'    [        S5      nSn[        R	                  SU5         GNQf = f)NTÚ?Fz!No TeX to Unicode mapping for %a.r  rõ   r   ÚLzGREEK CAPITALr  r  zfonts/ttf/cmsy10.ttf)r  rÏ   zComputer ModernzSubstituting symbol %s from %szNFont %r does not have a glyph for %a [U+%x], substituting with a dummy symbol.é¤   )r2   r.   r*   Ú_logÚwarningr   ÚchrÚunicodedataÚcategoryrœ  Ú
startswithr+  r¥   Ú_cmr10_substitutionsÚfamily_namer!   r   Ú_get_data_pathr-  r”  r•  r"  rì   Úlistr  r$  Úvaluesra   )rS   rÂ   r¨   r©   rŸ  Úfound_symbolÚnew_fontnameÚcharr†   rZ   Ú
glyphindexru  Úfamilys                r1   rì   ÚUnicodeFonts._get_glyphS  s@  € ð	CÜ(¨Ó-ˆHØˆLð "×3Ñ3Ø (ó,Ñˆð  ˆö Ø˜4Ó H¨wÓ$6Ü˜8“}�Ü×(Ò(¨Ó.¨qÑ1°SÓ8Ü&×+Ò+¨DÓ1×<Ñ<¸_×MÑMØ#'�Là# tÑ+×L°×7LÑ7LÑ0LˆGØ ˆLØ—>‘> ,Ó/ˆDØÑØ× 9Ñ 9Ó9Ø ×,Ñ,°Ó7Ü#Ü×,Ò,Ð-CÓDóF�Dà#×8Ñ8¸ÑB�HØ!×0Ñ0°Ó:�
Ø “?Ø#'�LçØ×"×"ØÐ 1Ó1Ü& t×':Ñ':¼I×FÑFØ#�Hà×'Ñ'×2Ñ2°8ÈÓM�Ø˜1™×)Ñ)�ØœT¤+×"6Ñ"6×"=Ñ"=Ó"?Ó@Ó@Ø.�FÜ—	‘	Ð:¸CÔHØ�ð Ð 1Ó1Ü& t¬Y×7Ñ7ØŸ?™?¨4°ÓAÐAÜ—‘ð Aà)°ô:ð —~‘~ dÓ+�Ø�Ø�à�X˜wÐ&Ð&øôq ó 	CÜ˜3“xˆHØ ˆLÜ�L‰LÐ<¸c×Bð	Cús   ‚H0 È0-I!É I!c                ób   • U R                   (       a  U R                   R                  X5      $ X4/$ rP   )r”  rÃ   rÁ   s      r1   rÃ   Ú.UnicodeFonts.get_sized_alternatives_for_symbol’  s2   € à××Ø×&Ñ&×HÑHØóð à�Ð Ð rE   )r”  rÅ   ©rÂ   rŠ   r¨   rŠ   rŸ  rt   r€   ztuple[str, int]r  rÊ   )r>   r?   r@   rA   rB   r¬  rT   r  r€  r+  r   rì   rÃ   rD   r  r  s   @r1   r„  r„    sy   ø† ñ	ð ØñÐ÷
!.ñF ˜=×.Ñ.Ó0Ó1Ðð"Ø$'ð"Ø,;ô"ð='Øð='Ø 9ô='ð~!Ø/2ð!Ø7L÷!ò !rE   r„  c                  óN   ^ • \ rS rSr% 0 rS\S'   SS jr    SU 4S jjrSrU =r	$ )	ÚDejaVuFontsiš  údict[str | int, str]r$  c                ó’  • [        U [        5      (       a  [        X5      U l        O[	        X5      U l        [        X5      U l        [        R                  XU5        U R                  R                  SSSSSS.5        U R                  R                  5        H,  u  p4[        U5      nXPR                  U'   XPR                  U'   M.     g )NrŒ  r�  rŽ  r�  r�  )r   rl   rç   r‘  r’  )r•  ÚDejaVuSerifFontsr"  r”  r“  r  ÚbakomarÌ   rT   r$  Úupdater%  r    rÔ   ©rS   r’   r“   r&  rœ  r'  s         r1   rT   ÚDejaVuFonts.__init__�  s¬   € ä�dÔ,×-Ñ-Ü"+Ð,=Ó"PˆDÕä"/Ð0AÓ"TˆDÔÜ!Ð"3ÓFˆŒÜ×Ñ˜tÐ8HÔIà�‰×ÑØØØ!Ø Ø ñ
ô 	ð Ÿ™×,Ñ,Ö.‰IˆCÜ “~ˆHØ (�L‰L˜ÑØ!)�L‰L˜Óò /rE   c                óô   >• US:X  a  U R                   R                  XU5      $ [        U5      nU R                  S5      nUb'  UR	                  U5      nUS:w  a  [
        TU ]  SX#5      $ [
        TU ]  XU5      $ )Nú\primer   r   )r¿  rì   r2   r¥   r-  rÐ   )rS   rÂ   r¨   r©   rŸ  rZ   r´  r×   s          €r1   rì   ÚDejaVuFonts._get_glyph²  s   ø€ ð �)ÓØ—;‘;×)Ñ)¨(ÀÓDÐDô )¨Ó-ˆHØ—>‘> $Ó'ˆDØÑØ!×0Ñ0°Ó:�
Ø “?Ü ™7Ñ-¨d°JÓDÐDä‘7Ñ% h¸CÓ@Ð@rE   )r”  r¿  rÅ   r  )
r>   r?   r@   rA   r$  rC   rT   rì   rD   r  r  s   @r1   r»  r»  š  s1   ø‡ Ø%'€HÐ"Ó'ô*ð*AØðAØ 9÷Aõ ArE   r»  c            	      ó.   • \ rS rSrSrSSSSSSS	SS
.rSrg)r¾  iÃ  zj
A font handling class for the DejaVu Serif fonts

If a glyph is not found it will fallback to Stix Serif
úDejaVu SerifzDejaVu Serif:italiczDejaVu Serif:weight=boldzDejaVu Serif:italic:boldúDejaVu SansúDejaVu Sans MonozDejaVu Serif Display©r  r  r  Úbfitr  r  r   r   r<   N©r>   r?   r@   rA   rB   r$  rD   r<   rE   r1   r¾  r¾  Ã  s(   † ñð Ø#Ø(Ø*ØØ Ø$Øñ	ƒHrE   r¾  c            	      ó.   • \ rS rSrSrSSSSSSSSS	.rS
rg)ÚDejaVuSansFontsiÕ  zh
A font handling class for the DejaVu Sans fonts

If a glyph is not found it will fallback to Stix Sans
rÈ  zDejaVu Sans:italiczDejaVu Sans:weight=boldzDejaVu Sans:italic:boldrÉ  zDejaVu Sans DisplayrÊ  r<   NrÌ  r<   rE   r1   rÎ  rÎ  Õ  s(   † ñð Ø"Ø'Ø)ØØ Ø#Øñ	ƒHrE   rÎ  c                  óœ   • \ rS rSr% SrSSSSSSS	SS
SSSSS.rS\S'   SrSrSS jr	    SS jr
\R                        SS j5       rSrg)r"  iç  aE  
A font handling class for the STIX fonts.

In addition to what UnicodeFonts provides, this class:

- supports "virtual fonts" which are complete alpha numeric
  character sets with different font styles at special Unicode
  code points, such as "Blackboard".

- handles sized alternative characters for the STIXSizeX fonts.
r‹  zSTIXGeneral:italiczSTIXGeneral:weight=boldzSTIXGeneral:italic:boldÚSTIXNonUnicodezSTIXNonUnicode:italiczSTIXNonUnicode:weight=boldrŒ  r�  rŽ  r�  r�  )r  r  r  rË  ÚnonunirmÚnonuniitÚnonunibfr   r   rl   rç   r‘  r’  r¼  r$  NFc                óÄ   • [         R                  XU5        U R                  R                  5        H,  u  p4[	        U5      nXPR
                  U'   XPR
                  U'   M.     g rP   )rÌ   rT   r$  r%  r    rÔ   rÁ  s         r1   rT   ÚStixFonts.__init__  sM   € Ü×Ñ˜tÐ8HÔIØŸ™×,Ñ,Ö.‰IˆCÜ “~ˆHØ (�L‰L˜ÑØ!)�L‰L˜Óò /rE   c                ó”  • [         R                  " U5      nU R                  (       a  Uc  US;  a  [         S   nSnOSn[        U[        5      (       a   XB   nO[        U[        5      (       a  UnOS nUb‚  Sn[        U5      nXx:  a+  Xx-   S-  n	Xi   n
X:S   :  a  U	nOX:S   ::  a  OU	S-   nXx:  a  M+  W
S   Us=::  a	  U
S   ::  a  O  OX:S   -
  U
S	   -   nU
S   nOU(       d  Sn[        R                  S
   nUS;   a  [        R                  " X35      nUS;   a  SUs=::  a  S::  a
  O  X4$ SU-   nX4$ ! [
         a    US   n NÒf = f)N)rÏ   rÎ   r  TFr  r   rl   r   rç   rþ   )r  r  )r  r  r  rË  i à  iÿø  Únonuni)r   rÜ   Ú_sansr•  Údictr-   r¯  r,  r  r  r   )rS   rÂ   r¨   rŸ  Úfont_mappingÚdoing_sans_conversionÚmappingÚloÚhiÚmidÚranges              r1   r   ÚStixFonts._map_virtual_font  s‚  € ô *×-Ò-¨hÓ7ˆØ�J�J˜<Ñ/ØÐ$:Ó:Ü-¨dÑ3ˆLØ$(Ñ!à$)Ð!ä�l¤D×)Ñ)ð-Ø&Ñ2‘ô ˜¤d×+Ñ+Ø"‰GàˆGàÑàˆBÜ�W“ˆBØ“'Ø‘u˜q‘j�Ø™�Ø A™hÓ&Ø‘BØ q¡Ó)Øà˜q™�Bð •'ð �Q‰x˜8Õ/ u¨Q¡xÖ/Ø#¨A¡hÑ.°°q±Ñ9�Ø  ™8‘Þ*à�ÜŸ<™<Ð(:Ñ;�ð �|Ó#Ü'×+Ò+¨HÓ?ˆHð Ð1Ó1°fÀÕ6RÈFÕ6Rð Ð!Ð!ð   (Ñ*ˆHàÐ!Ð!øôK ó -Ø& tÑ,’ð-ús   ÁD5 Ä5EÅEc                ó2  • SSSSSSS.nUR                  X"5      n [        U5      n[        S5       Vs/ s H6  nU R	                  U5      R                  U5      S	:w  d  M)  U[        U5      4PM8     nnUS
:X  a  US S nU$ ! [         a    X4/s $ f = fs  snf )Nr9  r=  rA  rD  u   âŸ¨u   âŸ©)rx  ry  rz  r{  rv  rw  é   r   rb  éÿÿÿÿ)rÜ   r2   r.   rà  r¥   r-  r¨  )rS   rÂ   r©   ÚfixesrŸ  rF  Úalternativess          r1   rÃ   Ú+StixFonts.get_sized_alternatives_for_symbolB  sÀ   € ð ˜s¨3°sØ6Ø7ñ
ˆð
 �i‰i˜Ó!ˆð	%Ü(¨Ó-ˆHô 5:¸!´Hó L²H¨qØŸ>™>¨!Ó,×;Ñ;¸HÓEÈÑJó +˜œC ›MÓ*±Hˆð Lð �,ÓØ'¨¨Ð,ˆLØÐøô ó 	%Ø�OÐ$Ò$ð	%üòLs   œB  ´(BÁ BÂ BÂBr<   rÅ   r¹  )rÂ   rŠ   r©   rŠ   r€   z-list[tuple[str, str]] | list[tuple[int, str]])r>   r?   r@   rA   rB   r$  rC   r”  rØ  rT   r   rÑ   rÒ   rÃ   rD   r<   rE   r1   r"  r"  ç  s›   ‡ ñ
ð Ø"Ø'Ø)Ø$Ø+Ø0ØØØØØØñ&€HÐ"ó ð €NØ€Eô*ð4"Ø$'ð4"Ø,;ô4"ðl ‡_�_ðàðð ðð Góó órE   r"  c                  ó   • \ rS rSrSrSrSrg)r“  iZ  zX
A font handling class for the STIX fonts (that uses sans-serif
characters by default).
Tr<   N)r>   r?   r@   rA   rB   rØ  rD   r<   rE   r1   r“  r“  Z  s   † ñð ƒErE   r“  çffffffæ?rã  c                  óŠ   • \ rS rSr% SrSrS\S'   SrS\S'   SrS\S	'   S
r	S\S'   Sr
S\S'   SrS\S'   SrS\S'   SrS\S'   Srg)ÚFontConstantsBasei�  zÄ
A set of constants that controls how certain things, such as sub-
and superscripts are laid out.  These are all metrics that can't
be reliably retrieved from the font metrics in the font itself.
çš™™™™™©?zT.ClassVar[float]Úscript_spacegš™™™™™Ù?Úsubdropré  Úsup1ç333333Ó?Úsub1ç      à?Úsub2gš™™™™™™?Údeltaçš™™™™™É?Údelta_slantedçš™™™™™¹?Údelta_integralr<   N)r>   r?   r@   rA   rB   rí  rC   rî  rï  rñ  ró  rô  rö  rø  rD   r<   rE   r1   rë  rë  �  so   ‡ ñð '+€LÐ#Ó*ð "%€GÐÓ$ð "€DÐ
Ó!ð "€DÐ
Ó!ð "€DÐ
Ó!ð  %€EÐÓ$ð
 (+€MÐ$Ó*ð ),€NÐ%Ö+rE   rë  c                  ó4   • \ rS rSrSrSrSrSrSrSr	Sr
SrSrg)ÚComputerModernFontConstantsi¥  g333333³?rõ  gÍÌÌÌÌÌÜ?rð  r<   N)r>   r?   r@   rA   rí  rî  rï  rñ  ró  rô  rö  rø  rD   r<   rE   r1   rú  rú  ¥  s*   † Ø€LØ€GØ€DØ€DØ€DØ€EØ€MØƒNrE   rú  c                  ó,   • \ rS rSrSrSrSrSrSrSr	Sr
g)	ÚSTIXFontConstantsi°  r÷  çš™™™™™é?ç333333ã?rì  rð  r<   N)r>   r?   r@   rA   rí  rï  ró  rô  rö  rø  rD   r<   rE   r1   rü  rü  °  s    † Ø€LØ€DØ€DØ€EØ€MØƒNrE   rü  c                  ó$   • \ rS rSrSrSrSrSrSrg)ÚSTIXSansFontConstantsi¹  rì  rý  rþ  rð  r<   N)	r>   r?   r@   rA   rí  rï  rö  rø  rD   r<   rE   r1   r   r   ¹  s   † Ø€LØ€DØ€MØƒNrE   r   c                  ó   • \ rS rSrSrg)ÚDejaVuSerifFontConstantsiÀ  r<   N©r>   r?   r@   rA   rD   r<   rE   r1   r  r  À  ó   † ÚrE   r  c                  ó   • \ rS rSrSrg)ÚDejaVuSansFontConstantsiÄ  r<   Nr  r<   rE   r1   r  r  Ä  r  rE   r  rÈ  rÉ  rÇ  r  r  r  r  r  r  r  r‹  rÐ  r�  r�  rŽ  r�  rŒ  )zBitstream Vera SanszBitstream VeraÚParserStatec                óð   • [         R                  U R                  R                  U R                  5      R
                  [        5      nU[        L a%  [        U R                  [        5      (       a  [        $ U$ rP   )Ú_font_constant_mappingrÜ   Úfontsetr¥   rZ   r­  rë  rü  r•  r“  r   )ÚstateÚ	constantss     r1   Ú_get_font_constant_setr  á  sZ   € Ü&×*Ñ*Ø�‰×Ñ §
¡
Ó+×7Ñ7Ô9JóL€Ið 	Ô&Ò&Ü�u—}‘}¤m×4Ñ4Ü$Ð$ØÐrE   c                  óJ   • \ rS rSrSrS
S jrSS jrSS jrS
S jrSS jr	Sr
g	)ÚNodeiì  zA node in the TeX box model.c                ó   • SU l         g ©Nr   ©r›  ©rS   s    r1   rT   ÚNode.__init__ï  s	   € Øˆ�	rE   c                ó,   • [        U 5      R                  $ rP   )Útyper>   r  s    r1   Ú__repr__ÚNode.__repr__ò  s   € Ü�D‹z×"Ñ"Ð"rE   c                ó   • g©Nr–   r<   )rS   Únexts     r1   r  ÚNode.get_kerningõ  s   € ØrE   c                ó.   • U =R                   S-  sl         g)zr
Shrinks one level smaller.  There are only three levels of
sizes, after which things will no longer get smaller.
r   Nr  r  s    r1   ÚshrinkÚNode.shrinkø  s   € ð
 	�	Š	�Q‰Ž	rE   c                ó   • g)zRender this node.Nr<   ©rS   r²   rÿ   r|   s       r1   ÚrenderÚNode.renderÿ  s   � rE   r  N©r€   rÇ   ©r€   rŠ   ©r  zNode | Noner€   r6   ©r²   rM   rÿ   r6   r|   r6   r€   rÇ   )r>   r?   r@   rA   rB   rT   r  r  r  r"  rD   r<   rE   r1   r  r  ì  s   † Ù&ôô#ôô÷ rE   r  c                  ó^   ^ • \ rS rSrSrSU 4S jjrSU 4S jjr          S	S jrSrU =r	$ )
r   i  z A node with a physical location.c                óF   >• [         TU ]  5         Xl        X l        X0l        g rP   )rÐ   rT   r7   r8   r9   )rS   r7   r8   r9   r×   s       €r1   rT   ÚBox.__init__  s   ø€ Ü‰ÑÔØŒ
ØŒØ�
rE   c                óâ   >• [         TU ]  5         U R                  [        :  aL  U =R                  [
        -  sl        U =R                  [
        -  sl        U =R                  [
        -  sl        g g rP   )rÐ   r  r›  ÚNUM_SIZE_LEVELSr7   ÚSHRINK_FACTORr8   r9   ©rS   r×   s    €r1   r  Ú
Box.shrink  sH   ø€ Ü‰‰ÔØ�9‰9”Ó&Ø�JŠJœ=Ñ(�JØ�KŠKœ=Ñ(�KØ�JŠJœ=Ñ(ŽJð 'rE   c                ó   • g rP   r<   r¶   s         r1   r"  Ú
Box.render  s   € àrE   )r9   r8   r7   )r7   r6   r8   r6   r9   r6   r€   rÇ   r$  rÈ   )
r>   r?   r@   rA   rB   rT   r  r"  rD   r  r  s   @r1   r   r     sB   ø† Ù*÷÷)ðØðØ#ðØ).ðØ49ðØ>B÷ò rE   r   c                  ó0   ^ • \ rS rSrSrSU 4S jjrSrU =r$ )ÚVboxi  z$A box with only height (zero width).c                ó&   >• [         TU ]  SX5        g r  ©rÐ   rT   )rS   r8   r9   r×   s      €r1   rT   ÚVbox.__init__  s   ø€ Ü‰Ñ˜˜VÕ+rE   r<   )r8   r6   r9   r6   ©r>   r?   r@   rA   rB   rT   rD   r  r  s   @r1   r3  r3    s   ø† Ù.÷,õ ,rE   r3  c                  ó0   ^ • \ rS rSrSrSU 4S jjrSrU =r$ )ÚHboxi  z.A box with only width (zero height and depth).c                ó(   >• [         TU ]  USS5        g r  r5  ©rS   r7   r×   s     €r1   rT   ÚHbox.__init__"  s   ø€ Ü‰Ñ˜  BÕ'rE   r<   ©r7   r6   r7  r  s   @r1   r9  r9    s   ø† Ù8÷(õ (rE   r9  c                  ór   ^ • \ rS rSrSrSU 4S jjrSS jrSS jrSS jrSS jr	SS jr
SU 4S	 jjrS
rU =r$ )ÚChari&  aÚ  
A single character.

Unlike TeX, the font information and metrics are stored with each `Char`
to make it easier to lookup the font metrics when needed.  Note that TeX
boxes have a width, height, and depth, unlike Type1 and TrueType which use
a full bounding box and an advance in the x-direction.  The metrics must
be converted to the TeX model, and the advance (if different from width)
must be converted into a `Kern` node when the `Char` is added to its parent
`Hlist`.
c                óø   >• [         TU ]  5         Xl        UR                  U l        UR                  U l        UR
                  U l        UR                  U l        UR                  U l        U R                  5         g rP   )	rÐ   rT   rq  r
  rZ   r¨   r[   rŸ   Ú_update_metrics)rS   rq  r  r×   s      €r1   rT   ÚChar.__init__3  sZ   ø€ Ü‰ÑÔØŒØ—}‘}ˆŒØ—J‘JˆŒ	Ø×*Ñ*ˆŒØŸ™ˆŒØ—9‘9ˆŒð 	×ÑÕrE   c                ó    • SU R                   -  $ )Nz`%s`©rq  r  s    r1   r  ÚChar.__repr__?  s   € Ø˜Ÿ™‰ÐrE   c                óx  • U R                   R                  U R                  U R                  U R                  U R
                  U R                  5      =ol        U R                  S:X  a  UR                  U l	        OUR                  U l	        UR                  U l        UR                  UR                  -
  * U l        g )NÚ )r
  r®   rZ   r¨   rq  r[   rŸ   Ú_metricsr…   r7   rw   r8   r9   ©rS   rn   s     r1   rA  ÚChar._update_metricsB  s�   € Ø"&§,¡,×":Ñ":Ø�I‰I�t—‘¨¯©°·±¸t¿x¹xó#Ið 	Iˆ”-à�6‰6�S‹=Ø Ÿ™ˆD�Jà Ÿ™ˆDŒJØ—o‘oˆŒØ—‘¨¯©Ñ7Ð8ˆ�
rE   c                ó.   • U R                   R                  $ rP   )rH  r†   r  s    r1   Ú
is_slantedÚChar.is_slantedL  s   € Ø�}‰}×$Ñ$Ð$rE   c                óx  • U R                   R                  U R                  -
  nSn[        U[        5      (       a}  U R
                  R                  U R                  U R                  U R                  U R                  UR                  UR                  UR                  UR                  U R                  5	      nX#-   $ )z¤
Return the amount of kerning between this and the given character.

This method is called when characters are strung together into `Hlist`
to create `Kern` nodes.
r–   )rH  r…   r7   r•  r?  r
  r    rZ   r¨   rq  r[   rŸ   )rS   r  r…   Úkerns       r1   r  ÚChar.get_kerningO  s…   € ð —-‘-×'Ñ'¨$¯*©*Ñ4ˆØˆÜ�dœD×!Ñ!Ø—<‘<×(Ñ(Ø—	‘	˜4Ÿ?™?¨D¯F©F°D·M±MØ—	‘	˜4Ÿ?™?¨D¯F©F°D·M±MØ—‘óˆDð ‰~ÐrE   c           
     óª   • U R                   R                  XUU R                  U R                  U R                  U R
                  U R                  5        g rP   )r
  r³   rZ   r¨   rq  r[   rŸ   r!  s       r1   r"  ÚChar.render_  s9   € Ø�‰×!Ñ!Ø�qØ�I‰I�t—‘¨¯©°·±¸t¿x¹xõ	IrE   c                ó  >• [         TU ]  5         U R                  [        :  ae  U =R                  [
        -  sl        U =R                  [
        -  sl        U =R                  [
        -  sl        U =R                  [
        -  sl        g g rP   )	rÐ   r  r›  r,  r[   r-  r7   r8   r9   r.  s    €r1   r  ÚChar.shrinkd  sV   ø€ Ü‰‰ÔØ�9‰9”Ó&Ø�MŠMœ]Ñ*�MØ�JŠJœ]Ñ*�JØ�KŠKœ]Ñ*�KØ�JŠJœ]Ñ*ŽJð	 'rE   )
rH  rq  r9   rŸ   rZ   r¨   r
  r[   r8   r7   )rq  rŠ   r  r  r%  r$  )r€   r�   r&  r'  )r>   r?   r@   rA   rB   rT   r  rA  rL  r  r"  r  rD   r  r  s   @r1   r?  r?  &  s1   ø† ñ
÷
ôô9ô%ôô I÷
+õ +rE   r?  c                  óD   ^ • \ rS rSrSrSS jrSU 4S jjrSS jrSrU =r	$ )	ÚAccentim  zŽ
The font metrics need to be dealt with differently for accents,
since they are already offset correctly from the baseline in
TrueType fonts.
c                ó8  • U R                   R                  U R                  U R                  U R                  U R
                  U R                  5      =ol        UR                  UR                  -
  U l
        UR                  UR                  -
  U l        SU l        g r  )r
  r®   rZ   r¨   rq  r[   rŸ   rH  rr   ro   r7   rp   rs   r8   r9   rI  s     r1   rA  ÚAccent._update_metricss  sm   € Ø"&§,¡,×":Ñ":Ø�I‰I�t—‘¨¯©°·±¸t¿x¹xó#Ið 	Iˆ”-à—\‘\ G§L¡LÑ0ˆŒ
Ø—l‘l W§\¡\Ñ1ˆŒØˆ�
rE   c                óB   >• [         TU ]  5         U R                  5         g rP   )rÐ   r  rA  r.  s    €r1   r  ÚAccent.shrinkz  s   ø€ Ü‰‰ÔØ×ÑÕrE   c           
     ó  • U R                   R                  XU R                  R                  -
  X0R                  R                  -   U R
                  U R                  U R                  U R                  U R                  5        g rP   )
r
  r³   rH  ro   rs   rZ   r¨   rq  r[   rŸ   r!  s       r1   r"  ÚAccent.render~  sU   € Ø�‰×!Ñ!Ø˜Ÿ™×*Ñ*Ñ*¨A·±×0BÑ0BÑ,BØ�I‰I�t—‘¨¯©°·±¸t¿x¹xõ	IrE   )rH  r9   r8   r7   r$  r'  )
r>   r?   r@   rA   rB   rA  r  r"  rD   r  r  s   @r1   rV  rV  m  s   ø† ñô
÷÷Iò IrE   rV  c                  ób   ^ • \ rS rSrSrSU 4S jjrS	U 4S jjr    S
S jrSU 4S jjrSr	U =r
$ )ÚListi„  z0A list of nodes (either horizontal or vertical).c                ór   >• [         TU ]  SSS5        SU l        / UQU l        SU l        SU l        SU l        g )Nr–   r   )rÐ   rT   Úshift_amountÚchildrenÚglue_setÚ	glue_signÚ
glue_order©rS   Úelementsr×   s     €r1   rT   ÚList.__init__‡  s<   ø€ Ü‰Ñ˜˜R Ô$ØˆÔØ#˜(˜ˆŒàˆŒØˆŒØˆ�rE   c                ó  >• SR                  [        TU ]	  5       U R                  U R                  U R
                  U R                  SR                  U R                   Vs/ s H  n[        U5      PM     sn5      5      $ s  snf )Nz/{}<w={:.02f} h={:.02f} d={:.02f} s={:.02f}>[{}]z, )
ÚformatrÐ   r  r7   r8   r9   r`  Újoinra  Úrepr)rS   rÿ   r×   s     €r1   r  ÚList.__repr__�  se   ø€ Ø@×GÑGÜ‰GÑÓØ�J‰J˜Ÿ™Ø�J‰J˜×)Ñ)Ø�I‰I¨¯ªÓ6ª 1”t˜A–w©Ñ6Ó7ó	9ð 	9ùò 7s   ÁA?c                ó`  ^• [        U4S j[        [        T5      5      S S S2    5       S5      =U l        nX l        TU   S:w  a  UTU   -  U l        OSU l        SU l        US:X  aG  [        U R                  5      (       a,  [        R                  SU[        U 5      R                  U 5        g g g )Nc              3  ó>   >#   • U  H  nTU   S :w  d  M  Uv •  M     g7f)r   Nr<   )rñ   rF  Útotalss     €r1   ró   Ú!List._set_glue.<locals>.<genexpr>›  s   øé € ÐCÒ0�1°F¸1±IÀ±N�Q‰QÒ0ùs   ƒ”	rä  r   r–   z	%s %s: %r)r  rà  r,  rd  rc  rb  Ú
glue_ratiora  r¦  r§  r  r>   )rS   rÿ   Úsignro  Ú
error_typer?  s      `  r1   Ú	_set_glueÚList._set_glue—  s£   ø€ ä"äCœœc &›kÓ*©4¨R¨4Ò0ÓCÀQóHð 	HˆŒ˜!ð ŒØ�!‰9˜‹?Ø  q¡	™MˆD�MàˆDŒNØ ˆDŒOØ�‹6Ü�4—=‘=×!Ñ!Ü—‘˜[Ø'¬¨d«×)<Ñ)<¸dõDð "ð rE   c                óö   >• U R                    H  nUR                  5         M     [        TU ]  5         U R                  [        :  a3  U =R
                  [        -  sl        U =R                  [        -  sl        g g rP   )ra  r  rÐ   r›  r,  r`  r-  rb  )rS   Úchildr×   s     €r1   r  ÚList.shrink§  sT   ø€ Ø—]”]ˆEØ�L‰LŽNñ #ä‰‰ÔØ�9‰9”Ó&Ø×Ò¤Ñ.ÕØ�MŠM¤Ñ.ŽMð 'rE   )ra  rd  rq  rb  rc  r`  )rf  úT.Sequence[Node]r%  )
rÿ   r6   rr  rt   ro  zlist[float]rs  rŠ   r€   rÇ   r$  )r>   r?   r@   rA   rB   rT   r  rt  r  rD   r  r  s   @r1   r^  r^  „  s2   ø† Ù:÷÷9ðDØ!ðDØ&*ôD÷ /õ /rE   r^  c                  ób   ^ • \ rS rSrSr   S   SU 4S jjjrS	S jr  S
   SS jjrSrU =r	$ )ÚHlisti°  zA horizontal list of boxes.c                óp   >• [         TU ]  U5        U(       a  U R                  5         U R                  X#S9  g )N)r^   rU  )rÐ   rT   rO  Úhpack)rS   rf  r^   rU  Údo_kernr×   s        €r1   rT   ÚHlist.__init__³  s,   ø€ ô 	‰Ñ˜Ô"ÞØ�I‰IŒKØ�
‰
�Qˆ
ÒrE   c                óV  • / n[        U R                  5      nU(       a‹  [        U5       Hu  nU R                  U   nX2S-
  :  a  U R                  US-      nOSnUR                  U5        UR	                  U5      nUS:w  d  MY  [        U5      nUR                  U5        Mw     Xl        gg)zÓ
Insert `Kern` nodes between `Char` nodes to set kerning.

The `Char` nodes themselves determine the amount of kerning they need
(in `~Char.get_kerning`), and this function just creates the correct
linked list.
r   Nr–   )r,  ra  rà  r±   r  ÚKern)rS   Únew_childrenÚnum_childrenrF  Úelemr  Úkerning_distancerO  s           r1   rO  Ú
Hlist.kern»  s¥   € ð ˆÜ˜4Ÿ=™=Ó)ˆÞÜ˜<Ö(�Ø—}‘} QÑ'�Ø aÑ'Ó'ØŸ=™=¨¨Q©Ñ/‘Dà�Dà×#Ñ# DÔ)Ø#'×#3Ñ#3°DÓ#9Ð Ø# rÕ)ÜÐ 0Ó1�DØ ×'Ñ'¨Ö-ñ )ð )�Mð rE   c                óZ  • SnSnSnS/S-  nS/S-  nU R                    GH�  n[        U[        5      (       a:  XXR                  -  n[	        X8R
                  5      n[	        XHR                  5      nMS  [        U[        5      (       a�  XXR                  -  n[        R                  " UR
                  5      (       dg  [        R                  " UR                  5      (       d?  [        USS5      n	[	        X8R
                  U	-
  5      n[	        XHR                  U	-   5      nMÿ  GM  GM  [        U[        5      (       a]  UR                  n
XZR                  -  nXjR                  ==   U
R                  -  ss'   XzR                  ==   U
R                   -  ss'   GMw  [        U["        5      (       d  GM�  XXR                  -  nGM      X0l        X@l        US:X  a  X-  nXl        X-
  nUS:X  a  SU l        SU l        SU l        gUS:”  a  U R+                  USUS5        gU R+                  US	US
5        g)a™  
Compute the dimensions of the resulting boxes, and adjust the glue if
one of those dimensions is pre-specified.  The computed sizes normally
enclose all of the material inside the new box; but some items may
stick out if negative glue is used, if the box is overfull, or if a
``\vbox`` includes other boxes that have been shifted left.

Parameters
----------
w : float, default: 0
    A width.
m : {'exactly', 'additional'}, default: 'additional'
    Whether to produce a box whose width is 'exactly' *w*; or a box
    with the natural width of the contents, plus *w* ('additional').

Notes
-----
The defaults produce a box with the natural width of the contents.
r–   r‘  r`  Ú
additionalr   Nr   ÚOverfulrä  ÚUnderful)ra  r•  r?  r7   rq   r8   r9   r   rX   ÚisinfÚgetattrÚGlueÚ	glue_specÚstretch_orderÚstretchÚshrink_orderr  r�  rc  rd  rq  rt  )rS   r^   rU  r_   r`   rÿ   Útotal_stretchÚtotal_shrinkrc  rf  rŽ  s              r1   r}  ÚHlist.hpackÔ  sÃ  € ð0 ˆØˆØˆØ˜˜q™ˆØ�t˜a‘xˆØ—•ˆAÜ˜!œT×"Ñ"Ø—W‘W‘�Ü˜Ÿ8™8Ó$�Ü˜Ÿ7™7“O’Ü˜Aœs×#Ñ#Ø—W‘W‘�Ü—x’x §¡×)Ñ)´"·(²(¸1¿7¹7×2CÑ2CÜ  >°2Ó6�AÜ˜AŸx™x¨!™|Ó,�AÜ˜AŸw™w¨™{Ó+’Aò 3DÒ)ô ˜Aœt×$Ñ$ØŸK™K�	Ø—_‘_Ñ$�Ø×5Ñ5Ó6¸)×:KÑ:KÑKÓ6Ø×3Ñ3Ó4¸	×8HÑ8HÑHÖ4Ü˜Aœt×$Ô$Ø—W‘W‘“ñ# ð$ ŒØŒ
à�ÓØ‰FˆAØŒ
Ø‰Eˆà�‹7ØˆDŒNØˆDŒOØ ˆDŒOØØˆr‹6Ø�N‰N˜1˜a °	Õ:à�N‰N˜1˜b ,°
Õ;rE   )ra  r9   rd  rq  rc  r8   r7   )r–   rˆ  T)rf  ry  r^   r6   rU  ú"T.Literal['additional', 'exactly']r~  r�   r$  ©r–   rˆ  )r^   r6   rU  r•  r€   rÇ   )
r>   r?   r@   rA   rB   rT   rO  r}  rD   r  r  s   @r1   r{  r{  °  sP   ø† Ù%à>AØ9EØ!%ðØ6ðà÷ð ô)ð2  #Ø6Bð?<Ø3ð?<ØGK÷?<ó ?<rE   r{  c                  ól   ^ • \ rS rSrSr  S S	U 4S jjjrSS\R                  4     S
S jjrSr	U =r
$ )ÚVlisti  zA vertical list of boxes.r–   rˆ  c                óB   >• [         TU ]  U5        U R                  X#S9  g )N)r_   rU  )rÐ   rT   Úvpack)rS   rf  r_   rU  r×   s       €r1   rT   ÚVlist.__init__  s   ø€ ä‰Ñ˜Ô"Ø�
‰
�Qˆ
ÒrE   c                óÒ  • SnSnSnS/S-  nS/S-  nU R                    GHF  n	[        U	[        5      (       ak  XeU	R                  -   -  nU	R                  n[
        R                  " U	R                  5      (       d'  [        U	SS5      n
[        XIR                  U
-   5      nM‚  M„  [        U	[        5      (       ab  Xe-  nSnU	R                  nXkR                  -  nX{R                  ==   UR                  -  ss'   X‹R                  ==   UR                  -  ss'   Mû  [        U	[         5      (       a  XeU	R                  -   -  nSnGM&  [        U	["        5      (       d  GM>  [%        S5      e   X@l        XS:”  a  XeU-
  -  nX0l        OXPl        US:X  a  X-  nXl        X-
  nUS:X  a  SU l        SU l        SU l        gUS:”  a  U R-                  USUS	5        gU R-                  US
US5        g)aó  
Compute the dimensions of the resulting boxes, and to adjust the glue
if one of those dimensions is pre-specified.

Parameters
----------
h : float, default: 0
    A height.
m : {'exactly', 'additional'}, default: 'additional'
    Whether to produce a box whose height is 'exactly' *h*; or a box
    with the natural height of the contents, plus *h* ('additional').
l : float, default: np.inf
    The maximum height.

Notes
-----
The defaults produce a box with the natural height of the contents.
r–   r‘  r`  z1Internal mathtext error: Char node found in Vlistrˆ  r   Nr   r‰  rä  rŠ  )ra  r•  r   r8   r9   rX   r‹  r7   rŒ  rq   r�  rŽ  r�  r�  r‘  r  r�  r?  ÚRuntimeErrorrc  rd  rq  rt  )rS   r_   rU  rQ  r^   r`   rÿ   r’  r“  rc  rf  rŽ  s               r1   rš  ÚVlist.vpack  sÀ  € ð0 ˆØˆØˆØ˜˜q™ˆØ�t˜a‘xˆØ—•ˆAÜ˜!œS×!Ñ!Ø˜Ÿ™‘\Ñ!�Ø—G‘G�Ü—x’x §¡×(Ñ(Ü  >°2Ó6�AÜ˜AŸw™w¨™{Ó+’Añ )ô ˜Aœt×$Ñ$Ø‘�Ø�ØŸK™K�	Ø—_‘_Ñ$�Ø×5Ñ5Ó6¸)×:KÑ:KÑKÓ6Ø×3Ñ3Ó4¸	×8HÑ8HÑHÕ4Ü˜Aœt×$Ñ$Ø˜Ÿ™‘[Ñ �Ø“Ü˜Aœt×$Ô$Ü"ØGóIð Iñ% ð* Œ
Ø‹5Ø�Q‘‰JˆAØ�JàŒJà�ÓØ‰FˆAØŒØ‰Eˆà�‹6ØˆDŒNØˆDŒOØ ˆDŒOØàˆr‹6Ø�N‰N˜1˜a °	Õ:à�N‰N˜1˜b ,°
Õ;rE   )r9   rd  rq  rc  r8   r7   r–  )rf  ry  r_   r6   rU  r•  )r_   r6   rU  r•  rQ  r6   r€   rÇ   )r>   r?   r@   rA   rB   rT   rX   Úinfrš  rD   r  r  s   @r1   r˜  r˜    sT   ø† Ù#à>AØ9EðØ6÷ð ð
  #Ø6BØŸ™ðG<Ø3ðG<àðG<à$(÷G<ó G<rE   r˜  c                  óN   ^ • \ rS rSrSrSU 4S jjr          SS jrSrU =r$ )ÚRuleih  a}  
A solid black rectangle.

It has *width*, *depth*, and *height* fields just as in an `Hlist`.
However, if any of these dimensions is inf, the actual value will be
determined by running the rule up to the boundary of the innermost
enclosing box.  This is called a "running dimension".  The width is never
running in an `Hlist`; the height and depth are never running in a `Vlist`.
c                óH   >• [         TU ]  XU5        UR                  U l        g rP   )rÐ   rT   r
  )rS   r7   r8   r9   r  r×   s        €r1   rT   ÚRule.__init__s  s   ø€ Ü‰Ñ˜¨Ô.Ø—}‘}ˆ�rE   c                óH   • U R                   R                  XX2U-   X5-   5        g rP   )r
  r·   )rS   r²   rÿ   r|   r^   r_   s         r1   r"  ÚRule.renderw  s   € à�‰×'Ñ'¨°1¸!±e¸Q¹UÕCrE   )r
  )r7   r6   r8   r6   r9   r6   r  r  )r²   rM   rÿ   r6   r|   r6   r^   r6   r_   r6   r€   rÇ   )	r>   r?   r@   rA   rB   rT   r"  rD   r  r  s   @r1   r¡  r¡  h  sF   ø† ñ÷%ðDØðDØ!ðDØ&+ðDØ05ðDØ:>÷Dò DrE   r¡  c                  ó4   ^ • \ rS rSrSrSSU 4S jjjrSrU =r$ )ÚHrulei|  z.Convenience class to create a horizontal rule.c                óv   >• Uc  UR                  5       nUS-  =p4[        TU ]	  [        R                  X4U5        g )Nrò  ©Úget_current_underline_thicknessrÐ   rT   rX   rŸ  )rS   r  Ú	thicknessr8   r9   r×   s        €r1   rT   ÚHrule.__init__  s8   ø€ ØÑØ×=Ñ=Ó?ˆIØ" S™Ð(ˆÜ‰ÑœŸ™ °Õ6rE   r<   rP   )r  r  r«  úfloat | Noner7  r  s   @r1   r§  r§  |  s   ø† Ù8÷7÷ 7rE   r§  c                  ó0   ^ • \ rS rSrSrSU 4S jjrSrU =r$ )ÚVrulei†  z,Convenience class to create a vertical rule.c                ó‚   >• UR                  5       n[        TU ]	  U[        R                  [        R                  U5        g rP   r©  )rS   r  r«  r×   s      €r1   rT   ÚVrule.__init__‰  s,   ø€ Ø×9Ñ9Ó;ˆ	Ü‰Ñ˜¤B§F¡F¬B¯F©F°EÕ:rE   r<   )r  r  r7  r  s   @r1   r¯  r¯  †  s   ø† Ù6÷;õ ;rE   r¯  c                  óH   • \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S'   S	rg
)Ú	_GlueSpeciŽ  r6   r7   r�  rt   r�  r  r‘  r<   NrŒ   r<   rE   r1   r³  r³  Ž  s   ‡ ØƒLØƒNØÓØƒMØÖrE   r³  r–   ç      ð?rl   rç   g      ð¿)ÚfilÚfillÚfilllÚneg_filÚneg_fillÚ	neg_filllÚemptyÚssc                  óD   ^ • \ rS rSrSr  SU 4S jjrSU 4S jjrSrU =r$ )r�  i¢  zú
Most of the information in this object is stored in the underlying
``_GlueSpec`` class, which is shared between multiple glue objects.
(This is a memory optimization which probably doesn't matter anymore, but
it's easier to stick to what TeX does.)
c                óÆ   >• [         TU ]  5         [        U[        5      (       a  [        R
                  U   nO#[        U[        5      (       a  UnO[        S5      eX l        g )Nz.glue_type must be a glue spec name or instance)rÐ   rT   r•  rŠ   r³  Ú_namedr.   rŽ  )rS   Ú	glue_typerŽ  r×   s      €r1   rT   ÚGlue.__init__ª  sP   ø€ ô 	‰ÑÔÜ�i¤×%Ñ%Ü!×(Ñ(¨Ñ3‰IÜ˜	¤9×-Ñ-Ø!‰IäÐMÓNÐNØ"�rE   c                ó®   >• [         TU ]  5         U R                  [        :  a2  U R                  nUR                  UR                  [        -  S9U l        g g )N©r7   )rÐ   r  r›  r,  rŽ  Ú_replacer7   r-  )rS   ru  r×   s     €r1   r  ÚGlue.shrink·  sB   ø€ Ü‰‰ÔØ�9‰9”Ó&Ø—‘ˆAØŸZ™Z¨a¯g©g¼Ñ.E˜ZÐFˆD�Nð 'rE   )rŽ  )rÀ  z`_GlueSpec | T.Literal['fil', 'fill', 'filll', 'neg_fil', 'neg_fill', 'neg_filll', 'empty', 'ss']r$  )	r>   r?   r@   rA   rB   rT   r  rD   r  r  s   @r1   r�  r�  ¢  s$   ø† ñð#ðA÷#÷Gõ GrE   r�  c                  ó0   ^ • \ rS rSrSrSU 4S jjrSrU =r$ )Ú	HCenteredi¾  z`
A convenience class to create an `Hlist` whose contents are
centered within its enclosing box.
c                óP   >• [         TU ]  [        S5      /UQ[        S5      PSS9  g )Nr¼  F©r~  ©rÐ   rT   r�  re  s     €r1   rT   ÚHCentered.__init__Ä  s*   ø€ Ü‰Ñœ$˜t›*Ð< xÐ<´°d³Ð<ÀeÐÒLrE   r<   ©rf  z
list[Node]r7  r  s   @r1   rÇ  rÇ  ¾  s   ø† ñ÷
Mõ MrE   rÇ  c                  ó0   ^ • \ rS rSrSrSU 4S jjrSrU =r$ )Ú	VCenterediÈ  z_
A convenience class to create a `Vlist` whose contents are
centered within its enclosing box.
c                óR   >• [         TU ]  [        S5      /UQ[        S5      P5        g )Nr¼  rÊ  re  s     €r1   rT   ÚVCentered.__init__Î  s%   ø€ Ü‰Ñœ$˜t›*Ð< xÐ<´°d³Ð<Õ=rE   r<   rÌ  r7  r  s   @r1   rÎ  rÎ  È  s   ø† ñ÷
>õ >rE   rÎ  c                  óR   ^ • \ rS rSrSrSrSrSU 4S jjrS	S jrS
U 4S jjr	Sr
U =r$ )r�  iÒ  a}  
A `Kern` node has a width field to specify a (normally
negative) amount of spacing. This spacing correction appears in
horizontal lists between letters like A and V when the font
designer said that it looks better to move them closer together or
further apart. A kern node can also appear in a vertical list,
when its *width* denotes additional spacing in the vertical
direction.
r   c                ó.   >• [         TU ]  5         Xl        g rP   )rÐ   rT   r7   r;  s     €r1   rT   ÚKern.__init__à  s   ø€ Ü‰ÑÔØ�
rE   c                ó    • SU R                   -  $ )Nzk%.02frÃ  r  s    r1   r  ÚKern.__repr__ä  s   € Ø˜$Ÿ*™*Ñ$Ð$rE   c                ó~   >• [         TU ]  5         U R                  [        :  a  U =R                  [
        -  sl        g g rP   )rÐ   r  r›  r,  r7   r-  r.  s    €r1   r  ÚKern.shrinkç  s,   ø€ Ü‰‰ÔØ�9‰9”Ó&Ø�JŠJœ-Ñ'ŽJð 'rE   rÃ  r=  r%  r$  )r>   r?   r@   rA   rB   r8   r9   rT   r  r  rD   r  r  s   @r1   r�  r�  Ò  s(   ø† ñð €FØ€E÷ô%÷(õ (rE   r�  c                  ó<   ^ • \ rS rSrSr S   SU 4S jjjrSrU =r$ )ÚAutoHeightCharií  a  
A character as close to the given height and depth as possible.

When using a font with multiple height versions of some characters (such as
the BaKoMa fonts), the correct glyph will be selected, otherwise this will
always just return a scaled version of the glyph.
c                ó|  >• UR                   R                  UR                  U5      nUR                   R                  UR                  UR                  UR
                  5      nUR                  5       nX#-   n	U H;  u  p«X¤l        [        X´5      nUR                  UR                  -   U	SU-  -
  :¼  d  M;    O   SnUR                  S:w  d  [        U5      S:X  aN  Uc  U	WR                  UR                  -   -  nU=R                  U-  sl        [        WU5      nX<R                  -
  n[        TU ]1  W/5        XÐl        g )Nrõ  r–   r   r   )r
  rÃ   rZ   r»   r[   rŸ   Úcopyr?  r8   r9   r,  rÐ   rT   r`  )rS   rq  r8   r9   r  ÚalwaysÚfactorræ  r   Útarget_totalrÂ   r©   r³  Úshiftr×   s                 €r1   rT   ÚAutoHeightChar.__init__ö  s  ø€ à—}‘}×FÑFØ�J‰J˜óˆð —-‘-×+Ñ+Ø�J‰J˜Ÿ™¨¯	©	ó3ˆð —
‘
“ˆØ‘~ˆÛ)‰MˆHØ!ŒJÜ˜Ó#ˆDð �{‰{˜TŸZ™ZÑ'¨<¸#À¹-Ñ+GÕGÙñ *ð ˆØ�:‰:˜‹?œc ,Ó/°1Ó4Ø‰~Ø%¨¯©°t·z±zÑ)AÑB�Ø�NŠN˜fÑ$�NÜ˜˜UÓ#ˆDàŸZ™ZÑ'ˆEä‰Ñ˜$˜Ô Ø!ÕrE   )r`  )FN)rq  rŠ   r8   r6   r9   r6   r  r  rÜ  r�   rÝ  r­  r7  r  s   @r1   rÙ  rÙ  í  s(   ø† ñð ?Cð"Øð"Ø/;÷"ö "rE   rÙ  c                  ó:   ^ • \ rS rSrSrS\4 SU 4S jjjrSrU =r$ )ÚAutoWidthChari  zÿ
A character as close to the given width as possible.

When using a font with multiple width versions of some characters (such as
the BaKoMa fonts), the correct glyph will be selected, otherwise this will
always just return a scaled version of the glyph.
Fc                ód  >• UR                   R                  UR                  U5      nUR                  5       nU H%  u  pxXsl        U" Xƒ5      n	U	R                  U:¼  d  M%    O   UW	R                  -  n
U=R
                  U
-  sl        U" WU5      n	[        TU ]  U	/5        U	R                  U l        g rP   )r
  rÃ   rZ   rÛ  r7   r[   rÐ   rT   )rS   rq  r7   r  rÜ  Ú
char_classræ  rÂ   r©   r³  rÝ  r×   s              €r1   rT   ÚAutoWidthChar.__init__  s›   ø€ à—}‘}×FÑFØ�J‰J˜óˆð —
‘
“ˆÛ)‰MˆHØ!ŒJÙ˜cÓ)ˆDØ�z‰z˜UÕ"Ùñ	 *ð ˜Ÿ™Ñ#ˆØ�Š˜&Ñ �Ù˜#˜uÓ%ˆä‰Ñ˜$˜Ô Ø—Z‘Zˆ�
rE   rÃ  )
rq  rŠ   r7   r6   r  r  rÜ  r�   rä  z
type[Char])	r>   r?   r@   rA   rB   r?  rT   rD   r  r  s   @r1   râ  râ    s$   ø† ñð QVØ*.ð Ø'÷ ö  rE   râ  c           	     óà   ^^^^^^	^
^• Uu  p#SmSmUmX0R                   -   m	[        U 5      m
SS jmSUUUUUU	U
U4S jjmSUUUUUU	U
U4S jjm[        U [        5      (       d   eT" U 5        T
$ )a“  
Ship out *box* at offset *xy*, converting it to an `Output`.

Since boxes can be inside of boxes inside of boxes, the main work of `ship`
is done by two mutually recursive routines, `hlist_out` and `vlist_out`,
which traverse the `Hlist` nodes and `Vlist` nodes inside of horizontal
and vertical boxes.  The global variables used in TeX to store state as it
processes have become local variables here.
r–   c                ó&   • U S:  a  S$ U S:”  a  S$ U $ )Ng    eÍÍÁg    eÍÍAr<   )Úvalues    r1   ÚclampÚship.<locals>.clampC  s   € Ø˜t“|ˆtÐH°¸³¨ÐHÀ5ÐHrE   c                ó|  >• SnSnU R                   nU R                  nTnTnU R                   GHŠ  n[        U[        5      (       a*  UR                  TTT-   TT-   5        TUR                  -  mMC  [        U[        5      (       a  TUR                  -  mMi  [        U[        5      (       a�  [        UR                  5      S:X  a  TUR                  -  mM¨  TnXWR                  -   m[        U[        5      (       a	  T" U5        O%[        U[        5      (       a	  T" U5        O S5       eX‡R                  -   mUmGM  [        U[        5      (       a¦  UR                  n	UR                  n
UR                  n[         R"                  " U	5      (       a  U R                  n	[         R"                  " U
5      (       a  U R                  n
U	S:”  a&  US:”  a   XZ-   mUR                  TTT-   TT-   X¹5        UmTU-  mGMÉ  [        U[$        5      (       d  GMá  UR&                  nUR                  U-
  nUS:w  a  US:X  a=  UR(                  U:X  a,  X,R*                  -  n[-        T" U R.                  U-  5      5      nO<UR0                  U:X  a,  X,R2                  -  n[-        T" U R.                  U-  5      5      nX±-  nTU-  mGM�     g )Nr   r–   úunreachable coder   )rd  rc  ra  r•  r?  r"  r7   r�  r^  r,  r`  r{  r˜  r   r8   r9   rX   r‹  r�  rŽ  r�  r�  Úroundrb  r‘  r  )rR   Úcur_gÚcur_gluerd  rc  Ú	base_lineÚ	left_edgerc  ÚedgeÚrule_heightÚ
rule_depthÚ
rule_widthrŽ  ré  Úcur_hÚcur_vÚ	hlist_outÚoff_hÚoff_vr²   Ú	vlist_outs                €€€€€€€€r1   rø  Úship.<locals>.hlist_outF  sP  ø€ ð ˆØˆØ—^‘^ˆ
Ø—M‘Mˆ	Øˆ	Øˆ	à—•ˆAÜ˜!œT×"Ñ"Ø—‘˜ ¨¡°¸±Ô>Ø˜Ÿ™Ñ ’Ü˜Aœt×$Ñ$Ø˜Ÿ™Ñ ’Ü˜Aœt×$Ñ$ä�q—z‘z“? aÓ'Ø˜QŸW™WÑ$’Eà �DØ%¯©Ñ6�EÜ! !¤U×+Ñ+Ù! !�Ü# A¤u×-Ñ-á! !�à8Ð&8Ó8˜uØ §7¡7™N�EØ%“EÜ˜Aœs×#Ñ#àŸh™h�ØŸW™W�
ØŸW™W�
Ü—8’8˜K×(Ñ(Ø"%§*¡*�KÜ—8’8˜J×'Ñ'Ø!$§¡�JØ “? z°A£~Ø%Ñ2�EØ—H‘H˜VØ" U™]¨E°E©MØ'ô6ð &�EØ˜Ñ#“Ü˜Aœt×$Ô$àŸK™K�	Ø&Ÿ_™_¨uÑ4�
Ø “>Ø  A“~Ø$×2Ñ2°jÓ@Ø$×(9Ñ(9Ñ9˜HÜ$)©%°·±¸xÑ0GÓ*HÓ$I˜EøØ"×/Ñ/°:Ó=Ø ×$4Ñ$4Ñ4˜Ü %¡e¨C¯L©L¸8Ñ,CÓ&DÓ E˜ØÑ#�
Ø˜Ñ#“òg rE   c                ón  >• SnSnU R                   nU R                  nTnTU R                  -  mTnU R                   GHt  n[	        U[
        5      (       a  TUR                  -  mM*  [	        U[        5      (       a¼  [        UR                  5      S:X  a  TUR                  UR                  -   -  mMv  TUR                  -  mXWR                  -   mTnU R                  Ul        [	        U[        5      (       a	  T" U5        O%[	        U[        5      (       a	  T" U5        O S5       eX‡R                  -   mUmMû  [	        U[        5      (       aƒ  UR                  n	UR                  n
UR                  n[        R                  " U5      (       a  U R                  nXš-  n	U	S:”  a+  U
S:”  a"  TU	-  mUR!                  TTT-   TT-   X¹5        GM�  GM�  GM“  [	        U["        5      (       a¬  UR$                  nUR                  U-
  n	US:w  a  US:X  a=  UR&                  U:X  a,  X,R(                  -  n[+        T" U R,                  U-  5      5      nO<UR.                  U:X  a,  X,R0                  -  n[+        T" U R,                  U-  5      5      nX‘-  n	TU	-  mGMT  [	        U[2        5      (       d  GMl  [5        S5      e   g )Nr   r–   rì  r   z1Internal mathtext error: Char node found in vlist)rd  rc  r8   ra  r•  r�  r7   r^  r,  r9   r`  r{  r˜  r   rX   r‹  r"  r�  rŽ  r�  r�  rí  rb  r‘  r  r?  r�  )rR   rî  rï  rd  rc  rñ  Útop_edgerc  Úsave_vró  rô  rõ  rŽ  ré  rö  r÷  rø  rù  rú  r²   rû  s                €€€€€€€€r1   rû  Úship.<locals>.vlist_out…  sW  ø€ ð ˆØˆØ—^‘^ˆ
Ø—M‘Mˆ	Øˆ	Ø�—‘ÑˆØˆà—•ˆAÜ˜!œT×"Ñ"Ø˜Ÿ™Ñ ’Ü˜Aœt×$Ñ$Ü�q—z‘z“? aÓ'Ø˜QŸX™X¨¯©Ñ/Ñ/’Eà˜QŸX™XÑ%�EØ%¯©Ñ6�EØ"�FØ!Ÿi™i�A”GÜ! !¤U×+Ñ+Ù! !�Ü# A¤u×-Ñ-Ù! !�à8Ð&8Ó8˜uØ"§W¡WÑ,�EØ%’EÜ˜Aœs×#Ñ#ØŸh™h�ØŸW™W�
ØŸW™W�
Ü—8’8˜J×'Ñ'Ø!$§¡�JØÑ)�Ø “? z°A£~Ø˜[Ñ(�EØ—H‘H˜VØ" U™]¨E°E©MØ'÷6ò (6’?ô
 ˜Aœt×$Ñ$ØŸK™K�	Ø'Ÿo™o°Ñ5�Ø “>Ø  A“~Ø$×2Ñ2°jÓ@Ø$×(9Ñ(9Ñ9˜HÜ$)©%°·±¸xÑ0GÓ*HÓ$I˜EøØ"×/Ñ/°:Ó=Ø ×$4Ñ$4Ñ4˜Ü %¡e¨C¯L©L¸8Ñ,CÓ&DÓ E˜ØÑ$�Ø˜Ñ$“Ü˜Aœt×$Ô$Ü"ØGóIð Iò[ rE   )rè  r6   r€   r6   )rR   r{  r€   rÇ   )rR   r˜  r€   rÇ   )r8   rM   r•  r{  )rR   ÚxyrI   rJ   ré  rö  r÷  rø  rù  rú  r²   rû  s       @@@@@@@@r1   ru   ru   2  sn   ÿ€ ð �F€BØ€EØ€EØ€EØ—‘‰O€EÜ�C‹[€FôI÷=$ö =$÷~9Iö 9Iôv �cœ5×!Ñ!Ð!Ð!Ùˆc„NØ€MrE   c                óF   ^ • SU 4S jjn[        5       R                  U5      $ )z$Helper class to raise parser errors.c                ó   >• [        XT5      erP   ©r   )rf  ÚlocÚtoksÚmsgs      €r1   Úraise_errorÚError.<locals>.raise_errorË  s   ø€ Ü! !¨#Ó.Ð.rE   ©rf  rŠ   r  rt   r  r   r€   úT.Any)r   Úset_parse_action)r  r  s   ` r1   ÚErrorr  É  s   ø€ ÷/ô ‹7×#Ñ# KÓ0Ð0rE   c                  óv   • \ rS rSrSr  S
S jrSS jr\SS j5       r\R                  SS j5       rSS jr
Srg	)r  iÑ  zè
Parser state.

States are pushed and popped from a stack as necessary, and the "current"
state is always at the top of the stack.

Upon entering and leaving a group { } or math/non-math, the stack is pushed
and popped accordingly.
c                ó@   • Xl         X l        X0l        X@l        XPl        g rP   )r
  Ú_fontr¨   r[   rŸ   )rS   r
  rZ   r¨   r[   rŸ   s         r1   rT   ÚParserState.__init__Ü  s   € àŒØŒ
Ø$ŒØ ŒØ�rE   c                ó.   • [         R                   " U 5      $ rP   )rÛ  r  s    r1   rÛ  ÚParserState.copyä  s   € Ü�yŠy˜‹ÐrE   c                ó   • U R                   $ rP   )r  r  s    r1   rZ   ÚParserState.fontç  s   € à�z‰zÐrE   c                ó(   • US;   a  Xl         Xl        g )N)r  r  r  rË  )r¨   r  )rS   rœ  s     r1   rZ   r  ë  s   € àÐ-Ó-Ø"ŒOØ�
rE   c                óx   • U R                   R                  U R                  U R                  U R                  5      $ )z.Return the underline thickness for this state.)r
  r¾   rZ   r[   rŸ   r  s    r1   rª  Ú+ParserState.get_current_underline_thicknessñ  s,   € à�|‰|×3Ñ3Ø�I‰I�t—}‘} d§h¡hó0ð 	0rE   )r  rŸ   r¨   r
  r[   N)
r
  rŽ   rZ   rŠ   r¨   rŠ   r[   r6   rŸ   r6   ©r€   r  r%  )rœ  rŠ   r€   rÇ   )r€   r6   )r>   r?   r@   rA   rB   rT   rÛ  ÚpropertyrZ   Úsetterrª  rD   r<   rE   r1   r  r  Ñ  sJ   † ñðØôôð óó ðð 
‡[�[óó ð÷
0rE   c                ó´   ^• SU4S jjmU R                  SS5      S   nX:X  a!  USR                  S T" U5       5       5      -   OU nX![        SU 35      -  -
  $ )	a�  
Helper to define TeX commands.

``cmd("\cmd", args)`` is equivalent to
``"\cmd" - (args | Error("Expected \cmd{arg}{...}"))`` where the names in
the error message are taken from element names in *args*.  If *expr*
already includes arguments (e.g. "\cmd{arg}{...}"), then they are stripped
when constructing the parse element, but kept (and *expr* is used as is) in
the error message.
c              3  óÄ   >#   • [        U [        5      (       a$  U R                   H  nT" U5       S h  v•N   M     g U R                  (       a  U R                  v •  g g  N*7frP   )r•  r   ÚexprsÚresultsName)ÚeltÚexprÚnamess     €r1   r"  Úcmd.<locals>.names  sI   øé € Ü�cœ?×+Ñ+ØŸ	œ	�Ù  ›;×&Ò&ò "à�_�_Ø—/‘/Ó!ð ñ 'ùs   ƒ0A ³A´+A r9  r   r   Ú c              3  ó,   #   • U  H
  nS U-  v •  M     g7f)z{%s}Nr<   )rñ   rœ  s     r1   ró   Úcmd.<locals>.<genexpr>  s   é € ÐB²k¨d˜F TžM²kùs   ‚z	Expected )r   r   r€   zT.Generator[str, None, None])r€  rj  r  )r!  ÚargsÚcsnamer0   r"  s       @r1   Úcmdr)  ÷  sc   ø€ ÷"ð �Z‰Z˜˜QÓ Ñ"€Fà‹nð �B—G‘GÑB±e¸D´kÓBÓBÒBØ"&ð àœE I¨c¨UÐ"3Ó4Ñ4Ñ5Ð5rE   c                  ó@  ^• \ rS rSrSr " S S\R                  5      r\" SR                  5       5      r
\" SR                  5       5      r\" SR                  5       5      r\
\-  \-  r\" SR                  5       5      r\" S	R                  5       5      r\" S
R                  5       5      r\" SR                  5       5      r\" SR                  5       5      r\" SR                  5       5      r\" SR                  5       5      r\" SR                  5       5      r\" SR                  5       5      r\\-  \-  r\" \" \" S5      \" S5      S-   5       V VVVs/ s HA  n[4        R6                  " [9        U5      5      R                  5       S   R;                  5       PMC     snnnn 5      r\" \R@                  5      r!ShS jr"SiS jr#SjS jr$ShS jr%ShS jr&SkS jr'SlS jr(SmS jr)SmS jr*\+" \,RZ                  5      r.SmS jr/SnS jr0S S S S!S!S"S#S#S$SS%S&S'.r1SmS( jr2SmS) jr3    SoS* jr4SpS+ jr50 S,S-_S.S/_S0S1_S2S3_S4S5_S6S7_S8S9_S:S;_S<S=_S>S?_S@SA_SBS;_SCS3_SDS5_SES7_SFS9_SGS-_SHSISJSK.Er6\" SLR                  5       5      r7SmSM jr8SpSN jr9SpSO jr:SmSP jr;SmSQ jr<SmSR jr=\=r>SqSS jr?SpST jr@SmSU jrASrSV jrBSrSW jrCSrSX jrDSpU4SY jjrE      SsSZ jrFSmS[ jrGSmS\ jrHSmS] jrISmS^ jrJSmS_ jrKSpS` jrL\L=rMrNSmSa jrOSmSb jrP      StSc jrQSmSd jrRSmSe jrSSmSf jrTSgrUU=rV$ s  snnnn f )uÚParseri  zÅ
A pyparsing-based parser for strings containing math expressions.

Raw text may also appear outside of pairs of ``$``.

The grammar is based directly on that in TeX, though it cuts a few corners.
c                  ó$   • \ rS rSrSrSrSrSrSrg)ÚParser._MathStylei  r   r   rl   rç   r<   N)	r>   r?   r@   rA   ÚDISPLAYSTYLEÚ	TEXTSTYLEÚSCRIPTSTYLEÚSCRIPTSCRIPTSTYLErD   r<   rE   r1   Ú
_MathStyler-    s   † ØˆØˆ	ØˆØÓrE   r2  uÂ  + * - âˆ’
      \pm             \sqcap                   \rhd
      \mp             \sqcup                   \unlhd
      \times          \vee                     \unrhd
      \div            \wedge                   \oplus
      \ast            \setminus                \ominus
      \star           \wr                      \otimes
      \circ           \diamond                 \oslash
      \bullet         \bigtriangleup           \odot
      \cdot           \bigtriangledown         \bigcirc
      \cap            \triangleleft            \dagger
      \cup            \triangleright           \ddagger
      \uplus          \lhd                     \amalg
      \dotplus        \dotminus                \Cap
      \Cup            \barwedge                \boxdot
      \boxminus       \boxplus                 \boxtimes
      \curlyvee       \curlywedge              \divideontimes
      \doublebarwedge \leftthreetimes          \rightthreetimes
      \slash          \veebar                  \barvee
      \cupdot         \intercal                \amalg
      \circledcirc    \circleddash             \circledast
      \boxbar         \obar                    \merge
      \minuscolon     \dotsminusdots
      aF  
      = < > :
      \leq          \geq          \equiv       \models
      \prec         \succ         \sim         \perp
      \preceq       \succeq       \simeq       \mid
      \ll           \gg           \asymp       \parallel
      \subset       \supset       \approx      \bowtie
      \subseteq     \supseteq     \cong        \Join
      \sqsubset     \sqsupset     \neq         \smile
      \sqsubseteq   \sqsupseteq   \doteq       \frown
      \in           \ni           \propto      \vdash
      \dashv        \dots         \doteqdot    \leqq
      \geqq         \lneqq        \gneqq       \lessgtr
      \leqslant     \geqslant     \eqgtr       \eqless
      \eqslantless  \eqslantgtr   \lesseqgtr   \backsim
      \backsimeq    \lesssim      \gtrsim      \precsim
      \precnsim     \gnsim        \lnsim       \succsim
      \succnsim     \nsim         \lesseqqgtr  \gtreqqless
      \gtreqless    \subseteqq    \supseteqq   \subsetneqq
      \supsetneqq   \lessapprox   \approxeq    \gtrapprox
      \precapprox   \succapprox   \precnapprox \succnapprox
      \npreccurlyeq \nsucccurlyeq \nsqsubseteq \nsqsupseteq
      \sqsubsetneq  \sqsupsetneq  \nlesssim    \ngtrsim
      \nlessgtr     \ngtrless     \lnapprox    \gnapprox
      \napprox      \approxeq     \approxident \lll
      \ggg          \nparallel    \Vdash       \Vvdash
      \nVdash       \nvdash       \vDash       \nvDash
      \nVDash       \oequal       \simneqq     \triangle
      \triangleq         \triangleeq         \triangleleft
      \triangleright     \ntriangleleft      \ntriangleright
      \trianglelefteq    \ntrianglelefteq    \trianglerighteq
      \ntrianglerighteq  \blacktriangleleft  \blacktriangleright
      \equalparallel     \measuredrightangle \varlrtriangle
      \Doteq        \Bumpeq       \Subset      \Supset
      \backepsilon  \because      \therefore   \bot
      \top          \bumpeq       \circeq      \coloneq
      \curlyeqprec  \curlyeqsucc  \eqcirc      \eqcolon
      \eqsim        \fallingdotseq \gtrdot     \gtrless
      \ltimes       \rtimes       \lessdot     \ne
      \ncong        \nequiv       \ngeq        \ngtr
      \nleq         \nless        \nmid        \notin
      \nprec        \nsubset      \nsubseteq   \nsucc
      \nsupset      \nsupseteq    \pitchfork   \preccurlyeq
      \risingdotseq \subsetneq    \succcurlyeq \supsetneq
      \varpropto    \vartriangleleft \scurel
      \vartriangleright \rightangle \equal     \backcong
      \eqdef        \wedgeq       \questeq     \between
      \veeeq        \disin        \varisins    \isins
      \isindot      \varisinobar  \isinobar    \isinvb
      \isinE        \nisd         \varnis      \nis
      \varniobar    \niobar       \bagmember   \ratio
      \Equiv        \stareq       \measeq      \arceq
      \rightassert  \rightModels  \smallin     \smallowns
      \notsmallowns \nsimeqa­  
     \leftarrow \longleftarrow \uparrow \Leftarrow \Longleftarrow
     \Uparrow \rightarrow \longrightarrow \downarrow \Rightarrow
     \Longrightarrow \Downarrow \leftrightarrow \updownarrow
     \longleftrightarrow \updownarrow \Leftrightarrow
     \Longleftrightarrow \Updownarrow \mapsto \longmapsto \nearrow
     \hookleftarrow \hookrightarrow \searrow \leftharpoonup
     \rightharpoonup \swarrow \leftharpoondown \rightharpoondown
     \nwarrow \rightleftharpoons \leadsto \dashrightarrow
     \dashleftarrow \leftleftarrows \leftrightarrows \Lleftarrow
     \Rrightarrow \twoheadleftarrow \leftarrowtail \looparrowleft
     \leftrightharpoons \curvearrowleft \circlearrowleft \Lsh
     \upuparrows \upharpoonleft \downharpoonleft \multimap
     \leftrightsquigarrow \rightrightarrows \rightleftarrows
     \rightrightarrows \rightleftarrows \twoheadrightarrow
     \rightarrowtail \looparrowright \rightleftharpoons
     \curvearrowright \circlearrowright \Rsh \downdownarrows
     \upharpoonright \downharpoonright \rightsquigarrow \nleftarrow
     \nrightarrow \nLeftarrow \nRightarrow \nleftrightarrow
     \nLeftrightarrow \to \Swarrow \Searrow \Nwarrow \Nearrow
     \leftsquigarrow \overleftarrow \overleftrightarrow \cwopencirclearrow
     \downzigzagarrow \cupleftarrow \rightzigzagarrow \twoheaddownarrow
     \updownarrowbar \twoheaduparrow \rightarrowbar \updownarrows
     \barleftarrow \mapsfrom \mapsdown \mapsup \Ldsh \Rdsh
     z, ; . ! \ldotp \cdotpz}
       \sum \prod \coprod \bigcap \bigcup \bigsqcup \bigvee
       \bigwedge \bigodot \bigotimes \bigoplus \biguplus
       zlim liminf limsup sup max minz.\int \oint \iint \oiint \iiint \oiiint \iiiintz3rm cal it tt sf bf bfit default bb frak scr regularz¢
      arccos csc ker min arcsin deg lg Pr arctan det lim sec arg dim
      liminf sin cos exp limsup sinh cosh gcd ln sup cot hom log tan
      coth inf max tanhzn
      | \| / \backslash \uparrow \downarrow \updownarrow \Uparrow
      \Downarrow \Updownarrow . \vert \Vertz[
      ( [ \{ < \lfloor \langle \lceil \lbrace \leftbrace \lbrack \leftparen \lgroup
      z]
      ) ] \} > \rfloor \rangle \rceil \rbrace \rightbrace \rbrack \rightparen \rgroup
      u   Î±u   Ï‰r   rä  c                ó6  ^ ^• [         R                  " 5       mSCUU 4S jjnSDS jn[        S5      Tl        [	        T R
                  5      " S5      Tl        [	        T R                   Vs/ s H  n[        UR                  5      PM     sn5      " S5      Tl
        [        SSR                  S	R                  [        [        R                  [         5      5      5      -   5      " S
5      R#                  5       Tl        [        S5      " S5      Tl        U" ST R(                  5      Tl        [-        S[	        T R(                  5      " S5      -   5      S-   Tl        [1        S5      Tl        [	        T R4                  5      Tl        [9        5       Tl        [9        5       Tl        [9        5       Tl        [9        5       Tl         [9        5       Tl!        [9        5       Tl"        T=R>                  TR<                  -  sl        U" 5         T=RB                  S[G        TRD                  5      " S5      -   S-   -  sl!        T=R@                  S[I        TRD                  5      " S5      -   S-   -  sl         [K        SSTR                  S5      -   S-   5      Tl&        U" S/ T RN                  QT RP                  Q5      TR?                  S
5      -
  Tl)        U" ST RT                  5      Tl+        TR.                  [G        TRD                  5      " S5      -   TR2                  -   Tl,        TR.                  [G        TRD                  5      " S5      -   [[        5       -   Tl.        [K        STRA                  S5      TRA                  S5      -   5      Tl/        [K        STRA                  S5      TRA                  S5      -   5      Tl0        [K        STRA                  S5      TRA                  S5      -   5      Tl1        [K        SS[-        TR6                  5      " S5      -   S-   S-   [-        TR6                  5      " S5      -   S-   S-   TR                  S5      -   S-   S-   [-        TR                  5      " S5      -   S-   TRA                  S5      -   TRA                  S5      -   5      Tl2        [K        S[-        S[I        [g        S5      TRD                  -   5      " S 5      -   S-   5      TRA                  S!5      -   5      Tl4        [K        S"TRA                  S#5      5      Tl5        [K        S$TRC                  S%5      TRC                  S#5      -   5      Tl6        [K        S&TRC                  S%5      TRC                  S#5      -   5      Tl7        [K        S'[q        SS(SS)95      Tl9        [K        S*[u        SS[w        [I        TRD                  5      5      [G        [1        S+5      Ry                  5       5      -   S,9" S-5      5      Tl=        [-        TR<                  5      " S.5      [I        [	        S/S0/5      TR<                  -
  5      " S15      -   [        S25      " S35      -   [        S45      " S35      -  TR?                  S.5      [        S25      " S35      -   -  Tl>        TR                  TRL                  -  TR*                  -  TR|                  -  Tl?        T=RD                  TR~                  TR:                  -  TR\                  -  TR&                  -  -  sl"        [K        S5S[G        TR~                  5      " S5      -   S-   5      Tl@        [K        S6S[G        TR~                  5      " S!5      -   S-   5      TlA        T=R<                  TRR                  TR$                  -  TRV                  -  TR€                  -  TRX                  -  TR^                  -  TR`                  -  TRb                  -  TRd                  -  TRl                  -  TRn                  -  TRh                  -  TRj                  -  TRr                  -  TR‚                  -  TRz                  -  -  sl        S7TR7                  S85      […        S95      -  -
  nT=R:                  S:TR7                  S;5      […        S95      -  -
  [G        TR~                  TR:                  -  U-  5      " S<5      -   S=-   TR7                  S>5      […        S95      -  -
  -  sl        [I        TRD                  5      TlC        [q        S?S(S@SA9TlD        [        SB5      R#                  5       TlE        TRŠ                  [G        TRˆ                  TRŠ                  -   5      -   [[        5       -   TlF        U" 5         TRŒ                  T lG        TR†                  T lH        S@T lI        g s  snf )ENc                 ó  >• [        T5      R                  5        Hb  u  pU R                  S5      (       a  M  U S;  a  UR                  U 5        [	        TU 5      (       d  MG  UR                  [        TU 5      5        Md     g )NÚ_)ÚtokenÚ	placeableÚ
auto_delim)Úvarsr%  r«  Úset_nameÚhasattrr  rŒ  )r&  rò   rc  rS   s     €€r1   Úset_names_and_parse_actionsÚ4Parser.__init__.<locals>.set_names_and_parse_actions³  sa   ø€ Ü  ›GŸM™MžO‘�Ø—~‘~ c×*Ó*ð Ð"FÓFØŸ™ SÔ)ä˜t S×)Ó)Ø×,Ñ,¬W°T¸3Ó-?Ö@ò ,rE   Úgroupc                óx  • / n/ nU H?  nUS   R                  5       (       a  UR                  U5        M.  UR                  U5        MA     [        SR                  U SR	                  [        [        R                  U5      5      U(       a  SOSSR	                  [        [        R                  U5      5      S95      $ )Nrä  z<\\(?P<{group}>(?:{alpha})(?![A-Za-z]){additional}{nonalpha})Ú|r$  )r>  Úalpharˆ  Únonalpha)Úisalphar±   r   ri  rj  rW   ÚreÚescape)r>  r"  Úends_with_alphaÚends_with_nonalpharœ  s        r1   ÚcsnamesÚ Parser.__init__.<locals>.csnamesÂ  s¢   € Ø ˆOØ!#ÐÛ�Ø˜‘8×#Ñ#×%Ñ%Ø#×*Ñ*¨4Ö0à&×-Ñ-¨dÖ3ñ	 ô
 ØO×VÑVØØŸ(™(¤3¤r§y¡y°/Ó#BÓCÞ&8™s¸bØ ŸX™X¤c¬"¯)©)Ð5GÓ&HÓIð	 Wð óð rE   z[-+]?([0-9]+\.?[0-9]*|\.[0-9]+)ÚspaceÚstyle_literalzI[a-zA-Z0-9 +\-*/<>=:,.;!\?&'@()\[\]|\U00000080-\U0001ffff]|\\[%${}\[\]_|]z|\\(?:{})(?![A-Za-z])r@  r©   z\\[A-Za-z]+rœ  rZ   z\mathr9  r=  z\hspaceÚaccentz\fracr\   Údenz\dfracz\binomz\genfracÚldelimÚrdelimÚrulesizeÚstylez\sqrt{value}rA  rD  Úrootrè  z	\overlineÚbodyz\oversetÚ
annotationz	\undersetz\textr)   )Úend_quote_charz	\substackz\\)ÚopenerÚcloserÚcontentÚpartsÚnucleusr5  ro  Úsubsuperz'*Úapostrophesz'+z\operatornamez\boldsymbolú\middleÚmdelimzExpected a delimiterz\leftÚleftrß  z\rightÚrightrK  F)Úunquote_resultsz(?:(?:\\[$])|[^$])*r$  )r>  rŠ   r"  zIterable[str]r€   r   )JÚtypesÚSimpleNamespacer   Úfloat_literalr   Ú_space_widthsrJ  r2  rŠ   rè  rK  ri  rj  rW   rD  rE  r   Úleave_whitespacer/   Úunknown_symbolÚ
_fontnamesrZ   r   Ústart_groupr   Ú	end_groupÚ_delimsÚdelimr   r8  r7  Únamed_placeableÚrequired_groupÚoptional_groupr6  r   r
   r)  ÚcustomspaceÚ_accent_mapÚ_wide_accentsrL  Ú_function_namesÚfunctionr>  r   Úunclosed_groupÚfracÚdfracÚbinomÚgenfracr	   ÚsqrtÚoverlineÚoversetÚundersetr   Útextr   r   ÚsuppressÚsubstackr[  ÚsimpleÚoperatornameÚ
boldsymbolr  ÚmathÚmath_stringÚnon_mathÚmainÚ_expressionÚ_math_expressionÚ_in_subscript_or_superscript)rS   r<  rH  rs  r^  rc  s   `    @r1   rT   ÚParser.__init__°  sc  ù€ Ü×!Ò!Ó#ˆ÷
	Að 
	Aô	ô" !Ð!CÓDˆŒÜ! $×"4Ñ"4Ô5°gÓ>ˆŒä!Ø#'§?¢?Ó3¢?˜aŒS�—‘Ž\¡?Ñ3ô5Ø5DóFˆŒô !ðà&×-Ñ-Ø—‘œœRŸY™Y¬Ó0Ó1ó3ñ3ô
ð
 ó÷
 "Ñ!Ó#ð 	
Œô ! Ô0°Ó8ˆÔá" 6¨4¯?©?Ó;ˆŒÜ# H¬v°d·o±oÔ/FÀvÓ/NÑ$NÓOÐRUÑUˆŒÜ" 3›<ˆŒä! $§,¡,Ó/ˆŒô %›YˆŒÜ$›YˆŒÜ$›YˆÔÜ$›YˆÔÜ$›YˆÔÜ$›YˆŒð 	
×Ò˜aŸk™kÑ)Õá#Ô%à	×Ò˜S¤:¨a¯g©gÔ#6°wÓ#?Ñ?À#ÑEÑEÕØ	×Ò˜S¤9¨Q¯W©WÔ#5°gÓ#>Ñ>ÀÑDÑDÕä˜J¨¨a¯o©o¸gÓ.FÑ(FÈÑ(LÓMˆŒñ �HÐF × 0Ñ 0ÐF°4×3EÑ3EÐFÓGØ×Ñ Ó&ñ'ð 	
Œñ ˜V T×%9Ñ%9Ó:ˆŒ
à—-‘-¤*¨Q¯W©WÔ"5°gÓ">Ñ>ÀÇÁÑLˆŒØŸM™M¬J°q·w±wÔ,?ÀÓ,HÑHÌ9Ë;ÑVˆÔä�h × 0Ñ 0°Ó 7¸!×:JÑ:JÈ5Ó:QÑ QÓRˆŒÜ�i ×!1Ñ!1°%Ó!8¸1×;KÑ;KÈEÓ;RÑ!RÓSˆŒÜ�i ×!1Ñ!1°%Ó!8¸1×;KÑ;KÈEÓ;RÑ!RÓSˆŒäØØ”(˜1Ÿ7™7Ô# HÓ-Ñ-°Ñ3ØñÜ˜QŸW™WÔ% hÓ/ñ0Ø25ñ6àñà—O‘O JÓ/ñ0à25ñ6ð ñô ˜QŸ_™_Ô-¨gÓ6ñ7ð :=ñ=ð ×Ñ˜uÓ%ñ	&ð
 ×Ñ˜uÓ%ñ&ó'ˆŒ	ô ØÜ�Sœ9¤V¨C£[°1·7±7Ñ%:Ô;¸FÓCÑCÀcÑIÓJØ×Ñ˜wÓ'ñ(ó)ˆŒô
 ˜ q×'7Ñ'7¸Ó'?Ó@ˆŒ
äØØ×Ñ˜\Ó*¨Q×-=Ñ-=¸fÓ-EÑEóGˆŒ	ô ØØ×Ñ˜\Ó*¨Q×-=Ñ-=¸fÓ-EÑEóGˆŒ
ô �Xœ|¨C°ÀcÑJÓKˆŒä˜Ü&¨c¸#Ü/4´Y¸q¿w¹wÓ5GÓ/HÜ'1´'¸&³/×2JÑ2JÓ2LÓ'Mñ0NòOàOVóXóYˆŒ
ô �a—k‘kÔ" 9Ó-Üœ  c 
Ó+¨a¯k©kÑ9Ô:¸:ÓFñGä�TŒ{˜=Ó)ñ*ô �DŒk˜-Ó(ñ)ð × Ñ  Ó+¬e°D¬k¸-Ó.HÑHñ	Jð 	
Œ
ð —7‘7˜QŸ]™]Ñ*¨Q¯V©VÑ3°a·j±jÑ@ˆŒà	�ŠØ�H‰HØ�l‰lñà×Ññð ×Ñññ	
�ô Ð-¨s´ZÀÇÁÔ5IÈ&Ó5QÑ/QÐTWÑ/WÓXˆŒäØ˜C¤*¨Q¯X©XÔ"6°wÓ"?Ñ?À#ÑEóGˆŒð 	
�ŠØ�H‰HØ�h‰hñð �j‰jñð �n‰nñ	ð
 �g‰gñð �f‰fñð �g‰gñð �g‰gñð �i‰iñ	ð �i‰iñ
ð �j‰jñð �f‰fñð �j‰jñð �f‰fñð �l‰lñð  �j‰jñ!ñ	
�ð( ˜qŸw™w xÓ0´5Ð9OÓ3PÑPÑQˆØ	�ŠØ˜Ÿ™ ›¬%Ð0FÓ*GÑGÑHÜ˜Ÿ™ A§L¡LÑ0°6Ñ9Ô:¸5ÓAñBàñàŸ7™7 7Ó+¬eÐ4JÓ.KÑKñMñ	
�ô $ A§G¡GÓ,ˆŒÜ& s¨DÀ%ÑHˆŒÜÐ 6Ó7×HÑHÓJˆŒ
à�J‰Jœ A§M¡M°A·J±JÑ$>Ó?Ñ?Ä)Ã+ÑMð 	
Œñ 	$Ô%àŸ6™6ˆÔØ !§¡ˆÔð -2ˆÕ)ùòa 4s   Á)fc                ól  • [        USSX45      /U l        0 U l         U R                  R	                  U5      n/ U l        SU l	        0 U l        [        R                  " 5         [        R                  " [        US   5      $ ! [
         a)  n[        S[        R                  " US5      -   5      SeSnAff = f)z‘
Parse expression *s* using the given *fonts_object* for
output, at the given *fontsize* and *dpi*.

Returns the parse tree of `Node` instances.
rÎ   r  Ú
r   NF)r  Ú_state_stackÚ_em_width_cacherˆ  Úparse_stringr   r.   r   ÚexplainrŠ  r   Úreset_cacherÚ   rÛ   r{  )rS   rf  Úfonts_objectr[   rŸ   Úresultr0   s          r1   ÚparseÚParser.parsei  s¯   € ô ˜ i°°xÓEðGˆÔàFHˆÔð	NØ×%Ñ%×2Ñ2°1Ó5ˆFð ˆÔØ,1ˆÔ)à!ˆÔÜ×!Ò!Ô#Ü�vŠv”e˜V A™YÓ'Ð'øô "ó 	Nä˜T¤N×$:Ò$:¸3ÀÓ$BÑBÓCÈÐMûð	Nús   �B  Â 
B3Â
$B.Â.B3c                ó    • U R                   S   $ )z&Get the current `State` of the parser.rä  )rŽ  r  s    r1   Ú	get_stateÚParser.get_state  s   € à× Ñ  Ñ$Ð$rE   c                ó8   • U R                   R                  5         g)zPop a `State` off of the stack.N)rŽ  Úpopr  s    r1   Ú	pop_stateÚParser.pop_stateƒ  s   € à×Ñ×ÑÕrE   c                ór   • U R                   R                  U R                  5       R                  5       5        g)z=Push a new `State` onto the stack, copying the current state.N)rŽ  r±   r˜  rÛ  r  s    r1   Ú
push_stateÚParser.push_state‡  s&   € à×Ñ× Ñ  §¡Ó!1×!6Ñ!6Ó!8Õ9rE   c                ó6   • [        UR                  5       5      /$ rP   )r{  Úas_list©rS   r  s     r1   r‡  ÚParser.main‹  s   € Ü�d—l‘l“nÓ%Ð&Ð&rE   c                óB   • U R                   R                  US   SS SS9$ )Nr   r   rä  T)Ú	parse_all)r‰  r�  r£  s     r1   r…  ÚParser.math_stringŽ  s(   € Ø×$Ñ$×1Ñ1°$°q±'¸!¸B°-È4Ð1ÐPÐPrE   c                óZ   • [        UR                  5       5      nU R                  5         U/$ rP   )r{  r¢  rœ  )rS   r  Úhlists      r1   r„  ÚParser.math‘  s#   € Ü�d—l‘l“nÓ%ˆØ�‰ÔØˆwˆrE   c                ó  • US   R                  SS5      nU Vs/ s H  n[        X0R                  5       5      PM     nn[        U5      nU R	                  5         [
        R                  S   U R                  5       l        U/$ s  snf )Nr   z\$rK  rþ   )Úreplacer?  r˜  r{  rŸ  r  r  rZ   )rS   r  rf  rq  Úsymbolsr©  s         r1   r†  ÚParser.non_math–  sn   € Ø�‰G�O‰O˜E 3Ó'ˆÙ67Ó8²a°”4˜Ÿ>™>Ó+Ö,±aˆÐ8Ü�g“ˆà�‰ÔÜ #§¡Ð-?Ñ @ˆ�‰ÓÔØˆwˆùò 9s   š#Bc           	     óÐ   • U R                  5         U R                  5       nSUl        [        US    Vs/ s H  n[	        X25      PM     sn5      nU R                  5         U/$ s  snf )Nr  r   )rŸ  r˜  rZ   r{  r?  rœ  )rS   r  r  rq  r©  s        r1   r~  ÚParser.text¡  sV   € Ø�‰ÔØ—‘Ó ˆØˆŒ
Ü¨t°AªwÓ7ªw¨!”t˜A–~©wÑ7Ó8ˆØ�‰ÔØˆwˆùò 8s   ´A#c                óz  • U R                  5       nUR                  UR                  UR                  4nU R                  R                  U5      nUc^  UR                  R                  S[        R                  S   SUR                  UR                  5      nUR                  nX@R                  U'   [        XA-  5      $ )Nr  rþ   rU  )r˜  rZ   r[   rŸ   r�  rÜ   r
  r®   r  r  r…   r�  )rS   Ú
percentager  r&  r7   rn   s         r1   Ú_make_spaceÚParser._make_space©  sœ   € ð —‘Ó ˆØ�z‰z˜5Ÿ>™>¨5¯9©9Ð5ˆØ×$Ñ$×(Ñ(¨Ó-ˆØ‰=Ø—m‘m×/Ñ/Ø”c—l‘lÐ#5Ñ6¸Ø—‘ §	¡	ó+ˆGð —O‘OˆEØ(-× Ñ  Ñ%Ü�EÑ&Ó'Ð'rE   g…¶œKqUÅ?gý0Bx´qÌ?g‚çÞÃ%ÇÑ?g¾¤1ZGUÕ?rò  rl   g…¶œKqUÅ¿)ú\,z
\thinspacez\/z\>z\:z\;z\ rr  z\enspacez\quadz\qquadz\!c                óN   • U R                   US      nU R                  U5      nU/$ ©NrJ  )re  r³  )rS   r  r\   rR   s       r1   rJ  ÚParser.spaceÉ  s-   € Ø× Ñ   g¡Ñ/ˆØ×Ñ˜sÓ#ˆØˆuˆrE   c                ó,   • U R                  US   5      /$ r·  )r³  r£  s     r1   rp  ÚParser.customspaceÎ  s   € Ø× Ñ   g¡Ó/Ð0Ð0rE   c                óX  • US   nUS:X  a  Sn [        X@R                  5       5      nX@R                  ;   aª  [        S US U S S S2    5       S5      nU R                  (       dN  X@R                  ;   aB  [        US U R                  5       5      S:X  d  US	1U R                  kU R                  k;   a  U/$ [        U R                  S
5      UU R                  S
5      /SS9/$ X@R                  ;   a—  [        S US U S S S2    5       S5      n[        S XS-   S   5       S5      nUS:X  a  US	:X  a	  US:X  a  U/$ US:X  a-  UR                  5       (       a  UR                  5       (       a  U/$ [        XPR                  S
5      /SS9/$ U/$ ! [         a  n[        XSU-  5      UeS nAff = f)Nr©   rj  u   âˆ’zUnknown symbol: %sc              3  ó4   #   • U  H  oS :w  d  M
  Uv •  M     g7f©rG  Nr<   ©rñ   rq  s     r1   ró   Ú Parser.symbol.<locals>.<genexpr>ä  ó   é € ÐCª A¸s¹(Ÿa™aªùó   ‚	�	rä  r$  r   r9  rõ  TrÉ  c              3  ó4   #   • U  H  oS :w  d  M
  Uv •  M     g7fr½  r<   r¾  s     r1   ró   r¿  ò  rÀ  rÁ  c              3  ó4   #   • U  H  oS :w  d  M
  Uv •  M     g7fr½  r<   r¾  s     r1   ró   r¿  ó  s   é € ÐAª A¸S¹Ÿa™aªùrÁ  r   rn  r=  rl  )r?  r˜  r.   r   Ú_spaced_symbolsr  rŠ  Ú_binary_operatorsr,  r€  Ú_left_delimsÚ_relation_symbolsr{  r³  Ú_punctuation_symbolsÚisdigit)	rS   rf  r  r  rq  r³  r0   Ú	prev_charÚ	next_chars	            r1   r/   ÚParser.symbolÑ  sé  € à�‰KˆØ�‹8ð !ˆAð	IÜ˜Ÿ>™>Ó+Ó,ˆDð
 ×$Ñ$Ó$ô ÑC¨¨4¨C¨±°2°ªÓCÀRÓHˆIð ×1×1Ø×/Ñ/Ó/Ü˜˜$˜3˜Ÿ™›Ó(¨AÓ-°Øð?JØ"×/Ñ/ð?JØ26×2HÑ2Hð?Jó 2Jà�v�ä˜t×/Ñ/°Ó4Ø#Ø#×/Ñ/°Ó4ð6ð '+ñ,ð -ð -ð ×+Ñ+Ó+ÜÑC¨¨4¨C¨±°2°ªÓCÀRÓHˆIÜÑA¨°©7¨8©ÓAÀ2ÓFˆIð �C‹xØ Ó#¨	°SÓ(8Ø ˜6�Mð �C‹x˜I×-Ñ-×/Ñ/°I×4EÑ4E×4GÑ4GØ�v�ä˜t×%5Ñ%5°cÓ%:Ð;ÀTÑJÐKÐKØˆvˆøôE ó 	IÜ% aØ&:¸QÑ&>ó@ØEHðIûð	Iús   �F
 Æ

F)ÆF$Æ$F)c                ó&   • [        XSUS    35      e)NzUnknown symbol: rœ  r  ©rS   rf  r  r  s       r1   rg  ÚParser.unknown_symbol	  s   € Ü! !Ð,<¸TÀ&¹\¸NÐ*KÓLÐLrE   Úhatz\circumflexaccentÚbrevez\combiningbreveÚbarz\combiningoverlineÚgravez\combininggraveaccentÚacutez\combiningacuteaccentÚtildez\combiningtildeÚdotz\combiningdotaboveÚddotz\combiningdiaeresisÚdddotz\combiningthreedotsaboveÚddddotz\combiningfourdotsaboveÚvecz\combiningrightarrowaboverC  Ú`rW  rr  rl  ro  z\rightarrowz
\leftarrowz\circ)ÚoverrightarrowÚoverleftarrowÚmathringzwidehat widetilde widebarc                óö  • U R                  5       nUR                  5       nUS   nUS   nX@R                  ;   a  [        SU-   UR                  U[
        S9nO[        U R                  U   U5      nUS:X  a   UR                  5         UR                  5         [        [        UR                  S-  5      U/5      nUR                  UR                  S5        [        U[        SUS	-  5      [        U/5      /5      $ )
NrL  r©   r)   )rä  rÞ  g      @Úexactlyr–   ç       @)r˜  rª  rr  râ  r7   rV  rq  r  rÇ  r9  r}  r˜  r3  r{  )rS   r  r  r«  rL  r©   Ú
accent_boxÚcentereds           r1   rL  ÚParser.accent	  sé   € Ø—‘Ó ˆØ×9Ñ9Ó;ˆ	Ø�h‘ˆØ�5‰kˆà×'Ñ'Ó'Ü&Ø�v‘˜sŸy™y¨%¼FñD‰Jô   × 0Ñ 0°Ñ 8¸%Ó@ˆJØ�ZÓØ×ÑÔØ×ÑÔÜœd 3§9¡9¨s¡?Ó3°ZÐ@ÓAˆØ�‰�s—y‘y )Ô,ÜØÜ�R˜ S™Ó)Ü�s�e“ðó ð 	rE   c                ó>   • U R                  XU5      nUS   Ul        U$ )Nrœ  )r‚  Úfunction_name)rS   rf  r  r  r©  s        r1   rt  ÚParser.function3	  s%   € Ø×!Ñ! !¨$Ó/ˆØ" 6™lˆÔØˆrE   c                óð  • U R                  5         U R                  5       nSUl        / nUS   nU H„  n[        U[        5      (       a*  SUl        UR                  5         UR                  U5        MB  [        U[        5      (       a  UR                  [	        Xt5      5        Ms  UR                  U5        M†     U[        U5      -   S-   n[        U[        5      (       a  U[        S5      -  n[        S XS   5       S5      n	U R                  SS1-  n
Xš;  a0  X`R                  ;  a!  XPR                  U R                  S	   5      /-  nU R                  5         U	S
;   a  SU l        OSU l        [#        U5      $ )Nr  rœ  r   zoperatorname{}c              3  ó4   #   • U  H  oS :w  d  M
  Uv •  M     g7fr½  r<   r¾  s     r1   ró   Ú&Parser.operatorname.<locals>.<genexpr>K	  s   é € ÐCÒ%6 ¸s¹(Ÿ!™!Ò%6ùrÁ  r$  ro  r5  rµ  >   ro  r5  TF)rŸ  r˜  rZ   r•  r?  rA  r±   rŠ   r,  r   r  rk  Ú_overunder_functionsr³  re  rœ  rŠ  r{  )rS   rf  r  r  r  Ú
hlist_listrœ  rq  Únext_char_locrË  Ú
delimiterss              r1   r‚  ÚParser.operatorname8	  sN  € Ø�‰ÔØ—‘Ó ˆØˆŒ
Ø!#ˆ
à�F‰|ˆÛˆAÜ˜!œT×"Ñ"Ø�”Ø×!Ñ!Ô#Ø×!Ñ! !Ö$Ü˜Aœs×#Ñ#Ø×!Ñ!¤$ q£.Ö1à×!Ñ! !Ö$ñ ð œc $›i™¨!Ñ+ˆÜ�dœL×)Ñ)ØœSÐ!1Ó2Ñ2ˆMÜÑC Q ~Ñ%6ÓCÀRÓHˆ	Ø—\‘\ S¨# JÑ.ˆ
ØÓ'Ø×5Ñ5Ó5à×+Ñ+¨D×,>Ñ,>¸uÑ,EÓFÐGÑGˆJØ�‰Ôð ˜
Ó"Ø04ˆDÕ-à05ˆDÔ-ä�ZÓ Ð rE   c                óš   • U R                  5         UR                  S5      (       a$  UR                  S5      U R                  5       l        / $ ©NrZ   )rŸ  rÜ   r˜  rZ   r£  s     r1   ri  ÚParser.start_group[	  s8   € Ø�‰Ôà�8‰8�F×ÑØ$(§H¡H¨VÓ$4ˆD�N‰NÓÔ!Øˆ	rE   c                ó>   • [        UR                  S/ 5      5      nU/$ ©Nr>  ©r{  rÜ   )rS   r  Úgrps      r1   r>  ÚParser.groupb	  s   € Ü�D—H‘H˜W bÓ)Ó*ˆØˆuˆrE   c                ó8   • [        UR                  S/ 5      5      $ rô  rõ  r£  s     r1   rn  ÚParser.required_groupf	  s   € Ü�T—X‘X˜g rÓ*Ó+Ð+rE   c                ó&   • U R                  5         / $ rP   )rœ  r  s    r1   rj  ÚParser.end_groupk	  s   € Ø�‰ÔØˆ	rE   c                ó.   • [        U[        U5      S5      e)NzExpected '}')r   r,  rÎ  s       r1   ru  ÚParser.unclosed_groupo	  s   € Ü! !¤S¨£V¨^Ó<Ð<rE   c                ó6   • US   U R                  5       l        / $ rñ  )r˜  rZ   r£  s     r1   rZ   ÚParser.fontr	  s   € Ø $ V¡ˆ�‰ÓÔØˆ	rE   c                óÞ   • [        U[        5      (       a  UR                  U R                  ;   $ [        U[        5      (       a*  [        US5      (       a  UR                  U R                  ;   $ g)Nræ  F)r•  r?  rq  Ú_overunder_symbolsr{  r;  ræ  rë  ©rS   rZ  s     r1   Úis_overunderÚParser.is_overunderv	  sW   € Ü�gœt×$Ñ$Ø—9‘9 × 7Ñ 7Ñ7Ð7Ü˜¤×'Ñ'¬G°G¸_×,MÑ,MØ×(Ñ(¨D×,EÑ,EÑEÐEØrE   c                ó`   • [        U[        5      (       a  UR                  U R                  ;   $ g©NF)r•  r?  rq  Ú_dropsub_symbolsr  s     r1   Ú
is_dropsubÚParser.is_dropsub}	  s'   € Ü�gœt×$Ñ$Ø—9‘9 × 5Ñ 5Ñ5Ð5ØrE   c                óN   • [        U[        5      (       a  UR                  5       $ gr  )r•  r?  rL  r  s     r1   rL  ÚParser.is_slanted‚	  s!   € Ü�gœt×$Ñ$Ø×%Ñ%Ó'Ð'ØrE   c           	     ó  >• UR                  S[        S5      5      nUR                  S/ 5      n[        UR                  S/ 5      5      nU(       d	  U(       d  U$ S =pxU(       a4  UtpšnU	S:X  a  Ub  [        S5      eU
nOUb  [        S5      eU
nU(       a  M4  U R	                  5       nUR
                  R                  UR                  UR                  UR                  5      nUR
                  R                  UR                  UR                  UR                  5      nU(       am  Uc  [        / 5      n[        U5       H0  nUR                  R                  U R                  XSS	05      5        M2     UR!                  5         UR#                  5         U R%                  U5      (       GaO  / nS
nUR&                  nUb&  UR)                  5         [+        UUR&                  5      nUb&  UR)                  5         [+        UUR&                  5      nUS-  nUb;  [-        U/5      nUR#                  US5        UR                  U[/        SU5      /5        [-        U/5      nUR#                  US5        UR1                  U5        UbW  [-        U/5      nUR#                  US5        UR                  [/        SU5      U/5        UR2                  U-   UR4                  -   n[7        U5      nUUl        [        U/5      nU/$ Un[;        U[        5      (       a‘  UR                  n[        U5      (       aj  [;        US   [<        5      (       a  [;        US   [>        5      (       a  US S nUS   n[;        U[>        5      (       a  UR@                  RB                  Ul        [        USS9nO<[;        U[>        5      (       a  UR@                  RB                  Ul        [        U/5      n[E        U5      nUR2                  nSnU RG                  U5      (       a  UR4                  nURH                  U-  nURH                  U-  nU RK                  U5      (       a„  UURH                  U-  -  nUURL                  UUS-  S-  -
  -  -  nU RG                  U5      (       a?  SURH                  -  URN                  -
  U-  nSURH                  -  URN                  -   U-  nOSnUc€  [        [=        U5      [P        RR                  " [T        U5      /5      nUR)                  5         U RG                  U5      (       a  UURV                  U-  -   nOURX                  U-  nUUl        GO3[        [=        U5      U/5      nUR)                  5         U RG                  U5      (       a  UURV                  U-  -
  nOURZ                  U-  nUc	  U* Ul        OÉ[        [=        U5      U/5      n U R)                  5         U RG                  U5      (       a  UURV                  U-  -   nOUR\                  U-  nSU-  UUR4                  -
  U R2                  U-
  -
  -
  n!U!S
:”  a  UU!-  n[7        U[=        UUR4                  -
  U R2                  U-
  -
  5      U /5      nUUl        U RG                  U5      (       d"  U=R&                  UR^                  U-  -  sl        UU/n"U R`                  (       a)  U"U Rc                  U Rd                  S   5      /-  n"SU l0        [        U"5      nU/$ )NrZ  r   r[  r\  r5  zDouble subscriptzDouble superscriptr©   rÄ  r–   ç      @rà  rä  éþÿÿÿFrÉ  rá  rç   rµ  )3rÜ   r9  r,  r   r˜  r
  r¾   rZ   r[   rŸ   r»   r{  rà  ra  Úextendr/   rO  r}  r  r7   r  rq   rÇ  r3  r±   r8   r9   r˜  r`  r•  r�  r?  rH  r…   r  r  rô  rL  rö  rø  rÚ   rÛ   r  rî  rñ  rï  ró  rí  rŠ  r³  re  )$rS   rf  r  r  rZ  r[  ÚnapostrophesÚsubrÐ   ÚopÚargr  Úrule_thicknessr   rF  Úvlistrß  r7   Úvgapr©  Úvltr”  Ú	last_charr‚  r  Ú	lc_heightÚlc_baselineÚ	superkernÚsubkernrÿ   Ú
shift_downÚshift_upr|   ÚclrÚspaced_nucleusr×   s$                                      €r1   r[  ÚParser.subsuper‡	  s>  ø€ Ø—(‘(˜9¤d¨1£gÓ.ˆØ—8‘8˜J¨Ó+ˆÜ˜4Ÿ8™8 M°2Ó6Ó7ˆæ¦ØˆNàÐˆÞØ!)ÐˆB�hØ�S‹yØ‘?Ü-Ð.@ÓAÐAØ‘àÑ$Ü-Ð.BÓCÐCØ�÷ ˆhð —‘Ó ˆØŸ™×>Ñ>Ø�J‰J˜Ÿ™¨¯	©	ó3ˆà—-‘-×+Ñ+Ø�J‰J˜Ÿ™¨¯	©	ó3ˆö Ø‰}Ü˜b›	�Ü˜<Ö(�Ø—‘×%Ñ% d§k¡k°!¸5À)Ð:LÓ&MÖNñ )ð �J‰JŒLØ�K‰KŒMð ×Ñ˜W×%Ò%ØˆEØˆEØ—M‘MˆEØÑ Ø—‘”Ü˜E 5§;¡;Ó/�Ø‰Ø—
‘
”Ü˜E 3§9¡9Ó-�à! CÑ'ˆDØÑ Ü! 5 'Ó*�Ø—‘˜E 9Ô-Ø—‘˜e¤T¨!¨T£]Ð3Ô4Ü˜w˜iÓ(ˆEØ�K‰K˜˜yÔ)Ø�L‰L˜ÔØ‰Ü! 3 %Ó(�Ø—‘˜E 9Ô-Ø—‘œd 1 d›m¨UÐ3Ô4ØŸ™ tÑ+¨g¯m©mÑ;�Ü˜“,ˆCØ$ˆCÔÜ˜C˜5“\ˆFØ�8ˆOð ˆ	Ü�gœu×%Ñ%Ø"×+Ñ+ˆLÜ�<× Ñ ä˜|¨BÑ/´×6Ñ6Ü" <°Ñ#3´T×:Ñ:Ø#/°°Ð#4�LØ(¨Ñ,�	Ü˜i¬×.Ñ.Ø&/×&8Ñ&8×&@Ñ&@�I”Oä˜L°%Ñ8‰Gä˜'¤4×(Ñ(Ø"+×"4Ñ"4×"<Ñ"<�	”Ü˜W˜IÓ&ˆGô +¨5Ó1ˆ	Ø×&Ñ&ˆ	ØˆØ�?‰?˜9×%Ñ%Ø#Ÿ/™/ˆKð —O‘O gÑ-ˆ	Ø—/‘/ GÑ+ˆØ�?‰?˜9×%Ñ%Ø˜Ÿ™¨7Ñ2Ñ2ˆIØ˜)×1Ñ1Ø$ w°¡|°bÑ'8Ñ8ñ:ñ ;ˆIà�‰˜y×)Ñ)Ø˜yŸ™Ñ.Ø$×3Ñ3ñ4Ø7@ñA�à §¡Ñ0Ø&×5Ñ5ñ6Ø9BñC‘	ð �ð ‰=ô
 ”t˜G“}¤a§f¢f¬T°3Ó&7Ð8Ó9ˆAØ�H‰HŒJØ�‰˜y×)Ñ)Ø(¨9×+<Ñ+<¸wÑ+FÑF‘
à&Ÿ^™^¨gÑ5�
Ø'ˆAŽNä”t˜I“¨Ð.Ó/ˆAØ�H‰HŒJØ�‰˜y×)Ñ)Ø$ y×'8Ñ'8¸7Ñ'BÑB‘à$Ÿ>™>¨GÑ3�Ø‰{Ø"* �•äœ4 ›=¨#Ð.Ó/�Ø—‘”
Ø—?‘? 9×-Ñ-Ø!,¨y×/@Ñ/@À7Ñ/JÑ!J‘Jà!*§¡°'Ñ!9�Jà˜^Ñ+Ø! A§G¡GÑ+°·±¸:Ñ0EÑFñH�à˜“8Ø ‘O�HÜØÜ˜( Q§W¡WÑ,°·±¸JÑ1FÑGÓHØðó �ð ",�”à�‰˜y×)Ñ)Ø�GŠG�y×-Ñ-°Ñ7Ñ7�Gð '.¨q \ˆØ×,×,Ø˜t×/Ñ/°×0BÑ0BÀ5Ñ0IÓJÐKÑKˆNØ05ˆDÔ-ä�~Ó&ˆØˆxˆrE   c           
     óÔ  • U R                  5       nUR                  5       n[        UR                  5       H#  n	UR	                  5         UR	                  5         M%     [        U/5      n
[        U/5      n[        UR                  UR                  5      nU
R                  US5        UR                  US5        [        U
[        SUS-  5      [        Xs5      [        SUS-  5      U/5      nUR                  R                  UR                  [        R                   S   SUR"                  UR$                  5      nUR&                  UR(                  UR*                  -   S-  US-  -
  -
  nXýl        [/        U[1        US-  5      /5      /nU(       d  U(       aQ  US:X  a  S	nUS:X  a  S	nU R3                  U[4        R6                  " [8        [:        [<        -  [>        -     U5      U5      $ U$ )
Nrà  r   rá  rþ   Ú=rl   r  r$  rl  ) r˜  rª  rà  rè  r  rÇ  rq   r7   r}  r˜  r3  r§  r
  r®   rZ   r  r  r[   rŸ   r8   rp   rs   r`  r{  r9  Ú_auto_sized_delimiterrÚ   rÛ   r¯  r   r?  rŠ   )rS   rN  rO  ÚrulerQ  r\   rM  r  r«  r5  ÚcnumÚcdenr7   r  rn   rß  r”  s                    r1   Ú_genfracÚParser._genfrac-
  sª  € à—‘Ó ˆØ×9Ñ9Ó;ˆ	ä�u—{‘{Ö#ˆAØ�J‰JŒLØ�J‰JŽLñ $ô ˜#˜ÓˆÜ˜#˜ÓˆÜ�C—I‘I˜sŸy™yÓ)ˆØ�
‰
�5˜)Ô$Ø�
‰
�5˜)Ô$Ü�tÜ˜A˜y¨3™Ó/Ü˜UÓ)Ü˜A˜y¨3™Ó/Øð	ó ˆð —-‘-×+Ñ+Ø�J‰JœŸ™Ð%7Ñ8Ø�—‘ §¡ó,ˆð —‘Ø—<‘< '§,¡,Ñ.°!Ñ3Ø˜c‘/ñ"ñ#ˆð #Ôä˜¤ Y°¡^Ó 4Ð5Ó6Ð7ˆÞ–VØ˜‹|Ø�Ø˜‹|Ø�Ø×-Ñ-¨fÜ./¯fªf´T¼#Ä¹*ÄsÑ:JÑ5KØ5;ó/=à.4ó6ð 6ð ˆrE   c                ó<   • U R                  [        US   5      5      $ )NrK  )r2  rt   r£  s     r1   rK  ÚParser.style_literalW
  s   € Ø�‰œs 4¨Ñ#8Ó9Ó:Ð:rE   c           	     óÈ   • U R                  UR                  SS5      UR                  SS5      US   UR                  SU R                  R                  5      US   US   5      $ )NrN  r$  rO  rP  rQ  r\   rM  )r(  rÜ   r2  r/  r£  s     r1   ry  ÚParser.genfracZ
  sZ   € Ø�}‰}Ø�H‰H�X˜rÓ" D§H¡H¨X°rÓ$:Ø�Ñ˜dŸh™h w°·±×0IÑ0IÓJØ�‰K˜˜e™ó&ð 	&rE   c           	     óš   • U R                  SSU R                  5       R                  5       U R                  R                  US   US   5      $ ©Nr$  r\   rM  )r(  r˜  rª  r2  r/  r£  s     r1   rv  ÚParser.frac`
  sE   € Ø�}‰}Ø��D—N‘NÓ$×DÑDÓFØ�O‰O×%Ñ% t¨E¡{°D¸±KóAð 	ArE   c           	     óš   • U R                  SSU R                  5       R                  5       U R                  R                  US   US   5      $ r/  )r(  r˜  rª  r2  r.  r£  s     r1   rw  ÚParser.dfrace
  sE   € Ø�}‰}Ø��D—N‘NÓ$×DÑDÓFØ�O‰O×(Ñ(¨$¨u©+°t¸E±{óDð 	DrE   c           	     ób   • U R                  SSSU R                  R                  US   US   5      $ )Nr/  r4  r   r\   rM  )r(  r2  r/  r£  s     r1   rx  ÚParser.binomj
  s5   € Ø�}‰}Ø��aØ�O‰O×%Ñ% t¨E¡{°D¸±KóAð 	ArE   c                óô  • US   nUS   nU R                  5       R                  5       nUR                  5         [        U/5      n[        U/5      n[	        UR
                  UR
                  5      n	UR                  U	S5        UR                  U	S5        US-  n
XS-      S:X  a;  [        U[        SU
5      U/5      nUR                  UR                  -   U
-   Ul        U$ [        U[        SU
5      U/5      nU$ )NrT  rS  rà  rç   r   Úur   )r˜  rª  r  rÇ  rq   r7   r}  r˜  r3  r9   r8   r`  )rS   rf  r  r  rT  rS  r«  Úcentered_annotationÚcentered_bodyr7   r  r  s               r1   Ú_gensetÚParser._genseto
  s  € Ø˜,Ñ'ˆ
Ø�F‰|ˆØ—N‘NÓ$×DÑDÓFˆ	à×ÑÔÜ'¨¨Ó5ÐÜ! 4 &Ó)ˆÜÐ'×-Ñ-¨}×/BÑ/BÓCˆØ×!Ñ! %¨Ô3Ø×Ñ˜E 9Ô-à˜1‰}ˆØ�1‰W‰:˜ÓÜØÜ�Q˜“Ø#ðó ˆEð "/×!4Ñ!4Ð7J×7QÑ7QÑ!QÐTXÑ!XˆEÔð ˆô Ø#Ü�Q˜“Øðó ˆEð ˆrE   c                ór  • UR                  S5      nUS   nU R                  5       nUR                  5       nUR                  UR                  -
  US-  -   nUR
                  UR                  -   n[        SXgUSS9nUR                  UR                  -
  nUR
                  UR                  -   n[        [        SU-  5      U[        SU-  5      /5      n	[        [        U5      [        S5      U	/5      n
U
R                  XdR                  UR                  -  S	-  -   S
U5        U(       d  [        UR                   S-  SS5      nO+[        U5      nUR#                  5         UR#                  5         [        [        U/5      /5      nU* S-  Ul        [        U[%        UR                   * S-  5      UU
/5      nU/$ )NrR  rè  g      @rb  T)rÜ  rl   r¶  ç     À’@rà  rò  r–   rþ  )rÜ   r˜  rª  r8   r`  r9   rÙ  r{  r9  r˜  r§  r�  rš  r[   rŸ   r   r7   r  r�  )rS   r  rR  rS  r  r«  r8   r9   ÚcheckÚpadded_bodyÚ	rightsideÚ
root_vlistr©  s                r1   rz  ÚParser.sqrt‘
  sŽ  € Ø�x‰x˜ÓˆØ�G‰}ˆØ—‘Ó ˆØ×9Ñ9Ó;ˆ	ð —‘˜t×0Ñ0Ñ0°9¸s±?ÑBˆØ—
‘
˜T×.Ñ.Ñ.ˆÜ˜|¨V¸EÈ$ÑOˆØ—‘ × 2Ñ 2Ñ2ˆØ—‘˜e×0Ñ0Ñ0ˆô œT ! i¡-Ó0°$¼¸QÀ¹]Ó8KÐLÓMˆÜœ5 ›<¬¨f«°{ÐCÓDˆ	à�‰˜§.¡.°5·9±9Ñ"<ÀÑ!NÑNØ! 5ô	*ö
 Ü�u—{‘{ SÑ(¨"¨bÓ1‰Dä˜“;ˆDØ�K‰KŒMØ�K‰KŒMäœE 4 &›M˜?Ó+ˆ
Ø#) '¨C¡-ˆ
Ôä�zä˜UŸ[™[˜L¨3Ñ.Ó/ØØ ð	"ó #ˆð
 ˆwˆrE   c                óŒ  • US   nU R                  5       nUR                  5       nUR                  UR                  -
  US-  -   nUR                  UR                  -   n[        [        U5      [        S5      [        U/5      /5      nUR                  XSR                  UR                  -  S-  -   SU5        [        U/5      nU/$ )NrS  r  r¶  r<  rà  )r˜  rª  r8   r`  r9   r˜  r§  r�  r{  rš  r[   rŸ   )	rS   r  rS  r  r«  r8   r9   r?  r©  s	            r1   r{  ÚParser.overline¹
  s¶   € Ø�F‰|ˆà—‘Ó ˆØ×9Ñ9Ó;ˆ	à—‘˜t×0Ñ0Ñ0°9¸s±?ÑBˆØ—
‘
˜T×.Ñ.Ñ.ˆô œ5 ›<¬¨f«´u¸d¸V³}ÐEÓFˆ	ð 	�‰˜§.¡.°5·9±9Ñ"<ÀÑ!NÑNØ! 5ô	*ô �y�kÓ"ˆØˆwˆrE   c           
     ó@  • U R                  5       n[        U5      (       Ga  [        U Vs/ s H&  n[        U[        5      (       a  M  UR
                  PM(     sn5      n[        U Vs/ s H&  n[        U[        5      (       a  M  UR                  PM(     sn5      nS n[        U5       HW  u  pšU
S:X  d  M  [        R                  " [        X)S-      5      nUS:w  a  [        X¶XtUS9X)S-   '   OUR                  U5        X)	 MY     [        R                  " [        [        [        -     U5      nOSnSnSn/ n/ nUS:w  a  UR                  [        XXtUS95        UR!                  U5        US:w  a  UR                  [        X6XtUS95        [#        U5      nU$ s  snf s  snf )Nr]  r   rl  )rÝ  r   r´  )r˜  r,  rq   r•  rŠ   r8   r9   Ú	enumeraterÚ   rÛ   rÙ  Úremover¯  r   r?  r±   r  r{  )rS   ÚfrontÚmiddleÚbackr  rÿ   r8   r9   rÝ  ÚidxÚelrq  Úmiddle_partrY  r©  s                  r1   r$  ÚParser._auto_sized_delimiterÌ
  sf  € ð —‘Ó ˆÜˆv�;Š;Ü©FÓMªF q¼*ÀQÌ×:L›(˜!Ÿ(œ(©FÑMÓNˆFÜ©&ÓKª& Q¼
À1Äc×8J›˜Ÿœ©&ÑKÓLˆEØˆFÜ$ VÖ,‘�Ø˜Õ#ÜŸšœs F°©7¡OÓ4�AØ˜C“xÜ*8Ø !¨5Àñ+H˜ Q™wšð Ÿ™ aÔ(Øšñ -ô Ÿ&š&¤¤c¬D¡jÑ!1°6Ó:‰KàˆFØˆEØˆFØˆKàˆà�C‹<Ø�L‰LÜ˜u¨eÀ6ÑJôLà�‰�[Ô!Ø�3‹;Ø�L‰LÜ˜t¨UÀ&ÑIôKä�e“ˆØˆùò? NùÚKs   «FÁFÁ(FÂFc                óf   • U R                  US   SU;   a  US   R                  5       O/ US   5      $ )Nr_  rß  r`  )r$  r¢  r£  s     r1   r8  ÚParser.auto_delimò
  s;   € Ø×)Ñ)Ø�‰Là%*¨d£]ˆD�‰K×ÑÔ!¸Ø�‰Mó	ð 	rE   c                óž  • U R                  5         U R                  5       n/ nUS   nU GH  n[        U[        5      (       aN  UR                  S   n[        U[
        5      (       a  SUl        UR                  5         UR                  U5        Mg  [        U[
        5      (       ax  SUl        UR                  U R                  ;   d  UR                  SS  U R                  ;   a  SUl        UR                  5         UR                  5         UR                  U5        Mô  UR                  U5        GM     U R                  5         [        U5      $ )Nrè  r   r  rË  )rŸ  r˜  r•  r{  ra  r?  rZ   rA  r±   rq  Ú_latin_alphabetsÚ_small_greekrœ  )rS   r  r  r©  rœ  rq  rM  s          r1   rƒ  ÚParser.boldsymbolù
  sþ   € Ø�‰ÔØ—‘Ó ˆØˆØ�G‰}ˆÜˆAÜ˜!œU×#Ñ#Ø—J‘J˜q‘M�Ü˜a¤×&Ñ&Ø!�A”FØ×%Ñ%Ô'Ø—‘˜Q–Ü˜Aœt×$Ñ$Ø�”Ø—C‘C˜4×0Ñ0Ó0Ø—3‘3�q�r�7˜d×/Ñ/Ó/Ø#�A”FØ×%Ñ%Ô'Ø×!Ñ!Ô#Ø—‘˜Q–à—‘˜Q—ñ! ð" 	�‰Ôä�U‹|ÐrE   c                óü  • US   nU R                  5       nUR                  5       nUS    Vs/ s H  n[        U5      PM     nn[        [	        S U5      5      n/ nU H2  n	[        U	/5      n
U
R                  US5        UR                  U
5        M4     [        U[        SUS-  5      /[        U5      -  5       VVs/ s H  nU  H  nUPM     M     nnnUS	 [        U5      n[        U/5      /nU$ s  snf s  snnf )NrY  r   c                ó   • U R                   $ rP   rÃ  rD  s    r1   Ú<lambda>Ú!Parser.substack.<locals>.<lambda>  s   €  a§g¢grE   rà  rl   rä  )r˜  rª  r{  rq   rW   rÇ  r}  r±   Úzipr3  r,  r˜  )rS   r  rY  r  r«  rM  r©  Ú	max_widthr  r  ÚcpÚpairrò   Ústackr  r”  s                   r1   r€  ÚParser.substack  s  € Ø�W‘ˆØ—‘Ó ˆØ×9Ñ9Ó;ˆ	à#(¨¢8Ó,¢8˜a”�q–¡8ˆÐ,ÜœÑ-¨uÓ5Ó6ˆ	àˆÛˆCÜ˜C˜5Ó!ˆBØ�H‰H�Y 	Ô*Ø�L‰L˜Öñ ô ! ¬¨a°¸Q±Ó)?Ð(@Ä3ÀuÃ:Ñ(MÔNô"ÚN�TÜ �Só á ñ ÙNð 	ñ "ð �"ˆIÜ�E‹lˆÜ˜˜“,�ˆØˆùò -ùó"s   ­C3Â=C8)r�  rˆ  rŠ  r‰  rŽ  r$  )
rf  rŠ   r“  rŽ   r[   r6   rŸ   r6   r€   r{  r  )r  r   r€   zlist[Hlist])r  r   r€   r   )r  r   r€   r  )r²  r6   r€   r�  )rf  rŠ   r  rt   r  zParseResults | dict[str, str]r€   r  r
  )r€   r  )rZ  r  r€   r�   )rN  rŠ   rO  rŠ   r%  r­  rQ  r2  r\   r{  rM  r{  r€   r  )rG  rŠ   rH  zlist[Box | Char | str]rI  rŠ   r€   r  )Wr>   r?   r@   rA   rB   ÚenumÚEnumr2  r  r€  rÅ  rÇ  Ú_arrow_symbolsrÄ  rÈ  r  rë  r  rh  rs  Ú_ambi_delimsrÆ  Ú_right_delimsrk  rà  r*   r©  rœ  r¨  rà   rR  ÚstringÚascii_lettersrQ  rT   r•  r˜  rœ  rŸ  r‡  r…  r„  r†  Ústaticmethodr   Úconvert_to_floatrd  r~  r³  re  rJ  rp  r/   rg  rq  rr  rL  rt  r‚  ri  r>  rn  ro  rj  ru  rZ   r  r  rL  r[  r(  rK  ry  rv  rw  rx  r9  r|  r}  rz  r{  r$  r8  rƒ  r€  rD   r  )rñ   rF  r©  r¨  r×   s   0000@r1   r+  r+    sf  ø† ñô�T—Y‘Yô ñ ð
÷0 ‰%‹'ó3Ðñ6 ð 5÷j  %™u›wók5(Ðñn ð 	÷0 
‰‹ó1€Nð4 (Ð*;Ñ;¸nÑL€OáÐ7×=Ñ=Ó?Ó@Ðáð ÷ ‰5‹7óÐñ
 Ð>×DÑDÓFÓGÐáÐL×RÑRÓTÓUÐáð 3ß38±5³7ó<€Jñ ð ÷ !™5›7ó$€Oñ
 ð /ç/4©u«wó8€Lñ ð 
ç
‰%‹'ó€Lñ ð 
ç
‰%‹'ó€Mð ˜]Ñ*¨\Ñ9€GáÙ™SÐ!?Ó@Ù Ð!?Ó@À1ÑDôFöGòFð JKœ×(Ò(¬¨Q«Ó0×6Ñ6Ó8¸Ñ<×BÑBÖDñFôGó H€Lñ ˜6×/Ñ/Ó0Ðôw2ôr(ô,%ô ô:ô'ôQôô
ñ !Ð!1×!BÑ!BÓC€Môô(ð$ ØØØØØØØØØØØñ€Môô
1ð.Ø2ð.Ø7<ô.ô`MðØÐ/ðàÐ-ðð 	Ð0ðð 	Ð3ð	ð
 	Ð3ðð 	Ð-ðð 	Ð0ðð 	Ð1ðð 	Ð6ðð 	Ð5ðð 	Ð7ðð 	Ð1ðð 	Ð3ðð 	Ð3ðð 	Ð-ðð  	Ð0ð!ð" 	Ð/ð#ð$ *Ø(Ø#ò)€Kñ. Ð4×:Ñ:Ó<Ó=€Môô,ô
!!ôFôô,ð $€Nôô=ôôôô
÷
dðL(Øð(Ø"'ð(Ø,1ô(ôT;ô&ôAô
Dô
Aô
ð@ !Ð €Gˆhô&ôPð&$Ø&<ð$à$'ð$à,1ô$ôLô÷4ò ùõQGs   ÅALr+  )r/   rŠ   r€   rt   )r  r  r€   ztype[FontConstantsBase]))r   r   )rR   r   r  ztuple[float, float]r€   rM   )r  rŠ   r€   r   )r!  rŠ   r'  r   r€   r   )urB   Ú
__future__r   ÚabcrÛ  r^  rÑ   ÚloggingrÝ   rD  rb  r©  rc  ÚtypingrÚ   r   ÚnumpyrX   Ú	pyparsingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Ú
matplotlibr  r$  r   Ú_mathtext_datar   r   r   r   Úfont_managerr   r    r!   Úft2fontr"   r#   r$   r%   ÚTYPE_CHECKINGÚcollections.abcr&   r'   Úenable_packratÚ	getLoggerr¦  r2   r4   r?   rG   rM   rƒ   rˆ   ÚABCrŽ   ÚABCMetarÌ   r  r„  r»  r¾  rÎ  r"  r“  r-  r,  rë  rú  rü  r   r  r  r	  r  r  r   r3  r9  r?  rV  r^  r{  r˜  r¡  r§  r¯  r³  r¿  r�  rÇ  rÎ  r�  rÙ  râ  ru   r  r  r)  r+  r<   rE   r1   Ú<module>rw     s~  ðñõ #ã 
Û Û Û Û Û 	Û 	Û Û Û Û Ý ã ÷+÷ +÷ +÷ +÷ +ó +ó Ý ÷Dó Dç <Ñ <ß :Ó :ð ‡?‡?Ý(Ýà × Ò Ô Ø×ÒÐ.Ó/€ôô,3�*ô 3ð& /€Ô ô�*ô ð( /€Ô ÷85ñ 85ôv�*ô ô@ˆzô ôi!ˆC�G‰Gô i!ôXfI�E S§[¡[ò fIôRgC�-ô gCôTA!�=ô A!ôH&A�,¨#¯+©+ò &AôR�{ô ô$�kô ô$p�ô pôf�Iô ðB €ð €÷!,ñ !,ôHÐ"3ô ôÐ)ô ôÐ-ô ô	Ð0ô 	ô	Ð/ô 	ð
ØÐ*ðàÐ/ðð Ð,ðð Ð(ð	ð
 Ð)ðð Ð)ðð Ð(ðð Ð)ðð Ð)ðð Ð)ðð Ð$ðð Ð'ðð Ð(ðð Ð(ðð Ð)ðð  Ð'ð!ð" Ð'ð#ð& 3Ø-ò)Ð ô0÷ ñ  ô.ˆ$ô ô*,ˆ3ô ,ô(ˆ3ô (ôD+ˆ4ô D+ôNIˆTô Iô.)/ˆ3ô )/ôXc<ˆDô c<ôLO<ˆDô O<ôdDˆ3ô Dô(7ˆDô 7ô;ˆDô ;ô�
ô ñ ˜R  Q¨¨AÓ.Ù˜R  Q¨¨AÓ.Ù˜R  Q¨¨AÓ.Ù˜R  Q¨¨AÓ.Ù˜R  Q¨¨AÓ.Ù˜R  Q¨¨AÓ.Ù˜R  Q¨¨AÓ.Ù˜R  Q¨¨QÓ/ñ	€	Ô ôGˆ4ô Gô8M�ô Mô>�ô >ô(ˆ4ô (ô6%"�Uô %"ôP �Eô  ö:Pôn1÷#0ñ #0ôL6÷2Wò WrE   