%%
%% This is file `mathfont.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% mathfont_code.dtx  (with options: `package')
%% 
%% This file is from version 2.3 of the free and open-source
%% LaTeX package "mathfont," released September 2023, to be used
%% with the XeTeX or LuaTeX engines. (As of version 2.0, LuaTeX
%% is recommended.)
%% 
%% Copyright 2018-2023 by Conrad Kosowsky
%% 
%% This Work may be used, distributed, and modified under the
%% terms of the LaTeX Public Project License, version 1.3c or
%% any later version. The most recent version of this license
%% is available online at
%% 
%%           https://www.latex-project.org/lppl/.
%% 
%% This Work has the LPPL status "maintained," and the current
%% maintainer is the package author, Conrad Kosowsky. He can
%% be reached at kosowsky.latex@gmail.com.
%% 
%% PLEASE KNOW THAT THIS FREE SOFTWARE IS PROVIDED WITHOUT
%% ANY WARRANTY. SPECIFICALLY, THE "NO WARRANTY" SECTION OF
%% THE LATEX PROJECT PUBLIC LICENSE STATES THE FOLLOWING:
%% 
%% THERE IS NO WARRANTY FOR THE WORK. EXCEPT WHEN OTHERWISE
%% STATED IN WRITING, THE COPYRIGHT HOLDER PROVIDES THE WORK
%% `AS IS’, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
%% OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
%% WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
%% PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE
%% OF THE WORK IS WITH YOU. SHOULD THE WORK PROVE DEFECTIVE,
%% YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR, OR
%% CORRECTION.
%% 
%% IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED
%% TO IN WRITING WILL THE COPYRIGHT HOLDER, OR ANY AUTHOR
%% NAMED IN THE COMPONENTS OF THE WORK, OR ANY OTHER PARTY
%% WHO MAY DISTRIBUTE AND/OR MODIFY THE WORK AS PERMITTED
%% ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL,
%% SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT
%% OF ANY USE OF THE WORK OR OUT OF INABILITY TO USE THE WORK
%% (INCLUDING, BUT NOT LIMITED TO, LOSS OF DATA, DATA BEING
%% RENDERED INACCURATE, OR LOSSES SUSTAINED BY ANYONE AS A
%% RESULT OF ANY FAILURE OF THE WORK TO OPERATE WITH ANY
%% OTHER PROGRAMS), EVEN IF THE COPYRIGHT HOLDER OR SAID
%% AUTHOR OR SAID OTHER PARTY HAS BEEN ADVISED OF THE
%% POSSIBILITY OF SUCH DAMAGES.
%% 
%% For more information, see the LaTeX Project Public License.
%% Derivative works based on this package may come with their
%% own license or terms of use, and the package author is not
%% responsible for any third-party software.
%% 
%% For more information, see mathfont_code.dtx. Happy TeXing!
%% 
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mathfont}[2023/09/09 v. 2.3 Package mathfont]
\newif\ifM@XeTeXLuaTeX     % is engine one of xetex or luatex?
\newif\ifM@Noluaotfload    % cannot find luaotfload.sty?
\newif\ifM@adjust@font     % should adjust fonts with lua script?
\newif\ifM@font@loaded     % load mathfont with font specified?
\newif\ifE@sterEggDecl@red % already did easter egg?
\newcount\M@loader         % specifies which font-loader to use
\long\def\@gobble@brackets[#1]{}
\def\M@NoMathfontError#1{\PackageError{mathfont}
  {\MessageBreak Invalid command\MessageBreak
  \string#1 on line \the\inputlineno}
  {Your command was ignored. I couldn't\MessageBreak
  load mathfont, so I never defined this\MessageBreak
  control sequence.}}
\@tfor\@i:=\setfont
  \RuleThicknessFactor
  \IntegralItalicFactor
  \SurdVerticalFactor
  \SurdHorizontalFactor
  \CharmLine
  \CharmFile\do{%
    \edef\@tempa{\protected\def\expandafter\noexpand\@i}%
    \edef\@tempb{\noexpand\M@NoMathfontError
      \expandafter\noexpand\@i
      \noexpand\@gobble}%
    \expandafter\@tempa\expandafter{\@tempb}}
\@tfor\@i:=\newmathrm
  \newmathit
  \newmathbf
  \newmathbfit
  \newmathbold
  \newmathboldit
  \newmathsc
  \newmathscit
  \newmathbfsc
  \newmathbfscit\do{%
    \edef\@tempa{\protected\def\expandafter\noexpand\@i}%
    \edef\@tempb{\noexpand\M@NoMathfontError
      \expandafter\noexpand\@i
      \noexpand\@gobbletwo}%
    \expandafter\@tempa\expandafter{\@tempb}}
\@tfor\@i:=\mathfont\mathconstantsfont\do{%
  \edef\@tempa{\protected\def\expandafter\noexpand\@i}%
  \edef\@tempb{\noexpand\M@NoMathfontError
    \expandafter\noexpand\@i
    \noexpand\@ifnextchar[{\noexpand\expandafter
      \noexpand\@gobble\noexpand\@gobble@brackets}{\noexpand\@gobble}}
  \expandafter\@tempa\expandafter{\@tempb}}
\protected\def\newmathfontcommand{%
  \M@NoMathfontError\newmathfontcommand\@gobblefour}
\ifdefined\directlua
  \M@XeTeXLuaTeXtrue
\fi
\ifdefined\XeTeXrevision
  \M@XeTeXLuaTeXtrue
\fi
\ifM@XeTeXLuaTeX\else
\begingroup
\catcode`\ =12\relax
\def\M@XeTeXLuaTeXError{\GenericError{}%
{\MessageBreak\MessageBreak
Package mathfont error:%
\MessageBreak\MessageBreak
*************************\MessageBreak
*                       *\MessageBreak
*       UNABLE TO       *\MessageBreak
*     LOAD MATHFONT     *\MessageBreak
*                       *\MessageBreak
*     Missing XeTeX     *\MessageBreak
*       or LuaTeX       *\MessageBreak
*                       *\MessageBreak
*************************\MessageBreak\@gobbletwo}%
{See the mathfont package documentation for explanation.}%
{I need XeTeX or LuaTeX to use mathfont. It\MessageBreak
looks like the current engine is something\MessageBreak
else, so I'm going to stop reading in the\MessageBreak
package file now. (You won't be able to use\MessageBreak
commands from mathfont in your document.) To\MessageBreak
load mathfont correctly, please retypeset your\MessageBreak
document with one of those two engines.^^J}}%
\expandafter\endgroup
\M@XeTeXLuaTeXError
  \AtEndOfPackage{\typeout{:: mathfont :: Failed to load\on@line.}}
  \expandafter\endinput % we should \endinput with a balanced conditional
\fi
\ifdefined\directlua
  \M@adjust@fonttrue % if engine is LuaTeX, adjust font by default
  \IfFileExists{luaotfload.sty}
    {\M@Noluaotfloadfalse\RequirePackage{luaotfload}}{\M@Noluaotfloadtrue}
\else
  \AtEndOfPackage{\PackageWarningNoLine{mathfont}{%
    The current engine is XeTeX, but as\MessageBreak
    of mathfont version 2.0, LuaTeX is\MessageBreak
    recommended. Consider compiling with\MessageBreak
    LuaLaTeX. Certain features will not\MessageBreak
    work with XeTeX}}
\fi
\ifM@Noluaotfload % false by default; true if LuaTeX AND no luaotfload.sty
\begingroup
\catcode`\ =12\relax
\def\M@NoluaotfloadError{\GenericError{}%
{\MessageBreak\MessageBreak
Package mathfont error:%
\MessageBreak\MessageBreak
*************************\MessageBreak
*                       *\MessageBreak
*       UNABLE TO       *\MessageBreak
*     LOAD MATHFONT     *\MessageBreak
*                       *\MessageBreak
*    Cannot find the    *\MessageBreak
*  file luaotfload.sty  *\MessageBreak
*                       *\MessageBreak
*************************\MessageBreak\@gobbletwo}%
{You are likely seeing this message because you haven't^^J%
installed luaotfload. Check your TeX distribution for a^^J%
list of the packages on your system.^^J^^J%
See the mathfont documentation for further explanation.}%
{You're in trouble here. It looks like the current\MessageBreak
engine is LuaTeX, so I need the luaotfload package\MessageBreak
to make mathfont work properly. However, I can't\MessageBreak
find luaotfload, which likely means something is\MessageBreak
wrong with your TeX installation. I'm going to stop\MessageBreak
reading in the mathfont package file. (You won't be\MessageBreak
able to use commands from mathfont in your document.)\MessageBreak
To load mathfont work correctly, make sure you have\MessageBreak
installed luaotfload.sty in a directory searchable\MessageBreak
by TeX or compile with XeLaTeX.^^J}}%
\expandafter\endgroup
\M@NoluaotfloadError
  \AtEndOfPackage{\typeout{:: mathfont :: Failed to load\on@line.}}
  \expandafter\endinput % we should \endinput with a balanced conditional
\fi
\def\M@Optiondeprecated#1#2{\PackageError{mathfont}
  {Option "#1" deprecated}
  {Your option was ignored. Please\MessageBreak
  use #2\MessageBreak
  instead. For more information,\MessageBreak
  see the mathfont documentation.}}
\DeclareOption{packages}{%
  \M@Optiondeprecated{packages}
  {the macro \string\restoremathinternals}}
\DeclareOption{operators}{%
  \M@Optiondeprecated{operators}
  {the bigops keyword with \string\mathfont}}
\DeclareOption{no-operators}{%
  \M@Optiondeprecated{no-operators}
  {the bigops keyword with \string\mathfont}}
\DeclareOption{easter-egg}{%
  \ifE@sterEggDecl@red\else
    \E@sterEggDecl@redtrue
    \def\EasterEggUpdate{\show\E@sterEggUpd@te}
    \def\E@sterEggUpd@te{Easter Egg Status:^^J^^J%
        Okay, opening your Easter egg.^^J^^J}
      \EasterEggUpdate
    \def\E@sterEggUpd@te{Easter Egg Status:^^J^^J%
        Uh oh. It looks like^^J%
        your Easter egg flew^^J%
        out the window. I don't^^J%
        suppose you know the^^J%
        best kind of bait to^^J%
        lure an egg?^^J^^J}
      \EasterEggUpdate
    \def\E@sterEggUpd@te{Easter Egg Status:^^J^^J%
        Still wrangling. Try back later.^^J^^J}
    \AtBeginDocument{\bgroup
      \def\E@sterEggUpd@te{Easter Egg Status:^^J^^J:%
        If we have zero eggs^^J%
        and zero bunnies, how^^J%
        many gnats does it take^^J%
        to change a lightbulb??^^J^^J}
      \EasterEggUpdate
      \egroup}
    \AtEndDocument{%
      \def\E@sterEggUpd@te{Easter Egg Status:^^J^^J%
        Happy, happy day! Happy,^^J%
        happy day! Clap your hands,^^J%
        and be glad your hovercraft^^J%
        isn't full of eels!^^J^^J}
        \EasterEggUpdate
      \let\E@sterEggUpd@te\relax
      \let\EasterEggUpdate\relax}
  \fi}% my easter egg :)
\DeclareOption{default-loader}{\M@loader\z@}
\DeclareOption{fontspec-loader}{\M@loader\@ne}
\DeclareOption{adjust}{\M@adjust@fonttrue}
\DeclareOption{no-adjust}{\M@adjust@fontfalse}
\DeclareOption*{\M@font@loadedtrue\edef\M@font@load{\CurrentOption}}
\ProcessOptions*
\ifcase\M@loader
  \wlog{Package mathfont Info: Default font-loader was
    requested for font loading.}
\or
  \wlog{Package mathfont Info: Package fontspec was
    requested for font loading.}
  \@ifpackageloaded{fontspec}
    {\wlog{Package mathfont Info: Package fontspec detected.}
      \csname bool_if:NTF\expandafter\endcsname
        \csname g__fontspec_math_bool\endcsname
        {\wlog{Package mathfont Info: Setting
          \string\g__fontspec_math_bool to false.}
          \csname bool_set_false:N\expandafter\endcsname
          \csname g__fontspec_math_bool\endcsname}{\relax}}
    {\wlog{Package mathfont Info: Package fontspec not detected.}
      \IfFileExists{fontspec.sty}
        {\wlog{Package mathfont Info: File fontspec.sty was found.}
          \wlog{Package mathfont Info: Loading fontspec.}
          \RequirePackage[no-math]{fontspec}}
        {\PackageError{mathfont}{Missing package fontspec;\MessageBreak
          using default font-loader instead}
          {You requested fontspec as the font-loader for\MessageBreak
          mathfont. However, I can't find the fontspec\MessageBreak
          package file, so I'm going to use the default\MessageBreak
          font-loader instead. (This likely means that\MessageBreak
          something is wrong with your TeX installation.)\MessageBreak
          Check your TeX distribution for a list of the\MessageBreak
          packages installed on your system. To resolve\MessageBreak
          this error, make sure fontspec is installed in\MessageBreak
          a directory searchable by TeX or load mathfont\MessageBreak
          with the default-loader option.^^J}
          \M@loader\z@}}
\fi
\ifcase\M@loader
  \wlog{Package mathfont Info: Using default font-loader.}
  \AtEndOfPackage{\typeout{:: mathfont :: Using default font-loader.}}
  \def\M@otf@features{script=latin;language=DFLT;+tlig;+liga;+lnum}
\or
  \wlog{Package mathfont Info: Using fontspec as font-loader.}
  \AtEndOfPackage{\typeout{:: mathfont :: Using fontspec as font-loader.}}
  \def\M@otf@features{Script=Latin,
    Language=Default,
    Ligatures={TeX,Common},
    Numbers=Lining}
\fi
\ifdefined\directlua
  \ifM@adjust@font
    \wlog{Package mathfont Info: Enabling Lua-based font adjustments.}
    \AtEndOfPackage{%
      \typeout{:: mathfont :: Lua-based font adjustments enabled.}}
  \else
    \wlog{Package mathfont Info: Disabling Lua-based font adjustments.}
    \AtEndOfPackage{%
      \typeout{:: mathfont :: Lua-based font adjustments disabled.}}
  \fi
\else
  \ifM@adjust@font
    \PackageError{mathfont}{Option^^J"adjust" ignored with XeTeX}
    {Your package option "adjust" was ignored.\MessageBreak
    This option works only with LuaTeX, and it\MessageBreak
    looks like the current engine is XeTeX. To\MessageBreak
    enable Lua-based font adjustments, typeset\MessageBreak
    with LuaLaTeX.^^J}
    \M@adjust@fontfalse
  \fi
  \wlog{Package mathfont Info: Disabling Lua-based font adjustments.}
  \AtEndOfPackage{%
    \typeout{:: mathfont :: Lua-based font adjustments disabled.}}
\fi
\def\M@SymbolFontInfo#1#2#3#4{\wlog{^^JPackage mathfont Info:
  Declaring new symbol font from #1!^^J%
  NFSS Family Name: \space#2^^J%
  Series/Shape Info: #3^^J%
  Symbol Font Name:  \space#4^^J}}
\def\M@FontChangeInfo#1#2{\wlog{Package mathfont Info:
  Setting #1 chars to #2!}}
\def\M@NewFontCommandInfo#1#2#3#4#5{\wlog{^^JPackage mathfont Info:
  Creating \string#1 using #2!^^J%
  NFSS Family Name: \space#3^^J%
  Series/Shape Info: #4/#5^^J}}
\def\M@CharsSetWarning#1{\PackageWarning{mathfont}
  {I already set the font for\MessageBreak
  #1 chars, so I'm ignoring\MessageBreak
  this option for \string\mathfont\space
  on line \the\inputlineno\@gobble}}
\def\M@MissingNFSSShapesWarning#1#2{\PackageWarning{mathfont}
  {The nfss family "#1"\MessageBreak
  from line \the\inputlineno\space is missing shapes. You\MessageBreak
  may see some substitutions or errors.\MessageBreak
  Missing shape(s):#2\@gobble}}
\def\M@NoBaseModeDetectedWarning#1{\PackageWarning{mathfont}
  {I couldn't find a base-mode version of\MessageBreak
  the nfss family "#1"\MessageBreak
  from line \the\inputlineno, so I'm using the family\MessageBreak
  you specified for the math font. Some\MessageBreak
  font features may not work in math\MessageBreak
  mode\@gobble}}
\def\M@DeprecatedWarning#1#2{\PackageWarning{mathfont}
  {Your \string#1\space command on\MessageBreak
  line \the\inputlineno\space is deprecated, and I\MessageBreak
  replaced it with \string#2\@gobble}}
\def\M@InvalidOptionError#1{\PackageError{mathfont}
  {Invalid^^Joption "#1" for \string\mathfont\on@line}
  {Hm. You used a keyword that isn't actually an optional\MessageBreak
  argument for \string\mathfont. Check
  that you spelled the keyword\MessageBreak
  correctly. Otherwise, I'm not sure what's wrong. Is this\MessageBreak
  option listed in the package documentation? In any event,\MessageBreak
  I'm going to ignore it.^^J}}
\def\M@InvalidSuboptionError#1{\PackageError{mathfont}
  {Invalid^^Jsuboption "#1" for \string\mathfont\on@line}
  {Hm. You used a keyword that isn't actually a suboption\MessageBreak
  for \string\mathfont. Check that you
  spelled the keyword correctly.\MessageBreak
  Otherwise, I'm not sure what's wrong. Is this suboption\MessageBreak
  listed in the package documentation? In any event, I'm\MessageBreak
  going to ignore it.^^J}}
\def\M@MissingOptionError{\PackageError{mathfont}
  {Missing^^Joption for \string\mathfont\on@line}
  {It looks like you included a , or = in\MessageBreak
  the optional argument of \string\mathfont\space but\MessageBreak
  didn't put anything before it.^^J}}
\def\M@MissingSuboptionError{\PackageError{mathfont}
  {Missing^^Jsuboption for \string\mathfont\on@line}
  {It looks like you included an = somewhere\MessageBreak
  in the optional argument of \string\mathfont\space but\MessageBreak
  didn't put the suboption after it. Either\MessageBreak
  that or you typed == instead of =.^^J}}
\def\M@InternalsRestoredError{\PackageError{mathfont}
  {Internal^^Jcommands restored}
  {This package slightly changes two LaTeX\MessageBreak
  internal commands, and you really shouldn't\MessageBreak
  be loading new math fonts without those\MessageBreak
  adjustments. What happened here is that you\MessageBreak
  used \string\mathfont\space in a situation where those\MessageBreak
  two commands retain their original defini-\MessageBreak
  tions. Presumably you used \string\mathfont\space after\MessageBreak
  calling the \string\restoremathinternals\space command.\MessageBreak
  I'm going to ignore this call to \string\mathfont.\MessageBreak
  Try typesetting this document with all\MessageBreak
  \string\mathfont\space commands placed before you call\MessageBreak
  \string\restoremathinternals.^^J}}
\def\M@BadMathConstantsFontError#1{\PackageError{mathfont}
  {Invalid font specifier\MessageBreak
  for \string\mathconstantsfont:\MessageBreak
  "#1"}
  {Your command was ignored--I can't parse your argument.\MessageBreak
  Please make sure to use text that you have previously\MessageBreak
  fed to \string\mathfont\space for the argument of
  \string\mathconstantsfont.^^J}}
\def\M@BadMathConstantsFontTypeError#1{\PackageError{mathfont}
  {Invalid\MessageBreak font specifier for
  \string\mathconstantsfont:\MessageBreak"#1"}
  {The optional argument of \string\mathconstantsfont\MessageBreak
  should be "upright" or "italic." Right now,\MessageBreak
  it's "#1."^^J}}
\def\M@MathConstantsNoFontAdjustWarning{\PackageWarning{mathfont}
  {Your \string\mathconstantsfont\space
  on line \the\inputlineno\MessageBreak
  is mainly for use in LuaTeX with font\MessageBreak
  adjustments enabled. In the current\MessageBreak
  situation, it is probably not doing\MessageBreak
  anything\@gobble}}
\def\M@MissingControlSequenceError#1#2{\PackageError{mathfont}
  {Missing control sequence\MessageBreak
  for\string#1\MessageBreak on input line \the\inputlineno}
  {Your command was ignored. Right now the\MessageBreak
  first argument of \string#1\space is "#2."\MessageBreak
  Please use a control sequence instead.^^J}}
\def\M@DoubleArgError#1#2{\PackageError{mathfont}
  {Multiple characters in\MessageBreak
  first argument of \string#1\MessageBreak
  on input line \the\inputlineno}
  {Your command was ignored. Right now the\MessageBreak
  first argument of \string#1\space is "#2,"\MessageBreak
  which is multiple characters. Please use\MessageBreak
  a single character instead.^^J}}
\def\M@HModeError#1{\PackageError{mathfont}
  {Missing \string$ inserted\MessageBreak
  on input line line \the\inputlineno}
  {I generated an error because
  you used \string#1\space outside of\MessageBreak
  math mode. I inserted a \string$
  before your \string#1, so we\MessageBreak
  should be all good now.^^J}}
\def\M@ForbiddenCharmLine#1{\PackageError{mathfont}
  {Forbidden charm info contains #1}
  {The argument of your \string\CharmLine\space
  macro on line \the\inputlineno\MessageBreak
  contains the character #1, which will mess me up\MessageBreak
  if I try to read it, so I'm ignoring this call\MessageBreak
  to \string\CharmLine. To resolve this error, make sure\MessageBreak
  your charm information contains only integers,\MessageBreak
  floats, asterisks, commas, and spaces.^^J}}
\def\M@ForbiddenCharmFile#1{\PackageError{mathfont}
  {Forbidden charm info contains #1}
  {One of the lines in your \string\CharmFile\space
  from line \the\inputlineno\MessageBreak
  contains the character #1, which will mess me up\MessageBreak
  if I try to read it, so I'm ignoring this line\MessageBreak
  from your file. To resolve this error, make sure\MessageBreak
  your charm information contains only integers,\MessageBreak
  floats, asterisks, commas, and spaces.^^J}}
\def\M@NoFontAdjustError#1{\PackageError{mathfont}
  {Your command \MessageBreak\string#1 is invalid\MessageBreak
  without Lua-based font adjustments}
  {You haven't enabled Lua-based font adjustments,\MessageBreak
  but the macro you called won't do anything without\MessageBreak
  them. I'm going to ignore your command for now. To\MessageBreak
  resolve this error, load mathfont with the package\MessageBreak
  option "adjust" or compile with LuaLaTeX.^^J}}
\def\M@BadIntegerError#1#2{\PackageError{mathfont}
  {Bad argument for\MessageBreak\string#1}
  {Your command was ignored. Please make sure\MessageBreak
  that your argument of \string#1\space\MessageBreak
  is a nonnegative integer. Right now it's\MessageBreak
  "#2".^^J}}
\let\@@set@mathchar\set@mathchar
\let\@@set@mathsymbol\set@mathsymbol
\let\@@set@mathaccent\set@mathaccent
\let\@@DeclareSymbolFont\DeclareSymbolFont
\@onlypreamble\@@set@mathchar
\@onlypreamble\@@set@mathsymbol
\@onlypreamble\@@set@mathaccent
\@onlypreamble\@@DeclareSymbolFont
\wlog{Package mathfont Info: Adapting \noexpand\set@mathchar for unicode.}
\wlog{Package mathfont Info: Adapting \noexpand\set@mathsymbol for unicode.}
\wlog{Package mathfont Info: Adapting \noexpand\set@mathaccent for unicode.}
\wlog{Package mathfont Info: Increasing upper bound on
  \noexpand\DeclareSymbolFont to 256.}
\def\set@mathchar#1#2#3#4{%
  \multiply\count\z@ by 16\relax
  \advance\count\z@\count\tw@
  \global\Umathcode`#2=\mathchar@type#3+#1+\count\z@\relax}
\def\set@mathsymbol#1#2#3#4{%
  \multiply\count\z@ by 16\relax
  \advance\count\z@\count\tw@
  \global\Umathchardef#2=\mathchar@type#3+#1+\count\z@\relax}
\def\set@mathaccent#1#2#3#4{%
  \multiply\count\z@ by 16\relax
  \advance\count\z@\count\tw@
  \protected\xdef#2{%
    \Umathaccent\mathchar@type#3+\number#1+\the\count\z@\relax}}
\ifx\DeclareSymbolFont@m@dropped\@undefined
  \edef\@tempa{\expandafter\strip@prefix\meaning\DeclareSymbolFont}
  \def\@tempb{\def\DeclareSymbolFont##1##2##3##4##5}
\else
  \edef\@tempa{\expandafter\strip@prefix\meaning\DeclareSymbolFont@m@dropped}
  \def\@tempb{\def\DeclareSymbolFont@m@dropped##1##2##3##4##5}
\fi
\def\M@p@tch@decl@re#1<15#2\@nil{#1<\e@mathgroup@top#2}
\edef\M@DecSymDef{\expandafter\M@p@tch@decl@re\@tempa\@nil}
\ifdefined\directlua
  \expandafter\@tempb\expandafter{\scantextokens\expandafter{\M@DecSymDef}}
\else
  \begingroup
  \everyeof{\noexpand}
  \endlinechar\m@ne
  \edef\M@retokenize{\noexpand\scantokens{\noexpand\unexpanded{\M@DecSymDef}}}
  \edef\M@retokenize{\M@retokenize}
  \expandafter\endgroup
    \expandafter\@tempb\expandafter{\M@retokenize}
\fi
\newbox\surdbox
\newcount\M@count
\newcount\M@RuleThicknessFactor
\newcount\M@IntegralItalicFactor
\newcount\M@SurdVerticalFactor
\newcount\M@SurdHorizontalFactor
\newmuskip\radicandoffset
\newread\M@Charm
\newtoks\M@toks
\M@count\z@
\M@RuleThicknessFactor\@m
\M@IntegralItalicFactor=400\relax
\M@SurdHorizontalFactor\@m
\M@SurdVerticalFactor\@m
\radicandoffset=3mu\relax
\newif\ifM@upper
\newif\ifM@lower
\newif\ifM@diacritics
\newif\ifM@greekupper
\newif\ifM@greeklower
\newif\ifM@agreekupper
\newif\ifM@agreeklower
\newif\ifM@cyrillicupper
\newif\ifM@cyrilliclower
\newif\ifM@hebrew
\newif\ifM@digits
\newif\ifM@operator
\newif\ifM@symbols
\newif\ifM@extsymbols
\newif\ifM@delimiters
\newif\ifM@radical
\newif\ifM@arrows
\newif\ifM@bigops
\newif\ifM@extbigops
\newif\ifM@bb
\newif\ifM@cal
\newif\ifM@frak
\newif\ifM@bcal
\newif\ifM@bfrak
\newif\if@optionpresent
\newif\if@suboptionpresent
\newif\ifM@arg@good
\newif\ifM@Decl@reF@mily
\newif\ifM@fromCharmFile
\def\M@uppershape{italic}          % latin upper
\def\M@lowershape{italic}          % latin lower
\def\M@diacriticsshape{upright}    % diacritics
\def\M@greekuppershape{upright}    % greek upper
\def\M@greeklowershape{italic}     % greek lower
\def\M@agreekuppershape{upright}   % ancient greek upper
\def\M@agreeklowershape{italic}    % ancient greek lower
\def\M@cyrillicuppershape{upright} % cyrillic upper
\def\M@cyrilliclowershape{italic}  % cyrillic lower
\def\M@hebrewshape{upright}        % hebrew
\def\M@digitsshape{upright}        % numerals
\def\M@operatorshape{upright}      % operator font
\def\M@delimitersshape{upright}    % delimiters
\def\M@radicalshape{upright}       % surd
\def\M@bigopsshape{upright}        % big operators
\def\M@extbigopsshape{upright}     % extended big operators
\def\M@symbolsshape{upright}       % basic symbols
\def\M@extsymbolsshape{upright}    % extended symbols
\def\M@arrowsshape{upright}        % arrows
\def\M@bbshape{upright}            % blackboard bold
\def\M@calshape{upright}           % caligraphic
\def\M@frakshape{upright}          % fraktur
\def\M@bcalshape{upright}          % bold caligraphic
\def\M@bfrakshape{upright}         % bold fraktur
\def\M@keys{upper,lower,diacritics,greekupper,%
  greeklower,agreekupper,agreeklower,cyrillicupper,%
  cyrilliclower,hebrew,digits,operator,delimiters,%
  radical,bigops,extbigops,symbols,extsymbols,arrows,%
  bb,cal,frak,bcal,bfrak}
\def\M@defaultkeys{upper,lower,diacritics,greekupper,%
  greeklower,digits,operator,symbols}
\ifM@adjust@font
  \edef\M@defaultkeys{\M@defaultkeys,delimiters,radical,bigops}
\fi
\def\M@declare@shape#1#2#3#4#5#6{%
  \ifcsname TU/#1/#5/#6\endcsname
  \else
    \DeclareFontShape{TU}{#1}{#5}{#6}{<->"\@tempbase#2:#3;#4"}{}
  \fi}
\def\M@fill@nfss@shapes#1#2#3{%
  \@for\@i:={#1}{}{#2;-smcp}{#3}{\mddefault}{\shapedefault},%
    {#1}{/I}{#2;-smcp}{#3}{\mddefault}{\itdefault},%
    {#1}{/B}{#2;-smcp}{#3}{\bfdefault}{\shapedefault},%
    {#1}{/BI}{#2;-smcp}{#3}{\bfdefault}{\itdefault},%
    {#1}{}{#2;+smcp}{#3}{\mddefault}{\scdefault},%
    {#1}{/I}{#2;+smcp}{#3}{\mddefault}{\scdefault\itdefault},%
    {#1}{/B}{#2;+smcp}{#3}{\bfdefault}{\shapedefault},%
    {#1}{/BI}{#2;+smcp}{#3}{\bfdefault}{\scdefault\itdefault}%
      \do{\expandafter\M@declare@shape\@i}}
\def\M@check@nfss@shapes#1{%
  \let\@tempb\@empty
  \let\@tempwarning\@gobble
  \@for\@i:=\mddefault/\shapedefault,%
    \mddefault/\itdefault,%
    \bfdefault/\shapedefault,%
    \bfdefault/\itdefault\do{%
      \expandafter\ifx\csname TU/#1/\@i\endcsname\relax
        \def\@tempwarning{\M@MissingNFSSShapesWarning{#1}}
        \edef\@tempb{\@tempb, \@i}
      \fi}
  \@tempwarning{\expandafter\@gobble\@tempb}}
\def\M@split@colon#1:#2\@nil{\def\@tempbase{#1}
  \def\@tempfeatures{#2}}
\def\M@strip@colon#1:{#1}
\def\M@newfont#1{%
  \edef\@tempa{#1}
  \expandafter\M@split@colon\@tempa:\@nil
  \ifx\@tempfeatures\@empty\else
    \edef\@tempfeatures{\expandafter\M@strip@colon\@tempfeatures}
  \fi
  \ifcsname TU+\@tempbase\endcsname % is font family already in nfss?
    \let\M@f@ntn@me\@tempbase
    \M@check@nfss@shapes\M@f@ntn@me
    \ifx\directlua\@undefined % if XeTeX
      \expandafter\edef\csname\M@f@ntn@me-base\endcsname{\M@f@ntn@me}
      \let\M@f@ntn@meb@se\M@f@ntn@me
    \else % if LuaTeX
      \ifcsname\M@f@ntn@me-base\endcsname % if base-mode version is known
        \edef\M@f@ntn@meb@se{\csname\M@f@ntn@me-base\endcsname}
        \M@check@nfss@shapes\M@f@ntn@meb@se
      \else
        \M@NoBaseModeDetectedWarning{\M@f@ntn@me}
        \edef\M@f@ntn@meb@se{\M@f@ntn@me}
        \expandafter\edef\csname\M@f@ntn@me-base\endcsname{\M@f@ntn@me}
      \fi
    \fi
    \expandafter\edef\csname M@fontfamily@\@tempbase\endcsname
      {\M@f@ntn@me}
    \expandafter\edef\csname M@fontfamily@base@\@tempbase\endcsname
      {\M@f@ntn@meb@se}
  \else
    \edef@nospace\@tempa{\@tempa}
    \ifcsname M@fontfamily@\@tempa\endcsname
      \edef\M@f@ntn@me{\csname M@fontfamily@\@tempa\endcsname}
      \edef\M@f@ntn@meb@se{\csname M@fontfamily@base@\@tempa\endcsname}
    \else
      \edef@nospace\@tempa{\@tempa}
      \ifcase\M@loader % are we using default font-loader?
        \let\M@f@ntn@me\@tempa
        \wlog{Package mathfont Info: Adding \@tempbase\space to the nfss!}
        \wlog{Family name: \M@f@ntn@me}
        \DeclareFontFamily{TU}{\M@f@ntn@me}{}
        \M@fill@nfss@shapes{\M@f@ntn@me}{\M@otf@features}{\@tempfeatures}
        \ifdefined\directlua
          \edef\M@f@ntn@meb@se{\M@f@ntn@me-base}
          \wlog{Package mathfont Info: Adding \@tempbase with mode=base
            to the nfss!}
          \wlog{Family name: \M@f@ntn@meb@se}
          \DeclareFontFamily{TU}{\M@f@ntn@meb@se}{}
          \M@fill@nfss@shapes
            {\M@f@ntn@meb@se}{\M@otf@features}{\@tempfeatures;mode=base}
        \else
          \edef\M@f@ntn@meb@se{\M@f@ntn@me}
        \fi
      \or              % are we using fontspec as font-loader?
        \wlog{Package mathfont Info: Passing \@tempbase\space to fontspec
          for handling!}
        \csname fontspec_set_family:Nnn\endcsname\M@f@ntn@me
          {\M@otf@features,\@tempfeatures}{\@tempbase}
        \ifdefined\directlua
          \wlog{Package mathfont Info: Passing \@tempbase\space with
            Renderer=Base to fontspec for handling!}
          \csname fontspec_set_family:Nnn\endcsname\M@f@ntn@meb@se
            {\M@otf@features,\@tempfeatures,Renderer=Base}{\@tempbase}
        \else
            \edef\M@f@ntn@meb@se{\M@f@ntn@me}
        \fi
      \fi
      \expandafter\edef\csname\M@f@ntn@me-base\endcsname{\M@f@ntn@meb@se}
      \expandafter\edef\csname M@fontfamily@\@tempa\endcsname
        {\M@f@ntn@me}
      \expandafter\edef\csname M@fontfamily@base@\@tempa\endcsname
        {\M@f@ntn@meb@se}
    \fi
  \fi}
\@onlypreamble\M@declare@shape
\@onlypreamble\M@fill@nfss@shapes
\@onlypreamble\M@newfont
\def\M@check@option@valid#1{%
  \let\@temperror\M@InvalidOptionError % error by default
  \@for\@j:=\M@keys\do{%
    \ifx\@j#1
      \let\@temperror\@gobble % eliminate error
      \@optionpresenttrue     % set switch to true
    \fi}
  \def\@j{empty} % if option is "empty," we do nothing
  \ifx\@j#1
    \let\@temperror\@gobble
    \@optionpresentfalse
  \fi
  \@temperror{#1}}
\def\M@check@suboption@valid#1{%
  \let\@temperror\M@InvalidSuboptionError % error by default
  \@for\@j:=roman,upright,italic\do{%
    \ifx\@j#1
      \let\@temperror\@gobble % eliminate error
      \@suboptionpresenttrue  % set switch to true
    \fi}
  \@temperror{#1}}
\def\M@strip@equals#1={#1}
\def\M@parse@option#1=#2\@nil{%
  \@optionpresentfalse    % set switch to false by default
  \@suboptionpresentfalse % set switch to false by default
  \def\@temp@opt{#1}      % store option
  \def\@temp@sub{#2}      % store suboption
  \ifx\@temp@opt\@empty
    \M@MissingOptionError
  \else
    \M@check@option@valid\@temp@opt
    \bgroup\def\@tempa{=}
    \ifx\@temp@sub\@tempa
      \egroup % first branch \egroup
      \M@MissingSuboptionError
    \else
      \egroup % second branch \egroup
      \ifx\@temp@sub\@empty
      \else
        \edef\@temp@sub{\expandafter\M@strip@equals\@temp@sub}
        \M@check@suboption@valid\@temp@sub % check that suboption is valid
      \fi
    \fi
    \bgroup\def\@tempa{roman}
    \ifx\@temp@sub\@tempa
      \egroup % first branch \egroup
      \def\@temp@sub{upright}
    \else
      \egroup % second branch \egroup
    \fi
  \fi}
\long\def\edef@nospace#1#2{%
  \edef#1{#2}%
  \edef#1{\expandafter\zap@space#1 \@empty}}
\protected\def\mathfont{\@ifnextchar[{\@mathfont}{\@mathfont[\M@defaultkeys]}}
\def\@mathfont[#1]#2{%
  \ifx\set@mathchar\@@set@mathchar
    \M@InternalsRestoredError
  \else
    \M@toks{}
    \M@newfont{#2}
    \ifcsname M@fontid@\M@f@ntn@me\endcsname\else % need new \M@count value?
      \expandafter\edef\csname M@fontid@\M@f@ntn@me\endcsname{\the
        \M@count}
      \expandafter\edef\csname M@fontid@\M@f@ntn@meb@se\endcsname{\the
        \M@count}
      \advance\M@count\@ne
    \fi
    \edef\@tempa{\csname M@fontid@\M@f@ntn@me\endcsname}
    \edef@nospace\@tempb{#1}
    \@for\@i:=\@tempb\do{\expandafter\M@parse@option\@i=\@nil
      \if@optionpresent
        \expandafter\ifx % next line is two cs to be compared
          \csname ifM@\@temp@opt\expandafter\endcsname\csname iftrue\endcsname
          \M@CharsSetWarning{\@temp@opt}
        \else
          \edef\@tempc{\the\M@toks^^J\@temp@opt}
          \M@toks\expandafter{\@tempc}
          \if@suboptionpresent
            \expandafter\edef\csname M@\@temp@opt shape\endcsname{\@temp@sub}
          \fi
          \edef\@tempc{\the\M@toks\space
            (\csname M@\@temp@opt shape\endcsname)}
          \M@toks\expandafter{\@tempc}
          \edef\@tempc{\csname M@\@temp@opt shape\endcsname}
          \def\@tempb{upright}
          \ifx\@tempb\@tempc
            \let\@tempb\shapedefault
          \else
            \let\@tempb\itdefault
          \fi
          \ifcsname symM\@tempc\@tempa\endcsname\else
            \M@SymbolFontInfo{\@tempbase}{\M@f@ntn@meb@se}
              {\mddefault/\@tempb}{M\@tempc\@tempa}
            \DeclareSymbolFont
              {M\@tempc\@tempa}{TU}{\M@f@ntn@meb@se}{\mddefault}{\@tempb}
          \fi
          \expandafter
            \edef\csname M@\@temp@opt @fontinfo\endcsname{\@tempbase}
          \M@FontChangeInfo{\@temp@opt}{\@tempbase}
          \csname M@\@temp@opt @set\endcsname % set default font
          \csname M@\@temp@opt true\endcsname % set switch to true
        \fi
      \fi}
    \edef\@tempa{\the\M@toks}
    \ifx\@tempa\@empty
      \wlog{The \string\mathfont\space command on line
        \the\inputlineno\space did not change the font for any characters!}
    \else
      \wlog{}
      \typeout{:: mathfont :: Using font \@tempbase\space
        on line \the\inputlineno.}
      \wlog{Character classes changed:\the\M@toks}
    \fi
  \fi}
\@onlypreamble\mathfont
\@onlypreamble\m@thf@nt
\@onlypreamble\@mathfont
\protected\def\setfont#1{%
  \mathfont{#1}
  \mathconstantsfont{#1}
  \setmathfontcommands{#1}
  \let\rmdefault\M@f@ntn@me}
\@onlypreamble\setfont
\let\M@SetMathConstants\relax
\protected\def\mathconstantsfont{%
  \@ifnextchar[{\@mathconstantsfont}{\@mathconstantsfont[upright]}}
\def\@mathconstantsfont[#1]#2{%
  \edef@nospace\@tempa{#2}
  \edef\@tempa{\csname M@fontfamily@base@\@tempa\endcsname}
  \expandafter\ifx\@tempa\relax
    \M@BadMathConstantsFontError{#2}
  \else
    \def\@tempb{#1}
    \def\@tempc{upright}
    \ifx\@tempb\@tempc
      \let\m@th@const@nts@font@sh@pe\shapedefault
    \else
      \def\@tempc{italic}
      \ifx\@tempb\@tempc
        \let\m@th@const@nts@font@sh@pe\itdefault
      \else
        \M@BadMathConstantsFontTypeError{#1}
      \fi
    \fi
    \ifcsname symM#1\csname M@fontid@\@tempa\endcsname\endcsname\else
      \DeclareSymbolFont{M#1\csname M@fontid@\@tempa\endcsname}
        {TU}{\@tempa}{\mddefault}{\m@th@const@nts@font@sh@pe}
    \fi
    \let\m@th@const@nts@font\@tempa
    \protected\def\M@SetMathConstants{%
      \begingroup
      \escapechar\m@ne
      \expandafter\getanddefine@fonts
        \csname symM#1\csname M@fontid@\m@th@const@nts@font\endcsname
          \expandafter
        \endcsname % expands to \symMupright<id>
        \csname TU/\m@th@const@nts@font
                  /\seriesdefault
                  /\m@th@const@nts@font@sh@pe
        \endcsname % expands to \TU/<nfss family name>/m/<shape>
      \globaldefs\@ne
      \expandafter\@gobbletwo\math@fonts % gobble to avoid infinite loop
      \endgroup}
    \fi
  \ifM@adjust@font\else
    \M@MathConstantsNoFontAdjustWarning
  \fi}
\def\math@fonts{\aftergroup\M@SetMathConstants}
\@onlypreamble\mathconstantsfont
\def\M@check@csarg#1#2{%
  \expandafter\ifx\expandafter\@nnil\@gobble#2\@nnil % good
    \ifcat\relax\noexpand#2 % good
      \M@arg@goodtrue
    \else % if #2 not a control sequence
      \M@MissingControlSequenceError#1{#2}
      \M@arg@goodfalse
    \fi
  \else % if #2 is multiple tokens
    \M@DoubleArgError#1{#2}
    \M@arg@goodfalse
  \fi}
\protected\def\newmathfontcommand#1#2#3#4{%
  \M@check@csarg\newmathfontcommand{#1}
  \ifM@arg@good
    \M@newfont{#2}
    \M@NewFontCommandInfo{#1}{\@tempbase}{\M@f@ntn@meb@se}{#3}{#4}
    \DeclareMathAlphabet{#1}{TU}{\M@f@ntn@meb@se}{#3}{#4}
  \fi}
\@onlypreamble\newmathfontcommand
\def\M@define@newmath@cmd#1#2#3{%
  \protected\def#1##1##2{%
    \M@check@csarg{#1}{##1}
    \newmathfontcommand{##1}{##2}{#2}{#3}}}
\def\M@default@newmath@cmds{%
  \newmathrm{\mddefault}{\shapedefault},%
  \newmathit{\mddefault}{\itdefault},%
  \newmathbf{\bfdefault}{\shapedefault},%
  \newmathbfit{\bfdefault}{\itdefault},%
  \newmathsc{\mddefault}{\scdefault},%
  \newmathscit{\mddefault}{\scdefault\itdefault},%
  \newmathbfsc{\bfdefault}{\scdefault},%
  \newmathbfscit{\bfdefault}{\scdefault\itdefault}}
\@for\@i:=\M@default@newmath@cmds\do{\expandafter\M@define@newmath@cmd\@i}
\@onlypreamble\newmathrm
\@onlypreamble\newmathit
\@onlypreamble\newmathbf
\@onlypreamble\newmathbfit
\@onlypreamble\newmathsc
\@onlypreamble\newmathscit
\@onlypreamble\newmathbfsc
\@onlypreamble\newmathbfscit
\@onlypreamble\M@define@newmath@cmd
\let\M@default@newmath@cmds\relax
\protected\def\setmathfontcommands#1{%
  \newmathrm\mathrm{#1}
  \newmathit\mathit{#1}
  \newmathbf\mathbf{#1}
  \newmathbfit\mathbfit{#1}
  \newmathsc\mathsc{#1}
  \newmathscit\mathscit{#1}
  \newmathbfsc\mathbfsc{#1}
  \newmathbfscit\mathbfscit{#1}}
\@onlypreamble\setmathfontcommands
\protected\def\newmathbold{%
  \M@DeprecatedWarning\newmathbold\newmathbf\newmathbf}
\protected\def\newmathboldit{%
  \M@DeprecatedWarning\newmathboldit\newmathbfit\newmathbfit}
\ifM@adjust@font
  \def\M@check@int#1{%
  \M@arg@goodfalse
  \begingroup
  \edef\@tempa{\number0#1}
  \edef\@tempa{\detokenize\expandafter{\@tempa}}
  \@expandtwoargs\in@{"}{\@tempa}
  \ifin@ % is " in #1?
    \endgroup % first branch \endgroup
  \else
    \@expandtwoargs\in@{\@backslashchar}{\@tempa}
    \ifin@ % is backslash in #1?
      \endgroup % second branch \endgroup
    \else
      \directlua{
      local num = tonumber("\@tempa")
      local bool = 0 % keep track if \@tempa is (int >= 0)
      if num then % if number?
        if num == num - (num \@percentchar 1) then % if integer?
          if num >= 0 then % if nonnegative?
            bool = 1
          end
        end
      end
      tex.print("\@backslashchar\@backslashchar endgroup")
      if bool == 1 then
        tex.print("\@backslashchar\@backslashchar csname M@arg@goodtrue%
        \@backslashchar\@backslashchar endcsname")
      end}
    \fi
  \fi}
  \let\@tempa~
  \let~\noexpand
  \count@\escapechar
  \escapechar\m@ne
  \@tfor\@i:=\RuleThicknessFactor\IntegralItalicFactor
    \SurdHorizontalFactor\SurdVerticalFactor\do{%
      \protected\expandafter\edef\@i#1{%
        ~\M@check@int{#1}%
        ~\ifM@arg@good
          ~\global
            \expandafter~\csname M@\expandafter\string\@i\endcsname=#1\relax
        ~\else
          ~\M@BadIntegerError\expandafter~\@i{#1}%
        ~\fi}}
  \let~\@tempa
  \escapechar\count@
\else
  \@tfor\@i:=\RuleThicknessFactor\IntegralItalicFactor\SurdHorizontalFactor
    \SurdVerticalFactor\CharmLine\CharmFile
      \do{%
        \protected\expandafter\edef\@i{\noexpand\M@NoFontAdjustError
          \expandafter\noexpand\@i
          \noexpand\@gobble}}
\fi
\@onlypreamble\RuleThicknessFactor
\@onlypreamble\IntegralItalicFactor
\@onlypreamble\SurdHorizontalFactor
\@onlypreamble\SurdVerticalFactor
\@onlypreamble\CharmLine
\@onlypreamble\CharmFile
\def\restoremathinternals{%
  \ifx\set@mathchar\@@set@mathchar
  \else
    \wlog{Package mathfont Info: Restoring \string\set@mathchar.}
    \wlog{Package mathfont Info: Restoring \string\set@mathsymbol.}
    \wlog{Package mathfont Info: Restoring \string\set@mathaccent.}
    \wlog{Package mathfont Info: Restoring \string\DeclareSymbolFont.}
    \let\set@mathchar\@@set@mathchar
    \let\set@mathsymbol\@@set@mathsymbol
    \let\set@mathaccent\@@set@mathaccent
    \let\DeclareSymbolFont\@@DeclareSymbolFont
  \fi}
  \protected\gdef\clap#1{\hb@xt@\z@{\hss#1\hss}}
  \protected\def\stack@flatrel#1#2{\expandafter
    \st@ck@fl@trel\expandafter#1\@firstofone#2}
  \protected\gdef\st@ck@fl@trel#1#2#3{%
    {\setbox0\hbox{$\m@th#1#2$}% contains \mathrel symbol
    \setbox1\hbox{$\m@th#1#3$}% gets raised over \box0
    \if\wd0>\wd1\relax
      \hb@xt@\wd0{%
        \hfil
        \clap{\raise0.7\ht0\box1}%
        \clap{\box0}\hfil}%
    \else
      \hb@xt@\wd1{%
        \hfil
        \clap{\raise0.7\ht0\box1}%
        \clap{\box0}\hfil}%
    \fi}}
\ifnum\tracinglostchars<\tw@
  \tracinglostchars\tw@
\fi
\def\keyword@info@begindocument#1:#2\@nil{%
  \expandafter\ifx % next line is two cs to be compared
        \csname ifM@#1\expandafter\endcsname\csname iftrue\endcsname
    \wlog{#1:#2\@spaces Set to
      \csname M@#1@fontinfo\endcsname,
      \csname M@#1shape\endcsname\space shape.}
  \else
    \wlog{#1:#2\@spaces No change.}
  \fi}
\AtBeginDocument{%
  \def\@tempa{%    <-- everything should be 14 characters long
    upper:\@spaces\@spaces,%
    lower:\@spaces\@spaces,%
    diacritics:\space\space\space,%
    greekupper:\space\space\space,%
    greeklower:\space\space\space,%
    agreekupper:\space\space,%
    agreeklower:\space\space,%
    cyrillicupper:,%
    cyrilliclower:,%
    hebrew:\@spaces\space\space\space,%
    digits:\@spaces\space\space\space,%
    operator:\@spaces\space,%
    delimiters:\space\space\space,%
    radical:\@spaces\space\space,%
    bigops:\@spaces\space\space\space,%
    extbigops:\@spaces,%
    symbols:\@spaces\space\space,%
    extsymbols:\space\space\space,%
    arrows:\@spaces\space\space\space,%
    bb:\@spaces\@spaces\space\space\space,%
    cal:\@spaces\@spaces\space\space,%
    frak:\@spaces\@spaces\space,%
    bcal:\@spaces\@spaces\space,%
    bfrak:\@spaces\@spaces}
  \wlog{^^JPackage mathfont Info: List of changes made in the preamble.}
  \@for\@i:=\@tempa\do{%
    \expandafter\keyword@info@begindocument\@i\@nil}
  \wlog{}}
\ifdefined\XeTeXrevision
  \ifM@font@loaded
    \AtEndOfPackage{%
    \PackageWarningNoLine{mathfont}
    {XeTeX detected. It looks like you\MessageBreak
    specified a font when you loaded\MessageBreak
    mathfont. If you run into problems\MessageBreak
    with a font whose name is multiple\MessageBreak
    words, try compiling with LuaLaTeX\MessageBreak
    or call \string\setfont\space or \string\mathfont\MessageBreak
    manually}}
  \fi
\fi
\ifM@font@loaded
  \AtEndOfPackage{\setfont\M@font@load}
\fi
\@onlypreamble\M@upper@set
\@onlypreamble\M@lower@set
\@onlypreamble\M@diacritics@set
\@onlypreamble\M@greekupper@set
\@onlypreamble\M@greeklower@set
\@onlypreamble\M@agreekupper@set
\@onlypreamble\M@agreeklower@set
\@onlypreamble\M@cyrillicupper@set
\@onlypreamble\M@cyrilliclower@set
\@onlypreamble\M@hebrew@set
\@onlypreamble\M@digits@set
\@onlypreamble\M@operator@set
\@onlypreamble\M@delimiters@set
\@onlypreamble\M@radical@set
\@onlypreamble\M@bigops@set
\@onlypreamble\M@extbigops@set
\@onlypreamble\M@symbols@set
\@onlypreamble\M@extsymbols@set
\@onlypreamble\M@arrows@set
\@onlypreamble\M@bb@set
\@onlypreamble\M@cal@set
\@onlypreamble\M@frak@set
\@onlypreamble\M@bcal@set
\@onlypreamble\M@bfrak@set
\ifM@adjust@font
\mathnolimitsmode=4\relax
\bgroup
  \catcode`\~=0
  ~catcode`~\=12
  ~@firstofone{
~egroup
~def~M@number@ssert{"\n%
  Package mathfont error: Nonnumeric charm value.\n\n%
  I'm having trouble with a character metric.\n%
  Your \\CharmLine or \\CharmFile contains \""..temp_string.."\"\n%
  which is not a number. Make sure that your\n%
  charm information is all integers, floats,\n%
  or asterisks separated by commas or spaces.\n"}
~def~M@index@ssert{"\n%
  Package mathfont error: Invalid unicode index.\n\n%
  The unicode index \""..split_string[1].."\" is invalid. Make sure\n%
  that the first number in your \\CharmLine and in each\n%
  line of your \\CharmFile is an integer between 0 and\n%
  1,114,111.\n"}
~def~M@entries@ssert{"\n%
  Package mathfont error: Charm values too short.\n\n%
  Your charm information for U+"..index.." needs more\n%
  entries. Right now you have "..number_of_entries.." entries, and\n%
  you need at least "..entries_needed..". If you aren't sure what\n%
  to do, try adding asterisks to your \\CharmLine\n%
  or line in your \\CharmFile.\n"}}
\protected\def\CharmLine#1{%
  \begingroup
  \edef\@tempa{#1}
  \edef\@tempa{\detokenize\expandafter{\@tempa}}
  \@expandtwoargs\in@{"}{\@tempa}
  \ifin@ % is " in #1?
    \ifM@fromCharmFile
      \M@ForbiddenCharmFile{"}
    \else
      \M@ForbiddenCharmLine{"}
    \fi
  \else
    \@expandtwoargs\in@{\@backslashchar}{\@tempa}
    \ifin@ % is backslash in #1?
      \ifM@fromCharmFile
        \M@ForbiddenCharmFile{\@backslashchar}
      \else
        \M@ForbiddenCharmLine{\@backslashchar}
      \fi
    \else
      \directlua{mathfont:add_to_charm("\@tempa")}
    \fi
  \fi
  \endgroup}
\protected\def\CharmFile#1{%
  \begingroup
  \M@fromCharmFiletrue
  \immediate\openin\M@Charm{#1}
  \def\@next{%
    \read\M@Charm to \@tempa
    \CharmLine\@tempa
    \ifeof\M@Charm\else % if file has more lines?
      \expandafter\@next
    \fi}
  \@next
  \immediate\closein\M@Charm
  \M@fromCharmFilefalse
  \endgroup}
\directlua{
mathfont = {}
function mathfont:new_type_a(index, next, data)
  self[index] = {}
  self[index].type = "a"
  self[index].next = next
  self[index].left_stretch = data[1] / 1000
  self[index].right_stretch = data[2] / 1000
  self[index].top_accent_stretch = data[3] / 1000
  self[index].bot_accent_stretch = data[4] / 1000
end
function mathfont:new_type_e(index, smash, next, data)
  local v = \string# next
  self[index] = {}
  self[index].type = "e"
  self[index].smash = smash
  self[index].next = next
  self[index].total_variants = v
  self[index].data = {}
  for i = 1, v, 1 do
    self[index].data[i] = {}
    self[index].data[i].x = data[2*i-1] / 1000
    self[index].data[i].y = data[2*i] / 1000
  end
  self[index].top_accent_stretch = data[2*v+1] / 1000
  self[index].bot_accent_stretch = data[2*v+2] / 1000
end
function mathfont:new_type_u(index, data)
  self[index] = {}
  self[index].type = "u"
  self[index].top_accent_stretch = data[1] / 1000
  self[index].bot_accent_stretch = data[2] / 1000
end
function mathfont.parse_charm(charm_input)
  local split_string = {}
  local charm_string = charm_input
  local temp_string = ""
  local i = 1
  while string.find(charm_string, " ") or string.find(charm_string, ",") do
    local length = string.len(charm_string)
    local first_space = string.find(charm_string, " ") or length
    local first_comma = string.find(charm_string, ",") or length
    local sep = first_space
    if first_comma < first_space then
      sep = first_comma
    end
    temp_string = string.sub(charm_string, 1, sep-1)
    charm_string = string.sub(charm_string, sep+1)
    if temp_string \noexpand~= "" then
      if tonumber(temp_string) then % if a number, append number
        split_string[i] = tonumber(temp_string)
        i = i+1
      elseif temp_string == "*" then % if asterisk, append asterisk
        split_string[i] = temp_string
        i = i+1
      else % if neither, raise error
        error(\M@number@ssert)
      end
    end
  end
  temp_string = charm_string
  if temp_string \noexpand~= "" then
    if tonumber(temp_string) then % if a number, append number
      split_string[i] = tonumber(temp_string)
    elseif temp_string == "*" then % if asterisk, append asterisk
      split_string[i] = temp_string
    else % if neither, raise error
      error(\M@number@ssert)
    end
  end
  local index = split_string[1]
  if index == "*" then
    error(\M@index@ssert)
  end
  local rounded = index - (index \@percentchar 1) % subtract decimal portion
  local max = 1114111
  assert(index == rounded and index >= 0 and index <= max, \M@index@ssert)
  return split_string
end
function mathfont:add_to_charm(charm_string)
  local charm_metrics = self.parse_charm(charm_string)
  local index = charm_metrics[1]
  local number_of_entries = \string# charm_metrics
  if not self[index] then
    self:new_type_u(index, {0, 0})
  end
  if self[index].type == "a" then
    local entries_needed = 5
    assert(number_of_entries >= entries_needed, \M@entries@ssert)
    if charm_metrics[2] \noexpand~= "*" then
      self[index].left_stretch = charm_metrics[2] / 1000
    end
    if charm_metrics[3] \noexpand~= "*" then
      self[index].right_stretch = charm_metrics[3] / 1000
    end
    if charm_metrics[4] \noexpand~= "*" then
      self[index].top_accent_stretch = charm_metrics[4] / 1000
    end
    if charm_metrics[5] \noexpand~= "*" then
      self[index].bot_accent_stretch = charm_metrics[5] / 1000
    end
  elseif self[index].type == "e" then
    local tot_variants = self[index].total_variants
    local entries_needed = 2 * tot_variants + 3
    assert(number_of_entries >= entries_needed, \M@entries@ssert)
    for i = 1, tot_variants, 1 do
      if charm_metrics[2*i] \noexpand~= "*" then
        self[index].data[i].x = charm_metrics[2*i] / 1000
      end
      if charm_metrics[2*i+1] \noexpand~= "*" then
        self[index].data[i].y = charm_metrics[2*i+1] / 1000
      end
    end
    if charm_metrics[2*tot_variants+2] \noexpand~= "*" then
      self[index].top_accent_stretch = charm_metrics[2*tot_variants+2] / 1000
    end
    if charm_metrics[2*tot_variants+3] \noexpand~= "*" then
      self[index].bot_accent_stretch = charm_metrics[2*tot_variants+3] / 1000
    end
  elseif self[index].type == "u" then
    local entries_needed = 3
    assert(number_of_entries >= entries_needed, \M@entries@ssert)
    if charm_metrics[2] \noexpand~= "*" then
      self[index].top_accent_stretch = charm_metrics[2] / 1000
    end
    if charm_metrics[3] \noexpand~= "*" then
      self[index].bot_accent_stretch = charm_metrics[3] / 1000
    end
  end
end
function mathfont.make_hex_value(integer)
  if integer == 0 then
    return "0000"
  end
  if integer == 1 then
    return "0001"
  end
  local hex_digits = "0123456789ABCDEF" % for reference
  local hex_string = ""
  local curr_val = integer
  local remainder = 0
  local i = 0
  while 16^i <= curr_val do
    i = i+1
  end
  for j = i-1, 0, -1 do
    remainder = curr_val \@percentchar (16^j)
    curr_val = (curr_val - remainder) / (16^j)
    hex_string = hex_string .. string.sub(hex_digits, curr_val+1, curr_val+1)
    curr_val = remainder
  end
  if \string# hex_string < 4 then
    for i = \string# hex_string, 4, 1 do
      hex_string = "0" .. hex_string
    end
  end
  return hex_string
end
function mathfont.glyph_info(char)
  local glyph_width = char.width or 0
  local glyph_height = char.height or 0
  local glyph_depth = char.depth or 0
  local glyph_italic = char.italic or 0
  return glyph_width, glyph_height, glyph_depth, glyph_italic
end
function mathfont:smash_glyph(index, fontdata)
  local smash_table = {}
  smash_table.width = 0
  smash_table.height = 0
  smash_table.depth = 0
  smash_table.commands = {{"char", index}}
  return smash_table
end
function mathfont.empty(arg)
end
function mathfont.make_a_commands(index, offset)
  local c_1 = {"right", offset}
  local c_2 = {"char", index}
  return {c_1, c_2}
end
function mathfont:make_a_table(index, charm_data, fontdata)
  local a_table = {}
  local char = fontdata.characters[index] or {}
  local slant = fontdata.parameters.slant / 65536 or 0
  local left_stretch = charm_data.left_stretch
  local right_stretch = charm_data.right_stretch
  local width, height, depth, italic = self.glyph_info(char)
  width = width + italic
  local offset = width * left_stretch
  a_table.width = width * (1 + left_stretch + right_stretch)
  a_table.height = height
  a_table.depth = depth
  a_table.italic = italic
  a_table.unicode = index
  a_table.tounicode = self.make_hex_value(index)
  local top_base = (0.5 + left_stretch) * width + 0.5 * slant * height
  local bot_base = (0.5 + left_stretch) * width - 0.5 * slant * height
  local top_accent_shift = charm_data.top_accent_stretch * width
  local bot_accent_shift = charm_data.bot_accent_stretch * width
  a_table.top_accent = top_base + top_accent_shift
  a_table.bot_accent = bot_base + bot_accent_shift
  a_table.commands = self.make_a_commands(index, offset)
  a_table.mathkern = {}
  a_table.mathkern.top_right = {{height = 0, kern = -italic}}
  a_table.mathkern.bottom_right = {{height = 0, kern = -italic}}
  a_table.mathkern.top_left = {{height = 0, kern = 0}}
  a_table.mathkern.bottom_left = {{height = 0, kern = 0}}
  return a_table
end
function mathfont:modify_e_base(index, fontdata)
  local char = fontdata.characters[index] or {}
  local width, height, depth, italic = self.glyph_info(char)
  char.width = width + italic
  if index == 8730 then
    local horizontal_scale = tex.getcount("M@SurdHorizontalFactor") / 1000
    local vertical_scale = tex.getcount("M@SurdVerticalFactor") / 1000
    char.width = horizontal_scale * char.width
    char.height = vertical_scale * height
  end
  if index == 8747 then
    local scale_factor = tex.getcount("M@IntegralItalicFactor") / 1000
    char.italic = scale_factor * width
  end
end
function mathfont.make_e_commands(index, h_stretch, v_stretch)
  local c_1 = {"pdf", "origin", string.format(
    "q \@percentchar s 0 0 \@percentchar s 0 0 cm", h_stretch, v_stretch)}
  local c_2 = {"char", index}
  local c_3 = {"pdf", "origin", "Q"}
  return {c_1, c_2, c_3}
end
function mathfont:make_e_table(index, charm_data, fontdata)
  local e_table = {}
  local char = fontdata.characters[index] or {}
  local slant = fontdata.parameters.slant / 65536
  local tounicode = self.make_hex_value(index)
  local smash_index = charm_data.smash
  local width, height, depth, italic = self.glyph_info(char)
  for i = 1, charm_data.total_variants, 1 do
    local h_stretch = charm_data.data[i].x
    local v_stretch = charm_data.data[i].y
    local new_width = width * h_stretch
    local new_height = height * v_stretch
    local new_depth = depth * v_stretch
    local new_italic = italic * h_stretch
    e_table[i] = {}
    e_table[i].width = new_width
    e_table[i].height = new_height
    e_table[i].depth = new_depth
    e_table[i].italic = new_italic
    e_table[i].unicode = index
    e_table[i].tounicode = tounicode
    local base_top_accent = 0.5 * new_width + 0.5 * slant * new_height
    local base_bot_accent = 0.5 * new_width - 0.5 * slant * new_height
    local top_accent_shift = charm_data.top_accent_stretch * new_width
    local bot_accent_shift = charm_data.bot_accent_stretch * new_width
    e_table[i].top_accent = base_top_accent + top_accent_shift
    e_table[i].bot_accent = base_bot_accent + bot_accent_shift
    e_table[i].commands =
      self.make_e_commands(smash_index, h_stretch, v_stretch)
    if i < charm_data.total_variants then
      e_table[i].next = charm_data.next[i+1]
    end
  end
  return e_table
end
function mathfont:make_u_table(index, charm_data, fontdata)
  local u_table = fontdata.characters[index] or {}
  local slant = fontdata.parameters.slant / 65536 or 0
  local width, height, depth, italic = self.glyph_info(u_table)
  local new_width = width + italic
  u_table.width = new_width
  local base_top_accent = 0.5 * new_width + 0.5 * slant * height
  local base_bot_accent = 0.5 * new_width - 0.5 * slant * height
  local top_accent_shift = charm_data.top_accent_stretch * new_width
  local bot_accent_shift = charm_data.bot_accent_stretch * new_width
  u_table.top_accent = base_top_accent + top_accent_shift
  u_table.bot_accent = base_bot_accent + bot_accent_shift
  u_table.mathkern = {}
  u_table.mathkern.top_right = {{height = 0, kern = -italic}}
  u_table.mathkern.bottom_right = {{height = 0, kern = -italic}}
  u_table.mathkern.top_left = {{height = 0, kern = 0}}
  u_table.mathkern.bottom_left = {{height = 0, kern = 0}}
  return u_table
end
function mathfont.make_fake_angle(index, smash, fontdata)
  local temp = {}
  local lparen = fontdata.characters[40] or {}
  local lparen_height = lparen.height or 0
  local lparen_depth = lparen.depth or 0
  local glyph = fontdata.characters[index] or {}
  local glyph_height = glyph.height or 0
  local base_height = 0.9 * glyph_height
  local factor = 0
  if glyph_height \noexpand~= 0 then
    factor = (lparen_height + lparen_depth) / base_height
  end
  local shift = 0.1 * glyph_height * factor + lparen_depth
  temp.height = lparen_height
  temp.depth = lparen_depth
  temp.width = glyph.width or 0
  temp.italic = glyph.italic or 0
  temp.top_accent = glyph.top_accent or 0.5 * temp.width
  temp.bot_accent = glyph.bot_accent or 0.5 * temp.width
  temp.commands = {
    {"down", shift},
    {"pdf", "origin", string.format("q 1 0 0 \@percentchar s 0 0 cm", factor)},
    {"char", smash},
    {"pdf", "origin", "Q"},
    {"down", -shift}}
  return temp
end
function mathfont.set_nomath_true(fontdata)
  fontdata.nomath = false
  fontdata.oldmath = false
end
function mathfont.apply_charm_info(fontdata)
  local chars = fontdata.characters or {}
  chars[1044538] = mathfont:smash_glyph(8249, fontdata) % \lguil
  chars[1044539] = mathfont:smash_glyph(8250, fontdata) % \rguil
  chars[1044540] = mathfont:smash_glyph(171, fontdata) % \llguil
  chars[1044541] = mathfont:smash_glyph(187, fontdata) % \rrguil
  chars[1044508] = mathfont.make_fake_angle(8249, 1044538, fontdata)
  chars[1044509] = mathfont.make_fake_angle(8250, 1044539, fontdata)
  chars[1044510] = mathfont.make_fake_angle(171, 1044540, fontdata)
  chars[1044511] = mathfont.make_fake_angle(187, 1044541, fontdata)
  if not chars[8711] then
    chars[8710] = chars[8710] or {}
    chars[1044508] = mathfont:smash_glyph(8710, fontdata)
    chars[8711] = {}
    chars[8711].width = chars[8710].width or 0
    chars[8711].height = chars[8710].height or 0
    chars[8711].depth = chars[8710].depth or 0
    chars[8711].italic = chars[8710].italic or 0
    chars[8711].top_accent = chars[8710].top_accent or 0.5 * chars[8711].width
    chars[8711].bot_accent = chars[8710].bot_accent or 0.5 * chars[8711].width
    chars[8711].unicode = 8711
    chars[8711].tounicode = mathfont.make_hex_value(8711)
    chars[8711].commands = {
      {"down", -chars[8711].height},
      {"pdf", "origin", "q 1 0 0 -1 0 0 cm"},
      {"char", 1044508},
      {"pdf", "origin", "Q"},
      {"down", chars[8711].height}}
  end
  for index, info in pairs(mathfont) do
    if type(info) == "table" then
      if info.type == "a" then
        chars[info.next] = mathfont:make_a_table(index, info, fontdata)
      elseif info.type == "e" then
        local smash = info.smash
        chars[index] = chars[index] or {}
        chars[index].next = info.next[1]
        mathfont:modify_e_base(index, fontdata)
        chars[smash] = mathfont:smash_glyph(index, fontdata)
        local variants_table = mathfont:make_e_table(index, info, fontdata)
        for i = 1, info.total_variants, 1 do
          chars[info.next[i]] = variants_table[i]
        end
      elseif info.type == "u" then
        chars[index] = mathfont:make_u_table(index, info, fontdata)
      end
    end
  end
end
function mathfont.math_constants(fontdata)
  fontdata.MathConstants = fontdata.MathConstants or {}
  local size = fontdata.size or 0
  local ex = fontdata.parameters.x_height or 0
  local em = fontdata.parameters.quad or 0
  local A_height = 0
  local y_depth = 0
  if fontdata.characters[65] then
    A_height = fontdata.characters[65].height or 0 % A
  end
  if fontdata.characters[121] then
    y_depth = fontdata.characters[121].depth or 0 % y
  end
  local axis = 0
  local rule_thickness = 0
  local dim = "FractionRuleThickness"
  if not fontdata.MathConstants[dim] then
    local scale_factor = tex.getcount("M@RuleThicknessFactor") / 1000
    rule_thickness = (size / 18) * scale_factor
    fontdata.MathConstants[dim] = rule_thickness
  else
    rule_thickness = fontdata.MathConstants[dim]
  end
  local dim = "AxisHeight"
  if fontdata.MathConstants[dim] then
    axis = fontdata.MathConstants[dim]
  else
    if fontdata.characters[45] then
      axis = fontdata.characters[45].height - 0.5 * rule_thickness
    else
      axis = 0.8 * ex
    end
    fontdata.MathConstants[dim] = axis
  end
  local xi_9 = 2 * rule_thickness              % upper limit minimum clearance
  local xi_10 = xi_9 + 0.35 * y_depth          % upper limit attempt placement
  local xi_11 = xi_10                          % lower limit minimum clearance
  local xi_12 = xi_10 + 0.35 * (A_height + ex) % lower limit attempt placement
  local sigma_8 = axis + 1.5 * rule_thickness + y_depth + 0.1 * A_height
  local sigma_9 = (axis + 1.35 * rule_thickness + 0.7 * y_depth +
    0.07 * A_height)
  local sigma_10 = sigma_9
  local sigma_11 = (-axis + 1.5  * rule_thickness + 0.5 * y_depth +
    1.1 * A_height)
  local sigma_12 = (-axis + 1.35 * rule_thickness + 0.35 * y_depth +
    0.77 * A_height)
  local sigma_13 = 0.6 * A_height     % attempted superscript height
  local sigma_15 = 0.5 * A_height     % attempted superscript for \cramped
  local sigma_16 = 1.1 * y_depth      % attempted subscript lower
  if sigma_16 < 0.2 * A_height then
    sigma_16 = 0.2 * A_height
  end
  local sigma_17 = sigma_16           % sigma_16 when superscript present
  local sigma_18 = 0.5 * A_height     % superscript lower for boxed subformula
  local sigma_19 = 0.1 * A_height     % subscript lower for boxed subformula
  local dim = "DisplayOperatorMinHeight"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = 1.8 * A_height
  end
  local dim = "FractionDelimiterDisplayStyleSize"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = 2 * size
  end
  local dim = "FractionDelimiterSize"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = 1.3 * size
  end
  local dim = "FractionDenominatorDisplayStyleShiftDown"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = sigma_11
  end
  local dim = "FractionDenominatorShiftDown"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = sigma_12
  end
  local dim = "FractionDenominatorDisplayStyleGapMin"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = rule_thickness + 0.5 * y_depth
  end
  local dim = "FractionDenominatorGapMin"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = rule_thickness + 0.35 * y_depth
  end
  local dim = "FractionNumeratorDisplayStyleShiftUp"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = sigma_8
  end
  local dim = "FractionNumeratorShiftUp"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = sigma_9
  end
  local dim = "FractionNumeratorDisplayStyleGapMin"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = rule_thickness
  end
  local dim = "FractionNumeratorGapMin"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = rule_thickness
  end
  local dim = "SkewedFractionHorizontalGap"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = 0.5 * em
  end
  local dim = "SkewedFractionVerticalGap"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = ex
  end
  local dim = "UpperLimitBaselineRiseMin"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = xi_11
  end
  local dim = "UpperLimitGapMin"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = xi_9
  end
  local dim = "LowerLimitBaselineDropMin"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = xi_12
  end
  local dim = "LowerLimitGapMin"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = xi_10
  end
  local dim = "StretchStackGapBelowMin"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = xi_10
  end
  local dim = "StretchStackTopShiftUp"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = xi_11
  end
  local dim = "StretchStackGapAboveMin"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = xi_9
  end
  local dim = "StretchStackBottomShiftDown"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = xi_12
  end
  local dim = "OverbarExtraAscender"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = rule_thickness
  end
  local dim = "OverbarRuleThickness"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = rule_thickness
  end
  local dim = "OverbarVerticalGap"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = 2 * rule_thickness
  end
  local dim = "RadicalExtraAscender"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = rule_thickness
  end
  local dim = "RadicalRuleThickness"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = rule_thickness
  end
  local dim = "RadicalDisplayStyleVerticalGap"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = 2 * rule_thickness
  end
  local dim = "RadicalVerticalGap"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = rule_thickness
  end
  local dim = "RadicalKernBeforeDegree"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = (5/18) * em
  end
  local dim = "RadicalKernAfterDegree"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = (10/18) * em
  end
  local dim = "RadicalDegreeBottomRaisePercent"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = 60
  end
  local dim = "SpaceAfterScript"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = 0.1 * em
  end
  local dim = "StackBottomDisplayStyleShiftDown"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = sigma_11
  end
  local dim = "StackBottomShiftDown"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = sigma_12
  end
  local dim = "StackTopDisplayStyleShiftUp"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = sigma_8
  end
  local dim = "StackTopShiftUp"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = sigma_10
  end
  local dim = "StackDisplayStyleGapMin"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = 5 * rule_thickness + 0.5 * y_depth
  end
  local dim = "StackGapMin"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = 3 * rule_thickness + 0.35 * y_depth
  end
  local dim = "SubscriptShiftDown"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = sigma_16
  end
  local dim = "SubscriptBaselineDropMin"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = sigma_19
  end
  local dim = "SubscriptShiftDownWithSuperscript"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = sigma_17
  end
  local dim = "SubscriptTopMax"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = 0.5 * A_height
  end
  local dim = "SubSuperscriptGapMin"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = rule_thickness
  end
  local dim = "SuperscriptBottomMin"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = sigma_15 - 0.7 * y_depth
  end
  local dim = "SuperscriptBaselineDropMax"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = sigma_18
  end
  local dim = "SuperscriptShiftUp"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = sigma_13
  end
  local dim = "SuperscriptShiftUpCramped"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = sigma_15
  end
  local dim = "SuperscriptBottomMaxWithSubscript"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = -sigma_16 + 0.7 * A_height + rule_thickness
  end
  local dim = "UnderbarExtraDescender"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = rule_thickness
  end
  local dim = "UnderbarRuleThickness"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = rule_thickness
  end
  local dim = "UnderbarVerticalGap"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = 2 * rule_thickness
  end
  local dim = "MinConnectorOverlap"
  if not fontdata.MathConstants[dim] then
    fontdata.MathConstants[dim] = 0
  end
end
luatexbase.create_callback("mathfont.inspect_font", "simple", mathfont.empty)
luatexbase.create_callback("mathfont.pre_adjust", "simple", mathfont.empty)
luatexbase.create_callback("mathfont.disable_nomath", "simple",
  mathfont.set_nomath_true)
luatexbase.create_callback("mathfont.add_math_constants", "simple",
  mathfont.math_constants)
luatexbase.create_callback("mathfont.fix_character_metrics", "simple",
  mathfont.apply_charm_info)
luatexbase.create_callback("mathfont.post_adjust", "simple", mathfont.empty)
function mathfont.info(msg)
  texio.write_nl("log", "Package mathfont Info: " .. msg)
end
function mathfont.get_font_name(fontdata)
  return fontdata.fullname or fontdata.psname or fontdata.name or "<??>"
end
function mathfont.adjust_font(fontdata)
  luatexbase.call_callback("mathfont.inspect_font", fontdata)
  if fontdata.nomath then
    mathfont.info("Adjusting font " .. mathfont.get_font_name(fontdata) .. ".")
    luatexbase.call_callback("mathfont.pre_adjust", fontdata)
    luatexbase.call_callback("mathfont.disable_nomath", fontdata)
    luatexbase.call_callback("mathfont.add_math_constants", fontdata)
    luatexbase.call_callback("mathfont.fix_character_metrics", fontdata)
    luatexbase.call_callback("mathfont.post_adjust", fontdata)
  else
    mathfont.info("No changes made to " ..
      mathfont.get_font_name(fontdata) .. ".")
  end
end
luatexbase.add_to_callback("luaotfload.patch_font", mathfont.adjust_font,
  "mathfont.adjust_font")
mathfont:new_type_a(97, 1044480, {50, 50, -50, 0})     % a
mathfont:new_type_a(98, 1044481, {50, 50, -50, 0})     % b
mathfont:new_type_a(99, 1044482, {50, 50, 0, 0})       % c
mathfont:new_type_a(100, 1044483, {50, -50, -50, 0})   % d
mathfont:new_type_a(101, 1044484, {50, 50, 0, 0})      % e
mathfont:new_type_a(102, 1044485, {200, 0, 0, 0})      % f
mathfont:new_type_a(103, 1044486, {100, 50, -50, 0})   % g
mathfont:new_type_a(104, 1044487, {50, 0, -50, 0})     % h
mathfont:new_type_a(105, 1044488, {50, 100, -100, 0})  % i
mathfont:new_type_a(106, 1044489, {400, 50, -50, 0})   % j
mathfont:new_type_a(107, 1044490, {50, 50, -100, 0})   % k
mathfont:new_type_a(108, 1044491, {100, 150, -100, 0}) % l
mathfont:new_type_a(109, 1044492, {50, 0, 0, 0})       % m
mathfont:new_type_a(110, 1044493, {50, 0, 0, 0})       % n
mathfont:new_type_a(111, 1044494, {50, 0, 0, 0})       % o
mathfont:new_type_a(112, 1044495, {200, 50, -50, 0})   % p
mathfont:new_type_a(113, 1044496, {50, 0, -50, 0})     % q
mathfont:new_type_a(114, 1044497, {100, 100, -50, 0})  % r
mathfont:new_type_a(115, 1044498, {50, 50, -50, 0})    % s
mathfont:new_type_a(116, 1044499, {50, 50, -50, 0})    % t
mathfont:new_type_a(117, 1044500, {0, 50, 0, 0})       % u
mathfont:new_type_a(118, 1044501, {0, 50, -50, 0})     % v
mathfont:new_type_a(119, 1044502, {0, 50, 0, 0})       % w
mathfont:new_type_a(120, 1044503, {50, 0, -50, 0})     % x
mathfont:new_type_a(121, 1044504, {150, 50, -50, 0})   % y
mathfont:new_type_a(122, 1044505, {100, 50, -100, 0})  % z
mathfont:new_type_a(305, 1044506, {100, 100, -150, 0}) % \imath
mathfont:new_type_a(567, 1044507, {700, 50, -150, 0})  % \jmath
mathfont:new_type_a(65, 1044512, {50, 0, 150, 0})      % A
mathfont:new_type_a(66, 1044513, {50, 0, 0, 0})        % B
mathfont:new_type_a(67, 1044514, {0, 0, 0, 0})         % C
mathfont:new_type_a(68, 1044515, {50, 0, -50, 0})      % D
mathfont:new_type_a(69, 1044516, {50, 0, 0, 0})        % E
mathfont:new_type_a(70, 1044517, {50, 0, 0, 0})        % F
mathfont:new_type_a(71, 1044518, {0, 0, 0, 0})         % G
mathfont:new_type_a(72, 1044519, {50, 0, -50, 0})      % H
mathfont:new_type_a(73, 1044520, {100, 0, 0, 0})       % I
mathfont:new_type_a(74, 1044521, {50, 0, 100, 0})      % J
mathfont:new_type_a(75, 1044522, {50, 0, 0, 0})        % K
mathfont:new_type_a(76, 1044523, {50, 0, -180, 0})     % L
mathfont:new_type_a(77, 1044524, {50, 0, -50, 0})      % M
mathfont:new_type_a(78, 1044525, {50, 0, -50, 0})      % N
mathfont:new_type_a(79, 1044526, {0, 0, 0, 0})         % O
mathfont:new_type_a(80, 1044527, {0, 0, -50, 0})       % P
mathfont:new_type_a(81, 1044528, {0, 50, 0, 0})        % Q
mathfont:new_type_a(82, 1044529, {50, 0, -50, 0})      % R
mathfont:new_type_a(83, 1044530, {0, 0, -50, 0})       % S
mathfont:new_type_a(84, 1044531, {0, 0, -50, 0})       % T
mathfont:new_type_a(85, 1044532, {0, 0, -50, 0})       % U
mathfont:new_type_a(86, 1044533, {0, 50, 0, 0})        % V
mathfont:new_type_a(87, 1044534, {0, 50, -50, 0})      % W
mathfont:new_type_a(88, 1044535, {50, 0, 0, 0})        % X
mathfont:new_type_a(89, 1044536, {0, 0, -50, 0})       % Y
mathfont:new_type_a(90, 1044537, {50, 0, -50, 0})      % Z
mathfont:new_type_u(945, {0, 0})    % \alpha
mathfont:new_type_u(946, {0, 0})    % \beta
mathfont:new_type_u(947, {-50, 0})  % \gamma
mathfont:new_type_u(948, {0, 0})    % \delta
mathfont:new_type_u(1013, {50, 0})  % \epsilon
mathfont:new_type_u(950, {0, 0})    % \zeta
mathfont:new_type_u(951, {-50, 0})  % \eta
mathfont:new_type_u(952, {0, 0})    % \theta
mathfont:new_type_u(953, {-50, 0})  % \iota
mathfont:new_type_u(954, {0, 0})    % \kappa
mathfont:new_type_u(955, {-150, 0}) % lambda
mathfont:new_type_u(956, {0, 0})    % \mu
mathfont:new_type_u(957, {-50, 0})  % \nu
mathfont:new_type_u(958, {0, 0})    % \xi
mathfont:new_type_u(959, {0, 0})    % \omicron
mathfont:new_type_u(960, {-100, 0}) % \pi
mathfont:new_type_u(961, {-50, 0})  % \rho
mathfont:new_type_u(963, {-100, 0}) % \sigma
mathfont:new_type_u(964, {-100, 0}) % \tau
mathfont:new_type_u(965, {-50, 0})  % \upsilon
mathfont:new_type_u(981, {0, 0})    % \phi
mathfont:new_type_u(967, {-50, 0})  % \chi
mathfont:new_type_u(968, {-50, 0})  % \psi
mathfont:new_type_u(969, {0, 0})    % \omega
mathfont:new_type_u(976, {0, 0})    % \varbeta
mathfont:new_type_u(949, {-50, 0})  % \varepsilon
mathfont:new_type_u(977, {50, 0})   % \vartheta
mathfont:new_type_u(1009, {-50, 0}) % \varrho
mathfont:new_type_u(962, {-50, 0})  % \varsigma
mathfont:new_type_u(966, {0, 0})    % \varphi
mathfont:new_type_u(913, {0, 0})    % \Alpha
mathfont:new_type_u(914, {0, 0})    % \Beta
mathfont:new_type_u(915, {0, 0})    % \Gamma
mathfont:new_type_u(916, {0, 0})    % \Delta
mathfont:new_type_u(917, {0, 0})    % \Epsilon
mathfont:new_type_u(918, {0, 0})    % \Zeta
mathfont:new_type_u(919, {0, 0})    % \Eta
mathfont:new_type_u(920, {0, 0})    % \Theta
mathfont:new_type_u(921, {0, 0})    % \Iota
mathfont:new_type_u(922, {0, 0})    % \Kappa
mathfont:new_type_u(923, {0, 0})    % \Lambda
mathfont:new_type_u(924, {0, 0})    % \Mu
mathfont:new_type_u(925, {0, 0})    % \Nu
mathfont:new_type_u(926, {0, 0})    % \Xi
mathfont:new_type_u(927, {0, 0})    % \Omicron
mathfont:new_type_u(928, {0, 0})    % \Pi
mathfont:new_type_u(929, {0, 0})    % \Rho
mathfont:new_type_u(931, {0, 0})    % \Sigma
mathfont:new_type_u(932, {0, 0})    % \Tau
mathfont:new_type_u(933, {0, 0})    % \Upsilon
mathfont:new_type_u(934, {0, 0})    % \Phi
mathfont:new_type_u(935, {0, 0})    % \Chi
mathfont:new_type_u(936, {0, 0})    % \Psi
mathfont:new_type_u(937, {0, 0})    % \Omega
mathfont:new_type_u(1012, {0, 0})   % \varTheta
local delim_glyphs = {40, % (
  41,      % )
  47,      % /
  91,      % [
  92,      % backslash
  93,      % ]
  123,     % {
  125,     % }
  8249,    % \lguil
  8250,    % \rguil
  171,     % \llguil
  187,     % \rrguil
  1044508, % \fakelangle
  1044509, % \fakerangle
  1044510, % \fakellangle
  1044511} % \fakerrangle
local big_op_glyphs = {33, % !
  35,      % #
  36,      % $
  37,      % %
  38,      % &
  43,      % +
  63,      % ?
  64,      % @
  167,     % \S
  215,     % \times
  247,     % \div
  8719,    % \prod
  8721,    % \sum
  8720,    % \coprod
  8897,    % \bigvee
  8896,    % \bigwedge
  8899,    % \bigcup
  8898,    % \bigcap
  10753,   % \bigoplus
  10754,   % \bigotimes
  10752,   % \bigodot
  10757,   % \bigsqcap
  10758}   % \bigsqcup
local vert_glyphs = {124, 8730} % | and \surd
local int_glyphs = {8747, % \intop
  8748,    % \iint
  8749,    % \iiint
  8750,    % \oint
  8751,    % \oiint
  8752}    % \oiiint
local smash = 1044544
local delim_scale = {}
local big_op_scale = {}
local vert_scale = {}
local int_scale = {}
for i = 1, 15, 1 do
  delim_scale[2*i-1] = 1000 + 100*i  % horizontal - delimiters
  delim_scale[2*i] = 1000 + 500*i    % vertical - delimiters
  vert_scale[2*i-1] = 1000
  vert_scale[2*i] = 1000 + 500*i     % vertical - vertically scaled chars
  big_op_scale[2*i-1] = 1000 + 100*i % horizontal - big operators
  big_op_scale[2*i] = 1000 + 100*i   % vertical - big operators
  int_scale[2*i-1] = 1000 + 500*i    % horizontal - integral sign
  int_scale[2*i] = 1000 + 1500*i     % vertical - integral sign
end
delim_scale[31] = 0
delim_scale[32] = 0
big_op_scale[31] = 0
big_op_scale[32] = 0
vert_scale[31] = 0
vert_scale[32] = 0
int_scale[31] = 0
int_scale[32] = 0
function mathfont:add_extensible_variants(first_smash, glyph_list, scale_list)
  local variants = (\string# scale_list - 2) / 2
  local curr_smash = first_smash
  for i = 1, \string# glyph_list, 1 do
    local curr_char = glyph_list[i]
    local curr_slots = {}
    for j = 1, variants, 1 do
      curr_slots[j] = curr_smash + j
    end
    self:new_type_e(curr_char, curr_smash, curr_slots, scale_list)
    smash = smash + variants + 1
    curr_smash = smash
  end
end
mathfont:add_extensible_variants(smash, delim_glyphs, delim_scale)
mathfont:add_extensible_variants(smash, big_op_glyphs, big_op_scale)
mathfont:add_extensible_variants(smash, vert_glyphs, vert_scale)
mathfont:add_extensible_variants(smash, int_glyphs, int_scale)
}
\fi % matches previous \ifM@adjust@font
\ifM@adjust@font
  \def\M@upper@set{%
    \edef\M@upper@font{M\M@uppershape\@tempa}
    \DeclareMathSymbol{A}{\mathalpha}{\M@upper@font}{1044512}
    \DeclareMathSymbol{B}{\mathalpha}{\M@upper@font}{1044513}
    \DeclareMathSymbol{C}{\mathalpha}{\M@upper@font}{1044514}
    \DeclareMathSymbol{D}{\mathalpha}{\M@upper@font}{1044515}
    \DeclareMathSymbol{E}{\mathalpha}{\M@upper@font}{1044516}
    \DeclareMathSymbol{F}{\mathalpha}{\M@upper@font}{1044517}
    \DeclareMathSymbol{G}{\mathalpha}{\M@upper@font}{1044518}
    \DeclareMathSymbol{H}{\mathalpha}{\M@upper@font}{1044519}
    \DeclareMathSymbol{I}{\mathalpha}{\M@upper@font}{1044520}
    \DeclareMathSymbol{J}{\mathalpha}{\M@upper@font}{1044521}
    \DeclareMathSymbol{K}{\mathalpha}{\M@upper@font}{1044522}
    \DeclareMathSymbol{L}{\mathalpha}{\M@upper@font}{1044523}
    \DeclareMathSymbol{M}{\mathalpha}{\M@upper@font}{1044524}
    \DeclareMathSymbol{N}{\mathalpha}{\M@upper@font}{1044525}
    \DeclareMathSymbol{O}{\mathalpha}{\M@upper@font}{1044526}
    \DeclareMathSymbol{P}{\mathalpha}{\M@upper@font}{1044527}
    \DeclareMathSymbol{Q}{\mathalpha}{\M@upper@font}{1044528}
    \DeclareMathSymbol{R}{\mathalpha}{\M@upper@font}{1044529}
    \DeclareMathSymbol{S}{\mathalpha}{\M@upper@font}{1044530}
    \DeclareMathSymbol{T}{\mathalpha}{\M@upper@font}{1044531}
    \DeclareMathSymbol{U}{\mathalpha}{\M@upper@font}{1044532}
    \DeclareMathSymbol{V}{\mathalpha}{\M@upper@font}{1044533}
    \DeclareMathSymbol{W}{\mathalpha}{\M@upper@font}{1044534}
    \DeclareMathSymbol{X}{\mathalpha}{\M@upper@font}{1044535}
    \DeclareMathSymbol{Y}{\mathalpha}{\M@upper@font}{1044536}
    \DeclareMathSymbol{Z}{\mathalpha}{\M@upper@font}{1044537}}
\else
  \def\M@upper@set{%
    \edef\M@upper@font{M\M@uppershape\@tempa}
    \DeclareMathSymbol{A}{\mathalpha}{\M@upper@font}{`A}
    \DeclareMathSymbol{B}{\mathalpha}{\M@upper@font}{`B}
    \DeclareMathSymbol{C}{\mathalpha}{\M@upper@font}{`C}
    \DeclareMathSymbol{D}{\mathalpha}{\M@upper@font}{`D}
    \DeclareMathSymbol{E}{\mathalpha}{\M@upper@font}{`E}
    \DeclareMathSymbol{F}{\mathalpha}{\M@upper@font}{`F}
    \DeclareMathSymbol{G}{\mathalpha}{\M@upper@font}{`G}
    \DeclareMathSymbol{H}{\mathalpha}{\M@upper@font}{`H}
    \DeclareMathSymbol{I}{\mathalpha}{\M@upper@font}{`I}
    \DeclareMathSymbol{J}{\mathalpha}{\M@upper@font}{`J}
    \DeclareMathSymbol{K}{\mathalpha}{\M@upper@font}{`K}
    \DeclareMathSymbol{L}{\mathalpha}{\M@upper@font}{`L}
    \DeclareMathSymbol{M}{\mathalpha}{\M@upper@font}{`M}
    \DeclareMathSymbol{N}{\mathalpha}{\M@upper@font}{`N}
    \DeclareMathSymbol{O}{\mathalpha}{\M@upper@font}{`O}
    \DeclareMathSymbol{P}{\mathalpha}{\M@upper@font}{`P}
    \DeclareMathSymbol{Q}{\mathalpha}{\M@upper@font}{`Q}
    \DeclareMathSymbol{R}{\mathalpha}{\M@upper@font}{`R}
    \DeclareMathSymbol{S}{\mathalpha}{\M@upper@font}{`S}
    \DeclareMathSymbol{T}{\mathalpha}{\M@upper@font}{`T}
    \DeclareMathSymbol{U}{\mathalpha}{\M@upper@font}{`U}
    \DeclareMathSymbol{V}{\mathalpha}{\M@upper@font}{`V}
    \DeclareMathSymbol{W}{\mathalpha}{\M@upper@font}{`W}
    \DeclareMathSymbol{X}{\mathalpha}{\M@upper@font}{`X}
    \DeclareMathSymbol{Y}{\mathalpha}{\M@upper@font}{`Y}
    \DeclareMathSymbol{Z}{\mathalpha}{\M@upper@font}{`Z}}
\fi
\ifM@adjust@font
  \def\M@lower@set{%
    \edef\M@lower@font{M\M@lowershape\@tempa}
    \DeclareMathSymbol{a}{\mathalpha}{\M@lower@font}{1044480}
    \DeclareMathSymbol{b}{\mathalpha}{\M@lower@font}{1044481}
    \DeclareMathSymbol{c}{\mathalpha}{\M@lower@font}{1044482}
    \DeclareMathSymbol{d}{\mathalpha}{\M@lower@font}{1044483}
    \DeclareMathSymbol{e}{\mathalpha}{\M@lower@font}{1044484}
    \DeclareMathSymbol{f}{\mathalpha}{\M@lower@font}{1044485}
    \DeclareMathSymbol{g}{\mathalpha}{\M@lower@font}{1044486}
    \DeclareMathSymbol{h}{\mathalpha}{\M@lower@font}{1044487}
    \DeclareMathSymbol{i}{\mathalpha}{\M@lower@font}{1044488}
    \DeclareMathSymbol{j}{\mathalpha}{\M@lower@font}{1044489}
    \DeclareMathSymbol{k}{\mathalpha}{\M@lower@font}{1044490}
    \DeclareMathSymbol{l}{\mathalpha}{\M@lower@font}{1044491}
    \DeclareMathSymbol{m}{\mathalpha}{\M@lower@font}{1044492}
    \DeclareMathSymbol{n}{\mathalpha}{\M@lower@font}{1044493}
    \DeclareMathSymbol{o}{\mathalpha}{\M@lower@font}{1044494}
    \DeclareMathSymbol{p}{\mathalpha}{\M@lower@font}{1044495}
    \DeclareMathSymbol{q}{\mathalpha}{\M@lower@font}{1044496}
    \DeclareMathSymbol{r}{\mathalpha}{\M@lower@font}{1044497}
    \DeclareMathSymbol{s}{\mathalpha}{\M@lower@font}{1044498}
    \DeclareMathSymbol{t}{\mathalpha}{\M@lower@font}{1044499}
    \DeclareMathSymbol{u}{\mathalpha}{\M@lower@font}{1044500}
    \DeclareMathSymbol{v}{\mathalpha}{\M@lower@font}{1044501}
    \DeclareMathSymbol{w}{\mathalpha}{\M@lower@font}{1044502}
    \DeclareMathSymbol{x}{\mathalpha}{\M@lower@font}{1044503}
    \DeclareMathSymbol{y}{\mathalpha}{\M@lower@font}{1044504}
    \DeclareMathSymbol{z}{\mathalpha}{\M@lower@font}{1044505}
    \DeclareMathSymbol{\imath}{\mathalpha}{\M@lower@font}{1044506}
    \DeclareMathSymbol{\jmath}{\mathalpha}{\M@lower@font}{1044507}
    \DeclareMathSymbol{\hbar}{\mathord}{\M@lower@font}{"127}}
\else
  \def\M@lower@set{%
    \edef\M@lower@font{M\M@lowershape\@tempa}
    \DeclareMathSymbol{a}{\mathalpha}{\M@lower@font}{`a}
    \DeclareMathSymbol{b}{\mathalpha}{\M@lower@font}{`b}
    \DeclareMathSymbol{c}{\mathalpha}{\M@lower@font}{`c}
    \DeclareMathSymbol{d}{\mathalpha}{\M@lower@font}{`d}
    \DeclareMathSymbol{e}{\mathalpha}{\M@lower@font}{`e}
    \DeclareMathSymbol{f}{\mathalpha}{\M@lower@font}{`f}
    \DeclareMathSymbol{g}{\mathalpha}{\M@lower@font}{`g}
    \DeclareMathSymbol{h}{\mathalpha}{\M@lower@font}{`h}
    \DeclareMathSymbol{i}{\mathalpha}{\M@lower@font}{`i}
    \DeclareMathSymbol{j}{\mathalpha}{\M@lower@font}{`j}
    \DeclareMathSymbol{k}{\mathalpha}{\M@lower@font}{`k}
    \DeclareMathSymbol{l}{\mathalpha}{\M@lower@font}{`l}
    \DeclareMathSymbol{m}{\mathalpha}{\M@lower@font}{`m}
    \DeclareMathSymbol{n}{\mathalpha}{\M@lower@font}{`n}
    \DeclareMathSymbol{o}{\mathalpha}{\M@lower@font}{`o}
    \DeclareMathSymbol{p}{\mathalpha}{\M@lower@font}{`p}
    \DeclareMathSymbol{q}{\mathalpha}{\M@lower@font}{`q}
    \DeclareMathSymbol{r}{\mathalpha}{\M@lower@font}{`r}
    \DeclareMathSymbol{s}{\mathalpha}{\M@lower@font}{`s}
    \DeclareMathSymbol{t}{\mathalpha}{\M@lower@font}{`t}
    \DeclareMathSymbol{u}{\mathalpha}{\M@lower@font}{`u}
    \DeclareMathSymbol{v}{\mathalpha}{\M@lower@font}{`v}
    \DeclareMathSymbol{w}{\mathalpha}{\M@lower@font}{`w}
    \DeclareMathSymbol{x}{\mathalpha}{\M@lower@font}{`x}
    \DeclareMathSymbol{y}{\mathalpha}{\M@lower@font}{`y}
    \DeclareMathSymbol{z}{\mathalpha}{\M@lower@font}{`z}
    \DeclareMathSymbol{\imath}{\mathalpha}{\M@lower@font}{"131}
    \DeclareMathSymbol{\jmath}{\mathalpha}{\M@lower@font}{"237}
    \DeclareMathSymbol{\hbar}{\mathord}{\M@lower@font}{"127}}
\fi
\def\M@diacritics@set{%
  \edef\M@diacritics@font{M\M@diacriticsshape\@tempa}
  \DeclareMathAccent{\acute}{\mathalpha}{\M@diacritics@font}{"B4}
  \DeclareMathAccent{\aacute}{\mathalpha}{\M@diacritics@font}{"2DD}
  \DeclareMathAccent{\dot}{\mathalpha}{\M@diacritics@font}{"2D9}
  \DeclareMathAccent{\ddot}{\mathalpha}{\M@diacritics@font}{"A8}
  \DeclareMathAccent{\grave}{\mathalpha}{\M@diacritics@font}{"60}
  \DeclareMathAccent{\breve}{\mathalpha}{\M@diacritics@font}{"2D8}
  \DeclareMathAccent{\hat}{\mathalpha}{\M@diacritics@font}{"2C6}
  \DeclareMathAccent{\check}{\mathalpha}{\M@diacritics@font}{"2C7}
  \DeclareMathAccent{\bar}{\mathalpha}{\M@diacritics@font}{"2C9}
  \DeclareMathAccent{\mathring}{\mathalpha}{\M@diacritics@font}{"2DA}
  \DeclareMathAccent{\tilde}{\mathalpha}{\M@diacritics@font}{"2DC}}
\def\M@greekupper@set{%
  \edef\M@greekupper@font{M\M@greekuppershape\@tempa}
  \DeclareMathSymbol{\Alpha}{\mathalpha}{\M@greekupper@font}{"391}
  \DeclareMathSymbol{\Beta}{\mathalpha}{\M@greekupper@font}{"392}
  \DeclareMathSymbol{\Gamma}{\mathalpha}{\M@greekupper@font}{"393}
  \DeclareMathSymbol{\Delta}{\mathalpha}{\M@greekupper@font}{"394}
  \DeclareMathSymbol{\Epsilon}{\mathalpha}{\M@greekupper@font}{"395}
  \DeclareMathSymbol{\Zeta}{\mathalpha}{\M@greekupper@font}{"396}
  \DeclareMathSymbol{\Eta}{\mathalpha}{\M@greekupper@font}{"397}
  \DeclareMathSymbol{\Theta}{\mathalpha}{\M@greekupper@font}{"398}
  \DeclareMathSymbol{\Iota}{\mathalpha}{\M@greekupper@font}{"399}
  \DeclareMathSymbol{\Kappa}{\mathalpha}{\M@greekupper@font}{"39A}
  \DeclareMathSymbol{\Lambda}{\mathalpha}{\M@greekupper@font}{"39B}
  \DeclareMathSymbol{\Mu}{\mathalpha}{\M@greekupper@font}{"39C}
  \DeclareMathSymbol{\Nu}{\mathalpha}{\M@greekupper@font}{"39D}
  \DeclareMathSymbol{\Xi}{\mathalpha}{\M@greekupper@font}{"39E}
  \DeclareMathSymbol{\Omicron}{\mathalpha}{\M@greekupper@font}{"39F}
  \DeclareMathSymbol{\Pi}{\mathalpha}{\M@greekupper@font}{"3A0}
  \DeclareMathSymbol{\Rho}{\mathalpha}{\M@greekupper@font}{"3A1}
  \DeclareMathSymbol{\Sigma}{\mathalpha}{\M@greekupper@font}{"3A3}
  \DeclareMathSymbol{\Tau}{\mathalpha}{\M@greekupper@font}{"3A4}
  \DeclareMathSymbol{\Upsilon}{\mathalpha}{\M@greekupper@font}{"3A5}
  \DeclareMathSymbol{\Phi}{\mathalpha}{\M@greekupper@font}{"3A6}
  \DeclareMathSymbol{\Chi}{\mathalpha}{\M@greekupper@font}{"3A7}
  \DeclareMathSymbol{\Psi}{\mathalpha}{\M@greekupper@font}{"3A8}
  \DeclareMathSymbol{\Omega}{\mathalpha}{\M@greekupper@font}{"3A9}
  \DeclareMathSymbol{\varTheta}{\mathalpha}{\M@greekupper@font}{"3F4}
  \ifM@adjust@font
    \ifM@symbols\else
      \DeclareMathSymbol{\increment}{\mathord}{\M@greekupper@font}{"2206}
      \DeclareMathSymbol{\nabla}{\mathord}{\M@greekupper@font}{"2207}
    \fi
  \else
    \ifM@symbols\else
      \DeclareMathSymbol{\increment}{\mathord}{\M@greekupper@font}{"2206}
    \fi
    \ifM@extsymbols\else
      \DeclareMathSymbol{\nabla}{\mathord}{\M@greekupper@font}{"2207}
    \fi
  \fi}
\def\M@greeklower@set{%
  \edef\M@greeklower@font{M\M@greeklowershape\@tempa}
  \DeclareMathSymbol{\alpha}{\mathalpha}{\M@greeklower@font}{"3B1}
  \DeclareMathSymbol{\beta}{\mathalpha}{\M@greeklower@font}{"3B2}
  \DeclareMathSymbol{\gamma}{\mathalpha}{\M@greeklower@font}{"3B3}
  \DeclareMathSymbol{\delta}{\mathalpha}{\M@greeklower@font}{"3B4}
  \DeclareMathSymbol{\epsilon}{\mathalpha}{\M@greeklower@font}{"3B5}
  \DeclareMathSymbol{\zeta}{\mathalpha}{\M@greeklower@font}{"3B6}
  \DeclareMathSymbol{\eta}{\mathalpha}{\M@greeklower@font}{"3B7}
  \DeclareMathSymbol{\theta}{\mathalpha}{\M@greeklower@font}{"3B8}
  \DeclareMathSymbol{\iota}{\mathalpha}{\M@greeklower@font}{"3B9}
  \DeclareMathSymbol{\kappa}{\mathalpha}{\M@greeklower@font}{"3BA}
  \DeclareMathSymbol{\lambda}{\mathalpha}{\M@greeklower@font}{"3BB}
  \DeclareMathSymbol{\mu}{\mathalpha}{\M@greeklower@font}{"3BC}
  \DeclareMathSymbol{\nu}{\mathalpha}{\M@greeklower@font}{"3BD}
  \DeclareMathSymbol{\xi}{\mathalpha}{\M@greeklower@font}{"3BE}
  \DeclareMathSymbol{\omicron}{\mathalpha}{\M@greeklower@font}{"3BF}
  \DeclareMathSymbol{\pi}{\mathalpha}{\M@greeklower@font}{"3C0}
  \DeclareMathSymbol{\rho}{\mathalpha}{\M@greeklower@font}{"3C1}
  \DeclareMathSymbol{\sigma}{\mathalpha}{\M@greeklower@font}{"3C3}
  \DeclareMathSymbol{\tau}{\mathalpha}{\M@greeklower@font}{"3C4}
  \DeclareMathSymbol{\upsilon}{\mathalpha}{\M@greeklower@font}{"3C5}
  \DeclareMathSymbol{\phi}{\mathalpha}{\M@greeklower@font}{"3C6}
  \DeclareMathSymbol{\chi}{\mathalpha}{\M@greeklower@font}{"3C7}
  \DeclareMathSymbol{\psi}{\mathalpha}{\M@greeklower@font}{"3C8}
  \DeclareMathSymbol{\omega}{\mathalpha}{\M@greeklower@font}{"3C9}
  \DeclareMathSymbol{\varbeta}{\mathalpha}{\M@greeklower@font}{"3D0}
  \DeclareMathSymbol{\varepsilon}{\mathalpha}{\M@greeklower@font}{"3F5}
  \DeclareMathSymbol{\varkappa}{\mathalpha}{\M@greeklower@font}{"3F0}
  \DeclareMathSymbol{\vartheta}{\mathalpha}{\M@greeklower@font}{"3D1}
  \DeclareMathSymbol{\varrho}{\mathalpha}{\M@greeklower@font}{"3F1}
  \DeclareMathSymbol{\varsigma}{\mathalpha}{\M@greeklower@font}{"3C2}
  \DeclareMathSymbol{\varphi}{\mathalpha}{\M@greeklower@font}{"3D5}}
\def\M@agreekupper@set{%
  \edef\M@agreekupper@font{M\M@agreekuppershape\@tempa}
  \DeclareMathSymbol{\Heta}{\mathalpha}{\M@agreekupper@font}{"370}
  \DeclareMathSymbol{\Sampi}{\mathalpha}{\M@agreekupper@font}{"3E0}
  \DeclareMathSymbol{\Digamma}{\mathalpha}{\M@agreekupper@font}{"3DC}
  \DeclareMathSymbol{\Koppa}{\mathalpha}{\M@agreekupper@font}{"3D8}
  \DeclareMathSymbol{\Stigma}{\mathalpha}{\M@agreekupper@font}{"3DA}
  \DeclareMathSymbol{\Sho}{\mathalpha}{\M@agreekupper@font}{"3F7}
  \DeclareMathSymbol{\San}{\mathalpha}{\M@agreekupper@font}{"3FA}
  \DeclareMathSymbol{\varSampi}{\mathalpha}{\M@agreekupper@font}{"372}
  \DeclareMathSymbol{\varDigamma}{\mathalpha}{\M@agreekupper@font}{"376}
  \DeclareMathSymbol{\varKoppa}{\mathalpha}{\M@agreekupper@font}{"3DE}}
\def\M@agreeklower@set{%
  \edef\M@agreeklower@font{M\M@agreeklowershape\@tempa}
  \DeclareMathSymbol{\heta}{\mathalpha}{\M@agreeklower@font}{"371}
  \DeclareMathSymbol{\sampi}{\mathalpha}{\M@agreeklower@font}{"3E1}
  \DeclareMathSymbol{\digamma}{\mathalpha}{\M@agreeklower@font}{"3DD}
  \DeclareMathSymbol{\koppa}{\mathalpha}{\M@agreeklower@font}{"3D9}
  \DeclareMathSymbol{\stigma}{\mathalpha}{\M@agreeklower@font}{"3DB}
  \DeclareMathSymbol{\sho}{\mathalpha}{\M@agreeklower@font}{"3F8}
  \DeclareMathSymbol{\san}{\mathalpha}{\M@agreeklower@font}{"3FB}
  \DeclareMathSymbol{\varsampi}{\mathalpha}{\M@agreeklower@font}{"373}
  \DeclareMathSymbol{\vardigamma}{\mathalpha}{\M@agreeklower@font}{"377}
  \DeclareMathSymbol{\varkoppa}{\mathalpha}{\M@agreeklower@font}{"3DF}}
\def\M@cyrillicupper@set{%
  \edef\M@cyrillicupper@font{M\M@cyrillicuppershape\@tempa}
  \DeclareMathSymbol{\cyrA}{\mathalpha}{\M@cyrillicupper@font}{"410}
  \DeclareMathSymbol{\cyrBe}{\mathalpha}{\M@cyrillicupper@font}{"411}
  \DeclareMathSymbol{\cyrVe}{\mathalpha}{\M@cyrillicupper@font}{"412}
  \DeclareMathSymbol{\cyrGhe}{\mathalpha}{\M@cyrillicupper@font}{"413}
  \DeclareMathSymbol{\cyrDe}{\mathalpha}{\M@cyrillicupper@font}{"414}
  \DeclareMathSymbol{\cyrIe}{\mathalpha}{\M@cyrillicupper@font}{"415}
  \DeclareMathSymbol{\cyrZhe}{\mathalpha}{\M@cyrillicupper@font}{"416}
  \DeclareMathSymbol{\cyrZe}{\mathalpha}{\M@cyrillicupper@font}{"417}
  \DeclareMathSymbol{\cyrI}{\mathalpha}{\M@cyrillicupper@font}{"418}
  \DeclareMathSymbol{\cyrKa}{\mathalpha}{\M@cyrillicupper@font}{"41A}
  \DeclareMathSymbol{\cyrEl}{\mathalpha}{\M@cyrillicupper@font}{"41B}
  \DeclareMathSymbol{\cyrEm}{\mathalpha}{\M@cyrillicupper@font}{"41C}
  \DeclareMathSymbol{\cyrEn}{\mathalpha}{\M@cyrillicupper@font}{"41D}
  \DeclareMathSymbol{\cyrO}{\mathalpha}{\M@cyrillicupper@font}{"41E}
  \DeclareMathSymbol{\cyrPe}{\mathalpha}{\M@cyrillicupper@font}{"41F}
  \DeclareMathSymbol{\cyrEr}{\mathalpha}{\M@cyrillicupper@font}{"420}
  \DeclareMathSymbol{\cyrEs}{\mathalpha}{\M@cyrillicupper@font}{"421}
  \DeclareMathSymbol{\cyrTe}{\mathalpha}{\M@cyrillicupper@font}{"422}
  \DeclareMathSymbol{\cyrU}{\mathalpha}{\M@cyrillicupper@font}{"423}
  \DeclareMathSymbol{\cyrEf}{\mathalpha}{\M@cyrillicupper@font}{"424}
  \DeclareMathSymbol{\cyrHa}{\mathalpha}{\M@cyrillicupper@font}{"425}
  \DeclareMathSymbol{\cyrTse}{\mathalpha}{\M@cyrillicupper@font}{"426}
  \DeclareMathSymbol{\cyrChe}{\mathalpha}{\M@cyrillicupper@font}{"427}
  \DeclareMathSymbol{\cyrSha}{\mathalpha}{\M@cyrillicupper@font}{"428}
  \DeclareMathSymbol{\cyrShcha}{\mathalpha}{\M@cyrillicupper@font}{"429}
  \DeclareMathSymbol{\cyrHard}{\mathalpha}{\M@cyrillicupper@font}{"42A}
  \DeclareMathSymbol{\cyrYeru}{\mathalpha}{\M@cyrillicupper@font}{"42B}
  \DeclareMathSymbol{\cyrSoft}{\mathalpha}{\M@cyrillicupper@font}{"42C}
  \DeclareMathSymbol{\cyrE}{\mathalpha}{\M@cyrillicupper@font}{"42D}
  \DeclareMathSymbol{\cyrYu}{\mathalpha}{\M@cyrillicupper@font}{"42E}
  \DeclareMathSymbol{\cyrYa}{\mathalpha}{\M@cyrillicupper@font}{"42F}
  \DeclareMathSymbol{\cyrvarI}{\mathalpha}{\M@cyrillicupper@font}{"419}}
\def\M@cyrilliclower@set{%
  \edef\M@cyrilliclower@font{M\M@cyrilliclowershape\@tempa}
  \DeclareMathSymbol{\cyra}{\mathalpha}{\M@cyrilliclower@font}{"430}
  \DeclareMathSymbol{\cyrbe}{\mathalpha}{\M@cyrilliclower@font}{"431}
  \DeclareMathSymbol{\cyrve}{\mathalpha}{\M@cyrilliclower@font}{"432}
  \DeclareMathSymbol{\cyrghe}{\mathalpha}{\M@cyrilliclower@font}{"433}
  \DeclareMathSymbol{\cyrde}{\mathalpha}{\M@cyrilliclower@font}{"434}
  \DeclareMathSymbol{\cyrie}{\mathalpha}{\M@cyrilliclower@font}{"435}
  \DeclareMathSymbol{\cyrzhe}{\mathalpha}{\M@cyrilliclower@font}{"436}
  \DeclareMathSymbol{\cyrze}{\mathalpha}{\M@cyrilliclower@font}{"437}
  \DeclareMathSymbol{\cyri}{\mathalpha}{\M@cyrilliclower@font}{"438}
  \DeclareMathSymbol{\cyrka}{\mathalpha}{\M@cyrilliclower@font}{"43A}
  \DeclareMathSymbol{\cyrel}{\mathalpha}{\M@cyrilliclower@font}{"43B}
  \DeclareMathSymbol{\cyrem}{\mathalpha}{\M@cyrilliclower@font}{"43C}
  \DeclareMathSymbol{\cyren}{\mathalpha}{\M@cyrilliclower@font}{"43D}
  \DeclareMathSymbol{\cyro}{\mathalpha}{\M@cyrilliclower@font}{"43E}
  \DeclareMathSymbol{\cyrpe}{\mathalpha}{\M@cyrilliclower@font}{"43F}
  \DeclareMathSymbol{\cyrer}{\mathalpha}{\M@cyrilliclower@font}{"440}
  \DeclareMathSymbol{\cyres}{\mathalpha}{\M@cyrilliclower@font}{"441}
  \DeclareMathSymbol{\cyrte}{\mathalpha}{\M@cyrilliclower@font}{"442}
  \DeclareMathSymbol{\cyru}{\mathalpha}{\M@cyrilliclower@font}{"443}
  \DeclareMathSymbol{\cyref}{\mathalpha}{\M@cyrilliclower@font}{"444}
  \DeclareMathSymbol{\cyrha}{\mathalpha}{\M@cyrilliclower@font}{"445}
  \DeclareMathSymbol{\cyrtse}{\mathalpha}{\M@cyrilliclower@font}{"446}
  \DeclareMathSymbol{\cyrche}{\mathalpha}{\M@cyrilliclower@font}{"447}
  \DeclareMathSymbol{\cyrsha}{\mathalpha}{\M@cyrilliclower@font}{"448}
  \DeclareMathSymbol{\cyrshcha}{\mathalpha}{\M@cyrilliclower@font}{"449}
  \DeclareMathSymbol{\cyrhard}{\mathalpha}{\M@cyrilliclower@font}{"44A}
  \DeclareMathSymbol{\cyryeru}{\mathalpha}{\M@cyrilliclower@font}{"44B}
  \DeclareMathSymbol{\cyrsoft}{\mathalpha}{\M@cyrilliclower@font}{"44C}
  \DeclareMathSymbol{\cyre}{\mathalpha}{\M@cyrilliclower@font}{"44D}
  \DeclareMathSymbol{\cyryu}{\mathalpha}{\M@cyrilliclower@font}{"44E}
  \DeclareMathSymbol{\cyrya}{\mathalpha}{\M@cyrilliclower@font}{"44F}
  \DeclareMathSymbol{\cyrvari}{\mathalpha}{\M@cyrilliclower@font}{"439}}
\def\M@hebrew@set{%
  \edef\M@hebrew@font{M\M@hebrewshape\@tempa}
  \DeclareMathSymbol{\aleph}{\mathalpha}{\M@hebrew@font}{"5D0}
  \DeclareMathSymbol{\beth}{\mathalpha}{\M@hebrew@font}{"5D1}
  \DeclareMathSymbol{\gimel}{\mathalpha}{\M@hebrew@font}{"5D2}
  \DeclareMathSymbol{\daleth}{\mathalpha}{\M@hebrew@font}{"5D3}
  \DeclareMathSymbol{\he}{\mathalpha}{\M@hebrew@font}{"5D4}
  \DeclareMathSymbol{\vav}{\mathalpha}{\M@hebrew@font}{"5D5}
  \DeclareMathSymbol{\zayin}{\mathalpha}{\M@hebrew@font}{"5D6}
  \DeclareMathSymbol{\het}{\mathalpha}{\M@hebrew@font}{"5D7}
  \DeclareMathSymbol{\tet}{\mathalpha}{\M@hebrew@font}{"5D8}
  \DeclareMathSymbol{\yod}{\mathalpha}{\M@hebrew@font}{"5D9}
  \DeclareMathSymbol{\kaf}{\mathalpha}{\M@hebrew@font}{"5DB}
  \DeclareMathSymbol{\lamed}{\mathalpha}{\M@hebrew@font}{"5DC}
  \DeclareMathSymbol{\mem}{\mathalpha}{\M@hebrew@font}{"5DE}
  \DeclareMathSymbol{\nun}{\mathalpha}{\M@hebrew@font}{"5E0}
  \DeclareMathSymbol{\samekh}{\mathalpha}{\M@hebrew@font}{"5E1}
  \DeclareMathSymbol{\ayin}{\mathalpha}{\M@hebrew@font}{"5E2}
  \DeclareMathSymbol{\pe}{\mathalpha}{\M@hebrew@font}{"5E4}
  \DeclareMathSymbol{\tsadi}{\mathalpha}{\M@hebrew@font}{"5E6}
  \DeclareMathSymbol{\qof}{\mathalpha}{\M@hebrew@font}{"5E7}
  \DeclareMathSymbol{\resh}{\mathalpha}{\M@hebrew@font}{"5E8}
  \DeclareMathSymbol{\shin}{\mathalpha}{\M@hebrew@font}{"5E9}
  \DeclareMathSymbol{\tav}{\mathalpha}{\M@hebrew@font}{"5EA}
  \DeclareMathSymbol{\varkaf}{\mathalpha}{\M@hebrew@font}{"5DA}
  \DeclareMathSymbol{\varmem}{\mathalpha}{\M@hebrew@font}{"5DD}
  \DeclareMathSymbol{\varnun}{\mathalpha}{\M@hebrew@font}{"5DF}
  \DeclareMathSymbol{\varpe}{\mathalpha}{\M@hebrew@font}{"5E3}
  \DeclareMathSymbol{\vartsadi}{\mathalpha}{\M@hebrew@font}{"5E5}}
\def\M@digits@set{%
  \edef\M@digits@font{M\M@digitsshape\@tempa}
  \DeclareMathSymbol{0}{\mathalpha}{\M@digits@font}{`0}
  \DeclareMathSymbol{1}{\mathalpha}{\M@digits@font}{`1}
  \DeclareMathSymbol{2}{\mathalpha}{\M@digits@font}{`2}
  \DeclareMathSymbol{3}{\mathalpha}{\M@digits@font}{`3}
  \DeclareMathSymbol{4}{\mathalpha}{\M@digits@font}{`4}
  \DeclareMathSymbol{5}{\mathalpha}{\M@digits@font}{`5}
  \DeclareMathSymbol{6}{\mathalpha}{\M@digits@font}{`6}
  \DeclareMathSymbol{7}{\mathalpha}{\M@digits@font}{`7}
  \DeclareMathSymbol{8}{\mathalpha}{\M@digits@font}{`8}
  \DeclareMathSymbol{9}{\mathalpha}{\M@digits@font}{`9}}
\def\M@operator@set{%
  \ifM@adjust@font
    \edef\M@operator@num{\number\csname symM\M@operatorshape\@tempa\endcsname}
    \protected\edef\M@operator@mathcodes{%
      \Umathcode`A=7+\M@operator@num+`A\relax
      \Umathcode`B=7+\M@operator@num+`B\relax
      \Umathcode`C=7+\M@operator@num+`C\relax
      \Umathcode`D=7+\M@operator@num+`D\relax
      \Umathcode`E=7+\M@operator@num+`E\relax
      \Umathcode`F=7+\M@operator@num+`F\relax
      \Umathcode`G=7+\M@operator@num+`G\relax
      \Umathcode`H=7+\M@operator@num+`H\relax
      \Umathcode`I=7+\M@operator@num+`I\relax
      \Umathcode`J=7+\M@operator@num+`J\relax
      \Umathcode`K=7+\M@operator@num+`K\relax
      \Umathcode`L=7+\M@operator@num+`L\relax
      \Umathcode`M=7+\M@operator@num+`M\relax
      \Umathcode`N=7+\M@operator@num+`N\relax
      \Umathcode`O=7+\M@operator@num+`O\relax
      \Umathcode`P=7+\M@operator@num+`P\relax
      \Umathcode`Q=7+\M@operator@num+`Q\relax
      \Umathcode`R=7+\M@operator@num+`R\relax
      \Umathcode`S=7+\M@operator@num+`S\relax
      \Umathcode`T=7+\M@operator@num+`T\relax
      \Umathcode`U=7+\M@operator@num+`U\relax
      \Umathcode`V=7+\M@operator@num+`V\relax
      \Umathcode`W=7+\M@operator@num+`W\relax
      \Umathcode`X=7+\M@operator@num+`X\relax
      \Umathcode`Y=7+\M@operator@num+`Y\relax
      \Umathcode`Z=7+\M@operator@num+`Z\relax
      \Umathcode`a=7+\M@operator@num+`a\relax
      \Umathcode`b=7+\M@operator@num+`b\relax
      \Umathcode`c=7+\M@operator@num+`c\relax
      \Umathcode`d=7+\M@operator@num+`d\relax
      \Umathcode`e=7+\M@operator@num+`e\relax
      \Umathcode`f=7+\M@operator@num+`f\relax
      \Umathcode`g=7+\M@operator@num+`g\relax
      \Umathcode`h=7+\M@operator@num+`h\relax
      \Umathcode`i=7+\M@operator@num+`i\relax
      \Umathcode`j=7+\M@operator@num+`j\relax
      \Umathcode`k=7+\M@operator@num+`k\relax
      \Umathcode`l=7+\M@operator@num+`l\relax
      \Umathcode`m=7+\M@operator@num+`m\relax
      \Umathcode`n=7+\M@operator@num+`n\relax
      \Umathcode`o=7+\M@operator@num+`o\relax
      \Umathcode`p=7+\M@operator@num+`p\relax
      \Umathcode`q=7+\M@operator@num+`q\relax
      \Umathcode`r=7+\M@operator@num+`r\relax
      \Umathcode`s=7+\M@operator@num+`s\relax
      \Umathcode`t=7+\M@operator@num+`t\relax
      \Umathcode`u=7+\M@operator@num+`u\relax
      \Umathcode`v=7+\M@operator@num+`v\relax
      \Umathcode`w=7+\M@operator@num+`w\relax
      \Umathcode`x=7+\M@operator@num+`x\relax
      \Umathcode`y=7+\M@operator@num+`y\relax
      \Umathcode`z=7+\M@operator@num+`z\relax
      \Umathchardef\imath=7+\M@operator@num+1044506\relax
      \Umathchardef\jmath=7+\M@operator@num+1044500\relax}
  \else
    \let\M@operator@mathcodes\@empty
  \fi
  \xdef\operator@font{\noexpand\mathgroup
      \csname symM\M@operatorshape\@tempa\endcsname\M@operator@mathcodes}}
\ifM@adjust@font
  \def\M@delimiters@set{%
    \edef\M@delimiters@font{M\M@delimitersshape\@tempa}
    \DeclareMathSymbol{(}{\mathopen}{\M@delimiters@font}{"28}
    \DeclareMathSymbol{)}{\mathclose}{\M@delimiters@font}{"29}
    \DeclareMathSymbol{[}{\mathopen}{\M@delimiters@font}{"5B}
    \DeclareMathSymbol{]}{\mathclose}{\M@delimiters@font}{"5D}
    \ifM@symbols\else
      \DeclareMathSymbol{|}{\mathord}{\M@delimiters@font}{"7C}
    \fi
    \DeclareMathSymbol{\leftbrace}{\mathopen}{\M@delimiters@font}{"7B}
    \DeclareMathSymbol{\rightbrace}{\mathclose}{\M@delimiters@font}{"7D}
    \global\Udelcode40=+\csname sym\M@delimiters@font\endcsname+40\relax % (
    \global\Udelcode41=+\csname sym\M@delimiters@font\endcsname+41\relax % )
    \global\Udelcode47=+\csname sym\M@delimiters@font\endcsname+47\relax % /
    \global\Udelcode91=+\csname sym\M@delimiters@font\endcsname+91\relax % [
    \global\Udelcode93=+\csname sym\M@delimiters@font\endcsname+93\relax % ]
    \global\Udelcode124=+\csname sym\M@delimiters@font\endcsname+124\relax % |
    \global\let\vert=|
    \protected\gdef\backslash{\ifmmode\mathbackslash\else\textbackslash\fi}
    \protected\xdef\mathbackslash{%
      \Udelimiter+2+\number\csname sym\M@delimiters@font\endcsname
        +92\relax} % backslash
    \protected\xdef\lbrace{%
      \Udelimiter+4+\number\csname sym\M@delimiters@font\endcsname
        +123\relax} % {
    \protected\xdef\rbrace{%
      \Udelimiter+5+\number\csname sym\M@delimiters@font\endcsname
        +125\relax} % }
    \protected\xdef\lguil{%
      \Udelimiter+4+\number\csname sym\M@delimiters@font\endcsname
        +8249\relax} % single left guilement
    \protected\xdef\rguil{%
      \Udelimiter+5+\number\csname sym\M@delimiters@font\endcsname
        +8250\relax} % single right guilement
    \protected\xdef\llguil{%
      \Udelimiter+4+\number\csname sym\M@delimiters@font\endcsname
        +171\relax} % double left guilement
    \protected\xdef\rrguil{%
      \Udelimiter+5+\number\csname sym\M@delimiters@font\endcsname
        +187\relax} % double right guilement
    \protected\xdef\fakelangle{%
      \Udelimiter+4+\number\csname sym\M@delimiters@font\endcsname
        +1044508\relax} % fake left angle
    \protected\xdef\fakerangle{%
      \Udelimiter+5+\number\csname sym\M@delimiters@font\endcsname
        +1044509\relax} % fake right angle
    \protected\xdef\fakellangle{%
      \Udelimiter+4+\number\csname sym\M@delimiters@font\endcsname
        +1044510\relax} % fake double left angle
    \protected\xdef\fakerrangle{%
      \Udelimiter+5+\number\csname sym\M@delimiters@font\endcsname
        +1044511\relax} % fake double right angle
    }
\else
  \def\M@delimiters@set{%
    \edef\M@delimiters@font{M\M@delimitersshape\@tempa}
    \DeclareMathSymbol{(}{\mathopen}{\M@delimiters@font}{"28}
    \DeclareMathSymbol{)}{\mathclose}{\M@delimiters@font}{"29}
    \DeclareMathSymbol{[}{\mathopen}{\M@delimiters@font}{"5B}
    \DeclareMathSymbol{]}{\mathclose}{\M@delimiters@font}{"5D}
    \DeclareMathSymbol{\lguil}{\mathopen}{\M@delimiters@font}{"2039}
    \DeclareMathSymbol{\rguil}{\mathclose}{\M@delimiters@font}{"203A}
    \DeclareMathSymbol{\llguil}{\mathopen}{\M@delimiters@font}{"AB}
    \DeclareMathSymbol{\rrguil}{\mathclose}{\M@delimiters@font}{"BB}
    \DeclareMathSymbol{\leftbrace}{\mathopen}{\M@delimiters@font}{"7B}
    \DeclareMathSymbol{\rightbrace}{\mathclose}{\M@delimiters@font}{"7D}}
\fi
\ifM@adjust@font
  \def\M@radical@set{%
    \edef\M@radical@font{M\M@radicalshape\@tempa}
    \DeclareMathSymbol{\surd}{\mathord}{\M@radical@font}{"221A}
    \xdef\@sqrts@gn##1{%
      \Uradical+\number\csname sym\M@radical@font\endcsname+8730\relax{##1}}
    \gdef\r@@t##1##2{%
      \setbox\z@\hbox{$\m@th##1\sqrtsign{##2}$}%
      \setbox\surdbox\hbox{$\m@th##1\@sqrts@gn{%
        \hbox{\vphantom{$\m@th##1##2$}}}$}
      \dimen@\ht\surdbox
      \advance\dimen@\dp\surdbox
      \dimen@=0.6\dimen@
      \advance\dimen@-\dp\surdbox
      \ifdim\wd\rootbox<0.6\wd\surdbox
        \kern0.6\wd\surdbox
      \else
        \kern\wd\rootbox
      \fi
      \raise\dimen@\hbox{\llap{\copy\rootbox}}
      \kern-0.6\wd\surdbox
      \box\z@}
    \gdef\sqrtsign##1{\@sqrts@gn{\mkern\radicandoffset##1}}}
\else
  \def\M@radical@set{%
    \edef\M@radical@font{M\M@radicalshape\@tempa}
    \DeclareMathSymbol{\surd}{\mathord}{\M@radical@font}{"221A}}
\fi
\def\M@bigops@set{%
  \edef\M@bigops@font{M\M@bigopsshape\@tempa}
  \let\sum\@undefined
  \let\prod\@undefined
  \DeclareMathSymbol{\sum}{\mathop}{\M@bigops@font}{"2211}
  \DeclareMathSymbol{\prod}{\mathop}{\M@bigops@font}{"220F}
  \DeclareMathSymbol{\intop}{\mathop}{\M@bigops@font}{"222B}}
\def\M@extbigops@set{%
  \edef\M@extbigops@font{M\M@extbigopsshape\@tempa}
  \let\coprod\@undefined
  \let\bigvee\@undefined
  \let\bigwedge\@undefined
  \let\bigcup\@undefined
  \let\bigcap\@undefined
  \let\bigoplus\@undefined
  \let\bigotimes\@undefined
  \let\bigodot\@undefined
  \let\bigsqcup\@undefined
  \DeclareMathSymbol{\coprod}{\mathop}{\M@extbigops@font}{"2210}
  \DeclareMathSymbol{\bigvee}{\mathop}{\M@extbigops@font}{"22C1}
  \DeclareMathSymbol{\bigwedge}{\mathop}{\M@extbigops@font}{"22C0}
  \DeclareMathSymbol{\bigcup}{\mathop}{\M@extbigops@font}{"22C3}
  \DeclareMathSymbol{\bigcap}{\mathop}{\M@extbigops@font}{"22C2}
  \DeclareMathSymbol{\iintop}{\mathop}{\M@extbigops@font}{"222C}
    \protected\gdef\iint{\iintop\nolimits}
  \DeclareMathSymbol{\iiintop}{\mathop}{\M@extbigops@font}{"222D}
    \protected\gdef\iiint{\iiintop\nolimits}
  \DeclareMathSymbol{\ointop}{\mathop}{\M@extbigops@font}{"222E}
    \protected\gdef\oint{\ointop\nolimits}
  \DeclareMathSymbol{\oiintop}{\mathop}{\M@extbigops@font}{"222F}
    \protected\gdef\oiint{\oiintop\nolimits}
  \DeclareMathSymbol{\oiiintop}{\mathop}{\M@extbigops@font}{"2230}
    \protected\gdef\oiiint{\oiiintop\nolimits}
  \DeclareMathSymbol{\bigoplus}{\mathop}{\M@extbigops@font}{"2A01}
  \DeclareMathSymbol{\bigotimes}{\mathop}{\M@extbigops@font}{"2A02}
  \DeclareMathSymbol{\bigodot}{\mathop}{\M@extbigops@font}{"2A00}
  \DeclareMathSymbol{\bigsqcap}{\mathop}{\M@extbigops@font}{"2A05}
  \DeclareMathSymbol{\bigsqcup}{\mathop}{\M@extbigops@font}{"2A06}}
\def\M@symbols@set{%
  \edef\M@symbols@font{M\M@symbolsshape\@tempa}
  \let\colon\@undefined
  \let\mathellipsis\@undefined
  \DeclareMathSymbol{.}{\mathord}{\M@symbols@font}{"2E}
  \DeclareMathSymbol{@}{\mathord}{\M@symbols@font}{"40}
  \DeclareMathSymbol{'}{\mathord}{\M@symbols@font}{"2032}
  \DeclareMathSymbol{\prime}{\mathord}{\M@symbols@font}{"2032}
  \DeclareMathSymbol{"}{\mathord}{\M@symbols@font}{"2033}
  \DeclareMathSymbol{\mathhash}{\mathord}{\M@symbols@font}{"23}
  \DeclareMathSymbol{\mathdollar}{\mathord}{\M@symbols@font}{"24}
  \DeclareMathSymbol{\mathpercent}{\mathord}{\M@symbols@font}{"25}
  \DeclareMathSymbol{\mathand}{\mathord}{\M@symbols@font}{"26}
  \DeclareMathSymbol{\mathparagraph}{\mathord}{\M@symbols@font}{"B6}
  \DeclareMathSymbol{\mathsection}{\mathord}{\M@symbols@font}{"A7}
  \DeclareMathSymbol{\mathsterling}{\mathord}{\M@symbols@font}{"A3}
  \DeclareMathSymbol{\neg}{\mathord}{\M@symbols@font}{"AC}
  \DeclareMathSymbol{|}{\mathord}{\M@symbols@font}{"7C}
  \DeclareMathSymbol{\infty}{\mathord}{\M@symbols@font}{"221E}
  \DeclareMathSymbol{\partial}{\mathord}{\M@symbols@font}{"2202}
  \DeclareMathSymbol{\degree}{\mathord}{\M@symbols@font}{"B0}
  \DeclareMathSymbol{\increment}{\mathord}{\M@symbols@font}{"2206}
  \DeclareMathSymbol{\comma}{\mathord}{\M@symbols@font}{"2C}
  \DeclareMathSymbol{+}{\mathbin}{\M@symbols@font}{"2B}
  \DeclareMathSymbol{-}{\mathbin}{\M@symbols@font}{"2212}
  \DeclareMathSymbol{*}{\mathbin}{\M@symbols@font}{"2A}
  \DeclareMathSymbol{\times}{\mathbin}{\M@symbols@font}{"D7}
  \DeclareMathSymbol{/}{\mathord}{\M@symbols@font}{"2F}
  \DeclareMathSymbol{\fractionslash}{\mathord}{\M@symbols@font}{"2215}
  \DeclareMathSymbol{\div}{\mathbin}{\M@symbols@font}{"F7}
  \DeclareMathSymbol{\pm}{\mathbin}{\M@symbols@font}{"B1}
  \DeclareMathSymbol{\bullet}{\mathbin}{\M@symbols@font}{"2022}
  \DeclareMathSymbol{\dagger}{\mathbin}{\M@symbols@font}{"2020}
  \DeclareMathSymbol{\ddagger}{\mathbin}{\M@symbols@font}{"2021}
  \DeclareMathSymbol{\cdot}{\mathbin}{\M@symbols@font}{"2219}
  \DeclareMathSymbol{\setminus}{\mathbin}{\M@symbols@font}{"5C}
  \DeclareMathSymbol{=}{\mathrel}{\M@symbols@font}{"3D}
  \DeclareMathSymbol{<}{\mathrel}{\M@symbols@font}{"3C}
  \DeclareMathSymbol{>}{\mathrel}{\M@symbols@font}{"3E}
  \DeclareMathSymbol{\leq}{\mathrel}{\M@symbols@font}{"2264}
  \DeclareMathSymbol{\geq}{\mathrel}{\M@symbols@font}{"2265}
  \DeclareMathSymbol{\sim}{\mathrel}{\M@symbols@font}{"7E}
  \DeclareMathSymbol{\approx}{\mathrel}{\M@symbols@font}{"2248}
  \DeclareMathSymbol{\equiv}{\mathrel}{\M@symbols@font}{"2261}
  \DeclareMathSymbol{\mid}{\mathrel}{\M@symbols@font}{"7C}
  \DeclareMathSymbol{\parallel}{\mathrel}{\M@symbols@font}{"2016}
  \DeclareMathSymbol{:}{\mathrel}{\M@symbols@font}{"3A}
  \DeclareMathSymbol{?}{\mathclose}{\M@symbols@font}{"3F}
  \DeclareMathSymbol{!}{\mathclose}{\M@symbols@font}{"21}
  \DeclareMathSymbol{,}{\mathpunct}{\M@symbols@font}{"2C}
  \DeclareMathSymbol{;}{\mathpunct}{\M@symbols@font}{"3B}
  \DeclareMathSymbol{\colon}{\mathord}{\M@symbols@font}{"3A}
  \DeclareMathSymbol{\mathellipsis}{\mathinner}{\M@symbols@font}{"2026}
  \protected\gdef\#{\ifmmode\mathhash\else\char"23\relax\fi}
  \protected\gdef\%{\ifmmode\mathpercent\else\char"25\relax\fi}
  \protected\gdef\&{\ifmmode\mathand\else\char"26\relax\fi}
  \DeclareMathSymbol{\@relbar}{\mathbin}{symbols}{"00}
  \DeclareMathSymbol{\@Relbar}{\mathrel}{operators}{"3D}
  \DeclareMathSymbol{\@verticalbar}{\mathord}{symbols}{"6A}
  \ifM@extsymbols\else
    \protected\gdef\simeq{\mathrel{\mathpalette\stack@flatrel{{-}{\sim}}}}
    \protected\gdef\cong{\mathrel{\mathpalette\stack@flatrel{{=}{\sim}}}}
  \fi
  \protected\gdef\relbar{\mathrel{\smash\@relbar}}
  \protected\gdef\Relbar{\mathrel{\@Relbar}}
  \protected\gdef\models{\mathrel{\@verticalbar}\joinrel\Relbar}
  \ifM@adjust@font
    \DeclareMathSymbol{\bigat}{\mathop}{\M@symbols@font}{"40}
    \DeclareMathSymbol{\bighash}{\mathop}{\M@symbols@font}{"23}
    \DeclareMathSymbol{\bigdollar}{\mathop}{\M@symbols@font}{"24}
    \DeclareMathSymbol{\bigpercent}{\mathop}{\M@symbols@font}{"25}
    \DeclareMathSymbol{\bigand}{\mathop}{\M@symbols@font}{"26}
    \DeclareMathSymbol{\bigplus}{\mathop}{\M@symbols@font}{"2B}
    \DeclareMathSymbol{\bigp}{\mathop}{\M@symbols@font}{"21}
    \DeclareMathSymbol{\bigq}{\mathop}{\M@symbols@font}{"3F}
    \DeclareMathSymbol{\bigS}{\mathop}{\M@symbols@font}{"A7}
    \DeclareMathSymbol{\bigtimes}{\mathop}{\M@symbols@font}{"D7}
    \DeclareMathSymbol{\bigdiv}{\mathop}{\M@symbols@font}{"F7}
    \DeclareMathSymbol{\nabla}{\mathord}{\M@symbols@font}{"2207}
  \fi}
\def\M@extsymbols@set{%
  \edef\M@extsymbols@font{M\M@extsymbolsshape\@tempa}
  \let\angle\@undefined
  \let\simeq\@undefined
  \let\sqsubset\@undefined
  \let\sqsupset\@undefined
  \let\bowtie\@undefined
  \let\doteq\@undefined
  \let\neq\@undefined
  \DeclareMathSymbol{\wp}{\mathord}{\M@extsymbols@font}{"2118}
  \DeclareMathSymbol{\Re}{\mathord}{\M@extsymbols@font}{"211C}
  \DeclareMathSymbol{\Im}{\mathord}{\M@extsymbols@font}{"2111}
  \DeclareMathSymbol{\ell}{\mathord}{\M@extsymbols@font}{"2113}
  \DeclareMathSymbol{\forall}{\mathord}{\M@extsymbols@font}{"2200}
  \DeclareMathSymbol{\exists}{\mathord}{\M@extsymbols@font}{"2203}
  \DeclareMathSymbol{\emptyset}{\mathord}{\M@extsymbols@font}{"2205}
  \DeclareMathSymbol{\in}{\mathord}{\M@extsymbols@font}{"2208}
  \DeclareMathSymbol{\ni}{\mathord}{\M@extsymbols@font}{"220B}
  \DeclareMathSymbol{\mp}{\mathord}{\M@extsymbols@font}{"2213}
  \DeclareMathSymbol{\angle}{\mathord}{\M@extsymbols@font}{"2220}
  \DeclareMathSymbol{\top}{\mathord}{\M@extsymbols@font}{"22A4}
  \DeclareMathSymbol{\bot}{\mathord}{\M@extsymbols@font}{"22A5}
  \DeclareMathSymbol{\vdash}{\mathord}{\M@extsymbols@font}{"22A2}
  \DeclareMathSymbol{\dashv}{\mathord}{\M@extsymbols@font}{"22A3}
  \DeclareMathSymbol{\flat}{\mathord}{\M@extsymbols@font}{"266D}
  \DeclareMathSymbol{\natural}{\mathord}{\M@extsymbols@font}{"266E}
  \DeclareMathSymbol{\sharp}{\mathord}{\M@extsymbols@font}{"266F}
  \DeclareMathSymbol{\fflat}{\mathord}{\M@extsymbols@font}{"1D12B}
  \DeclareMathSymbol{\ssharp}{\mathord}{\M@extsymbols@font}{"1D12A}
  \DeclareMathSymbol{\bclubsuit}{\mathord}{\M@extsymbols@font}{"2663}
  \DeclareMathSymbol{\bdiamondsuit}{\mathord}{\M@extsymbols@font}{"2666}
  \DeclareMathSymbol{\bheartsuit}{\mathord}{\M@extsymbols@font}{"2665}
  \DeclareMathSymbol{\bspadesuit}{\mathord}{\M@extsymbols@font}{"2660}
  \DeclareMathSymbol{\wclubsuit}{\mathord}{\M@extsymbols@font}{"2667}
  \DeclareMathSymbol{\wdiamondsuit}{\mathord}{\M@extsymbols@font}{"2662}
  \DeclareMathSymbol{\wheartsuit}{\mathord}{\M@extsymbols@font}{"2661}
  \DeclareMathSymbol{\wspadesuit}{\mathord}{\M@extsymbols@font}{"2664}
    \global\let\spadesuit\bspadesuit
    \global\let\heartsuit\wheartsuit
    \global\let\diamondsuit\wdiamondsuit
    \global\let\clubsuit\bclubsuit
  \DeclareMathSymbol{\wedge}{\mathbin}{\M@extsymbols@font}{"2227}
  \DeclareMathSymbol{\vee}{\mathbin}{\M@extsymbols@font}{"2228}
  \DeclareMathSymbol{\cap}{\mathord}{\M@extsymbols@font}{"2229}
  \DeclareMathSymbol{\cup}{\mathbin}{\M@extsymbols@font}{"222A}
  \DeclareMathSymbol{\sqcap}{\mathbin}{\M@extsymbols@font}{"2293}
  \DeclareMathSymbol{\sqcup}{\mathbin}{\M@extsymbols@font}{"2294}
  \DeclareMathSymbol{\amalg}{\mathbin}{\M@extsymbols@font}{"2A3F}
  \DeclareMathSymbol{\wr}{\mathbin}{\M@extsymbols@font}{"2240}
  \DeclareMathSymbol{\ast}{\mathbin}{\M@extsymbols@font}{"2217}
  \DeclareMathSymbol{\star}{\mathbin}{\M@extsymbols@font}{"22C6}
  \DeclareMathSymbol{\diamond}{\mathbin}{\M@extsymbols@font}{"22C4}
  \DeclareMathSymbol{\varcdot}{\mathbin}{\M@extsymbols@font}{"22C5}
  \DeclareMathSymbol{\varsetminus}{\mathbin}{\M@extsymbols@font}{"2216}
  \DeclareMathSymbol{\oplus}{\mathbin}{\M@extsymbols@font}{"2295}
  \DeclareMathSymbol{\otimes}{\mathbin}{\M@extsymbols@font}{"2297}
  \DeclareMathSymbol{\ominus}{\mathbin}{\M@extsymbols@font}{"2296}
  \DeclareMathSymbol{\odiv}{\mathbin}{\M@extsymbols@font}{"2A38}
  \DeclareMathSymbol{\oslash}{\mathbin}{\M@extsymbols@font}{"2298}
  \DeclareMathSymbol{\odot}{\mathbin}{\M@extsymbols@font}{"2299}
  \DeclareMathSymbol{\sqplus}{\mathbin}{\M@extsymbols@font}{"229E}
  \DeclareMathSymbol{\sqtimes}{\mathbin}{\M@extsymbols@font}{"22A0}
  \DeclareMathSymbol{\sqminus}{\mathbin}{\M@extsymbols@font}{"229F}
  \DeclareMathSymbol{\sqdot}{\mathbin}{\M@extsymbols@font}{"22A1}
  \DeclareMathSymbol{\in}{\mathrel}{\M@extsymbols@font}{"2208}
  \DeclareMathSymbol{\ni}{\mathrel}{\M@extsymbols@font}{"220B}
  \DeclareMathSymbol{\subset}{\mathrel}{\M@extsymbols@font}{"2282}
  \DeclareMathSymbol{\supset}{\mathrel}{\M@extsymbols@font}{"2283}
  \DeclareMathSymbol{\subseteq}{\mathrel}{\M@extsymbols@font}{"2286}
  \DeclareMathSymbol{\supseteq}{\mathrel}{\M@extsymbols@font}{"2287}
  \DeclareMathSymbol{\sqsubset}{\mathrel}{\M@extsymbols@font}{"228F}
  \DeclareMathSymbol{\sqsupset}{\mathrel}{\M@extsymbols@font}{"2290}
  \DeclareMathSymbol{\sqsubseteq}{\mathrel}{\M@extsymbols@font}{"2291}
  \DeclareMathSymbol{\sqsupseteq}{\mathrel}{\M@extsymbols@font}{"2292}
  \DeclareMathSymbol{\triangleleft}{\mathrel}{\M@extsymbols@font}{"22B2}
  \DeclareMathSymbol{\triangleright}{\mathrel}{\M@extsymbols@font}{"22B3}
  \DeclareMathSymbol{\trianglelefteq}{\mathrel}{\M@extsymbols@font}{"22B4}
  \DeclareMathSymbol{\trianglerighteq}{\mathrel}{\M@extsymbols@font}{"22B5}
  \DeclareMathSymbol{\propto}{\mathrel}{\M@extsymbols@font}{"221D}
  \DeclareMathSymbol{\bowtie}{\mathrel}{\M@extsymbols@font}{"22C8}
  \DeclareMathSymbol{\hourglass}{\mathrel}{\M@extsymbols@font}{"29D6}
  \DeclareMathSymbol{\therefore}{\mathrel}{\M@extsymbols@font}{"2234}
  \DeclareMathSymbol{\because}{\mathrel}{\M@extsymbols@font}{"2235}
  \DeclareMathSymbol{\ratio}{\mathrel}{\M@extsymbols@font}{"2236}
  \DeclareMathSymbol{\proportion}{\mathrel}{\M@extsymbols@font}{"2237}
  \DeclareMathSymbol{\ll}{\mathrel}{\M@extsymbols@font}{"226A}
  \DeclareMathSymbol{\gg}{\mathrel}{\M@extsymbols@font}{"226B}
  \DeclareMathSymbol{\lll}{\mathrel}{\M@extsymbols@font}{"22D8}
  \DeclareMathSymbol{\ggg}{\mathrel}{\M@extsymbols@font}{"22D9}
  \DeclareMathSymbol{\leqq}{\mathrel}{\M@extsymbols@font}{"2266}
  \DeclareMathSymbol{\geqq}{\mathrel}{\M@extsymbols@font}{"2267}
  \DeclareMathSymbol{\lapprox}{\mathrel}{\M@extsymbols@font}{"2A85}
  \DeclareMathSymbol{\gapprox}{\mathrel}{\M@extsymbols@font}{"2A86}
  \DeclareMathSymbol{\simeq}{\mathrel}{\M@extsymbols@font}{"2243}
  \DeclareMathSymbol{\eqsim}{\mathrel}{\M@extsymbols@font}{"2242}
  \DeclareMathSymbol{\simeqq}{\mathrel}{\M@extsymbols@font}{"2245}
    \global\let\cong\simeqq
  \DeclareMathSymbol{\approxeq}{\mathrel}{\M@extsymbols@font}{"224A}
  \DeclareMathSymbol{\sssim}{\mathrel}{\M@extsymbols@font}{"224B}
  \DeclareMathSymbol{\seq}{\mathrel}{\M@extsymbols@font}{"224C}
  \DeclareMathSymbol{\doteq}{\mathrel}{\M@extsymbols@font}{"2250}
  \DeclareMathSymbol{\coloneq}{\mathrel}{\M@extsymbols@font}{"2254}
  \DeclareMathSymbol{\eqcolon}{\mathrel}{\M@extsymbols@font}{"2255}
  \DeclareMathSymbol{\ringeq}{\mathrel}{\M@extsymbols@font}{"2257}
  \DeclareMathSymbol{\arceq}{\mathrel}{\M@extsymbols@font}{"2258}
  \DeclareMathSymbol{\wedgeeq}{\mathrel}{\M@extsymbols@font}{"2259}
  \DeclareMathSymbol{\veeeq}{\mathrel}{\M@extsymbols@font}{"225A}
  \DeclareMathSymbol{\stareq}{\mathrel}{\M@extsymbols@font}{"225B}
  \DeclareMathSymbol{\triangleeq}{\mathrel}{\M@extsymbols@font}{"225C}
  \DeclareMathSymbol{\defeq}{\mathrel}{\M@extsymbols@font}{"225D}
  \DeclareMathSymbol{\qeq}{\mathrel}{\M@extsymbols@font}{"225F}
  \DeclareMathSymbol{\lsim}{\mathrel}{\M@extsymbols@font}{"2272}
  \DeclareMathSymbol{\gsim}{\mathrel}{\M@extsymbols@font}{"2273}
  \DeclareMathSymbol{\prec}{\mathrel}{\M@extsymbols@font}{"227A}
  \DeclareMathSymbol{\succ}{\mathrel}{\M@extsymbols@font}{"227B}
  \DeclareMathSymbol{\preceq}{\mathrel}{\M@extsymbols@font}{"227C}
  \DeclareMathSymbol{\succeq}{\mathrel}{\M@extsymbols@font}{"227D}
  \DeclareMathSymbol{\preceqq}{\mathrel}{\M@extsymbols@font}{"2AB3}
  \DeclareMathSymbol{\succeqq}{\mathrel}{\M@extsymbols@font}{"2AB4}
  \DeclareMathSymbol{\precsim}{\mathrel}{\M@extsymbols@font}{"227E}
  \DeclareMathSymbol{\succsim}{\mathrel}{\M@extsymbols@font}{"227F}
  \DeclareMathSymbol{\precapprox}{\mathrel}{\M@extsymbols@font}{"2AB7}
  \DeclareMathSymbol{\succapprox}{\mathrel}{\M@extsymbols@font}{"2AB8}
  \DeclareMathSymbol{\precprec}{\mathrel}{\M@extsymbols@font}{"2ABB}
  \DeclareMathSymbol{\succsucc}{\mathrel}{\M@extsymbols@font}{"2ABC}
  \DeclareMathSymbol{\asymp}{\mathrel}{\M@extsymbols@font}{"224D}
  \DeclareMathSymbol{\nin}{\mathrel}{\M@extsymbols@font}{"2209}
  \DeclareMathSymbol{\nni}{\mathrel}{\M@extsymbols@font}{"220C}
  \DeclareMathSymbol{\nsubset}{\mathrel}{\M@extsymbols@font}{"2284}
  \DeclareMathSymbol{\nsupset}{\mathrel}{\M@extsymbols@font}{"2285}
  \DeclareMathSymbol{\nsubseteq}{\mathrel}{\M@extsymbols@font}{"2288}
  \DeclareMathSymbol{\nsupseteq}{\mathrel}{\M@extsymbols@font}{"2289}
  \DeclareMathSymbol{\subsetneq}{\mathrel}{\M@extsymbols@font}{"228A}
  \DeclareMathSymbol{\supsetneq}{\mathrel}{\M@extsymbols@font}{"228B}
  \DeclareMathSymbol{\nsqsubseteq}{\mathrel}{\M@extsymbols@font}{"22E2}
  \DeclareMathSymbol{\nsqsupseteq}{\mathrel}{\M@extsymbols@font}{"22E3}
  \DeclareMathSymbol{\sqsubsetneq}{\mathrel}{\M@extsymbols@font}{"22E4}
  \DeclareMathSymbol{\sqsupsetneq}{\mathrel}{\M@extsymbols@font}{"22E5}
  \DeclareMathSymbol{\neq}{\mathrel}{\M@extsymbols@font}{"2260}
  \DeclareMathSymbol{\nl}{\mathrel}{\M@extsymbols@font}{"226E}
  \DeclareMathSymbol{\nleq}{\mathrel}{\M@extsymbols@font}{"2270}
  \DeclareMathSymbol{\ngeq}{\mathrel}{\M@extsymbols@font}{"2271}
  \DeclareMathSymbol{\lneq}{\mathrel}{\M@extsymbols@font}{"2A87}
  \DeclareMathSymbol{\gneq}{\mathrel}{\M@extsymbols@font}{"2A88}
  \DeclareMathSymbol{\lneqq}{\mathrel}{\M@extsymbols@font}{"2268}
  \DeclareMathSymbol{\gneqq}{\mathrel}{\M@extsymbols@font}{"2269}
  \DeclareMathSymbol{\ntriangleleft}{\mathrel}{\M@extsymbols@font}{"22EA}
  \DeclareMathSymbol{\ntriangleright}{\mathrel}{\M@extsymbols@font}{"22EB}
  \DeclareMathSymbol{\ntrianglelefteq}{\mathrel}{\M@extsymbols@font}{"22EC}
  \DeclareMathSymbol{\ntrianglerighteq}{\mathrel}{\M@extsymbols@font}{"22ED}
  \DeclareMathSymbol{\nsim}{\mathrel}{\M@extsymbols@font}{"2241}
  \DeclareMathSymbol{\napprox}{\mathrel}{\M@extsymbols@font}{"2249}
  \DeclareMathSymbol{\nsimeq}{\mathrel}{\M@extsymbols@font}{"2244}
  \DeclareMathSymbol{\nsimeqq}{\mathrel}{\M@extsymbols@font}{"2247}
  \DeclareMathSymbol{\simneqq}{\mathrel}{\M@extsymbols@font}{"2246}
  \DeclareMathSymbol{\nlsim}{\mathrel}{\M@extsymbols@font}{"2274}
  \DeclareMathSymbol{\ngsim}{\mathrel}{\M@extsymbols@font}{"2275}
  \DeclareMathSymbol{\lnsim}{\mathrel}{\M@extsymbols@font}{"22E6}
  \DeclareMathSymbol{\gnsim}{\mathrel}{\M@extsymbols@font}{"22E7}
  \DeclareMathSymbol{\lnapprox}{\mathrel}{\M@extsymbols@font}{"2A89}
  \DeclareMathSymbol{\gnapprox}{\mathrel}{\M@extsymbols@font}{"2A8A}
  \DeclareMathSymbol{\nprec}{\mathrel}{\M@extsymbols@font}{"2280}
  \DeclareMathSymbol{\nsucc}{\mathrel}{\M@extsymbols@font}{"2281}
  \DeclareMathSymbol{\npreceq}{\mathrel}{\M@extsymbols@font}{"22E0}
  \DeclareMathSymbol{\nsucceq}{\mathrel}{\M@extsymbols@font}{"22E1}
  \DeclareMathSymbol{\precneq}{\mathrel}{\M@extsymbols@font}{"2AB1}
  \DeclareMathSymbol{\succneq}{\mathrel}{\M@extsymbols@font}{"2AB2}
  \DeclareMathSymbol{\precneqq}{\mathrel}{\M@extsymbols@font}{"2AB5}
  \DeclareMathSymbol{\succneqq}{\mathrel}{\M@extsymbols@font}{"2AB6}
  \DeclareMathSymbol{\precnsim}{\mathrel}{\M@extsymbols@font}{"22E8}
  \DeclareMathSymbol{\succnsim}{\mathrel}{\M@extsymbols@font}{"22E9}
  \DeclareMathSymbol{\precnapprox}{\mathrel}{\M@extsymbols@font}{"2AB9}
  \DeclareMathSymbol{\succnapprox}{\mathrel}{\M@extsymbols@font}{"2ABA}
  \DeclareMathSymbol{\nequiv}{\mathrel}{\M@extsymbols@font}{"2262}
  \global\let\textng\ng
  \let\ng\@undefined
  \DeclareMathSymbol{\mathng}{\mathrel}{\M@extsymbols@font}{"226F}
  \protected\gdef\ng{\ifmmode\mathng\else\textng\fi}
  \ifM@adjust@font\else
    \DeclareMathSymbol{\nabla}{\mathord}{\M@extsymbols@font}{"2207}
  \fi}
\def\M@arrows@set{%
  \edef\M@arrows@font{M\M@arrowsshape\@tempa}
  \let\uparrow\@undefined
  \let\Uparrow\@undefined
  \let\downarrow\@undefined
  \let\Downarrow\@undefined
  \let\updownarrow\@undefined
  \let\Updownarrow\@undefined
  \let\longrightarrow\@undefined
  \let\longleftarrow\@undefined
  \let\longleftrightarrow\@undefined
  \let\hookrightarrow\@undefined
  \let\hookleftarrow\@undefined
  \let\Longrightarrow\@undefined
  \let\Longleftarrow\@undefined
  \let\Longleftrightarrow\@undefined
  \let\rightleftharpoons\@undefined
  \DeclareMathSymbol{\rightarrow}{\mathrel}{\M@arrows@font}{"2192}
    \global\let\to\rightarrow
  \DeclareMathSymbol{\nrightarrow}{\mathrel}{\M@arrows@font}{"219B}
  \DeclareMathSymbol{\Rightarrow}{\mathrel}{\M@arrows@font}{"21D2}
  \DeclareMathSymbol{\nRightarrow}{\mathrel}{\M@arrows@font}{"21CF}
  \DeclareMathSymbol{\Rrightarrow}{\mathrel}{\M@arrows@font}{"21DB}
  \DeclareMathSymbol{\longrightarrow}{\mathrel}{\M@arrows@font}{"27F6}
  \DeclareMathSymbol{\Longrightarrow}{\mathrel}{\M@arrows@font}{"27F9}
  \DeclareMathSymbol{\rightbararrow}{\mathrel}{\M@arrows@font}{"21A6}
    \global\let\mapsto\rightbararrow
  \DeclareMathSymbol{\Rightbararrow}{\mathrel}{\M@arrows@font}{"2907}
  \DeclareMathSymbol{\longrightbararrow}{\mathrel}{\M@arrows@font}{"27FC}
    \global\let\longmapsto\longrightbararrow
  \DeclareMathSymbol{\Longrightbararrow}{\mathrel}{\M@arrows@font}{"27FE}
  \DeclareMathSymbol{\hookrightarrow}{\mathrel}{\M@arrows@font}{"21AA}
  \DeclareMathSymbol{\rightdasharrow}{\mathrel}{\M@arrows@font}{"21E2}
  \DeclareMathSymbol{\rightharpoonup}{\mathrel}{\M@arrows@font}{"21C0}
  \DeclareMathSymbol{\rightharpoondown}{\mathrel}{\M@arrows@font}{"21C1}
  \DeclareMathSymbol{\rightarrowtail}{\mathrel}{\M@arrows@font}{"21A3}
  \DeclareMathSymbol{\rightoplusarrow}{\mathrel}{\M@arrows@font}{"27F4}
  \DeclareMathSymbol{\rightwavearrow}{\mathrel}{\M@arrows@font}{"219D}
  \DeclareMathSymbol{\rightsquigarrow}{\mathrel}{\M@arrows@font}{"21DD}
  \DeclareMathSymbol{\longrightsquigarrow}{\mathrel}{\M@arrows@font}{"27FF}
  \DeclareMathSymbol{\looparrowright}{\mathrel}{\M@arrows@font}{"21AC}
  \DeclareMathSymbol{\curvearrowright}{\mathrel}{\M@arrows@font}{"293B}
  \DeclareMathSymbol{\circlearrowright}{\mathrel}{\M@arrows@font}{"21BB}
  \DeclareMathSymbol{\twoheadrightarrow}{\mathrel}{\M@arrows@font}{"21A0}
  \DeclareMathSymbol{\rightarrowtobar}{\mathrel}{\M@arrows@font}{"21E5}
  \DeclareMathSymbol{\rightwhitearrow}{\mathrel}{\M@arrows@font}{"21E8}
  \DeclareMathSymbol{\rightrightarrows}{\mathrel}{\M@arrows@font}{"21C9}
  \DeclareMathSymbol{\rightrightrightarrows}{\mathrel}{\M@arrows@font}{"21F6}
  \DeclareMathSymbol{\leftarrow}{\mathrel}{\M@arrows@font}{"2190}
    \global\let\from\leftarrow
  \DeclareMathSymbol{\nleftarrow}{\mathrel}{\M@arrows@font}{"219A}
  \DeclareMathSymbol{\Leftarrow}{\mathrel}{\M@arrows@font}{"21D0}
  \DeclareMathSymbol{\nLeftarrow}{\mathrel}{\M@arrows@font}{"21CD}
  \DeclareMathSymbol{\Lleftarrow}{\mathrel}{\M@arrows@font}{"21DA}
  \DeclareMathSymbol{\longleftarrow}{\mathrel}{\M@arrows@font}{"27F5}
  \DeclareMathSymbol{\Longleftarrow}{\mathrel}{\M@arrows@font}{"27F8}
  \DeclareMathSymbol{\leftbararrow}{\mathrel}{\M@arrows@font}{"21A4}
    \global\let\mapsfrom\leftbararrow
  \DeclareMathSymbol{\Leftbararrow}{\mathrel}{\M@arrows@font}{"2906}
  \DeclareMathSymbol{\longleftbararrow}{\mathrel}{\M@arrows@font}{"27FB}
    \global\let\longmapsfrom\longleftbararrow
  \DeclareMathSymbol{\Longleftbararrow}{\mathrel}{\M@arrows@font}{"27FD}
  \DeclareMathSymbol{\hookleftarrow}{\mathrel}{\M@arrows@font}{"21A9}
  \DeclareMathSymbol{\leftdasharrow}{\mathrel}{\M@arrows@font}{"21E0}
  \DeclareMathSymbol{\leftharpoonup}{\mathrel}{\M@arrows@font}{"21BC}
  \DeclareMathSymbol{\leftharpoondown}{\mathrel}{\M@arrows@font}{"21BD}
  \DeclareMathSymbol{\leftarrowtail}{\mathrel}{\M@arrows@font}{"21A2}
  \DeclareMathSymbol{\leftoplusarrow}{\mathrel}{\M@arrows@font}{"2B32}
  \DeclareMathSymbol{\leftwavearrow}{\mathrel}{\M@arrows@font}{"219C}
  \DeclareMathSymbol{\leftsquigarrow}{\mathrel}{\M@arrows@font}{"21DC}
  \DeclareMathSymbol{\longleftsquigarrow}{\mathrel}{\M@arrows@font}{"2B33}
  \DeclareMathSymbol{\looparrowleft}{\mathrel}{\M@arrows@font}{"21AB}
  \DeclareMathSymbol{\curvearrowleft}{\mathrel}{\M@arrows@font}{"293A}
  \DeclareMathSymbol{\circlearrowleft}{\mathrel}{\M@arrows@font}{"21BA}
  \DeclareMathSymbol{\twoheadleftarrow}{\mathrel}{\M@arrows@font}{"219E}
  \DeclareMathSymbol{\leftarrowtobar}{\mathrel}{\M@arrows@font}{"21E4}
  \DeclareMathSymbol{\leftwhitearrow}{\mathrel}{\M@arrows@font}{"21E6}
  \DeclareMathSymbol{\leftleftarrows}{\mathrel}{\M@arrows@font}{"21C7}
  \DeclareMathSymbol{\leftleftleftarrows}{\mathrel}{\M@arrows@font}{"2B31}
  \DeclareMathSymbol{\leftrightarrow}{\mathrel}{\M@arrows@font}{"2194}
  \DeclareMathSymbol{\Leftrightarrow}{\mathrel}{\M@arrows@font}{"21D4}
  \DeclareMathSymbol{\nLeftrightarrow}{\mathrel}{\M@arrows@font}{"21CE}
  \DeclareMathSymbol{\longleftrightarrow}{\mathrel}{\M@arrows@font}{"27F7}
  \DeclareMathSymbol{\Longleftrightarrow}{\mathrel}{\M@arrows@font}{"27FA}
  \DeclareMathSymbol{\leftrightwavearrow}{\mathrel}{\M@arrows@font}{"21AD}
  \DeclareMathSymbol{\leftrightarrows}{\mathrel}{\M@arrows@font}{"21C6}
  \DeclareMathSymbol{\leftrightharpoons}{\mathrel}{\M@arrows@font}{"21CB}
  \DeclareMathSymbol{\leftrightarrowstobar}{\mathrel}{\M@arrows@font}{"21B9}
  \DeclareMathSymbol{\rightleftarrows}{\mathrel}{\M@arrows@font}{"21C4}
  \DeclareMathSymbol{\rightleftharpoons}{\mathrel}{\M@arrows@font}{"21CC}
  \DeclareMathSymbol{\uparrow}{\mathrel}{\M@arrows@font}{"2191}
  \DeclareMathSymbol{\Uparrow}{\mathrel}{\M@arrows@font}{"21D1}
  \DeclareMathSymbol{\Uuparrow}{\mathrel}{\M@arrows@font}{"290A}
  \DeclareMathSymbol{\upbararrow}{\mathrel}{\M@arrows@font}{"21A5}
  \DeclareMathSymbol{\updasharrow}{\mathrel}{\M@arrows@font}{"21E1}
  \DeclareMathSymbol{\upharpoonleft}{\mathrel}{\M@arrows@font}{"21BF}
  \DeclareMathSymbol{\upharpoonright}{\mathrel}{\M@arrows@font}{"21BE}
  \DeclareMathSymbol{\twoheaduparrow}{\mathrel}{\M@arrows@font}{"219F}
  \DeclareMathSymbol{\uparrowtobar}{\mathrel}{\M@arrows@font}{"2912}
  \DeclareMathSymbol{\upwhitearrow}{\mathrel}{\M@arrows@font}{"21E7}
  \DeclareMathSymbol{\upwhitebararrow}{\mathrel}{\M@arrows@font}{"21EA}
  \DeclareMathSymbol{\upuparrows}{\mathrel}{\M@arrows@font}{"21C8}
  \DeclareMathSymbol{\downarrow}{\mathrel}{\M@arrows@font}{"2193}
  \DeclareMathSymbol{\Downarrow}{\mathrel}{\M@arrows@font}{"21D3}
  \DeclareMathSymbol{\Ddownarrow}{\mathrel}{\M@arrows@font}{"290B}
  \DeclareMathSymbol{\downbararrow}{\mathrel}{\M@arrows@font}{"21A7}
  \DeclareMathSymbol{\downdasharrow}{\mathrel}{\M@arrows@font}{"21E3}
  \DeclareMathSymbol{\zigzagarrow}{\mathrel}{\M@arrows@font}{"21AF}
    \global\let\lightningboltarrow\zigzagarrow
  \DeclareMathSymbol{\downharpoonleft}{\mathrel}{\M@arrows@font}{"21C3}
  \DeclareMathSymbol{\downharpoonright}{\mathrel}{\M@arrows@font}{"21C2}
  \DeclareMathSymbol{\twoheaddownarrow}{\mathrel}{\M@arrows@font}{"21A1}
  \DeclareMathSymbol{\downarrowtobar}{\mathrel}{\M@arrows@font}{"2913}
  \DeclareMathSymbol{\downwhitearrow}{\mathrel}{\M@arrows@font}{"21E9}
  \DeclareMathSymbol{\downdownarrows}{\mathrel}{\M@arrows@font}{"21CA}
  \DeclareMathSymbol{\updownarrow}{\mathrel}{\M@arrows@font}{"2195}
  \DeclareMathSymbol{\Updownarrow}{\mathrel}{\M@arrows@font}{"21D5}
  \DeclareMathSymbol{\updownarrows}{\mathrel}{\M@arrows@font}{"21C5}
  \DeclareMathSymbol{\downuparrows}{\mathrel}{\M@arrows@font}{"21F5}
  \DeclareMathSymbol{\updownharpoons}{\mathrel}{\M@arrows@font}{"296E}
  \DeclareMathSymbol{\downupharpoons}{\mathrel}{\M@arrows@font}{"296F}
  \DeclareMathSymbol{\nearrow}{\mathrel}{\M@arrows@font}{"2197}
  \DeclareMathSymbol{\Nearrow}{\mathrel}{\M@arrows@font}{"21D7}
  \DeclareMathSymbol{\nwarrow}{\mathrel}{\M@arrows@font}{"2196}
  \DeclareMathSymbol{\Nwarrow}{\mathrel}{\M@arrows@font}{"21D6}
  \DeclareMathSymbol{\searrow}{\mathrel}{\M@arrows@font}{"2198}
  \DeclareMathSymbol{\Searrow}{\mathrel}{\M@arrows@font}{"21D8}
  \DeclareMathSymbol{\swarrow}{\mathrel}{\M@arrows@font}{"2199}
  \DeclareMathSymbol{\Swarrow}{\mathrel}{\M@arrows@font}{"21D9}
  \DeclareMathSymbol{\nwsearrow}{\mathrel}{\M@arrows@font}{"2921}
  \DeclareMathSymbol{\neswarrow}{\mathrel}{\M@arrows@font}{"2922}
  \DeclareMathSymbol{\lcirclearrow}{\mathrel}{\M@arrows@font}{"27F2}
  \DeclareMathSymbol{\rcirclearrow}{\mathrel}{\M@arrows@font}{"27F3}}
\def\M@bb@set{%
  \protected\def\mathbb##1{\relax
    \ifmmode\else
      \M@HModeError\mathbb
      $%
    \fi
    \begingroup
      \M@bb@mathcodes
      ##1%
    \endgroup}
  \edef\M@bb@num{\number\csname symM\M@bbshape\@tempa\endcsname}
  \protected\edef\M@bb@mathcodes{%
  \Umathcode`A=0+\M@bb@num"1D538\relax
  \Umathcode`B=0+\M@bb@num"1D539\relax
  \Umathcode`C=0+\M@bb@num"2102\relax
  \Umathcode`D=0+\M@bb@num"1D53B\relax
  \Umathcode`E=0+\M@bb@num"1D53C\relax
  \Umathcode`F=0+\M@bb@num"1D53D\relax
  \Umathcode`G=0+\M@bb@num"1D53E\relax
  \Umathcode`H=0+\M@bb@num"210D\relax
  \Umathcode`I=0+\M@bb@num"1D540\relax
  \Umathcode`J=0+\M@bb@num"1D541\relax
  \Umathcode`K=0+\M@bb@num"1D542\relax
  \Umathcode`L=0+\M@bb@num"1D543\relax
  \Umathcode`M=0+\M@bb@num"1D544\relax
  \Umathcode`N=0+\M@bb@num"2115\relax
  \Umathcode`O=0+\M@bb@num"1D546\relax
  \Umathcode`P=0+\M@bb@num"2119\relax
  \Umathcode`Q=0+\M@bb@num"211A\relax
  \Umathcode`R=0+\M@bb@num"211D\relax
  \Umathcode`S=0+\M@bb@num"1D54A\relax
  \Umathcode`T=0+\M@bb@num"1D54B\relax
  \Umathcode`U=0+\M@bb@num"1D54C\relax
  \Umathcode`V=0+\M@bb@num"1D54D\relax
  \Umathcode`W=0+\M@bb@num"1D54E\relax
  \Umathcode`X=0+\M@bb@num"1D54F\relax
  \Umathcode`Y=0+\M@bb@num"1D550\relax
  \Umathcode`Z=0+\M@bb@num"2124\relax
  \Umathcode`a=0+\M@bb@num"1D552\relax
  \Umathcode`b=0+\M@bb@num"1D553\relax
  \Umathcode`c=0+\M@bb@num"1D554\relax
  \Umathcode`d=0+\M@bb@num"1D555\relax
  \Umathcode`e=0+\M@bb@num"1D556\relax
  \Umathcode`f=0+\M@bb@num"1D557\relax
  \Umathcode`g=0+\M@bb@num"1D558\relax
  \Umathcode`h=0+\M@bb@num"1D559\relax
  \Umathcode`i=0+\M@bb@num"1D55A\relax
  \Umathcode`j=0+\M@bb@num"1D55B\relax
  \Umathcode`k=0+\M@bb@num"1D55C\relax
  \Umathcode`l=0+\M@bb@num"1D55D\relax
  \Umathcode`m=0+\M@bb@num"1D55E\relax
  \Umathcode`n=0+\M@bb@num"1D55F\relax
  \Umathcode`o=0+\M@bb@num"1D560\relax
  \Umathcode`p=0+\M@bb@num"1D561\relax
  \Umathcode`q=0+\M@bb@num"1D562\relax
  \Umathcode`r=0+\M@bb@num"1D563\relax
  \Umathcode`s=0+\M@bb@num"1D564\relax
  \Umathcode`t=0+\M@bb@num"1D565\relax
  \Umathcode`u=0+\M@bb@num"1D566\relax
  \Umathcode`v=0+\M@bb@num"1D567\relax
  \Umathcode`w=0+\M@bb@num"1D568\relax
  \Umathcode`x=0+\M@bb@num"1D569\relax
  \Umathcode`y=0+\M@bb@num"1D56A\relax
  \Umathcode`z=0+\M@bb@num"1D56B\relax
  \Umathcode`0=0+\M@bb@num"1D7D8\relax
  \Umathcode`1=0+\M@bb@num"1D7D9\relax
  \Umathcode`2=0+\M@bb@num"1D7DA\relax
  \Umathcode`3=0+\M@bb@num"1D7DB\relax
  \Umathcode`4=0+\M@bb@num"1D7DC\relax
  \Umathcode`5=0+\M@bb@num"1D7DD\relax
  \Umathcode`6=0+\M@bb@num"1D7DE\relax
  \Umathcode`7=0+\M@bb@num"1D7DF\relax
  \Umathcode`8=0+\M@bb@num"1D7E0\relax
  \Umathcode`9=0+\M@bb@num"1D7E1\relax}}
\def\M@cal@set{%
  \protected\def\mathcal##1{\relax
    \ifmmode\else
      \M@HModeError\mathcal
      $%
    \fi
    \begingroup
      \M@cal@mathcodes
      ##1%
    \endgroup}
  \edef\M@cal@num{\number\csname symM\M@calshape\@tempa\endcsname}
  \protected\edef\M@cal@mathcodes{%
  \Umathcode`A=0+\M@cal@num"1D49C\relax
  \Umathcode`B=0+\M@cal@num"212C\relax
  \Umathcode`C=0+\M@cal@num"1D49E\relax
  \Umathcode`D=0+\M@cal@num"1D49F\relax
  \Umathcode`E=0+\M@cal@num"2130\relax
  \Umathcode`F=0+\M@cal@num"2131\relax
  \Umathcode`G=0+\M@cal@num"1D4A2\relax
  \Umathcode`H=0+\M@cal@num"210B\relax
  \Umathcode`I=0+\M@cal@num"2110\relax
  \Umathcode`J=0+\M@cal@num"1D4A5\relax
  \Umathcode`K=0+\M@cal@num"1D4A6\relax
  \Umathcode`L=0+\M@cal@num"2112\relax
  \Umathcode`M=0+\M@cal@num"2133\relax
  \Umathcode`N=0+\M@cal@num"1D4A9\relax
  \Umathcode`O=0+\M@cal@num"1D4AA\relax
  \Umathcode`P=0+\M@cal@num"1D4AB\relax
  \Umathcode`Q=0+\M@cal@num"1D4AC\relax
  \Umathcode`R=0+\M@cal@num"211B\relax
  \Umathcode`S=0+\M@cal@num"1D4AE\relax
  \Umathcode`T=0+\M@cal@num"1D4AF\relax
  \Umathcode`U=0+\M@cal@num"1D4B0\relax
  \Umathcode`V=0+\M@cal@num"1D4B1\relax
  \Umathcode`W=0+\M@cal@num"1D4B2\relax
  \Umathcode`X=0+\M@cal@num"1D4B3\relax
  \Umathcode`Y=0+\M@cal@num"1D4B4\relax
  \Umathcode`Z=0+\M@cal@num"1D4B5\relax
  \Umathcode`a=0+\M@cal@num"1D4B6\relax
  \Umathcode`b=0+\M@cal@num"1D4B7\relax
  \Umathcode`c=0+\M@cal@num"1D4B8\relax
  \Umathcode`d=0+\M@cal@num"1D4B9\relax
  \Umathcode`e=0+\M@cal@num"212F\relax
  \Umathcode`f=0+\M@cal@num"1D4BB\relax
  \Umathcode`g=0+\M@cal@num"210A\relax
  \Umathcode`h=0+\M@cal@num"1D4BD\relax
  \Umathcode`i=0+\M@cal@num"1D4BE\relax
  \Umathcode`j=0+\M@cal@num"1D4BF\relax
  \Umathcode`k=0+\M@cal@num"1D4C0\relax
  \Umathcode`l=0+\M@cal@num"1D4C1\relax
  \Umathcode`m=0+\M@cal@num"1D4C2\relax
  \Umathcode`n=0+\M@cal@num"1D4C3\relax
  \Umathcode`o=0+\M@cal@num"2134\relax
  \Umathcode`p=0+\M@cal@num"1D4C5\relax
  \Umathcode`q=0+\M@cal@num"1D4C6\relax
  \Umathcode`r=0+\M@cal@num"1D4C7\relax
  \Umathcode`s=0+\M@cal@num"1D4C8\relax
  \Umathcode`t=0+\M@cal@num"1D4C9\relax
  \Umathcode`u=0+\M@cal@num"1D4CA\relax
  \Umathcode`v=0+\M@cal@num"1D4CB\relax
  \Umathcode`w=0+\M@cal@num"1D4CC\relax
  \Umathcode`x=0+\M@cal@num"1D4CD\relax
  \Umathcode`y=0+\M@cal@num"1D4CE\relax
  \Umathcode`z=0+\M@cal@num"1D4CF\relax}}
\def\M@frak@set{%
  \protected\def\mathfrak##1{\relax
    \ifmmode\else
      \M@HModeError\mathfrak
      $%
    \fi
    \begingroup
      \M@frak@mathcodes
      ##1%
    \endgroup}
  \edef\M@frak@num{\number\csname symM\M@frakshape\@tempa\endcsname}
  \protected\edef\M@frak@mathcodes{%
  \Umathcode`A=0+\M@frak@num"1D504\relax
  \Umathcode`B=0+\M@frak@num"1D505\relax
  \Umathcode`C=0+\M@frak@num"212D\relax
  \Umathcode`D=0+\M@frak@num"1D507\relax
  \Umathcode`E=0+\M@frak@num"1D508\relax
  \Umathcode`F=0+\M@frak@num"1D509\relax
  \Umathcode`G=0+\M@frak@num"1D50A\relax
  \Umathcode`H=0+\M@frak@num"210C\relax
  \Umathcode`I=0+\M@frak@num"2111\relax
  \Umathcode`J=0+\M@frak@num"1D50D\relax
  \Umathcode`K=0+\M@frak@num"1D50E\relax
  \Umathcode`L=0+\M@frak@num"1D50F\relax
  \Umathcode`M=0+\M@frak@num"1D510\relax
  \Umathcode`N=0+\M@frak@num"1D511\relax
  \Umathcode`O=0+\M@frak@num"1D512\relax
  \Umathcode`P=0+\M@frak@num"1D513\relax
  \Umathcode`Q=0+\M@frak@num"1D514\relax
  \Umathcode`R=0+\M@frak@num"211C\relax
  \Umathcode`S=0+\M@frak@num"1D516\relax
  \Umathcode`T=0+\M@frak@num"1D517\relax
  \Umathcode`U=0+\M@frak@num"1D518\relax
  \Umathcode`V=0+\M@frak@num"1D519\relax
  \Umathcode`W=0+\M@frak@num"1D51A\relax
  \Umathcode`X=0+\M@frak@num"1D51B\relax
  \Umathcode`Y=0+\M@frak@num"1D51C\relax
  \Umathcode`Z=0+\M@frak@num"2128\relax
  \Umathcode`a=0+\M@frak@num"1D51E\relax
  \Umathcode`b=0+\M@frak@num"1D51F\relax
  \Umathcode`c=0+\M@frak@num"1D520\relax
  \Umathcode`d=0+\M@frak@num"1D521\relax
  \Umathcode`e=0+\M@frak@num"1D522\relax
  \Umathcode`f=0+\M@frak@num"1D523\relax
  \Umathcode`g=0+\M@frak@num"1D524\relax
  \Umathcode`h=0+\M@frak@num"1D525\relax
  \Umathcode`i=0+\M@frak@num"1D526\relax
  \Umathcode`j=0+\M@frak@num"1D527\relax
  \Umathcode`k=0+\M@frak@num"1D528\relax
  \Umathcode`l=0+\M@frak@num"1D529\relax
  \Umathcode`m=0+\M@frak@num"1D52A\relax
  \Umathcode`n=0+\M@frak@num"1D52B\relax
  \Umathcode`o=0+\M@frak@num"1D52C\relax
  \Umathcode`p=0+\M@frak@num"1D52D\relax
  \Umathcode`q=0+\M@frak@num"1D52E\relax
  \Umathcode`r=0+\M@frak@num"1D52F\relax
  \Umathcode`s=0+\M@frak@num"1D530\relax
  \Umathcode`t=0+\M@frak@num"1D531\relax
  \Umathcode`u=0+\M@frak@num"1D532\relax
  \Umathcode`v=0+\M@frak@num"1D533\relax
  \Umathcode`w=0+\M@frak@num"1D534\relax
  \Umathcode`x=0+\M@frak@num"1D535\relax
  \Umathcode`y=0+\M@frak@num"1D536\relax
  \Umathcode`z=0+\M@frak@num"1D537\relax}}
\def\M@bcal@set{%
  \protected\def\mathbcal##1{\relax
    \ifmmode\else
      \M@HModeError\mathbcal
      $%
    \fi
    \begingroup
      \M@bcal@mathcodes
      ##1%
    \endgroup}
  \edef\M@bcal@num{\number\csname symM\M@bcalshape\@tempa\endcsname}
  \protected\edef\M@bcal@mathcodes{%
  \Umathcode`A=0+\M@bcal@num"1D4D0\relax
  \Umathcode`B=0+\M@bcal@num"1D4D1\relax
  \Umathcode`C=0+\M@bcal@num"1D4D2\relax
  \Umathcode`D=0+\M@bcal@num"1D4D3\relax
  \Umathcode`E=0+\M@bcal@num"1D4D4\relax
  \Umathcode`F=0+\M@bcal@num"1D4D5\relax
  \Umathcode`G=0+\M@bcal@num"1D4D6\relax
  \Umathcode`H=0+\M@bcal@num"1D4D7\relax
  \Umathcode`I=0+\M@bcal@num"1D4D8\relax
  \Umathcode`J=0+\M@bcal@num"1D4D9\relax
  \Umathcode`K=0+\M@bcal@num"1D4DA\relax
  \Umathcode`L=0+\M@bcal@num"1D4DB\relax
  \Umathcode`M=0+\M@bcal@num"1D4DC\relax
  \Umathcode`N=0+\M@bcal@num"1D4DD\relax
  \Umathcode`O=0+\M@bcal@num"1D4DE\relax
  \Umathcode`P=0+\M@bcal@num"1D4DF\relax
  \Umathcode`Q=0+\M@bcal@num"1D4E0\relax
  \Umathcode`R=0+\M@bcal@num"1D4E1\relax
  \Umathcode`S=0+\M@bcal@num"1D4E2\relax
  \Umathcode`T=0+\M@bcal@num"1D4E3\relax
  \Umathcode`U=0+\M@bcal@num"1D4E4\relax
  \Umathcode`V=0+\M@bcal@num"1D4E5\relax
  \Umathcode`W=0+\M@bcal@num"1D4E6\relax
  \Umathcode`X=0+\M@bcal@num"1D4E7\relax
  \Umathcode`Y=0+\M@bcal@num"1D4E8\relax
  \Umathcode`Z=0+\M@bcal@num"1D4E9\relax
  \Umathcode`a=0+\M@bcal@num"1D4EA\relax
  \Umathcode`b=0+\M@bcal@num"1D4EB\relax
  \Umathcode`c=0+\M@bcal@num"1D4EC\relax
  \Umathcode`d=0+\M@bcal@num"1D4ED\relax
  \Umathcode`e=0+\M@bcal@num"1D4EE\relax
  \Umathcode`f=0+\M@bcal@num"1D4EF\relax
  \Umathcode`g=0+\M@bcal@num"1D4F0\relax
  \Umathcode`h=0+\M@bcal@num"1D4F1\relax
  \Umathcode`i=0+\M@bcal@num"1D4F2\relax
  \Umathcode`j=0+\M@bcal@num"1D4F3\relax
  \Umathcode`k=0+\M@bcal@num"1D4F4\relax
  \Umathcode`l=0+\M@bcal@num"1D4F5\relax
  \Umathcode`m=0+\M@bcal@num"1D4F6\relax
  \Umathcode`n=0+\M@bcal@num"1D4F7\relax
  \Umathcode`o=0+\M@bcal@num"1D4F8\relax
  \Umathcode`p=0+\M@bcal@num"1D4F9\relax
  \Umathcode`q=0+\M@bcal@num"1D4FA\relax
  \Umathcode`r=0+\M@bcal@num"1D4FB\relax
  \Umathcode`s=0+\M@bcal@num"1D4FC\relax
  \Umathcode`t=0+\M@bcal@num"1D4FD\relax
  \Umathcode`u=0+\M@bcal@num"1D4FE\relax
  \Umathcode`v=0+\M@bcal@num"1D4FF\relax
  \Umathcode`w=0+\M@bcal@num"1D500\relax
  \Umathcode`x=0+\M@bcal@num"1D501\relax
  \Umathcode`y=0+\M@bcal@num"1D502\relax
  \Umathcode`z=0+\M@bcal@num"1D503\relax}}
\def\M@bfrak@set{%
  \protected\def\mathbfrak##1{\relax
    \ifmmode\else
      \M@HModeError\mathbfrak
      $%
    \fi
    \begingroup
      \M@bfrak@mathcodes
      ##1%
    \endgroup}
  \edef\M@bfrak@num{\number\csname symM\M@bfrakshape\@tempa\endcsname}
  \protected\edef\M@bfrak@mathcodes{%
  \Umathcode`A=0+\M@bfrak@num"1D56C\relax
  \Umathcode`B=0+\M@bfrak@num"1D56D\relax
  \Umathcode`C=0+\M@bfrak@num"1D56E\relax
  \Umathcode`D=0+\M@bfrak@num"1D56F\relax
  \Umathcode`E=0+\M@bfrak@num"1D570\relax
  \Umathcode`F=0+\M@bfrak@num"1D571\relax
  \Umathcode`G=0+\M@bfrak@num"1D572\relax
  \Umathcode`H=0+\M@bfrak@num"1D573\relax
  \Umathcode`I=0+\M@bfrak@num"1D574\relax
  \Umathcode`J=0+\M@bfrak@num"1D575\relax
  \Umathcode`K=0+\M@bfrak@num"1D576\relax
  \Umathcode`L=0+\M@bfrak@num"1D577\relax
  \Umathcode`M=0+\M@bfrak@num"1D578\relax
  \Umathcode`N=0+\M@bfrak@num"1D579\relax
  \Umathcode`O=0+\M@bfrak@num"1D57A\relax
  \Umathcode`P=0+\M@bfrak@num"1D57B\relax
  \Umathcode`Q=0+\M@bfrak@num"1D57C\relax
  \Umathcode`R=0+\M@bfrak@num"1D57D\relax
  \Umathcode`S=0+\M@bfrak@num"1D57E\relax
  \Umathcode`T=0+\M@bfrak@num"1D57F\relax
  \Umathcode`U=0+\M@bfrak@num"1D580\relax
  \Umathcode`V=0+\M@bfrak@num"1D581\relax
  \Umathcode`W=0+\M@bfrak@num"1D582\relax
  \Umathcode`X=0+\M@bfrak@num"1D583\relax
  \Umathcode`Y=0+\M@bfrak@num"1D584\relax
  \Umathcode`Z=0+\M@bfrak@num"1D585\relax
  \Umathcode`a=0+\M@bfrak@num"1D586\relax
  \Umathcode`b=0+\M@bfrak@num"1D587\relax
  \Umathcode`c=0+\M@bfrak@num"1D588\relax
  \Umathcode`d=0+\M@bfrak@num"1D589\relax
  \Umathcode`e=0+\M@bfrak@num"1D58A\relax
  \Umathcode`f=0+\M@bfrak@num"1D58B\relax
  \Umathcode`g=0+\M@bfrak@num"1D58C\relax
  \Umathcode`h=0+\M@bfrak@num"1D58D\relax
  \Umathcode`i=0+\M@bfrak@num"1D58E\relax
  \Umathcode`j=0+\M@bfrak@num"1D58F\relax
  \Umathcode`k=0+\M@bfrak@num"1D590\relax
  \Umathcode`l=0+\M@bfrak@num"1D591\relax
  \Umathcode`m=0+\M@bfrak@num"1D592\relax
  \Umathcode`n=0+\M@bfrak@num"1D593\relax
  \Umathcode`o=0+\M@bfrak@num"1D594\relax
  \Umathcode`p=0+\M@bfrak@num"1D595\relax
  \Umathcode`q=0+\M@bfrak@num"1D596\relax
  \Umathcode`r=0+\M@bfrak@num"1D597\relax
  \Umathcode`s=0+\M@bfrak@num"1D598\relax
  \Umathcode`t=0+\M@bfrak@num"1D599\relax
  \Umathcode`u=0+\M@bfrak@num"1D59A\relax
  \Umathcode`v=0+\M@bfrak@num"1D59B\relax
  \Umathcode`w=0+\M@bfrak@num"1D59C\relax
  \Umathcode`x=0+\M@bfrak@num"1D59D\relax
  \Umathcode`y=0+\M@bfrak@num"1D59E\relax
  \Umathcode`z=0+\M@bfrak@num"1D59F\relax}}
\endinput
%%
%% End of file `mathfont.sty'.
