[LON-CAPA-cvs] cvs: loncom /html/adm/jsMath COPYING.txt jsMath-BaKoMa-fonts.js jsMath-autoload.html jsMath-controls.html jsMath-fallback-mac-mozilla.js jsMath-fallback-mac-msie.js jsMath-fallback-mac.js jsMath-fallback-pc.js jsMath-fallback-symbols.js jsMath-fallback-unix.js jsMath-loader.html jsMath-msie-mac.js jsMath-old-browsers.js jsMath.js /html/adm/jsMath/extensions AMSsymbols.js HTML.js boldsymbol.js double-click.js fbox.js leaders.js mathchoice.js mimeTeX.js moreArrows.js newcommand.js underset-overset.js /html/adm/jsMath/plugins autoload.js mimeTeX.js noImageFonts.js tex2math.js /html/adm/jsMath/uncompressed def.js jsMath-fallback-mac.js jsMath-fallback-pc.js jsMath-fallback-symbols.js jsMath-fallback-unix.js jsMath.js

albertel lon-capa-cvs@mail.lon-capa.org
Mon, 27 Mar 2006 19:32:37 -0000


This is a MIME encoded message

--albertel1143487957
Content-Type: text/plain

albertel		Mon Mar 27 14:32:37 2006 EDT

  Added files:                 
    /loncom/html/adm/jsMath	jsMath-BaKoMa-fonts.js jsMath-autoload.html 
                           	jsMath-controls.html jsMath-loader.html 
                           	jsMath-old-browsers.js 
    /loncom/html/adm/jsMath/extensions	AMSsymbols.js HTML.js 
                                      	boldsymbol.js double-click.js 
                                      	fbox.js leaders.js mathchoice.js 
                                      	mimeTeX.js moreArrows.js 
                                      	newcommand.js 
                                      	underset-overset.js 
    /loncom/html/adm/jsMath/uncompressed	def.js jsMath-fallback-mac.js 
                                        	jsMath-fallback-pc.js 
                                        	jsMath-fallback-symbols.js 
                                        	jsMath-fallback-unix.js 
                                        	jsMath.js 

  Modified files:              
    /loncom/html/adm/jsMath	COPYING.txt jsMath-fallback-mac-mozilla.js 
                           	jsMath-fallback-mac-msie.js 
                           	jsMath-fallback-mac.js 
                           	jsMath-fallback-pc.js 
                           	jsMath-fallback-symbols.js 
                           	jsMath-fallback-unix.js jsMath-msie-mac.js 
                           	jsMath.js 
    /loncom/html/adm/jsMath/plugins	autoload.js mimeTeX.js 
                                   	noImageFonts.js tex2math.js 
  Log:
  -jsMath 3.2 
  
  
--albertel1143487957
Content-Type: text/plain
Content-Disposition: attachment; filename="albertel-20060327143237.txt"

Index: loncom/html/adm/jsMath/COPYING.txt
diff -u loncom/html/adm/jsMath/COPYING.txt:1.1 loncom/html/adm/jsMath/COPYING.txt:1.2
--- loncom/html/adm/jsMath/COPYING.txt:1.1	Thu Feb 24 23:57:49 2005
+++ loncom/html/adm/jsMath/COPYING.txt	Mon Mar 27 14:32:07 2006
@@ -1,340 +1,202 @@
-		    GNU GENERAL PUBLIC LICENSE
-		       Version 2, June 1991
 
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-		    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-			    NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "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 PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-
-	    How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
Index: loncom/html/adm/jsMath/jsMath-fallback-mac-mozilla.js
diff -u loncom/html/adm/jsMath/jsMath-fallback-mac-mozilla.js:1.2 loncom/html/adm/jsMath/jsMath-fallback-mac-mozilla.js:1.3
--- loncom/html/adm/jsMath/jsMath-fallback-mac-mozilla.js:1.2	Wed Dec  7 13:57:44 2005
+++ loncom/html/adm/jsMath/jsMath-fallback-mac-mozilla.js	Mon Mar 27 14:32:07 2006
@@ -1,5 +1,5 @@
 /*
- *  jsMath-fallback-mac-mozzilla.js
+ *  jsMath-fallback-mac-mozilla.js
  *  
  *  Part of the jsMath package for mathematics on the web.
  *
@@ -8,19 +8,19 @@
  *
  *  ---------------------------------------------------------------------
  *
- *  jsMath is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  jsMath is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with jsMath; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *  Copyright 2004-2006 by Davide P. Cervone
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
  */
 
 
@@ -31,26 +31,28 @@
  *
  */
 
+jsMath.Script.Start();
+
 jsMath.Update.TeXfonts({
   cmmi10: {
 //  '41':  // leftharpoondown
 //  '43':  // rightharpoondown    
-    '44': {c: '<SPAN STYLE="position:relative; top:.15em; margin-right:-.1em; margin-left:-.2em">&#x02D3;</SPAN>'},
-    '45': {c: '<SPAN STYLE="position:relative; top:.15em; margin-right:-.1em; margin-left:-.2em">&#x02D2;</SPAN>'},
-    '47': {c: '<SPAN STYLE="font-size:60%">&#x25C1;</SPAN>'},
+    '44': {c: '<span style="position:relative; top:.15em; margin-right:-.1em; margin-left:-.2em">&#x02D3;</span>'},
+    '45': {c: '<span style="position:relative; top:.15em; margin-right:-.1em; margin-left:-.2em">&#x02D2;</span>'},
+    '47': {c: '<span style="font-size:60%">&#x25C1;</span>'},
 //  '92':  // natural
-    '126': {c: '<SPAN STYLE="position:relative; left: .3em; top: -.7em; font-size: 50%">&#x2192;</SPAN>'}
+    '126': {c: '<span style="position:relative; left: .3em; top: -.7em; font-size: 50%">&#x2192;</span>'}
   },
 
   cmsy10: {
     '0':  {c: '&ndash;', tclass: 'normal'},
-    '11': {c: '<SPAN STYLE="font-size: 70%">&#x25EF;</SPAN><SPAN STYLE="position:relative; margin-left:-.5em; top:.1em; margin-right:.3em">/</SPAN>', tclass: 'normal'},
+    '11': {c: '<span style="font-size: 70%">&#x25EF;</span><span style="position:relative; margin-left:-.5em; top:.1em; margin-right:.3em">/</span>', tclass: 'normal'},
     '42': {c: '&#x2963;'}, '43': {c: '&#x2965'},
-    '48': {c: '<SPAN STYLE="font-size: 133%; margin-right: -.75em; position: relative; top:.4em">&#x2032;</SPAN>', tclass: 'normal'},
-    '93': {c: '&#x222A;<SPAN STYLE="font-size: 50%; margin-left:-1.3em; position: relative; top:-.3em; margin-right:.6em">+</SPAN>'},
-    '104': {c: '<SPAN STYLE="position:relative; top:.15em; margin-left:-.6em">&#x3008;</SPAN>'},
-    '105': {c: '<SPAN STYLE="position:relative; top:.15em; margin-right:-.6em">&#x3009;</SPAN>'},
-    '109': {c: '&#x2963;<SPAN STYLE="position:relative; top:.1em; margin-left:-1em">&#x2965;</SPAN>'}
+    '48': {c: '<span style="font-size: 133%; margin-right: -.75em; position: relative; top:.4em">&#x2032;</span>', tclass: 'normal'},
+    '93': {c: '&#x222A;<span style="font-size: 50%; margin-left:-1.3em; position: relative; top:-.3em; margin-right:.6em">+</span>'},
+    '104': {c: '<span style="position:relative; top:.15em; margin-left:-.6em">&#x3008;</span>'},
+    '105': {c: '<span style="position:relative; top:.15em; margin-right:-.6em">&#x3009;</span>'},
+    '109': {c: '&#x2963;<span style="position:relative; top:.1em; margin-left:-1em">&#x2965;</span>'}
 //, '116':  // sqcup
 //  '117':  // sqcap
 //  '118':  // sqsubseteq
@@ -58,44 +60,44 @@
   },
   
   cmex10: {
-    '10': {c: '<SPAN STYLE="position:relative; top:.1em; margin-left:-.6em">&#x3008;</SPAN>'},
-    '11': {c: '<SPAN STYLE="position:relative; top:.1em; margin-right:-.6em">&#x3009;</SPAN>'},
+    '10': {c: '<span style="position:relative; top:.1em; margin-left:-.6em">&#x3008;</span>'},
+    '11': {c: '<span style="position:relative; top:.1em; margin-right:-.6em">&#x3009;</span>'},
     '14': {c: '/'}, '15': {c: '\\'},
-    '28': {c: '<SPAN STYLE="position:relative; top:.1em; margin-left:-.6em">&#x3008;</SPAN>'},
-    '29': {c: '<SPAN STYLE="position:relative; top:.1em; margin-right:-.6em">&#x3009;</SPAN>'},
+    '28': {c: '<span style="position:relative; top:.1em; margin-left:-.6em">&#x3008;</span>'},
+    '29': {c: '<span style="position:relative; top:.1em; margin-right:-.6em">&#x3009;</span>'},
     '30': {c: '/'}, '31': {c: '\\'},
-    '42': {c: '<SPAN STYLE="position:relative; top:.1em; margin-left:-.6em">&#x3008;</SPAN>'},
-    '43': {c: '<SPAN STYLE="position:relative; top:.1em; margin-right:-.6em">&#x3009;</SPAN>'},
+    '42': {c: '<span style="position:relative; top:.1em; margin-left:-.6em">&#x3008;</span>'},
+    '43': {c: '<span style="position:relative; top:.1em; margin-right:-.6em">&#x3009;</span>'},
     '44': {c: '/'}, '45': {c: '\\'},
     '46': {c: '/'}, '47': {c: '\\'},
-    '68': {c: '<SPAN STYLE="position:relative; top:.1em; margin-left:-.6em">&#x3008;</SPAN>'},
-    '69': {c: '<SPAN STYLE="position:relative; top:.1em; margin-right:-.6em">&#x3009;</SPAN>'},
+    '68': {c: '<span style="position:relative; top:.1em; margin-left:-.6em">&#x3008;</span>'},
+    '69': {c: '<span style="position:relative; top:.1em; margin-right:-.6em">&#x3009;</span>'},
 //  '70':  // sqcup
 //  '71':  // big sqcup
     '72': {ic: .194},  '73': {ic: .444},
     '82': {tclass: 'bigop1cx', ic: .15}, '90': {tclass: 'bigop2cx', ic:.6},
-    '85': {c: '&#x222A;<SPAN STYLE="font-size: 50%; margin-left:-1.3em; position: relative; top:-.3em; margin-right:.6em">+</SPAN>'},
-    '93': {c: '&#x222A;<SPAN STYLE="font-size: 50%; margin-left:-1.3em; position: relative; top:-.3em; margin-right:.6em">+</SPAN>'}
+    '85': {c: '&#x222A;<span style="font-size: 50%; margin-left:-1.3em; position: relative; top:-.3em; margin-right:.6em">+</span>'},
+    '93': {c: '&#x222A;<span style="font-size: 50%; margin-left:-1.3em; position: relative; top:-.3em; margin-right:.6em">+</span>'}
   }
   
 });
 
-jsMath.Update.Styles({
-  '.symbol':   "font-family: Osaka",
-  '.arrow1':   "font-family: Osaka; position: relative; top: .125em; margin: -1px",
-  '.arrow2':   "font-family: AppleGothic; font-size: 100%; position:relative; top: .11em; margin:-1px",
-  '.bigop1':   "font-family: AppleGothic; font-size: 110%; position:relative; top: .9em; margin:-.05em",
-  '.bigop1b':  "font-family: Osaka; font-size: 140%; position: relative; top: .8em; margin:-.1em",
-  '.bigop1c':  "font-family: AppleGothic; font-size: 125%; position:relative; top: .85em; margin:-.3em",
-  '.bigop1cx': "font-family: 'Apple Chancery'; font-size: 125%; position:relative; top: .7em; margin:-.1em",
-  '.bigop2':   "font-family: AppleGothic; font-size: 175%; position:relative; top: .85em; margin:-.1em",
-  '.bigop2b':  "font-family: Osaka; font-size: 200%; position: relative; top: .75em; margin:-.15em",
-  '.bigop2c':  "font-family: AppleGothic; font-size: 300%; position:relative; top: .75em; margin:-.35em",
-  '.bigop2cx': "font-family: 'Apple Chancery'; font-size: 250%; position:relative; top: .7em; margin-left:-.1em; margin-right:-.2em",
-  '.delim1b':  "font-family: Times; font-size: 150%; position:relative; top:.8em; margin:.01em",
-  '.delim2b':  "font-family: Times; font-size: 210%; position:relative; top:.8em; margin:.01em",
-  '.delim3b':  "font-family: Times; font-size: 300%; position:relative; top:.75em; margin:.01em",
-  '.delim4b':  "font-family: Times; font-size: 400%; position:relative; top:.725em; margin:.01em",
+jsMath.Setup.Styles({
+  '.typeset .symbol':   "font-family: Osaka",
+  '.typeset .arrow1':   "font-family: Osaka; position: relative; top: .125em; margin: -1px",
+  '.typeset .arrow2':   "font-family: AppleGothic; font-size: 100%; position:relative; top: .11em; margin:-1px",
+  '.typeset .bigop1':   "font-family: AppleGothic; font-size: 110%; position:relative; top: .9em; margin:-.05em",
+  '.typeset .bigop1b':  "font-family: Osaka; font-size: 140%; position: relative; top: .8em; margin:-.1em",
+  '.typeset .bigop1c':  "font-family: AppleGothic; font-size: 125%; position:relative; top: .85em; margin:-.3em",
+  '.typeset .bigop1cx': "font-family: 'Apple Chancery'; font-size: 125%; position:relative; top: .7em; margin:-.1em",
+  '.typeset .bigop2':   "font-family: AppleGothic; font-size: 175%; position:relative; top: .85em; margin:-.1em",
+  '.typeset .bigop2b':  "font-family: Osaka; font-size: 200%; position: relative; top: .75em; margin:-.15em",
+  '.typeset .bigop2c':  "font-family: AppleGothic; font-size: 300%; position:relative; top: .75em; margin:-.35em",
+  '.typeset .bigop2cx': "font-family: 'Apple Chancery'; font-size: 250%; position:relative; top: .7em; margin-left:-.1em; margin-right:-.2em",
+  '.typeset .delim1b':  "font-family: Times; font-size: 150%; position:relative; top:.8em; margin:.01em",
+  '.typeset .delim2b':  "font-family: Times; font-size: 210%; position:relative; top:.8em; margin:.01em",
+  '.typeset .delim3b':  "font-family: Times; font-size: 300%; position:relative; top:.75em; margin:.01em",
+  '.typeset .delim4b':  "font-family: Times; font-size: 400%; position:relative; top:.725em; margin:.01em"
 });
 
 
@@ -107,9 +109,4 @@
 jsMath.Macro('joinrel','\\mathrel{\\kern-3mu}');
 
 
-/*
- *  Reinstall the styles
- */
-
-jsMath.Setup.Styles();
-
+jsMath.Script.End();
Index: loncom/html/adm/jsMath/jsMath-fallback-mac-msie.js
diff -u loncom/html/adm/jsMath/jsMath-fallback-mac-msie.js:1.2 loncom/html/adm/jsMath/jsMath-fallback-mac-msie.js:1.3
--- loncom/html/adm/jsMath/jsMath-fallback-mac-msie.js:1.2	Wed Dec  7 13:57:44 2005
+++ loncom/html/adm/jsMath/jsMath-fallback-mac-msie.js	Mon Mar 27 14:32:07 2006
@@ -8,19 +8,19 @@
  *
  *  ---------------------------------------------------------------------
  *
- *  jsMath is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  jsMath is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with jsMath; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *  Copyright 2004-2006 by Davide P. Cervone
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
  */
 
 
@@ -31,6 +31,8 @@
  *
  */
 
+jsMath.Script.Start();
+
 jsMath.Update.TeXfonts({
   cmr10: {
     '0':  {c: 'G', tclass: 'greek'},
@@ -44,50 +46,50 @@
     '8':  {c: 'F', tclass: 'greek'},
     '9':  {c: 'Y', tclass: 'greek'},
     '10': {c: 'W', tclass: 'greek'},
-    '22': {c: '<SPAN STYLE="position:relative; top:.1em">&#96;</SPAN>', tclass: 'symbol3'}
+    '22': {c: '<span style="position:relative; top:.1em">&#96;</span>', tclass: 'symbol3'}
   },
   
   cmti10: {
-    '0':  {c: '<I>G</I>', tclass: 'greek'},
-    '1':  {c: '<I>D</I>', tclass: 'greek'},
-    '2':  {c: '<I>Q</I>', tclass: 'greek'},
-    '3':  {c: '<I>L</I>', tclass: 'greek'},
-    '4':  {c: '<I>X</I>', tclass: 'greek'},
-    '5':  {c: '<I>P</I>', tclass: 'greek'},
-    '6':  {c: '<I>S</I>', tclass: 'greek'},
-    '7':  {c: '<I>&#161;</I>', tclass: 'greek'},
-    '8':  {c: '<I>F</I>', tclass: 'greek'},
-    '9':  {c: '<I>Y</I>', tclass: 'greek'},
-    '10': {c: '<I>W</I>', tclass: 'greek'},
-    '22': {c: '<SPAN STYLE="position:relative; top:.1em">&#96;</SPAN>', tclass: 'symbol3'}
+    '0':  {c: 'G', tclass: 'igreek'},
+    '1':  {c: 'D', tclass: 'igreek'},
+    '2':  {c: 'Q', tclass: 'igreek'},
+    '3':  {c: 'L', tclass: 'igreek'},
+    '4':  {c: 'X', tclass: 'igreek'},
+    '5':  {c: 'P', tclass: 'igreek'},
+    '6':  {c: 'S', tclass: 'igreek'},
+    '7':  {c: '&#161;', tclass: 'igreek'},
+    '8':  {c: 'F', tclass: 'igreek'},
+    '9':  {c: 'Y', tclass: 'igreek'},
+    '10': {c: 'W', tclass: 'igreek'},
+    '22': {c: '<span style="position:relative; top:.1em">&#96;</span>', tclass: 'symbol3'}
   },
   
   cmbx10: {
-    '0':  {c: '<B>G</B>', tclass: 'greek'},
-    '1':  {c: '<B>D</B>', tclass: 'greek'},
-    '2':  {c: '<B>Q</B>', tclass: 'greek'},
-    '3':  {c: '<B>L</B>', tclass: 'greek'},
-    '4':  {c: '<B>X</B>', tclass: 'greek'},
-    '5':  {c: '<B>P</B>', tclass: 'greek'},
-    '6':  {c: '<B>S</B>', tclass: 'greek'},
-    '7':  {c: '<B>&#161;</B>', tclass: 'greek'},
-    '8':  {c: '<B>F</B>', tclass: 'greek'},
-    '9':  {c: '<B>Y</B>', tclass: 'greek'},
-    '10': {c: '<B>W</B>', tclass: 'greek'},
-    '22': {c: '<SPAN STYLE="position:relative; top:.1em">&#96;</SPAN>', tclass: 'symbol3'}
+    '0':  {c: 'G', tclass: 'bgreek'},
+    '1':  {c: 'D', tclass: 'bgreek'},
+    '2':  {c: 'Q', tclass: 'bgreek'},
+    '3':  {c: 'L', tclass: 'bgreek'},
+    '4':  {c: 'X', tclass: 'bgreek'},
+    '5':  {c: 'P', tclass: 'bgreek'},
+    '6':  {c: 'S', tclass: 'bgreek'},
+    '7':  {c: '&#161;', tclass: 'bgreek'},
+    '8':  {c: 'F', tclass: 'bgreek'},
+    '9':  {c: 'Y', tclass: 'bgreek'},
+    '10': {c: 'W', tclass: 'bgreek'},
+    '22': {c: '<span style="position:relative; top:.1em">&#96;</span>', tclass: 'symbol3'}
   },
   cmmi10: {
-    '0':  {c: '<I>G</I>', tclass: 'greek'},
-    '1':  {c: '<I>D</I>', tclass: 'greek'},
-    '2':  {c: '<I>Q</I>', tclass: 'greek'},
-    '3':  {c: '<I>L</I>', tclass: 'greek'},
-    '4':  {c: '<I>X</I>', tclass: 'greek'},
-    '5':  {c: '<I>P</I>', tclass: 'greek'},
-    '6':  {c: '<I>S</I>', tclass: 'greek'},
-    '7':  {c: '<I>&#161;</I>', tclass: 'greek'},
-    '8':  {c: '<I>F</I>', tclass: 'greek'},
-    '9':  {c: '<I>Y</I>', tclass: 'greek'},
-    '10': {c: '<I>W</I>', tclass: 'greek'},
+    '0':  {c: 'G', tclass: 'igreek'},
+    '1':  {c: 'D', tclass: 'igreek'},
+    '2':  {c: 'Q', tclass: 'igreek'},
+    '3':  {c: 'L', tclass: 'igreek'},
+    '4':  {c: 'X', tclass: 'igreek'},
+    '5':  {c: 'P', tclass: 'igreek'},
+    '6':  {c: 'S', tclass: 'igreek'},
+    '7':  {c: '&#161;', tclass: 'igreek'},
+    '8':  {c: 'F', tclass: 'igreek'},
+    '9':  {c: 'Y', tclass: 'igreek'},
+    '10': {c: 'W', tclass: 'igreek'},
     '11': {c: 'a', tclass: 'greek'},
     '12': {c: 'b', tclass: 'greek'},
     '13': {c: 'g', tclass: 'greek'},
@@ -116,21 +118,21 @@
 //  '44':  // hook left
 //  '45':  // hook right 
 //  '92':  // natural
-    '94': {c: '<SPAN STYLE="position:relative; top:.3em">&#xFE36;</SPAN>'},
-    '95': {c: '<SPAN STYLE="position:relative; top:-.2em">&#xFE35;</SPAN>'}
+    '94': {c: '<span style="position:relative; top:.3em">&#xFE36;</span>'},
+    '95': {c: '<span style="position:relative; top:-.2em">&#xFE35;</span>'}
 //  '127': // half-circle down accent?
   },
 
   cmsy10: {
     '0':  {c: '&ndash;', tclass: 'normal'},
-    '11': {c: '<SPAN STYLE="font-size: 70%">&#x25EF;</SPAN><SPAN STYLE="position:relative; margin-left:-.5em; top:.1em; margin-right:.3em">/</SPAN>', tclass: 'normal'},
-    '16': {c: '<SPAN STYLE="position:relative;top:-.1em; font-size: 67%">&#xFE35;</SPAN><SPAN STYLE="position:relative;top:.1em;font-size:67%;margin-left:-1em">&#xFE36;</SPAN>', tclass: 'normal'},
-    '48': {c: '<SPAN STYLE="font-size: 133%; margin-left:-.1em; margin-right: -.6em; position: relative; top:.4em">&#x2032;</SPAN>'},
-    '93': {c: '&#x222A;<SPAN STYLE="font-size: 50%; margin-left:-1.3em; position: relative; top:-.3em; margin-right:.6em">+</SPAN>'},
-    '96': {c: '<SPAN STYLE="font-size:67%; position:relative; top:-.3em;">|</SPAN><SPAN STYLE="position:relative; top:-.15em; margin-left:-.1em">&ndash;</SPAN>', tclass: 'normal'},
-    '104': {c: '<SPAN STYLE="position:relative; top:.2em; margin-left:-.6em">&#x3008;</SPAN>'},
-    '105': {c: '<SPAN STYLE="position:relative; top:.2em; margin-right:-.6em">&#x3009;</SPAN>'},
-    '109': {c: '&#x21D1;<SPAN STYLE="position:relative; top:.1em; margin-left:-1em">&#x21D3;</SPAN>'},
+    '11': {c: '<span style="font-size: 70%">&#x25EF;</span><span style="position:relative; margin-left:-.5em; top:.1em; margin-right:.3em">/</span>', tclass: 'normal'},
+    '16': {c: '<span style="position:relative;top:-.1em; font-size: 67%">&#xFE35;</span><span style="position:relative;top:.1em;font-size:67%;margin-left:-1em">&#xFE36;</span>', tclass: 'normal'},
+    '48': {c: '<span style="font-size: 133%; margin-left:-.1em; margin-right: -.6em; position: relative; top:.4em">&#x2032;</span>'},
+    '93': {c: '&#x222A;<span style="font-size: 50%; margin-left:-1.3em; position: relative; top:-.3em; margin-right:.6em">+</span>'},
+    '96': {c: '<span style="font-size:67%; position:relative; top:-.3em;">|</span><span style="position:relative; top:-.15em; margin-left:-.1em">&ndash;</span>', tclass: 'normal'},
+    '104': {c: '<span style="position:relative; top:.2em; margin-left:-.6em">&#x3008;</span>'},
+    '105': {c: '<span style="position:relative; top:.2em; margin-right:-.6em">&#x3009;</span>'},
+    '109': {c: '&#x21D1;<span style="position:relative; top:.1em; margin-left:-1em">&#x21D3;</span>'},
     '110': {c: '\\', d:0, tclass: 'normal'}
 //  '111': // wr
 //, '113': // amalg
@@ -141,24 +143,24 @@
   },
 
   cmex10: {
-    '10': {c: '<SPAN STYLE="position:relative; top:.1em; margin-left:-.6em">&#x3008;</SPAN>'},
-    '11': {c: '<SPAN STYLE="position:relative; top:.1em; margin-right:-.6em">&#x3009;</SPAN>'},
+    '10': {c: '<span style="position:relative; top:.1em; margin-left:-.6em">&#x3008;</span>'},
+    '11': {c: '<span style="position:relative; top:.1em; margin-right:-.6em">&#x3009;</span>'},
     '14': {c: '/'}, '15': {c: '\\'},
-    '28': {c: '<SPAN STYLE="position:relative; top:.05em; margin-left:-.6em">&#x3008;</SPAN>'},
-    '29': {c: '<SPAN STYLE="position:relative; top:.05em; margin-right:-.6em">&#x3009;</SPAN>'},
+    '28': {c: '<span style="position:relative; top:.05em; margin-left:-.6em">&#x3008;</span>'},
+    '29': {c: '<span style="position:relative; top:.05em; margin-right:-.6em">&#x3009;</span>'},
     '30': {c: '/'}, '31': {c: '\\'},
-    '42': {c: '<SPAN STYLE="margin-left:-.6em">&#x3008;</SPAN>'},
-    '43': {c: '<SPAN STYLE="margin-right:-.6em">&#x3009;</SPAN>'},
+    '42': {c: '<span style="margin-left:-.6em">&#x3008;</span>'},
+    '43': {c: '<span style="margin-right:-.6em">&#x3009;</span>'},
     '44': {c: '/'}, '45': {c: '\\'},
     '46': {c: '/'}, '47': {c: '\\'},
-    '68': {c: '<SPAN STYLE="margin-left:-.6em">&#x3008;</SPAN>'},
-    '69': {c: '<SPAN STYLE="margin-right:-.6em">&#x3009;</SPAN>'},
+    '68': {c: '<span style="margin-left:-.6em">&#x3008;</span>'},
+    '69': {c: '<span style="margin-right:-.6em">&#x3009;</span>'},
 //  '70':  // sqcup
 //  '71':  // big sqcup
     '72': {ic: 0},  '73': {ic: 0},
     '82': {tclass: 'bigop1cx', ic: .15}, '90': {tclass: 'bigop2cx', ic:.6},
-    '85': {c: '&#x222A;<SPAN STYLE="font-size: 50%; margin-left:-1.25em; position: relative; top:-.3em; margin-right:.6em">+</SPAN>'},
-    '93': {c: '&#x222A;<SPAN STYLE="font-size: 50%; margin-left:-1.25em; position: relative; top:-.3em; margin-right:.6em">+</SPAN>'},
+    '85': {c: '&#x222A;<span style="font-size: 50%; margin-left:-1.25em; position: relative; top:-.3em; margin-right:.6em">+</span>'},
+    '93': {c: '&#x222A;<span style="font-size: 50%; margin-left:-1.25em; position: relative; top:-.3em; margin-right:.6em">+</span>'},
 //  '96': // coprod
 //  '97': // big coprod
     '98': {c: '&#xFE3F;', h: 0.722, w: .58, tclass: 'wide1'},
@@ -171,31 +173,32 @@
 
 });
 
-jsMath.Update.Styles({
-  '.arrow1':   "font-family: Osaka; position: relative; top: .125em; margin: -1px",
-  '.arrow2':   "font-family: Osaka; position: relative; top: .1em; margin:-1px",
-  '.bigop1':   "font-family: Symbol; font-size: 110%; position:relative; top: .8em; margin:-.05em",
-  '.bigop1b':  "font-family: Symbol; font-size: 140%; position: relative; top: .8em; margin:-.1em",
-  '.bigop1c':  "font-family: Osaka; font-size: 125%; position:relative; top: .85em; margin:-.3em",
-  '.bigop1cx': "font-family: 'Apple Chancery'; font-size: 125%; position:relative; top: .7em; margin:-.1em",
-  '.bigop2':   "font-family: Symbol; font-size: 175%; position:relative; top: .8em; margin:-.07em",
-  '.bigop2a':  "font-family: Baskerville; font-size: 175%; position: relative; top: .65em",
-  '.bigop2b':  "font-family: Symbol; font-size: 175%; position: relative; top: .8em; margin:-.07em",
-  '.bigop2c':  "font-family: Osaka; font-size: 230%; position:relative; top: .85em; margin:-.35em",
-  '.bigop2cx': "font-family: 'Apple Chancery'; font-size: 250%; position:relative; top: .6em; margin-left:-.1em; margin-right:-.2em",
-  '.delim1b':  "font-family: Times; font-size: 150%; position:relative; top:.8em",
-  '.delim2b':  "font-family: Times; font-size: 210%; position:relative; top:.75em;",
-  '.delim3b':  "font-family: Times; font-size: 300%; position:relative; top:.7em;",
-  '.delim4b':  "font-family: Times; font-size: 400%; position:relative; top:.65em;",
-  '.symbol3':  "font-family: Symbol",
-  '.wide1':    "font-size: 50%; position: relative; top:-1.1em",
-  '.wide2':    "font-size: 80%; position: relative; top:-.7em",
-  '.wide3':    "font-size: 125%; position: relative; top:-.5em",
-  '.wide1a':   "font-size: 75%; position: relative; top:-.5em",
-  '.wide2a':   "font-size: 133%; position: relative; top: -.15em",
-  '.wide3a':   "font-size: 200%; position: relative; top: -.05em",
-  '.greek':    "font-family: Symbol"
+jsMath.Setup.Styles({
+  '.typeset .arrow1':   "font-family: Osaka; position: relative; top: .125em; margin: -1px",
+  '.typeset .arrow2':   "font-family: Osaka; position: relative; top: .1em; margin:-1px",
+  '.typeset .bigop1':   "font-family: Symbol; font-size: 110%; position:relative; top: .8em; margin:-.05em",
+  '.typeset .bigop1b':  "font-family: Symbol; font-size: 140%; position: relative; top: .8em; margin:-.1em",
+  '.typeset .bigop1c':  "font-family: Osaka; font-size: 125%; position:relative; top: .85em; margin:-.3em",
+  '.typeset .bigop1cx': "font-family: 'Apple Chancery'; font-size: 125%; position:relative; top: .7em; margin:-.1em",
+  '.typeset .bigop2':   "font-family: Symbol; font-size: 175%; position:relative; top: .8em; margin:-.07em",
+  '.typeset .bigop2a':  "font-family: Baskerville; font-size: 175%; position: relative; top: .65em",
+  '.typeset .bigop2b':  "font-family: Symbol; font-size: 175%; position: relative; top: .8em; margin:-.07em",
+  '.typeset .bigop2c':  "font-family: Osaka; font-size: 230%; position:relative; top: .85em; margin:-.35em",
+  '.typeset .bigop2cx': "font-family: 'Apple Chancery'; font-size: 250%; position:relative; top: .6em; margin-left:-.1em; margin-right:-.2em",
+  '.typeset .delim1b':  "font-family: Times; font-size: 150%; position:relative; top:.8em",
+  '.typeset .delim2b':  "font-family: Times; font-size: 210%; position:relative; top:.75em;",
+  '.typeset .delim3b':  "font-family: Times; font-size: 300%; position:relative; top:.7em;",
+  '.typeset .delim4b':  "font-family: Times; font-size: 400%; position:relative; top:.65em;",
+  '.typeset .symbol3':  "font-family: Symbol",
+  '.typeset .wide1':    "font-size: 50%; position: relative; top:-1.1em",
+  '.typeset .wide2':    "font-size: 80%; position: relative; top:-.7em",
+  '.typeset .wide3':    "font-size: 125%; position: relative; top:-.5em",
+  '.typeset .wide1a':   "font-size: 75%; position: relative; top:-.5em",
+  '.typeset .wide2a':   "font-size: 133%; position: relative; top: -.15em",
+  '.typeset .wide3a':   "font-size: 200%; position: relative; top: -.05em",
+  '.typeset .greek':    "font-family: Symbol",
+  '.typeset .igreek':   "font-family: Symbol; font-style:italic",
+  '.typeset .bgreek':   "font-family: Symbol; font-weight:bold"
 });
 
-jsMath.Setup.Styles();
-
+jsMath.Script.End();
Index: loncom/html/adm/jsMath/jsMath-fallback-mac.js
diff -u loncom/html/adm/jsMath/jsMath-fallback-mac.js:1.2 loncom/html/adm/jsMath/jsMath-fallback-mac.js:1.3
--- loncom/html/adm/jsMath/jsMath-fallback-mac.js:1.2	Wed Dec  7 13:57:44 2005
+++ loncom/html/adm/jsMath/jsMath-fallback-mac.js	Mon Mar 27 14:32:07 2006
@@ -8,1047 +8,22 @@
  *
  *  ---------------------------------------------------------------------
  *
- *  jsMath is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  jsMath is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with jsMath; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-
-
-/********************************************************************
- *
- *  Here we replace the TeX character mappings by equivalent unicode
- *  points when possible, and adjust the character dimensions
- *  based on the fonts we hope we get them from (the styles are set
- *  to try to use the best characters available in the standard
- *  fonts).
- */
-
-jsMath.Add(jsMath.TeX,{
-
-  cmr10: [
-    // 00 - 0F
-    {c: '&Gamma;', tclass: 'greek'},
-    {c: '&Delta;', tclass: 'greek'},
-    {c: '&Theta;', tclass: 'greek'},
-    {c: '&Lambda;', tclass: 'greek'},
-    {c: '&Xi;', tclass: 'greek'},
-    {c: '&Pi;', tclass: 'greek'},
-    {c: '&Sigma;', tclass: 'greek'},
-    {c: '&Upsilon;', tclass: 'greek'},
-    {c: '&Phi;', tclass: 'greek'},
-    {c: '&Psi;', tclass: 'greek'},
-    {c: '&Omega;', tclass: 'greek'},
-    {c: 'ff', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 14, '108': 15}, tclass: 'normal'},
-    {c: 'fi', tclass: 'normal'},
-    {c: 'fl', tclass: 'normal'},
-    {c: 'ffi', tclass: 'normal'},
-    {c: 'ffl', tclass: 'normal'},
-    // 10 - 1F
-    {c: '&#x131;', a:0, tclass: 'normal'},
-    {c: 'j', d:.2, tclass: 'normal'},
-    {c: '&#x60;', tclass: 'accent'},
-    {c: '&#xB4;', tclass: 'accent'},
-    {c: '&#x2C7;', tclass: 'accent'},
-    {c: '&#x2D8;', tclass: 'accent'},
-    {c: '<SPAN STYLE="position:relative; top:.1em">&#x2C9;</SPAN>', tclass: 'accent'},
-    {c: '&#x2DA;', tclass: 'accent'},
-    {c: '&#x0327;', tclass: 'normal'},
-    {c: '&#xDF;', tclass: 'normal'},
-    {c: '&#xE6;', a:0, tclass: 'normal'},
-    {c: '&#x153;', a:0, tclass: 'normal'},
-    {c: '&#xF8;', tclass: 'normal'},
-    {c: '&#xC6;', tclass: 'normal'},
-    {c: '&#x152;', tclass: 'normal'},
-    {c: '&#xD8;', tclass: 'normal'},
-    // 20 - 2F
-    {c: '?', krn: {'108': -0.278, '76': -0.319}, tclass: 'normal'},
-    {c: '!', lig: {'96': 60}, tclass: 'normal'},
-    {c: '&#x201D;', tclass: 'normal'},
-    {c: '#', tclass: 'normal'},
-    {c: '$', tclass: 'normal'},
-    {c: '%', tclass: 'normal'},
-    {c: '&amp;', tclass: 'normal'},
-    {c: '&#x2019;', krn: {'63': 0.111, '33': 0.111}, lig: {'39': 34}, tclass: 'normal'},
-    {c: '(', d:.2, tclass: 'normal'},
-    {c: ')', d:.2, tclass: 'normal'},
-    {c: '*', tclass: 'normal'},
-    {c: '+', a:.1, tclass: 'normal'},
-    {c: ',', a:-.3, d:.2, w: 0.278, tclass: 'normal'},
-    {c: '-', a:0, lig: {'45': 123}, tclass: 'normal'},
-    {c: '.', a:-.25, tclass: 'normal'},
-    {c: '/', tclass: 'normal'},
-    // 30 - 3F
-    {c: '0', tclass: 'normal'},
-    {c: '1', tclass: 'normal'},
-    {c: '2', tclass: 'normal'},
-    {c: '3', tclass: 'normal'},
-    {c: '4', tclass: 'normal'},
-    {c: '5', tclass: 'normal'},
-    {c: '6', tclass: 'normal'},
-    {c: '7', tclass: 'normal'},
-    {c: '8', tclass: 'normal'},
-    {c: '9', tclass: 'normal'},
-    {c: ':', tclass: 'normal'},
-    {c: ';', tclass: 'normal'},
-    {c: '&#xA1;', tclass: 'normal'},
-    {c: '=', a:0, d:-.1, tclass: 'normal'},
-    {c: '&#xBF;', tclass: 'normal'},
-    {c: '?', lig: {'96': 62}, tclass: 'normal'},
-    // 40 - 4F
-    {c: '@', tclass: 'normal'},
-    {c: 'A', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
-    {c: 'B', tclass: 'normal'},
-    {c: 'C', tclass: 'normal'},
-    {c: 'D', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
-    {c: 'E', tclass: 'normal'},
-    {c: 'F', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
-    {c: 'G', tclass: 'normal'},
-    {c: 'H', tclass: 'normal'},
-    {c: 'I', krn: {'73': 0.0278}, tclass: 'normal'},
-    {c: 'J', tclass: 'normal'},
-    {c: 'K', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
-    {c: 'L', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
-    {c: 'M', tclass: 'normal'},
-    {c: 'N', tclass: 'normal'},
-    {c: 'O', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
-    // 50 - 5F
-    {c: 'P', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
-    {c: 'Q', d: 1, tclass: 'normal'},
-    {c: 'R', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
-    {c: 'S', tclass: 'normal'},
-    {c: 'T', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
-    {c: 'U', tclass: 'normal'},
-    {c: 'V', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
-    {c: 'W', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
-    {c: 'X', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
-    {c: 'Y', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
-    {c: 'Z', tclass: 'normal'},
-    {c: '[', d:.1, tclass: 'normal'},
-    {c: '&#x201C;', tclass: 'normal'},
-    {c: ']', d:.1, tclass: 'normal'},
-    {c: '&#x2C6;', tclass: 'accent'},
-    {c: '&#x2D9;', tclass: 'accent'},
-    // 60 - 6F
-    {c: '&#x2018;', lig: {'96': 92}, tclass: 'normal'},
-    {c: 'a', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: 'b', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: 'c', a:0, krn: {'104': -0.0278, '107': -0.0278}, tclass: 'normal'},
-    {c: 'd', tclass: 'normal'},
-    {c: 'e', a:0, tclass: 'normal'},
-    {c: 'f', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'normal'},
-    {c: 'g', a:0, d:1, ic: 0.0139, krn: {'106': 0.0278}, tclass: 'normal'},
-    {c: 'h', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: 'i', tclass: 'normal'},
-    {c: 'j', d:1, tclass: 'normal'},
-    {c: 'k', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
-    {c: 'l', tclass: 'normal'},
-    {c: 'm', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: 'n', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: 'o', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    // 70 - 7F
-    {c: 'p', a:0, d:1, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: 'q', a:0, d:1, tclass: 'normal'},
-    {c: 'r', a:0, tclass: 'normal'},
-    {c: 's', a:0, tclass: 'normal'},
-    {c: 't', krn: {'121': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: 'u', a:0, krn: {'119': -0.0278}, tclass: 'normal'},
-    {c: 'v', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
-    {c: 'w', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
-    {c: 'x', a:0, tclass: 'normal'},
-    {c: 'y', a:0, d:1, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
-    {c: 'z', a:0, tclass: 'normal'},
-    {c: '&#x2013;', a:.1, ic: 0.0278, lig: {'45': 124}, tclass: 'normal'},
-    {c: '&#x2014;', a:.1, ic: 0.0278, tclass: 'normal'},
-    {c: '&#x2DD;', tclass: 'accent'},
-    {c: '&#x2DC;', tclass: 'accent'},
-    {c: '&#xA8;', tclass: 'accent'}
-  ],
-  
-  cmmi10: [
-    // 00 - 0F
-    {c: '<I>&Gamma;</I>', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'greek'},
-    {c: '<I>&Delta;</I>', krn: {'127': 0.167}, tclass: 'greek'},
-    {c: '<I>&Theta;</I>', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '<I>&Lambda;</I>', krn: {'127': 0.167}, tclass: 'greek'},
-    {c: '<I>&Xi;</I>', ic: 0.0757, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '<I>&Pi;</I>', ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'greek'},
-    {c: '<I>&Sigma;</I>', ic: 0.0576, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '<I>&Upsilon;</I>', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0556}, tclass: 'greek'},
-    {c: '<I>&Phi;</I>', krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '<I>&Psi;</I>', ic: 0.11, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'greek'},
-    {c: '<I>&Omega;</I>', ic: 0.0502, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '&alpha;', a:0, ic: 0.0037, krn: {'127': 0.0278}, tclass: 'greek'},
-    {c: '&beta;', d:1, ic: 0.0528, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '&gamma;', a:0, d:1, ic: 0.0556, tclass: 'greek'},
-    {c: '&delta;', ic: 0.0378, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'greek'},
-    {c: '&epsilon;', a:0, krn: {'127': 0.0556}, tclass: 'lucida'},
-    // 10 - 1F
-    {c: '&zeta;', d:1, ic: 0.0738, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '&eta;', a:0, d:1, ic: 0.0359, krn: {'127': 0.0556}, tclass: 'greek'},
-    {c: '&theta;', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '&iota;', a:0, krn: {'127': 0.0556}, tclass: 'greek'},
-    {c: '&kappa;', a:0, tclass: 'greek'},
-    {c: '&lambda;', tclass: 'greek'},
-    {c: '&mu;', a:0, d:1, krn: {'127': 0.0278}, tclass: 'greek'},
-    {c: '&nu;', a:0, ic: 0.0637, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}, tclass: 'greek'},
-    {c: '&xi;', d:1, ic: 0.046, krn: {'127': 0.111}, tclass: 'greek'},
-    {c: '&pi;', a:0, ic: 0.0359, tclass: 'greek'},
-    {c: '&rho;', a:0, d:1, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '&sigma;', a:0, ic: 0.0359, krn: {'59': -0.0556, '58': -0.0556}, tclass: 'greek'},
-    {c: '&tau;', a:0, ic: 0.113, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}, tclass: 'greek'},
-    {c: '&upsilon;', a:0, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'greek'},
-    {c: '&phi;', a:.1, d:1, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '&chi;', a:0, d:1, krn: {'127': 0.0556}, tclass: 'greek'},
-    // 20 - 2F
-    {c: '&psi;', a:.1, d:1, ic: 0.0359, krn: {'127': 0.111}, tclass: 'greek'},
-    {c: '&omega;', a:0, ic: 0.0359, tclass: 'greek'},
-    {c: '&epsilon;', a:0, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '&#x3D1;', krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '&#x3D6;', a:0, ic: 0.0278, tclass: 'normal'},
-    {c: '&#x3F1;', a:0, d:1, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '&#x3C2;', a:0, d:1, ic: 0.0799, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '&#x3D5;', a:.1, d:1, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '&#x21BC;', a:0, d:-.2, tclass: 'harpoon'},
-    {c: '&#x21BD;', a:0, d:-.1, tclass: 'harpoon'},
-    {c: '&#x21C0;', a:0, d:-.2, tclass: 'harpoon'},
-    {c: '&#x21C1;', a:0, d:-.1, tclass: 'harpoon'},
-    {c: '<SPAN STYLE="font-size: 133%; position:relative; top:.1em; margin:-.2em; left:-.05em">&#x02D3;</SPAN>', a:.1, tclass: 'lucida'},
-    {c: '<SPAN STYLE="font-size: 133%; position:relative; top:.1em; margin:-.2em; left:-.05em">&#x02D2;</SPAN>', a:.1, tclass: 'lucida'},
-    {c: '<SPAN STYLE="font-size:50%">&#x25B7;</SPAN>', tclass: 'symbol'},
-    {c: '<SPAN STYLE="font-size:50%">&#x25C1;</SPAN>', tclass: 'symbol'},
-    // 30 - 3F
-    {c: '0', tclass: 'normal'},
-    {c: '1', tclass: 'normal'},
-    {c: '2', tclass: 'normal'},
-    {c: '3', tclass: 'normal'},
-    {c: '4', tclass: 'normal'},
-    {c: '5', tclass: 'normal'},
-    {c: '6', tclass: 'normal'},
-    {c: '7', tclass: 'normal'},
-    {c: '8', tclass: 'normal'},
-    {c: '9', tclass: 'normal'},
-    {c: '.', a:-.3, tclass: 'normal'},
-    {c: ',', a:-.3, d:.2, tclass: 'normal'},
-    {c: '&lt;', a:.1, tclass: 'normal'},
-    {c: '<SPAN STYLE="font-size:133%; position:relative; top:.1em">/</SPAN>', d:.1, krn: {'1': -0.0556, '65': -0.0556, '77': -0.0556, '78': -0.0556, '89': 0.0556, '90': -0.0556}, tclass: 'normal'},
-    {c: '&gt;', a:.1, tclass: 'normal'},
-    {c: '<SPAN STYLE="font-size:50%">&#x2605;</SPAN>', a:0, tclass: 'symbol'},
-    // 40 - 4F
-    {c: '&#x2202;', ic: 0.0556, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>A</I>', krn: {'127': 0.139}, tclass: 'normal'},
-    {c: '<I>B</I>', ic: 0.0502, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>C</I>', ic: 0.0715, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
-    {c: '<I>D</I>', ic: 0.0278, krn: {'127': 0.0556}, tclass: 'normal'},
-    {c: '<I>E</I>', ic: 0.0576, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>F</I>', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'normal'},
-    {c: '<I>G</I>', krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>H</I>', ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'normal'},
-    {c: '<I>I</I>', ic: 0.0785, krn: {'127': 0.111}, tclass: 'normal'},
-    {c: '<I>J</I>', ic: 0.0962, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.167}, tclass: 'normal'},
-    {c: '<I>K</I>', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'normal'},
-    {c: '<I>L</I>', krn: {'127': 0.0278}, tclass: 'normal'},
-    {c: '<I>M</I>', ic: 0.109, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
-    {c: '<I>N</I>', ic: 0.109, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
-    {c: '<I>O</I>', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'normal'},
-    // 50 - 5F
-    {c: '<I>P</I>', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'normal'},
-    {c: '<I>Q</I>', d:1, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>R</I>', ic: 0.00773, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>S</I>', ic: 0.0576, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
-    {c: '<I>T</I>', ic: 0.139, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
-    {c: '<I>U</I>', ic: 0.109, krn: {'59': -0.111, '58': -0.111, '61': -0.0556, '127': 0.0278}, tclass: 'normal'},
-    {c: '<I>V</I>', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'normal'},
-    {c: '<I>W</I>', ic: 0.139, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'normal'},
-    {c: '<I>X</I>', ic: 0.0785, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
-    {c: '<I>Y</I>', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'normal'},
-    {c: '<I>Z</I>', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
-    {c: '&#x266D;', tclass: 'symbol2'},
-    {c: '&#x266E;', tclass: 'symbol2'},
-    {c: '&#x266F;', tclass: 'symbol2'},
-    {c: '<SPAN STYLE="position: relative; top:.5em">&#x2323;</SPAN>', a:0, d:-.1, tclass: 'normal'},
-    {c: '<SPAN STYLE="position: relative; top:-.3em">&#x2322;</SPAN>', a:0, d:-.1, tclass: 'normal'},
-    // 60 - 6F
-    {c: '&#x2113;', krn: {'127': 0.111}, tclass: 'symbol'},
-    {c: '<I>a</I>', a:0, tclass: 'normal'},
-    {c: '<I>b</I>', tclass: 'normal'},
-    {c: '<I>c</I>', a:0, krn: {'127': 0.0556}, tclass: 'normal'},
-    {c: '<I>d</I>', krn: {'89': 0.0556, '90': -0.0556, '106': -0.111, '102': -0.167, '127': 0.167}, tclass: 'normal'},
-    {c: '<I>e</I>', a:0, krn: {'127': 0.0556}, tclass: 'normal'},
-    {c: '<I>f</I>', d:1, ic: 0.108, krn: {'59': -0.0556, '58': -0.0556, '127': 0.167}, tclass: 'normal'},
-    {c: '<I>g</I>', a:0, d:1, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'normal'},
-    {c: '<I>h</I>', krn: {'127': -0.0278}, tclass: 'normal'},
-    {c: '<I>i</I>', tclass: 'normal'},
-    {c: '<I>j</I>', d:1, ic: 0.0572, krn: {'59': -0.0556, '58': -0.0556}, tclass: 'normal'},
-    {c: '<I>k</I>', ic: 0.0315, tclass: 'normal'},
-    {c: '<I>l</I>', ic: 0.0197, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>m</I>', a:0, tclass: 'normal'},
-    {c: '<I>n</I>', a:0, tclass: 'normal'},
-    {c: '<I>o</I>', a:0, krn: {'127': 0.0556}, tclass: 'normal'},
-    // 70 - 7F
-    {c: '<I>p</I>', a:0, d:1, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>q</I>', a:0, d:1, ic: 0.0359, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>r</I>', a:0, ic: 0.0278, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'normal'},
-    {c: '<I>s</I>', a:0, krn: {'127': 0.0556}, tclass: 'normal'},
-    {c: '<I>t</I>', krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>u</I>', a:0, krn: {'127': 0.0278}, tclass: 'normal'},
-    {c: '<I>v</I>', a:0, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'normal'},
-    {c: '<I>w</I>', a:0, ic: 0.0269, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>x</I>', a:0, krn: {'127': 0.0278}, tclass: 'normal'},
-    {c: '<I>y</I>', a:0, d:1, ic: 0.0359, krn: {'127': 0.0556}, tclass: 'normal'},
-    {c: '<I>z</I>', a:0, ic: 0.044, krn: {'127': 0.0556}, tclass: 'normal'},
-    {c: '<I>&#x131;</I>', a:0, krn: {'127': 0.0278}, tclass: 'normal'},
-    {c: '<I>j</I>', d:1, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '&#x2118;', a:0, d:1, krn: {'127': 0.111}, tclass: 'normal'},
-    {c: '<SPAN STYLE="position:relative; left: .4em; top: -.8em; font-size: 50%">&#x2192;</SPAN>', ic: 0.154, tclass: 'symbol'},
-    {c: '&#x0311;', ic: 0.399, tclass: 'normal'}
-  ],
-
-  cmsy10: [
-    // 00 - 0F
-    {c: '&#x2212;', a:.1, tclass: 'symbol'},
-    {c: '&#xB7;', a:0, d:-.2, tclass: 'symbol'},
-    {c: '&#xD7;', a:0, tclass: 'symbol'},
-    {c: '<SPAN STYLE="position:relative; top:.3em">&#x2A;</SPAN>', a:0, tclass: 'symbol'},
-    {c: '&#xF7;', a:0, tclass: 'symbol'},
-    {c: '&#x25CA;', tclass: 'lucida'},
-    {c: '&#xB1;', a:.1, tclass: 'symbol'},
-    {c: '&#x2213;', tclass: 'symbol'},
-    {c: '&#x2295;', tclass: 'symbol'},
-    {c: '&#x2296;', tclass: 'symbol'},
-    {c: '&#x2297;', tclass: 'symbol'},
-    {c: '&#x2298;', tclass: 'symbol'},
-    {c: '&#x2299;', tclass: 'symbol3'},
-    {c: '&#x25EF;', tclass: 'symbol'},
-    {c: '<SPAN STYLE="position:relative; top:.25em;">&#xB0;</SPAN>', a:0, d:-.1, tclass: 'symbol'},
-    {c: '&#x2022;', a:0, d:-.2, tclass: 'symbol'},
-    // 10 - 1F
-    {c: '&#x224D;', a:.1, tclass: 'symbol'},
-    {c: '&#x2261;', a:.1, tclass: 'symbol'},
-    {c: '&#x2286;', tclass: 'symbol'},
-    {c: '&#x2287;', tclass: 'symbol'},
-    {c: '&#x2264;', tclass: 'symbol'},
-    {c: '&#x2265;', tclass: 'symbol'},
-    {c: '&#x227C;', tclass: 'symbol'},
-    {c: '&#x227D;', tclass: 'symbol'},
-    {c: '~', a:0, d: -.2, tclass: 'normal'},
-    {c: '&#x2248;', a:.1, d:-.1, tclass: 'symbol'},
-    {c: '&#x2282;', tclass: 'symbol'},
-    {c: '&#x2283;', tclass: 'symbol'},
-    {c: '&#x226A;', tclass: 'symbol'},
-    {c: '&#x226B;', tclass: 'symbol'},
-    {c: '&#x227A;', tclass: 'symbol'},
-    {c: '&#x227B;', tclass: 'symbol'},
-    // 20 - 2F
-    {c: '&#x2190;', a:0, d:-.15, tclass: 'arrow1'},
-    {c: '&#x2192;', a:0, d:-.15, tclass: 'arrow1'},
-    {c: '&#x2191;', h:1, tclass: 'arrow1a'},
-    {c: '&#x2193;', h:1, tclass: 'arrow1a'},
-    {c: '&#x2194;', a:0, tclass: 'arrow1'},
-    {c: '&#x2197;', h:1, tclass: 'arrows'},
-    {c: '&#x2198;', h:1, tclass: 'arrows'},
-    {c: '&#x2243;', a: .1, tclass: 'symbol'},
-    {c: '&#x21D0;', a:.1, tclass: 'arrow2'},
-    {c: '&#x21D2;', a:.1, tclass: 'arrow2'},
-    {c: '&#x21D1;', h:.9, d:.1, tclass: 'arrow2a'},
-    {c: '&#x21D3;', h:.9, d:.1, tclass: 'arrow2a'},
-    {c: '&#x21D4;', a:.1, tclass: 'arrow2'},
-    {c: '&#x2196;', h:1, tclass: 'arrows'},
-    {c: '&#x2199;', h:1, tclass: 'arrows'},
-    {c: '&#x221D;', a:.1, tclass: 'symbol'},
-    // 30 - 3F
-    {c: '<SPAN STYLE="font-size: 133%; margin-right: -.1em; position: relative; top:.4em">&#x2032;</SPAN>', a: 0, tclass: 'lucida'},
-    {c: '&#x221E;', a:.1, tclass: 'symbol'},
-    {c: '&#x2208;', tclass: 'symbol'},
-    {c: '&#x220B;', tclass: 'symbol'},
-    {c: '&#x25B3;', tclass: 'symbol'},
-    {c: '&#x25BD;', tclass: 'symbol'},
-    {c: '/', tclass: 'symbol'},
-    {c: '<SPAN STYLE="font-size:50%; position:relative; top:-.3em; margin-right:-.2em">|</SPAN>', a:0, tclass: 'normal'},
-    {c: '&#x2200;', tclass: 'symbol'},
-    {c: '&#x2203;', tclass: 'symbol'},
-    {c: '&#xAC;', a:0, d:-.1, tclass: 'symbol1'},
-    {c: '&#x2205;', tclass: 'symbol'},
-    {c: '&#x211C;', tclass: 'symbol'},
-    {c: '&#x2111;', tclass: 'symbol'},
-    {c: '&#x22A4;', tclass: 'symbol'},
-    {c: '&#x22A5;', tclass: 'symbol'},
-    // 40 - 4F
-    {c: '&#x2135;', tclass: 'symbol'},
-    {c: 'A', krn: {'48': 0.194}, tclass: 'cal'},
-    {c: 'B', ic: 0.0304, krn: {'48': 0.139}, tclass: 'cal'},
-    {c: 'C', ic: 0.0583, krn: {'48': 0.139}, tclass: 'cal'},
-    {c: 'D', ic: 0.0278, krn: {'48': 0.0833}, tclass: 'cal'},
-    {c: 'E', ic: 0.0894, krn: {'48': 0.111}, tclass: 'cal'},
-    {c: 'F', ic: 0.0993, krn: {'48': 0.111}, tclass: 'cal'},
-    {c: 'G', d:.2, ic: 0.0593, krn: {'48': 0.111}, tclass: 'cal'},
-    {c: 'H', ic: 0.00965, krn: {'48': 0.111}, tclass: 'cal'},
-    {c: 'I', ic: 0.0738, krn: {'48': 0.0278}, tclass: 'cal'},
-    {c: 'J', d:.2, ic: 0.185, krn: {'48': 0.167}, tclass: 'cal'},
-    {c: 'K', ic: 0.0144, krn: {'48': 0.0556}, tclass: 'cal'},
-    {c: 'L', krn: {'48': 0.139}, tclass: 'cal'},
-    {c: 'M', krn: {'48': 0.139}, tclass: 'cal'},
-    {c: 'N', ic: 0.147, krn: {'48': 0.0833}, tclass: 'cal'},
-    {c: 'O', ic: 0.0278, krn: {'48': 0.111}, tclass: 'cal'},
-    // 50 - 5F
-    {c: 'P', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
-    {c: 'Q', d:.2, krn: {'48': 0.111}, tclass: 'cal'},
-    {c: 'R', krn: {'48': 0.0833}, tclass: 'cal'},
-    {c: 'S', ic: 0.075, krn: {'48': 0.139}, tclass: 'cal'},
-    {c: 'T', ic: 0.254, krn: {'48': 0.0278}, tclass: 'cal'},
-    {c: 'U', ic: 0.0993, krn: {'48': 0.0833}, tclass: 'cal'},
-    {c: 'V', ic: 0.0822, krn: {'48': 0.0278}, tclass: 'cal'},
-    {c: 'W', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
-    {c: 'X', ic: 0.146, krn: {'48': 0.139}, tclass: 'cal'},
-    {c: 'Y', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
-    {c: 'Z', ic: 0.0794, krn: {'48': 0.139}, tclass: 'cal'},
-    {c: '&#x22C3;', tclass: 'symbol'},
-    {c: '&#x22C2;', tclass: 'symbol'},
-    {c: '&#x228E;', tclass: 'symbol'},
-    {c: '&#x22C0;', tclass: 'symbol'},
-    {c: '&#x22C1;', tclass: 'symbol'},
-    // 60 - 6F
-    {c: '&#x22A2;', tclass: 'symbol'},
-    {c: '&#x22A3;', tclass: 'symbol2'},
-    {c: '&#xF8F0;', a:.3, d:.2, tclass: 'normal'},
-    {c: '&#xF8FB;', a:.3, d:.2, tclass: 'normal'},
-    {c: '&#xF8EE;', a:.3, d:.2, tclass: 'normal'},
-    {c: '&#xF8F9;', a:.3, d:.2, tclass: 'normal'},
-    {c: '{', d:.2, tclass: 'normal'},
-    {c: '}', d:.2, tclass: 'normal'},
-    {c: '&#x3008;', a:.3, d:.2, tclass: 'normal'},
-    {c: '&#x3009;', a:.3, d:.2, tclass: 'normal'},
-    {c: '|', d:.1, tclass: 'vertical'},
-    {c: '||', d:.1, tclass: 'vertical'},
-    {c: '&#x2195;', h:1, d:.15, tclass: 'arrow1a'},
-    {c: '&#x21D5;', a:.2, d:.1, tclass: 'arrows'},
-    {c: '<SPAN STYLE="margin:-.1em">&#x2216;</SPAN>', a:.3, d:.1, tclass: 'lucida'},
-    {c: '<SPAN STYLE="font-size: 75%; margin:-.3em">&#x2240;</SPAN>', tclass: 'symbol'},
-    // 70 - 7F
-    {c: '<SPAN STYLE="position:relative; top: .86em">&#x221A;</SPAN>', h:.04, d:.9, tclass: 'lucida'},
-    {c: '&#x2210;', a:.4, tclass: 'symbol'},
-    {c: '&#x2207;', tclass: 'symbol'},
-    {c: '&#x222B;', h:1, d:.1, ic: 0.111, tclass: 'root'},
-    {c: '&#x2294;', tclass: 'symbol'},
-    {c: '&#x2293;', tclass: 'symbol'},
-    {c: '&#x2291;', tclass: 'symbol'},
-    {c: '&#x2292;', tclass: 'symbol'},
-    {c: '&#xA7;', d:.1, tclass: 'normal'},
-    {c: '&#x2020;', d:.1, tclass: 'normal'},
-    {c: '&#x2021;', d:.1, tclass: 'normal'},
-    {c: '&#xB6;', a:.3, d:.1, tclass: 'lucida'},
-    {c: '&#x2663;', tclass: 'symbol'},
-    {c: '&#x2666;', tclass: 'symbol'},
-    {c: '&#x2665;', tclass: 'symbol'},
-    {c: '&#x2660;', tclass: 'symbol'}
-  ],
-
-  cmex10: [
-    // 00 - 0F
-    {c: '(', h: 0.04, d: 1.16, n: 16, tclass: 'delim1'},
-    {c: ')', h: 0.04, d: 1.16, n: 17, tclass: 'delim1'},
-    {c: '[', h: 0.04, d: 1.16, n: 104, tclass: 'delim1'},
-    {c: ']', h: 0.04, d: 1.16, n: 105, tclass: 'delim1'},
-    {c: '&#xF8F0', h: 0.04, d: 1.16, n: 106, tclass: 'delim1'},
-    {c: '&#xF8FB;', h: 0.04, d: 1.16, n: 107, tclass: 'delim1'},
-    {c: '&#xF8EE;', h: 0.04, d: 1.16, n: 108, tclass: 'delim1'},
-    {c: '&#xF8F9;', h: 0.04, d: 1.16, n: 109, tclass: 'delim1'},
-    {c: '{', h: 0.04, d: 1.16, n: 110, tclass: 'delim1'},
-    {c: '}', h: 0.04, d: 1.16, n: 111, tclass: 'delim1'},
-    {c: '&#x3008;', h: 0.04, d: 1.16, n: 68, tclass: 'delim1c'},
-    {c: '&#x3009;', h: 0.04, d: 1.16, n: 69, tclass: 'delim1c'},
-    {c: '|', h:.7, d:.15, delim: {rep: 12}, tclass: 'vertical1'},
-    {c: '||', h:.7, d:.15, delim: {rep: 13}, tclass: 'vertical1'},
-    {c: '&#x2215;', h: 0.04, d: 1.16, n: 46, tclass: 'delim1b'},
-    {c: '&#x2216;', h: 0.04, d: 1.16, n: 47, tclass: 'delim1b'},
-    // 10 - 1F
-    {c: '(', h: 0.04, d: 1.76, n: 18, tclass: 'delim2'},
-    {c: ')', h: 0.04, d: 1.76, n: 19, tclass: 'delim2'},
-    {c: '(', h: 0.04, d: 2.36, n: 32, tclass: 'delim3'},
-    {c: ')', h: 0.04, d: 2.36, n: 33, tclass: 'delim3'},
-    {c: '[', h: 0.04, d: 2.36, n: 34, tclass: 'delim3'},
-    {c: ']', h: 0.04, d: 2.36, n: 35, tclass: 'delim3'},
-    {c: '&#xF8F0;', h: 0.04, d: 2.36, n: 36, tclass: 'delim3'},
-    {c: '&#xF8FB;', h: 0.04, d: 2.36, n: 37, tclass: 'delim3'},
-    {c: '&#xF8EE;', h: 0.04, d: 2.36, n: 38, tclass: 'delim3'},
-    {c: '&#xF8F9;', h: 0.04, d: 2.36, n: 39, tclass: 'delim3'},
-    {c: '<SPAN STYLE="margin: -.1em">{</SPAN>', h: 0.04, d: 2.36, n: 40, tclass: 'delim3'},
-    {c: '<SPAN STYLE="margin: -.1em">}</SPAN>', h: 0.04, d: 2.36, n: 41, tclass: 'delim3'},
-    {c: '&#x3008;', h: 0.04, d: 2.36, n: 42, tclass: 'delim3c'},
-    {c: '&#x3009;', h: 0.04, d: 2.36, n: 43, tclass: 'delim3c'},
-    {c: '&#x2215;', h: 0.04, d: 2.36, n: 44, tclass: 'delim3b'},
-    {c: '&#x2216;', h: 0.04, d: 2.36, n: 45, tclass: 'delim3b'},
-    // 20 - 2F
-    {c: '(', h: 0.04, d: 2.96, n: 48, tclass: 'delim4'},
-    {c: ')', h: 0.04, d: 2.96, n: 49, tclass: 'delim4'},
-    {c: '[', h: 0.04, d: 2.96, n: 50, tclass: 'delim4'},
-    {c: ']', h: 0.04, d: 2.96, n: 51, tclass: 'delim4'},
-    {c: '&#xF8F0;', h: 0.04, d: 2.96, n: 52, tclass: 'delim4'},
-    {c: '&#xF8FB;', h: 0.04, d: 2.96, n: 53, tclass: 'delim4'},
-    {c: '&#xF8EE;', h: 0.04, d: 2.96, n: 54, tclass: 'delim4'},
-    {c: '&#xF8F9;', h: 0.04, d: 2.96, n: 55, tclass: 'delim4'},
-    {c: '<SPAN STYLE="margin: -.1em">{</SPAN>', h: 0.04, d: 2.96, n: 56, tclass: 'delim4'},
-    {c: '<SPAN STYLE="margin: -.1em">}</SPAN>', h: 0.04, d: 2.96, n: 57, tclass: 'delim4'},
-    {c: '&#x3008;', h: 0.04, d: 2.96, tclass: 'delim4c'},
-    {c: '&#x3009;', h: 0.04, d: 2.96, tclass: 'delim4c'},
-    {c: '&#x2215;', h: 0.04, d: 2.96, tclass: 'delim4b'},
-    {c: '&#x2216;', h: 0.04, d: 2.96, tclass: 'delim4b'},
-    {c: '&#x2215;', h: 0.04, d: 1.76, n: 30, tclass: 'delim2b'},
-    {c: '&#x2216;', h: 0.04, d: 1.76, n: 31, tclass: 'delim2b'},
-    // 30 - 3F
-    {c: '&#xF8EB;', h: .85, d: .2, delim: {top: 48, bot: 64, rep: 66}, tclass: 'normal'},
-    {c: '&#xF8F6;', h: .85, d: .2, delim: {top: 49, bot: 65, rep: 67}, tclass: 'normal'},
-    {c: '&#xF8EE;', h: .85, d: .2, delim: {top: 50, bot: 52, rep: 54}, tclass: 'normal'},
-    {c: '&#xF8F9;', h: .85, d: .2, delim: {top: 51, bot: 53, rep: 55}, tclass: 'normal'},
-    {c: '&#xF8F0;', h: .85, d: .2, delim: {bot: 52, rep: 54}, tclass: 'normal'},
-    {c: '&#xF8FB;', h: .85, d: .2, delim: {bot: 53, rep: 55}, tclass: 'normal'},
-    {c: '&#xF8EF;', h: .85, d: .2, delim: {top: 50, rep: 54}, tclass: 'normal'},
-    {c: '&#xF8FA;', h: .85, d: .2, delim: {top: 51, rep: 55}, tclass: 'normal'},
-    {c: '&#xF8F1;', h: .85, d: .2, delim: {top: 56, mid: 60, bot: 58, rep: 62}, tclass: 'normal'},
-    {c: '&#xF8FC;', h: .85, d: .2, delim: {top: 57, mid: 61, bot: 59, rep: 62}, tclass: 'normal'},
-    {c: '&#xF8F3;', h: .85, d: .2, delim: {top: 56, bot: 58, rep: 62}, tclass: 'normal'},
-    {c: '&#xF8FE;', h: .85, d: .2, delim: {top: 57, bot: 59, rep: 62}, tclass: 'normal'},
-    {c: '&#xF8F2;', h: .85, d: .2, delim: {rep: 63}, tclass: 'normal'},
-    {c: '&#xF8FD;', h: .85, d: .2, delim: {rep: 119}, tclass: 'normal'},
-    {c: '&#xF8F4;', h: .85, d: .2, delim: {rep: 62}, tclass: 'normal'},
-    {c: '|', h: .7, d: .15, delim: {top: 120, bot: 121, rep: 63}, tclass: 'vertical2'},
-    // 40 - 4F
-    {c: '&#xF8ED;', h: .85, d: .2, delim: {top: 56, bot: 59, rep: 62}, tclass: 'normal'},
-    {c: '&#xF8F8;', h: .85, d: .2, delim: {top: 57, bot: 58, rep: 62}, tclass: 'normal'},
-    {c: '&#xF8EC;', h: .85, d: .2, delim: {rep: 66}, tclass: 'normal'},
-    {c: '&#xF8F7;', h: .85, d: .2, delim: {rep: 67}, tclass: 'normal'},
-    {c: '&#x3008;', h: 0.04, d: 1.76, n: 28, tclass: 'delim2c'},
-    {c: '&#x3009;', h: 0.04, d: 1.76, n: 29, tclass: 'delim2c'},
-    {c: '&#x2294;', h: 0, d: 1, n: 71, tclass: 'bigop1'},
-    {c: '&#x2294;', h: 0.1, d: 1.5, tclass: 'bigop2'},
-    {c: '&#x222E;', h: 0, d: 1.11, ic: 0.095, n: 73, tclass: 'bigop1c'},
-    {c: '&#x222E;', h: 0, d: 2.22, ic: 0.222, tclass: 'bigop2c'},
-    {c: '&#x2299;', h: 0, d: 1, n: 75, tclass: 'bigop1'},
-    {c: '&#x2299;', h: 0.1, d: 1.5, tclass: 'bigop2'},
-    {c: '&#x2295;', h: 0, d: 1, n: 77, tclass: 'bigop1'},
-    {c: '&#x2295;', h: 0.1, d: 1.5, tclass: 'bigop2'},
-    {c: '&#x2297;', h: 0, d: 1, n: 79, tclass: 'bigop1'},
-    {c: '&#x2297;', h: 0.1, d: 1.5, tclass: 'bigop2'},
-    // 50 - 5F
-    {c: '&#x2211;', h: 0, d: 1, n: 88, tclass: 'bigop1a'},
-    {c: '&#x220F;', h: 0, d: 1, n: 89, tclass: 'bigop1a'},
-    {c: '&#x222B;', h: 0, d: 1.11, ic: 0.095, n: 90, tclass: 'bigop1c'},
-    {c: '&#x222A;', h: 0, d: 1, n: 91, tclass: 'bigop1b'},
-    {c: '&#x2229;', h: 0, d: 1, n: 92, tclass: 'bigop1b'},
-    {c: '&#x228E;', h: 0, d: 1, n: 93, tclass: 'bigop1b'},
-    {c: '&#x2227;', h: 0, d: 1, n: 94, tclass: 'bigop1'},
-    {c: '&#x2228;', h: 0, d: 1, n: 95, tclass: 'bigop1'},
-    {c: '&#x2211;', h: 0.1, d: 1.6, tclass: 'bigop2a'},
-    {c: '&#x220F;', h: 0.1, d: 1.5, tclass: 'bigop2a'},
-    {c: '&#x222B;', h: 0, d: 2.22, ic: 0.222, tclass: 'bigop2c'},
-    {c: '&#x222A;', h: 0.1, d: 1.5, tclass: 'bigop2b'},
-    {c: '&#x2229;', h: 0.1, d: 1.5, tclass: 'bigop2b'},
-    {c: '&#x228E;', h: 0.1, d: 1.5, tclass: 'bigop2b'},
-    {c: '&#x2227;', h: 0.1, d: 1.5, tclass: 'bigop2'},
-    {c: '&#x2228;', h: 0.1, d: 1.5, tclass: 'bigop2'},
-    // 60 - 6F
-    {c: '&#x2210;', h: 0, d: 1, n: 97, tclass: 'bigop1a'},
-    {c: '&#x2210;', h: 0.1, d: 1.5, tclass: 'bigop2a'},
-    {c: '&#xFE3F;', h: 0.722, w: .65, n: 99, tclass: 'wide1'},
-    {c: '&#xFE3F;', h: 0.85, w: 1.1, n: 100, tclass: 'wide2'},
-    {c: '&#xFE3F;', h: 0.99, w: 1.65, tclass: 'wide3'},
-    {c: '&#x2053;', h: 0.722, w: .75, n: 102, tclass: 'wide1a'},
-    {c: '&#x2053;', h: 0.8, w: 1.35, n: 103, tclass: 'wide2a'},
-    {c: '&#x2053;', h: 0.99, w: 2, tclass: 'wide3a'},
-    {c: '[', h: 0.04, d: 1.76, n: 20, tclass: 'delim2'},
-    {c: ']', h: 0.04, d: 1.76, n: 21, tclass: 'delim2'},
-    {c: '&#xF8F0;', h: 0.04, d: 1.76, n: 22, tclass: 'delim2'},
-    {c: '&#xF8FB;', h: 0.04, d: 1.76, n: 23, tclass: 'delim2'},
-    {c: '&#xF8EE;', h: 0.04, d: 1.76, n: 24, tclass: 'delim2'},
-    {c: '&#xF8F9', h: 0.04, d: 1.76, n: 25, tclass: 'delim2'},
-    {c: '<SPAN STYLE="margin: -.1em">{</SPAN>', h: 0.04, d: 1.76, n: 26, tclass: 'delim2'},
-    {c: '<SPAN STYLE="margin: -.1em">}</SPAN>', h: 0.04, d: 1.76, n: 27, tclass: 'delim2'},
-    // 70 - 7F
-    {c: '<SPAN STYLE="font-size: 125%; position:relative; top:.95em">&#x221A;</SPAN>', h: 0.04, d: 1.16, n: 113, tclass: 'root'},
-    {c: '<SPAN STYLE="font-size: 190%; position:relative; top:.925em">&#x221A;</SPAN>', h: 0.04, d: 1.76, n: 114, tclass: 'root'},
-    {c: '<SPAN STYLE="font-size: 250%; position:relative; top:.925em">&#x221A;</SPAN>', h: 0.06, d: 2.36, n: 115, tclass: 'root'},
-    {c: '<SPAN STYLE="font-size: 320%; position:relative; top:.92em">&#x221A;</SPAN>', h: 0.08, d: 2.96, n: 116, tclass: 'root'},
-    {c: '<SPAN STYLE="font-size: 400%; position:relative; top:.92em">&#x221A;</SPAN>', h: 0.1, d: 3.75, n: 117, tclass: 'root'},
-    {c: '<SPAN STYLE="font-size: 500%; position:relative; top:.9em">&#x221A;</SPAN>', h: .12, d: 4.5, n: 118, tclass: 'root'},
-    {c: '<SPAN STYLE="font-size: 625%; position:relative; top:.9em">&#x221A;</SPAN>', h: .14, d: 5.7, tclass: 'root'},
-    {c: '||', h:.65, d:.15, delim: {top: 126, bot: 127, rep: 119}, tclass: 'vertical2'},
-    {c: '&#x25B5;', h:.4, delim: {top: 120, rep: 63}, tclass: 'arrow1b'},
-    {c: '&#x25BF;', h:.38, delim: {bot: 121, rep: 63}, tclass: 'arrow1b'},
-    {c: '<SPAN STYLE="font-size: 67%; position:relative; top:.35em; margin-left:-.5em">&#x256D;</SPAN>', h:.1, tclass: 'symbol'},
-    {c: '<SPAN STYLE="font-size: 67%; position:relative; top:.35em; margin-right:-.5em">&#x256E;</SPAN>', h:.1, tclass: 'symbol'},
-    {c: '<SPAN STYLE="font-size: 67%; position:relative; top:.35em; margin-left:-.5em">&#x2570;</SPAN>', h:.1, tclass: 'symbol'},
-    {c: '<SPAN STYLE="font-size: 67%; position:relative; top:.35em; margin-right:-.5em">&#x256F;</SPAN>', h:.1, tclass: 'symbol'},
-    {c: '&#x25B5;', h:.5, delim: {top: 126, rep: 119}, tclass: 'arrow2b'},
-    {c: '&#x25BF;', h:.6, d:-.1, delim: {bot: 127, rep: 119}, tclass: 'arrow2b'}
-  ],
-  
-  cmti10: [
-    // 00 - 0F
-    {c: '<I>&Gamma;</I>', ic: 0.133, tclass: 'greek'},
-    {c: '<I>&Delta;</I>', tclass: 'greek'},
-    {c: '<I>&Theta;</I>', ic: 0.094, tclass: 'greek'},
-    {c: '<I>&Lambda;</I>', tclass: 'greek'},
-    {c: '<I>&Xi;</I>', ic: 0.153, tclass: 'greek'},
-    {c: '<I>&Pi;</I>', ic: 0.164, tclass: 'greek'},
-    {c: '<I>&Sigma;</I>', ic: 0.12, tclass: 'greek'},
-    {c: '<I>&Upsilon;</I>', ic: 0.111, tclass: 'greek'},
-    {c: '<I>&Phi;</I>', ic: 0.0599, tclass: 'greek'},
-    {c: '<I>&Psi;</I>', ic: 0.111, tclass: 'greek'},
-    {c: '<I>&Omega;</I>', ic: 0.103, tclass: 'greek'},
-    {c: '<I>ff</I>', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 14, '108': 15}, tclass: 'normal'},
-    {c: '<I>fi</I>', ic: 0.103, tclass: 'normal'},
-    {c: '<I>fl</I>', ic: 0.103, tclass: 'normal'},
-    {c: '<I>ffi</I>', ic: 0.103, tclass: 'normal'},
-    {c: '<I>ffl</I>', ic: 0.103, tclass: 'normal'},
-    // 10 - 1F
-    {c: '<I>&#x131;</I>', a:0, ic: 0.0767, tclass: 'normal'},
-    {c: '<I>j</I>', d:.2, ic: 0.0374, tclass: 'normal'},
-    {c: '<I>&#x60;</I>', tclass: 'accent'},
-    {c: '<I>&#xB4;</I>', ic: 0.0969, tclass: 'accent'},
-    {c: '<I>&#x2C7;</I>', ic: 0.083, tclass: 'accent'},
-    {c: '<I>&#x2D8;</I>', ic: 0.108, tclass: 'accent'},
-    {c: '<I>&#x2C9;</I>', ic: 0.103, tclass: 'accent'},
-    {c: '<I>&#x2DA;</I>', tclass: 'accent'},
-    {c: '<I>?</I>', d: 0.17, w: 0.46, tclass: 'normal'},
-    {c: '<I>&#xDF;</I>', ic: 0.105, tclass: 'normal'},
-    {c: '<I>&#xE6;</I>', a:0, ic: 0.0751, tclass: 'normal'},
-    {c: '<I>&#x153;</I>', a:0, ic: 0.0751, tclass: 'normal'},
-    {c: '<I>&#xF8;</I>', ic: 0.0919, tclass: 'normal'},
-    {c: '<I>&#xC6;</I>', ic: 0.12, tclass: 'normal'},
-    {c: '<I>&#x152;</I>', ic: 0.12, tclass: 'normal'},
-    {c: '<I>&#xD8;</I>', ic: 0.094, tclass: 'normal'},
-    // 20 - 2F
-    {c: '<I>?</I>', krn: {'108': -0.256, '76': -0.321}, tclass: 'normal'},
-    {c: '<I>!</I>', ic: 0.124, lig: {'96': 60}, tclass: 'normal'},
-    {c: '<I>&#x201D;</I>', ic: 0.0696, tclass: 'normal'},
-    {c: '<I>#</I>', ic: 0.0662, tclass: 'normal'},
-    {c: '<I>$</I>', tclass: 'normal'},
-    {c: '<I>%</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>&amp;</I>', ic: 0.0969, tclass: 'normal'},
-    {c: '<I>&#x2019;</I>', ic: 0.124, krn: {'63': 0.102, '33': 0.102}, lig: {'39': 34}, tclass: 'normal'},
-    {c: '<I>(</I>', d:.2, ic: 0.162, tclass: 'normal'},
-    {c: '<I>)</I>', d:.2, ic: 0.0369, tclass: 'normal'},
-    {c: '<I>*</I>', ic: 0.149, tclass: 'normal'},
-    {c: '<I>+</I>', a:.1, ic: 0.0369, tclass: 'normal'},
-    {c: '<I>,</I>', a:-.3, d:.2, w: 0.278, tclass: 'normal'},
-    {c: '<I>-</I>', a:0, ic: 0.0283, lig: {'45': 123}, tclass: 'normal'},
-    {c: '<I>.</I>', a:-.25, tclass: 'normal'},
-    {c: '<I>/</I>', ic: 0.162, tclass: 'normal'},
-    // 30 - 3F
-    {c: '<I>0</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>1</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>2</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>3</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>4</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>5</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>6</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>7</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>8</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>9</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>:</I>', ic: 0.0582, tclass: 'normal'},
-    {c: '<I>;</I>', ic: 0.0582, tclass: 'normal'},
-    {c: '<I>&#xA1;</I>', ic: 0.0756, tclass: 'normal'},
-    {c: '<I>=</I>', a:0, d:-.1, ic: 0.0662, tclass: 'normal'},
-    {c: '<I>&#xBF;</I>', tclass: 'normal'},
-    {c: '<I>?</I>', ic: 0.122, lig: {'96': 62}, tclass: 'normal'},
-    // 40 - 4F
-    {c: '<I>@</I>', ic: 0.096, tclass: 'normal'},
-    {c: '<I>A</I>', krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
-    {c: '<I>B</I>', ic: 0.103, tclass: 'normal'},
-    {c: '<I>C</I>', ic: 0.145, tclass: 'normal'},
-    {c: '<I>D</I>', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}, tclass: 'normal'},
-    {c: '<I>E</I>', ic: 0.12, tclass: 'normal'},
-    {c: '<I>F</I>', ic: 0.133, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'normal'},
-    {c: '<I>G</I>', ic: 0.0872, tclass: 'normal'},
-    {c: '<I>H</I>', ic: 0.164, tclass: 'normal'},
-    {c: '<I>I</I>', ic: 0.158, tclass: 'normal'},
-    {c: '<I>J</I>', ic: 0.14, tclass: 'normal'},
-    {c: '<I>K</I>', ic: 0.145, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'normal'},
-    {c: '<I>L</I>', krn: {'84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
-    {c: '<I>M</I>', ic: 0.164, tclass: 'normal'},
-    {c: '<I>N</I>', ic: 0.164, tclass: 'normal'},
-    {c: '<I>O</I>', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}, tclass: 'normal'},
-    // 50 - 5F
-    {c: '<I>P</I>', ic: 0.103, krn: {'65': -0.0767}, tclass: 'normal'},
-    {c: '<I>Q</I>', d: 1, ic: 0.094, tclass: 'normal'},
-    {c: '<I>R</I>', ic: 0.0387, krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
-    {c: '<I>S</I>', ic: 0.12, tclass: 'normal'},
-    {c: '<I>T</I>', ic: 0.133, krn: {'121': -0.0767, '101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}, tclass: 'normal'},
-    {c: '<I>U</I>', ic: 0.164, tclass: 'normal'},
-    {c: '<I>V</I>', ic: 0.184, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'normal'},
-    {c: '<I>W</I>', ic: 0.184, krn: {'65': -0.0767}, tclass: 'normal'},
-    {c: '<I>X</I>', ic: 0.158, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'normal'},
-    {c: '<I>Y</I>', ic: 0.194, krn: {'101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}, tclass: 'normal'},
-    {c: '<I>Z</I>', ic: 0.145, tclass: 'normal'},
-    {c: '<I>[</I>', d:.1, ic: 0.188, tclass: 'normal'},
-    {c: '<I>&#x201C;</I>', ic: 0.169, tclass: 'normal'},
-    {c: '<I>]</I>', d:.1, ic: 0.105, tclass: 'normal'},
-    {c: '<I>&#x2C6;</I>', ic: 0.0665, tclass: 'accent'},
-    {c: '<I>&#x2D9;</I>', ic: 0.118, tclass: 'accent'},
-    // 60 - 6F
-    {c: '<I>&#x2018;</I>', ic: 0.124, lig: {'96': 92}, tclass: 'normal'},
-    {c: '<I>a</I>', a:0, ic: 0.0767, tclass: 'normal'},
-    {c: '<I>b</I>', ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
-    {c: '<I>c</I>', a:0, ic: 0.0565, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
-    {c: '<I>d</I>', ic: 0.103, krn: {'108': 0.0511}, tclass: 'normal'},
-    {c: '<I>e</I>', a:0, ic: 0.0751, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
-    {c: '<I>f</I>', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'normal'},
-    {c: '<I>g</I>', a:0, d:1, ic: 0.0885, tclass: 'normal'},
-    {c: '<I>h</I>', ic: 0.0767, tclass: 'normal'},
-    {c: '<I>i</I>', ic: 0.102, tclass: 'normal'},
-    {c: '<I>j</I>', d:1, ic: 0.145, tclass: 'normal'},
-    {c: '<I>k</I>', ic: 0.108, tclass: 'normal'},
-    {c: '<I>l</I>', ic: 0.103, krn: {'108': 0.0511}, tclass: 'normal'},
-    {c: '<I>m</I>', a:0, ic: 0.0767, tclass: 'normal'},
-    {c: '<I>n</I>', a:0, ic: 0.0767, krn: {'39': -0.102}, tclass: 'normal'},
-    {c: '<I>o</I>', a:0, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
-    // 70 - 7F
-    {c: '<I>p</I>', a:0, d:1, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
-    {c: '<I>q</I>', a:0, d:1, ic: 0.0885, tclass: 'normal'},
-    {c: '<I>r</I>', a:0, ic: 0.108, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
-    {c: '<I>s</I>', a:0, ic: 0.0821, tclass: 'normal'},
-    {c: '<I>t</I>', ic: 0.0949, tclass: 'normal'},
-    {c: '<I>u</I>', a:0, ic: 0.0767, tclass: 'normal'},
-    {c: '<I>v</I>', a:0, ic: 0.108, tclass: 'normal'},
-    {c: '<I>w</I>', a:0, ic: 0.108, krn: {'108': 0.0511}, tclass: 'normal'},
-    {c: '<I>x</I>', a:0, ic: 0.12, tclass: 'normal'},
-    {c: '<I>y</I>', a:0, d:1, ic: 0.0885, tclass: 'normal'},
-    {c: '<I>z</I>', a:0, ic: 0.123, tclass: 'normal'},
-    {c: '<I>&#x2013;</I>', a:.1, ic: 0.0921, lig: {'45': 124}, tclass: 'normal'},
-    {c: '<I>&#x2014;</I>', a:.1, ic: 0.0921, tclass: 'normal'},
-    {c: '<I>&#x2DD;</I>', ic: 0.122, tclass: 'accent'},
-    {c: '<I>&#x2DC;</I>', ic: 0.116, tclass: 'accent'},
-    {c: '<I>&#xA8;</I>', tclass: 'accent'}
-  ],
-  
-  cmbx10: [
-    // 00 - 0F
-    {c: '<B>&Gamma;</B>', tclass: 'greek'},
-    {c: '<B>&Delta;</B>', tclass: 'greek'},
-    {c: '<B>&Theta;</B>', tclass: 'greek'},
-    {c: '<B>&Lambda;</B>', tclass: 'greek'},
-    {c: '<B>&Xi;</B>', tclass: 'greek'},
-    {c: '<B>&Pi;</B>', tclass: 'greek'},
-    {c: '<B>&Sigma;</B>', tclass: 'greek'},
-    {c: '<B>&Upsilon;</B>', tclass: 'greek'},
-    {c: '<B>&Phi;</B>', tclass: 'greek'},
-    {c: '<B>&Psi;</B>', tclass: 'greek'},
-    {c: '<B>&Omega;</B>', tclass: 'greek'},
-    {c: '<B>ff</B>', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 14, '108': 15}, tclass: 'normal'},
-    {c: '<B>fi</B>', tclass: 'normal'},
-    {c: '<B>fl</B>', tclass: 'normal'},
-    {c: '<B>ffi</B>', tclass: 'normal'},
-    {c: '<B>ffl</B>', tclass: 'normal'},
-    // 10 - 1F
-    {c: '<B>&#x131;</B>', a:0, tclass: 'normal'},
-    {c: '<B>j</B>', d:.2, tclass: 'normal'},
-    {c: '<B>&#x60;</B>', tclass: 'accent'},
-    {c: '<B>&#xB4;</B>', tclass: 'accent'},
-    {c: '<B>&#x2C7;</B>', tclass: 'accent'},
-    {c: '<B>&#x2D8;</B>', tclass: 'accent'},
-    {c: '<B>&#x2C9;</B>', tclass: 'accent'},
-    {c: '<B>&#x2DA;</B>', tclass: 'accent'},
-    {c: '<B>?</B>', tclass: 'normal'},
-    {c: '<B>&#xDF;</B>', tclass: 'normal'},
-    {c: '<B>&#xE6;</B>', a:0, tclass: 'normal'},
-    {c: '<B>&#x153;</B>', a:0, tclass: 'normal'},
-    {c: '<B>&#xF8;</B>', tclass: 'normal'},
-    {c: '<B>&#xC6;</B>', tclass: 'normal'},
-    {c: '<B>&#x152;</B>', tclass: 'normal'},
-    {c: '<B>&#xD8;</B>', tclass: 'normal'},
-    // 20 - 2F
-    {c: '<B>?</B>', krn: {'108': -0.278, '76': -0.319}, tclass: 'normal'},
-    {c: '<B>!</B>', lig: {'96': 60}, tclass: 'normal'},
-    {c: '<B>&#x201D;</B>', tclass: 'normal'},
-    {c: '<B>#</B>', tclass: 'normal'},
-    {c: '<B>$</B>', tclass: 'normal'},
-    {c: '<B>%</B>', tclass: 'normal'},
-    {c: '<B>&amp;</B>', tclass: 'normal'},
-    {c: '<B>&#x2019;</B>', krn: {'63': 0.111, '33': 0.111}, lig: {'39': 34}, tclass: 'normal'},
-    {c: '<B>(</B>', d:.2, tclass: 'normal'},
-    {c: '<B>)</B>', d:.2, tclass: 'normal'},
-    {c: '<B>*</B>', tclass: 'normal'},
-    {c: '<B>+</B>', a:.1, tclass: 'normal'},
-    {c: '<B>,</B>', a:-.3, d:.2, w: 0.278, tclass: 'normal'},
-    {c: '<B>-</B>', a:0, lig: {'45': 123}, tclass: 'normal'},
-    {c: '<B>.</B>', a:-.25, tclass: 'normal'},
-    {c: '<B>/</B>', tclass: 'normal'},
-    // 30 - 3F
-    {c: '<B>0</B>', tclass: 'normal'},
-    {c: '<B>1</B>', tclass: 'normal'},
-    {c: '<B>2</B>', tclass: 'normal'},
-    {c: '<B>3</B>', tclass: 'normal'},
-    {c: '<B>4</B>', tclass: 'normal'},
-    {c: '<B>5</B>', tclass: 'normal'},
-    {c: '<B>6</B>', tclass: 'normal'},
-    {c: '<B>7</B>', tclass: 'normal'},
-    {c: '<B>8</B>', tclass: 'normal'},
-    {c: '<B>9</B>', tclass: 'normal'},
-    {c: '<B>:</B>', tclass: 'normal'},
-    {c: '<B>;</B>', tclass: 'normal'},
-    {c: '<B>&#xA1;</B>', tclass: 'normal'},
-    {c: '<B>=</B>', a:0, d:-.1, tclass: 'normal'},
-    {c: '<B>&#xBF;</B>', tclass: 'normal'},
-    {c: '<B>?</B>', lig: {'96': 62}, tclass: 'normal'},
-    // 40 - 4F
-    {c: '<B>@</B>', tclass: 'normal'},
-    {c: '<B>A</B>', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
-    {c: '<B>B</B>', tclass: 'normal'},
-    {c: '<B>C</B>', tclass: 'normal'},
-    {c: '<B>D</B>', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
-    {c: '<B>E</B>', tclass: 'normal'},
-    {c: '<B>F</B>', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
-    {c: '<B>G</B>', tclass: 'normal'},
-    {c: '<B>H</B>', tclass: 'normal'},
-    {c: '<B>I</B>', krn: {'73': 0.0278}, tclass: 'normal'},
-    {c: '<B>J</B>', tclass: 'normal'},
-    {c: '<B>K</B>', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
-    {c: '<B>L</B>', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
-    {c: '<B>M</B>', tclass: 'normal'},
-    {c: '<B>N</B>', tclass: 'normal'},
-    {c: '<B>O</B>', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
-    // 50 - 5F
-    {c: '<B>P</B>', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
-    {c: '<B>Q</B>', d: 1, tclass: 'normal'},
-    {c: '<B>R</B>', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
-    {c: '<B>S</B>', tclass: 'normal'},
-    {c: '<B>T</B>', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
-    {c: '<B>U</B>', tclass: 'normal'},
-    {c: '<B>V</B>', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
-    {c: '<B>W</B>', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
-    {c: '<B>X</B>', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
-    {c: '<B>Y</B>', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
-    {c: '<B>Z</B>', tclass: 'normal'},
-    {c: '<B>[</B>', d:.1, tclass: 'normal'},
-    {c: '<B>&#x201C;</B>', tclass: 'normal'},
-    {c: '<B>]</B>', d:.1, tclass: 'normal'},
-    {c: '<B>&#x2C6;</B>', tclass: 'accent'},
-    {c: '<B>&#x2D9;</B>', tclass: 'accent'},
-    // 60 - 6F
-    {c: '<B>&#x2018;</B>', lig: {'96': 92}, tclass: 'normal'},
-    {c: '<B>a</B>', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: '<B>b</B>', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: '<B>c</B>', a:0, krn: {'104': -0.0278, '107': -0.0278}, tclass: 'normal'},
-    {c: '<B>d</B>', tclass: 'normal'},
-    {c: '<B>e</B>', a:0, tclass: 'normal'},
-    {c: '<B>f</B>', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'normal'},
-    {c: '<B>g</B>', a:0, d:1, ic: 0.0139, krn: {'106': 0.0278}, tclass: 'normal'},
-    {c: '<B>h</B>', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: '<B>i</B>', tclass: 'normal'},
-    {c: '<B>j</B>', d:1, tclass: 'normal'},
-    {c: '<B>k</B>', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
-    {c: '<B>l</B>', tclass: 'normal'},
-    {c: '<B>m</B>', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: '<B>n</B>', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: '<B>o</B>', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    // 70 - 7F
-    {c: '<B>p</B>', a:0, d:1, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: '<B>q</B>', a:0, d:1, tclass: 'normal'},
-    {c: '<B>r</B>', a:0, tclass: 'normal'},
-    {c: '<B>s</B>', a:0, tclass: 'normal'},
-    {c: '<B>t</B>', krn: {'121': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: '<B>u</B>', a:0, krn: {'119': -0.0278}, tclass: 'normal'},
-    {c: '<B>v</B>', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
-    {c: '<B>w</B>', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
-    {c: '<B>x</B>', a:0, tclass: 'normal'},
-    {c: '<B>y</B>', a:0, d:1, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
-    {c: '<B>z</B>', a:0, tclass: 'normal'},
-    {c: '<B>&#x2013;</B>', a:.1, ic: 0.0278, lig: {'45': 124}, tclass: 'normal'},
-    {c: '<B>&#x2014;</B>', a:.1, ic: 0.0278, tclass: 'normal'},
-    {c: '<B>&#x2DD;</B>', tclass: 'accent'},
-    {c: '<B>&#x2DC;</B>', tclass: 'accent'},
-    {c: '<B>&#xA8;</B>', tclass: 'accent'}
-  ]
-});
-
-
-/*
- *  We need to replace the jsMath.Box.TeX function in order to use the
- *  different font metrics in the tables above, and to handle the
- *  scaling better.
- */
-
-jsMath.Add(jsMath.Box,{
-  TeX: function (C,font,style,size) {
-    c = jsMath.TeX[font][C]; if (!c.tclass) {c.tclass = font}
-    if (c.h != null && c.a == null) {c.a = c.h-1.1*jsMath.TeX.x_height}
-    if (c.img != null && c.c != '') this.TeXIMG(font,C,jsMath.Typeset.StyleSize(style,size));
-    var box = this.Text(c.c,c.tclass,style,size,c.a,c.d);
-    var scale = jsMath.Typeset.TeX(style,size).scale;
-    if (c.bh != null) {
-      box.bh = c.bh * scale;
-      box.bd = c.bd * scale;
-    } else {
-      var h = box.bd+box.bh;
-      var ph = Math.round(h*jsMath.em);
-      if (h > jsMath.hd) {
-        box.bd = jsMath.EmBoxFor(jsMath.HTML.Class(c.tclass,c.c)
-                   + '<IMG SRC="'+jsMath.blank+'" STYLE="'
-                   + 'width: 1; height: '+ph+'px">').h - h;
-        box.bh = h - box.bd;
-      }
-      c.bh = box.bh/scale;
-      c.bd = box.bd/scale;
-    }
-    if (jsMath.msieFontBug) {
-      // hack to avoid Font changing back to the default
-      // font when a unicode reference is not followed
-      // by a letter or number
-      box.html += '<SPAN STYLE="display: none">x</SPAN>'
-    }
-    return box;
-  }
-});
-
-jsMath.Update.Styles({
-    '.cmr10':          "font-family: serif",
-    '.lucida':         "font-family: 'Lucida Grande'",
-    '.asymbol':        "font-family: 'Apple Symbols'; font-size: 115%",
-    '.cal':            "font-family: 'Apple Chancery'",
-    '.arrows':         "font-family: 'Hiragino Mincho Pro'",
-    '.arrow1':         "font-family: 'Hiragino Mincho Pro'; position: relative; top: .075em; margin: -1px",
-    '.arrow1a':        "font-family: 'Hiragino Mincho Pro'; margin:-.3em",
-    '.arrow1b':        "font-family: AppleGothic; font-size: 50%",
-    '.arrow2':         "font-family: Symbol; font-size: 140%; position: relative; top: .1em; margin:-1px",
-    '.arrow2a':        "font-family: Symbol",
-    '.arrow2b':        "font-family: AppleGothic; font-size: 67%",
-    '.harpoon':        "font-family: AppleGothic; font-size: 90%",
-    '.symbol':         "font-family: 'Hiragino Mincho Pro'",
-    '.symbol2':        "font-family: 'Hiragino Mincho Pro'; margin:-.2em",
-    '.symbol3':        "font-family: AppleGothic",
-    '.delim1':         "font-family: Times; font-size: 133%; position:relative; top:.75em",
-    '.delim1b':        "font-family: 'Hiragino Mincho Pro'; font-size: 133%; position:relative; top:.8em; margin: -.1em",
-    '.delim1c':        "font-family: Symbol; font-size: 120%; position:relative; top:.8em;",
-    '.delim2':         "font-family: Baskerville; font-size: 180%; position:relative; top:.75em",
-    '.delim2b':        "font-family: 'Hiragino Mincho Pro'; font-size: 190%; position:relative; top:.8em; margin: -.1em",
-    '.delim2c':        "font-family: Symbol; font-size: 167%; position:relative; top:.8em;",
-    '.delim3':         "font-family: Baskerville; font-size: 250%; position:relative; top:.725em",
-    '.delim3b':        "font-family: 'Hiragino Mincho Pro'; font-size: 250%; position:relative; top:.8em; margin: -.1em",
-    '.delim3c':        "font-family: symbol; font-size: 240%; position:relative; top:.775em;",
-    '.delim4':         "font-family: Baskerville; font-size: 325%; position:relative; top:.7em",
-    '.delim4b':        "font-family: 'Hiragino Mincho Pro'; font-size: 325%; position:relative; top:.8em; margin: -.1em",
-    '.delim4c':        "font-family: Symbol; font-size: 300%; position:relative; top:.8em;",
-    '.vertical':       "font-family: Copperplate",
-    '.vertical1':      "font-family: Copperplate; font-size: 85%; margin: .15em;",
-    '.vertical2':      "font-family: Copperplate; font-size: 85%; margin: .17em;",
-    '.greek':          "font-family: serif",
-    '.bigop1':         "font-family: 'Hiragino Mincho Pro'; font-size: 133%; position: relative; top: .85em; margin:-.05em",
-    '.bigop1a':        "font-family: Baskerville; font-size: 100%; position: relative; top: .775em;",
-    '.bigop1b':        "font-family: 'Hiragino Mincho Pro'; font-size: 160%; position: relative; top: .7em; margin:-.1em",
-    '.bigop1c':        "font-family: Apple Symbols; font-size: 125%; position: relative; top: .75em; margin:-.1em;",
-    '.bigop2':         "font-family: 'Hiragino Mincho Pro'; font-size: 200%; position: relative; top: .8em; margin:-.07em",
-    '.bigop2a':        "font-family: Baskerville; font-size: 175%; position: relative; top: .7em;",
-    '.bigop2b':        "font-family: 'Hiragino Mincho Pro'; font-size: 270%; position: relative; top: .62em; margin:-.1em",
-    '.bigop2c':        "font-family: 'Apple Symbols'; font-size: 250%; position: relative; top: .7em; margin:-.17em;",
-    '.wide1':          "font-size: 67%; position: relative; top:-.8em",
-    '.wide2':          "font-size: 110%; position: relative; top:-.5em",
-    '.wide3':          "font-size: 175%; position: relative; top:-.32em",
-    '.wide1a':         "font-size: 75%; position: relative; top:-.5em",
-    '.wide2a':         "font-size: 133%; position: relative; top: -.15em",
-    '.wide3a':         "font-size: 200%; position: relative; top: -.05em",
-    '.root':           "font-family: Baskerville;",
-    '.accent':         "position: relative; top: .02em"
-});
-
-/*
- *  Check for ability to access Apple Symbols font
- */
-
-jsMath.noAppleSymbols =  (jsMath.BBoxFor('&#x2223;').w ==
-    jsMath.BBoxFor('<SPAN STYLE="font-family: Apple Symbols">&#x2223;</SPAN>').w);
-
-if (jsMath.noAppleSymbols) {
-  jsMath.Update.TeXfonts({
-    cmsy10: {
-      '16': {c: '<SPAN STYLE="position:relative;top:.25em; font-size: 67%">&#x2323;</SPAN><SPAN STYLE="position:relative;top:-.15em;font-size:67%;margin-left:-1em">&#x2322;</SPAN>', tclass: 'normal'},
-      '22': {c: '&#x227A;<SPAN STYLE="position:relative;top:.3em; margin-left:-1em">&mdash;</SPAN>', tclass: 'normal'},
-      '23': {c: '&#x227B;<SPAN STYLE="position:relative;top:.3em; margin-left:-1em">&mdash;</SPAN>', tclass: 'normal'},
-      '91': {c: '&#x222A;'},
-      '92': {c: '&#x2229;'},
-      '93': {c: '&#x222A;<SPAN STYLE="font-size: 50%; margin-left:-1.1em; position: relative; top:-.3em; margin-right:.4em">+</SPAN>'},
-      '94': {c: '&#x2227;'},
-      '95': {c: '&#x2228;'},
-      '96': {c: '|<SPAN STYLE="position:relative; top:-.15em; margin-left:-.1em">&ndash;</SPAN>', tclass: 'normal'},
-      '109': {c: '&#x21D1;<SPAN STYLE="position:relative; top:.1em; margin-left:-.6em">&#x21D3;</SPAN>', h:.9, d:.2, tclass: 'arrow2a'}
-    },
-    
-    cmex10: {
-      '85': {c: '&#x222A;<SPAN STYLE="font-size: 50%; margin-left:-1.1em; position: relative; top:-.3em; margin-right:.4em">+</SPAN>'},
-      '93': {c: '&#x222A;<SPAN STYLE="font-size: 50%; margin-left:-1.1em; position: relative; top:-.3em; margin-right:.4em">+</SPAN>'}
-    }
-  });
-
-  jsMath.Macro('rightleftharpoons','\\unicode{x21CC}');
-} else {
-  jsMath.Update.Styles({
-    '.harpoon':   'font-family: Apple Symbols; font-size: 125%'
-  });
-  
-}
-
-
-//
-//  Adjust for OmniWeb
-//
-if (navigator.accentColorName) {
-  jsMath.Update.TeXfonts({
-    cmsy10: {
-      '55':  {c: '<SPAN STYLE="font-size: 75%; position:relative; left:.3em; top:-.15em; margin-left:-.3em">&#x02EB;</SPAN>'},
-      '104': {c: '<SPAN STYLE="position:relative; top:.2em; margin-left:-.55em">&#x3008;</SPAN>'},
-      '105': {c: '<SPAN STYLE="position:relative; top:.2em; margin-right:-.55em">&#x3009;</SPAN>'}
-    }
-  });
-  
-  jsMath.Update.Styles({
-    '.arrow2':   'font-family: Symbol; font-size: 100%; position: relative; top: -.1em; margin:-1px'
-  });
-  
-  if (jsMath.noAppleSymbols) {
-    jsMath.Update.TeXfonts({
-      cmsy10: {
-        '22': {c: '&#x227A;<SPAN STYLE="position:relative;top:.25em; margin-left:-.8em; margin-right:.2em">&ndash;</SPAN>', tclass: 'normal'},
-        '23': {c: '&#x227B;<SPAN STYLE="position:relative;top:.25em; margin-left:-.7em; margin-right:.1em">&ndash;</SPAN>', tclass: 'normal'},
-        '96': {c: '<SPAN STYLE="font-size:80%; position:relative; top:-.15em">|</SPAN><SPAN STYLE="position:relative; top:-.1em; margin-left:-.1em">&ndash;</SPAN>', tclass: 'normal'}
-      }
-    });
-  }
-  
-}
-
-//
-//  Check for Mozilla
-//
-if (jsMath.hidden.ATTRIBUTE_NODE) {jsMath.Setup.Script('jsMath-fallback-mac-mozilla.js')}
-//
-//  Check for MSIE
-//
-if (jsMath.spanHeightVaries) {jsMath.Setup.Script('jsMath-fallback-mac-msie.js')}
-
-
-/*
- *  Reinstall Styles and fonts
- */
-
-jsMath.Setup.Styles();
-jsMath.Setup.TeXfonts();
-
-/*
- *  No access to TeX "not" character, so fake this
- */
-jsMath.Macro('not','\\mathrel{\\rlap{\\kern 4mu/}}');
-
-
-jsMath.absoluteHeightVaries = 1;
-
-jsMath.defaultH = 0.8;
-
+ *  Copyright 2004-2006 by Davide P. Cervone
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+jsMath.Script.Uncompress([
+  ['jsMath.Script.Start();jsMath.Add(jsMath.TeX,{cmr10',':[{c:"&Gamma;",','tclass:"greek"},{c:"&','Delta;",',2,'Theta;",',2,'Lambda;",',2,'Xi;",',2,'Pi;",',2,'Sigma;",',2,'Upsilon;",',2,'Phi;",',2,'Psi;",',2,'Omega;",','tclass:"','greek','"},{c:"','ff','",ic:0.0778,krn:{"39":0.0778,"63":0.0778,"33":0.0778,"41":0.0778,"93":0.0778},lig:{"105":','14,"108":15},','tclass:"normal"},{c',':"fi",',28,':"fl",',28,':"ffi",',28,':"ffl",',28,':"&#x131',';",a:0,',28,':"j",d:0.2,',28,':"&#x60;",',22,'accent','"},{c:"&#','xB4;",',22,44,45,'x2C7;",',22,44,45,'x2D8;",',22,44,'"},{c:"<span style=\\"','position:relative; top',':.1em\\">&#x2C9',';</span>",',22,44,45,'x2DA;",',22,44,45,'x0327;",',28,':"&#xDF;",',28,':"&#xE6',38,28,':"&#x153',38,28,':"&#xF8;",',28,':"&#xC6;",',28,':"&#x152;",',28,':"&#xD8;",',28,':"?",krn:{"108":-0.278,"76":-0.319},',28,':"!",lig:{"96":60},',28,':"&#x201D;",',28,':"#",',28,':"$",',28,':"%",',28,':"&amp;",',28,':"&#x2019;",krn:{"63":0.111,"33":0.','111},','lig:{"39":34},',28,':"(",','d:0.2,',28,':")",',105,28,':"*",',28,':"+",','a:0.1,',28,':",",a:-','0.3,d:0.2,','w:0.278,',28,':"-",','a:0,','lig:{"45":123},',28,':".",a:-0.','25,',28,':"/",',28,':"0",',28,':"1",',28,':"2",',28,':"3",',28,':"4",',28,':"5",',28,':"6",',28,':"7",',28,':"8",',28,':"9",',28,':":",',28,':";",',28,':"&#xA1;",',28,':"=",','a:0,d:-0.','1,',28,':"&#xBF;",',28,':"?",lig:{"96":62},',28,':"@",',28,':"A','",krn:{"','116','":-0.0278,"','67',167,'79',167,'71',167,'85',167,'81',167,'84','":-0.0833,"','89',179,'86','":-0.111',',"87',183,'},',28,':"B",',28,':"C",',28,':"D',165,'88',167,'87',167,'65',167,'86',167,'89','":-0.0278','},',28,':"E",',28,':"F',165,'111',179,'101',179,'117','":-0.0833,"114":-0.0833,"97":-0.0833,"65":-0.','111,"79',167,'67',167,'71',167,'81',203,'},',28,':"G",',28,':"H",',28,':"I',165,'73":0.','0278','},',28,':"J",',28,':"K',165,'79',167,'67',167,'71',167,'81',203,'},',28,':"L',165,'84',179,'89',179,'86',183,',"87',183,'},',28,':"M",',28,':"N",',28,':"O',165,'88',167,'87',167,'65',167,'86',167,'89',203,'},',28,'
:"P',165,'65',179,'111',167,'101',167,'97',167,'46',179,'44":-0.','0833','},',28,':"Q",','d:0.1,',28,':"R',165,'116',167,'67',167,'79',167,'71',167,'85',167,'81',167,'84',179,'89',179,'86',183,',"87',183,'},',28,':"S",',28,':"T',165,'121',167,'101',179,'111',215,293,',"117":-0.',293,'},',28,':"U",',28,':"V",','ic:0.0139,krn:{"','111',179,'101',179,'117',215,'111,"79',167,'67',167,'71',167,'81',203,'},',28,':"W",',341,'111',179,'101',179,'117',215,'111,"79',167,'67',167,'71',167,'81',203,'},',28,':"X',165,'79',167,'67',167,'71',167,'81',203,'},',28,':"Y",ic:0.025,','krn:{"101',179,'111',215,293,334,293,'},',28,':"Z",',28,':"[",',297,28,':"&#x201C;",',28,':"]",',297,28,':"&#x2C6;",',22,44,45,'x2D9;",',22,44,45,'x2018;",lig:{"96":92},',28,':"a','",a:0,krn:{"','118',167,'106":0.','0556,"121',167,'119',203,'},',28,':"b',165,'101','":0.0278,"','111',432,'120',167,'100',432,'99',432,'113',432,'118',167,422,'0556,"121',167,'119',203,'},',28,':"c',419,'104',167,'107',203,'},',28,':"d",',28,':"e','",a:0,',28,':"f',26,'12,"102":11,"108":13},',28,':"g",','a:0,d:0.2,ic:0.','0139,krn:{"',422,233,'},',28,':"h',165,'116',167,'117',167,'98',167,'121',167,'118',167,'119',203,'},',28,':"i",',28,40,28,':"k',165,'97','":-0.0556,"','101',167,'97',167,'111',167,'99',203,'},',28,':"l",',28,':"m',419,'116',167,'117',167,'98',167,'121',167,'118',167,'119',203,'},',28,':"n',419,'116',167,'117',167,'98',167,'121',167,'118',167,'119',203,'},',28,':"o',419,'101',432,'111',432,'120',167,'100',432,'99',432,'113',432,'118',167,422,'0556,"121',167,'119',203,'},',28,':"p',463,105,389,432,'111',432,'120',167,'100',432,'99',432,'113',432,'118',167,422,'0556,"121',167,'119',203,'},',28,':"q',463,105,28,':"r',463,28,':"s',463,28,':"t',165,'121',167,'119',203,'},',28,':"u',419,'119',203,'},',28,':"v',463,341,'97',499,'101',167,'97',167,'111',167,'99',203,'},',28,':"w',463,341,'101',167,'97',167,'111',167,'99',203,'},',28,':"x',463,28,':"y",',470,471,'111',167,'101',167,'97',167,'46',179,'44":-0.',293,'},',28,':"z',463,28,':"&#x2013',';",a:0.1,','ic:0.
',233,',lig:{"45":124},',28,':"&#x2014',665,'ic:0.',233,',',28,':"&#x2DD;",',22,44,45,'x2DC;",',22,44,45,'xA8;",',22,44,'"}],cmmi10',1,'ic:0.139',',krn:{"61":-0.0556,"59":-0.111,"58":-0.111,"127":0.',293,'},tclass:"igreek"},{c:"&',3,'krn:{"127":0.','167',692,5,'ic:0.',233,',krn:{"127":0.',293,692,7,694,'167',692,9,'ic:0.0757',700,293,692,11,'ic:0.0812,krn:{"61',499,'59":-0.0556,"58":-0.0556,"127":0.','0556',692,13,'ic:0.0576',700,293,692,15,'ic:0.139',690,'0556',692,17,694,293,692,19,'ic:0.11,krn:{"61',499,715,'0556',692,21,'ic:0.0502',700,293,692,'alpha',';",a:0,ic:0.','0037',700,233,'},',2,'beta;",','d:0.2,ic:0.','0528',700,293,'},',2,'gamma;",',470,'0556,',2,'delta;",ic:0.0378,krn:{"',715,'0556},',2,'epsilon;",a:0',700,'0556},',22,'lucida"},{c:"&zeta;",',751,'0738',700,293,'},',2,'eta;",',470,'0359',700,'0556},',2,'theta;",ic:0.',233,700,293,'},',2,'iota;",a:0',700,'0556},',2,'kappa',38,2,'lambda;",',2,'mu',38,'d:0.2',700,233,'},',2,'nu',744,'0637,krn:{"',715,233,'},',2,'xi;",',751,'046',700,101,2,'pi',744,'0359,',2,'rho',38,'d:0.2',700,293,'},',2,'sigma',744,819,'krn:{"59',499,'58":-0.0556','},',2,'tau',744,'113,krn:{"',715,233,'},',2,'upsilon',744,'0359',700,233,'},',2,'phi',665,'d:0.2',700,293,'},',2,'chi',38,'d:0.2',700,'0556},',2,'psi',665,751,'0359',700,101,2,'omega',744,819,2,'epsilon;",a:0',700,293,'},',22,'greek',45,'x3D1;",',694,293,'},',28,':"&#x3D6',744,233,',',28,':"&#x3F1',38,'d:0.2',700,293,'},',28,':"&#x3C2;",',470,'0799',700,293,'},',28,':"&#x3D5',665,'d:0.2',700,293,'},',28,':"&#x21BC;",',155,'2,',22,'harpoon',45,'x21BD;",',155,'1,',22,'harpoon',45,'x21C0;",',155,'2,',22,'harpoon',45,'x21C1;",',155,'1,',22,'harpoon',57,'font-size',': 133%; ',58,':.1em; margin:-.2em; left:-.05em\\">&#','x02D3',60,113,22,'lucida',57,936,937,58,939,'x02D2',60,113,22,'lucida',57,936,':50%\\">&#','x25B7',60,22,'symbol',57,936,957,'x25C1',60,22,961,24,'0",',28,':"1",',28,':"2",',28,':"3",',28,':"4",',28,':"5",',28,':"6",',28,':"7",',28,':"8",',28,':"9",',28,123,'3,',28,':",",a:-',116,28,':"&lt',665,28,':"<span sty
le=\\"',936,':133%; ',58,':.1em\\">/</','span>",',297,'krn:{"1',499,'65',499,'77',499,'78',499,'89":0.0556,"90":-0.0556},',28,':"&gt',665,28,999,936,957,'x2605',60,120,'tclass:"symbol"},{c:"&#','x2202;",ic:0.0556',700,293,'},',28,':"A",',694,'139','},tclass:"italic"},{c:"','B",ic:0.0502',700,293,1034,'C",ic:0.0715,krn:{"61',167,715,293,1034,'D",ic:0.',233,700,'0556',1034,'E",ic:0.0576',700,293,1034,'F",ic:0.139',690,293,1034,'G",',694,293,1034,'H",ic:0.0812,krn:{"61',499,715,'0556',1034,'I",ic:0.0785',700,'111',1034,'J",ic:0.0962',690,'167',1034,'K",ic:0.0715,krn:{"61',499,715,'0556',1034,'L",',694,233,1034,'M','",ic:0.109,krn:{"','61',499,715,293,1034,'N',1084,'61',179,'61',167,715,293,1034,'O",ic:0.',233,700,293,1034,'P",ic:0.139',690,293,1034,'Q",d:0.2',700,293,1034,'R",ic:0.00773',700,293,1034,'S",ic:0.0576,krn:{"61',499,715,293,1034,'T','",ic:0.139,krn:{"','61',167,715,293,1034,'U',1084,'59',183,',"58',183,',"61',499,'127":0.',233,1034,'V",ic:0.222,krn:{"59','":-0.167,"','58',1140,'61',183,1034,'W',1122,'59',1140,'58',1140,'61',183,1034,'X",ic:0.0785,krn:{"61',179,'61',167,715,293,1034,'Y",ic:0.222,krn:{"59',1140,'58',1140,'61',183,1034,'Z",ic:0.0715,krn:{"61',499,715,293,'},',22,'italic',45,'x266D;",',22,'symbol2',45,'x266E;",',22,'symbol2',45,'x266F;",',22,'symbol2',57,'position: relative; top',':.5em\\">&#x2323',60,155,'1,',28,999,1189,':-.3em\\">&#x2322',60,155,'1,',28,':"&#x2113;",',694,101,22,961,24,'a',463,22,'italic"},{c:"','b",',22,1211,'c",a:0',700,'0556',1034,'d',165,'89":0.0556,"90',499,'106',183,',"102',1140,1136,'167',1034,'e",a:0',700,'0556',1034,'f",',751,'108,krn:{"',715,'167',1034,'g",',470,'0359',700,233,1034,'h',165,'127',203,1034,'i",',22,1211,'j",',751,'0572,krn:{"59',499,833,1034,'k",ic:0.0315,',22,1211,'l",ic:0.0197',700,293,1034,'m',463,22,1211,'n',463,22,1211,'o",a:0',700,'0556',1034,'p',463,'d:0.2',700,293,1034,'q",',470,'0359',700,293,1034,'r','",a:0,ic:0.',233,',krn:{"',715,'0556',1034,'s",a:0',700,'0556',1034,'t",',694,293,1034,'u",a:0',700,233,1034,'v',1292,'0359',700,233,1034
,'w',1292,'0269',700,293,1034,'x",a:0',700,233,1034,'y",',470,'0359',700,'0556',1034,'z',1292,'044',700,'0556},',22,'italic',45,'x131;",a:0',700,233,1034,'j",d:0.2',700,293,'},',22,'italic',45,'x2118',38,'d:0.2',700,101,28,999,'position:relative; left: .4em; top: -.8em; ',936,': 50%\\">&#x2192',60,'ic:0.154,',1025,'x0311;",ic:0.399,',22,'normal"}],cmsy10:[{c:"&#x2212',665,1025,'xB7;",',155,'2,',1025,'xD7',38,22,961,57,58,':.3em\\">&#x2A',60,120,1025,'xF7',38,1025,'x25CA;",',22,'lucida',45,'xB1',665,1025,'x2213;",',1025,'x2295;",',1025,'x2296;",',1025,'x2297;",',1025,'x2298;",',1025,'x2299;",',22,'symbol3',45,'x25EF;",',22,961,57,58,':.25em;\\">&#xB0',60,155,'1,',1025,'x2022;",',155,'2,',1025,'x224D',665,1025,'x2261',665,1025,'x2286;",',1025,'x2287;",',1025,'x2264;",',1025,'x2265;",',1025,'x227C;",',1025,'x227D;",',22,961,'"},{c:"~",',155,'2,',28,':"&#x2248',665,'d:-0.1,',1025,'x2282;",',1025,'x2283;",',1025,'x226A;",',1025,'x226B;",',1025,'x227A;",',1025,'x227B;",',1025,'x2190;",',155,'15,',22,'arrow1',45,'x2192;",',155,'15,',22,'arrow1',45,'x2191',';",h:1,',22,'arrow1a',45,'x2193',1473,22,'arrow1a',45,'x2194',38,22,'arrow1',45,'x2197',1473,22,'arrows',45,'x2198',1473,22,'arrows',45,'x2243',665,1025,'x21D0',665,22,'arrow2',45,'x21D2',665,22,'arrow2',45,'x21D1;",h:0.9,',297,22,'arrow2a',45,'x21D3;",h:0.9,',297,22,'arrow2a',45,'x21D4',665,22,'arrow2',45,'x2196',1473,22,'arrows',45,'x2199',1473,22,'arrows',45,'x221D',665,22,961,57,936,937,'margin-right',': -.1em; ',1189,':.4em\\">&#x2032',60,120,22,'lucida',45,'x221E',665,1025,'x2208;",',1025,'x220B;",',1025,'x25B3;",',1025,'x25BD;",',22,961,'"},{c:"/",',22,961,57,936,':50%; ',58,':-.3em; ',1542,':-.2em\\">|</',1004,120,28,':"&#x2200;",',1025,'x2203;",',1025,'xAC;",',155,'1,',22,'symbol1',45,'x2205;",',1025,'x211C;",',1025,'x2111;",',1025,'x22A4;",',1025,'x22A5;",',1025,'x2135;",',22,961,24,'A','",krn:{"48":0.','194','},tclass:"cal"},{c:"','B",ic:0.0304',',krn:{"48":0.','139',1603,'C",ic:0.0583',1605,'139',1603,'D",ic:0.',233,1605,293,1603,'E",ic:0.0894',1605,'111'
,1603,'F",ic:0.0993',1605,'111',1603,'G",',751,'0593',1605,'111',1603,'H",ic:0.00965',1605,'111',1603,'I",ic:0.0738',1605,233,1603,'J",',751,'185',1605,'167',1603,'K",ic:0.0144',1605,'0556',1603,'L',1601,'139',1603,'M',1601,'139',1603,'N",ic:0.147',1605,293,1603,'O",ic:0.',233,1605,'111',1603,'P",ic:0.0822',1605,293,1603,'Q",d:0.2',1605,'111',1603,'R',1601,293,1603,'S",ic:0.075',1605,'139',1603,'T",ic:0.254',1605,233,1603,'U",ic:0.0993',1605,293,1603,'V",ic:0.0822',1605,233,1603,'W",ic:0.0822',1605,293,1603,'X",ic:0.146',1605,'139',1603,'Y",ic:0.0822',1605,293,1603,'Z",ic:0.0794',1605,'139},',22,'cal',45,'x22C3;",',1025,'x22C2;",',1025,'x228E;",',1025,'x22C0;",',1025,'x22C1;",',1025,'x22A2;",',1025,'x22A3;",',22,'symbol2',45,'xF8F0',';",a:',116,28,':"&#xF8FB;",a:',116,28,':"&#xF8EE;",a:',116,28,':"&#xF8F9;",a:',116,28,':"{",',105,28,':"}",',105,28,':"&#x3008;",a:',116,28,':"&#x3009;",a:',116,28,':"|",',297,22,'vertical','"},{c:"||",',297,22,'vertical',45,'x2195',1473,'d:0.15,',22,'arrow1a',45,'x21D5;",a:0.2,',297,22,'arrows',57,'margin:-.1em\\">&#','x2216',60,'a:0.3,',297,22,'lucida',57,936,': 75%; margin:-.3em\\">&#x2240',60,22,961,57,58,': .86em\\">&#x221A',60,'h:0.04,d:0.9,',22,'lucida',45,'x2210;",a:0.4,',1025,'x2207;",',1025,'x222B',1473,297,'ic:0.111,',22,'root',45,'x2294;",',1025,'x2293;",',1025,'x2291;",',1025,'x2292;",',1025,'xA7;",',297,28,':"&#x2020;",',297,28,':"&#x2021;",',297,28,':"&#xB6;",a:0.3,',297,22,'lucida',45,'x2663;",',1025,'x2666;",',1025,'x2665;",',1025,'x2660;",',22,961,'"}],cmex10:[{c',104,'h:0.04,d:1.16,n:','16,',22,'delim1"},{c',107,1838,'17,',22,1841,400,1838,'104,',22,1841,405,1838,'105,',22,'delim1',45,1728,'",',1838,'106,',22,'delim1',45,'xF8FB',';",h:0.04,d:','1.16,n:','107,',22,'delim1',45,'xF8EE',1866,1867,'108,',22,'delim1',45,'xF8F9',1866,1867,'109,',22,1841,1741,1838,'110,',22,1841,1744,1838,'111,',22,'delim1',45,'x3008',1866,1867,'68,',22,'delim1c',45,'x3009',1866,1867,'69,',22,'delim1c"},{c',1753,'h:0.7,d:0.15,delim:{','rep:12},',22,'vertical1',1757,1910,'rep:13},',22,'ver
tical1',45,'x2215',1866,1867,'46,',22,'delim1b',45,1774,1866,1867,'47,',22,'delim1b"},{c',104,'h:0.04,d:1.76,n:','18,',22,'delim2"},{c',107,1934,'19,',22,1937,104,'h:0.04,d:2.36,n:','32,',22,'delim3"},{c',107,1944,'33,',22,1947,400,1944,'34,',22,1947,405,1944,'35,',22,'delim3',45,1728,1866,'2.36,n:','36,',22,'delim3',45,'xF8FB',1866,1966,'37,',22,'delim3',45,'xF8EE',1866,1966,'38,',22,'delim3',45,'xF8F9',1866,1966,'39,',22,'delim3',57,'margin: -.1em','\\">{</',1004,1944,'40,',22,'delim3',57,1992,'\\">}</',1004,1944,'41,',22,'delim3',45,'x3008',1866,1966,'42,',22,'delim3c',45,'x3009',1866,1966,'43,',22,'delim3c',45,'x2215',1866,1966,'44,',22,'delim3b',45,1774,1866,1966,'45,',22,'delim3b"},{c',104,'h:0.04,d:2.96,n:','48,',22,'delim4"},{c',107,2036,'49,',22,2039,400,2036,'50,',22,2039,405,2036,'51,',22,'delim4',45,1728,1866,'2.96,','n:52,',22,'delim4',45,'xF8FB',1866,2058,'n:53,',22,'delim4',45,'xF8EE',1866,2058,'n:54,',22,'delim4',45,'xF8F9',1866,2058,'n:55,',22,'delim4',57,1992,'\\">{</',1004,2036,'56,',22,'delim4',57,1992,'\\">}</',1004,2036,'57,',22,'delim4',45,'x3008',1866,2058,22,'delim4c',45,'x3009',1866,2058,22,'delim4c',45,'x2215',1866,2058,22,'delim4b',45,1774,1866,2058,22,'delim4b',45,'x2215',1866,'1.76,n:','30,',22,'delim2b',45,1774,1866,2126,'31,',22,'delim2b',45,'xF8EB',';",h:0.85,d:0.2,delim:{','top:48,bot:64,rep:66},',28,':"&#xF8F6',2139,'top:49,bot:65,rep:67},',28,':"&#xF8EE',2139,'top:50,bot:52,rep:54},',28,':"&#xF8F9',2139,'top:51,bot:53,rep:55},',28,':"&#',1728,2139,'bot:52,rep:54},',28,':"&#xF8FB',2139,'bot:53,rep:55},',28,':"&#xF8EF',2139,'top:50,rep:54},',28,':"&#xF8FA',2139,'top:51,rep:55},',28,':"&#xF8F1',2139,'top:56,mid:60,bot:58,rep:62},',28,':"&#xF8FC',2139,'top:57,mid:61,bot:59,rep:62},',28,':"&#xF8F3',2139,'top:56,bot:','58,rep:62},',28,':"&#xF8FE',2139,'top:57,bot:','59,rep:62},',28,':"&#xF8F2',2139,'rep:63},',28,':"&#xF8FD',2139,'rep:119},',28,':"&#xF8F4',2139,'rep:62},',28,1753,1910,'top:120,bot:121,rep:63},',22,'vertical2',45,'xF8ED',2139,2181,'59,rep:62},',28,':"&#xF8F8',2139,218
6,'58,rep:62},',28,':"&#xF8EC',2139,'rep:66},',28,':"&#xF8F7',2139,'rep:67},',28,':"&#x3008',1866,2126,'28,',22,'delim2c',45,'x3009',1866,2126,'29,',22,'delim2c',45,'x2294',';",h:0,d:1,n:','71,',22,'bigop1',45,1805,'h:0.1,d:1.5,',22,'bigop2',45,'x222E;",h:0,d:','1.11,ic:0.095,n:73,',22,'bigop1c',45,2250,'2.22,ic:0.222,',22,'bigop2c',45,'x2299',2240,'75,',22,'bigop1',45,1403,'h:0.1,d:1.5,',22,'bigop2',45,'x2295',2240,'77,',22,'bigop1',45,1395,'h:0.1,d:1.5,',22,'bigop2',45,'x2297',2240,'79,',22,'bigop1',45,1399,'h:0.1,d:1.5,',22,'bigop2',45,'x2211',2240,'88,tcl'],
+  ['ass:"','bigop1a','"},{c:"&#','x220F',';",h:0,d:1,n:','89,','tclass:"',1,2,'x222B;",h:0,d:','1.11,','ic:0.','095,n:90,',6,'bigop1c',2,'x222A',4,'91,',6,'bigop1b',2,'x2229',4,'92,',6,20,2,'x228E',4,'93,',6,20,2,'x2227',4,'94,',6,'bigop1',2,'x2228',4,'95,',6,38,2,'x2211',';",h:0.1,d:1.','6,',6,'bigop2a',2,'x220F',47,'5,',6,50,2,9,'2.22,',11,'222,',6,'bigop2c',2,16,47,'5,',6,'bigop2b',2,22,47,'5,',6,69,2,'x228E',47,'5,',6,69,2,34,47,'5,',6,'bigop2',2,40,47,'5,',6,87,2,'x2210',4,'97,',6,1,2,'x2210',47,'5,',6,50,2,'xFE3F;",h:0.','722,w:0.','65,n:99,',6,'wide1',2,107,'85,w:1.1,n:100,',6,'wide2',2,107,'99,w:1.65,',6,'wide3',2,'x2053;",h:0.',108,'75,n:102,',6,'wide1a',2,123,'8,w:1.35,n:103,',6,'wide2a',2,123,'99,w:2,',6,'wide3a"},{c:"[",','h:0.04,d:1.76,n:','20,',6,'delim2','"},{c:"]",',138,'21,',6,141,2,'xF8F0;",',138,'22,',6,141,2,'xF8FB;",',138,'23,',6,141,2,'xF8EE;",',138,'24,',6,141,2,'xF8F9",',138,'25,',6,141,'"},{c:"<','span style=\\"','margin: -.1em','\\">{</span>",',138,'26,',6,141,'"},{c:"<',172,173,'\\">}</span>",',138,'27,',6,141,'"},{c:"<span style=\\"font-size: ','125','%; position:relative; top:.','95em','\\">&#x221A;</span>",h:0.','04,d:1.16,n:113,',6,'root',187,'190',189,'925em',191,'04,d:1.76,n:114,',6,194,187,'250',189,'925em',191,'06,d:2.36,n:115,',6,194,187,'320',189,'92em',191,'08,d:2.96,n:116,',6,194,187,'400',189,'92em',191,'1,d:3.75,n:117,',6,194,187,'500',189,'9em',191,'12,d:4.5,n:118,',6,194,187,'625',189,'9em',191,'14,d:5.7,',6,194,'"},{c:"||",h:0.65,d:0.15',',delim:{top:126,','bot:127,rep:119},',6,'vertical2',2,'x25B5;",h:0.','4,delim:{top:120,rep:63},',6,'arrow1b',2,'x25BF;",h:0.','38,delim:{bot:121,rep:63},',6,252,187,'67',189,'35em','; margin-left:-.','5em\\">&#x256D',';</span>",','h:0.1,',6,'symbol',187,'67',189,'35em; margin-right:-.5em\\">&#','x256E',264,265,6,267,187,'67',189,'35em',262,'5em\\">&#x2570',264,265,6,267,187,'67',189,271,'x256F',264,265,6,267,2,249,'5',244,'rep:119},',6,'arrow2b',2,254,'6,d:-0.1,delim:{bot:127,rep:119},',6,302,'"}],cmti10',':[{c:"&Gamma;",',11,'133,',
6,'igreek"},{c:"&','Delta;",',6,313,'Theta;",','ic:0.094,',6,313,'Lambda;",',6,313,'Xi;",',11,'153,',6,313,'Pi;",',11,'164,',6,313,'Sigma;",',11,'12,',6,313,'Upsilon;",',11,'111,',6,313,'Phi;",',11,'0599,',6,313,'Psi;",',11,341,6,313,'Omega;",','ic:0.103,',6,'igreek','"},{c:"ff','",ic:0.212,krn:{"39":0.104,"63":0.104,"33":0.104,"41":0.104,"93":0.104},lig:{"105":','14,"108":15},','tclass:"italic"},{c',':"fi','",ic:0.103,',361,':"fl',363,361,':"ffi',363,361,':"ffl',363,361,':"&#x131;",a:0,',11,'0767,',361,':"j",d:0.2,',11,'0374,',361,':"&#x60;",',6,'iaccent',2,'xB4;",',11,'0969,',6,384,2,'x2C7;",',11,'083,',6,384,2,'x2D8;",',11,'108,',6,384,2,'x2C9;",',355,6,384,2,'x2DA;",',6,384,'"},{c:"?",','d:0.17,w:0.46,',361,':"&#xDF;",',11,'105,',361,':"&#xE6;",a:0,','ic:0.0751,',361,':"&#x153;",a:0,',420,361,':"&#xF8;",',11,'0919,',361,':"&#xC6;",',11,'12,',361,':"&#x152;",',11,'12,',361,':"&#xD8;",',318,361,':"?",krn:{"108":-0.','256,"76":-0.321},',361,':"!",','ic:0.124,lig:{"96":','60},',361,':"&#x201D;",',11,'0696,',361,':"#",',11,'0662,',361,':"$",',361,':"%",',11,'136,',361,':"&amp;",',11,'0969,',361,':"&#x2019;",',11,'124,','krn:{"63":0.','102,"33":0.102},lig:{"39":34},',361,':"(",d:0.2,',11,'162,',361,':")",d:0.2,',11,'0369,',361,':"*",',11,'149,',361,':"+",a:0.1,',11,'0369,',361,':",",a:-0.3,d:0.2,w:0.278,',361,':"-",a:0,',11,'0283',',lig:{"45":','123},',361,':".",a:-0.25,',361,':"/",',11,'162,',361,':"0",',11,'136,',361,':"1",',11,'136,',361,':"2",',11,'136,',361,':"3",',11,'136,',361,':"4",',11,'136,',361,':"5",',11,'136,',361,':"6",',11,'136,',361,':"7",',11,'136,',361,':"8",',11,'136,',361,':"9",',11,'136,',361,':":",',11,'0582,',361,':";",',11,'0582,',361,':"&#xA1;",',11,'0756,',361,':"=",a:0,d:-0.1,',11,'0662,',361,':"&#xBF;",',361,':"?",','ic:0.122,','lig:{"96":','62},',361,':"@",',11,'096,',361,':"A",','krn:{"110":-0.0256,"108":-0.0256,"114":-0.0256,"117":-0.0256,"109":-0.0256,"116":-0.0256,"105":-0.0256,"67":-0.0256,"79":-0.0256,"71":-0.0256,"104":-0.0256,"98":-0.0256,"85":-0.0256,"107":-0.0256,"118":-0.025
6,"119":-0.0256,"81":-','0.0256,"84','":-0.0767,"','89',571,'86','":-0.102,"','87',575,'101','":-0.0511,"','97',579,'111',579,'100',579,'99',579,'103',579,'113','":-0.0511','},',361,':"B',363,361,':"C",','ic:0.145,',361,':"D",',318,'krn:{"88','":-0.0256,"','87',603,'65',603,'86',603,'89":-0.','0256},',361,':"E",',11,'12,',361,':"F','",ic:0.133,krn:{"','111',571,'101',571,'117','":-0.0767,"114":-0.0767,"97":-0.0767,"','65',575,'79',603,'67',603,'71',603,'81":-0.0256','},',361,':"G",',11,'0872,',361,':"H",',11,'164,',361,':"I",',11,'158,',361,':"J",',11,'14,',361,':"K",',598,'krn:{"79',603,'67',603,'71',603,633,'},',361,':"L",krn:{"84',571,'89',571,'86',575,'87',575,'101',579,'97',579,'111',579,'100',579,'99',579,'103',579,'113',591,'},',361,':"M",',11,'164,',361,':"N",',11,'164,',361,':"O",',318,'krn:{"88',603,'87',603,'65',603,'86',603,610,'0256},',361,':"P',363,'krn:{"65":-0.0767},',361,':"Q",d:0.1,',318,361,':"R",',11,'0387,',569,'0.0256,"84',571,'89',571,'86',575,'87',575,'101',579,'97',579,'111',579,'100',579,'99',579,'103',579,'113',591,'},',361,':"S",',11,'12,',361,':"T',618,'121',571,'101',571,'111',624,'117',571,'65":-0.0767},',361,':"U",',11,'164,',361,':"V",ic:0.','184,krn:{"','111',571,'101',571,'117',624,'65',575,'79',603,'67',603,'71',603,633,'},',361,':"W",ic:0.',764,'65":-0.0767},',361,':"X",',11,'158,krn:{"79',603,'67',603,'71',603,633,'},',361,':"Y",',11,'194',',krn:{"101',571,'111',624,'117',571,'65":-0.0767},',361,':"Z",',598,361,':"[",d:0.1,',11,'188,',361,':"&#x201C;",',11,'169,',361,':"]",d:0.1,',11,'105,',361,':"&#x2C6;",',11,'0665,',6,384,2,'x2D9;",',11,'118,',6,384,2,'x2018;",',444,'92},',361,':"a','",a:0,ic:0.',376,361,':"b",',11,'0631',800,579,'97',579,'111',579,'100',579,'99',579,'103',579,'113',591,'},',361,':"c',840,'0565',800,579,'97',579,'111',579,'100',579,'99',579,'103',579,'113',591,'},',361,':"d',363,'krn:{"108":','0.0511},',361,':"e',840,'0751',800,579,'97',579,'111',579,'100',579,'99',579,'103',579,'113',591,'},',361,':"f',359,'12,"102":11,"108":13},',361,':"g','",a:0,d:0.2,
ic:0.','0885,',361,':"h",',11,376,361,':"i",',11,'102,',361,378,598,361,':"k",',11,400,361,':"l',363,883,'0.0511},',361,':"m',840,376,361,':"n',840,376,'krn:{"39":-0.102},',361,':"o',840,'0631',800,579,'97',579,'111',579,'100',579,'99',579,'103',579,'113',591,'},',361,':"p',910,'0631',800,579,'97',579,'111',579,'100',579,'99',579,'103',579,'113',591,'},',361,':"q',910,'0885,',361,':"r',840,'108',800,579,'97',579,'111',579,'100',579,'99',579,'103',579,'113',591,'},',361,':"s',840,'0821,',361,':"t",',11,'0949,',361,':"u',840,376,361,':"v',840,400,361,':"w',840,400,883,'0.0511},',361,':"x',840,'12,',361,':"y',910,'0885,',361,':"z',840,'123,',361,':"&#x2013;",a:0.1,ic:0.','0921',492,'124},',361,':"&#x2014;",a:0.1,ic:0.','0921,',361,':"&#x2DD;",',560,6,384,2,'x2DC;",',11,'116,',6,384,2,'xA8;",',6,384,'"}],cmbx10',309,6,'bgreek"},{c:"&','Delta;",',6,1062,317,6,1062,'Lambda;",',6,1062,324,6,1062,329,6,1062,334,6,1062,339,6,1062,344,6,1062,349,6,1062,354,6,'bgreek','"},{c:"ff','",ic:0.0778,krn:{"39":0.0778,"63":0.0778,"33":0.0778,"41":0.0778,"93":0.0778},lig:{"105":','14,"108":15},','tclass:"bold"},{c',':"fi",',1096,':"fl",',1096,':"ffi",',1096,':"ffl",',1096,374,1096,378,1096,':"&#x60;",',6,'baccent',2,386,6,1111,2,392,6,1111,2,398,6,1111,2,404,6,1111,2,'x2DA;",',6,1111,412,1096,415,1096,419,1096,422,1096,425,1096,429,1096,433,1096,437,1096,440,'278,"76":-0.319},',1096,443,561,'60},',1096,447,1096,451,1096,':"$",',1096,457,1096,461,1096,465,468,'111,"33":0.111},lig:{"39":34},',1096,471,1096,475,1096,479,1096,483,1096,':",",a:-0.3,d:0.2,w:0.278,',1096,':"-",a:0',492,'123},',1096,':".",a:-0.25,',1096,497,1096,501,1096,505,1096,509,1096,513,1096,517,1096,521,1096,525,1096,529,1096,533,1096,537,1096,541,1096,545,1096,549,1096,553,1096,':"&#xBF;",',1096,559,561,'62},',1096,564,1096,':"A",krn:{"116','":-0.0278,"','67',1224,'79',1224,'71',1224,'85',1224,'81',1224,'84','":-0.0833,"','89',1236,'86":-0.','111,"87":-0.111},',1096,':"B",',1096,597,1096,':"D",krn:{"88',1224,'87',1224,'65',1224,'86',1224,610,'0278},',1096,613,1096,'
:"F",krn:{"111',1236,'101',1236,'117','":-0.0833,"114":-0.0833,"97":-0.0833,"65":-0.','111,"79',1224,'67',1224,'71',1224,'81":-0.0278','},',1096,636,1096,640,1096,':"I",krn:{"73":0.0278},',1096,648,1096,':"K",krn:{"79',1224,'67',1224,'71',1224,1271,'},',1096,':"L",krn:{"84',1236,'89',1236,1239,'111,"87":-0.111},',1096,687,1096,691,1096,':"O",krn:{"88',1224,'87',1224,'65',1224,'86',1224,610,'0278},',1096,':"P",krn:{"65',1236,'111',1224,'101',1224,'97',1224,'46',1236,'44":-0.0833},',1096,712,1096,':"R",krn:{"116',1224,'67',1224,'79',1224,'71',1224,'85',1224,'81',1224,'84',1236,'89',1236,1239,'111,"87":-0.111},',1096,743,1096,':"T",krn:{"121',1224,'101',1236,'111',1264,'0833,"117":-0.0833','},',1096,759,1096,763,'0139,krn:{"','111',1236,'101',1236,'117',1264,'111,"79',1224,'67',1224,'71',1224,1271,'},',1096,782,1360,'111',1236,'101',1236,'117',1264,'111,"79',1224,'67',1224,'71',1224,1271,'},',1096,':"X",krn:{"79',1224,'67',1224,'71',1224,1271,'},',1096,':"Y",',11,'025',800,1236,'111',1264,1354,'},',1096,808,1096,811,1096,815,1096,819,1096,823,6,1111,2,829,6,1111,2,835,561,'92},',1096,':"a','",a:0,krn:{"','118',1224,'106":0.','0556,"121',1224,'119":-0.','0278},',1096,':"b",krn:{"101','":0.0278,"','111',1443,'120',1224,'100',1443,'99',1443,'113',1443,'118',1224,1436,'0556,"121',1224,1439,'0278},',1096,':"c',1433,'104',1224,'107":-0.0278},',1096,':"d",',1096,':"e",a:0,',1096,':"f',1094,'12,"102":11,"108":13},',1096,':"g',910,1360,1436,'0278},',1096,':"h",krn:{"116',1224,'117',1224,'98',1224,'121',1224,'118',1224,1439,'0278},',1096,917,1096,378,1096,':"k",krn:{"97":-0.0556,"101',1224,'97',1224,'111',1224,'99":-0.','0278},',1096,':"l",',1096,':"m',1433,'116',1224,'117',1224,'98',1224,'121',1224,'118',1224,1439,'0278},',1096,':"n',1433,'116',1224,'117',1224,'98',1224,'121',1224,'118',1224,1439,'0278},',1096,':"o",a:0',800,1443,'111',1443,'120',1224,'100',1443,'99',1443,'113',1443,'118',1224,1436,'0556,"121',1224,1439,'0278},',1096,':"p",a:0,d:0.2',800,1443,'111',1443,'120',1224,'100',1443,'99',1443,'113',1443,'118',1224,
1436,'0556,"121',1224,1439,'0278},',1096,':"q",a:0,d:0.2,',1096,':"r",a:0,',1096,':"s",a:0,',1096,':"t",krn:{"121',1224,1439,'0278},',1096,':"u',1433,1439,'0278},',1096,':"v',840,1360,'97":-0.0556,"101',1224,'97',1224,'111',1224,1505,'0278},',1096,':"w',840,'0139',800,1224,'97',1224,'111',1224,1505,'0278},',1096,':"x",a:0,',1096,':"y',910,1360,'111',1224,'101',1224,'97',1224,'46',1236,'44":-0.0833},',1096,':"z",a:0,',1096,1037,'0278',492,'124},',1096,1042,'0278,',1096,1045,6,1111,2,1050,6,1111,2,'xA8;",',6,1111,'"}]});','jsMath.Setup.Styles({".typeset .','cmr10','":"font-family: ','serif','",".typeset .','italic":"font-style: italic',1663,'bold":"font-weight: bold',1663,'lucida":"font-family: \'Lucida Grande','\'",".typeset .','asymbol','":"font-family: \'Apple ','Symbols\'; ','font-size: ','115','%",".typeset .','cal',1671,'Chancery',1669,'arrows','":"font-family: \'Hiragino Mincho Pro',1669,'arrow1',1681,'\'; ','position: relative; top',': .075em; margin: -1px',1663,'arrow1a',1681,'\'; margin:-.','3em',1663,252,1661,'AppleGothic','; ',1673,'50',1675,'arrow2',1661,'Symbol','; ',1673,'140%; ',1686,': .','1em; margin:-1px',1663,'arrow2a',1661,1703,1663,302,1661,1696,'; ',1673,'67',1675,'harpoon',1661,1696,'; ',1673,'90',1675,267,1681,1669,'symbol2',1681,1691,'2em',1663,'symbol3',1661,1696,1663,'delim1',1661,'Times; ',1673,'133',189,'75em',1663,'delim1b',1681,'\'; ',1673,'133',189,'8em; ',173,1663,'delim1c',1661,1703,'; ',1673,'120',189,'8em',';",".typeset .',141,1661,'Baskerville','; ',1673,'180',189,1747,1663,'delim2b',1681,'\'; ',1673,'190',189,'8em; ',173,1663,'delim2c',1661,1703,'; ',1673,'167',189,'8em',1766,'delim3',1661,1769,'; ',1673,'250',189,'725em',1663,'delim3b',1681,'\'; ',1673,'250',189,'8em; ',173,1663,'delim3c',1661,267,'; ',1673,'240',189,'775em',1766,'delim4',1661,1769,'; ',1673,'325',189,'7em',1663,'delim4b',1681,'\'; ',1673,'325',189,'8em; ',173,1663,'delim4c',1661,1703,'; ',1673,'300',189,'8em',1766,'vertical',1661,'Copperplate',1663,'vertical1',1661,1850,'; ',1673,'85%; margin: .','15em',176
6,247,1661,1850,'; ',1673,1857,'17em',1766,'greek',1661,1662,1663,357,1661,1662,'; font-style:italic',1663,1092,1661,1662,'; font-weight:bold',1663,38,1681,'\'; ',1673,'133%; ',1686,': .85em','; margin:-.','05em',1663,1,1661,1769,'; ',1673,'100%; ',1686,': .775em',1766,20,1681,'\'; ',1673,'160%; ',1686,': .7em','; margin:-.1em',1663,14,1661,'Apple Symbols','; ',1673,'125%; ',1686,': .',1747,1908,1766,87,1681,'\'; ',1673,'200%; ',1686,': .8em',1889,'07em',1663,50,1661,1769,'; ',1673,'175%; ',1686,1907,1766,69,1681,'\'; ',1673,'270%; ',1686,': .62em',1908,1663,63,1671,'Symbols\'; ',1673,'250%; ',1686,1907,1889,'17em',1766,111,'":"',1673,'67%; ',1686,':-.8em',1663,116,'":"',1673,'110%; ',1686,':-.5em',1663,121,'":"',1673,'175%; ',1686,':-.32em',1663,127,'":"',1673,'75%; ',1686,1971,1663,132,'":"',1673,'133%; ',1686,': -.15em',1663,'wide3a":"',1673,'200%; ',1686,': -.05em',1663,194,1661,1769,1766,'accent":"',1686,': .02em',1663,384,'":"',1686,2006,'; font-style:italic',1663,1111,'":"',1686,2006,1880,'"});jsMath.noAppleSymbols=(jsMath.BBoxFor("&#x2223;").w==jsMath.BBoxFor("<',172,'font-family: ',1912,'\\">&#x2223;</span>").w);','if(jsMath.noAppleSymbols){jsMath.Update.TeXfonts({cmsy10:{"','16":{c:"<','span style=\\"position:relative',';top:.','25em; ',1673,'67%\\">&#x2323;</span><',2026,';top:-.15em;font-size:67%;','margin-left:-','1em\\">&#x2322',264,6,'normal"},"','22','":{c:"&#','x227A;<',2026,2027,'3em; ',2033,'1em\\">&','mdash',264,6,2037,'23',2039,'x227B;<',2026,2027,2043,2033,2045,'mdash',264,6,2037,'91','":{c:"&#x222A',';"},"92',2039,22,';"},"93',2063,';<',172,1673,'50%; ',2033,'1.1em; ',1686,':-.3em; margin-right:.4em\\">+</span','>"},"94',2039,34,';"},"95',2039,40,';"},"96":{c:"|<',2026,'; top:-.15em',262,2045,'ndash',264,6,2037,'109',2039,'x21D1;<',2026,'; top:.','1em',262,'6em\\">&#x21D3',264,'h:0.9,d:0.2,',6,1711,'"}},cmex10:{"85',2063,';<',172,1673,'50%; ',2033,'1.1em; ',1686,2076,'>"},"93',2063,';<',172,1673,'50%; ',2033,'1.1em; ',1686,2076,'>"}}});jsMath.Macro("rightleftharpoons","\\\\unicode{x21CC}")
;}else{',1659,'harpoon',1661,1912,'; ',1673,'125%"});}','if(jsMath.browser=="','OmniWeb"){jsMath.Update.TeXfonts({cmsy10:{"55":{c:"<',172,1673,'75%; ','position:relative','; left:.3em',2085,262,'3em\\">&#x02EB;</span>"},"104":{c:"<',2026,2096,'2em',262,'55em\\">&#x3008;</span>"},"105":{c:"<',2026,2096,'2em','; margin-right',':-.55em\\">&#x3009;</span>"}}});',1659,'arrow2',1661,1703,'; ',1673,'100%; ',1686,': -.',1709,'"});',2024,'22',2039,'x227A;<',2026,2027,'25em',262,'8em',2150,':.2em\\">&ndash',264,6,2037,'23',2039,'x227B;<',2026,2027,'25em',262,'7em',2150,':.',2045,'ndash',264,6,2037,'96":{c:"<',172,'font-size:80%; ',2137,2085,'\\">|</span><',2026,'; top:-.1em',262,2045,'ndash',264,6,'normal"}}});}}',2132,'Opera"){',1659,14,'":"margin:0pt .12em 0pt 0pt',1766,63,2210,';"});}',2132,'Mozilla','"){jsMath.Setup.Script("jsMath-fallback-mac-','mozilla.js");}',2132,'MSIE',2217,'msie.js");}jsMath.Macro("not","\\\\mathrel{\\\\rlap{\\\\kern 4mu/}}");jsMath.Box.defaultH=0.8;jsMath.Script.End();']
+]);
Index: loncom/html/adm/jsMath/jsMath-fallback-pc.js
diff -u loncom/html/adm/jsMath/jsMath-fallback-pc.js:1.2 loncom/html/adm/jsMath/jsMath-fallback-pc.js:1.3
--- loncom/html/adm/jsMath/jsMath-fallback-pc.js:1.2	Wed Dec  7 13:57:44 2005
+++ loncom/html/adm/jsMath/jsMath-fallback-pc.js	Mon Mar 27 14:32:07 2006
@@ -8,1012 +8,22 @@
  *
  *  ---------------------------------------------------------------------
  *
- *  jsMath is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  jsMath is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with jsMath; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *  Copyright 2004-2006 by Davide P. Cervone
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
  */
 
-
-
-/********************************************************************
- *
- *  Here we replace the TeX character mappings by equivalent unicode
- *  points when possible, and adjust the character dimensions
- *  based on the fonts we hope we get them from (the styles are set
- *  to try to use the best characters available in the standard
- *  fonts).
- */
-
-jsMath.Add(jsMath.TeX,{
-
-  cmr10: [
-    // 00 - 0F
-    {c: '&Gamma;', tclass: 'greek'},
-    {c: '&Delta;', tclass: 'greek'},
-    {c: '&Theta;', tclass: 'greek'},
-    {c: '&Lambda;', tclass: 'greek'},
-    {c: '&Xi;', tclass: 'greek'},
-    {c: '&Pi;', tclass: 'greek'},
-    {c: '&Sigma;', tclass: 'greek'},
-    {c: '&Upsilon;', tclass: 'greek'},
-    {c: '&Phi;', tclass: 'greek'},
-    {c: '&Psi;', tclass: 'greek'},
-    {c: '&Omega;', tclass: 'greek'},
-    {c: 'ff', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 14, '108': 15}, tclass: 'normal'},
-    {c: 'fi', tclass: 'normal'},
-    {c: 'fl', tclass: 'normal'},
-    {c: 'ffi', tclass: 'normal'},
-    {c: 'ffl', tclass: 'normal'},
-    // 10 - 1F
-    {c: '&#x131;', a:0, tclass: 'normal'},
-    {c: 'j', d:.2, tclass: 'normal'},
-    {c: '&#x2CB;', tclass: 'accent'},
-    {c: '&#x2CA;', tclass: 'accent'},
-    {c: '&#x2C7;', tclass: 'accent'},
-    {c: '&#x2D8;', tclass: 'accent'},
-    {c: '&#x2C9;', tclass: 'accent'},
-    {c: '&#x2DA;', tclass: 'accent'},
-    {c: '&#x0327;', tclass: 'normal'},
-    {c: '&#xDF;', tclass: 'normal'},
-    {c: '&#xE6;', a:0, tclass: 'normal'},
-    {c: '&#x153;', a:0, tclass: 'normal'},
-    {c: '&#xF8;', tclass: 'normal'},
-    {c: '&#xC6;', tclass: 'normal'},
-    {c: '&#x152;', tclass: 'normal'},
-    {c: '&#xD8;', tclass: 'normal'},
-    // 20 - 2F
-    {c: '?', krn: {'108': -0.278, '76': -0.319}, tclass: 'normal'},
-    {c: '!', lig: {'96': 60}, tclass: 'normal'},
-    {c: '&#x201D;', tclass: 'normal'},
-    {c: '#', tclass: 'normal'},
-    {c: '$', tclass: 'normal'},
-    {c: '%', tclass: 'normal'},
-    {c: '&amp;', tclass: 'normal'},
-    {c: '&#x2019;', krn: {'63': 0.111, '33': 0.111}, lig: {'39': 34}, tclass: 'normal'},
-    {c: '(', d:.2, tclass: 'normal'},
-    {c: ')', d:.2, tclass: 'normal'},
-    {c: '*', tclass: 'normal'},
-    {c: '+', a:.1, tclass: 'normal'},
-    {c: ',', a:-.3, d:.2, w: 0.278, tclass: 'normal'},
-    {c: '-', a:0, lig: {'45': 123}, tclass: 'normal'},
-    {c: '.', a:-.25, tclass: 'normal'},
-    {c: '/', tclass: 'normal'},
-    // 30 - 3F
-    {c: '0', tclass: 'normal'},
-    {c: '1', tclass: 'normal'},
-    {c: '2', tclass: 'normal'},
-    {c: '3', tclass: 'normal'},
-    {c: '4', tclass: 'normal'},
-    {c: '5', tclass: 'normal'},
-    {c: '6', tclass: 'normal'},
-    {c: '7', tclass: 'normal'},
-    {c: '8', tclass: 'normal'},
-    {c: '9', tclass: 'normal'},
-    {c: ':', tclass: 'normal'},
-    {c: ';', tclass: 'normal'},
-    {c: '&#xA1;', tclass: 'normal'},
-    {c: '=', a:0, d:-.1, tclass: 'normal'},
-    {c: '&#xBF;', tclass: 'normal'},
-    {c: '?', lig: {'96': 62}, tclass: 'normal'},
-    // 40 - 4F
-    {c: '@', tclass: 'normal'},
-    {c: 'A', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
-    {c: 'B', tclass: 'normal'},
-    {c: 'C', tclass: 'normal'},
-    {c: 'D', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
-    {c: 'E', tclass: 'normal'},
-    {c: 'F', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
-    {c: 'G', tclass: 'normal'},
-    {c: 'H', tclass: 'normal'},
-    {c: 'I', krn: {'73': 0.0278}, tclass: 'normal'},
-    {c: 'J', tclass: 'normal'},
-    {c: 'K', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
-    {c: 'L', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
-    {c: 'M', tclass: 'normal'},
-    {c: 'N', tclass: 'normal'},
-    {c: 'O', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
-    // 50 - 5F
-    {c: 'P', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
-    {c: 'Q', d: 1, tclass: 'normal'},
-    {c: 'R', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
-    {c: 'S', tclass: 'normal'},
-    {c: 'T', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
-    {c: 'U', tclass: 'normal'},
-    {c: 'V', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
-    {c: 'W', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
-    {c: 'X', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
-    {c: 'Y', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
-    {c: 'Z', tclass: 'normal'},
-    {c: '[', d:.1, tclass: 'normal'},
-    {c: '&#x201C;', tclass: 'normal'},
-    {c: ']', d:.1, tclass: 'normal'},
-    {c: '&#x2C6;', tclass: 'accent'},
-    {c: '&#x2D9;', tclass: 'accent'},
-    // 60 - 6F
-    {c: '&#x2018;', lig: {'96': 92}, tclass: 'normal'},
-    {c: 'a', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: 'b', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: 'c', a:0, krn: {'104': -0.0278, '107': -0.0278}, tclass: 'normal'},
-    {c: 'd', tclass: 'normal'},
-    {c: 'e', a:0, tclass: 'normal'},
-    {c: 'f', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'normal'},
-    {c: 'g', a:0, d:1, ic: 0.0139, krn: {'106': 0.0278}, tclass: 'normal'},
-    {c: 'h', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: 'i', tclass: 'normal'},
-    {c: 'j', d:1, tclass: 'normal'},
-    {c: 'k', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
-    {c: 'l', tclass: 'normal'},
-    {c: 'm', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: 'n', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: 'o', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    // 70 - 7F
-    {c: 'p', a:0, d:1, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: 'q', a:0, d:1, tclass: 'normal'},
-    {c: 'r', a:0, tclass: 'normal'},
-    {c: 's', a:0, tclass: 'normal'},
-    {c: 't', krn: {'121': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: 'u', a:0, krn: {'119': -0.0278}, tclass: 'normal'},
-    {c: 'v', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
-    {c: 'w', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
-    {c: 'x', a:0, tclass: 'normal'},
-    {c: 'y', a:0, d:1, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
-    {c: 'z', a:0, tclass: 'normal'},
-    {c: '&#x2013;', a:.1, ic: 0.0278, lig: {'45': 124}, tclass: 'normal'},
-    {c: '&#x2014;', a:.1, ic: 0.0278, tclass: 'normal'},
-    {c: '&#x2DD;', tclass: 'accent'},
-    {c: '&#x2DC;', tclass: 'accent'},
-    {c: '&#xA8;', tclass: 'accent'}
-  ],
-  
-  cmmi10: [
-    // 00 - 0F
-    {c: '<I>&Gamma;</I>', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'greek'},
-    {c: '<I>&Delta;</I>', krn: {'127': 0.167}, tclass: 'greek'},
-    {c: '<I>&Theta;</I>', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '<I>&Lambda;</I>', krn: {'127': 0.167}, tclass: 'greek'},
-    {c: '<I>&Xi;</I>', ic: 0.0757, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '<I>&Pi;</I>', ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'greek'},
-    {c: '<I>&Sigma;</I>', ic: 0.0576, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '<I>&Upsilon;</I>', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0556}, tclass: 'greek'},
-    {c: '<I>&Phi;</I>', krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '<I>&Psi;</I>', ic: 0.11, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'greek'},
-    {c: '<I>&Omega;</I>', ic: 0.0502, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '&alpha;', a:0, ic: 0.0037, krn: {'127': 0.0278}, tclass: 'greek'},
-    {c: '&beta;', d:1, ic: 0.0528, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '&gamma;', a:0, d:1, ic: 0.0556, tclass: 'greek'},
-    {c: '&delta;', ic: 0.0378, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'greek'},
-    {c: '&epsilon;', a:0, krn: {'127': 0.0556}, tclass: 'lucida'},
-    // 10 - 1F
-    {c: '&zeta;', d:1, ic: 0.0738, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '&eta;', a:0, d:1, ic: 0.0359, krn: {'127': 0.0556}, tclass: 'greek'},
-    {c: '&theta;', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '&iota;', a:0, krn: {'127': 0.0556}, tclass: 'greek'},
-    {c: '&kappa;', a:0, tclass: 'greek'},
-    {c: '&lambda;', tclass: 'greek'},
-    {c: '&mu;', a:0, d:1, krn: {'127': 0.0278}, tclass: 'greek'},
-    {c: '&nu;', a:0, ic: 0.0637, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}, tclass: 'greek'},
-    {c: '&xi;', d:1, ic: 0.046, krn: {'127': 0.111}, tclass: 'greek'},
-    {c: '&pi;', a:0, ic: 0.0359, tclass: 'greek'},
-    {c: '&rho;', a:0, d:1, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '&sigma;', a:0, ic: 0.0359, krn: {'59': -0.0556, '58': -0.0556}, tclass: 'greek'},
-    {c: '&tau;', a:0, ic: 0.113, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}, tclass: 'greek'},
-    {c: '&upsilon;', a:0, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'greek'},
-    {c: '&phi;', a:.1, d:1, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '&chi;', a:0, d:1, krn: {'127': 0.0556}, tclass: 'greek'},
-    // 20 - 2F
-    {c: '&psi;', a:.1, d:1, ic: 0.0359, krn: {'127': 0.111}, tclass: 'greek'},
-    {c: '&omega;', a:0, ic: 0.0359, tclass: 'greek'},
-    {c: '&epsilon;', a:0, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '&#x3D1;', krn: {'127': 0.0833}, tclass: 'lucida'},
-    {c: '&#x3D6;', a:0, ic: 0.0278, tclass: 'lucida'},
-    {c: '&#x3F1;', a:0, d:1, krn: {'127': 0.0833}, tclass: 'lucida'},
-    {c: '&#x3C2;', a:0, d:1, ic: 0.0799, krn: {'127': 0.0833}, tclass: 'lucida'},
-    {c: '&#x3D5;', a:.1, d:1, krn: {'127': 0.0833}, tclass: 'lucida'},
-    {c: '&#x21BC;', a:0, d:-.2, tclass: 'arrows'},
-    {c: '&#x21BD;', a:0, d:-.1, tclass: 'arrows'},
-    {c: '&#x21C0;', a:0, d:-.2, tclass: 'arrows'},
-    {c: '&#x21C1;', a:0, d:-.1, tclass: 'arrows'},
-    {c: '<SPAN STYLE="position:relative; top:-.1em">&#x02D3;</SPAN>', a:.1, tclass: 'symbol'},
-    {c: '<SPAN STYLE="position:relative; top:-.1em">&#x02D2;</SPAN>', a:.1, tclass: 'symbol'},
-    {c: '&#x25B9;', tclass: 'symbol'},
-    {c: '&#x25C3;', tclass: 'symbol'},
-    // 30 - 3F
-    {c: '0', tclass: 'normal'},
-    {c: '1', tclass: 'normal'},
-    {c: '2', tclass: 'normal'},
-    {c: '3', tclass: 'normal'},
-    {c: '4', tclass: 'normal'},
-    {c: '5', tclass: 'normal'},
-    {c: '6', tclass: 'normal'},
-    {c: '7', tclass: 'normal'},
-    {c: '8', tclass: 'normal'},
-    {c: '9', tclass: 'normal'},
-    {c: '.', a:-.3, tclass: 'normal'},
-    {c: ',', a:-.3, d:.2, tclass: 'normal'},
-    {c: '&lt;', a:.1, tclass: 'normal'},
-    {c: '<SPAN STYLE="font-size:133%; position:relative; top:.1em">/</SPAN>', d:.1, krn: {'1': -0.0556, '65': -0.0556, '77': -0.0556, '78': -0.0556, '89': 0.0556, '90': -0.0556}, tclass: 'normal'},
-    {c: '&gt;', a:.1, tclass: 'normal'},
-    {c: '&#x22C6;', a:0, tclass: 'arial'},
-    // 40 - 4F
-    {c: '&#x2202;', ic: 0.0556, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>A</I>', krn: {'127': 0.139}, tclass: 'normal'},
-    {c: '<I>B</I>', ic: 0.0502, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>C</I>', ic: 0.0715, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
-    {c: '<I>D</I>', ic: 0.0278, krn: {'127': 0.0556}, tclass: 'normal'},
-    {c: '<I>E</I>', ic: 0.0576, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>F</I>', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'normal'},
-    {c: '<I>G</I>', krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>H</I>', ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'normal'},
-    {c: '<I>I</I>', ic: 0.0785, krn: {'127': 0.111}, tclass: 'normal'},
-    {c: '<I>J</I>', ic: 0.0962, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.167}, tclass: 'normal'},
-    {c: '<I>K</I>', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'normal'},
-    {c: '<I>L</I>', krn: {'127': 0.0278}, tclass: 'normal'},
-    {c: '<I>M</I>', ic: 0.109, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
-    {c: '<I>N</I>', ic: 0.109, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
-    {c: '<I>O</I>', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'normal'},
-    // 50 - 5F
-    {c: '<I>P</I>', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'normal'},
-    {c: '<I>Q</I>', d:1, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>R</I>', ic: 0.00773, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>S</I>', ic: 0.0576, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
-    {c: '<I>T</I>', ic: 0.139, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
-    {c: '<I>U</I>', ic: 0.109, krn: {'59': -0.111, '58': -0.111, '61': -0.0556, '127': 0.0278}, tclass: 'normal'},
-    {c: '<I>V</I>', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'normal'},
-    {c: '<I>W</I>', ic: 0.139, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'normal'},
-    {c: '<I>X</I>', ic: 0.0785, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
-    {c: '<I>Y</I>', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'normal'},
-    {c: '<I>Z</I>', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
-    {c: '&#x266D;', tclass: 'symbol'},
-    {c: '&#x266E;', tclass: 'symbol'},
-    {c: '&#x266F;', tclass: 'symbol'},
-    {c: '<SPAN STYLE="position: relative; top:-.3em; font-size:75%">&#x203F;</SPAN>', a:0, d:-.1, tclass: 'arial'},
-    {c: '<SPAN STYLE="position: relative; top:.4em; font-size:75%">&#x2040;</SPAN>', a:0, d:-.1, tclass: 'arial'},
-    // 60 - 6F
-    {c: '&#x2113;', krn: {'127': 0.111}, tclass: 'normal'},
-    {c: '<I>a</I>', a:0, tclass: 'normal'},
-    {c: '<I>b</I>', tclass: 'normal'},
-    {c: '<I>c</I>', a:0, krn: {'127': 0.0556}, tclass: 'normal'},
-    {c: '<I>d</I>', krn: {'89': 0.0556, '90': -0.0556, '106': -0.111, '102': -0.167, '127': 0.167}, tclass: 'normal'},
-    {c: '<I>e</I>', a:0, krn: {'127': 0.0556}, tclass: 'normal'},
-    {c: '<I>f</I>', d:1, ic: 0.108, krn: {'59': -0.0556, '58': -0.0556, '127': 0.167}, tclass: 'normal'},
-    {c: '<I>g</I>', a:0, d:1, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'normal'},
-    {c: '<I>h</I>', krn: {'127': -0.0278}, tclass: 'normal'},
-    {c: '<I>i</I>', tclass: 'normal'},
-    {c: '<I>j</I>', d:1, ic: 0.0572, krn: {'59': -0.0556, '58': -0.0556}, tclass: 'normal'},
-    {c: '<I>k</I>', ic: 0.0315, tclass: 'normal'},
-    {c: '<I>l</I>', ic: 0.0197, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>m</I>', a:0, tclass: 'normal'},
-    {c: '<I>n</I>', a:0, tclass: 'normal'},
-    {c: '<I>o</I>', a:0, krn: {'127': 0.0556}, tclass: 'normal'},
-    // 70 - 7F
-    {c: '<I>p</I>', a:0, d:1, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>q</I>', a:0, d:1, ic: 0.0359, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>r</I>', a:0, ic: 0.0278, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'normal'},
-    {c: '<I>s</I>', a:0, krn: {'127': 0.0556}, tclass: 'normal'},
-    {c: '<I>t</I>', krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>u</I>', a:0, krn: {'127': 0.0278}, tclass: 'normal'},
-    {c: '<I>v</I>', a:0, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'normal'},
-    {c: '<I>w</I>', a:0, ic: 0.0269, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>x</I>', a:0, krn: {'127': 0.0278}, tclass: 'normal'},
-    {c: '<I>y</I>', a:0, d:1, ic: 0.0359, krn: {'127': 0.0556}, tclass: 'normal'},
-    {c: '<I>z</I>', a:0, ic: 0.044, krn: {'127': 0.0556}, tclass: 'normal'},
-    {c: '<I>&#x131;</I>', a:0, krn: {'127': 0.0278}, tclass: 'normal'},
-    {c: '<I>j</I>', d:1, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '&#x2118;', a:0, d:1, krn: {'127': 0.111}, tclass: 'arial'},
-    {c: '<SPAN STYLE="position:relative; left: .3em; top: -.65em; font-size: 67%">&#x2192;</SPAN>', ic: 0.154, tclass: 'symbol'},
-    {c: '&#x0311;', ic: 0.399, tclass: 'normal'}
-  ],
-
-  cmsy10: [
-    // 00 - 0F
-    {c: '<SPAN STYLE="position:relative; top:.1em">&#x2212;</SPAN>', a:.1, tclass: 'symbol'},
-    {c: '&#xB7;', a:0, d:-.2, tclass: 'normal'},
-    {c: '&#xD7;', a:0, tclass: 'normal'},
-    {c: '<SPAN STYLE="position:relative; top:.3em">&#x2A;</SPAN>', a:0, tclass: 'normal'},
-    {c: '&#xF7;', a:0, tclass: 'normal'},
-    {c: '&#x25CA;', tclass: 'symbol'},
-    {c: '&#xB1;', a:.1, tclass: 'normal'},
-    {c: '&#x2213;', tclass: 'symbol'},
-    {c: '&#x2295;', tclass: 'symbol'},
-    {c: '&#x2296;', tclass: 'symbol'},
-    {c: '&#x2297;', tclass: 'symbol'},
-    {c: '&#x2298;', tclass: 'symbol'},
-    {c: '&#x2299;', tclass: 'symbol'},
-    {c: '&#x25EF;', tclass: 'arial'},
-    {c: '&#x2218;', a:0, d:-.1, tclass: 'symbol2'},
-    {c: '&#x2022;', a:0, d:-.2, tclass: 'symbol'},
-    // 10 - 1F
-    {c: '&#x224D;', a:.1, tclass: 'symbol2'},
-    {c: '&#x2261;', a:.1, tclass: 'symbol2'},
-    {c: '&#x2286;', tclass: 'symbol'},
-    {c: '&#x2287;', tclass: 'symbol'},
-    {c: '&#x2264;', tclass: 'symbol'},
-    {c: '&#x2265;', tclass: 'symbol'},
-    {c: '&#x227C;', tclass: 'symbol'},
-    {c: '&#x227D;', tclass: 'symbol'},
-    {c: '~', a:0, d: -.2, tclass: 'normal'},
-    {c: '&#x2248;', a:.1, d:-.1, tclass: 'symbol'},
-    {c: '&#x2282;', tclass: 'symbol'},
-    {c: '&#x2283;', tclass: 'symbol'},
-    {c: '&#x226A;', tclass: 'symbol'},
-    {c: '&#x226B;', tclass: 'symbol'},
-    {c: '&#x227A;', tclass: 'symbol'},
-    {c: '&#x227B;', tclass: 'symbol'},
-    // 20 - 2F
-    {c: '&#x2190;', a:-.1, tclass: 'arrow1'},
-    {c: '&#x2192;', a:-.1, tclass: 'arrow1'},
-    {c: '&#x2191;', a:.2, d:0, tclass: 'arrow1a'},
-    {c: '&#x2193;', a:.2, d:0, tclass: 'arrow1a'},
-    {c: '&#x2194;', a:-.1, tclass: 'arrow1'},
-    {c: '&#x2197;', a:.1, tclass: 'arrows'},
-    {c: '&#x2198;', a:.1, tclass: 'arrows'},
-    {c: '&#x2243;', a: .1, tclass: 'symbol2'},
-    {c: '&#x21D0;', a:-.1, tclass: 'arrow2'},
-    {c: '&#x21D2;', a:-.1, tclass: 'arrow2'},
-    {c: '&#x21D1;', a:.2, d:.1, tclass: 'arrow1a'},
-    {c: '&#x21D3;', a:.2, d:.1, tclass: 'arrow1a'},
-    {c: '&#x21D4;', a:-.1, tclass: 'arrow2'},
-    {c: '&#x2196;', a:.1, tclass: 'arrows'},
-    {c: '&#x2199;', a:.1, tclass: 'arrows'},
-    {c: '&#x221D;', a:.1, tclass: 'normal'},
-    // 30 - 3F
-    {c: '<SPAN STYLE="font-size: 133%; margin-right: -.1em; position: relative; top:.4em">&#x2032;</SPAN>', a: 0, tclass: 'lucida'},
-    {c: '&#x221E;', a:.1, tclass: 'symbol'},
-    {c: '&#x2208;', tclass: 'symbol'},
-    {c: '&#x220B;', tclass: 'symbol'},
-    {c: '<SPAN STYLE="font-size: 150%; position:relative; top:.2em">&#x25B3;</SPAN>', tclass: 'symbol'},
-    {c: '<SPAN STYLE="font-size: 150%; position:relative; top:.2em">&#x25BD;</SPAN>', tclass: 'symbol'},
-    {c: '<SPAN STYLE="font-size: 133%; position:relative; top:.2em">/</SPAN>', d:1, tclass: 'normal'},
-    {c: '<SPAN STYLE="font-size: 67%; position: relative; top:-.15em; margin-right:-.3em">&#x22A2;</SPAN>', tclass: 'symbol'},
-    {c: '&#x2200;', tclass: 'symbol'},
-    {c: '&#x2203;', tclass: 'symbol'},
-    {c: '&#xAC;', a:0, d:-.1, tclass: 'symbol'},
-    {c: '&#x2205;', tclass: 'symbol'},
-    {c: '&#x211C;', tclass: 'symbol'},
-    {c: '&#x2111;', tclass: 'symbol'},
-    {c: '&#x22A4;', tclass: 'symbol'},
-    {c: '&#x22A5;', tclass: 'symbol'},
-    // 40 - 4F
-    {c: '&#x2135;', tclass: 'symbol'},
-    {c: 'A', krn: {'48': 0.194}, tclass: 'cal'},
-    {c: 'B', ic: 0.0304, krn: {'48': 0.139}, tclass: 'cal'},
-    {c: 'C', ic: 0.0583, krn: {'48': 0.139}, tclass: 'cal'},
-    {c: 'D', ic: 0.0278, krn: {'48': 0.0833}, tclass: 'cal'},
-    {c: 'E', ic: 0.0894, krn: {'48': 0.111}, tclass: 'cal'},
-    {c: 'F', ic: 0.0993, krn: {'48': 0.111}, tclass: 'cal'},
-    {c: 'G', d:.2, ic: 0.0593, krn: {'48': 0.111}, tclass: 'cal'},
-    {c: 'H', ic: 0.00965, krn: {'48': 0.111}, tclass: 'cal'},
-    {c: 'I', ic: 0.0738, krn: {'48': 0.0278}, tclass: 'cal'},
-    {c: 'J', d:.2, ic: 0.185, krn: {'48': 0.167}, tclass: 'cal'},
-    {c: 'K', ic: 0.0144, krn: {'48': 0.0556}, tclass: 'cal'},
-    {c: 'L', krn: {'48': 0.139}, tclass: 'cal'},
-    {c: 'M', krn: {'48': 0.139}, tclass: 'cal'},
-    {c: 'N', ic: 0.147, krn: {'48': 0.0833}, tclass: 'cal'},
-    {c: 'O', ic: 0.0278, krn: {'48': 0.111}, tclass: 'cal'},
-    // 50 - 5F
-    {c: 'P', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
-    {c: 'Q', d:.2, krn: {'48': 0.111}, tclass: 'cal'},
-    {c: 'R', krn: {'48': 0.0833}, tclass: 'cal'},
-    {c: 'S', ic: 0.075, krn: {'48': 0.139}, tclass: 'cal'},
-    {c: 'T', ic: 0.254, krn: {'48': 0.0278}, tclass: 'cal'},
-    {c: 'U', ic: 0.0993, krn: {'48': 0.0833}, tclass: 'cal'},
-    {c: 'V', ic: 0.0822, krn: {'48': 0.0278}, tclass: 'cal'},
-    {c: 'W', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
-    {c: 'X', ic: 0.146, krn: {'48': 0.139}, tclass: 'cal'},
-    {c: 'Y', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
-    {c: 'Z', ic: 0.0794, krn: {'48': 0.139}, tclass: 'cal'},
-    {c: '&#x22C3;', tclass: 'symbol'},
-    {c: '&#x22C2;', tclass: 'symbol'},
-    {c: '&#x228E;', tclass: 'symbol'},
-    {c: '&#x22C0;', tclass: 'symbol'},
-    {c: '&#x22C1;', tclass: 'symbol'},
-    // 60 - 6F
-    {c: '&#x22A2;', tclass: 'symbol'},
-    {c: '&#x22A3;', tclass: 'symbol'},
-    {c: '&#x2308;', a:.3, d:.2, tclass: 'arial'},
-    {c: '&#x2309;', a:.3, d:.2, tclass: 'arial'},
-    {c: '&#x230A;', a:.3, d:.2, tclass: 'arial'},
-    {c: '&#x230B;', a:.3, d:.2, tclass: 'arial'},
-    {c: '{', d:.2, tclass: 'normal'},
-    {c: '}', d:.2, tclass: 'normal'},
-    {c: '&#x2329;', a:.3, d:.2, tclass: 'symbol'},
-    {c: '&#x232A;', a:.3, d:.2, tclass: 'symbol'},
-    {c: '&#x2223;', d:.1, tclass: 'symbol'},
-    {c: '&#x2225;', d:.1, tclass: 'symbol'},
-    {c: '&#x2195;', a:.2, d:0, tclass: 'arrow1a'},
-    {c: '&#x21D5;', a:.3, d:0, tclass: 'arrow1a'},
-    {c: '&#x2216;', a:.3, d:.1, tclass: 'symbol'},
-    {c: '&#x2240;', tclass: 'symbol'},
-    // 70 - 7F
-    {c: '<SPAN STYLE="position:relative; top: .8em">&#x221A;</SPAN>', h:.04, d:.8, tclass: 'symbol'},
-    {c: '&#x2210;', a:.4, tclass: 'symbol'},
-    {c: '&#x2207;', tclass: 'symbol'},
-    {c: '<SPAN STYLE="font-size: 85%; left:-.1em; margin-right:-.2em">&#x222B;</SPAN>', a:.4, d:.1, ic: 0.111, tclass: 'lucida'},
-    {c: '&#x2294;', tclass: 'symbol'},
-    {c: '&#x2293;', tclass: 'symbol'},
-    {c: '&#x2291;', tclass: 'symbol'},
-    {c: '&#x2292;', tclass: 'symbol'},
-    {c: '&#xA7;', d:.1, tclass: 'normal'},
-    {c: '&#x2020;', d:.1, tclass: 'normal'},
-    {c: '&#x2021;', d:.1, tclass: 'normal'},
-    {c: '&#xB6;', a:.3, d:.1, tclass: 'lucida'},
-    {c: '&#x2663;', tclass: 'arial'},
-    {c: '&#x2662;', tclass: 'arial'},
-    {c: '&#x2661;', tclass: 'arial'},
-    {c: '&#x2660;', tclass: 'arial'}
-  ],
-
-  cmex10: [
-    // 00 - 0F
-    {c: '(', h: 0.04, d: 1.16, n: 16, tclass: 'delim1'},
-    {c: ')', h: 0.04, d: 1.16, n: 17, tclass: 'delim1'},
-    {c: '[', h: 0.04, d: 1.16, n: 104, tclass: 'delim1'},
-    {c: ']', h: 0.04, d: 1.16, n: 105, tclass: 'delim1'},
-    {c: '&#x2308;', h: 0.04, d: 1.16, n: 106, tclass: 'delim1a'},
-    {c: '&#x2309;', h: 0.04, d: 1.16, n: 107, tclass: 'delim1a'},
-    {c: '&#x230A;', h: 0.04, d: 1.16, n: 108, tclass: 'delim1a'},
-    {c: '&#x230B;', h: 0.04, d: 1.16, n: 109, tclass: 'delim1a'},
-    {c: '<SPAN STYLE="margin-left:-.1em">{</SPAN>', h: 0.04, d: 1.16, n: 110, tclass: 'delim1'},
-    {c: '<SPAN STYLE="margin-right:-.1em">}</SPAN>', h: 0.04, d: 1.16, n: 111, tclass: 'delim1'},
-    {c: '&#x2329;', h: 0.04, d: 1.16, n: 68, tclass: 'delim1b'},
-    {c: '&#x232A;', h: 0.04, d: 1.16, n: 69, tclass: 'delim1b'},
-    {c: '&#x2223;', h:.7, d:.1, delim: {rep: 12}, tclass: 'symbol'},
-    {c: '&#x2225;', h:.7, d:.1, delim: {rep: 13}, tclass: 'symbol'},
-    {c: '/', h: 0.04, d: 1.16, n: 46, tclass: 'delim1a'},
-    {c: '&#x2216;', h: 0.04, d: 1.16, n: 47, tclass: 'delim1a'},
-    // 10 - 1F
-    {c: '(', h: 0.04, d: 1.76, n: 18, tclass: 'delim2'},
-    {c: ')', h: 0.04, d: 1.76, n: 19, tclass: 'delim2'},
-    {c: '(', h: 0.04, d: 2.36, n: 32, tclass: 'delim3'},
-    {c: ')', h: 0.04, d: 2.36, n: 33, tclass: 'delim3'},
-    {c: '[', h: 0.04, d: 2.36, n: 34, tclass: 'delim3'},
-    {c: ']', h: 0.04, d: 2.36, n: 35, tclass: 'delim3'},
-    {c: '&#x2308;', h: 0.04, d: 2.36, n: 36, tclass: 'delim3a'},
-    {c: '&#x2309;', h: 0.04, d: 2.36, n: 37, tclass: 'delim3a'},
-    {c: '&#x230A;', h: 0.04, d: 2.36, n: 38, tclass: 'delim3a'},
-    {c: '&#x230B;', h: 0.04, d: 2.36, n: 39, tclass: 'delim3a'},
-    {c: '<SPAN STYLE="position:relative; left:-.1em; margin-right:-.1em">{</SPAN>', h: 0.04, d: 2.36, n: 40, tclass: 'delim3'},
-    {c: '<SPAN STYLE="position:relative; left:-.05em; margin-right:-.1em">}</SPAN>', h: 0.04, d: 2.36, n: 41, tclass: 'delim3'},
-    {c: '&#x2329;', h: 0.04, d: 2.36, n: 42, tclass: 'delim3b'},
-    {c: '&#x232A;', h: 0.04, d: 2.36, n: 43, tclass: 'delim3b'},
-    {c: '/', h: 0.04, d: 2.36, n: 44, tclass: 'delim3a'},
-    {c: '&#x2216;', h: 0.04, d: 2.36, n: 45, tclass: 'delim3a'},
-    // 20 - 2F
-    {c: '(', h: 0.04, d: 2.96, n: 48, tclass: 'delim4'},
-    {c: ')', h: 0.04, d: 2.96, n: 49, tclass: 'delim4'},
-    {c: '[', h: 0.04, d: 2.96, n: 50, tclass: 'delim4'},
-    {c: ']', h: 0.04, d: 2.96, n: 51, tclass: 'delim4'},
-    {c: '&#x2308;', h: 0.04, d: 2.96, n: 52, tclass: 'delim4a'},
-    {c: '&#x2309;', h: 0.04, d: 2.96, n: 53, tclass: 'delim4a'},
-    {c: '&#x230A;', h: 0.04, d: 2.96, n: 54, tclass: 'delim4a'},
-    {c: '&#x230B;', h: 0.04, d: 2.96, n: 55, tclass: 'delim4a'},
-    {c: '<SPAN STYLE="position:relative; left:-.1em; margin-right:-.1em">{</SPAN>', h: 0.04, d: 2.96, n: 56, tclass: 'delim4'},
-    {c: '<SPAN STYLE="position:relative; left:-.1em; margin-right:-.1em">}</SPAN>', h: 0.04, d: 2.96, n: 57, tclass: 'delim4'},
-    {c: '&#x2329;', h: 0.04, d: 2.96, tclass: 'delim4b'},
-    {c: '&#x232A;', h: 0.04, d: 2.96, tclass: 'delim4b'},
-    {c: '/', h: 0.04, d: 2.96, tclass: 'delim4a'},
-    {c: '&#x2216;', h: 0.04, d: 2.96, tclass: 'delim4a'},
-    {c: '/', h: 0.04, d: 1.76, n: 30, tclass: 'delim2a'},
-    {c: '&#x2216;', h: 0.04, d: 1.76, n: 31, tclass: 'delim2a'},
-    // 30 - 3F
-    {c: '&#xE6;', h: .8, d: .2, delim: {top: 48, bot: 64, rep: 66}, tclass: 'delimx'},
-    {c: '&#xF6;', h: .8, d: .2, delim: {top: 49, bot: 65, rep: 67}, tclass: 'delimx'},
-    {c: '&#xE9;', h: .8, d: .2, delim: {top: 50, bot: 52, rep: 54}, tclass: 'delimx'},
-    {c: '&#xF9;', h: .8, d: .2, delim: {top: 51, bot: 53, rep: 55}, tclass: 'delimx'},
-    {c: '&#xEB;', h: .8, d: .2, delim: {bot: 52, rep: 54}, tclass: 'delimx'},
-    {c: '&#xFB;', h: .8, d: .2, delim: {bot: 53, rep: 55}, tclass: 'delimx'},
-    {c: '&#xEA;', h: .8, d: .2, delim: {top: 50, rep: 54}, tclass: 'delimx'},
-    {c: '&#xFA;', h: .8, d: .2, delim: {top: 51, rep: 55}, tclass: 'delimx'},
-    {c: '&#xEC;', h: .8, d: .2, delim: {top: 56, mid: 60, bot: 58, rep: 62}, tclass: 'delimx'},
-    {c: '&#xFC;', h: .8, d: .2, delim: {top: 57, mid: 61, bot: 59, rep: 62}, tclass: 'delimx'},
-    {c: '&#xEE;', h: .8, d: .2, delim: {top: 56, bot: 58, rep: 62}, tclass: 'delimx'},
-    {c: '&#xFE;', h: .8, d: .2, delim: {top: 57, bot: 59, rep: 62}, tclass: 'delimx'},
-    {c: '&#xED;', h: .8, d: .2, delim: {rep: 63}, tclass: 'delimx'},
-    {c: '&#xFD;', h: .8, d: .2, delim: {rep: 119}, tclass: 'delimx'},
-    {c: '&#xEF;', h: .8, d: .2, delim: {rep: 62}, tclass: 'delimx'},
-    {c: '<SPAN STYLE="margin:.125em">|</SPAN>', h: .8, d: 0, delim: {top: 120, bot: 121, rep: 63}, tclass: 'normal'},
-    // 40 - 4F
-    {c: '&#xE8;', h: .8, d: .2, delim: {top: 56, bot: 59, rep: 62}, tclass: 'delimx'},
-    {c: '&#xF8;', h: .8, d: .2, delim: {top: 57, bot: 58, rep: 62}, tclass: 'delimx'},
-    {c: '&#xE7;', h: .8, d: .2, delim: {rep: 66}, tclass: 'delimx'},
-    {c: '&#xF7;', h: .8, d: .2, delim: {rep: 67}, tclass: 'delimx'},
-    {c: '&#x2329;', h: 0.04, d: 1.76, n: 28, tclass: 'delim2b'},
-    {c: '&#x232A;', h: 0.04, d: 1.76, n: 29, tclass: 'delim2b'},
-    {c: '&#x2294;', h: 0, d: 1, n: 71, tclass: 'bigop1'},
-    {c: '&#x2294;', h: 0.1, d: 1.5, tclass: 'bigop2'},
-    {c: '&#x222E;', h: 0, d: 1.11, ic: 0.095, n: 73, tclass: 'bigop1c'},
-    {c: '&#x222E;', h: 0, d: 2.22, ic: 0.222, tclass: 'bigop2c'},
-    {c: '&#x2299;', h: 0, d: 1, n: 75, tclass: 'bigop1'},
-    {c: '&#x2299;', h: 0.1, d: 1.5, tclass: 'bigop2'},
-    {c: '&#x2295;', h: 0, d: 1, n: 77, tclass: 'bigop1'},
-    {c: '&#x2295;', h: 0.1, d: 1.5, tclass: 'bigop2'},
-    {c: '&#x2297;', h: 0, d: 1, n: 79, tclass: 'bigop1'},
-    {c: '&#x2297;', h: 0.1, d: 1.5, tclass: 'bigop2'},
-    // 50 - 5F
-    {c: '&#x2211;', h: 0, d: 1, n: 88, tclass: 'bigop1a'},
-    {c: '&#x220F;', h: 0, d: 1, n: 89, tclass: 'bigop1a'},
-    {c: '&#x222B;', h: 0, d: 1.11, ic: 0.095, n: 90, tclass: 'bigop1c'},
-    {c: '&#x222A;', h: 0, d: 1, n: 91, tclass: 'bigop1b'},
-    {c: '&#x2229;', h: 0, d: 1, n: 92, tclass: 'bigop1b'},
-    {c: '&#x228E;', h: 0, d: 1, n: 93, tclass: 'bigop1b'},
-    {c: '&#x22C0;', h: 0, d: 1, n: 94, tclass: 'bigop1'},
-    {c: '&#x22C1;', h: 0, d: 1, n: 95, tclass: 'bigop1'},
-    {c: '&#x2211;', h: 0.1, d: 1.6, tclass: 'bigop2a'},
-    {c: '&#x220F;', h: 0.1, d: 1.5, tclass: 'bigop2a'},
-    {c: '&#x222B;', h: 0, d: 2.22, ic: 0.222, tclass: 'bigop2c'},
-    {c: '&#x222A;', h: 0.1, d: 1.5, tclass: 'bigop2b'},
-    {c: '&#x2229;', h: 0.1, d: 1.5, tclass: 'bigop2b'},
-    {c: '&#x228E;', h: 0.1, d: 1.5, tclass: 'bigop2b'},
-    {c: '&#x22C0;', h: 0.1, d: 1.5, tclass: 'bigop2'},
-    {c: '&#x22C1;', h: 0.1, d: 1.5, tclass: 'bigop2'},
-    // 60 - 6F
-    {c: '&#x2210;', h: 0, d: 1, n: 97, tclass: 'bigop1a'},
-    {c: '&#x2210;', h: 0.1, d: 1.5, tclass: 'bigop2a'},
-    {c: '&#xFE3F;', h: 0.722, w: .65, n: 99, tclass: 'wide1'},
-    {c: '&#xFE3F;', h: 0.85, w: 1.1, n: 100, tclass: 'wide2'},
-    {c: '&#xFE3F;', h: 0.99, w: 1.65, tclass: 'wide3'},
-    {c: '~', h: 0.722, w: .5, n: 102, tclass: 'wide1a'},
-    {c: '~', h: 0.8, w: .8, n: 103, tclass: 'wide2a'},
-    {c: '~', h: 0.99, w: 1.3, tclass: 'wide3a'},
-    {c: '[', h: 0.04, d: 1.76, n: 20, tclass: 'delim2'},
-    {c: ']', h: 0.04, d: 1.76, n: 21, tclass: 'delim2'},
-    {c: '&#x2308;', h: 0.04, d: 1.76, n: 22, tclass: 'delim2a'},
-    {c: '&#x2309;', h: 0.04, d: 1.76, n: 23, tclass: 'delim2a'},
-    {c: '&#x230A;', h: 0.04, d: 1.76, n: 24, tclass: 'delim2a'},
-    {c: '&#x230B;', h: 0.04, d: 1.76, n: 25, tclass: 'delim2a'},
-    {c: '<SPAN STYLE="position:relative; left:-.1em; margin-right:-.1em">{</SPAN>', h: 0.04, d: 1.76, n: 26, tclass: 'delim2'},
-    {c: '<SPAN STYLE="position:relative; margin-right:-.1em; left:-.05em">}</SPAN>', h: 0.04, d: 1.76, n: 27, tclass: 'delim2'},
-    // 70 - 7F
-    {c: '<SPAN STYLE="font-size: 150%; position:relative; top:.8em">&#x221A;</SPAN>', h: 0.04, d: 1.16, n: 113, tclass: 'root'},
-    {c: '<SPAN STYLE="font-size: 220%; position:relative; top:.8em">&#x221A;</SPAN>', h: 0.04, d: 1.76, n: 114, tclass: 'root'},
-    {c: '<SPAN STYLE="font-size: 310%; position:relative; top:.8em; margin-right:-.01em">&#x221A;</SPAN>', h: 0.06, d: 2.36, n: 115, tclass: 'root'},
-    {c: '<SPAN STYLE="font-size: 400%; position:relative; top:.8em; margin-right:-.025em">&#x221A;</SPAN>', h: 0.08, d: 2.96, n: 116, tclass: 'root'},
-    {c: '<SPAN STYLE="font-size: 490%; position:relative; top:.8em; margin-right:-.03em">&#x221A;</SPAN>', h: 0.1, d: 3.75, n: 117, tclass: 'root'},
-    {c: '<SPAN STYLE="font-size: 580%; position:relative; top:.775em; margin-right:-.04em">&#x221A;</SPAN>', h: .12, d: 4.5, n: 118, tclass: 'root'},
-    {c: '<SPAN STYLE="font-size: 750%; position:relative; top:.775em;margin-right:-.04em">&#x221A;</SPAN>', h: .14, d: 5.7, tclass: 'root'},
-    {c: '<SPAN STYLE="margin-left:.02em">|</SPAN><SPAN STYLE="margin-left:.08em; margin-right:.125em">|</SPAN>', h:.8, d:0, delim: {top: 126, bot: 127, rep: 119}, tclass: 'normal'},
-    {c: '&#x2191;', h:.7, d:0, delim: {top: 120, rep: 63}, tclass: 'arrow1a'},
-    {c: '&#x2193;', h:.65, d:0, delim: {bot: 121, rep: 63}, tclass: 'arrow1a'},
-    {c: '<SPAN STYLE="margin-left:-.1em"></SPAN><SPAN STYLE="position:relative; top:.55em; margin-right:-.3em">&#x25DC;</SPAN>', h: 0.05, tclass: 'symbol'},
-    {c: '<SPAN STYLE="margin-left:-.3em"></SPAN><SPAN STYLE="position:relative; top:.55em; margin-right:-.1em">&#x25DD;</SPAN>', h: 0.05, tclass: 'symbol'},
-    {c: '<SPAN STYLE="margin-left:-.1em"></SPAN><SPAN STYLE="position:relative; top:.15em; margin-right:-.3em">&#x25DF;</SPAN>', h: 0.05, tclass: 'symbol'},
-    {c: '<SPAN STYLE="margin-left:-.3em"></SPAN><SPAN STYLE="position:relative; top:.15em; margin-right:-.1em">&#x25DE;</SPAN>', h: 0.05, tclass: 'symbol'},
-    {c: '&#x21D1;', h: .7, d:0, delim: {top: 126, rep: 119}, tclass: 'arrow1a'},
-    {c: '&#x21D3;', h: .7, d:0, delim: {bot: 127, rep: 119}, tclass: 'arrow1a'}
-  ],
-  
-  cmti10: [
-    // 00 - 0F
-    {c: '<I>&Gamma;</I>', ic: 0.133, tclass: 'greek'},
-    {c: '<I>&Delta;</I>', tclass: 'greek'},
-    {c: '<I>&Theta;</I>', ic: 0.094, tclass: 'greek'},
-    {c: '<I>&Lambda;</I>', tclass: 'greek'},
-    {c: '<I>&Xi;</I>', ic: 0.153, tclass: 'greek'},
-    {c: '<I>&Pi;</I>', ic: 0.164, tclass: 'greek'},
-    {c: '<I>&Sigma;</I>', ic: 0.12, tclass: 'greek'},
-    {c: '<I>&Upsilon;</I>', ic: 0.111, tclass: 'greek'},
-    {c: '<I>&Phi;</I>', ic: 0.0599, tclass: 'greek'},
-    {c: '<I>&Psi;</I>', ic: 0.111, tclass: 'greek'},
-    {c: '<I>&Omega;</I>', ic: 0.103, tclass: 'greek'},
-    {c: '<I>ff</I>', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 14, '108': 15}, tclass: 'normal'},
-    {c: '<I>fi</I>', ic: 0.103, tclass: 'normal'},
-    {c: '<I>fl</I>', ic: 0.103, tclass: 'normal'},
-    {c: '<I>ffi</I>', ic: 0.103, tclass: 'normal'},
-    {c: '<I>ffl</I>', ic: 0.103, tclass: 'normal'},
-    // 10 - 1F
-    {c: '<I>&#x131;</I>', a:0, ic: 0.0767, tclass: 'normal'},
-    {c: '<I>j</I>', d:.2, ic: 0.0374, tclass: 'normal'},
-    {c: '<I>&#x2CB;</I>', tclass: 'accent'},
-    {c: '<I>&#x2CA;</I>', ic: 0.0969, tclass: 'accent'},
-    {c: '<I>&#x2C7;</I>', ic: 0.083, tclass: 'accent'},
-    {c: '<I>&#x2D8;</I>', ic: 0.108, tclass: 'accent'},
-    {c: '<I>&#x2C9;</I>', ic: 0.103, tclass: 'accent'},
-    {c: '<I>&#x2DA;</I>', tclass: 'accent'},
-    {c: '<I>?</I>', d: 0.17, w: 0.46, tclass: 'normal'},
-    {c: '<I>&#xDF;</I>', ic: 0.105, tclass: 'normal'},
-    {c: '<I>&#xE6;</I>', a:0, ic: 0.0751, tclass: 'normal'},
-    {c: '<I>&#x153;</I>', a:0, ic: 0.0751, tclass: 'normal'},
-    {c: '<I>&#xF8;</I>', ic: 0.0919, tclass: 'normal'},
-    {c: '<I>&#xC6;</I>', ic: 0.12, tclass: 'normal'},
-    {c: '<I>&#x152;</I>', ic: 0.12, tclass: 'normal'},
-    {c: '<I>&#xD8;</I>', ic: 0.094, tclass: 'normal'},
-    // 20 - 2F
-    {c: '<I>?</I>', krn: {'108': -0.256, '76': -0.321}, tclass: 'normal'},
-    {c: '<I>!</I>', ic: 0.124, lig: {'96': 60}, tclass: 'normal'},
-    {c: '<I>&#x201D;</I>', ic: 0.0696, tclass: 'normal'},
-    {c: '<I>#</I>', ic: 0.0662, tclass: 'normal'},
-    {c: '<I>$</I>', tclass: 'normal'},
-    {c: '<I>%</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>&amp;</I>', ic: 0.0969, tclass: 'normal'},
-    {c: '<I>&#x2019;</I>', ic: 0.124, krn: {'63': 0.102, '33': 0.102}, lig: {'39': 34}, tclass: 'normal'},
-    {c: '<I>(</I>', d:.2, ic: 0.162, tclass: 'normal'},
-    {c: '<I>)</I>', d:.2, ic: 0.0369, tclass: 'normal'},
-    {c: '<I>*</I>', ic: 0.149, tclass: 'normal'},
-    {c: '<I>+</I>', a:.1, ic: 0.0369, tclass: 'normal'},
-    {c: '<I>,</I>', a:-.3, d:.2, w: 0.278, tclass: 'normal'},
-    {c: '<I>-</I>', a:0, ic: 0.0283, lig: {'45': 123}, tclass: 'normal'},
-    {c: '<I>.</I>', a:-.25, tclass: 'normal'},
-    {c: '<I>/</I>', ic: 0.162, tclass: 'normal'},
-    // 30 - 3F
-    {c: '<I>0</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>1</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>2</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>3</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>4</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>5</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>6</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>7</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>8</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>9</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>:</I>', ic: 0.0582, tclass: 'normal'},
-    {c: '<I>;</I>', ic: 0.0582, tclass: 'normal'},
-    {c: '<I>&#xA1;</I>', ic: 0.0756, tclass: 'normal'},
-    {c: '<I>=</I>', a:0, d:-.1, ic: 0.0662, tclass: 'normal'},
-    {c: '<I>&#xBF;</I>', tclass: 'normal'},
-    {c: '<I>?</I>', ic: 0.122, lig: {'96': 62}, tclass: 'normal'},
-    // 40 - 4F
-    {c: '<I>@</I>', ic: 0.096, tclass: 'normal'},
-    {c: '<I>A</I>', krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
-    {c: '<I>B</I>', ic: 0.103, tclass: 'normal'},
-    {c: '<I>C</I>', ic: 0.145, tclass: 'normal'},
-    {c: '<I>D</I>', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}, tclass: 'normal'},
-    {c: '<I>E</I>', ic: 0.12, tclass: 'normal'},
-    {c: '<I>F</I>', ic: 0.133, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'normal'},
-    {c: '<I>G</I>', ic: 0.0872, tclass: 'normal'},
-    {c: '<I>H</I>', ic: 0.164, tclass: 'normal'},
-    {c: '<I>I</I>', ic: 0.158, tclass: 'normal'},
-    {c: '<I>J</I>', ic: 0.14, tclass: 'normal'},
-    {c: '<I>K</I>', ic: 0.145, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'normal'},
-    {c: '<I>L</I>', krn: {'84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
-    {c: '<I>M</I>', ic: 0.164, tclass: 'normal'},
-    {c: '<I>N</I>', ic: 0.164, tclass: 'normal'},
-    {c: '<I>O</I>', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}, tclass: 'normal'},
-    // 50 - 5F
-    {c: '<I>P</I>', ic: 0.103, krn: {'65': -0.0767}, tclass: 'normal'},
-    {c: '<I>Q</I>', d: 1, ic: 0.094, tclass: 'normal'},
-    {c: '<I>R</I>', ic: 0.0387, krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
-    {c: '<I>S</I>', ic: 0.12, tclass: 'normal'},
-    {c: '<I>T</I>', ic: 0.133, krn: {'121': -0.0767, '101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}, tclass: 'normal'},
-    {c: '<I>U</I>', ic: 0.164, tclass: 'normal'},
-    {c: '<I>V</I>', ic: 0.184, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'normal'},
-    {c: '<I>W</I>', ic: 0.184, krn: {'65': -0.0767}, tclass: 'normal'},
-    {c: '<I>X</I>', ic: 0.158, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'normal'},
-    {c: '<I>Y</I>', ic: 0.194, krn: {'101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}, tclass: 'normal'},
-    {c: '<I>Z</I>', ic: 0.145, tclass: 'normal'},
-    {c: '<I>[</I>', d:.1, ic: 0.188, tclass: 'normal'},
-    {c: '<I>&#x201C;</I>', ic: 0.169, tclass: 'normal'},
-    {c: '<I>]</I>', d:.1, ic: 0.105, tclass: 'normal'},
-    {c: '<I>&#x2C6;</I>', ic: 0.0665, tclass: 'accent'},
-    {c: '<I>&#x2D9;</I>', ic: 0.118, tclass: 'accent'},
-    // 60 - 6F
-    {c: '<I>&#x2018;</I>', ic: 0.124, lig: {'96': 92}, tclass: 'normal'},
-    {c: '<I>a</I>', a:0, ic: 0.0767, tclass: 'normal'},
-    {c: '<I>b</I>', ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
-    {c: '<I>c</I>', a:0, ic: 0.0565, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
-    {c: '<I>d</I>', ic: 0.103, krn: {'108': 0.0511}, tclass: 'normal'},
-    {c: '<I>e</I>', a:0, ic: 0.0751, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
-    {c: '<I>f</I>', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'normal'},
-    {c: '<I>g</I>', a:0, d:1, ic: 0.0885, tclass: 'normal'},
-    {c: '<I>h</I>', ic: 0.0767, tclass: 'normal'},
-    {c: '<I>i</I>', ic: 0.102, tclass: 'normal'},
-    {c: '<I>j</I>', d:1, ic: 0.145, tclass: 'normal'},
-    {c: '<I>k</I>', ic: 0.108, tclass: 'normal'},
-    {c: '<I>l</I>', ic: 0.103, krn: {'108': 0.0511}, tclass: 'normal'},
-    {c: '<I>m</I>', a:0, ic: 0.0767, tclass: 'normal'},
-    {c: '<I>n</I>', a:0, ic: 0.0767, krn: {'39': -0.102}, tclass: 'normal'},
-    {c: '<I>o</I>', a:0, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
-    // 70 - 7F
-    {c: '<I>p</I>', a:0, d:1, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
-    {c: '<I>q</I>', a:0, d:1, ic: 0.0885, tclass: 'normal'},
-    {c: '<I>r</I>', a:0, ic: 0.108, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
-    {c: '<I>s</I>', a:0, ic: 0.0821, tclass: 'normal'},
-    {c: '<I>t</I>', ic: 0.0949, tclass: 'normal'},
-    {c: '<I>u</I>', a:0, ic: 0.0767, tclass: 'normal'},
-    {c: '<I>v</I>', a:0, ic: 0.108, tclass: 'normal'},
-    {c: '<I>w</I>', a:0, ic: 0.108, krn: {'108': 0.0511}, tclass: 'normal'},
-    {c: '<I>x</I>', a:0, ic: 0.12, tclass: 'normal'},
-    {c: '<I>y</I>', a:0, d:1, ic: 0.0885, tclass: 'normal'},
-    {c: '<I>z</I>', a:0, ic: 0.123, tclass: 'normal'},
-    {c: '<I>&#x2013;</I>', a:.1, ic: 0.0921, lig: {'45': 124}, tclass: 'normal'},
-    {c: '<I>&#x2014;</I>', a:.1, ic: 0.0921, tclass: 'normal'},
-    {c: '<I>&#x2DD;</I>', ic: 0.122, tclass: 'accent'},
-    {c: '<I>&#x2DC;</I>', ic: 0.116, tclass: 'accent'},
-    {c: '<I>&#xA8;</I>', tclass: 'accent'}
-  ],
-  
-  cmbx10: [
-    // 00 - 0F
-    {c: '<B>&Gamma;</B>', tclass: 'greek'},
-    {c: '<B>&Delta;</B>', tclass: 'greek'},
-    {c: '<B>&Theta;</B>', tclass: 'greek'},
-    {c: '<B>&Lambda;</B>', tclass: 'greek'},
-    {c: '<B>&Xi;</B>', tclass: 'greek'},
-    {c: '<B>&Pi;</B>', tclass: 'greek'},
-    {c: '<B>&Sigma;</B>', tclass: 'greek'},
-    {c: '<B>&Upsilon;</B>', tclass: 'greek'},
-    {c: '<B>&Phi;</B>', tclass: 'greek'},
-    {c: '<B>&Psi;</B>', tclass: 'greek'},
-    {c: '<B>&Omega;</B>', tclass: 'greek'},
-    {c: '<B>ff</B>', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 14, '108': 15}, tclass: 'normal'},
-    {c: '<B>fi</B>', tclass: 'normal'},
-    {c: '<B>fl</B>', tclass: 'normal'},
-    {c: '<B>ffi</B>', tclass: 'normal'},
-    {c: '<B>ffl</B>', tclass: 'normal'},
-    // 10 - 1F
-    {c: '<B>&#x131;</B>', a:0, tclass: 'normal'},
-    {c: '<B>j</B>', d:.2, tclass: 'normal'},
-    {c: '<B>&#x2CB;</B>', tclass: 'accent'},
-    {c: '<B>&#x2CA;</B>', tclass: 'accent'},
-    {c: '<B>&#x2C7;</B>', tclass: 'accent'},
-    {c: '<B>&#x2D8;</B>', tclass: 'accent'},
-    {c: '<B>&#x2C9;</B>', tclass: 'accent'},
-    {c: '<B>&#x2DA;</B>', tclass: 'accent'},
-    {c: '<B>?</B>', tclass: 'normal'},
-    {c: '<B>&#xDF;</B>', tclass: 'normal'},
-    {c: '<B>&#xE6;</B>', a:0, tclass: 'normal'},
-    {c: '<B>&#x153;</B>', a:0, tclass: 'normal'},
-    {c: '<B>&#xF8;</B>', tclass: 'normal'},
-    {c: '<B>&#xC6;</B>', tclass: 'normal'},
-    {c: '<B>&#x152;</B>', tclass: 'normal'},
-    {c: '<B>&#xD8;</B>', tclass: 'normal'},
-    // 20 - 2F
-    {c: '<B>?</B>', krn: {'108': -0.278, '76': -0.319}, tclass: 'normal'},
-    {c: '<B>!</B>', lig: {'96': 60}, tclass: 'normal'},
-    {c: '<B>&#x201D;</B>', tclass: 'normal'},
-    {c: '<B>#</B>', tclass: 'normal'},
-    {c: '<B>$</B>', tclass: 'normal'},
-    {c: '<B>%</B>', tclass: 'normal'},
-    {c: '<B>&amp;</B>', tclass: 'normal'},
-    {c: '<B>&#x2019;</B>', krn: {'63': 0.111, '33': 0.111}, lig: {'39': 34}, tclass: 'normal'},
-    {c: '<B>(</B>', d:.2, tclass: 'normal'},
-    {c: '<B>)</B>', d:.2, tclass: 'normal'},
-    {c: '<B>*</B>', tclass: 'normal'},
-    {c: '<B>+</B>', a:.1, tclass: 'normal'},
-    {c: '<B>,</B>', a:-.3, d:.2, w: 0.278, tclass: 'normal'},
-    {c: '<B>-</B>', a:0, lig: {'45': 123}, tclass: 'normal'},
-    {c: '<B>.</B>', a:-.25, tclass: 'normal'},
-    {c: '<B>/</B>', tclass: 'normal'},
-    // 30 - 3F
-    {c: '<B>0</B>', tclass: 'normal'},
-    {c: '<B>1</B>', tclass: 'normal'},
-    {c: '<B>2</B>', tclass: 'normal'},
-    {c: '<B>3</B>', tclass: 'normal'},
-    {c: '<B>4</B>', tclass: 'normal'},
-    {c: '<B>5</B>', tclass: 'normal'},
-    {c: '<B>6</B>', tclass: 'normal'},
-    {c: '<B>7</B>', tclass: 'normal'},
-    {c: '<B>8</B>', tclass: 'normal'},
-    {c: '<B>9</B>', tclass: 'normal'},
-    {c: '<B>:</B>', tclass: 'normal'},
-    {c: '<B>;</B>', tclass: 'normal'},
-    {c: '<B>&#xA1;</B>', tclass: 'normal'},
-    {c: '<B>=</B>', a:0, d:-.1, tclass: 'normal'},
-    {c: '<B>&#xBF;</B>', tclass: 'normal'},
-    {c: '<B>?</B>', lig: {'96': 62}, tclass: 'normal'},
-    // 40 - 4F
-    {c: '<B>@</B>', tclass: 'normal'},
-    {c: '<B>A</B>', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
-    {c: '<B>B</B>', tclass: 'normal'},
-    {c: '<B>C</B>', tclass: 'normal'},
-    {c: '<B>D</B>', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
-    {c: '<B>E</B>', tclass: 'normal'},
-    {c: '<B>F</B>', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
-    {c: '<B>G</B>', tclass: 'normal'},
-    {c: '<B>H</B>', tclass: 'normal'},
-    {c: '<B>I</B>', krn: {'73': 0.0278}, tclass: 'normal'},
-    {c: '<B>J</B>', tclass: 'normal'},
-    {c: '<B>K</B>', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
-    {c: '<B>L</B>', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
-    {c: '<B>M</B>', tclass: 'normal'},
-    {c: '<B>N</B>', tclass: 'normal'},
-    {c: '<B>O</B>', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
-    // 50 - 5F
-    {c: '<B>P</B>', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
-    {c: '<B>Q</B>', d: 1, tclass: 'normal'},
-    {c: '<B>R</B>', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
-    {c: '<B>S</B>', tclass: 'normal'},
-    {c: '<B>T</B>', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
-    {c: '<B>U</B>', tclass: 'normal'},
-    {c: '<B>V</B>', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
-    {c: '<B>W</B>', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
-    {c: '<B>X</B>', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
-    {c: '<B>Y</B>', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
-    {c: '<B>Z</B>', tclass: 'normal'},
-    {c: '<B>[</B>', d:.1, tclass: 'normal'},
-    {c: '<B>&#x201C;</B>', tclass: 'normal'},
-    {c: '<B>]</B>', d:.1, tclass: 'normal'},
-    {c: '<B>&#x2C6;</B>', tclass: 'accent'},
-    {c: '<B>&#x2D9;</B>', tclass: 'accent'},
-    // 60 - 6F
-    {c: '<B>&#x2018;</B>', lig: {'96': 92}, tclass: 'normal'},
-    {c: '<B>a</B>', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: '<B>b</B>', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: '<B>c</B>', a:0, krn: {'104': -0.0278, '107': -0.0278}, tclass: 'normal'},
-    {c: '<B>d</B>', tclass: 'normal'},
-    {c: '<B>e</B>', a:0, tclass: 'normal'},
-    {c: '<B>f</B>', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'normal'},
-    {c: '<B>g</B>', a:0, d:1, ic: 0.0139, krn: {'106': 0.0278}, tclass: 'normal'},
-    {c: '<B>h</B>', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: '<B>i</B>', tclass: 'normal'},
-    {c: '<B>j</B>', d:1, tclass: 'normal'},
-    {c: '<B>k</B>', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
-    {c: '<B>l</B>', tclass: 'normal'},
-    {c: '<B>m</B>', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: '<B>n</B>', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: '<B>o</B>', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    // 70 - 7F
-    {c: '<B>p</B>', a:0, d:1, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: '<B>q</B>', a:0, d:1, tclass: 'normal'},
-    {c: '<B>r</B>', a:0, tclass: 'normal'},
-    {c: '<B>s</B>', a:0, tclass: 'normal'},
-    {c: '<B>t</B>', krn: {'121': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: '<B>u</B>', a:0, krn: {'119': -0.0278}, tclass: 'normal'},
-    {c: '<B>v</B>', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
-    {c: '<B>w</B>', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
-    {c: '<B>x</B>', a:0, tclass: 'normal'},
-    {c: '<B>y</B>', a:0, d:1, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
-    {c: '<B>z</B>', a:0, tclass: 'normal'},
-    {c: '<B>&#x2013;</B>', a:.1, ic: 0.0278, lig: {'45': 124}, tclass: 'normal'},
-    {c: '<B>&#x2014;</B>', a:.1, ic: 0.0278, tclass: 'normal'},
-    {c: '<B>&#x2DD;</B>', tclass: 'accent'},
-    {c: '<B>&#x2DC;</B>', tclass: 'accent'},
-    {c: '<B>&#xA8;</B>', tclass: 'accent'}
-  ]
-});
-
-
-/*
- *  We need to replace the jsMath.Box.TeX function in order to use the
- *  different font metrics in the tables above, and to handle the
- *  scaling better.
- */
-
-jsMath.Add(jsMath.Box,{
-  TeX: function (C,font,style,size) {
-    c = jsMath.TeX[font][C]; if (!c.tclass) {c.tclass = font}
-    if (c.h != null && c.a == null) {c.a = c.h-1.1*jsMath.TeX.x_height}
-    if (c.img != null && c.c != '') this.TeXIMG(font,C,jsMath.Typeset.StyleSize(style,size));
-    var box = this.Text(c.c,c.tclass,style,size,c.a,c.d);
-    var scale = jsMath.Typeset.TeX(style,size).scale;
-    if (c.bh != null) {
-      box.bh = c.bh * scale;
-      box.bd = c.bd * scale;
-    } else {
-      var h = box.bd+box.bh;
-      var ph = Math.round(h*jsMath.em);
-      if (h > jsMath.hd) {
-        box.bd = jsMath.EmBoxFor(jsMath.HTML.Class(c.tclass,c.c)
-                   + '<IMG SRC="'+jsMath.blank+'" STYLE="'
-                   + 'width: 1; height: '+ph+'px">').h - h;
-        box.bh = h - box.bd;
-      }
-      c.bh = box.bh/scale;
-      c.bd = box.bd/scale;
-    }
-    if (jsMath.msieFontBug) {
-      // hack to avoid Font changing back to the default
-      // font when a unicode reference is not followed
-      // by a letter or number
-      box.html += '<SPAN STYLE="display: none">x</SPAN>'
-    }
-    return box;
-  }
-});
-
-jsMath.Update.Styles({
-    '.cmr10':          "font-family: serif",
-    '.lucida':         "font-family: 'lucida sans unicode'",
-    '.arial':          "font-family: 'arial unicode MS'",
-    '.cal':            "font-family: 'Script MT', 'Script MT Bold', cursive",
-    '.arrows':         "font-family: 'Arial unicode MS'",
-    '.arrow1':         "font-family: 'Arial unicode MS'",
-    '.arrow1a':        "font-family: 'Arial unicode MS'; position:relative; top:.05em;left:-.15em; margin-right:-.15em",
-    '.arrow2':         "font-family: 'Arial unicode MS'; position:relative; top:-.1em;",
-    '.arrow3':         "font-family: 'Arial unicode MS'; margin:.1em",
-    '.symbol':         "font-family: 'Arial unicode MS'",
-    '.symbol2':        "font-family: 'Arial unicode MS'",
-    '.delim1':         "font-family: 'Times New Roman'; font-size: 133%; position:relative; top:.7em",
-    '.delim1a':        "font-family: 'Lucida sans unicode'; font-size: 133%; position:relative; top:.8em",
-    '.delim1b':        "font-family: 'Arial unicode MS'; font-size: 133%; position:relative; top:.8em",
-    '.delim2':         "font-family: 'Times New Roman'; font-size: 180%; position:relative; top:.75em",
-    '.delim2a':        "font-family: 'Lucida sans unicode'; font-size: 180%; position:relative; top:.8em",
-    '.delim2b':        "font-family: 'Arial unicode MS'; font-size: 180%; position:relative; top:.8em",
-    '.delim3':         "font-family: 'Times New Roman'; font-size: 250%; position:relative; top:.725em",
-    '.delim3a':        "font-family: 'Lucida sans unicode'; font-size: 250%; position:relative; top:.775em",
-    '.delim3b':        "font-family: 'Arial unicode MS'; font-size: 250%; position:relative; top:.8em",
-    '.delim4':         "font-family: 'Times New Roman'; font-size: 325%; position:relative; top:.7em",
-    '.delim4a':        "font-family: 'Lucida sans unicode'; font-size: 325%; position:relative; top:.775em",
-    '.delim4b':        "font-family: 'Arial unicode MS'; font-size: 325%; position:relative; top:.8em",
-    '.delimx':         "font-family: Symbol; position:relative; top:.2em",
-    '.greek':          "font-family: 'Times New Roman'",
-    '.bigop1':         "font-family: 'Arial unicode MS'; font-size: 130%; position: relative; top: .7em; margin:-.05em",
-    '.bigop1a':        "font-family: 'Arial unicode MS'; font-size: 110%; position: relative; top: .85em;",
-    '.bigop1b':        "font-family: 'Arial unicode MS'; font-size: 180%; position: relative; top: .6em",
-    '.bigop1c':        "font-family: 'Arial unicode MS'; font-size: 85%; position: relative; top: 1em",
-    '.bigop2':         "font-family: 'Arial unicode MS'; font-size: 230%; position: relative; top: .6em; margin:-.05em",
-    '.bigop2a':        "font-family: 'Arial unicode MS'; font-size: 185%; position: relative; top: .75em",
-    '.bigop2b':        "font-family: 'Arial unicode MS'; font-size: 275%; position: relative; top: .55em",
-    '.bigop2c':        "font-family: 'Arial unicode MS'; font-size: 185%; position: relative; top: 1em; margin-right:-.1em",
-    '.wide1':          "font-size: 67%; position: relative; top:-.5em;",
-    '.wide2':          "font-size: 110%; position: relative; top:-.2em;'",
-    '.wide3':          "font-size: 175%;",
-    '.wide1a':         "font-family: 'Times New Roman'; font-size: 75%; position: relative; top:-.5em",
-    '.wide2a':         "font-family: 'Times New Roman'; font-size: 133%; position: relative; top:-.2em",
-    '.wide3a':         "font-family: 'Times New Roman'; font-size: 200%; position: relative; top:-.1em",
-    '.root':           "font-family: 'Arial unicode MS'; margin-right:-.075em",
-    '.accent':         "font-family: 'Arial unicode MS'; position:relative; top:.05em; left:.15em"
-});
-
-//
-// adjust for Mozilla
-//
-if (jsMath.hidden.ATTRIBUTE_NODE) {
-  jsMath.Update.TeXfonts({
-    cmex10: {
-      '48': {c: '&#xF8EB;'},
-      '49': {c: '&#xF8F6;'},
-      '50': {c: '&#xF8EE;'},
-      '51': {c: '&#xF8F9;'},
-      '52': {c: '&#xF8F0;'},
-      '53': {c: '&#xF8FB;'},
-      '54': {c: '&#xF8EF;'},
-      '55': {c: '&#xF8FA;'},
-      '56': {c: '&#xF8F1;'},
-      '57': {c: '&#xF8FC;'},
-      '58': {c: '&#xF8F3;'},
-      '59': {c: '&#xF8FE;'},
-      '60': {c: '&#xF8F2;'},
-      '61': {c: '&#xF8FD;'},
-      '62': {c: '&#xF8F4;'},
-      '64': {c: '&#xF8ED;'},
-      '65': {c: '&#xF8F8;'},
-      '66': {c: '&#xF8EC;'},
-      '67': {c: '&#xF8F7;'}
-    }
-  });
-  jsMath.Update.Styles({
-      '.accent':  'font-family: Arial unicode MS; position:relative; top:.05em; left:.05em'
-  });
-}
-
-//
-// adjust for MSIE
-//
-if (jsMath.browser == "MSIE") {
-  jsMath.Update.TeXfonts({
-    cmex10: {
-      '63': {c: '<SPAN STYLE="position:relative; left:.125em; margin-right:.125em">|</SPAN>'},
-      '119': {c: '<SPAN STYLE="position:relative; left:.02em; margin-right=.08em">|</SPAN><SPAN STYLE="margin-right:.125em">|</SPAN>'}
-    }
-  });
-}
-
-
-/*
- *  Reinstall Styles and fonts
- */
-
-jsMath.Setup.Styles();
-jsMath.Setup.TeXfonts();
-
-/*
- *  No access to TeX "not" character, so fake this
- *  Also ajust the bowtie spacing
- */
-jsMath.Macro('not','\\mathrel{\\rlap{\\kern 3mu/}}');
-jsMath.Macro('bowtie','\\mathrel\\triangleright\\kern-6mu\\mathrel\\triangleleft');
-
-jsMath.absoluteHeightVaries = 1;
-
-jsMath.defaultH = 0.8;
-
+jsMath.Script.Uncompress([
+  ['jsMath.Script.Start();jsMath.Add(jsMath.TeX,{cmr10',':[{c:"&Gamma;",','tclass:"greek"},{c:"&','Delta;",',2,'Theta;",',2,'Lambda;",',2,'Xi;",',2,'Pi;",',2,'Sigma;",',2,'Upsilon;",',2,'Phi;",',2,'Psi;",',2,'Omega;",','tclass:"','greek"},{c',':"ff','",ic:0.0778,krn:{"39":0.0778,"63":0.0778,"33":0.0778,"41":0.0778,"93":0.0778},lig:{"105":','14,"108":15},','tclass:"normal"},{c',':"fi",',27,':"fl",',27,':"ffi",',27,':"ffl",',27,':"&#x131',';",a:0,',27,':"j",','d:0.2,',27,':"&#x2CB',';",tclass:"accent"},{c:"&#','x2CA',43,'x2C7',43,'x2D8',43,'x2C9',43,'x2DA',43,'x0327;",',27,':"&#xDF;",',27,':"&#xE6',37,27,':"&#x153',37,27,':"&#xF8;",',27,':"&#xC6;",',27,':"&#x152;",',27,':"&#xD8;",',27,':"?",krn:{"108":-0.278,"76":-0.319},',27,':"!",lig:{"96":60},',27,':"&#x201D;",',27,':"#",',27,':"$",',27,':"%",',27,':"&amp;",',27,':"&#x2019;",krn:{"63":0.111,"33":0.','111},','lig:{"39":34},',27,':"(",',40,27,':")",',40,27,':"*",',27,':"+",a:0.1,',27,':",",a:-','0.3,d:0.2,','w:0.278,',27,':"-",a:0',',lig:{"45":','123},',27,':".",a:-0.','25,',27,':"/",',27,':"0",',27,':"1",',27,':"2",',27,':"3",',27,':"4",',27,':"5",',27,':"6",',27,':"7",',27,':"8",',27,':"9",',27,':":",',27,':";",',27,':"&#xA1;",',27,':"=",a:0,d:-0.1,',27,':"&#xBF;",',27,':"?",lig:{"96":62},',27,':"@",',27,':"A','",krn:{"','116','":-0.0278,"','67',150,'79',150,'71',150,'85',150,'81',150,'84','":-0.0833,"','89',162,'86','":-0.111',',"87',166,'},',27,':"B",',27,':"C",',27,':"D',148,'88',150,'87',150,'65',150,'86',150,'89','":-0.0278','},',27,':"E",',27,':"F',148,'111',162,'101',162,'117','":-0.0833,"114":-0.0833,"97":-0.0833,"65":-0.','111,"79',150,'67',150,'71',150,'81',186,'},',27,':"G",',27,':"H",',27,':"I',148,'73":0.','0278','},',27,':"J",',27,':"K',148,'79',150,'67',150,'71',150,'81',186,'},',27,':"L',148,'84',162,'89',162,'86',166,',"87',166,'},',27,':"M",',27,':"N",',27,':"O',148,'88',150,'87',150,'65',150,'86',150,'89',186,'},',27,':"P',148,'65',162,'111',150,'101',150,'97',150,'46',162,'44":-0.','0833','},',27,':"Q",',40,27,':"R',148,'116',150,'67',150,'
79',150,'71',150,'85',150,'81',150,'84',162,'89',162,'86',166,',"87',166,'},',27,':"S",',27,':"T',148,'121',150,'101',162,'111',198,276,',"117":-0.',276,'},',27,':"U",',27,':"V",','ic:0.0139,krn:{"','111',162,'101',162,'117',198,'111,"79',150,'67',150,'71',150,'81',186,'},',27,':"W",',324,'111',162,'101',162,'117',198,'111,"79',150,'67',150,'71',150,'81',186,'},',27,':"X',148,'79',150,'67',150,'71',150,'81',186,'},',27,':"Y",ic:0.025,','krn:{"101',162,'111',198,276,317,276,'},',27,':"Z",',27,':"[",','d:0.1,',27,':"&#x201C;",',27,':"]",',384,27,':"&#x2C6',43,'x2D9',43,'x2018;",lig:{"96":92},',27,':"a','",a:0,krn:{"','118',150,'106":0.','0556,"121',150,'119',186,'},',27,':"b',148,'101','":0.0278,"','111',411,'120',150,'100',411,'99',411,'113',411,'118',150,401,'0556,"121',150,'119',186,'},',27,':"c',398,'104',150,'107',186,'},',27,':"d",',27,':"e','",a:0,',27,':"f',25,'12,"102":11,"108":13},',27,':"g",','a:0,d:0.2,ic:0.','0139,krn:{"',401,216,'},',27,':"h',148,'116',150,'117',150,'98',150,'121',150,'118',150,'119',186,'},',27,':"i",',27,':"j",',40,27,':"k',148,'97','":-0.0556,"','101',150,'97',150,'111',150,'99',186,'},',27,':"l",',27,':"m',398,'116',150,'117',150,'98',150,'121',150,'118',150,'119',186,'},',27,':"n',398,'116',150,'117',150,'98',150,'121',150,'118',150,'119',186,'},',27,':"o',398,'101',411,'111',411,'120',150,'100',411,'99',411,'113',411,'118',150,401,'0556,"121',150,'119',186,'},',27,':"p',442,40,372,411,'111',411,'120',150,'100',411,'99',411,'113',411,'118',150,401,'0556,"121',150,'119',186,'},',27,':"q',442,40,27,':"r',442,27,':"s',442,27,':"t',148,'121',150,'119',186,'},',27,':"u',398,'119',186,'},',27,':"v',442,324,'97',479,'101',150,'97',150,'111',150,'99',186,'},',27,':"w',442,324,'101',150,'97',150,'111',150,'99',186,'},',27,':"x',442,27,':"y",',449,450,'111',150,'101',150,'97',150,'46',162,'44":-0.',276,'},',27,':"z',442,27,':"&#x2013',';",a:0.1,','ic:0.',216,105,'124},',27,':"&#x2014',645,'ic:0.',216,',',27,':"&#x2DD',43,'x2DC',43,'xA8;",',22,'accent"}],cmmi10',1,'ic:0.139',',krn:{"61":-0
.0556,"59":-0.111,"58":-0.111,"127":0.',276,'},tclass:"igreek"},{c:"&',3,'krn:{"127":0.','167',668,5,'ic:0.',216,',krn:{"127":0.',276,668,7,670,'167',668,9,'ic:0.0757',676,276,668,11,'ic:0.0812,krn:{"61',479,'59":-0.0556,"58":-0.0556,"127":0.','0556',668,13,'ic:0.0576',676,276,668,15,'ic:0.139',666,'0556',668,17,670,276,668,19,'ic:0.11,krn:{"61',479,691,'0556',668,21,'ic:0.0502',676,276,668,'alpha',';",a:0,ic:0.','0037',676,216,'},',2,'beta;",','d:0.2,ic:0.','0528',676,276,'},',2,'gamma;",',449,'0556,',2,'delta;",ic:0.0378,krn:{"',691,'0556},',2,'epsilon;",a:0',676,'0556},',22,'lucida"},{c:"&zeta;",',727,'0738',676,276,'},',2,'eta;",',449,'0359',676,'0556},',2,'theta;",ic:0.',216,676,276,'},',2,'iota;",a:0',676,'0556},',2,'kappa',37,2,'lambda;",',2,'mu',37,'d:0.2',676,216,'},',2,'nu',720,'0637,krn:{"',691,216,'},',2,'xi;",',727,'046',676,87,2,'pi',720,'0359,',2,'rho',37,'d:0.2',676,276,'},',2,'sigma',720,795,'krn:{"59',479,'58":-0.0556','},',2,'tau',720,'113,krn:{"',691,216,'},',2,'upsilon',720,'0359',676,216,'},',2,'phi',645,'d:0.2',676,276,'},',2,'chi',37,'d:0.2',676,'0556},',2,'psi',645,727,'0359',676,87,2,'omega',720,795,2,'epsilon;",a:0',676,276,'},',22,23,':"&#x3D1;",',670,276,'},',22,'lucida"},{c:"&#','x3D6',720,216,',',22,861,'x3F1',37,'d:0.2',676,276,'},',22,861,'x3C2;",',449,'0799',676,276,'},',22,861,'x3D5',645,'d:0.2',676,276,'},',22,861,'x21BC',';",a:0,d:-0.','2,',22,'arrows"},{c:"&#','x21BD',893,'1,',22,896,'x21C0',893,'2,',22,896,'x21C1',893,'1,',22,'arrows"},{c',':"<span style=\\"position:relative; ','top:-.1em\\">&#','x02D3',';</span>",a:0','.1,',22,'symbol"},{c',912,913,'x02D2',915,'.1,','tclass:"symbol"},{c:"&#','x25B9;",',924,'x25C3;",',22,918,':"0",',27,':"1",',27,':"2",',27,':"3",',27,':"4",',27,':"5",',27,':"6",',27,':"7",',27,':"8",',27,':"9",',27,108,'3,',27,':",",a:-',101,27,':"&lt',645,27,':"<span style=\\"font-size',':133','%; position:relative; top:.','1em\\">/</','span>",',384,'krn:{"1',479,'65',479,'77',479,'78',479,'89":0.0556,"90":-0.0556},',27,':"&gt',645,27,':"&#x22C6',37,22,'a
rial"},{c:"&#','x2202;",ic:0.0556',676,276,'},',27,':"A",',670,'139','},tclass:"italic"},{c:"','B",ic:0.0502',676,276,990,'C",ic:0.0715,krn:{"61',150,691,276,990,'D",ic:0.',216,676,'0556',990,'E",ic:0.0576',676,276,990,'F",ic:0.139',666,276,990,'G",',670,276,990,'H",ic:0.0812,krn:{"61',479,691,'0556',990,'I",ic:0.0785',676,'111',990,'J",ic:0.0962',666,'167',990,'K",ic:0.0715,krn:{"61',479,691,'0556',990,'L",',670,216,990,'M','",ic:0.109,krn:{"','61',479,691,276,990,'N',1040,'61',162,'61',150,691,276,990,'O",ic:0.',216,676,276,990,'P",ic:0.139',666,276,990,'Q",d:0.2',676,276,990,'R",ic:0.00773',676,276,990,'S",ic:0.0576,krn:{"61',479,691,276,990,'T','",ic:0.139,krn:{"','61',150,691,276,990,'U',1040,'59',166,',"58',166,',"61',479,'127":0.',216,990,'V",ic:0.222,krn:{"59','":-0.167,"','58',1096,'61',166,990,'W',1078,'59',1096,'58',1096,'61',166,990,'X",ic:0.0785,krn:{"61',162,'61',150,691,276,990,'Y",ic:0.222,krn:{"59',1096,'58',1096,'61',166,990,'Z",ic:0.0715,krn:{"61',479,691,276,'},',22,'italic"},{c',':"&#x266D;",',924,'x266E;",',924,'x266F;",',22,918,':"<span style=\\"','position: relative; top',':-.3em','; font-size:75%\\">&#','x203F',915,',d:-0.1,',22,'arial','"},{c:"<span style=\\"',1140,':.4em',1142,'x2040',915,',d:-0.1,',22,981,'x2113;",',670,'111',990,'a',442,22,1131,':"b",',22,1131,':"c",a:0',676,'0556',990,'d',148,'89":0.0556,"90',479,'106',166,',"102',1096,1092,'167',990,'e",a:0',676,'0556',990,'f",',727,'108,krn:{"',691,'167',990,'g",',449,'0359',676,216,990,'h',148,'127',186,990,'i",',22,1131,':"j",',727,'0572,krn:{"59',479,809,990,'k",ic:0.0315,',22,1131,':"l",ic:0.0197',676,276,990,'m',442,22,1131,':"n',442,22,1131,':"o",a:0',676,'0556',990,'p',442,'d:0.2',676,276,990,'q",',449,'0359',676,276,990,'r','",a:0,ic:0.',216,',krn:{"',691,'0556',990,'s",a:0',676,'0556',990,'t",',670,276,990,'u",a:0',676,216,990,'v',1245,'0359',676,216,990,'w',1245,'0269',676,276,990,'x",a:0',676,216,990,'y",',449,'0359',676,'0556',990,'z',1245,'044',676,'0556},',22,1131,':"&#x131;",a:0',676,216,990,'j",d:0.2',676,276,'},',
22,1131,':"&#x2118',37,'d:0.2',676,87,22,'arial"},{c',912,'left: .3em; top: -.65em; font-size: 67%\\">&#x2192;</',963,'ic:0.154,',924,'x0311;",ic:0.399,',22,'normal"}],cmsy10:[{c',912,'top:.1em\\">&#x2212',915,'.1,',924,'xB7',893,'2,',27,':"&#xD7',37,27,912,'top:.3em\\">&#x2A',915,',',27,':"&#xF7',37,27,':"&#x25CA;",',924,'xB1',645,27,':"&#x2213;",',924,'x2295;",',924,'x2296;",',924,'x2297;",',924,'x2298;",',924,'x2299;",',924,'x25EF;",',22,981,'x2218',893,'1,',22,'symbol2"},{c:"&#','x2022',893,'2,',924,'x224D',645,22,1361,'x2261',645,22,1361,'x2286;",',924,'x2287;",',924,'x2264;",',924,'x2265;",',924,'x227C;",',924,'x227D;",',22,918,':"~",a:0,d:-0.2,',27,':"&#x2248',645,'d:-0.1,',924,'x2282;",',924,'x2283;",',924,'x226A;",',924,'x226B;",',924,'x227A;",',924,'x227B;",',924,'x2190;",a:-0.1,',22,'arrow1"},{c:"&#','x2192;",a:-0.1,',22,1407,'x2191',';",a:0.2,d:0',',',22,'arrow1a"},{c:"&#','x2193',1412,',',22,1415,'x2194;",a:-0.1,',22,1407,'x2197',645,22,896,'x2198',645,22,896,'x2243',645,22,1361,'x21D0;",a:-0.1,',22,'arrow2"},{c:"&#','x21D2;",a:-0.1,',22,1438,'x21D1',1412,'.1,',22,1415,'x21D3',1412,'.1,',22,1415,'x21D4;",a:-0.1,',22,1438,'x2196',645,22,896,'x2199',645,22,896,'x221D',645,27,959,': 133%; margin-right: -.1em; ',1140,':.4em\\">&#x2032',915,',',22,861,'x221E',645,924,'x2208;",',924,'x220B;",',22,918,959,': 150',961,'2em\\">&#','x25B3;</',963,22,918,959,': 150',961,1485,'x25BD;</',963,22,918,959,': 133',961,'2em\\">/</',963,40,27,959,': 67%; ',1140,':-.15em; ','margin-right:-.','3em\\">&#x22A2;</',963,924,'x2200;",',924,'x2203;",',924,'xAC',893,'1,',924,'x2205;",',924,'x211C;",',924,'x2111;",',924,'x22A4;",',924,'x22A5;",',924,'x2135;",',22,918,':"A','",krn:{"48":0.','194','},tclass:"cal"},{c:"','B",ic:0.0304',',krn:{"48":0.','139',1537,'C",ic:0.0583',1539,'139',1537,'D",ic:0.',216,1539,276,1537,'E",ic:0.0894',1539,'111',1537,'F",ic:0.0993',1539,'111',1537,'G",',727,'0593',1539,'111',1537,'H",ic:0.00965',1539,'111',1537,'I",ic:0.0738',1539,216,1537,'J",',727,'185',1539,'167',1537,'K",ic:0.0144',1539,'0556
',1537,'L',1535,'139',1537,'M',1535,'139',1537,'N",ic:0.147',1539,276,1537,'O",ic:0.',216,1539,'111',1537,'P",ic:0.0822',1539,276,1537,'Q",d:0.2',1539,'111',1537,'R',1535,276,1537,'S",ic:0.075',1539,'139',1537,'T",ic:0.254',1539,216,1537,'U",ic:0.0993',1539,276,1537,'V",ic:0.0822',1539,216,1537,'W",ic:0.0822',1539,276,1537,'X",ic:0.146',1539,'139',1537,'Y",ic:0.0822',1539,276,1537,'Z",ic:0.0794',1539,'139},',22,'cal"},{c:"&#x22C3;",',924,'x22C2;",',924,'x228E;",',924,'x22C0;",',924,'x22C1;",',924,'x22A2;",',924,'x22A3;",',924,'x2308;",a:',101,22,981,'x2309;",','a:',101,22,981,'x230A;",','a:',101,22,981,'x230B;",','a:',101,22,1308,':"{",',40,27,':"}",',40,27,':"&#x2329;",','a:',101,924,'x232A;",a:',101,924,'x2223;",',384,924,'x2225;",',384,924,'x2195',1412,',',22,1415,'x21D5;",a:0.3,d:0,',22,1415,'x2216;",','a:0.3,',384,924,'x2240;",',22,918,912,'top: .8em\\">&#x221A;</',963,'h:0.04,d:0.8,',924,'x2210;",a:0.4,',924,'x2207;",',22,918,959,': 85%; ','left:-.1em; margin-right:-.',1485,'x222B',915,'.4,',384,'ic:0.111,',22,861,'x2294;",',924,'x2293;",',924,'x2291;",',924,'x2292;",',924,'xA7;",',384,27,':"&#x2020;",',384,27,':"&#x2021;",',384,27,':"&#xB6;",a:0.3,',384,22,861,'x2663;",',22,981,'x2662;",',22,981,'x2661;",',22,981,'x2660;",',22,'arial"}],cmex10:[{c',90,'h:0.04,d:1.16,n:','16,',22,'delim1"},{c',93,1766,'17,',22,1769,383,1766,'104,',22,1769,388,1766,'105,',22,1769,':"&#x2308;",',1766,'106,',22,'delim1a"},{c:"&#',1662,1766,'107,',22,1789,1667,1766,'108,',22,1789,1672,1766,'109,',22,'delim1a',1148,'margin-left:-.1em\\">{</',963,1766,'110,',22,'delim1',1148,1509,'1em\\">}</',963,1766,'111,',22,1769,1683,1766,'68,',22,'delim1b','"},{c:"&#x232A;",',1766,'69,',22,'delim1b"},{c:"&#x2223',';",h:0.7,d:0.1,delim:{rep:','12},',924,'x2225',1830,'13},',22,918,111,1766,'46,',22,1789,1704,1766,'47,',22,'delim1a"},{c',90,'h:0.04,d:1.76,n:','18,',22,'delim2"},{c',93,1849,'19,',22,1852,90,'h:0.04,d:2.36,n:','32,',22,'delim3"},{c',93,1859,'33,',22,1862,383,1859,'34,',22,1862,388,1859,'35,',22,1862,1785,1859,'36,',22,'delim3a"}
,{c',':"&#x2309;",',1859,'37,',22,1882,':"&#x230A;",',1859,'38,',22,1882,':"&#x230B;",',1859,'39,',22,1882,912,1723,'1em\\">{</',963,1859,'40,',22,1862,912,'left:-.05em; ',1509,'1em\\">}</',963,1859,'41,',22,1862,1683,1859,'42,',22,'delim3b',1825,1859,'43,',22,'delim3b"},{c',111,1859,'44,',22,1882,':"&#x2216;",',1859,'45,',22,1882,90,'h:0.04,d:2.96,','n:48,',22,'delim4"},{c',93,1936,'n:49,',22,1939,383,1936,'n:50,',22,1939,388,1936,'n:51,',22,1939,1785,1936,'n:52,',22,'delim4a"},{c',1883,1936,'n:53,',22,1959,1888,1936,'n:54,',22,1959,1893,1936,'n:55,',22,1959,912,1723,'1em\\">{</',963,1936,'n:56,',22,1939,912,1723,'1em\\">}</',963,1936,'n:57,',22,1939,1683,1936,22,'delim4b',1825,1936,22,'delim4b"},{c',111,1936,22,1959,1930,1936,22,1959,111,1849,'30,',22,'delim2a"},{c',1930,1849,'31,',22,'delim2a"},{c:"&#xE6',';",h:0.8,d:0.2,delim:{','top:48,bot:64,rep:66','},tclass:"delimx"},{c:"&#','xF6',2017,'top:49,bot:65,rep:67',2019,'xE9',2017,'top:50,bot:52,rep:54',2019,'xF9',2017,'top:51,bot:53,rep:55',2019,'xEB',2017,'bot:52,rep:54',2019,'xFB',2017,'bot:53,rep:55',2019,'xEA',2017,'top:50,rep:54',2019,'xFA',2017,'top:51,rep:55',2019,'xEC',2017,'top:56,mid:60,bot:58,rep:62',2019,'xFC',2017,'top:57,mid:61,bot:59,rep:62',2019,'xEE',2017,'top:56,bot:58,rep:62',2019,'xFE',2017,'top:57,bot:59,rep:62',2019,'xED',2017,'rep:63',2019,'xFD',2017,'rep:119',2019,'xEF',2017,'rep:62},',22,'delimx',1148,'margin:.125em\\">|</',963,'h:0.8,d:'],
+  ['0,delim:{','top:','120,bot:121,rep:63},','tclass:"','normal','"},{c:"&#','xE8',';",h:0.8,d:0.2,delim:{',1,'56,bot:59,rep:62},',3,'delimx',5,'xF8',7,1,'57,bot:58,rep:62},',3,11,5,'xE7',7,'rep:66},',3,11,5,'xF7',7,'rep:67},',3,11,5,'x2329;",','h:0.04,d:1.76,n:','28,',3,'delim2b',5,'x232A;",',33,'29,',3,36,5,'x2294',';",h:0,d:1,n:','71,',3,'bigop1',5,'x2294',';",h:0.1,d:1.','5,',3,'bigop2',5,'x222E',';",h:0,d:1.11,ic:0.095,n:','73,',3,'bigop1c',5,'x222E;",h:0,d:2.22,ic:0.222,',3,'bigop2c',5,'x2299',45,'75,',3,48,5,'x2299',51,'5,',3,54,5,'x2295',45,'77,',3,48,5,'x2295',51,'5,',3,54,5,'x2297',45,'79,',3,48,5,'x2297',51,'5,',3,54,5,'x2211',45,'88,',3,'bigop1a',5,'x220F',45,'89,',3,106,5,'x222B',57,'90,',3,60,5,'x222A',45,'91,',3,'bigop1b',5,'x2229',45,'92,',3,124,5,'x228E',45,'93,',3,124,5,'x22C0',45,'94,',3,48,5,'x22C1',45,'95,',3,48,5,'x2211',51,'6,',3,'bigop2a',5,'x220F',51,'5,',3,154,5,'x222B;",h:0,d:2.22,ic:0.222,',3,64,5,'x222A',51,'5,',3,'bigop2b',5,'x2229',51,'5,',3,170,5,'x228E',51,'5,',3,170,5,'x22C0',51,'5,',3,54,5,'x22C1',51,'5,',3,54,5,'x2210',45,'97,',3,106,5,'x2210',51,'5,',3,154,5,'xFE3F;",h:0.','722,w:0.','65,n:99,',3,'wide1',5,208,'85,w:1.1,n:100,',3,'wide2',5,208,'99,w:1.65,',3,'wide3','"},{c:"~",h:0.',209,'5,n:102,',3,'wide1a',223,'8,w:0.8,n:103,',3,'wide2a',223,'99,w:1.3,',3,'wide3a','"},{c:"[",',33,'20,',3,'delim2','"},{c:"]",',33,'21,',3,240,5,'x2308;",',33,'22,',3,'delim2a',5,'x2309;",',33,'23,',3,251,5,'x230A;",',33,'24,',3,251,5,'x230B;",',33,'25,',3,251,'"},{c:"<span style=\\"','position:relative; ','left',':-.1em','; margin-right:-.','1em\\">{</span>",',33,'26,',3,240,270,'position:relative',274,'1em; left:-.05em\\">}</span>",',33,'27,',3,240,270,'font-size: ','150%; ','position:relative; top:.','8em','\\">&#x221A;</span>",h:0.','04,d:1.16,n:113,',3,'root',270,289,'220%; ',291,'8em',293,'04,d:1.76,n:114,',3,296,270,289,'310%; ',291,'8em',274,'01em',293,'06,d:2.36,n:115,',3,296,270,289,'400%; ',291,'8em',274,'025em',293,'08,d:2.96,n:116,',3,296,270,289,'490%; ',291,'8em',274,'03em',293,
'1,d:3.75,n:117,',3,296,270,289,'580%; ',291,'775em',274,'04em',293,'12,d:4.5,n:118,',3,296,270,289,'750%; ',291,343,';','margin-right',':-.04em',293,'14,d:5.7,',3,296,270,'margin-left',':.02em\\">|</','span><span style=\\"',363,':.08em; ','margin-right:.125em\\">|</span','>",h:0.8,d:',0,1,'126,bot:127,rep:119},',3,'normal',5,'x2191',';",h:0.7,d:0,delim:{',1,'120,rep:63},',3,'arrow1a',5,'x2193;",h:0.65,d:',0,'bot:121,rep:63},',3,381,270,363,273,'\\"></',365,291,'55em',274,'3em\\">&#x25DC',';</span>",h:0.','05,',3,'symbol',270,363,':-.3em\\"></',365,291,394,274,'1em\\">&#x25DD',397,'05,',3,400,270,363,273,'\\"></',365,291,'15em',274,'3em\\">&#x25DF',397,'05,',3,400,270,363,':-.3em\\"></',365,291,419,274,'1em\\">&#x25DE',397,'05,',3,400,5,'x21D1',377,1,'126,rep:119},',3,381,5,'x21D3',377,'bot:127,rep:119},',3,381,'"}],cmti10',':[{c:"&Gamma;",','ic:0.133,',3,'igreek"},{c:"&','Delta;",',3,455,'Theta;",','ic:0.094,',3,455,'Lambda;",',3,455,'Xi;",ic:0.153,',3,455,'Pi;",ic:0.164,',3,455,'Sigma;",','ic',':0.12,',3,455,'Upsilon;",','ic:0.111,',3,455,'Phi;",','ic:0.0599,',3,455,'Psi;",','ic:0.111,',3,455,'Omega;",','ic:0.103,',3,'igreek','"},{c:"ff','",ic:0.212,krn:{"39":0.104,"63":0.104,"33":0.104,"41":0.104,"93":0.104},lig:{"105":','14,"108":15},','tclass:"italic"},{c',':"fi','",ic:0.103,',496,':"fl',498,496,':"ffi',498,496,':"ffl',498,496,':"&#x131;",a:0,','ic:0.','0767,',496,':"j",d:0.2,','ic:0.0374,',496,':"&#x2CB;",',3,'iaccent',5,'x2CA;",','ic:0.0969,',3,518,5,'x2C7;",','ic:0.083,',3,518,5,'x2D8;",','ic:0.108,',3,518,5,'x2C9;",',490,3,518,5,'x2DA;",',3,518,'"},{c:"?",','d:0.17,w:0.46,',496,':"&#xDF;",','ic:0.105,',496,':"&#xE6;",a:0,','ic:0.0751,',496,':"&#x153;",a:0,',550,496,':"&#xF8;",','ic:0.0919,',496,':"&#xC6;",','ic',474,496,':"&#x152;",','ic',474,496,':"&#xD8;",',460,496,':"?",krn:{"108":-0.','256,"76":-0.321},',496,':"!",','ic:0.124,lig:{"96":','60},',496,':"&#x201D;",','ic:0.0696,',496,':"#",ic:0.0662,',496,':"$",',496,':"%",ic:0.136,',496,':"&amp;",','ic:0.0969,',496,':"&#x2019;",','ic:0.124,','krn:{"63"
:0.','102,"33":0.102},lig:{"39":34},',496,':"(",d:0.2,','ic:0.162,',496,':")",d:0.2,','ic:0.0369,',496,':"*",ic:0.149,',496,':"+",a:0.1,','ic:0.0369,',496,':",",a:-0.3,d:0.2,w:0.278,',496,':"-",a:0,ic:0.0283',',lig:{"45":','123},',496,':".",a:-0.25,',496,':"/",ic:0.162,',496,':"0",ic:0.136,',496,':"1",ic:0.136,',496,':"2",ic:0.136,',496,':"3",ic:0.136,',496,':"4",ic:0.136,',496,':"5",ic:0.136,',496,':"6",ic:0.136,',496,':"7",ic:0.136,',496,':"8",ic:0.136,',496,':"9",ic:0.136,',496,':":",ic:0.0582,',496,':";",ic:0.0582,',496,':"&#xA1;",','ic:0.0756,',496,':"=",a:0,d:-0.1,','ic:0.0662,',496,':"&#xBF;",',496,':"?",','ic:0.122,','lig:{"96":','62},',496,':"@",ic:0.096,',496,':"A",','krn:{"110":-0.0256,"108":-0.0256,"114":-0.0256,"117":-0.0256,"109":-0.0256,"116":-0.0256,"105":-0.0256,"67":-0.0256,"79":-0.0256,"71":-0.0256,"104":-0.0256,"98":-0.0256,"85":-0.0256,"107":-0.0256,"118":-0.0256,"119":-0.0256,"81":-','0.0256,"84','":-0.0767,"','89',656,'86','":-0.102,"','87',660,'101','":-0.0511,"','97',664,'111',664,'100',664,'99',664,'103',664,'113','":-0.0511','},',496,':"B',498,496,':"C",','ic:0.145,',496,':"D",',460,'krn:{"88','":-0.0256,"','87',688,'65',688,'86',688,'89":-0.','0256},',496,':"E",ic',474,496,':"F','",ic:0.133,krn:{"','111',656,'101',656,'117','":-0.0767,"114":-0.0767,"97":-0.0767,"','65',660,'79',688,'67',688,'71',688,'81":-0.0256','},',496,':"G",ic:0.0872,',496,':"H",ic:0.164,',496,':"I",ic:0.158,',496,':"J",ic:0.14,',496,':"K",',683,'krn:{"79',688,'67',688,'71',688,717,'},',496,':"L",krn:{"84',656,'89',656,'86',660,'87',660,'101',664,'97',664,'111',664,'100',664,'99',664,'103',664,'113',676,'},',496,':"M",ic:0.164,',496,':"N",ic:0.164,',496,':"O",',460,'krn:{"88',688,'87',688,'65',688,'86',688,695,'0256},',496,':"P',498,'krn:{"65":-0.0767},',496,':"Q",d:0.2,',460,496,':"R",ic:0.0387,',654,'0.0256,"84',656,'89',656,'86',660,'87',660,'101',664,'97',664,'111',664,'100',664,'99',664,'103',664,'113',676,'},',496,':"S",ic',474,496,':"T',702,'121',656,'101',656,'111',708,'117',656,'65":-0.0767},',496,':"U",i
c:0.164,',496,':"V",ic:0.','184,krn:{"','111',656,'101',656,'117',708,'65',660,'79',688,'67',688,'71',688,717,'},',496,':"W",ic:0.',831,'65":-0.0767},',496,':"X",ic:0.158,krn:{"79',688,'67',688,'71',688,717,'},',496,':"Y",ic:0.','194',',krn:{"101',656,'111',708,'117',656,'65":-0.0767},',496,':"Z",',683,496,':"[",d:0.1,','ic:0.188,',496,':"&#x201C;",','ic:0.169,',496,':"]",d:0.1,','ic:0.105,',496,':"&#x2C6;",','ic:0.0665,',3,518,5,'x2D9;",','ic:0.118,',3,518,5,'x2018;",',573,'92},',496,':"a','",a:0,ic:0.',511,496,':"b",ic:0.0631',864,664,'97',664,'111',664,'100',664,'99',664,'103',664,'113',676,'},',496,':"c',899,'0565',864,664,'97',664,'111',664,'100',664,'99',664,'103',664,'113',676,'},',496,':"d',498,'krn:{"108":','0.0511},',496,':"e',899,'0751',864,664,'97',664,'111',664,'100',664,'99',664,'103',664,'113',676,'},',496,':"f',494,'12,"102":11,"108":13},',496,':"g','",a:0,d:0.2,ic:0.','0885,',496,':"h",ic:0.',511,496,':"i",ic:0.102,',496,513,683,496,':"k",',531,496,':"l',498,940,'0.0511},',496,':"m',899,511,496,':"n',899,511,'krn:{"39":-0.102},',496,':"o',899,'0631',864,664,'97',664,'111',664,'100',664,'99',664,'103',664,'113',676,'},',496,':"p',967,'0631',864,664,'97',664,'111',664,'100',664,'99',664,'103',664,'113',676,'},',496,':"q',967,'0885,',496,':"r',899,'108',864,664,'97',664,'111',664,'100',664,'99',664,'103',664,'113',676,'},',496,':"s',899,'0821,',496,':"t",ic:0.0949,',496,':"u',899,511,496,':"v',899,'108,',496,':"w',899,1068,940,'0.0511},',496,':"x',899,'12,',496,':"y',967,'0885,',496,':"z',899,'123,',496,':"&#x2013;",a:0.1,ic:0.','0921',607,'124},',496,':"&#x2014;",a:0.1,ic:0.','0921,',496,':"&#x2DD;",',647,3,518,5,'x2DC;",','ic:0.116,',3,518,5,'xA8;",',3,518,'"}],cmbx10',452,3,'bgreek"},{c:"&','Delta;",',3,1112,459,3,1112,'Lambda;",',3,1112,'Xi;",',3,1112,'Pi;",',3,1112,472,3,1112,477,3,1112,481,3,1112,485,3,1112,489,3,'bgreek','"},{c:"ff','",ic:0.0778,krn:{"39":0.0778,"63":0.0778,"33":0.0778,"41":0.0778,"93":0.0778},lig:{"105":','14,"108":15},','tclass:"bold"},{c',':"fi",',1146,':"fl",',1146,':"ff
i",',1146,':"ffl",',1146,509,1146,513,1146,':"&#x2CB;",',3,'baccent',5,520,3,1161,5,525,3,1161,5,530,3,1161,5,535,3,1161,5,'x2DA;",',3,1161,543,1146,546,1146,549,1146,552,1146,555,1146,558,1146,562,1146,566,1146,569,'278,"76":-0.319},',1146,572,648,'60},',1146,576,1146,':"#",',1146,':"$",',1146,':"%",',1146,585,1146,588,590,'111,"33":0.111},lig:{"39":34},',1146,593,1146,596,1146,':"*",',1146,601,1146,':",",a:-0.3,d:0.2,w:0.278,',1146,':"-",a:0',607,'123},',1146,':".",a:-0.25,',1146,':"/",',1146,':"0",',1146,':"1",',1146,':"2",',1146,':"3",',1146,':"4",',1146,':"5",',1146,':"6",',1146,':"7",',1146,':"8",',1146,':"9",',1146,':":",',1146,':";",',1146,638,1146,641,1146,':"&#xBF;",',1146,646,648,'62},',1146,':"@",',1146,':"A",krn:{"116','":-0.0278,"','67',1274,'79',1274,'71',1274,'85',1274,'81',1274,'84','":-0.0833,"','89',1286,'86":-0.','111,"87":-0.111},',1146,':"B",',1146,682,1146,':"D",krn:{"88',1274,'87',1274,'65',1274,'86',1274,695,'0278},',1146,':"E",',1146,':"F",krn:{"111',1286,'101',1286,'117','":-0.0833,"114":-0.0833,"97":-0.0833,"65":-0.','111,"79',1274,'67',1274,'71',1274,'81":-0.0278','},',1146,':"G",',1146,':"H",',1146,':"I",krn:{"73":0.0278},',1146,':"J",',1146,':"K",krn:{"79',1274,'67',1274,'71',1274,1321,'},',1146,':"L",krn:{"84',1286,'89',1286,1289,'111,"87":-0.111},',1146,':"M",',1146,':"N",',1146,':"O",krn:{"88',1274,'87',1274,'65',1274,'86',1274,695,'0278},',1146,':"P",krn:{"65',1286,'111',1274,'101',1274,'97',1274,'46',1286,'44":-0.0833},',1146,784,1146,':"R",krn:{"116',1274,'67',1274,'79',1274,'71',1274,'85',1274,'81',1274,'84',1286,'89',1286,1289,'111,"87":-0.111},',1146,':"S",',1146,':"T",krn:{"121',1274,'101',1286,'111',1314,'0833,"117":-0.0833','},',1146,':"U",',1146,830,'0139,krn:{"','111',1286,'101',1286,'117',1314,'111,"79',1274,'67',1274,'71',1274,1321,'},',1146,849,1410,'111',1286,'101',1286,'117',1314,'111,"79',1274,'67',1274,'71',1274,1321,'},',1146,':"X",krn:{"79',1274,'67',1274,'71',1274,1321,'},',1146,862,'025',864,1286,'111',1314,1404,'},',1146,872,1146,875,1146,878,1146,881,1146
,884,3,1161,5,889,3,1161,5,894,648,'92},',1146,':"a','",a:0,krn:{"','118',1274,'106":0.','0556,"121',1274,'119":-0.','0278},',1146,':"b",krn:{"101','":0.0278,"','111',1492,'120',1274,'100',1492,'99',1492,'113',1492,'118',1274,1485,'0556,"121',1274,1488,'0278},',1146,':"c',1482,'104',1274,'107":-0.0278},',1146,':"d",',1146,':"e",a:0,',1146,':"f',1144,'12,"102":11,"108":13},',1146,':"g',967,1410,1485,'0278},',1146,':"h",krn:{"116',1274,'117',1274,'98',1274,'121',1274,'118',1274,1488,'0278},',1146,':"i",',1146,513,1146,':"k",krn:{"97":-0.0556,"101',1274,'97',1274,'111',1274,'99":-0.','0278},',1146,':"l",',1146,':"m',1482,'116',1274,'117',1274,'98',1274,'121',1274,'118',1274,1488,'0278},',1146,':"n',1482,'116',1274,'117',1274,'98',1274,'121',1274,'118',1274,1488,'0278},',1146,':"o",a:0',864,1492,'111',1492,'120',1274,'100',1492,'99',1492,'113',1492,'118',1274,1485,'0556,"121',1274,1488,'0278},',1146,':"p",a:0,d:0.2',864,1492,'111',1492,'120',1274,'100',1492,'99',1492,'113',1492,'118',1274,1485,'0556,"121',1274,1488,'0278},',1146,':"q",a:0,d:0.2,',1146,':"r",a:0,',1146,':"s",a:0,',1146,':"t",krn:{"121',1274,1488,'0278},',1146,':"u',1482,1488,'0278},',1146,':"v',899,1410,'97":-0.0556,"101',1274,'97',1274,'111',1274,1554,'0278},',1146,':"w',899,'0139',864,1274,'97',1274,'111',1274,1554,'0278},',1146,':"x",a:0,',1146,':"y',967,1410,'111',1274,'101',1274,'97',1274,'46',1286,'44":-0.0833},',1146,':"z",a:0,',1146,1088,'0278',607,'124},',1146,1093,'0278,',1146,1096,3,1161,5,1101,3,1161,5,'xA8;",',3,1161,'"}]});','jsMath.Setup.Styles({".typeset .','cmr10','":"font-family',': serif','",".typeset .','italic":"font-style: italic',1712,'bold":"font-weight: bold',1712,'lucida',1710,': \'lucida sans unicode','\'",".typeset .','arial',1710,': \'arial unicode MS',1720,'cal',1710,': \'Script MT\', \'Script MT Bold\', cursive',1712,'arrows','":"font-family: \'Arial unicode MS',1720,'arrow1',1730,1720,381,1730,'\'; ',291,'05em;left:-.',419,274,419,1712,'arrow2',1730,'\'; ',271,'top',273,';",".typeset .','arrow3',1730,'\'; margin:.1em',
1712,400,1730,1720,'symbol2',1730,1720,'delim1','":"font-family: \'Times New Roman\'; font-','size: ','133%; ',291,'7em',1712,'delim1a','":"font-family: \'Lucida sans unicode\'; font-size: ','133%; ',291,'8em',1712,'delim1b',1730,'\'; font-size: ','133%; ',291,'8em',1712,240,1762,1763,'180%; ',291,'75em',1712,251,1769,'180%; ',291,'8em',1712,36,1730,1776,'180%; ',291,'8em',1712,'delim3',1762,1763,'250%; ',291,'725em',1712,'delim3a',1769,'250%; ',291,343,1712,'delim3b',1730,1776,'250%; ',291,'8em',1712,'delim4',1762,1763,'325%; ',291,'7em',1712,'delim4a',1769,'325%; ',291,343,1712,'delim4b',1730,1776,'325%; ',291,'8em',1712,11,1710,': Symbol; ',291,'2em',1712,'greek',1710,': \'Times New Roman',1720,492,1762,'style:italic',1712,1142,1762,'weight:bold',1712,48,1730,1776,'130','%; position: relative; top',': .7em; margin:-.05em',1712,106,1730,1776,'110',1863,': .85em',1750,124,1730,1776,'180',1863,': .6em',1712,60,1730,1776,'85',1863,': 1em',1712,54,1730,1776,'230',1863,1878,'; margin:-.05em',1712,154,1730,1776,'185',1863,': .75em',1712,170,1730,1776,'275',1863,': .',394,1712,64,1730,1776,'185',1863,1885,274,'1em',1712,212,'":"',289,'67',1863,':-.5em',1750,217,'":"',289,'110',1863,':-.2em',1750,222,'":"',289,'175%;",".typeset .',227,1762,1763,'75',1863,1924,1712,231,1762,1763,'133',1863,1931,1712,235,1762,1763,'200',1863,273,1712,296,1730,'\'; ',356,':-.075em',1712,'accent',1730,'\'; ',291,'05em; left:.15em',1712,518,1730,'\'; ',291,1968,'; font-','style:italic',1712,1161,1730,'\'; ',291,1968,1975,1857,'"});','if(jsMath.browser=="','Mozilla"){','jsMath.Update.TeXfonts({cmex10:{"','48":{c:"&#xF8EB;"},"49":{c:"&#xF8F6;"},"50":{c:"&#xF8EE;"},"51":{c:"&#xF8F9;"},"52":{c:"&#xF8F0;"},"53":{c:"&#xF8FB;"},"54":{c:"&#xF8EF;"},"55":{c:"&#xF8FA;"},"56":{c:"&#xF8F1;"},"57":{c:"&#xF8FC;"},"58":{c:"&#xF8F3;"},"59":{c:"&#xF8FE;"},"60":{c:"&#xF8F2;"},"61":{c:"&#xF8FD;"},"62":{c:"&#xF8F4;"},"64":{c:"&#xF8ED;"},"65":{c:"&#xF8F8;"},"66":{c:"&#xF8EC;"},"67":{c:"&#xF8F7;"}}});',1708,'accent',1710,': Arial unicode MS; ',291,'05em; left:.
05em"});}',1986,'MSIE"){jsMath.Browser.msieFontBug=1;',1988,'63','":{c:"<span style=\\"position:relative; left:.','125em; ',368,'>"},"119',2000,'02em; ',356,'=.08em\\">|</',365,368,'>"}}});}jsMath.Macro("not","\\\\mathrel{\\\\rlap{\\\\kern 3mu/}}");jsMath.Macro("bowtie","\\\\mathrel\\\\triangleright\\\\kern-6mu\\\\mathrel\\\\triangleleft");jsMath.Box.defaultH=0.8;jsMath.Script.End();']
+]);
\ No newline at end of file
Index: loncom/html/adm/jsMath/jsMath-fallback-symbols.js
diff -u loncom/html/adm/jsMath/jsMath-fallback-symbols.js:1.1 loncom/html/adm/jsMath/jsMath-fallback-symbols.js:1.2
--- loncom/html/adm/jsMath/jsMath-fallback-symbols.js:1.1	Wed Dec  7 13:57:44 2005
+++ loncom/html/adm/jsMath/jsMath-fallback-symbols.js	Mon Mar 27 14:32:07 2006
@@ -8,450 +8,21 @@
  *
  *  ---------------------------------------------------------------------
  *
- *  jsMath is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  jsMath is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with jsMath; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *  Copyright 2004-2006 by Davide P. Cervone
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
  */
 
-jsMath.Add(jsMath.Box,{
-  
-  TeX_orig: jsMath.Box.TeX,  // save old TeX routine
-
-  /*
-   * Replace the standard TeX command with one that
-   * handles the fact that we don't have the sizes of the
-   * characters precomputed
-   */
-  TeX: function (C,font,style,size) {
-    c = jsMath.TeX[font][C]; if (!c.tclass) {c.tclass = font}
-    if (c.img != null) {return this.TeX_orig(C,font,style,size)}
-    if (c.h != null && c.a == null) {c.a = c.h-1.1*jsMath.TeX.x_height}
-    var box = this.Text(c.c,c.tclass,style,size,c.a,c.d);
-    var scale = jsMath.Typeset.TeX(style,size).scale;
-    if (c.bh != null) {
-      box.bh = c.bh * scale;
-      box.bd = c.bd * scale;
-    } else {
-      var h = box.bd+box.bh;
-      var ph = Math.round(h*jsMath.em);
-      if (h > jsMath.hd) {
-        box.bd = jsMath.EmBoxFor(jsMath.HTML.Class(c.tclass,c.c)
-                   + '<IMG SRC="'+jsMath.blank+'" STYLE="'
-                   + 'width: 1; height: '+ph+'px">').h - h;
-        box.bh = h - box.bd;
-      }
-      c.bh = box.bh/scale;
-      c.bd = box.bd/scale;
-    }
-    if (jsMath.msieFontBug) {
-      // hack to avoid Font changing back to the default
-      // font when a unicode reference is not followed
-      // by a letter or number
-      box.html += '<SPAN STYLE="display: none">x</SPAN>'
-    }
-    return box;
-  }
-});
-
-jsMath.Add(jsMath.Img,{
-  UpdateTeXFonts: function (change) {
-    for (var font in change) {
-      for (var code in change[font]) {
-        jsMath.TeX[font][code] = change[font][code];
-        jsMath.TeX[font][code].tclass = 'i' + font;
-      }
-    }
-  }
-});
-
-
-jsMath.Img.UpdateTeXFonts({
-  cmr10:  {
-    '33': {c: '!', lig: {'96': 60}},
-    '35': {c: '#'},
-    '36': {c: '$'},
-    '37': {c: '%'},
-    '38': {c: '&amp;'},
-    '40': {c: '(', d:.2},
-    '41': {c: ')', d:.2},
-    '42': {c: '*', d:-.3},
-    '43': {c: '+', a:.1},
-    '44': {c: ',', a:-.3},
-    '45': {c: '-', a:0, lig: {'45': 123}},
-    '46': {c: '.', a:-.25},
-    '47': {c: '/'},
-    '48': {c: '0'},
-    '49': {c: '1'},
-    '50': {c: '2'},
-    '51': {c: '3'},
-    '52': {c: '4'},
-    '53': {c: '5'},
-    '54': {c: '6'},
-    '55': {c: '7'},
-    '56': {c: '8'},
-    '57': {c: '9'},
-    '58': {c: ':'},
-    '59': {c: ';'},
-    '61': {c: '=', a:0, d:-.1},
-    '63': {c: '?', lig: {'96': 62}},
-    '64': {c: '@'},
-    '65': {c: 'A', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}},
-    '66': {c: 'B'},
-    '67': {c: 'C'},
-    '68': {c: 'D', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}},
-    '69': {c: 'E'},
-    '70': {c: 'F', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
-    '71': {c: 'G'},
-    '72': {c: 'H'},
-    '73': {c: 'I', krn: {'73': 0.0278}},
-    '74': {c: 'J'},
-    '75': {c: 'K', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
-    '76': {c: 'L', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}},
-    '77': {c: 'M'},
-    '78': {c: 'N'},
-    '79': {c: 'O', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}},
-    '80': {c: 'P', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}},
-    '81': {c: 'Q', d: 1},
-    '82': {c: 'R', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}},
-    '83': {c: 'S'},
-    '84': {c: 'T', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}},
-    '85': {c: 'U'},
-    '86': {c: 'V', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
-    '87': {c: 'W', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
-    '88': {c: 'X', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
-    '89': {c: 'Y', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}},
-    '90': {c: 'Z'},
-    '91': {c: '[', d:.1},
-    '93': {c: ']', d:.1},
-    '97': {c: 'a', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
-    '98': {c: 'b', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
-    '99': {c: 'c', a:0, krn: {'104': -0.0278, '107': -0.0278}},
-    '100': {c: 'd'},
-    '101': {c: 'e', a:0},
-    '102': {c: 'f', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}},
-    '103': {c: 'g', a:0, d:1, ic: 0.0139, krn: {'106': 0.0278}},
-    '104': {c: 'h', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}},
-    '105': {c: 'i'},
-    '106': {c: 'j', d:1},
-    '107': {c: 'k', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}},
-    '108': {c: 'l'},
-    '109': {c: 'm', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}},
-    '110': {c: 'n', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}},
-    '111': {c: 'o', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
-    '112': {c: 'p', a:0, d:1, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
-    '113': {c: 'q', a:0, d:1},
-    '114': {c: 'r', a:0},
-    '115': {c: 's', a:0},
-    '116': {c: 't', krn: {'121': -0.0278, '119': -0.0278}},
-    '117': {c: 'u', a:0, krn: {'119': -0.0278}},
-    '118': {c: 'v', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}},
-    '119': {c: 'w', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}},
-    '120': {c: 'x', a:0},
-    '121': {c: 'y', a:0, d:1, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}},
-    '122': {c: 'z', a:0}
-  },
-  cmmi10:  {
-    '65': {c: 'A', krn: {'127': 0.139}},
-    '66': {c: 'B', ic: 0.0502, krn: {'127': 0.0833}},
-    '67': {c: 'C', ic: 0.0715, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
-    '68': {c: 'D', ic: 0.0278, krn: {'127': 0.0556}},
-    '69': {c: 'E', ic: 0.0576, krn: {'127': 0.0833}},
-    '70': {c: 'F', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}},
-    '71': {c: 'G', krn: {'127': 0.0833}},
-    '72': {c: 'H', ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}},
-    '73': {c: 'I', ic: 0.0785, krn: {'127': 0.111}},
-    '74': {c: 'J', ic: 0.0962, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.167}},
-    '75': {c: 'K', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}},
-    '76': {c: 'L', krn: {'127': 0.0278}},
-    '77': {c: 'M', ic: 0.109, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
-    '78': {c: 'N', ic: 0.109, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
-    '79': {c: 'O', ic: 0.0278, krn: {'127': 0.0833}},
-    '80': {c: 'P', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}},
-    '81': {c: 'Q', d:1, krn: {'127': 0.0833}},
-    '82': {c: 'R', ic: 0.00773, krn: {'127': 0.0833}},
-    '83': {c: 'S', ic: 0.0576, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
-    '84': {c: 'T', ic: 0.139, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
-    '85': {c: 'U', ic: 0.109, krn: {'59': -0.111, '58': -0.111, '61': -0.0556, '127': 0.0278}},
-    '86': {c: 'V', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}},
-    '87': {c: 'W', ic: 0.139, krn: {'59': -0.167, '58': -0.167, '61': -0.111}},
-    '88': {c: 'X', ic: 0.0785, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
-    '89': {c: 'Y', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}},
-    '90': {c: 'Z', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
-    '97': {c: 'a', a:0},
-    '98': {c: 'b'},
-    '99': {c: 'c', a:0, krn: {'127': 0.0556}},
-    '100': {c: 'd', krn: {'89': 0.0556, '90': -0.0556, '106': -0.111, '102': -0.167, '127': 0.167}},
-    '101': {c: 'e', a:0, krn: {'127': 0.0556}},
-    '102': {c: 'f', d:1, ic: 0.108, krn: {'59': -0.0556, '58': -0.0556, '127': 0.167}},
-    '103': {c: 'g', a:0, d:1, ic: 0.0359, krn: {'127': 0.0278}},
-    '104': {c: 'h', krn: {'127': -0.0278}},
-    '105': {c: 'i'},
-    '106': {c: 'j', d:1, ic: 0.0572, krn: {'59': -0.0556, '58': -0.0556}},
-    '107': {c: 'k', ic: 0.0315},
-    '108': {c: 'l', ic: 0.0197, krn: {'127': 0.0833}},
-    '109': {c: 'm', a:0},
-    '110': {c: 'n', a:0},
-    '111': {c: 'o', a:0, krn: {'127': 0.0556}},
-    '112': {c: 'p', a:0, d:1, krn: {'127': 0.0833}},
-    '113': {c: 'q', a:0, d:1, ic: 0.0359, krn: {'127': 0.0833}},
-    '114': {c: 'r', a:0, ic: 0.0278, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}},
-    '115': {c: 's', a:0, krn: {'127': 0.0556}},
-    '116': {c: 't', krn: {'127': 0.0833}},
-    '117': {c: 'u', a:0, krn: {'127': 0.0278}},
-    '118': {c: 'v', a:0, ic: 0.0359, krn: {'127': 0.0278}},
-    '119': {c: 'w', a:0, ic: 0.0269, krn: {'127': 0.0833}},
-    '120': {c: 'x', a:0, krn: {'127': 0.0278}},
-    '121': {c: 'y', a:0, d:1, ic: 0.0359, krn: {'127': 0.0556}},
-    '122': {c: 'z', a:0, ic: 0.044, krn: {'127': 0.0556}}
-  },
-  cmsy10: {
-    '0': {c:'&#8211;', a:.1}
-  },
-  cmti10: {
-    '33': {c: '!', lig: {'96': 60}},
-    '35': {c: '#', ic: 0.0662},
-    '37': {c: '%', ic: 0.136},
-    '38': {c: '&amp;', ic: 0.0969},
-    '40': {c: '(', d:.2, ic: 0.162},
-    '41': {c: ')', d:.2, ic: 0.0369},
-    '42': {c: '*', ic: 0.149},
-    '43': {c: '+', a:.1, ic: 0.0369},
-    '44': {c: ',', a:-.3, d:.2, w: 0.278},
-    '45': {c: '-', a:0, ic: 0.0283, lig: {'45': 123}},
-    '46': {c: '.', a:-.25},
-    '47': {c: '/', ic: 0.162},
-    '48': {c: '0', ic: 0.136},
-    '49': {c: '1', ic: 0.136},
-    '50': {c: '2', ic: 0.136},
-    '51': {c: '3', ic: 0.136},
-    '52': {c: '4', ic: 0.136},
-    '53': {c: '5', ic: 0.136},
-    '54': {c: '6', ic: 0.136},
-    '55': {c: '7', ic: 0.136},
-    '56': {c: '8', ic: 0.136},
-    '57': {c: '9', ic: 0.136},
-    '58': {c: ':', ic: 0.0582},
-    '59': {c: ';', ic: 0.0582},
-    '61': {c: '=', a:0, d:-.1, ic: 0.0662},
-    '63': {c: '?', ic: 0.122, lig: {'96': 62}},
-    '64': {c: '@', ic: 0.096},
-    '65': {c: 'A', krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
-    '66': {c: 'B', ic: 0.103},
-    '67': {c: 'C', ic: 0.145},
-    '68': {c: 'D', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}},
-    '69': {c: 'E', ic: 0.12},
-    '70': {c: 'F', ic: 0.133, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}},
-    '71': {c: 'G', ic: 0.0872},
-    '72': {c: 'H', ic: 0.164},
-    '73': {c: 'I', ic: 0.158},
-    '74': {c: 'J', ic: 0.14},
-    '75': {c: 'K', ic: 0.145, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}},
-    '76': {c: 'L', krn: {'84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
-    '77': {c: 'M', ic: 0.164},
-    '78': {c: 'N', ic: 0.164},
-    '79': {c: 'O', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}},
-    '80': {c: 'P', ic: 0.103, krn: {'65': -0.0767}},
-    '81': {c: 'Q', d: 1, ic: 0.094},
-    '82': {c: 'R', ic: 0.0387, krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
-    '83': {c: 'S', ic: 0.12},
-    '84': {c: 'T', ic: 0.133, krn: {'121': -0.0767, '101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}},
-    '85': {c: 'U', ic: 0.164},
-    '86': {c: 'V', ic: 0.184, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}},
-    '87': {c: 'W', ic: 0.184, krn: {'65': -0.0767}},
-    '88': {c: 'X', ic: 0.158, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}},
-    '89': {c: 'Y', ic: 0.194, krn: {'101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}},
-    '90': {c: 'Z', ic: 0.145},
-    '91': {c: '[', d:.1, ic: 0.188},
-    '93': {c: ']', d:.1, ic: 0.105},
-    '97': {c: 'a', a:0, ic: 0.0767},
-    '98': {c: 'b', ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
-    '99': {c: 'c', a:0, ic: 0.0565, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
-    '100': {c: 'd', ic: 0.103, krn: {'108': 0.0511}},
-    '101': {c: 'e', a:0, ic: 0.0751, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
-    '102': {c: 'f', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 12, '102': 11, '108': 13}},
-    '103': {c: 'g', a:0, d:1, ic: 0.0885},
-    '104': {c: 'h', ic: 0.0767},
-    '105': {c: 'i', ic: 0.102},
-    '106': {c: 'j', d:1, ic: 0.145},
-    '107': {c: 'k', ic: 0.108},
-    '108': {c: 'l', ic: 0.103, krn: {'108': 0.0511}},
-    '109': {c: 'm', a:0, ic: 0.0767},
-    '110': {c: 'n', a:0, ic: 0.0767, krn: {'39': -0.102}},
-    '111': {c: 'o', a:0, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
-    '112': {c: 'p', a:0, d:1, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
-    '113': {c: 'q', a:0, d:1, ic: 0.0885},
-    '114': {c: 'r', a:0, ic: 0.108, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
-    '115': {c: 's', a:0, ic: 0.0821},
-    '116': {c: 't', ic: 0.0949},
-    '117': {c: 'u', a:0, ic: 0.0767},
-    '118': {c: 'v', a:0, ic: 0.108},
-    '119': {c: 'w', a:0, ic: 0.108, krn: {'108': 0.0511}},
-    '120': {c: 'x', a:0, ic: 0.12},
-    '121': {c: 'y', a:0, d:1, ic: 0.0885},
-    '122': {c: 'z', a:0, ic: 0.123}
-  },
-  cmbx10: {
-    '33': {c: '!', lig: {'96': 60}},
-    '35': {c: '#'},
-    '36': {c: '$'},
-    '37': {c: '%'},
-    '38': {c: '&amp;'},
-    '40': {c: '(', d:.2},
-    '41': {c: ')', d:.2},
-    '42': {c: '*'},
-    '43': {c: '+', a:.1},
-    '44': {c: ',', a:-.3, d:.2, w: 0.278},
-    '45': {c: '-', a:0, lig: {'45': 123}},
-    '46': {c: '.', a:-.25},
-    '47': {c: '/'},
-    '48': {c: '0'},
-    '49': {c: '1'},
-    '50': {c: '2'},
-    '51': {c: '3'},
-    '52': {c: '4'},
-    '53': {c: '5'},
-    '54': {c: '6'},
-    '55': {c: '7'},
-    '56': {c: '8'},
-    '57': {c: '9'},
-    '58': {c: ':'},
-    '59': {c: ';'},
-    '61': {c: '=', a:0, d:-.1},
-    '63': {c: '?', lig: {'96': 62}},
-    '64': {c: '@'},
-    '65': {c: 'A', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}},
-    '66': {c: 'B'},
-    '67': {c: 'C'},
-    '68': {c: 'D', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}},
-    '69': {c: 'E'},
-    '70': {c: 'F', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
-    '71': {c: 'G'},
-    '72': {c: 'H'},
-    '73': {c: 'I', krn: {'73': 0.0278}},
-    '74': {c: 'J'},
-    '75': {c: 'K', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
-    '76': {c: 'L', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}},
-    '77': {c: 'M'},
-    '78': {c: 'N'},
-    '79': {c: 'O', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}},
-    '80': {c: 'P', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}},
-    '81': {c: 'Q', d: 1},
-    '82': {c: 'R', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}},
-    '83': {c: 'S'},
-    '84': {c: 'T', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}},
-    '85': {c: 'U'},
-    '86': {c: 'V', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
-    '87': {c: 'W', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
-    '88': {c: 'X', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
-    '89': {c: 'Y', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}},
-    '90': {c: 'Z'},
-    '91': {c: '[', d:.1},
-    '93': {c: ']', d:.1},
-    '97': {c: 'a', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
-    '98': {c: 'b', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
-    '99': {c: 'c', a:0, krn: {'104': -0.0278, '107': -0.0278}},
-    '100': {c: 'd'},
-    '101': {c: 'e', a:0},
-    '102': {c: 'f', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}},
-    '103': {c: 'g', a:0, d:1, ic: 0.0139, krn: {'106': 0.0278}},
-    '104': {c: 'h', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}},
-    '105': {c: 'i'},
-    '106': {c: 'j', d:1},
-    '107': {c: 'k', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}},
-    '108': {c: 'l'},
-    '109': {c: 'm', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}},
-    '110': {c: 'n', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}},
-    '111': {c: 'o', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
-    '112': {c: 'p', a:0, d:1, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
-    '113': {c: 'q', a:0, d:1},
-    '114': {c: 'r', a:0},
-    '115': {c: 's', a:0},
-    '116': {c: 't', krn: {'121': -0.0278, '119': -0.0278}},
-    '117': {c: 'u', a:0, krn: {'119': -0.0278}},
-    '118': {c: 'v', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}},
-    '119': {c: 'w', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}},
-    '120': {c: 'x', a:0},
-    '121': {c: 'y', a:0, d:1, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}},
-    '122': {c: 'z', a:0}
-  }
-});
-
-
-if (jsMath.browser == 'MSIE' && navigator.platform == 'MacPPC') {
-  jsMath.Update.Styles({
-    '.math':       'font-style: normal',
-    '.typeset':    'font-style: normal',
-    '.icmr10':     'font-family: Times',
-    '.icmmi10':    'font-family: Times; font-style:italic',
-    '.icmbx10':    'font-family: Times; font-weight:bold',
-    '.icmti10':    'font-family: Times; font-style:italic'
-  });
-} else {
-  jsMath.Update.Styles({
-    '.math':       'font-style: normal',
-    '.typeset':    'font-style: normal',
-    '.icmr10':     'font-family: serif',
-    '.icmmi10':    'font-family: serif; font-style:italic',
-    '.icmbx10':    'font-family: serif; font-weight:bold',
-    '.icmti10':    'font-family: serif; font-style:italic'
-  });
-}
-
-
-jsMath.Add(jsMath.Img,{
-  symbols: [
-      0,  1,  2,  3,  4,  5,  6,  7,    8,  9, 10, 11, 12, 13, 14, 15,
-     16, 17, 18, 19, 20, 21, 22, 23,   24, 25, 26, 27, 28, 29, 30, 31,
-     32,     34,                 39,
-                                                       60,     62,
-
-                                                       92,     94, 95,
-     96,
-                                                  123,124,125,126,127
-  ]
-});
-
-/*
- *  for now, use images for everything
- */
-jsMath.Img.SetFont({
-   cmr10:  jsMath.Img.symbols,
-   cmmi10: [
-      0,  1,  2,  3,  4,  5,  6,  7,    8,  9, 10, 11, 12, 13, 14, 15,
-     16, 17, 18, 19, 20, 21, 22, 23,   24, 25, 26, 27, 28, 29, 30, 31,
-     32, 33, 34, 35, 36, 37, 38, 39,   40, 41, 42, 43, 44, 45, 46, 47,
-     48, 49, 50, 51, 52, 53, 54, 55,   56, 57, 58, 59, 60, 61, 62, 63,
-     64, 
-                                                   91, 92, 93, 94, 95,
-     96,
-                                                  123,124,125,126,127
-   ],
-   cmsy10: [
-          1,  2,  3,  4,  5,  6,  7,    8,  9, 10, 11, 12, 13, 14, 15,
-     16, 17, 18, 19, 20, 21, 22, 23,   24, 25, 26, 27, 28, 29, 30, 31,
-     32, 33, 34, 35, 36, 37, 38, 39,   40, 41, 42, 43, 44, 45, 46, 47,
-     48, 49, 50, 51, 52, 53, 54, 55,   56, 57, 58, 59, 60, 61, 62, 63,
-     64, 65, 66, 67, 68, 69, 70, 71,   72, 73, 74, 75, 76, 77, 78, 79,
-     80, 81, 82, 83, 84, 85, 86, 87,   88, 89, 90, 91, 92, 93, 94, 95,
-     96, 97, 98, 99,100,101,102,103,  104,105,106,107,108,109,110,111,
-    112,113,114,115,116,117,118,119,  120,121,122,123,124,125,126,127
-   ],
-   cmex10: ['all'],
-   cmti10: jsMath.Img.symbols.concat(36),
-   cmbx10: jsMath.Img.symbols
-});
-
-jsMath.Img.LoadFont('cm-fonts');
-
-jsMath.Setup.Styles();
-jsMath.Setup.TeXfonts();
+jsMath.Script.Uncompress([
+  ['jsMath.','Script.','Start();',0,'Add(','jsMath.Img',',{','UpdateTeXFonts',':function(_1){for(var _2 in _1){for(var _3 in _1[_2]){',0,'TeX[_2][_3',']=_1[_2][_3];',0,10,'].tclass="i"+_2;}}}});',5,'.',7,'({cmr10',':{"33":{c:"!",lig:{"96":60}},"35":{c:"#"},"36":{c:"$"},"37":{c:"%"},"38":{c:"&amp;"},"40":{c:"(",d:0.2},"41":{c:")",d:0.2},"42":{c',':"*",d:-0.3},"','43":{c:"+",a:0.1},"44":{c:",",a:-0.3','},"45":{c:"-",a:0',',lig:{"45":123}},"46":{c:".",a:-0.25},"47":{c',':"/"},"','48":{c:"0','"},"49":{c:"1"},"50":{c:"2"},"51":{c:"3"},"52":{c:"4"},"53":{c:"5"},"54":{c:"6"},"55":{c:"7"},"56":{c:"8"},"57":{c:"9"},"58":{c:":"},"59":{c:";"},"61":{c:"=",a:0,d:-0.1},"63":{c:"?",lig:{"96":62}},"64":{c:"@"},"65":{c:"A",krn:{"116','":-0.0278,"','67',27,'79',27,'71',27,'85',27,'81',27,'84":-0.0833,"89":-0.0833,"86":-0.111,"87":-0.111}},"','66":{c:"B','"},"','67":{c:"C',40,'68":{c:"D','",krn:{"','88',27,'87',27,'65',27,'86',27,'89','":-0.0278}},"','69":{c:"E',40,'70":{c:"F",','krn:{"111":-0.0833,"101":-0.0833,"117":-0.0833,"114":-0.0833,"97":-0.0833,"65":-0.111,"79":-0.0278,"67":-0.0278,"71":-0.0278,"81":-0.0278}},"','71":{c:"G',40,'72":{c:"H',40,'73":{c:"I',44,'73','":0.0278}},"','74":{c:"J',40,'75":{c:"K',44,'79',27,'67',27,'71',27,'81',54,'76":{c:"L",krn:{"',38,'77":{c:"M',40,'78":{c:"N',40,'79":{c:"O',44,'88',27,'87',27,'65',27,'86',27,'89',54,'80":{c:"P",','krn:{"65":-0.','0833,"111',27,'101',27,'97',27,'46":-0.0833,"44":-0.0833}},"','81":{c:"Q",d:','1},"82":{c:"R',44,'116',27,'67',27,'79',27,'71',27,'85',27,'81',27,38,'83":{c:"S',40,'84":{c:"T',44,'121',27,'101":-0.0833,"111":-0.0833,"114":-0.0833,"97":-0.0833,"65":-0.0833,"117":-0.0833}},"','85":{c:"U',40,'86":{c:"V",ic:0.','0139,',58,'87":{c:"W",ic:0.','0139,',58,'88":{c:"X",','krn:{"79',27,'67',27,'71',27,'81',54,'89":{c:"Y",ic:0.','025',',krn:{"',128,'90":{c:"Z',40,'91":{c:"[",d:0.1','},"93":{c:"]",d:0.1','},"97":{c:"a','",a:0,krn:{"','118',27,'106":0.0556,"121',27,'119',54,'98":{c:"b",','krn:{"101":0.0278,"111":0.0278,"120":-0.0278,"100":0.0278,"99":0.0278,"113":0.0
278,"118":-0.0278,"106":0.0556,"121":-0.0278,"119":-0.0278}},"','99":{c:"c',155,'104',27,'107',54,'100":{c:"d',40,'101":{c:"e",a',':0},"102":{c:"f",ic:0.0778,krn:{"39":0.0778,"63":0.0778,"33":0.0778,"41":0.0778,"93":0.0778},lig:{"105":12,"102":11,"108":13}},"103":{c:"g",a:0,d:0.2,ic:0.0139,krn:{"106":0.0278}},"104":{c:"h",krn:{"116',27,'117',27,'98',27,'121',27,'118',27,'119',54,'105":{c:"i"},"106":{c:"j",d:','1},"107":{c:"k',44,'97','":-0.0556,"','101',27,'97',27,'111',27,'99',54,'108":{c:"l',40,'109":{c:"m',155,'116',27,'117',27,'98',27,'121',27,'118',27,'119',54,'110":{c:"n',155,'116',27,'117',27,'98',27,'121',27,'118',27,'119',54,'111":{c:"o",a:0,',163,'112":{c:"p",a:0,d:0.2,',163,'113":{c:"q",a:0,d:','1','},"114":{c:"r",a:0','},"','115":{c:"s",a:0','},"116":{c:"t',44,'121',27,'119',54,'117":{c:"u',155,'119',54,'118":{c:"v','",a:0,ic:0.','0139',148,'97',189,'101',27,'97',27,'111',27,'99',54,'119":{c:"w',248,'0139',148,'101',27,'97',27,'111',27,'99',54,'120":{c:"x",a:0','},"121":{c:"y','",a:0,d:0.2,ic:0.','0139',148,'111',27,'101',27,'97',27,105,'122":{c:"z",a:0','}},cmmi10:{"65":{c:"A',44,'127":0.139}},"',39,'",ic:0.','0502,','krn:{"127":0.0833}},"',41,290,'0715',148,'61',27,'59":-0.0556,"58":-0.0556,"127":0.','0833}},"','68":{c:"D',290,'0278',',krn:{"127":0.0556}},"',55,290,'0576,',292,57,'ic:0.139',',krn:{"61":-0.0556,"59":-0.111,"58":-0.111,"127":0.',300,59,'",',292,61,290,'0812',148,'61',189,299,'0556}},"','73":{c:"I",ic:0.','0785',148,'127":0.111}},"',67,290,'0962',311,'167}},"75":{c:"K',290,'0715',148,'61',189,299,323,'76":{c:"L",','krn:{"127":0.0278}},"',81,290,'109',148,'61',189,299,300,83,290,'109',148,'61":-0.0833,"61',27,299,300,'79":{c:"O',290,303,',',292,97,'ic:0.139',311,300,106,'0.2,',292,'82":{c:"R',290,'00773,',292,122,290,'0576',148,'61',189,299,300,'84":{c:"T",ic:0.','139',148,'61',27,299,300,129,290,'109',148,'59":-0.111,"58":-0.111,"61',189,'127',66,131,'222',',krn:{"59":-0.167,"58":-0.167,"61":-0.111}},"',134,'139',399,137,'ic:0.0785',148,'61":-0.0833,"61',27,299,300,146,'222',399,150,2
90,'0715',148,'61',189,299,300,'97":{c:"a",a:0},"98":{c:"b',40,'99":{c:"c",a:0',304,170,44,'89":0.0556,"90',189,'106":-0.111,"102":-0.167,"127":0.167}},"101":{c:"e",a:0',304,'102":{c:"f",d:','0.2,ic:0.','108',148,299,'167}},"103":{c:"g',275,'0359,',341,'104":{c:"h',44,'127',54,185,432,'0572',148,'59',189,'58":-0.',323,'107":{c:"k',290,'0315},"',198,290,'0197,',292,'109":{c:"m",a:0},"110":{c:"n",a:0},"111":{c:"o",a:0',304,230,292,'113":{c:"q',275,'0359,',292,'114":{c:"r',248,303,148,299,323,236,304,'116":{c:"t",',292,'117":{c:"u",a:0,',341,'118":{c:"v',248,'0359,',341,'119":{c:"w',248,'0269,',292,273,',',341,'121":{c:"y',275,'0359',304,'122":{c:"z',248,'044',148,'127":0.0556}}},cmsy10:{"0":{c:"&#8211;",a:0.1}},cmti10:{"33":{c:"!",lig:{"96":60}},"35":{c:"#",ic:0.0662},"37":{c:"%",ic:0.136},"38":{c:"&amp;",ic:0.0969},"40":{c:"(",d:',432,'162},"41":{c:")",d:',432,'0369},"42":{c:"*",ic:0.149},"43":{c:"+",a:0.1,ic:0.0369},"44":{c:",",a:-0.3,d:0.2,w:0.278},"45":{c:"-",a:0,ic:0.0283',23,':"/",ic:0.162},"',25,'",ic:0.136},"','49":{c:"1',506,'50":{c:"2',506,'51":{c:"3',506,'52":{c:"4',506,'53":{c:"5',506,'54":{c:"6',506,'55":{c:"7',506,'56":{c:"8',506,'57":{c:"9',506,'58":{c:":",ic:0.0582},"59":{c:";",ic:0.0582},"61":{c:"=",a:0,d:-0.1,ic:0.0662},"63":{c:"?",ic:0.122,lig:{"96":62}},"64":{c:"@",ic:0.096},"65":{c:"A",','krn:{"110":-0.0256,"108":-0.0256,"114":-0.0256,"117":-0.0256,"109":-0.0256,"116":-0.0256,"105":-0.0256,"67":-0.0256,"79":-0.0256,"71":-0.0256,"104":-0.0256,"98":-0.0256,"85":-0.0256,"107":-0.0256,"118":-0.0256,"119":-0.0256,"81":-','0.0256,"84','":-0.0767,"','89',528,'86','":-0.102,"','87',532,'101":-0.0511,"97":-0.0511,"111":-0.0511,"100":-0.0511,"99":-0.0511,"103":-0.0511,"113":-0.0511}},"',39,'",ic:0.103','},"',41,290,'145},"','68":{c:"D','",ic:0.094,krn:{"88":-0.0256,"87":-0.0256,"65":-0.0256,"86":-0.0256,"89":-0.0256}},"',55,'",ic:0.12},"',57,'ic:0.133',148,'111',528,'101',528,'117','":-0.0767,"114":-0.0767,"97":-0.0767,"','65',532,'79":-0.0256,"67":-0.0256,"71":-0.0256,"81":-0.0256}},"',59,290,'0872},"'
,61,'",ic:0.164},"',324,'158},"',67,290,'14},"75":{c:"K',290,'145',148,557,79,'84',528,'89',528,'86',532,'87',532,535,81,562,83,562,'79":{c:"O',543,97,'ic:0.103',148,'65":-0.0767}},"',106,432,'094},"82":{c:"R',290,'0387,',526,'0.0256,"84',528,'89',528,'86',532,'87',532,535,122,545,382,'133',148,'121',528,'101',528,'111',554,'117',528,591,129,562,131,'184',148,'111',528,'101',528,'117',554,'65',532,557,134,'184',148,591,137,'ic:0.158',148,557,146,'194',148,'101',528,'111',554,'117',528,591,150,290,541,152,',ic:0.188',153,',ic:0.105},"97":{c:"a',248,'0767},"',162,'ic:0.0631',148,535,'99":{c:"c',248,'0565',148,535,170,537,148,'108":0.0511}},"','101":{c:"e',248,'0751',148,535,'102":{c:"f',290,'212',148,'39":0.104,"63":0.104,"33":0.104,"41":0.104,"93":0.104},lig:{"105":12,"102":11,"108":13}},"103":{c:"g',275,'0885},"','104":{c:"h',290,661,'105":{c:"i',290,'102},"106":{c:"j",d:',432,541,'107":{c:"k',290,'108},"',198,537,148,674,'109":{c:"m',248,661,'110":{c:"n',248,'0767',148,'39":-0.102}},"111":{c:"o',248,'0631',148,535,'112":{c:"p',275,'0631',148,535,'113":{c:"q',275,686,'114":{c:"r',248,'108',148,535,'115":{c:"s',248,'0821},"116":{c:"t',290,'0949},"117":{c:"u',248,661,'118":{c:"v',248,697,'119":{c:"w',248,'108',148,674,'120":{c:"x',248,'12},"121":{c:"y',275,686,'122":{c:"z',248,'123}},cmbx10',19,':"*"},"',21,',d:0.2,w:0.278},"45":{c:"-",a:0',23,':"/"},"',25,26,27,'67',27,'79',27,'71',27,'85',27,'81',27,38,39,40,41,40,'68":{c:"D',44,'88',27,'87',27,'65',27,'86',27,'89',54,55,40,57,58,59,40,61,40,'73":{c:"I',44,'73',66,67,40,'75":{c:"K',44,'79',27,'67',27,'71',27,'81',54,79,38,81,40,83,40,'79":{c:"O',44,'88',27,'87',27,'65',27,'86',27,'89',54,97,98,'0833,"111',27,'101',27,'97',27,105,106,'1},"82":{c:"R',44,'116',27,'67',27,'79',27,'71',27,'85',27,'81',27,38,122,40,'84":{c:"T',44,'121',27,128,129,40,131,'0139,',58,134,'0139,',58,137,'krn:{"79',27,'67',27,'71',27,'81',54,146,'025',148,128,150,40,152,153,'},"97":{c:"a',155,'118',27,'106":0.0556,"121',27,'119',54,162,163,'99":{c:"c',155,'104',27,'107',54,170,40,'101":{c:
"e",a',173,27,'117',27,'98',27,'121',27,'118',27,'119',54,185,'1},"107":{c:"k',44,'97',189,'101',27,'97',27,'111',27,'99',54,198,40,'109":{c:"m',155,'116',27,'117',27,'98',27,'121',27,'118',27,'119',54,'110":{c:"n',155,'116',27,'117',27,'98',27,'121',27,'118',27,'119',54,228,163,230,163,232,'1',234,'},"',236,'},"116":{c:"t',44,'121',27,'119',54,'117":{c:"u',155,'119',54,'118":{c:"v',248,'0139',148,'97',189,'101',27,'97',27,'111',27,'99',54,'119":{c:"w',248,'0139',148,'101',27,'97',27,'111',27,'99',54,273,'},"121":{c:"y',275,'0139',148,'111',27,'101',27,'97',27,105,285,'}}});if(',0,'browser=="MSIE"&&navigator.platform=="MacPPC"){','jsMath.Setup.Styles({".typeset .math":"font-style: normal",".typeset .typeset":"font-style: normal",".typeset .icmr10":"font-family: ','Times','",".typeset .icmmi10":"font-family: ',1021,'; font-style: italic",".typeset .icmbx10":"font-family: ',1021,'; font-weight: bold",".typeset .icmti10":"font-family: ',1021,'; font-style: italic"});}','else{',1020,'serif',1022,1031,1024,1031,1026,1031,1028,0,'Add(',5,',{symbols:[0,','1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,','34,39,60,62,92,94,95,96',',123,124,125,126,127',']});',5,'.SetFont',18,':',5,'.symbols',',cmmi10:[0,',1043,'33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,','91,92,93,94,95,96',1045,'],cmsy10:[',1043,1055,'65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122',1045,'],cmex10:["all"],cmti10:',5,1052,'.concat(36),cmbx10:',5,1052,'});',5,'.LoadFont("cm-fonts");',0,1,'End();']
+]);
\ No newline at end of file
Index: loncom/html/adm/jsMath/jsMath-fallback-unix.js
diff -u loncom/html/adm/jsMath/jsMath-fallback-unix.js:1.2 loncom/html/adm/jsMath/jsMath-fallback-unix.js:1.3
--- loncom/html/adm/jsMath/jsMath-fallback-unix.js:1.2	Wed Dec  7 13:57:44 2005
+++ loncom/html/adm/jsMath/jsMath-fallback-unix.js	Mon Mar 27 14:32:07 2006
@@ -8,970 +8,22 @@
  *
  *  ---------------------------------------------------------------------
  *
- *  jsMath is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  jsMath is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with jsMath; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *  Copyright 2004-2006 by Davide P. Cervone
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
  */
 
-
-
-/********************************************************************
- *
- *  Here we replace the TeX character mappings by equivalent unicode
- *  points when possible, and adjust the character dimensions
- *  based on the fonts we hope we get them from (the styles are set
- *  to try to use the best characters available in the standard
- *  fonts).
- */
-
-jsMath.Add(jsMath.TeX,{
-
-  cmr10: [
-    // 00 - 0F
-    {c: '&Gamma;', tclass: 'greek'},
-    {c: '&Delta;', tclass: 'greek'},
-    {c: '&Theta;', tclass: 'greek'},
-    {c: '&Lambda;', tclass: 'greek'},
-    {c: '&Xi;', tclass: 'greek'},
-    {c: '&Pi;', tclass: 'greek'},
-    {c: '&Sigma;', tclass: 'greek'},
-    {c: '&Upsilon;', tclass: 'greek'},
-    {c: '&Phi;', tclass: 'greek'},
-    {c: '&Psi;', tclass: 'greek'},
-    {c: '&Omega;', tclass: 'greek'},
-    {c: 'ff', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 14, '108': 15}, tclass: 'normal'},
-    {c: 'fi', tclass: 'normal'},
-    {c: 'fl', tclass: 'normal'},
-    {c: 'ffi', tclass: 'normal'},
-    {c: 'ffl', tclass: 'normal'},
-    // 10 - 1F
-    {c: '&#x131;', a:0, tclass: 'normal'},
-    {c: 'j', d:.2, tclass: 'normal'},
-    {c: '&#x60;', tclass: 'accent'},
-    {c: '&#xB4;', tclass: 'accent'},
-    {c: '&#x2C7;', tclass: 'accent'},
-    {c: '&#x2D8;', tclass: 'accent'},
-    {c: '<SPAN STYLE="position:relative; top:.1em">&#x2C9;</SPAN>', tclass: 'accent'},
-    {c: '&#x2DA;', tclass: 'accent'},
-    {c: '&#x0327;', tclass: 'normal'},
-    {c: '&#xDF;', tclass: 'normal'},
-    {c: '&#xE6;', a:0, tclass: 'normal'},
-    {c: '&#x153;', a:0, tclass: 'normal'},
-    {c: '&#xF8;', tclass: 'normal'},
-    {c: '&#xC6;', tclass: 'normal'},
-    {c: '&#x152;', tclass: 'normal'},
-    {c: '&#xD8;', tclass: 'normal'},
-    // 20 - 2F
-    {c: '?', krn: {'108': -0.278, '76': -0.319}, tclass: 'normal'},
-    {c: '!', lig: {'96': 60}, tclass: 'normal'},
-    {c: '&#x201D;', tclass: 'normal'},
-    {c: '#', tclass: 'normal'},
-    {c: '$', tclass: 'normal'},
-    {c: '%', tclass: 'normal'},
-    {c: '&amp;', tclass: 'normal'},
-    {c: '&#x2019;', krn: {'63': 0.111, '33': 0.111}, lig: {'39': 34}, tclass: 'normal'},
-    {c: '(', d:.2, tclass: 'normal'},
-    {c: ')', d:.2, tclass: 'normal'},
-    {c: '*', tclass: 'normal'},
-    {c: '+', a:.1, tclass: 'normal'},
-    {c: ',', a:-.3, d:.2, w: 0.278, tclass: 'normal'},
-    {c: '-', a:0, lig: {'45': 123}, tclass: 'normal'},
-    {c: '.', a:-.25, tclass: 'normal'},
-    {c: '/', tclass: 'normal'},
-    // 30 - 3F
-    {c: '0', tclass: 'normal'},
-    {c: '1', tclass: 'normal'},
-    {c: '2', tclass: 'normal'},
-    {c: '3', tclass: 'normal'},
-    {c: '4', tclass: 'normal'},
-    {c: '5', tclass: 'normal'},
-    {c: '6', tclass: 'normal'},
-    {c: '7', tclass: 'normal'},
-    {c: '8', tclass: 'normal'},
-    {c: '9', tclass: 'normal'},
-    {c: ':', tclass: 'normal'},
-    {c: ';', tclass: 'normal'},
-    {c: '&#xA1;', tclass: 'normal'},
-    {c: '=', a:0, d:-.1, tclass: 'normal'},
-    {c: '&#xBF;', tclass: 'normal'},
-    {c: '?', lig: {'96': 62}, tclass: 'normal'},
-    // 40 - 4F
-    {c: '@', tclass: 'normal'},
-    {c: 'A', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
-    {c: 'B', tclass: 'normal'},
-    {c: 'C', tclass: 'normal'},
-    {c: 'D', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
-    {c: 'E', tclass: 'normal'},
-    {c: 'F', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
-    {c: 'G', tclass: 'normal'},
-    {c: 'H', tclass: 'normal'},
-    {c: 'I', krn: {'73': 0.0278}, tclass: 'normal'},
-    {c: 'J', tclass: 'normal'},
-    {c: 'K', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
-    {c: 'L', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
-    {c: 'M', tclass: 'normal'},
-    {c: 'N', tclass: 'normal'},
-    {c: 'O', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
-    // 50 - 5F
-    {c: 'P', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
-    {c: 'Q', d: 1, tclass: 'normal'},
-    {c: 'R', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
-    {c: 'S', tclass: 'normal'},
-    {c: 'T', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
-    {c: 'U', tclass: 'normal'},
-    {c: 'V', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
-    {c: 'W', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
-    {c: 'X', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
-    {c: 'Y', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
-    {c: 'Z', tclass: 'normal'},
-    {c: '[', d:.1, tclass: 'normal'},
-    {c: '&#x201C;', tclass: 'normal'},
-    {c: ']', d:.1, tclass: 'normal'},
-    {c: '&#x2C6;', tclass: 'accent'},
-    {c: '&#x2D9;', tclass: 'accent'},
-    // 60 - 6F
-    {c: '&#x2018;', lig: {'96': 92}, tclass: 'normal'},
-    {c: 'a', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: 'b', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: 'c', a:0, krn: {'104': -0.0278, '107': -0.0278}, tclass: 'normal'},
-    {c: 'd', tclass: 'normal'},
-    {c: 'e', a:0, tclass: 'normal'},
-    {c: 'f', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'normal'},
-    {c: 'g', a:0, d:1, ic: 0.0139, krn: {'106': 0.0278}, tclass: 'normal'},
-    {c: 'h', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: 'i', tclass: 'normal'},
-    {c: 'j', d:1, tclass: 'normal'},
-    {c: 'k', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
-    {c: 'l', tclass: 'normal'},
-    {c: 'm', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: 'n', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: 'o', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    // 70 - 7F
-    {c: 'p', a:0, d:1, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: 'q', a:0, d:1, tclass: 'normal'},
-    {c: 'r', a:0, tclass: 'normal'},
-    {c: 's', a:0, tclass: 'normal'},
-    {c: 't', krn: {'121': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: 'u', a:0, krn: {'119': -0.0278}, tclass: 'normal'},
-    {c: 'v', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
-    {c: 'w', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
-    {c: 'x', a:0, tclass: 'normal'},
-    {c: 'y', a:0, d:1, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
-    {c: 'z', a:0, tclass: 'normal'},
-    {c: '&#x2013;', a:.1, ic: 0.0278, lig: {'45': 124}, tclass: 'normal'},
-    {c: '&#x2014;', a:.1, ic: 0.0278, tclass: 'normal'},
-    {c: '&#x2DD;', tclass: 'accent'},
-    {c: '&#x2DC;', tclass: 'accent'},
-    {c: '&#xA8;', tclass: 'accent'}
-  ],
-  
-  cmmi10: [
-    // 00 - 0F
-    {c: '<I>&Gamma;</I>', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'greek'},
-    {c: '<I>&Delta;</I>', krn: {'127': 0.167}, tclass: 'greek'},
-    {c: '<I>&Theta;</I>', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '<I>&Lambda;</I>', krn: {'127': 0.167}, tclass: 'greek'},
-    {c: '<I>&Xi;</I>', ic: 0.0757, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '<I>&Pi;</I>', ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'greek'},
-    {c: '<I>&Sigma;</I>', ic: 0.0576, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '<I>&Upsilon;</I>', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0556}, tclass: 'greek'},
-    {c: '<I>&Phi;</I>', krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '<I>&Psi;</I>', ic: 0.11, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'greek'},
-    {c: '<I>&Omega;</I>', ic: 0.0502, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '&alpha;', a:0, ic: 0.0037, krn: {'127': 0.0278}, tclass: 'greek'},
-    {c: '&beta;', d:1, ic: 0.0528, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '&gamma;', a:0, d:1, ic: 0.0556, tclass: 'greek'},
-    {c: '&delta;', ic: 0.0378, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'greek'},
-    {c: '&epsilon;', a:0, krn: {'127': 0.0556}, tclass: 'symbol'},
-    // 10 - 1F
-    {c: '&zeta;', d:1, ic: 0.0738, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '&eta;', a:0, d:1, ic: 0.0359, krn: {'127': 0.0556}, tclass: 'greek'},
-    {c: '&theta;', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '&iota;', a:0, krn: {'127': 0.0556}, tclass: 'greek'},
-    {c: '&kappa;', a:0, tclass: 'greek'},
-    {c: '&lambda;', tclass: 'greek'},
-    {c: '&mu;', a:0, d:1, krn: {'127': 0.0278}, tclass: 'greek'},
-    {c: '&nu;', a:0, ic: 0.0637, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}, tclass: 'greek'},
-    {c: '&xi;', d:1, ic: 0.046, krn: {'127': 0.111}, tclass: 'greek'},
-    {c: '&pi;', a:0, ic: 0.0359, tclass: 'greek'},
-    {c: '&rho;', a:0, d:1, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '&sigma;', a:0, ic: 0.0359, krn: {'59': -0.0556, '58': -0.0556}, tclass: 'greek'},
-    {c: '&tau;', a:0, ic: 0.113, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}, tclass: 'greek'},
-    {c: '&upsilon;', a:0, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'greek'},
-    {c: '&phi;', a:.1, d:1, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '&chi;', a:0, d:1, krn: {'127': 0.0556}, tclass: 'greek'},
-    // 20 - 2F
-    {c: '&psi;', a:.1, d:1, ic: 0.0359, krn: {'127': 0.111}, tclass: 'greek'},
-    {c: '&omega;', a:0, ic: 0.0359, tclass: 'greek'},
-    {c: '&epsilon;', a:0, krn: {'127': 0.0833}, tclass: 'greek'},
-    {c: '&#x3D1;', krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '&#x3D6;', a:0, ic: 0.0278, tclass: 'normal'},
-    {c: '&#x3F1;', a:0, d:1, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '&#x3C2;', a:0, d:1, ic: 0.0799, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '&#x3D5;', a:.1, d:1, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '&#x21BC;', a:0, d:-.2, tclass: 'harpoon'},
-    {c: '&#x21BD;', a:0, d:-.1, tclass: 'harpoon'},
-    {c: '&#x21C0;', a:0, d:-.2, tclass: 'harpoon'},
-    {c: '&#x21C1;', a:0, d:-.1, tclass: 'harpoon'},
-    {c: '<SPAN STYLE="font-size: 133%; position:relative; top:-.1em; margin:-.2em; left:-.05em">&#x02D3;</SPAN>', a:.1, tclass: 'symbol'},
-    {c: '<SPAN STYLE="font-size: 133%; position:relative; top:-.1em; margin:-.2em; left:-.05em">&#x02D2;</SPAN>', a:.1, tclass: 'symbol'},
-    {c: '<SPAN STYLE="font-size:50%">&#x25B7;</SPAN>', tclass: 'symbol'},
-    {c: '<SPAN STYLE="font-size:50%">&#x25C1;</SPAN>', tclass: 'symbol'},
-    // 30 - 3F
-    {c: '0', tclass: 'normal'},
-    {c: '1', tclass: 'normal'},
-    {c: '2', tclass: 'normal'},
-    {c: '3', tclass: 'normal'},
-    {c: '4', tclass: 'normal'},
-    {c: '5', tclass: 'normal'},
-    {c: '6', tclass: 'normal'},
-    {c: '7', tclass: 'normal'},
-    {c: '8', tclass: 'normal'},
-    {c: '9', tclass: 'normal'},
-    {c: '.', a:-.3, tclass: 'normal'},
-    {c: ',', a:-.3, d:.2, tclass: 'normal'},
-    {c: '&lt;', a:.1, tclass: 'normal'},
-    {c: '/', krn: {'1': -0.0556, '65': -0.0556, '77': -0.0556, '78': -0.0556, '89': 0.0556, '90': -0.0556}, tclass: 'normal'},
-    {c: '&gt;', a:.1, tclass: 'normal'},
-    {c: '<SPAN STYLE="font-size:50%">&#x2605;</SPAN>', a:0, tclass: 'symbol'},
-    // 40 - 4F
-    {c: '&#x2202;', ic: 0.0556, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>A</I>', krn: {'127': 0.139}, tclass: 'normal'},
-    {c: '<I>B</I>', ic: 0.0502, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>C</I>', ic: 0.0715, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
-    {c: '<I>D</I>', ic: 0.0278, krn: {'127': 0.0556}, tclass: 'normal'},
-    {c: '<I>E</I>', ic: 0.0576, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>F</I>', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'normal'},
-    {c: '<I>G</I>', krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>H</I>', ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'normal'},
-    {c: '<I>I</I>', ic: 0.0785, krn: {'127': 0.111}, tclass: 'normal'},
-    {c: '<I>J</I>', ic: 0.0962, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.167}, tclass: 'normal'},
-    {c: '<I>K</I>', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'normal'},
-    {c: '<I>L</I>', krn: {'127': 0.0278}, tclass: 'normal'},
-    {c: '<I>M</I>', ic: 0.109, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
-    {c: '<I>N</I>', ic: 0.109, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
-    {c: '<I>O</I>', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'normal'},
-    // 50 - 5F
-    {c: '<I>P</I>', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'normal'},
-    {c: '<I>Q</I>', d:1, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>R</I>', ic: 0.00773, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>S</I>', ic: 0.0576, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
-    {c: '<I>T</I>', ic: 0.139, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
-    {c: '<I>U</I>', ic: 0.109, krn: {'59': -0.111, '58': -0.111, '61': -0.0556, '127': 0.0278}, tclass: 'normal'},
-    {c: '<I>V</I>', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'normal'},
-    {c: '<I>W</I>', ic: 0.139, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'normal'},
-    {c: '<I>X</I>', ic: 0.0785, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
-    {c: '<I>Y</I>', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'normal'},
-    {c: '<I>Z</I>', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'normal'},
-    {c: '&#x266D;', tclass: 'symbol2'},
-    {c: '&#x266E;', tclass: 'symbol2'},
-    {c: '&#x266F;', tclass: 'symbol2'},
-    {c: '&#x2323;', a:0, d:-.1, tclass: 'normal'},
-    {c: '&#x2322;', a:0, d:-.1, tclass: 'normal'},
-    // 60 - 6F
-    {c: '&#x2113;', krn: {'127': 0.111}, tclass: 'symbol'},
-    {c: '<I>a</I>', a:0, tclass: 'normal'},
-    {c: '<I>b</I>', tclass: 'normal'},
-    {c: '<I>c</I>', a:0, krn: {'127': 0.0556}, tclass: 'normal'},
-    {c: '<I>d</I>', krn: {'89': 0.0556, '90': -0.0556, '106': -0.111, '102': -0.167, '127': 0.167}, tclass: 'normal'},
-    {c: '<I>e</I>', a:0, krn: {'127': 0.0556}, tclass: 'normal'},
-    {c: '<I>f</I>', d:1, ic: 0.108, krn: {'59': -0.0556, '58': -0.0556, '127': 0.167}, tclass: 'normal'},
-    {c: '<I>g</I>', a:0, d:1, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'normal'},
-    {c: '<I>h</I>', krn: {'127': -0.0278}, tclass: 'normal'},
-    {c: '<I>i</I>', tclass: 'normal'},
-    {c: '<I>j</I>', d:1, ic: 0.0572, krn: {'59': -0.0556, '58': -0.0556}, tclass: 'normal'},
-    {c: '<I>k</I>', ic: 0.0315, tclass: 'normal'},
-    {c: '<I>l</I>', ic: 0.0197, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>m</I>', a:0, tclass: 'normal'},
-    {c: '<I>n</I>', a:0, tclass: 'normal'},
-    {c: '<I>o</I>', a:0, krn: {'127': 0.0556}, tclass: 'normal'},
-    // 70 - 7F
-    {c: '<I>p</I>', a:0, d:1, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>q</I>', a:0, d:1, ic: 0.0359, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>r</I>', a:0, ic: 0.0278, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'normal'},
-    {c: '<I>s</I>', a:0, krn: {'127': 0.0556}, tclass: 'normal'},
-    {c: '<I>t</I>', krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>u</I>', a:0, krn: {'127': 0.0278}, tclass: 'normal'},
-    {c: '<I>v</I>', a:0, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'normal'},
-    {c: '<I>w</I>', a:0, ic: 0.0269, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '<I>x</I>', a:0, krn: {'127': 0.0278}, tclass: 'normal'},
-    {c: '<I>y</I>', a:0, d:1, ic: 0.0359, krn: {'127': 0.0556}, tclass: 'normal'},
-    {c: '<I>z</I>', a:0, ic: 0.044, krn: {'127': 0.0556}, tclass: 'normal'},
-    {c: '<I>&#x131;</I>', a:0, krn: {'127': 0.0278}, tclass: 'normal'},
-    {c: '<I>j</I>', d:1, krn: {'127': 0.0833}, tclass: 'normal'},
-    {c: '&#x2118;', a:0, d:1, krn: {'127': 0.111}, tclass: 'normal'},
-    {c: '<SPAN STYLE="position:relative; left: .4em; top: -.8em; font-size: 50%">&#x2192;</SPAN>', ic: 0.154, tclass: 'symbol'},
-    {c: '&#x0311;', ic: 0.399, tclass: 'normal'}
-  ],
-
-  cmsy10: [
-    // 00 - 0F
-    {c: '&#x2212;', a:.1, tclass: 'symbol'},
-    {c: '&#xB7;', a:0, d:-.2, tclass: 'symbol'},
-    {c: '&#xD7;', a:0, tclass: 'symbol'},
-    {c: '<SPAN STYLE="position:relative; top:.2em">&#x2A;</SPAN>', a:0, tclass: 'symbol'},
-    {c: '&#xF7;', a:0, tclass: 'symbol'},
-    {c: '&#x25CA;', tclass: 'symbol'},
-    {c: '&#xB1;', a:.1, tclass: 'symbol'},
-    {c: '&#x2213;', tclass: 'symbol'},
-    {c: '&#x2295;', tclass: 'symbol'},
-    {c: '&#x2296;', tclass: 'symbol'},
-    {c: '&#x2297;', tclass: 'symbol'},
-    {c: '&#x2298;', tclass: 'symbol'},
-    {c: '&#x2299;', tclass: 'symbol'},
-    {c: '&#x25EF;', tclass: 'symbol'},
-    {c: '<SPAN STYLE="position:relative; top:.25em;">&#xB0;</SPAN>', a:0, d:-.1, tclass: 'symbol'},
-    {c: '&#x2022;', a:0, d:-.2, tclass: 'symbol'},
-    // 10 - 1F
-    {c: '&#x224D;', a:.1, tclass: 'symbol'},
-    {c: '&#x2261;', a:.1, tclass: 'symbol'},
-    {c: '&#x2286;', tclass: 'symbol'},
-    {c: '&#x2287;', tclass: 'symbol'},
-    {c: '&#x2264;', tclass: 'symbol'},
-    {c: '&#x2265;', tclass: 'symbol'},
-    {c: '&#x227C;', tclass: 'symbol'},
-    {c: '&#x227D;', tclass: 'symbol'},
-    {c: '~', a:0, d: -.2, tclass: 'normal'},
-    {c: '&#x2248;', a:.1, d:-.1, tclass: 'symbol'},
-    {c: '&#x2282;', tclass: 'symbol'},
-    {c: '&#x2283;', tclass: 'symbol'},
-    {c: '&#x226A;', tclass: 'symbol'},
-    {c: '&#x226B;', tclass: 'symbol'},
-    {c: '&#x227A;', tclass: 'symbol'},
-    {c: '&#x227B;', tclass: 'symbol'},
-    // 20 - 2F
-    {c: '&#x2190;', a:0, d:-.15, tclass: 'arrows'},
-    {c: '&#x2192;', a:0, d:-.15, tclass: 'arrows'},
-    {c: '&#x2191;', h:1, tclass: 'arrows'},
-    {c: '&#x2193;', h:1, tclass: 'arrows'},
-    {c: '&#x2194;', a:0, tclass: 'arrows'},
-    {c: '&#x2197;', h:1, tclass: 'arrows'},
-    {c: '&#x2198;', h:1, tclass: 'arrows'},
-    {c: '&#x2243;', a: .1, tclass: 'symbol'},
-    {c: '&#x21D0;', a:.1, tclass: 'arrows'},
-    {c: '&#x21D2;', a:.1, tclass: 'arrows'},
-    {c: '&#x21D1;', h:.9, d:.1, tclass: 'arrows'},
-    {c: '&#x21D3;', h:.9, d:.1, tclass: 'arrows'},
-    {c: '&#x21D4;', a:.1, tclass: 'arrows'},
-    {c: '&#x2196;', h:1, tclass: 'arrows'},
-    {c: '&#x2199;', h:1, tclass: 'arrows'},
-    {c: '&#x221D;', a:.1, tclass: 'symbol'},
-    // 30 - 3F
-    {c: '<SPAN STYLE="font-size: 133%; margin-right: -.1em; position: relative; top:.4em">&#x2032;</SPAN>', a: 0, tclass: 'symbol'},
-    {c: '&#x221E;', a:.1, tclass: 'symbol'},
-    {c: '&#x2208;', tclass: 'symbol'},
-    {c: '&#x220B;', tclass: 'symbol'},
-    {c: '&#x25B3;', tclass: 'symbol'},
-    {c: '&#x25BD;', tclass: 'symbol'},
-    {c: '/', tclass: 'symbol'},
-    {c: '<SPAN STYLE="font-size:50%; position:relative; top:-.3em; margin-right:-.2em">|</SPAN>', a:0, tclass: 'normal'},
-    {c: '&#x2200;', tclass: 'symbol'},
-    {c: '&#x2203;', tclass: 'symbol'},
-    {c: '&#xAC;', a:0, d:-.1, tclass: 'symbol1'},
-    {c: '&#x2205;', tclass: 'symbol'},
-    {c: '&#x211C;', tclass: 'symbol'},
-    {c: '&#x2111;', tclass: 'symbol'},
-    {c: '&#x22A4;', tclass: 'symbol'},
-    {c: '&#x22A5;', tclass: 'symbol'},
-    // 40 - 4F
-    {c: '&#x2135;', tclass: 'symbol'},
-    {c: 'A', krn: {'48': 0.194}, tclass: 'cal'},
-    {c: 'B', ic: 0.0304, krn: {'48': 0.139}, tclass: 'cal'},
-    {c: 'C', ic: 0.0583, krn: {'48': 0.139}, tclass: 'cal'},
-    {c: 'D', ic: 0.0278, krn: {'48': 0.0833}, tclass: 'cal'},
-    {c: 'E', ic: 0.0894, krn: {'48': 0.111}, tclass: 'cal'},
-    {c: 'F', ic: 0.0993, krn: {'48': 0.111}, tclass: 'cal'},
-    {c: 'G', d:.2, ic: 0.0593, krn: {'48': 0.111}, tclass: 'cal'},
-    {c: 'H', ic: 0.00965, krn: {'48': 0.111}, tclass: 'cal'},
-    {c: 'I', ic: 0.0738, krn: {'48': 0.0278}, tclass: 'cal'},
-    {c: 'J', d:.2, ic: 0.185, krn: {'48': 0.167}, tclass: 'cal'},
-    {c: 'K', ic: 0.0144, krn: {'48': 0.0556}, tclass: 'cal'},
-    {c: 'L', krn: {'48': 0.139}, tclass: 'cal'},
-    {c: 'M', krn: {'48': 0.139}, tclass: 'cal'},
-    {c: 'N', ic: 0.147, krn: {'48': 0.0833}, tclass: 'cal'},
-    {c: 'O', ic: 0.0278, krn: {'48': 0.111}, tclass: 'cal'},
-    // 50 - 5F
-    {c: 'P', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
-    {c: 'Q', d:.2, krn: {'48': 0.111}, tclass: 'cal'},
-    {c: 'R', krn: {'48': 0.0833}, tclass: 'cal'},
-    {c: 'S', ic: 0.075, krn: {'48': 0.139}, tclass: 'cal'},
-    {c: 'T', ic: 0.254, krn: {'48': 0.0278}, tclass: 'cal'},
-    {c: 'U', ic: 0.0993, krn: {'48': 0.0833}, tclass: 'cal'},
-    {c: 'V', ic: 0.0822, krn: {'48': 0.0278}, tclass: 'cal'},
-    {c: 'W', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
-    {c: 'X', ic: 0.146, krn: {'48': 0.139}, tclass: 'cal'},
-    {c: 'Y', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
-    {c: 'Z', ic: 0.0794, krn: {'48': 0.139}, tclass: 'cal'},
-    {c: '&#x22C3;', tclass: 'symbol'},
-    {c: '&#x22C2;', tclass: 'symbol'},
-    {c: '&#x228E;', tclass: 'symbol'},
-    {c: '&#x22C0;', tclass: 'symbol'},
-    {c: '&#x22C1;', tclass: 'symbol'},
-    // 60 - 6F
-    {c: '&#x22A2;', tclass: 'symbol'},
-    {c: '&#x22A3;', tclass: 'symbol2'},
-    {c: '&#xF8F0;', a:.3, d:.2, tclass: 'normal'},
-    {c: '&#xF8FB;', a:.3, d:.2, tclass: 'normal'},
-    {c: '&#xF8EE;', a:.3, d:.2, tclass: 'normal'},
-    {c: '&#xF8F9;', a:.3, d:.2, tclass: 'normal'},
-    {c: '{', d:.2, tclass: 'normal'},
-    {c: '}', d:.2, tclass: 'normal'},
-    {c: '&#x3008;', a:.3, d:.2, tclass: 'normal'},
-    {c: '&#x3009;', a:.3, d:.2, tclass: 'normal'},
-    {c: '|', d:.1, tclass: 'vertical'},
-    {c: '||', d:0, tclass: 'vertical'},
-    {c: '&#x2195;', h:1, d:.15, tclass: 'arrows'},
-    {c: '&#x21D5;', a:.2, d:.1, tclass: 'arrows'},
-    {c: '&#x2216;', a:.3, d:.1, tclass: 'normal'},
-    {c: '&#x2240;', tclass: 'symbol'},
-    // 70 - 7F
-    {c: '<SPAN STYLE="position:relative; top: .8em">&#x221A;</SPAN>', h:.04, d:.9, tclass: 'normal'},
-    {c: '&#x2210;', a:.4, tclass: 'symbol'},
-    {c: '&#x2207;', tclass: 'symbol'},
-    {c: '&#x222B;', h:1, d:.1, ic: 0.111, tclass: 'root'},
-    {c: '&#x2294;', tclass: 'symbol'},
-    {c: '&#x2293;', tclass: 'symbol'},
-    {c: '&#x2291;', tclass: 'symbol'},
-    {c: '&#x2292;', tclass: 'symbol'},
-    {c: '&#xA7;', d:.1, tclass: 'normal'},
-    {c: '&#x2020;', d:.1, tclass: 'normal'},
-    {c: '&#x2021;', d:.1, tclass: 'normal'},
-    {c: '&#xB6;', a:.3, d:.1, tclass: 'normal'},
-    {c: '&#x2663;', tclass: 'symbol'},
-    {c: '&#x2666;', tclass: 'symbol'},
-    {c: '&#x2665;', tclass: 'symbol'},
-    {c: '&#x2660;', tclass: 'symbol'}
-  ],
-
-  cmex10: [
-    // 00 - 0F
-    {c: '(', h: 0.04, d: 1.16, n: 16, tclass: 'delim1'},
-    {c: ')', h: 0.04, d: 1.16, n: 17, tclass: 'delim1'},
-    {c: '[', h: 0.04, d: 1.16, n: 104, tclass: 'delim1'},
-    {c: ']', h: 0.04, d: 1.16, n: 105, tclass: 'delim1'},
-    {c: '&#xF8F0', h: 0.04, d: 1.16, n: 106, tclass: 'delim1'},
-    {c: '&#xF8FB;', h: 0.04, d: 1.16, n: 107, tclass: 'delim1'},
-    {c: '&#xF8EE;', h: 0.04, d: 1.16, n: 108, tclass: 'delim1'},
-    {c: '&#xF8F9;', h: 0.04, d: 1.16, n: 109, tclass: 'delim1'},
-    {c: '{', h: 0.04, d: 1.16, n: 110, tclass: 'delim1'},
-    {c: '}', h: 0.04, d: 1.16, n: 111, tclass: 'delim1'},
-    {c: '&#x3008;', h: 0.04, d: 1.16, n: 68, tclass: 'delim1c'},
-    {c: '&#x3009;', h: 0.04, d: 1.16, n: 69, tclass: 'delim1c'},
-    {c: '|', h:.7, d:0, delim: {rep: 12}, tclass: 'vertical'},
-    {c: '||', h:.7, d:0, delim: {rep: 13}, tclass: 'vertical'},
-    {c: '/', h: 0.04, d: 1.16, n: 46, tclass: 'delim1b'},
-    {c: '&#x2216;', h: 0.04, d: 1.16, n: 47, tclass: 'delim1b'},
-    // 10 - 1F
-    {c: '(', h: 0.04, d: 1.76, n: 18, tclass: 'delim2'},
-    {c: ')', h: 0.04, d: 1.76, n: 19, tclass: 'delim2'},
-    {c: '(', h: 0.04, d: 2.36, n: 32, tclass: 'delim3'},
-    {c: ')', h: 0.04, d: 2.36, n: 33, tclass: 'delim3'},
-    {c: '[', h: 0.04, d: 2.36, n: 34, tclass: 'delim3'},
-    {c: ']', h: 0.04, d: 2.36, n: 35, tclass: 'delim3'},
-    {c: '&#xF8F0;', h: 0.04, d: 2.36, n: 36, tclass: 'delim3'},
-    {c: '&#xF8FB;', h: 0.04, d: 2.36, n: 37, tclass: 'delim3'},
-    {c: '&#xF8EE;', h: 0.04, d: 2.36, n: 38, tclass: 'delim3'},
-    {c: '&#xF8F9;', h: 0.04, d: 2.36, n: 39, tclass: 'delim3'},
-    {c: '{', h: 0.04, d: 2.36, n: 40, tclass: 'delim3'},
-    {c: '}', h: 0.04, d: 2.36, n: 41, tclass: 'delim3'},
-    {c: '&#x3008;', h: 0.04, d: 2.36, n: 42, tclass: 'delim3c'},
-    {c: '&#x3009;', h: 0.04, d: 2.36, n: 43, tclass: 'delim3c'},
-    {c: '/', h: 0.04, d: 2.36, n: 44, tclass: 'delim3b'},
-    {c: '&#x2216;', h: 0.04, d: 2.36, n: 45, tclass: 'delim3b'},
-    // 20 - 2F
-    {c: '(', h: 0.04, d: 2.96, n: 48, tclass: 'delim4'},
-    {c: ')', h: 0.04, d: 2.96, n: 49, tclass: 'delim4'},
-    {c: '[', h: 0.04, d: 2.96, n: 50, tclass: 'delim4'},
-    {c: ']', h: 0.04, d: 2.96, n: 51, tclass: 'delim4'},
-    {c: '&#xF8F0;', h: 0.04, d: 2.96, n: 52, tclass: 'delim4'},
-    {c: '&#xF8FB;', h: 0.04, d: 2.96, n: 53, tclass: 'delim4'},
-    {c: '&#xF8EE;', h: 0.04, d: 2.96, n: 54, tclass: 'delim4'},
-    {c: '&#xF8F9;', h: 0.04, d: 2.96, n: 55, tclass: 'delim4'},
-    {c: '{', h: 0.04, d: 2.96, n: 56, tclass: 'delim4'},
-    {c: '}', h: 0.04, d: 2.96, n: 57, tclass: 'delim4'},
-    {c: '&#x3008;', h: 0.04, d: 2.96, tclass: 'delim4c'},
-    {c: '&#x3009;', h: 0.04, d: 2.96, tclass: 'delim4c'},
-    {c: '/', h: 0.04, d: 2.96, tclass: 'delim4b'},
-    {c: '&#x2216;', h: 0.04, d: 2.96, tclass: 'delim4b'},
-    {c: '/', h: 0.04, d: 1.76, n: 30, tclass: 'delim2b'},
-    {c: '&#x2216;', h: 0.04, d: 1.76, n: 31, tclass: 'delim2b'},
-    // 30 - 3F
-    {c: '&#xF8EB;', h: .8, d: .15, delim: {top: 48, bot: 64, rep: 66}, tclass: 'delim'},
-    {c: '&#xF8F6;', h: .8, d: .15, delim: {top: 49, bot: 65, rep: 67}, tclass: 'delim'},
-    {c: '&#xF8EE;', h: .8, d: .15, delim: {top: 50, bot: 52, rep: 54}, tclass: 'delim'},
-    {c: '&#xF8F9;', h: .8, d: .15, delim: {top: 51, bot: 53, rep: 55}, tclass: 'delim'},
-    {c: '&#xF8F0;', h: .8, d: .15, delim: {bot: 52, rep: 54}, tclass: 'delim'},
-    {c: '&#xF8FB;', h: .8, d: .15, delim: {bot: 53, rep: 55}, tclass: 'delim'},
-    {c: '&#xF8EF;', h: .8, d: .15, delim: {top: 50, rep: 54}, tclass: 'delim'},
-    {c: '&#xF8FA;', h: .8, d: .15, delim: {top: 51, rep: 55}, tclass: 'delim'},
-    {c: '&#xF8F1;', h: .8, d: .15, delim: {top: 56, mid: 60, bot: 58, rep: 62}, tclass: 'delim'},
-    {c: '&#xF8FC;', h: .8, d: .15, delim: {top: 57, mid: 61, bot: 59, rep: 62}, tclass: 'delim'},
-    {c: '&#xF8F3;', h: .8, d: .15, delim: {top: 56, bot: 58, rep: 62}, tclass: 'delim'},
-    {c: '&#xF8FE;', h: .8, d: .15, delim: {top: 57, bot: 59, rep: 62}, tclass: 'delim'},
-    {c: '&#xF8F2;', h: .8, d: .15, delim: {rep: 63}, tclass: 'delim'},
-    {c: '&#xF8FD;', h: .8, d: .15, delim: {rep: 119}, tclass: 'delim'},
-    {c: '&#xF8F4;', h: .8, d: .15, delim: {rep: 62}, tclass: 'delim'},
-    {c: '|', h: .65, d: 0, delim: {top: 120, bot: 121, rep: 63}, tclass: 'vertical'},
-    // 40 - 4F
-    {c: '&#xF8ED;', h: .8, d: .15, delim: {top: 56, bot: 59, rep: 62}, tclass: 'delim'},
-    {c: '&#xF8F8;', h: .8, d: .15, delim: {top: 57, bot: 58, rep: 62}, tclass: 'delim'},
-    {c: '&#xF8EC;', h: .8, d: .15, delim: {rep: 66}, tclass: 'delim'},
-    {c: '&#xF8F7;', h: .8, d: .15, delim: {rep: 67}, tclass: 'delim'},
-    {c: '&#x3008;', h: 0.04, d: 1.76, n: 28, tclass: 'delim2c'},
-    {c: '&#x3009;', h: 0.04, d: 1.76, n: 29, tclass: 'delim2c'},
-    {c: '&#x2294;', h: 0, d: 1, n: 71, tclass: 'bigop1'},
-    {c: '&#x2294;', h: 0.1, d: 1.5, tclass: 'bigop2'},
-    {c: '&#x222E;', h: 0, d: 1.11, ic: 0.095, n: 73, tclass: 'bigop1c'},
-    {c: '&#x222E;', h: 0, d: 2.22, ic: 0.222, tclass: 'bigop2c'},
-    {c: '&#x2299;', h: 0, d: 1, n: 75, tclass: 'bigop1'},
-    {c: '&#x2299;', h: 0.1, d: 1.5, tclass: 'bigop2'},
-    {c: '&#x2295;', h: 0, d: 1, n: 77, tclass: 'bigop1'},
-    {c: '&#x2295;', h: 0.1, d: 1.5, tclass: 'bigop2'},
-    {c: '&#x2297;', h: 0, d: 1, n: 79, tclass: 'bigop1'},
-    {c: '&#x2297;', h: 0.1, d: 1.5, tclass: 'bigop2'},
-    // 50 - 5F
-    {c: '&#x2211;', h: 0, d: 1, n: 88, tclass: 'bigop1a'},
-    {c: '&#x220F;', h: 0, d: 1, n: 89, tclass: 'bigop1a'},
-    {c: '&#x222B;', h: 0, d: 1.11, ic: 0.095, n: 90, tclass: 'bigop1c'},
-    {c: '&#x222A;', h: 0, d: 1, n: 91, tclass: 'bigop1b'},
-    {c: '&#x2229;', h: 0, d: 1, n: 92, tclass: 'bigop1b'},
-    {c: '&#x228E;', h: 0, d: 1, n: 93, tclass: 'bigop1b'},
-    {c: '&#x2227;', h: 0, d: 1, n: 94, tclass: 'bigop1'},
-    {c: '&#x2228;', h: 0, d: 1, n: 95, tclass: 'bigop1'},
-    {c: '&#x2211;', h: 0.1, d: 1.6, tclass: 'bigop2a'},
-    {c: '&#x220F;', h: 0.1, d: 1.5, tclass: 'bigop2a'},
-    {c: '&#x222B;', h: 0, d: 2.22, ic: 0.222, tclass: 'bigop2c'},
-    {c: '&#x222A;', h: 0.1, d: 1.5, tclass: 'bigop2b'},
-    {c: '&#x2229;', h: 0.1, d: 1.5, tclass: 'bigop2b'},
-    {c: '&#x228E;', h: 0.1, d: 1.5, tclass: 'bigop2b'},
-    {c: '&#x2227;', h: 0.1, d: 1.5, tclass: 'bigop2'},
-    {c: '&#x2228;', h: 0.1, d: 1.5, tclass: 'bigop2'},
-    // 60 - 6F
-    {c: '&#x2210;', h: 0, d: 1, n: 97, tclass: 'bigop1a'},
-    {c: '&#x2210;', h: 0.1, d: 1.5, tclass: 'bigop2a'},
-    {c: '&#xFE3F;', h: 0.722, w: .65, n: 99, tclass: 'wide1'},
-    {c: '&#xFE3F;', h: 0.85, w: 1.1, n: 100, tclass: 'wide2'},
-    {c: '&#xFE3F;', h: 0.99, w: 1.65, tclass: 'wide3'},
-    {c: '&#x2053;', h: 0.722, w: .75, n: 102, tclass: 'wide1a'},
-    {c: '&#x2053;', h: 0.8, w: 1.35, n: 103, tclass: 'wide2a'},
-    {c: '&#x2053;', h: 0.99, w: 2, tclass: 'wide3a'},
-    {c: '[', h: 0.04, d: 1.76, n: 20, tclass: 'delim2'},
-    {c: ']', h: 0.04, d: 1.76, n: 21, tclass: 'delim2'},
-    {c: '&#xF8F0;', h: 0.04, d: 1.76, n: 22, tclass: 'delim2'},
-    {c: '&#xF8FB;', h: 0.04, d: 1.76, n: 23, tclass: 'delim2'},
-    {c: '&#xF8EE;', h: 0.04, d: 1.76, n: 24, tclass: 'delim2'},
-    {c: '&#xF8F9', h: 0.04, d: 1.76, n: 25, tclass: 'delim2'},
-    {c: '{', h: 0.04, d: 1.76, n: 26, tclass: 'delim2'},
-    {c: '}', h: 0.04, d: 1.76, n: 27, tclass: 'delim2'},
-    // 70 - 7F
-    {c: '<SPAN STYLE="font-size: 125%; position:relative; top:.95em">&#x221A;</SPAN>', h: 0.04, d: 1.16, n: 113, tclass: 'root'},
-    {c: '<SPAN STYLE="font-size: 190%; position:relative; top:.925em">&#x221A;</SPAN>', h: 0.04, d: 1.76, n: 114, tclass: 'root'},
-    {c: '<SPAN STYLE="font-size: 250%; position:relative; top:.925em">&#x221A;</SPAN>', h: 0.06, d: 2.36, n: 115, tclass: 'root'},
-    {c: '<SPAN STYLE="font-size: 320%; position:relative; top:.92em">&#x221A;</SPAN>', h: 0.08, d: 2.96, n: 116, tclass: 'root'},
-    {c: '<SPAN STYLE="font-size: 400%; position:relative; top:.92em">&#x221A;</SPAN>', h: 0.1, d: 3.75, n: 117, tclass: 'root'},
-    {c: '<SPAN STYLE="font-size: 500%; position:relative; top:.9em">&#x221A;</SPAN>', h: .12, d: 4.5, n: 118, tclass: 'root'},
-    {c: '<SPAN STYLE="font-size: 625%; position:relative; top:.9em">&#x221A;</SPAN>', h: .14, d: 5.7, tclass: 'root'},
-    {c: '<SPAN STYLE="margin:.001em">||</SPAN>', h:.65, d:0, delim: {top: 126, bot: 127, rep: 119}, tclass: 'vertical'},
-    {c: '&#x25B5;', h:.45, delim: {top: 120, rep: 63}, tclass: 'arrow1'},
-    {c: '&#x25BF;', h:.45, delim: {bot: 121, rep: 63}, tclass: 'arrow1'},
-    {c: '<SPAN STYLE="font-size: 67%; position:relative; top:.35em; margin-left:-.5em">&#x256D;</SPAN>', h:.1, tclass: 'symbol'},
-    {c: '<SPAN STYLE="font-size: 67%; position:relative; top:.35em; margin-right:-.5em">&#x256E;</SPAN>', h:.1, tclass: 'symbol'},
-    {c: '<SPAN STYLE="font-size: 67%; position:relative; top:.35em; margin-left:-.5em">&#x2570;</SPAN>', h:.1, tclass: 'symbol'},
-    {c: '<SPAN STYLE="font-size: 67%; position:relative; top:.35em; margin-right:-.5em">&#x256F;</SPAN>', h:.1, tclass: 'symbol'},
-    {c: '&#x25B5;', h:.5, delim: {top: 126, rep: 119}, tclass: 'arrow2'},
-    {c: '&#x25BF;', h:.5, delim: {bot: 127, rep: 119}, tclass: 'arrow2'}
-  ],
-  
-  cmti10: [
-    // 00 - 0F
-    {c: '<I>&Gamma;</I>', ic: 0.133, tclass: 'greek'},
-    {c: '<I>&Delta;</I>', tclass: 'greek'},
-    {c: '<I>&Theta;</I>', ic: 0.094, tclass: 'greek'},
-    {c: '<I>&Lambda;</I>', tclass: 'greek'},
-    {c: '<I>&Xi;</I>', ic: 0.153, tclass: 'greek'},
-    {c: '<I>&Pi;</I>', ic: 0.164, tclass: 'greek'},
-    {c: '<I>&Sigma;</I>', ic: 0.12, tclass: 'greek'},
-    {c: '<I>&Upsilon;</I>', ic: 0.111, tclass: 'greek'},
-    {c: '<I>&Phi;</I>', ic: 0.0599, tclass: 'greek'},
-    {c: '<I>&Psi;</I>', ic: 0.111, tclass: 'greek'},
-    {c: '<I>&Omega;</I>', ic: 0.103, tclass: 'greek'},
-    {c: '<I>ff</I>', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 14, '108': 15}, tclass: 'normal'},
-    {c: '<I>fi</I>', ic: 0.103, tclass: 'normal'},
-    {c: '<I>fl</I>', ic: 0.103, tclass: 'normal'},
-    {c: '<I>ffi</I>', ic: 0.103, tclass: 'normal'},
-    {c: '<I>ffl</I>', ic: 0.103, tclass: 'normal'},
-    // 10 - 1F
-    {c: '<I>&#x131;</I>', a:0, ic: 0.0767, tclass: 'normal'},
-    {c: '<I>j</I>', d:.2, ic: 0.0374, tclass: 'normal'},
-    {c: '<I>&#x60;</I>', tclass: 'accent'},
-    {c: '<I>&#xB4;</I>', ic: 0.0969, tclass: 'accent'},
-    {c: '<I>&#x2C7;</I>', ic: 0.083, tclass: 'accent'},
-    {c: '<I>&#x2D8;</I>', ic: 0.108, tclass: 'accent'},
-    {c: '<I>&#x2C9;</I>', ic: 0.103, tclass: 'accent'},
-    {c: '<I>&#x2DA;</I>', tclass: 'accent'},
-    {c: '<I>?</I>', d: 0.17, w: 0.46, tclass: 'normal'},
-    {c: '<I>&#xDF;</I>', ic: 0.105, tclass: 'normal'},
-    {c: '<I>&#xE6;</I>', a:0, ic: 0.0751, tclass: 'normal'},
-    {c: '<I>&#x153;</I>', a:0, ic: 0.0751, tclass: 'normal'},
-    {c: '<I>&#xF8;</I>', ic: 0.0919, tclass: 'normal'},
-    {c: '<I>&#xC6;</I>', ic: 0.12, tclass: 'normal'},
-    {c: '<I>&#x152;</I>', ic: 0.12, tclass: 'normal'},
-    {c: '<I>&#xD8;</I>', ic: 0.094, tclass: 'normal'},
-    // 20 - 2F
-    {c: '<I>?</I>', krn: {'108': -0.256, '76': -0.321}, tclass: 'normal'},
-    {c: '<I>!</I>', ic: 0.124, lig: {'96': 60}, tclass: 'normal'},
-    {c: '<I>&#x201D;</I>', ic: 0.0696, tclass: 'normal'},
-    {c: '<I>#</I>', ic: 0.0662, tclass: 'normal'},
-    {c: '<I>$</I>', tclass: 'normal'},
-    {c: '<I>%</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>&amp;</I>', ic: 0.0969, tclass: 'normal'},
-    {c: '<I>&#x2019;</I>', ic: 0.124, krn: {'63': 0.102, '33': 0.102}, lig: {'39': 34}, tclass: 'normal'},
-    {c: '<I>(</I>', d:.2, ic: 0.162, tclass: 'normal'},
-    {c: '<I>)</I>', d:.2, ic: 0.0369, tclass: 'normal'},
-    {c: '<I>*</I>', ic: 0.149, tclass: 'normal'},
-    {c: '<I>+</I>', a:.1, ic: 0.0369, tclass: 'normal'},
-    {c: '<I>,</I>', a:-.3, d:.2, w: 0.278, tclass: 'normal'},
-    {c: '<I>-</I>', a:0, ic: 0.0283, lig: {'45': 123}, tclass: 'normal'},
-    {c: '<I>.</I>', a:-.25, tclass: 'normal'},
-    {c: '<I>/</I>', ic: 0.162, tclass: 'normal'},
-    // 30 - 3F
-    {c: '<I>0</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>1</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>2</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>3</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>4</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>5</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>6</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>7</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>8</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>9</I>', ic: 0.136, tclass: 'normal'},
-    {c: '<I>:</I>', ic: 0.0582, tclass: 'normal'},
-    {c: '<I>;</I>', ic: 0.0582, tclass: 'normal'},
-    {c: '<I>&#xA1;</I>', ic: 0.0756, tclass: 'normal'},
-    {c: '<I>=</I>', a:0, d:-.1, ic: 0.0662, tclass: 'normal'},
-    {c: '<I>&#xBF;</I>', tclass: 'normal'},
-    {c: '<I>?</I>', ic: 0.122, lig: {'96': 62}, tclass: 'normal'},
-    // 40 - 4F
-    {c: '<I>@</I>', ic: 0.096, tclass: 'normal'},
-    {c: '<I>A</I>', krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
-    {c: '<I>B</I>', ic: 0.103, tclass: 'normal'},
-    {c: '<I>C</I>', ic: 0.145, tclass: 'normal'},
-    {c: '<I>D</I>', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}, tclass: 'normal'},
-    {c: '<I>E</I>', ic: 0.12, tclass: 'normal'},
-    {c: '<I>F</I>', ic: 0.133, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'normal'},
-    {c: '<I>G</I>', ic: 0.0872, tclass: 'normal'},
-    {c: '<I>H</I>', ic: 0.164, tclass: 'normal'},
-    {c: '<I>I</I>', ic: 0.158, tclass: 'normal'},
-    {c: '<I>J</I>', ic: 0.14, tclass: 'normal'},
-    {c: '<I>K</I>', ic: 0.145, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'normal'},
-    {c: '<I>L</I>', krn: {'84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
-    {c: '<I>M</I>', ic: 0.164, tclass: 'normal'},
-    {c: '<I>N</I>', ic: 0.164, tclass: 'normal'},
-    {c: '<I>O</I>', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}, tclass: 'normal'},
-    // 50 - 5F
-    {c: '<I>P</I>', ic: 0.103, krn: {'65': -0.0767}, tclass: 'normal'},
-    {c: '<I>Q</I>', d: 1, ic: 0.094, tclass: 'normal'},
-    {c: '<I>R</I>', ic: 0.0387, krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
-    {c: '<I>S</I>', ic: 0.12, tclass: 'normal'},
-    {c: '<I>T</I>', ic: 0.133, krn: {'121': -0.0767, '101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}, tclass: 'normal'},
-    {c: '<I>U</I>', ic: 0.164, tclass: 'normal'},
-    {c: '<I>V</I>', ic: 0.184, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'normal'},
-    {c: '<I>W</I>', ic: 0.184, krn: {'65': -0.0767}, tclass: 'normal'},
-    {c: '<I>X</I>', ic: 0.158, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'normal'},
-    {c: '<I>Y</I>', ic: 0.194, krn: {'101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}, tclass: 'normal'},
-    {c: '<I>Z</I>', ic: 0.145, tclass: 'normal'},
-    {c: '<I>[</I>', d:.1, ic: 0.188, tclass: 'normal'},
-    {c: '<I>&#x201C;</I>', ic: 0.169, tclass: 'normal'},
-    {c: '<I>]</I>', d:.1, ic: 0.105, tclass: 'normal'},
-    {c: '<I>&#x2C6;</I>', ic: 0.0665, tclass: 'accent'},
-    {c: '<I>&#x2D9;</I>', ic: 0.118, tclass: 'accent'},
-    // 60 - 6F
-    {c: '<I>&#x2018;</I>', ic: 0.124, lig: {'96': 92}, tclass: 'normal'},
-    {c: '<I>a</I>', a:0, ic: 0.0767, tclass: 'normal'},
-    {c: '<I>b</I>', ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
-    {c: '<I>c</I>', a:0, ic: 0.0565, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
-    {c: '<I>d</I>', ic: 0.103, krn: {'108': 0.0511}, tclass: 'normal'},
-    {c: '<I>e</I>', a:0, ic: 0.0751, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
-    {c: '<I>f</I>', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'normal'},
-    {c: '<I>g</I>', a:0, d:1, ic: 0.0885, tclass: 'normal'},
-    {c: '<I>h</I>', ic: 0.0767, tclass: 'normal'},
-    {c: '<I>i</I>', ic: 0.102, tclass: 'normal'},
-    {c: '<I>j</I>', d:1, ic: 0.145, tclass: 'normal'},
-    {c: '<I>k</I>', ic: 0.108, tclass: 'normal'},
-    {c: '<I>l</I>', ic: 0.103, krn: {'108': 0.0511}, tclass: 'normal'},
-    {c: '<I>m</I>', a:0, ic: 0.0767, tclass: 'normal'},
-    {c: '<I>n</I>', a:0, ic: 0.0767, krn: {'39': -0.102}, tclass: 'normal'},
-    {c: '<I>o</I>', a:0, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
-    // 70 - 7F
-    {c: '<I>p</I>', a:0, d:1, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
-    {c: '<I>q</I>', a:0, d:1, ic: 0.0885, tclass: 'normal'},
-    {c: '<I>r</I>', a:0, ic: 0.108, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'normal'},
-    {c: '<I>s</I>', a:0, ic: 0.0821, tclass: 'normal'},
-    {c: '<I>t</I>', ic: 0.0949, tclass: 'normal'},
-    {c: '<I>u</I>', a:0, ic: 0.0767, tclass: 'normal'},
-    {c: '<I>v</I>', a:0, ic: 0.108, tclass: 'normal'},
-    {c: '<I>w</I>', a:0, ic: 0.108, krn: {'108': 0.0511}, tclass: 'normal'},
-    {c: '<I>x</I>', a:0, ic: 0.12, tclass: 'normal'},
-    {c: '<I>y</I>', a:0, d:1, ic: 0.0885, tclass: 'normal'},
-    {c: '<I>z</I>', a:0, ic: 0.123, tclass: 'normal'},
-    {c: '<I>&#x2013;</I>', a:.1, ic: 0.0921, lig: {'45': 124}, tclass: 'normal'},
-    {c: '<I>&#x2014;</I>', a:.1, ic: 0.0921, tclass: 'normal'},
-    {c: '<I>&#x2DD;</I>', ic: 0.122, tclass: 'accent'},
-    {c: '<I>&#x2DC;</I>', ic: 0.116, tclass: 'accent'},
-    {c: '<I>&#xA8;</I>', tclass: 'accent'}
-  ],
-  
-  cmbx10: [
-    // 00 - 0F
-    {c: '<B>&Gamma;</B>', tclass: 'greek'},
-    {c: '<B>&Delta;</B>', tclass: 'greek'},
-    {c: '<B>&Theta;</B>', tclass: 'greek'},
-    {c: '<B>&Lambda;</B>', tclass: 'greek'},
-    {c: '<B>&Xi;</B>', tclass: 'greek'},
-    {c: '<B>&Pi;</B>', tclass: 'greek'},
-    {c: '<B>&Sigma;</B>', tclass: 'greek'},
-    {c: '<B>&Upsilon;</B>', tclass: 'greek'},
-    {c: '<B>&Phi;</B>', tclass: 'greek'},
-    {c: '<B>&Psi;</B>', tclass: 'greek'},
-    {c: '<B>&Omega;</B>', tclass: 'greek'},
-    {c: '<B>ff</B>', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 14, '108': 15}, tclass: 'normal'},
-    {c: '<B>fi</B>', tclass: 'normal'},
-    {c: '<B>fl</B>', tclass: 'normal'},
-    {c: '<B>ffi</B>', tclass: 'normal'},
-    {c: '<B>ffl</B>', tclass: 'normal'},
-    // 10 - 1F
-    {c: '<B>&#x131;</B>', a:0, tclass: 'normal'},
-    {c: '<B>j</B>', d:.2, tclass: 'normal'},
-    {c: '<B>&#x60;</B>', tclass: 'accent'},
-    {c: '<B>&#xB4;</B>', tclass: 'accent'},
-    {c: '<B>&#x2C7;</B>', tclass: 'accent'},
-    {c: '<B>&#x2D8;</B>', tclass: 'accent'},
-    {c: '<B>&#x2C9;</B>', tclass: 'accent'},
-    {c: '<B>&#x2DA;</B>', tclass: 'accent'},
-    {c: '<B>?</B>', tclass: 'normal'},
-    {c: '<B>&#xDF;</B>', tclass: 'normal'},
-    {c: '<B>&#xE6;</B>', a:0, tclass: 'normal'},
-    {c: '<B>&#x153;</B>', a:0, tclass: 'normal'},
-    {c: '<B>&#xF8;</B>', tclass: 'normal'},
-    {c: '<B>&#xC6;</B>', tclass: 'normal'},
-    {c: '<B>&#x152;</B>', tclass: 'normal'},
-    {c: '<B>&#xD8;</B>', tclass: 'normal'},
-    // 20 - 2F
-    {c: '<B>?</B>', krn: {'108': -0.278, '76': -0.319}, tclass: 'normal'},
-    {c: '<B>!</B>', lig: {'96': 60}, tclass: 'normal'},
-    {c: '<B>&#x201D;</B>', tclass: 'normal'},
-    {c: '<B>#</B>', tclass: 'normal'},
-    {c: '<B>$</B>', tclass: 'normal'},
-    {c: '<B>%</B>', tclass: 'normal'},
-    {c: '<B>&amp;</B>', tclass: 'normal'},
-    {c: '<B>&#x2019;</B>', krn: {'63': 0.111, '33': 0.111}, lig: {'39': 34}, tclass: 'normal'},
-    {c: '<B>(</B>', d:.2, tclass: 'normal'},
-    {c: '<B>)</B>', d:.2, tclass: 'normal'},
-    {c: '<B>*</B>', tclass: 'normal'},
-    {c: '<B>+</B>', a:.1, tclass: 'normal'},
-    {c: '<B>,</B>', a:-.3, d:.2, w: 0.278, tclass: 'normal'},
-    {c: '<B>-</B>', a:0, lig: {'45': 123}, tclass: 'normal'},
-    {c: '<B>.</B>', a:-.25, tclass: 'normal'},
-    {c: '<B>/</B>', tclass: 'normal'},
-    // 30 - 3F
-    {c: '<B>0</B>', tclass: 'normal'},
-    {c: '<B>1</B>', tclass: 'normal'},
-    {c: '<B>2</B>', tclass: 'normal'},
-    {c: '<B>3</B>', tclass: 'normal'},
-    {c: '<B>4</B>', tclass: 'normal'},
-    {c: '<B>5</B>', tclass: 'normal'},
-    {c: '<B>6</B>', tclass: 'normal'},
-    {c: '<B>7</B>', tclass: 'normal'},
-    {c: '<B>8</B>', tclass: 'normal'},
-    {c: '<B>9</B>', tclass: 'normal'},
-    {c: '<B>:</B>', tclass: 'normal'},
-    {c: '<B>;</B>', tclass: 'normal'},
-    {c: '<B>&#xA1;</B>', tclass: 'normal'},
-    {c: '<B>=</B>', a:0, d:-.1, tclass: 'normal'},
-    {c: '<B>&#xBF;</B>', tclass: 'normal'},
-    {c: '<B>?</B>', lig: {'96': 62}, tclass: 'normal'},
-    // 40 - 4F
-    {c: '<B>@</B>', tclass: 'normal'},
-    {c: '<B>A</B>', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
-    {c: '<B>B</B>', tclass: 'normal'},
-    {c: '<B>C</B>', tclass: 'normal'},
-    {c: '<B>D</B>', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
-    {c: '<B>E</B>', tclass: 'normal'},
-    {c: '<B>F</B>', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
-    {c: '<B>G</B>', tclass: 'normal'},
-    {c: '<B>H</B>', tclass: 'normal'},
-    {c: '<B>I</B>', krn: {'73': 0.0278}, tclass: 'normal'},
-    {c: '<B>J</B>', tclass: 'normal'},
-    {c: '<B>K</B>', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
-    {c: '<B>L</B>', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
-    {c: '<B>M</B>', tclass: 'normal'},
-    {c: '<B>N</B>', tclass: 'normal'},
-    {c: '<B>O</B>', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
-    // 50 - 5F
-    {c: '<B>P</B>', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
-    {c: '<B>Q</B>', d: 1, tclass: 'normal'},
-    {c: '<B>R</B>', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
-    {c: '<B>S</B>', tclass: 'normal'},
-    {c: '<B>T</B>', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
-    {c: '<B>U</B>', tclass: 'normal'},
-    {c: '<B>V</B>', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
-    {c: '<B>W</B>', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
-    {c: '<B>X</B>', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
-    {c: '<B>Y</B>', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
-    {c: '<B>Z</B>', tclass: 'normal'},
-    {c: '<B>[</B>', d:.1, tclass: 'normal'},
-    {c: '<B>&#x201C;</B>', tclass: 'normal'},
-    {c: '<B>]</B>', d:.1, tclass: 'normal'},
-    {c: '<B>&#x2C6;</B>', tclass: 'accent'},
-    {c: '<B>&#x2D9;</B>', tclass: 'accent'},
-    // 60 - 6F
-    {c: '<B>&#x2018;</B>', lig: {'96': 92}, tclass: 'normal'},
-    {c: '<B>a</B>', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: '<B>b</B>', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: '<B>c</B>', a:0, krn: {'104': -0.0278, '107': -0.0278}, tclass: 'normal'},
-    {c: '<B>d</B>', tclass: 'normal'},
-    {c: '<B>e</B>', a:0, tclass: 'normal'},
-    {c: '<B>f</B>', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'normal'},
-    {c: '<B>g</B>', a:0, d:1, ic: 0.0139, krn: {'106': 0.0278}, tclass: 'normal'},
-    {c: '<B>h</B>', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: '<B>i</B>', tclass: 'normal'},
-    {c: '<B>j</B>', d:1, tclass: 'normal'},
-    {c: '<B>k</B>', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
-    {c: '<B>l</B>', tclass: 'normal'},
-    {c: '<B>m</B>', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: '<B>n</B>', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: '<B>o</B>', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    // 70 - 7F
-    {c: '<B>p</B>', a:0, d:1, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: '<B>q</B>', a:0, d:1, tclass: 'normal'},
-    {c: '<B>r</B>', a:0, tclass: 'normal'},
-    {c: '<B>s</B>', a:0, tclass: 'normal'},
-    {c: '<B>t</B>', krn: {'121': -0.0278, '119': -0.0278}, tclass: 'normal'},
-    {c: '<B>u</B>', a:0, krn: {'119': -0.0278}, tclass: 'normal'},
-    {c: '<B>v</B>', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
-    {c: '<B>w</B>', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
-    {c: '<B>x</B>', a:0, tclass: 'normal'},
-    {c: '<B>y</B>', a:0, d:1, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
-    {c: '<B>z</B>', a:0, tclass: 'normal'},
-    {c: '<B>&#x2013;</B>', a:.1, ic: 0.0278, lig: {'45': 124}, tclass: 'normal'},
-    {c: '<B>&#x2014;</B>', a:.1, ic: 0.0278, tclass: 'normal'},
-    {c: '<B>&#x2DD;</B>', tclass: 'accent'},
-    {c: '<B>&#x2DC;</B>', tclass: 'accent'},
-    {c: '<B>&#xA8;</B>', tclass: 'accent'}
-  ]
-});
-
-
-/*
- *  We need to replace the jsMath.Box.TeX function in order to use the
- *  different font metrics in the tables above, and to handle the
- *  scaling better.
- */
-
-jsMath.Add(jsMath.Box,{
-  
-  TeX_orig = jsMath.Box.TeX,
-
-  TeX: function (C,font,style,size) {
-    c = jsMath.TeX[font][C]; if (!c.tclass) {c.tclass = font}
-    if (c.img != null) {return this.TeX_orig(C,font,style,size)}
-    if (c.h != null && c.a == null) {c.a = c.h-1.1*jsMath.TeX.x_height}
-    var box = this.Text(c.c,c.tclass,style,size,c.a,c.d);
-    var scale = jsMath.Typeset.TeX(style,size).scale;
-    if (c.bh != null) {
-      box.bh = c.bh * scale;
-      box.bd = c.bd * scale;
-    } else {
-      var h = box.bd+box.bh;
-      var ph = Math.round(h*jsMath.em);
-      if (h > jsMath.hd) {
-        box.bd = jsMath.EmBoxFor(jsMath.HTML.Class(c.tclass,c.c)
-                   + '<IMG SRC="'+jsMath.blank+'" STYLE="'
-                   + 'width: 1; height: '+ph+'px">').h - h;
-        box.bh = h - box.bd;
-      }
-      c.bh = box.bh/scale;
-      c.bd = box.bd/scale;
-    }
-    if (jsMath.msieFontBug) {
-      // hack to avoid Font changing back to the default
-      // font when a unicode reference is not followed
-      // by a letter or number
-      box.html += '<SPAN STYLE="display: none">x</SPAN>'
-    }
-    return box;
-  }
-});
-
-jsMath.Update.Styles({
-    '.math':           'font-style: normal',
-    '.cmr10':          'font-family: serif',
-    '.cal':            'font-family: cursive',
-    '.arrows':         '',
-    '.arrow1':         '',
-    '.arrow2':         '',
-    '.harpoon':        'font-size: 125%',
-    '.symbol':         '',
-    '.symbol2':        '',
-    '.delim1':         'font-size: 133%; position:relative; top:.75em',
-    '.delim1b':        'font-size: 133%; position:relative; top:.8em; margin: -.1em',
-    '.delim1c':        'font-size: 120%; position:relative; top:.8em;',
-    '.delim2':         'font-size: 180%; position:relative; top:.75em',
-    '.delim2b':        'font-size: 190%; position:relative; top:.8em; margin: -.1em',
-    '.delim2c':        'font-size: 167%; position:relative; top:.8em;',
-    '.delim3':         'font-size: 250%; position:relative; top:.725em',
-    '.delim3b':        'font-size: 250%; position:relative; top:.8em; margin: -.1em',
-    '.delim3c':        'font-size: 240%; position:relative; top:.775em;',
-    '.delim4':         'font-size: 325%; position:relative; top:.7em',
-    '.delim4b':        'font-size: 325%; position:relative; top:.8em; margin: -.1em',
-    '.delim4c':        'font-size: 300%; position:relative; top:.8em;',
-    '.delim':          '',
-    '.vertical':       '',
-    '.greek':          '',
-    '.bigop1':         'font-size: 133%; position: relative; top: .85em; margin:-.05em',
-    '.bigop1a':        'font-size: 100%; position: relative; top: .775em;',
-    '.bigop1b':        'font-size: 160%; position: relative; top: .7em; margin:-.1em',
-    '.bigop1c':        'font-size: 125%; position: relative; top: .75em; margin:-.1em;',
-    '.bigop2':         'font-size: 200%; position: relative; top: .8em; margin:-.07em',
-    '.bigop2a':        'font-size: 175%; position: relative; top: .7em;',
-    '.bigop2b':        'font-size: 270%; position: relative; top: .62em; margin:-.1em',
-    '.bigop2c':        'font-size: 250%; position: relative; top: .7em; margin:-.17em;',
-    '.wide1':          'font-size: 67%; position: relative; top:-.8em',
-    '.wide2':          'font-size: 110%; position: relative; top:-.5em',
-    '.wide3':          'font-size: 175%; position: relative; top:-.32em',
-    '.wide1a':         'font-size: 75%; position: relative; top:-.5em',
-    '.wide2a':         'font-size: 133%; position: relative; top: -.15em',
-    '.wide3a':         'font-size: 200%; position: relative; top: -.05em',
-    '.root':           '',
-    '.accent':         'position: relative; top: .02em'
-});
-
-
-/*
- *  Reinstall Styles and fonts
- */
-
-jsMath.Setup.Styles();
-jsMath.Setup.TeXfonts();
-
-/*
- *  No access to TeX "not" character, so fake this
- */
-jsMath.Macro('not','\\mathrel{\\rlap{\\kern 4mu/}}');
-jsMath.Macro('joinrel','\\mathrel{\\kern-2mu}');
-
-
-jsMath.Box.DelimExtend = jsMath.Box.DelimExtendRelative;
-jsMath.absoluteHeightVaries = 1;
-
-jsMath.defaultH = 0.8;
+jsMath.Script.Uncompress([
+  ['jsMath.Script.Start();jsMath.Add(jsMath.TeX,{cmr10',':[{c:"&Gamma;",','tclass:"greek"},{c:"&','Delta;",',2,'Theta;",',2,'Lambda;",',2,'Xi;",',2,'Pi;",',2,'Sigma;",',2,'Upsilon;",',2,'Phi;",',2,'Psi;",',2,'Omega;",','tclass:"','greek"},{c',':"ff','",ic:0.0778,krn:{"39":0.0778,"63":0.0778,"33":0.0778,"41":0.0778,"93":0.0778},lig:{"105":','14,"108":15},','tclass:"normal"},{c',':"fi",',27,':"fl",',27,':"ffi",',27,':"ffl",',27,':"&#x131',';",a:0,',27,':"j",d:0.2,',27,':"&#x60',';",tclass:"accent"},{c:"&#','xB4',42,'x2C7',42,'x2D8;",',22,'accent"},{c',':"<span style=\\"','position:relative; top',':.1em\\">&#x2C9',';</span>",',22,49,':"&#x2DA',42,'x0327;",',27,':"&#xDF;",',27,':"&#xE6',37,27,':"&#x153',37,27,':"&#xF8;",',27,':"&#xC6;",',27,':"&#x152;",',27,':"&#xD8;",',27,':"?",krn:{"108":-0.278,"76":-0.319},',27,':"!",lig:{"96":60},',27,':"&#x201D;",',27,':"#",',27,':"$",',27,':"%",',27,':"&amp;",',27,':"&#x2019;",krn:{"63":0.111,"33":0.','111},','lig:{"39":34},',27,':"(",','d:0.2,',27,':")",',95,27,':"*",',27,':"+",','a:0.1,',27,':",",a:-','0.3,d:0.2,','w:0.278,',27,':"-",a:0',',lig:{"45":','123},',27,':".",a:-0.','25,',27,':"/",',27,':"0",',27,':"1",',27,':"2",',27,':"3",',27,':"4",',27,':"5",',27,':"6",',27,':"7",',27,':"8",',27,':"9",',27,':":",',27,':";",',27,':"&#xA1;",',27,':"=",','a:0,d:-0.','1,',27,':"&#xBF;",',27,':"?",lig:{"96":62},',27,':"@",',27,':"A','",krn:{"','116','":-0.0278,"','67',157,'79',157,'71',157,'85',157,'81',157,'84','":-0.0833,"','89',169,'86','":-0.111',',"87',173,'},',27,':"B",',27,':"C",',27,':"D',155,'88',157,'87',157,'65',157,'86',157,'89','":-0.0278','},',27,':"E",',27,':"F',155,'111',169,'101',169,'117','":-0.0833,"114":-0.0833,"97":-0.0833,"65":-0.','111,"79',157,'67',157,'71',157,'81',193,'},',27,':"G",',27,':"H",',27,':"I',155,'73":0.','0278','},',27,':"J",',27,':"K',155,'79',157,'67',157,'71',157,'81',193,'},',27,':"L',155,'84',169,'89',169,'86',173,',"87',173,'},',27,':"M",',27,':"N",',27,':"O',155,'88',157,'87',157,'65',157,'86',157,'89',193,'},',27,':"P',155,'65',169,'111
',157,'101',157,'97',157,'46',169,'44":-0.','0833','},',27,':"Q",d:1,',27,':"R',155,'116',157,'67',157,'79',157,'71',157,'85',157,'81',157,'84',169,'89',169,'86',173,',"87',173,'},',27,':"S",',27,':"T',155,'121',157,'101',169,'111',205,283,',"117":-0.',283,'},',27,':"U",',27,':"V",','ic:0.0139,krn:{"','111',169,'101',169,'117',205,'111,"79',157,'67',157,'71',157,'81',193,'},',27,':"W",',330,'111',169,'101',169,'117',205,'111,"79',157,'67',157,'71',157,'81',193,'},',27,':"X',155,'79',157,'67',157,'71',157,'81',193,'},',27,':"Y",ic:0.025,','krn:{"101',169,'111',205,283,323,283,'},',27,':"Z",',27,':"[",','d:0.1,',27,':"&#x201C;",',27,':"]",',390,27,':"&#x2C6',42,'x2D9',42,'x2018;",lig:{"96":92},',27,':"a','",a:0,krn:{"','118',157,'106":0.','0556,"121',157,'119',193,'},',27,':"b',155,'101','":0.0278,"','111',417,'120',157,'100',417,'99',417,'113',417,'118',157,407,'0556,"121',157,'119',193,'},',27,':"c',404,'104',157,'107',193,'},',27,':"d",',27,':"e','",a:0,',27,':"f',25,'12,"102":11,"108":13},',27,':"g",','a:0,d:0.2,ic:0.','0139,krn:{"',407,223,'},',27,':"h',155,'116',157,'117',157,'98',157,'121',157,'118',157,'119',193,'},',27,':"i",',27,39,27,':"k',155,'97','":-0.0556,"','101',157,'97',157,'111',157,'99',193,'},',27,':"l",',27,':"m',404,'116',157,'117',157,'98',157,'121',157,'118',157,'119',193,'},',27,':"n',404,'116',157,'117',157,'98',157,'121',157,'118',157,'119',193,'},',27,':"o',404,'101',417,'111',417,'120',157,'100',417,'99',417,'113',417,'118',157,407,'0556,"121',157,'119',193,'},',27,':"p',448,95,378,417,'111',417,'120',157,'100',417,'99',417,'113',417,'118',157,407,'0556,"121',157,'119',193,'},',27,':"q',448,95,27,':"r',448,27,':"s',448,27,':"t',155,'121',157,'119',193,'},',27,':"u',404,'119',193,'},',27,':"v',448,330,'97',484,'101',157,'97',157,'111',157,'99',193,'},',27,':"w',448,330,'101',157,'97',157,'111',157,'99',193,'},',27,':"x',448,27,':"y",',455,456,'111',157,'101',157,'97',157,'46',169,'44":-0.',283,'},',27,':"z',448,27,':"&#x2013',';",a:0.1,','ic:0.',223,110,'124},',27,':"&#x2014',650,'ic:0
.',223,',',27,':"&#x2DD',42,'x2DC',42,'xA8;",',22,'accent"}],cmmi10',1,'ic:0.139',',krn:{"61":-0.0556,"59":-0.111,"58":-0.111,"127":0.',283,'},tclass:"igreek"},{c:"&',3,'krn:{"127":0.','167',673,5,'ic:0.',223,',krn:{"127":0.',283,673,7,675,'167',673,9,'ic:0.0757',681,283,673,11,'ic:0.0812,krn:{"61',484,'59":-0.0556,"58":-0.0556,"127":0.','0556',673,13,'ic:0.0576',681,283,673,15,'ic:0.139',671,'0556',673,17,675,283,673,19,'ic:0.11,krn:{"61',484,696,'0556',673,21,'ic:0.0502',681,283,673,'alpha',';",a:0,ic:0.','0037',681,223,'},',2,'beta;",','d:0.2,ic:0.','0528',681,283,'},',2,'gamma;",',455,'0556,',2,'delta;",ic:0.0378,krn:{"',696,'0556},',2,'epsilon;",a:0',681,'0556},','tclass:"symbol"},{c',':"&zeta;",',732,'0738',681,283,'},',2,'eta;",',455,'0359',681,'0556},',2,'theta;",ic:0.',223,681,283,'},',2,'iota;",a:0',681,'0556},',2,'kappa',37,2,'lambda;",',2,'mu',37,'d:0.2',681,223,'},',2,'nu',725,'0637,krn:{"',696,223,'},',2,'xi;",',732,'046',681,91,2,'pi',725,'0359,',2,'rho',37,'d:0.2',681,283,'},',2,'sigma',725,800,'krn:{"59',484,'58":-0.0556','},',2,'tau',725,'113,krn:{"',696,223,'},',2,'upsilon',725,'0359',681,223,'},',2,'phi',650,'d:0.2',681,283,'},',2,'chi',37,'d:0.2',681,'0556},',2,'psi',650,732,'0359',681,91,2,'omega',725,800,2,'epsilon;",a:0',681,283,'},',22,23,':"&#x3D1;",',675,283,'},',27,':"&#x3D6',725,223,',',27,':"&#x3F1',37,'d:0.2',681,283,'},',27,':"&#x3C2;",',455,'0799',681,283,'},',27,':"&#x3D5',650,'d:0.2',681,283,'},',27,':"&#x21BC',';",a:0,d:-0.','2,',22,'harpoon"},{c',':"&#x21BD',893,'1,',22,896,':"&#x21C0',893,'2,',22,896,':"&#x21C1',893,'1,',22,896,50,'font-size: 133%; ',51,':-.1em; margin:-.2em; left:-.05em\\">&#','x02D3',53,103,'tclass:"symbol"},{c:"<span style=\\"',913,51,915,'x02D2',53,103,919,'font-size:50%\\">&#','x25B7',53,919,927,'x25C1',53,749,':"0",',27,':"1",',27,':"2",',27,':"3",',27,':"4",',27,':"5",',27,':"6",',27,':"7",',27,':"8",',27,':"9",',27,113,'3,',27,':",",a:-',106,27,':"&lt',650,27,116,'krn:{"1',484,'65',484,'77',484,'78',484,'89":0.0556,"90":-0.0556},',27,':"&gt',650,27,5
0,927,'x2605',53,'a:0,','tclass:"symbol"},{c:"&#','x2202;",ic:0.0556',681,283,'},',27,':"A",',675,'139','},tclass:"italic"},{c:"','B",ic:0.0502',681,283,992,'C",ic:0.0715,krn:{"61',157,696,283,992,'D",ic:0.',223,681,'0556',992,'E",ic:0.0576',681,283,992,'F",ic:0.139',671,283,992,'G",',675,283,992,'H",ic:0.0812,krn:{"61',484,696,'0556',992,'I",ic:0.0785',681,'111',992,'J",ic:0.0962',671,'167',992,'K",ic:0.0715,krn:{"61',484,696,'0556',992,'L",',675,223,992,'M','",ic:0.109,krn:{"','61',484,696,283,992,'N',1042,'61',169,'61',157,696,283,992,'O",ic:0.',223,681,283,992,'P",ic:0.139',671,283,992,'Q",d:0.2',681,283,992,'R",ic:0.00773',681,283,992,'S",ic:0.0576,krn:{"61',484,696,283,992,'T','",ic:0.139,krn:{"','61',157,696,283,992,'U',1042,'59',173,',"58',173,',"61',484,'127":0.',223,992,'V",ic:0.222,krn:{"59','":-0.167,"','58',1098,'61',173,992,'W',1080,'59',1098,'58',1098,'61',173,992,'X",ic:0.0785,krn:{"61',169,'61',157,696,283,992,'Y",ic:0.222,krn:{"59',1098,'58',1098,'61',173,992,'Z",ic:0.0715,krn:{"61',484,696,283,'},','tclass:"italic"},{c',':"&#x266D',';",tclass:"symbol2"},{c:"&#','x266E',1134,'x266F',1134,'x2323',893,'1,',27,':"&#x2322',893,'1,',27,':"&#x2113;",',675,91,749,':"a',448,1132,':"b",',1132,':"c",a:0',681,'0556',992,'d',155,'89":0.0556,"90',484,'106',173,',"102',1098,1094,'167',992,'e",a:0',681,'0556',992,'f",',732,'108,krn:{"',696,'167',992,'g",',455,'0359',681,223,992,'h',155,'127',193,992,'i",',1132,':"j",',732,'0572,krn:{"59',484,814,992,'k",ic:0.0315,',1132,':"l",ic:0.0197',681,283,992,'m',448,1132,':"n',448,1132,':"o",a:0',681,'0556',992,'p',448,'d:0.2',681,283,992,'q",',455,'0359',681,283,992,'r','",a:0,ic:0.',223,',krn:{"',696,'0556',992,'s",a:0',681,'0556',992,'t",',675,283,992,'u",a:0',681,223,992,'v',1229,'0359',681,223,992,'w',1229,'0269',681,283,992,'x",a:0',681,223,992,'y",',455,'0359',681,'0556',992,'z',1229,'044',681,'0556},',1132,':"&#x131;",a:0',681,223,992,'j",d:0.2',681,283,'},',1132,':"&#x2118',37,'d:0.2',681,91,27,50,'position:relative; left: .4em; top: -.8em; font-size: 50%\\">&
#x2192',53,'ic:0.154,',983,'x0311;",ic:0.399,',22,'normal"}],cmsy10:[{c:"&#x2212',650,983,'xB7',893,'2,',983,'xD7',37,919,51,':.2em\\">&#x2A',53,982,983,'xF7',37,983,'x25CA;",',983,'xB1',650,983,'x2213;",',983,'x2295;",',983,'x2296;",',983,'x2297;",',983,'x2298;",',983,'x2299;",',983,'x25EF;",',919,51,':.25em;\\">&#xB0',53,145,'1,',983,'x2022',893,'2,',983,'x224D',650,983,'x2261',650,983,'x2286;",',983,'x2287;",',983,'x2264;",',983,'x2265;",',983,'x227C;",',983,'x227D;",',749,':"~",',145,'2,',27,':"&#x2248',650,'d:-0.1,',983,'x2282;",',983,'x2283;",',983,'x226A;",',983,'x226B;",',983,'x227A;",',983,'x227B;",',983,'x2190',893,'15',',tclass:"arrows"},{c:"&#','x2192',893,'15',1385,'x2191;",h:1',1385,'x2193;",h:1',1385,'x2194;",a:0',1385,'x2197;",h:1',1385,'x2198;",h:1',1385,'x2243',650,983,'x21D0;",a:0.1',1385,'x21D2;",a:0.1',1385,'x21D1;",h:0.9,d:0.1',1385,'x21D3;",h:0.9,d:0.1',1385,'x21D4;",a:0.1',1385,'x2196;",h:1',1385,'x2199;",h:1',1385,'x221D',650,919,913,'margin-right',': -.1em; position: relative; top:.4em\\">&#x2032',53,982,983,'x221E',650,983,'x2208;",',983,'x220B;",',983,'x25B3;",',983,'x25BD;",',749,116,919,'font-size:50%; ',51,':-.3em; ',1421,':-.2em\\">|</span>",',982,27,':"&#x2200;",',983,'x2203;",',983,'xAC',893,'1,',22,'symbol1"},{c:"&#x2205;",',983,'x211C;",',983,'x2111;",',983,'x22A4;",',983,'x22A5;",',983,'x2135;",',749,':"A','",krn:{"48":0.','194','},tclass:"cal"},{c:"','B",ic:0.0304',',krn:{"48":0.','139',1469,'C",ic:0.0583',1471,'139',1469,'D",ic:0.',223,1471,283,1469,'E",ic:0.0894',1471,'111',1469,'F",ic:0.0993',1471,'111',1469,'G",',732,'0593',1471,'111',1469,'H",ic:0.00965',1471,'111',1469,'I",ic:0.0738',1471,223,1469,'J",',732,'185',1471,'167',1469,'K",ic:0.0144',1471,'0556',1469,'L',1467,'139',1469,'M',1467,'139',1469,'N",ic:0.147',1471,283,1469,'O",ic:0.',223,1471,'111',1469,'P",ic:0.0822',1471,283,1469,'Q",d:0.2',1471,'111',1469,'R',1467,283,1469,'S",ic:0.075',1471,'139',1469,'T",ic:0.254',1471,223,1469,'U",ic:0.0993',1471,283,1469,'V",ic:0.0822',1471,223,1469,'W",ic:0.0822',1471,283,1
469,'X",ic:0.146',1471,'139',1469,'Y",ic:0.0822',1471,283,1469,'Z",ic:0.0794',1471,'139},',22,'cal"},{c:"&#x22C3;",',983,'x22C2;",',983,'x228E;",',983,'x22C0;",',983,'x22C1;",',983,'x22A2;",',983,'x22A3',1134,'xF8F0;",a:',106,27,':"&#xF8FB;",','a:',106,27,':"&#xF8EE;",','a:',106,27,':"&#xF8F9;",','a:',106,27,':"{",',95,27,':"}",',95,27,':"&#x3008;",','a:',106,27,':"&#x3009;",a:',106,27,':"|",',390,22,'vertical"},{c',':"||",','d:0,',22,1621,':"&#x2195;",h:1,d:0.15',1385,'x21D5;",a:0.2,d:0.1',1385,'x2216;",a:0.3,',390,27,':"&#x2240;",',919,51,': .8em\\">&#x221A',53,'h:0.04,d:0.9,',27,':"&#x2210;",a:0.4,',983,'x2207;",',983,'x222B;",h:1,',390,'ic:0.111,',22,'root"},{c:"&#x2294;",',983,'x2293;",',983,'x2291;",',983,'x2292;",',983,'xA7;",',390,27,':"&#x2020;",',390,27,':"&#x2021;",',390,27,':"&#xB6;",a:0.3,',390,27,':"&#x2663;",',983,'x2666;",',983,'x2665;",',983,'x2660;",',22,'symbol"}],cmex10:[{c',94,'h:0.04,d:1.16,n:','16',',tclass:"delim1"},{c',97,1678,'17',1680,389,1678,'104',1680,394,1678,'105',1680,':"&#xF8F0",',1678,'106',1680,1593,1678,'107',1680,1597,1678,'108',1680,1601,1678,'109',1680,1605,1678,'110',1680,1608,1678,'111',1680,1611,1678,'68,',22,'delim1c','"},{c:"&#x3009;",',1678,'69,',22,'delim1c"},{c:"|",','h:0.7,d:0,delim:{rep:','12},',22,1621,1622,1727,'13},',22,1621,116,1678,'46,',22,'delim1b','"},{c:"&#x2216;",',1678,'47,',22,'delim1b','"},{c:"(",','h:0.04,d:1.76,n:','18,',22,'delim2"},{c',97,1747,'19,',22,'delim2',1746,'h:0.04,d:2.36,n:','32',',tclass:"delim3"},{c',97,1757,'33',1759,389,1757,'34',1759,394,1757,'35',1759,':"&#xF8F0;",',1757,'36',1759,1593,1757,'37',1759,1597,1757,'38',1759,1601,1757,'39',1759,1605,1757,'40',1759,1608,1757,'41',1759,1611,1757,'42,',22,'delim3c',1722,1757,'43,',22,'delim3c"},{c',116,1757,'44,',22,'delim3b',1741,1757,'45,',22,'delim3b',1746,'h:0.04,d:2.96,','n:48',',tclass:"delim4"},{c',97,1817,'n:49',1819,389,1817,'n:50',1819,394,1817,'n:51',1819,1772,1817,'n:52',1819,1593,1817,'n:53',1819,1597,1817,'n:54',1819,1601,1817,'n:55',1819,1605,1817,'n:56',1819,1608,1817,'n:5
7',1819,1611,1817,22,'delim4c',1722,1817,22,'delim4c"},{c',116,1817,22,'delim4b',1741,1817,22,'delim4b"},{c',116,1747,'30,',22,'delim2b',1741,1747,'31,',22,'delim2b"},{c:"&#xF8EB;",h:0.8,d:0.15,delim:{top:48,bot:64,rep:66},',22,'delim"},{c:"'],
+  ['&#xF8F6',';",h:0.8,d:0.15,delim:{','top:','49,bot:65,rep:67','},tclass:"delim"},{c:"&#','xF8EE',1,2,'50,bot:52,rep:54',4,'xF8F9',1,2,'51,bot:53,rep:55',4,'xF8F0',1,'bot:52,rep:54',4,'xF8FB',1,'bot:53,rep:55',4,'xF8EF',1,2,'50,rep:54',4,'xF8FA',1,2,'51,rep:55',4,'xF8F1',1,2,'56,mid:60,bot:58,rep:62',4,'xF8FC',1,2,'57,mid:61,bot:59,rep:62',4,'xF8F3',1,'top:56,bot:','58,rep:62',4,'xF8FE',1,'top:57,bot:','59,rep:62',4,'xF8F2',1,'rep:63',4,'xF8FD',1,'rep:119',4,'xF8F4',1,'rep:62},tclass:"delim"},{c:"|",','h:0.65,d:0,delim:{top:','120,bot:121',',rep:63},tclass:"','vertical','"},{c:"&#','xF8ED',1,45,'59,rep:62',4,'xF8F8',1,50,'58,rep:62',4,'xF8EC',1,'rep:66',4,'xF8F7',1,'rep:67',4,'x3008;",','h:0.04,d:1.76,n:','28',',tclass:"','delim2c',68,'x3009;",',88,'29',90,91,68,'x2294',';",h:0,d:1,n:','71',90,'bigop1',68,'x2294',';",h:0.1,d:1.5,tclass:"','bigop2',68,'x222E',';",h:0,d:1.11,ic:0.095,n:','73',90,'bigop1c',68,'x222E;",h:0,d:2.22,ic:0.222',90,'bigop2c',68,'x2299',100,'75',90,103,68,'x2299',106,107,68,'x2295',100,'77',90,103,68,'x2295',106,107,68,'x2297',100,'79',90,103,68,'x2297',106,107,68,'x2211',100,'88',90,'bigop1a',68,'x220F',100,'89',90,153,68,'x222B',110,'90',90,113,68,'x222A',100,'91',90,'bigop1b',68,'x2229',100,'92',90,171,68,'x228E',100,'93',90,171,68,'x2227',100,'94',90,103,68,'x2228',100,'95',90,103,68,'x2211;",h:0.1,d:1.6',90,'bigop2a',68,'x220F',106,199,68,'x222B;",h:0,d:2.22,ic:0.222',90,117,68,'x222A',106,'bigop2b',68,'x2229',106,211,68,'x228E',106,211,68,'x2227',106,107,68,'x2228',106,107,68,'x2210',100,'97',90,153,68,'x2210',106,199,68,'xFE3F;",h:0.','722,w:0.65,n:99',90,'wide1',68,239,'85,w:1.1,n:100',90,'wide2',68,239,'99,w:1.65',90,'wide3',68,'x2053;",h:0.','722,w:0.75,n:102',90,'wide1a',68,254,'8,w:1.35,n:103',90,'wide2a',68,254,'99,w:2',90,'wide3a','"},{c:"[",',88,'20',90,'delim2','"},{c:"]",',88,'21',90,272,68,'xF8F0;",',88,'22',90,272,68,'xF8FB;",',88,'23',90,272,68,'xF8EE;",',88,'24',90,272,68,10,'",',88,'25',90,272,'"},{c:"{",',88,'26',90,272,'"},{c:"}",',88,'27',90,272,'"},{c:"<span st
yle=\\"font-size: ','125','%; position:relative; top:.','95em','\\">&#x221A;</span>",h:0.','04,d:1.16,n:113',90,'root',313,'190',315,'925em',317,'04,d:1.76,n:114',90,320,313,'250',315,'925em',317,'06,d:2.36,n:115',90,320,313,'320',315,'92em',317,'08,d:2.96,n:116',90,320,313,'400',315,'92em',317,'1,d:3.75,n:117',90,320,313,'500',315,'9em',317,'12,d:4.5,n:118',90,320,313,'625',315,'9em',317,'14,d:5.7',90,320,'"},{c:"<span style=\\"margin:.001em\\">||</span>",',64,'126,bot:127',',rep:119},tclass:"',67,68,'x25B5;",h:0.','45,delim:{',2,'120',66,'arrow1',68,'x25BF;",h:0.',376,'bot:121',66,380,313,'67',315,'35em; margin-','left:-.5em\\">&#','x256D',';</span>",h:0.','1',90,'symbol',313,'67',315,390,'right:-.5em\\">&#','x256E',393,'1',90,396,313,'67',315,390,391,'x2570',393,'1',90,396,313,'67',315,390,401,'x256F',393,'1',90,396,68,375,'5,delim:{',2,'126',372,'arrow2',68,382,429,'bot:127',372,433,'"}],cmti10:[{c:"&Gamma;",ic:0.133,','tclass:"igreek"},{c:"&','Delta;",',441,'Theta;",','ic:0.094,',441,'Lambda;",',441,'Xi;",ic:0.153,',441,'Pi;",ic:0.164,',441,'Sigma;",ic',':0.12,',441,'Upsilon;",ic:0.111,',441,'Phi;",ic:0.0599,',441,'Psi;",ic:0.111,',441,'Omega;",ic:0.103',90,'igreek','"},{c:"ff','",ic:0.212,krn:{"39":0.104,"63":0.104,"33":0.104,"41":0.104,"93":0.104},lig:{"105":','14,"108":15},','tclass:"italic"},{c',':"fi','",ic:0.103,',468,':"fl',470,468,':"ffi',470,468,':"ffl',470,468,':"&#x131;",a:0,','ic:0.','0767,',468,':"j",d:0.2,','ic:0.0374,',468,':"&#x60;",','tclass:"iaccent"},{c:"&#','xB4;",ic:0.0969,',489,'x2C7;",ic:0.083,',489,'x2D8;",','ic:0.108,',489,'x2C9;",ic:0.103,',489,'x2DA;",tclass:"','iaccent','"},{c:"?",','d:0.17,w:0.46,',468,':"&#xDF;",','ic:0.105,',468,':"&#xE6;",a:0,','ic:0.0751,',468,':"&#x153;",a:0,',508,468,':"&#xF8;",','ic:0.0919,',468,':"&#xC6;",','ic',454,468,':"&#x152;",','ic',454,468,':"&#xD8;",',445,468,':"?",krn:{"108":-0.','256,"76":-0.321},',468,':"!",','ic:0.124,lig:{"96":','60},',468,':"&#x201D;",','ic:0.0696,',468,':"#",ic:0.0662,',468,':"$",',468,':"%",ic:0.136,',468,':"&amp;",','ic:
0.0969,',468,':"&#x2019;",','ic:0.124,','krn:{"63":0.','102,"33":0.102},lig:{"39":34},',468,':"(",d:0.2,','ic:0.162,',468,':")",d:0.2,','ic:0.0369,',468,':"*",ic:0.149,',468,':"+",a:0.1,','ic:0.0369,',468,':",",a:-0.3,d:0.2,w:0.278,',468,':"-",a:0,ic:0.0283',',lig:{"45":','123},',468,':".",a:-0.25,',468,':"/",ic:0.162,',468,':"0",ic:0.136,',468,':"1",ic:0.136,',468,':"2",ic:0.136,',468,':"3",ic:0.136,',468,':"4",ic:0.136,',468,':"5",ic:0.136,',468,':"6",ic:0.136,',468,':"7",ic:0.136,',468,':"8",ic:0.136,',468,':"9",ic:0.136,',468,':":",ic:0.0582,',468,':";",ic:0.0582,',468,':"&#xA1;",','ic:0.0756,',468,':"=",a:0,d:-0.1,','ic:0.0662,',468,':"&#xBF;",',468,':"?",','ic:0.122,','lig:{"96":','62},',468,':"@",ic:0.096,',468,':"A",','krn:{"110":-0.0256,"108":-0.0256,"114":-0.0256,"117":-0.0256,"109":-0.0256,"116":-0.0256,"105":-0.0256,"67":-0.0256,"79":-0.0256,"71":-0.0256,"104":-0.0256,"98":-0.0256,"85":-0.0256,"107":-0.0256,"118":-0.0256,"119":-0.0256,"81":-','0.0256,"84','":-0.0767,"','89',614,'86','":-0.102,"','87',618,'101','":-0.0511,"','97',622,'111',622,'100',622,'99',622,'103',622,'113','":-0.0511','},',468,':"B',470,468,':"C",','ic:0.145,',468,':"D",',445,'krn:{"88','":-0.0256,"','87',646,'65',646,'86',646,'89":-0.','0256},',468,':"E",ic',454,468,':"F','",ic:0.133,krn:{"','111',614,'101',614,'117','":-0.0767,"114":-0.0767,"97":-0.0767,"','65',618,'79',646,'67',646,'71',646,'81":-0.0256','},',468,':"G",ic:0.0872,',468,':"H",ic:0.164,',468,':"I",ic:0.158,',468,':"J",ic:0.14,',468,':"K",',641,'krn:{"79',646,'67',646,'71',646,675,'},',468,':"L",krn:{"84',614,'89',614,'86',618,'87',618,'101',622,'97',622,'111',622,'100',622,'99',622,'103',622,'113',634,'},',468,':"M",ic:0.164,',468,':"N",ic:0.164,',468,':"O",',445,'krn:{"88',646,'87',646,'65',646,'86',646,653,'0256},',468,':"P',470,'krn:{"65":-0.0767},',468,':"Q",d:1,',445,468,':"R",ic:0.0387,',612,'0.0256,"84',614,'89',614,'86',618,'87',618,'101',622,'97',622,'111',622,'100',622,'99',622,'103',622,'113',634,'},',468,':"S",ic',454,468,':"T',660,'121',614,'101',614
,'111',666,'117',614,'65":-0.0767},',468,':"U",ic:0.164,',468,':"V",ic:0.','184,krn:{"','111',614,'101',614,'117',666,'65',618,'79',646,'67',646,'71',646,675,'},',468,':"W",ic:0.',789,'65":-0.0767},',468,':"X",ic:0.158,krn:{"79',646,'67',646,'71',646,675,'},',468,':"Y",ic:0.','194',',krn:{"101',614,'111',666,'117',614,'65":-0.0767},',468,':"Z",',641,468,':"[",d:0.1,','ic:0.188,',468,':"&#x201C;",','ic:0.169,',468,':"]",d:0.1,','ic:0.105,',468,':"&#x2C6;",ic:0.0665,',489,'x2D9;",ic:0.118,',489,'x2018;",',531,'92},',468,':"a','",a:0,ic:0.',483,468,':"b",ic:0.0631',822,622,'97',622,'111',622,'100',622,'99',622,'103',622,'113',634,'},',468,':"c',851,'0565',822,622,'97',622,'111',622,'100',622,'99',622,'103',622,'113',634,'},',468,':"d',470,'krn:{"108":','0.0511},',468,':"e',851,'0751',822,622,'97',622,'111',622,'100',622,'99',622,'103',622,'113',634,'},',468,':"f',466,'12,"102":11,"108":13},',468,':"g','",a:0,d:0.2,ic:0.','0885,',468,':"h",ic:0.',483,468,':"i",ic:0.102,',468,485,641,468,':"k",',495,468,':"l',470,892,'0.0511},',468,':"m',851,483,468,':"n',851,483,'krn:{"39":-0.102},',468,':"o',851,'0631',822,622,'97',622,'111',622,'100',622,'99',622,'103',622,'113',634,'},',468,':"p',919,'0631',822,622,'97',622,'111',622,'100',622,'99',622,'103',622,'113',634,'},',468,':"q',919,'0885,',468,':"r',851,'108',822,622,'97',622,'111',622,'100',622,'99',622,'103',622,'113',634,'},',468,':"s',851,'0821,',468,':"t",ic:0.0949,',468,':"u',851,483,468,':"v',851,'108,',468,':"w',851,1020,892,'0.0511},',468,':"x',851,'12,',468,':"y',919,'0885,',468,':"z',851,'123,',468,':"&#x2013;",a:0.1,ic:0.','0921',565,'124},',468,':"&#x2014;",a:0.1,ic:0.','0921,',468,':"&#x2DD;",',605,489,'x2DC;",ic:0.116,',489,'xA8;",tclass:"',500,'"}],cmbx10:[{c:"&Gamma',';",tclass:"bgreek"},{c:"&','Delta',1056,'Theta',1056,'Lambda',1056,'Xi',1056,'Pi',1056,'Sigma',1056,'Upsilon',1056,'Phi',1056,'Psi',1056,'Omega;",tclass:"bgreek"},{c:"ff','",ic:0.0778,krn:{"39":0.0778,"63":0.0778,"33":0.0778,"41":0.0778,"93":0.0778},lig:{"105":','14,"108":15},','tclass:"bol
d"},{c',':"fi",',1078,':"fl",',1078,':"ffi",',1078,':"ffl",',1078,481,1078,485,1078,':"&#x60',';",tclass:"baccent"},{c:"&#','xB4',1092,'x2C7',1092,'x2D8',1092,'x2C9',1092,499,'baccent',501,1078,504,1078,507,1078,510,1078,513,1078,516,1078,520,1078,524,1078,527,'278,"76":-0.319},',1078,530,606,'60},',1078,534,1078,':"#",',1078,':"$",',1078,':"%",',1078,543,1078,546,548,'111,"33":0.111},lig:{"39":34},',1078,551,1078,554,1078,':"*",',1078,559,1078,':",",a:-0.3,d:0.2,w:0.278,',1078,':"-",a:0',565,'123},',1078,':".",a:-0.25,',1078,':"/",',1078,':"0",',1078,':"1",',1078,':"2",',1078,':"3",',1078,':"4",',1078,':"5",',1078,':"6",',1078,':"7",',1078,':"8",',1078,':"9",',1078,':":",',1078,':";",',1078,596,1078,599,1078,':"&#xBF;",',1078,604,606,'62},',1078,':"@",',1078,':"A",krn:{"116','":-0.0278,"','67',1195,'79',1195,'71',1195,'85',1195,'81',1195,'84','":-0.0833,"','89',1207,'86":-0.','111,"87":-0.111},',1078,':"B",',1078,640,1078,':"D",krn:{"88',1195,'87',1195,'65',1195,'86',1195,653,'0278},',1078,':"E",',1078,':"F",krn:{"111',1207,'101',1207,'117','":-0.0833,"114":-0.0833,"97":-0.0833,"65":-0.','111,"79',1195,'67',1195,'71',1195,'81":-0.0278','},',1078,':"G",',1078,':"H",',1078,':"I",krn:{"73":0.0278},',1078,':"J",',1078,':"K",krn:{"79',1195,'67',1195,'71',1195,1242,'},',1078,':"L",krn:{"84',1207,'89',1207,1210,'111,"87":-0.111},',1078,':"M",',1078,':"N",',1078,':"O",krn:{"88',1195,'87',1195,'65',1195,'86',1195,653,'0278},',1078,':"P",krn:{"65',1207,'111',1195,'101',1195,'97',1195,'46',1207,'44":-0.0833},',1078,742,1078,':"R",krn:{"116',1195,'67',1195,'79',1195,'71',1195,'85',1195,'81',1195,'84',1207,'89',1207,1210,'111,"87":-0.111},',1078,':"S",',1078,':"T",krn:{"121',1195,'101',1207,'111',1235,'0833,"117":-0.0833','},',1078,':"U",',1078,788,'0139,krn:{"','111',1207,'101',1207,'117',1235,'111,"79',1195,'67',1195,'71',1195,1242,'},',1078,807,1331,'111',1207,'101',1207,'117',1235,'111,"79',1195,'67',1195,'71',1195,1242,'},',1078,':"X",krn:{"79',1195,'67',1195,'71',1195,1242,'},',1078,820,'025',822,1207,'111',1235,1325,
'},',1078,830,1078,833,1078,836,1078,839,1078,':"&#x2C6',1092,'x2D9',1092,846,606,'92},',1078,':"a','",a:0,krn:{"','118',1195,'106":0.','0556,"121',1195,'119":-0.','0278},',1078,':"b",krn:{"101','":0.0278,"','111',1409,'120',1195,'100',1409,'99',1409,'113',1409,'118',1195,1402,'0556,"121',1195,1405,'0278},',1078,':"c',1399,'104',1195,'107":-0.0278},',1078,':"d",',1078,':"e",a:0,',1078,':"f',1076,'12,"102":11,"108":13},',1078,':"g',919,1331,1402,'0278},',1078,':"h",krn:{"116',1195,'117',1195,'98',1195,'121',1195,'118',1195,1405,'0278},',1078,':"i",',1078,485,1078,':"k",krn:{"97":-0.0556,"101',1195,'97',1195,'111',1195,'99":-0.','0278},',1078,':"l",',1078,':"m',1399,'116',1195,'117',1195,'98',1195,'121',1195,'118',1195,1405,'0278},',1078,':"n',1399,'116',1195,'117',1195,'98',1195,'121',1195,'118',1195,1405,'0278},',1078,':"o",a:0',822,1409,'111',1409,'120',1195,'100',1409,'99',1409,'113',1409,'118',1195,1402,'0556,"121',1195,1405,'0278},',1078,':"p",a:0,d:0.2',822,1409,'111',1409,'120',1195,'100',1409,'99',1409,'113',1409,'118',1195,1402,'0556,"121',1195,1405,'0278},',1078,':"q",a:0,d:0.2,',1078,':"r",a:0,',1078,':"s",a:0,',1078,':"t",krn:{"121',1195,1405,'0278},',1078,':"u',1399,1405,'0278},',1078,':"v',851,1331,'97":-0.0556,"101',1195,'97',1195,'111',1195,1471,'0278},',1078,':"w',851,'0139',822,1195,'97',1195,'111',1195,1471,'0278},',1078,':"x",a:0,',1078,':"y',919,1331,'111',1195,'101',1195,'97',1195,'46',1207,'44":-0.0833},',1078,':"z",a:0,',1078,1040,'0278',565,'124},',1078,1045,'0278,',1078,':"&#x2DD',1092,'x2DC',1092,1053,1102,'"}]});','jsMath.Setup.Styles','({".typeset .math','":"font-style: ','normal','",".typeset .','italic',1622,1625,1624,'bold":"','font-weight: bold',1624,'cmr10','":"font-family: ','serif',1624,'cal',1633,'cursive',1624,'arrows','":"",".typeset .',380,1641,433,1641,'harpoon','":"font-size: ','125%",".typeset .',396,1641,'symbol2',1641,'delim1',1647,'133',315,'75em',1624,'delim1b',1647,'133',315,'8em; margin',': -.1em',1624,'delim1c',1647,'120',315,'8em',';",".typeset .',272,1647,'180',
315,1657,1624,'delim2b',1647,'190',315,1663,': -.1em',1624,91,1647,'167',315,'8em',1671,'delim3',1647,'250',315,'725em',1624,'delim3b',1647,'250',315,1663,': -.1em',1624,'delim3c',1647,'240',315,'775em',1671,'delim4',1647,'325',315,'7em',1624,'delim4b',1647,'325',315,1663,': -.1em',1624,'delim4c',1647,'300',315,'8em',1671,'delim',1641,67,1641,'greek',1641,464,1622,1625,1624,'bgreek":"',1630,1624,103,1647,'133%; ','position: relative; top',': .85em; margin:-.05em',1624,153,1647,'100%; ',1745,': .775em',1671,171,1647,'160%; ',1745,': .7em','; margin:-.1em',1624,113,1647,'125%; ',1745,': .',1657,1759,1671,107,1647,'200%; ',1745,': .',1663,':-.07em',1624,199,1647,'175%; ',1745,1758,1671,211,1647,'270%; ',1745,': .62em',1759,1624,117,1647,'250%; ',1745,1758,'; margin:-.17em',1671,242,1647,'67%; ',1745,':-.8em',1624,247,1647,'110%; ',1745,':-.5em',1624,252,1647,'175%; ',1745,':-.32em',1624,257,1647,'75%; ',1745,1807,1624,262,1647,'133%; ',1745,': -.15em',1624,267,1647,'200%; ',1745,': -.05em',1624,320,1641,'accent":"',1745,': .02em',1624,500,'":"',1745,1837,'; font-style: ',1625,1624,1102,'":"',1745,1837,'; ',1630,'"});',1620,'();jsMath.Macro("not','","\\\\mathrel{\\\\','rlap{\\\\kern 4mu/}}");jsMath.Macro("joinrel',1855,'kern-2mu}");jsMath.Box.DelimExtend=jsMath.Box.DelimExtendRelative;jsMath.Box.defaultH=0.8;jsMath.Script.End();']
+]);
\ No newline at end of file
Index: loncom/html/adm/jsMath/jsMath-msie-mac.js
diff -u loncom/html/adm/jsMath/jsMath-msie-mac.js:1.2 loncom/html/adm/jsMath/jsMath-msie-mac.js:1.3
--- loncom/html/adm/jsMath/jsMath-msie-mac.js:1.2	Wed Dec  7 13:57:45 2005
+++ loncom/html/adm/jsMath/jsMath-msie-mac.js	Mon Mar 27 14:32:07 2006
@@ -7,107 +7,24 @@
  *
  *  ---------------------------------------------------------------------
  *
- *  jsMath is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  jsMath is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with jsMath; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *  Copyright 2004-2006 by Davide P. Cervone
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
  */
 
 
 
-/********************************************************************
- *
- *  Mac MSIE has problems accessing a number of the characters in
- *  the TeX fonts, so we replace them by other characters when
- *  possible.
- */
-
-jsMath.Update.TeXfonts({
-
-  cmr10: {
-    '3':  {c: '<FONT FACE="Symbol">L</FONT>', tclass: 'normal'},
-    '5':  {c: '<FONT FACE="Symbol">P</FONT>', tclass: 'normal'},
-    '10': {c: '<FONT FACE="Symbol">W</FONT>', tclass: 'normal'},
-    '16': {c: '&#x0131;', tclass: 'normal'},
-    '20': {c: '&#xAD;'},
-    '22': {c: '&#xAF;', tclass: 'normal', w: .3},
-    '25': {c: '&#xDF;', tclass: 'normal'},
-    '26': {c: '&#xE6;', tclass: 'normal'},
-    '27': {c: '&#x153;', tclass: 'normal'}
-  },
-
-  cmmi10: {
-    '3':  {c: '<I><FONT FACE="Symbol">L</FONT></I>', tclass: 'normal'},
-    '5':  {c: '<I><FONT FACE="Symbol">P</FONT></I>', tclass: 'normal'},
-    '10': {c: '<I><FONT FACE="Symbol">W</FONT></I>', tclass: 'normal'},
-    '15': {c: '<I><FONT FACE="Symbol">e</FONT></I>', tclass: 'normal'},
-    '16': {c: '<I><FONT FACE="Symbol">z</FONT></I>', tclass: 'normal'},
-    '20': {c: '<I><FONT FACE="Symbol">k</FONT></I>', tclass: 'normal'},
-    '22': {c: '<I><FONT FACE="Symbol">m</FONT></I>', tclass: 'normal'},
-    '25': {c: '<I><FONT FACE="Symbol">p</FONT></I>', tclass: 'normal'},
-    '26': {c: '<I><FONT FACE="Symbol">r</FONT></I>', tclass: 'normal'},
-    '27': {c: '<I><FONT FACE="Symbol">s</FONT></I>', tclass: 'normal'}
-  },
-
-  cmsy10: {
-    '3':  {c: '<SPAN STYLE="vertical-align:-.3em">*</SPAN>', tclass: 'normal'},
-    '5':  {c: '&#x389;', tclass: 'normal'},
-    '10': {c: '&otimes;', tclass: 'normal'},
-    '15': {c: '&#x2022;', tclass: 'normal'},
-    '16': {c: '&#x224D;', tclass: 'normal'},
-    '20': {c: '&le;', tclass: 'normal'},
-    '22': {c: '&le;', tclass: 'normal'},
-    '25': {c: '&#x2248;', tclass: 'normal'},
-    '26': {c: '<FONT FACE="Symbol">&#xCC;</FONT>', tclass: 'normal'},
-    '27': {c: '<FONT FACE="Symbol">&#xC9;</FONT>', tclass: 'normal'}
-  },
-
-  cmex10: {
-    '3':  {c: '<SPAN STYLE="font-size: 67%">&#x69;</SPAN>'},
-    '5':  {c: '<SPAN STYLE="font-size: 67%">&#x6B;</SPAN>'},
-    '10': {c: '<SPAN STYLE="font-size: 67%">&#x44;</SPAN>'},
-    '15': {c: '<SPAN STYLE="font-size: 55%">&#xC2;</SPAN>'},
-    '16': {c: '<SPAN STYLE="font-size: 83%">&#xB5;</SPAN>'},
-    '20': {c: '<SPAN STYLE="font-size: 83%">"</SPAN>'},
-    '22': {c: '<SPAN STYLE="font-size: 83%">$</SPAN>'},
-    '25': {c: '<SPAN STYLE="font-size: 83%">\'</SPAN>'},
-    '26': {c: '<SPAN STYLE="font-size: 83%">(</SPAN>'},
-    '27': {c: '<SPAN STYLE="font-size: 83%">)</SPAN>'}
-  },
-
-  cmti10: {
-    '3':  {c: '<I><FONT FACE="Symbol">L</FONT></I>', tclass: 'normal'},
-    '5':  {c: '<I><FONT FACE="Symbol">P</FONT></I>', tclass: 'normal'},
-    '10': {c: '<I><FONT FACE="Symbol">W</FONT></I>', tclass: 'normal'},
-    '16': {c: '<I>&#x0131;</I>', tclass: 'normal'},
-    '20': {c: '<I>&#xAD;</I>'},
-    '22': {c: '<I>&#xAF;</I>', tclass: 'normal', w: .3},
-    '25': {c: '<I>&#xDF;</I>', tclass: 'normal'},
-    '26': {c: '<I>&#xE6;</I>', tclass: 'normal'},
-    '27': {c: '<I>&#x153;</I>', tclass: 'normal'}
-  },
-
-  cmbx10: {
-    '3':  {c: '<B><FONT FACE="Symbol">L</FONT></B>', tclass: 'normal'},
-    '5':  {c: '<B><FONT FACE="Symbol">P</FONT></B>', tclass: 'normal'},
-    '10': {c: '<B><FONT FACE="Symbol">W</FONT></B>', tclass: 'normal'},
-    '16': {c: '<B>&#x0131;</B>', tclass: 'normal'},
-    '20': {c: '<B>&#xAD;</B>'},
-    '22': {c: '<B>&#xAF;</B>', tclass: 'normal', w: .3},
-    '25': {c: '<B>&#xDF;</B>', tclass: 'normal'},
-    '26': {c: '<B>&#xE6;</B>', tclass: 'normal'},
-    '27': {c: '<B>&#x153;</B>', tclass: 'normal'}
-  }
-});
+jsMath.Script.Start();
 
 /*
  *  MSIE crashes if it changes the page too quickly, so we add a
@@ -123,17 +40,18 @@
   Process: function () {
     // we need to delay a bit before starting to process the page
     //   in order to avoid an MSIE display bug
-    setTimeout('jsMath.msieProcess()',jsMath.delay);
+    jsMath.Message.Set("Processing Math: 0%");
+    setTimeout('jsMath.msieProcess()',jsMath.Browser.delay);
   },
 
   ProcessBeforeShowing: function () {
     // we need to delay a bit before starting to process the page
     //   in order to avoid an MSIE display bug
-    window.status = "Processing Math...";
-    setTimeout('jsMath.msieProcessBeforeShowing()',5*jsMath.delay);
+    setTimeout('jsMath.msieProcessBeforeShowing()',5*jsMath.Browser.delay);
   }
 
 });
 
-jsMath.delay = 50;  // hope this is enogh of a delay!
+jsMath.Browser.delay = 75;  // hope this is enough of a delay!
 
+jsMath.Script.End();
Index: loncom/html/adm/jsMath/jsMath.js
diff -u loncom/html/adm/jsMath/jsMath.js:1.2 loncom/html/adm/jsMath/jsMath.js:1.3
--- loncom/html/adm/jsMath/jsMath.js:1.2	Wed Dec  7 13:57:45 2005
+++ loncom/html/adm/jsMath/jsMath.js	Mon Mar 27 14:32:07 2006
@@ -9,5887 +9,42 @@
  *            http://www.math.union.edu/locate/jsMath
  *
  *  for the latest version, and for documentation on how to use jsMath.
- * 
- *  Copyright (c) 2004-2005 by Davide P. Cervone.
  *
- *  This program is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU General Public License
- *  as published by the Free Software Foundation; either version 2
- *  of the License.
- *  
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *  
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
- *  
- *****************************************************************************/
-
-/*
- *  Prevent running everything again if this file is loaded twice
- */
-if (!jsMath || !jsMath.loaded) {
-var jsMath_old = jsMath;  // save user customizations
-
-//
-// debugging routine
-// 
-function ShowObject (obj,spaces) {
-  var s = ''; if (!spaces) {spaces = ""}
-  for (var i in obj) {
-    if (obj[i] != null) {
-      if (typeof(obj[i]) == "object") {
-        s += spaces + i + ": {\n"
-          + ShowObject(obj[i],spaces + '  ')
-          + spaces + "}\n";
-      } else if (typeof(obj[i]) != "function") {
-        s += spaces + i + ': ' + obj[i] + "\n";
-      }
-    }
-  }
-  return s;
-}
-
-/***************************************************************************/
-//
-//  Check for DOM support
-//
-if (!document.getElementById || !document.childNodes || !document.createElement) {
-  alert('The mathematics on this page requires W3C DOM support in its JavaScript. '
-      + 'Unfortunately, your browser doesn\'t seem to have this.');
-} else {
-
-/***************************************************************************/
-
-var jsMath = {
-  
-  version: "2.4b",  // change this if you edit the file
-  
-  //
-  //  Name of image files
-  //
-  blank: "blank.gif",
-  
-  defaultH: 0, // default height for characters with none specified
-
-  // Font sizes for \tiny, \small, etc. (must match styles below)
-  sizes: [50, 60, 70, 85, 100, 120, 144, 173, 207, 249],
-
-  //
-  //  The styles needed for the TeX fonts
-  //
-  styles: {
-    '.size0':          'font-size: 50%',  // tiny (\scriptscriptsize)
-    '.size1':          'font-size: 60%',  //       (50% of \large for consistency)
-    '.size2':          'font-size: 70%',  // scriptsize
-    '.size3':          'font-size: 85%',  // small (70% of \large for consistency)
-    '.size4':          'font-size: 100%', // normalsize
-    '.size5':          'font-size: 120%', // large
-    '.size6':          'font-size: 144%', // Large
-    '.size7':          'font-size: 173%', // LARGE
-    '.size8':          'font-size: 207%', // huge
-    '.size9':          'font-size: 249%', // Huge
-  
-    '.cmr10':          'font-family: cmr10, serif',
-    '.cmbx10':         'font-family: cmbx10, cmr10',
-    '.cmti10':         'font-family: cmti10, cmr10',
-    '.cmmi10':         'font-family: cmmi10',
-    '.cmsy10':         'font-family: cmsy10',
-    '.cmex10':         'font-family: cmex10',
-    
-    '.math':           'font-family: serif; font-style: normal; font-weight: normal',
-    '.typeset':        'font-family: serif; font-style: normal; font-weight: normal',
-    '.normal':         'font-family: serif; font-style: normal; font-weight: normal; '
-                          + 'padding:0px; border:0px; margin:0px;',
-    'span.typeset':    '',
-    'div.typeset':     'text-align: center; margin: 1em 0px;',
-    '.mathlink':       'text-decoration: none',
-    '.mathHD':         'border-width:0px; width: 1px; margin-right: -1px',
-  
-    '.error':          'font-size: 10pt; font-style: italic; '
-                         + 'background-color: #FFFFCC; padding: 1px; '
-                         + 'border: 1px solid #CC0000',
-
-    '.jsM_panel':      'position:fixed; bottom:1.5em; right:1.5em; padding: 10px 20px; '
-                         + 'background-color:#DDDDDD; border: outset 2px; '
-                         + 'z-index:103; width:auto;',
-    '.jsM_button':     'position:fixed; bottom:1px; right:2px; background-color:white; '
-                         + 'border: solid 1px #959595; margin:0px; padding: 0px 3px 1px 3px; '
-                         + 'z-index:102; color:black; text-decoration:none; font-size:x-small; width:auto;',
-    '.jsM_float':      'position:absolute; top:0px; left:0px; max-width:80%; '
-                         + 'z-index:101; width:auto; height:auto;',
-    '.jsM_drag':       'background-color:#DDDDDD; border: outset 1px; height:12px; font-size: 1px;',
-    '.jsM_close':      'background-color:#E6E6E6; border: inset 1px; width:8px; height:8px; margin: 1px 2px;',
-    '.jsM_source':     'background-color:#E2E2E2; border: outset 1px; '
-                         + 'width:auto; height:auto; padding: 8px 15px; '
-                         + 'font-family: courier, fixed; font-size: 90%',
-    '.jsM_noFont':     'text-align: center; padding: 10px 20px; border: 3px solid #DD0000; '
-                         + ' background-color: #FFF8F8; color: #AA0000; font-size:small; width:auto;',
-    '.jsM_fontLink':   'padding: 0px 5px 2px 5px; text-decoration:none; color:black;'
-                         + ' border: 2px outset; background-color:#E8E8E8; font-size:80%; width:auto;'
-  },
-  
-
-  /***************************************************************************/
-
-  /*
-   *  Get the width and height (in pixels) of an HTML string
-   */
-  BBoxFor: function (s) {
-    this.hidden.innerHTML = '<NOBR><SPAN CLASS="jsM_scale">'+s+'</SPAN></NOBR>';
-    var bbox = {w: this.hidden.offsetWidth, h: this.hidden.offsetHeight};
-    this.hidden.innerHTML = '';
-    return bbox;
-  },
-
-  /*
-   *  Get the width and height (in ems) of an HTML string
-   */
-  EmBoxFor: function (s) {
-    var bbox = this.BBoxFor(s);
-    return {w: bbox.w/this.em, h: bbox.h/this.em};
-  },
-
-  /*
-   *  For browsers that don't handle sizes of italics properly (MSIE)
-   */
-  EmBoxForItalics: function (s) {
-    var bbox = this.BBoxFor(s);
-    if (s.match(/<I>|CLASS="icm/i)) {
-      bbox.w = this.BBoxFor(s+jsMath.Browser.italicString).w
-                - jsMath.Browser.italicCorrection;
-    }
-    return {w: bbox.w/this.em, h: bbox.h/this.em};
-  },
-
-  /*
-   *  Initialize jsMath.  This determines the em size, and a variety
-   *  of other parameters used throughout jsMath.
-   */
-  Init: function () {
-    if (jsMath.Setup.inited != 1) {
-      if (jsMath.Setup.inited) {
-        alert("It looks like jsMath failed to set up properly.");
-      } else {
-        alert("You must call jsMath.Setup.Body() explicitly when jsMath is" +
-              "loaded as part of the <HEAD> section");
-      }
-      jsMath.Setup.Init(); // may fail to load fallback files properly
-    }
-    this.em = this.BBoxFor('<IMG SRC="'+jsMath.blank+'" STYLE="width:10em; height:1em">').w/10;
-    if (jsMath.Browser.italicString) 
-      jsMath.Browser.italicCorrection = jsMath.BBoxFor(jsMath.Browser.italicString).w;
-    if (jsMath.Browser.hiddenSpace != '') {
-      jsMath.Browser.spaceWidth =
-        this.EmBoxFor(jsMath.Browser.hiddenSpace +
-                      jsMath.Browser.hiddenSpace +
-                      jsMath.Browser.hiddenSpace +
-                      jsMath.Browser.hiddenSpace +
-                      jsMath.Browser.hiddenSpace).w/5;
-    }
-    var bb = this.BBoxFor('x'); var h = bb.h;
-    var d = this.BBoxFor('x<IMG SRC="'+jsMath.blank+'" HEIGHT="'+(h*jsMath.Browser.imgScale)+'" WIDTH="1">').h - h;
-    this.h = (h-d)/this.em; this.d = d/this.em;
-    this.hd = this.h + this.d;
-    this.xWidth = bb.w;  // used to tell if scale has changed
-    
-    this.Setup.TeXfonts();
-    
-    var x_height = this.EmBoxFor('<SPAN CLASS="cmr10">M</SPAN>').w/2;
-    this.TeX.M_height = x_height*(26/14);
-    this.TeX.h = this.h; this.TeX.d = this.d; this.TeX.hd = this.hd;
-    
-    this.Img.Scale();
-    if (!this.initialized) {
-      this.Setup.Sizes();
-      this.Img.UpdateFonts();
-    }
-
-    // factor for \big and its brethren
-    this.p_height = (this.TeX.cmex10[0].h + this.TeX.cmex10[0].d) / .85;
-
-    this.initialized = 1;
-  },
-  
-  /*
-   *  Get the xWidth size and if it has changed, reinitialize the sizes
-   */
-  ReInit: function () {
-    var w = this.BBoxFor('x').w;
-    if (w != this.xWidth) {this.Init()}
-  },
-  
-  /*
-   *  Mark jsMath as loaded and copy any user-provided overrides
-   */
-  Loaded: function () {
-    this.Insert(jsMath,jsMath_old);
-    jsMath_old = null;
-    jsMath.loaded = 1;
-  },
-  
-  /*
-   *  Manage JavaScript objects:
-   *  
-   *      Add:        add/replace items in an object
-   *      Insert:     add items to an object
-   *      Package:    add items to an object prototype
-   */
-  Add: function (dst,src) {for (var id in src) {dst[id] = src[id]}},
-  Insert: function (dst,src) {
-    for (var id in src) {
-      if (dst[id] && typeof(src[id]) == 'object'
-                  && (typeof(dst[id]) == 'object'
-                  ||  typeof(dst[id]) == 'function')) {
-        this.Insert(dst[id],src[id]);
-      } else {
-        dst[id] = src[id];
-      }
-    }
-  },
-  Package: function (obj,def) {this.Insert(obj.prototype,def)}
-
-}
-
-/***************************************************************************/
-
-/*
- *  Miscellaneous setup and initialization
- */
-jsMath.Setup = {
-  
-  /*
-   *  Insert a DIV at the top of the page with given ID,
-   *  attributes, and style settings
-   */
-  TopHTML: function (id,attributes,styles) {
-    try {
-      var div = document.createElement('div');
-      div.setAttribute("id",'jsMath.'+id);
-      for (var i in attributes) {
-        div.setAttribute(i,attributes[i]);
-        if (i == "class") {div.setAttribute('className',attributes[i])} // MSIE
-      }
-      for (var i in styles) {div.style[i]= styles[i]}
-      if (!document.body.hasChildNodes) {document.body.appendChild(div)}
-        else {document.body.insertBefore(div,document.body.firstChild)}
-    } catch (err) {
-      var html = '<DIV ID="jsMath.'+id+'"';
-      for (var id in attributes) {html += ' '+id+'="'+attributes[id]+'"'}
-      if (styles) {
-        html += ' STYLE="';
-        for (var id in styles) {html += ' '+id+':'+styles[id]+';'}
-        html += '"';
-      }
-      html += '</DIV>';
-      if (!document.body.insertAdjacentHTML) {document.write(html)}
-        else {document.body.insertAdjacentHTML('AfterBegin',html)}
-      div = jsMath.Element(id);
-    }
-    return div;
-  },
-  
-  /*
-   *  Source a jsMath JavaScript file
-   */
-  Script: function (file) {
-    if (!file.match('^([a-zA-Z]+:/)?/')) {file = jsMath.root + file}
-    document.write('<SCRIPT SRC="'+file+'"></SCRIPT>');
-  },
-  
-  /*
-   *  Use a hidden <DIV> for measuring the BBoxes of things
-   */
-  HTML: function () {
-    jsMath.hidden = this.TopHTML("Hidden",{'class':"normal"},{
-      position:"absolute", top:0, left:0, border:0, padding:0, margin:0
-    });
-    jsMath.hiddenTop = jsMath.hidden;
-    return;
-  },
-
-  /*
-   *  Find the root URL for the jsMath files (so we can load
-   *  the other .js and .gif files)
-   */
-  Source: function () {
-    var script = document.getElementsByTagName('SCRIPT');
-    if (script) {
-      for (var i = 0; i < script.length; i++) {
-        var src = script[i].src;
-        if (src && src.match('(^|/)jsMath.js$')) {
-          jsMath.root = src.replace(/jsMath.js$/,'');
-          jsMath.Img.root = jsMath.root + "fonts/";
-          jsMath.blank = jsMath.root + jsMath.blank;
-          this.Domain();
-          return;
-        }
-      }
-    }
-    jsMath.root = ''; jsMath.Img.root = "fonts/";
-  },
-  
-  /*
-   *  Find the most restricted common domain for the main
-   *  page and jsMath.  Report an error if jsMath is outside
-   *  the domain of the calling page.
-   */
-  Domain: function () {
-    var jsDomain = ''; var pageDomain = document.domain;
-    if (jsMath.root.match('://([^/]*)/')) {jsDomain = RegExp.$1}
-    jsDomain = jsDomain.replace(/:\d+$/,'');
-    if (jsDomain == "" || jsDomain == pageDomain) return;
-    //
-    // MSIE on the Mac can't change document.domain and 'try' won't
-    //   catch the error (Grrr!), so exit for them
-    //
-    if (navigator.appName == 'Microsoft Internet Explorer' &&
-        navigator.platform == 'MacPPC' && navigator.onLine &&
-        navigator.userProfile && document.all) return;
-    jsDomain = jsDomain.split(/\./); pageDomain = pageDomain.split(/\./);
-    if (jsDomain.length < 2 || pageDomain.length < 2 ||
-        jsDomain[jsDomain.length-1] != pageDomain[pageDomain.length-1] ||
-        jsDomain[jsDomain.length-2] != pageDomain[pageDomain.length-2]) {
-      this.DomainWarning();
-      return;
-    }
-    var domain = jsDomain[jsDomain.length-2] + '.' + jsDomain[jsDomain.length-1];
-    for (var i = 3; i <= jsDomain.length && i <= pageDomain.length; i++) {
-      if (jsDomain[jsDomain.length-i] != pageDomain[pageDomain.length-i]) break;
-      domain = jsDomain[jsDomain.length-i] + '.' + domain;
-    }
-    document.domain = domain;
-  },
-
-  DomainWarning: function () {
-    alert("In order for jsMath to be able to load the additional "
-        + "components that it may need, the jsMath.js file must be "
-        + "loaded from a server in the same domain as the page that "
-        + "contains it.  Because that is not the case for this page, "
-        + "the mathematics displayed here may not appear correctly.");
-  },
-  
-  /*
-   *  Look up the default height and depth for a TeX font
-   *  and set the skewchar
-   */
-  TeXfont: function (name) {
-    var font = jsMath.TeX[name];
-    var WH = jsMath.EmBoxFor('<SPAN CLASS="'+name+'">'+font[65].c+'</SPAN>');
-    font.hd = WH.h;
-    font.d = jsMath.EmBoxFor('<SPAN CLASS="'+name+'">'+ font[65].c +
-      '<IMG SRC="'+jsMath.blank+'" STYLE="height:'+(font.hd*jsMath.Browser.imgScale)+'em; width:1px;"></SPAN>').h
-      - font.hd;
-    font.h = font.hd - font.d;
-    font.dh = .05; if (jsMath.browser == 'Safari') {font.hd *= 2};
-    if (name == 'cmmi10') {font.skewchar = 0177} 
-    else if (name == 'cmsy10') {font.skewchar = 060}
-  },
-
-  /*
-   *  Init all the TeX fonts
-   */
-  TeXfonts: function () {
-    for (var i = 0; i < jsMath.TeX.fam.length; i++) 
-      {if (jsMath.TeX.fam[i]) {this.TeXfont(jsMath.TeX.fam[i])}}
-  },
-
-  /*
-   *  Compute font parameters for various sizes
-   */
-  Sizes: function () {
-    jsMath.TeXparams = [];
-    for (var j=0; j < jsMath.sizes.length; j++) {jsMath.TeXparams[j] = {}}
-    for (var i in jsMath.TeX) {
-      if (typeof(jsMath.TeX[i]) != 'object') {
-        for (var j=0; j < jsMath.sizes.length; j++) {
-          jsMath.TeXparams[j][i] = jsMath.sizes[j]*jsMath.TeX[i]/100;
-        }
-      }
-    }
-  },
-
-  
-  /*
-   *  Send the style definitions to the browser (these may be adjusted
-   *  by the browser-specific code)
-   */
-  Styles: function (styles) {
-    if (!styles) {
-      styles = jsMath.styles;
-      styles['.jsM_scale'] = 'font-size:'+jsMath.Controls.cookie.scale+'%';
-    }
-    document.writeln('<STYLE TYPE="text/css" ID="jsMath.styles">');
-    for (var id in styles) {document.writeln('  '+id+'  {'+styles[id]+'}')}
-    document.writeln('</STYLE>');
-  },
-  
-  /*
-   *  Do the initialization that requires the BODY to be in place.
-   *  (called automatically if the jsMath.js file is loaded in the
-   *  BODY, but must be called explicitly if it is in the HEAD).
-   */
-  Body: function () {
-    if (this.inited) return;
-
-    this.inited = -1;
-
-    jsMath.Setup.HTML();
-    jsMath.Setup.Source();
-    jsMath.Browser.Init();
-    jsMath.Controls.Init();
-    jsMath.Click.Init();
-    jsMath.Setup.Styles();
-    
-    jsMath.Setup.User();  //  do user-specific initialization
-
-    //make sure browser-specific loads are done before this
-    document.write('<SCRIPT>jsMath.Font.Check()</SCRIPT>');
-    
-    this.inited = 1;
-  },
-  
-  /*
-   *  Web page author can override this to do initialization
-   *  that must be done before the font check is performed
-   */
-  User: function () {}
-  
-};
-
-jsMath.Update = {
-
-  /*
-   *  Update specific parameters for a limited number of font entries
-   */
-  TeXfonts: function (change) {
-    for (var font in change) {
-      for (var code in change[font]) {
-        for (var id in change[font][code]) {
-          jsMath.TeX[font][code][id] = change[font][code][id];
-        }
-      }
-    }
-  },
-  
-  /*
-   *  Update the character code for every character in a list
-   *  of fonts
-   */
-  TeXfontCodes: function (change) {
-    for (var font in change) {
-      for (var i = 0; i < change[font].length; i++) {
-        jsMath.TeX[font][i].c = change[font][i];
-      }
-    }
-  },
-
-  /*
-   *  Add a collection of styles to the style list
-   */
-  Styles: function (styles) {
-    for (var i in styles) {jsMath.styles[i] = styles[i]}
-  }
-  
-};
-
-/***************************************************************************/
-
-/*
- *  Implement browser-specific checks
- */
-
-jsMath.Browser = {
-
-  allowAbsolute: 1,           // tells if browser can nest absolutely positioned
-                              //   SPANs inside relative SPANs
-  allowAbsoluteDelim: 0,      // OK to use absolute placement for building delims?
-  separateSkips: 0,           // MSIE doesn't do negative left margins, and
-                              //   Netscape doesn't combine skips well
-
-  msieSpaceFix: '',           // for MSIE spacing bug fix
-  msieCenterBugFix: '',       // for MSIE centering bug with image fonts
-  msieInlineBlockFix: '',     // for MSIE alignment bug in non-quirks mode
-  imgScale: 1,                // MSI scales images for 120dpi screens, so compensate
-
-  renameOK: 1,                // tells if brower will find a tag whose name
-                              //   has been set via setAttributes
-
-  delay: 1,                   // delay for asynchronous math processing
-  
-  spaceWidth: 0,              // Konqueror space fix
-  hiddenSpace: "",            // ditto
-  valignBug: 0,               // Konqueror doesn't nest vertical-align
-
-  operaHiddenFix: '',         // for Opera to fix bug with math in tables
-
-  /*
-   *  Determine if the "top" of a <SPAN> is always at the same height
-   *  or varies with the height of the rest of the line (MSIE).
-   */
-  TestSpanHeight: function () {
-    jsMath.hidden.innerHTML = '<SPAN><IMG SRC="'+jsMath.blank+'" STYLE="height: 2em"></SPAN>';
-    var span = jsMath.hidden.getElementsByTagName('SPAN')[0];
-    var img  = jsMath.hidden.getElementsByTagName('IMG')[0];
-    this.spanHeightVaries = (span.offsetHeight == img.offsetHeight);
-    jsMath.hidden.innerHTML = '';
-  },
-  
-  /*
-   *  Determine if the NAME attribute of a tag can be changed
-   *  using the setAttribute function, and then be properly
-   *  returned by getElementByName.
-   */
-  TestRenameOK: function () {
-    jsMath.hidden.innerHTML = '<SPAN ID="jsMath.test"></SPAN>';
-    var test = document.getElementById('jsMath.test');
-    test.setAttribute('NAME','jsMath_test');
-    this.renameOK = (document.getElementsByName('jsMath_test').length > 0);
-    jsMath.hidden.innerHTML = '';
-  },
-
-  /*
-   *  Test for browser characteristics, and adjust things
-   *  to overcome specific browser bugs
-   */
-  Init: function () {
-    jsMath.browser = 'unknown';
-    this.TestSpanHeight();
-    this.TestRenameOK();
-
-    this.MSIE();
-    this.Mozilla();
-    this.Opera();
-    this.OmniWeb();
-    this.Safari();
-    this.Konqueror();
-    
-    //
-    // Change some routines depending on the browser
-    // 
-    if (this.allowAbsoluteDelim) {
-      jsMath.Box.DelimExtend = jsMath.Box.DelimExtendAbsolute;
-      jsMath.Box.Layout = jsMath.Box.LayoutAbsolute;
-    } else {
-      jsMath.Box.DelimExtend = jsMath.Box.DelimExtendRelative;
-      jsMath.Box.Layout = jsMath.Box.LayoutRelative;
-    }
-    
-    if (this.separateSkips) {
-      jsMath.HTML.Place = jsMath.HTML.PlaceSeparateSkips;
-      jsMath.Typeset.prototype.Place = jsMath.Typeset.prototype.PlaceSeparateSkips;
-    }
-  },
-  
-  //
-  //  Handle bug-filled Internet Explorer
-  //
-  MSIE: function () {
-    if (this.spanHeightVaries) {
-      jsMath.browser = 'MSIE';
-      if (navigator.platform == 'Win32') {
-        jsMath.Update.TeXfonts({
-          cmr10:  {'10': {c: '&Omega;', tclass: 'normal'}},
-          cmmi10: {
-             '10':  {c: '<I>&Omega;</I>', tclass: 'normal'},
-             '126': {c: '&#x7E;<SPAN STYLE="margin-left:.1em"></SPAN>'}
-          },
-          cmsy10: {
-            '10': {c: '&#x2297;', tclass: 'arial'},
-            '55': {c: '<SPAN STYLE="margin-right:-.54em">7</SPAN>'}
-          },
-          cmex10: {'10': {c: '<SPAN STYLE="font-size: 67%">D</SPAN>'}},
-          cmti10: {'10': {c: '<I>&Omega;</I>', tclass: 'normal'}},
-          cmbx10: {'10': {c: '<B>&Omega;</B>', tclass: 'normal'}}
-        });
-        this.allowAbsoluteDelim = 1;
-        this.separateSkips = 1;
-        this.buttonCheck = 1;
-        this.msieDivWidthBug = 1;
-        this.msieFontBug = 1; this.msieIntegralBug = 1;
-        this.msieAlphaBug = 1; this.alphaPrintBug = 1;
-        this.msieCenterBugFix = 'position:relative; ';
-        this.msieSpaceFix = '<IMG SRC="'+jsMath.blank+'" CLASS="mathHD">';
-        this.msieInlineBlockFix = ' display: inline-block;';
-        jsMath.Macro('joinrel','\\mathrel{\\kern-5mu}'),
-        jsMath.styles['.arial'] = "font-family: 'Arial unicode MS'";
-        // MSIE doesn't implement fixed positioning, so use absolute
-        jsMath.styles['.jsM_panel'] =
-              jsMath.styles['.jsM_panel'].replace(/position:fixed/,"position:absolute").replace(/width:auto/,"");
-        jsMath.styles['.jsM_button'] = 'width:1px; '
-            + jsMath.styles['.jsM_button'].replace(/position:fixed/,"position:absolute").replace(/width:auto/,"");
-        window.onscroll = jsMath.Controls.MoveButton;
-        // MSIE will rescale images if the DPIs differ
-        if (screen.deviceXDPI && screen.logicalXDPI 
-             && screen.deviceXDPI != screen.logicalXDPI) {
-          this.imgScale *= screen.logicalXDPI/screen.deviceXDPI;
-          jsMath.Controls.cookie.alpha = 0;
-        }
-        // Handle bug with getting width of italic text
-        this.italicString = '<I>x</I>';
-        jsMath.EmBoxFor = jsMath.EmBoxForItalics;
-      } else if (navigator.platform == 'MacPPC') {
-        this.msieAbsoluteBug = 1; this.msieButtonBug = 1;
-        this.msieDivWidthBug = 1;
-        jsMath.Setup.Script('jsMath-msie-mac.js');
-        jsMath.Parser.prototype.macros.angle = ['Replace','ord','<FONT FACE="Symbol">&#x8B;</FONT>','normal'];
-        jsMath.styles['.jsM_panel'] = 'width:25em; ' + jsMath.styles['.jsM_panel'].replace(/width:auto/,"");
-        jsMath.styles['.jsM_button'] = 'width:1px; ' + jsMath.styles['.jsM_button'].replace(/width:auto/,"");
-      }
-      jsMath.Macro('not','\\mathrel{\\rlap{\\kern3mu/}}');
-    }
-  },
-
-  //
-  //  Handle Netscape/Mozilla (any flavor)
-  //
-  Mozilla: function () {
-    if (jsMath.hidden.ATTRIBUTE_NODE) {
-      jsMath.browser = 'Mozilla';
-      if (navigator.platform == 'MacPPC') {
-        jsMath.Update.TeXfonts({
-          cmr10:  {'10': {c: '&Omega;', tclass: 'normal'}},
-          cmmi10: {'10': {c: '<I>&Omega;</I>', tclass: 'normal'}},
-          cmsy10: {'10': {c: '&otimes;', tclass: 'normal'}},
-          cmex10: {'10': {c: '<SPAN STYLE="font-size: 67%">D</SPAN>'}},
-          cmti10: {'10': {c: '<I>&Omega;</I>', tclass: 'normal'}},
-          cmbx10: {'10': {c: '<B>&Omega;</B>', tclass: 'normal'}}
-        });
-      } else {
-        jsMath.Setup.Script('jsMath-mozilla.js');
-        this.alphaPrintBug = 1;
-      }
-      for (var i = 0; i < jsMath.TeX.fam.length; i++) {
-        if (jsMath.TeX.fam[i]) 
-          {jsMath.styles['.'+jsMath.TeX.fam[i]] += '; position: relative'}
-      }
-      this.allowAbsoluteDelim = 1;
-      this.separateSkips = 1;
-      jsMath.Macro('not','\\mathrel{\\rlap{\\kern3mu/}}');
-    }
-  },
-  
-  //
-  //  Handle OmniWeb
-  //
-  OmniWeb: function () {
-    if (navigator.accentColorName) {
-      jsMath.browser = 'OmniWeb';
-      this.allowAbsolute = !navigator.userAgent.match("OmniWeb/v4");
-      this.allowAbsoluteDelim = this.allowAbsolute;
-      this.buttonCheck = 1;
-    }
-  },
-    
-  //
-  //  Handle Opera
-  //
-  Opera: function () {
-    if (navigator.appName == 'Opera' || navigator.userAgent.match(" Opera ")) {
-      jsMath.browser = 'Opera';
-      jsMath.Update.TeXfonts({
-        cmr10:  {
-          '10': {c: '&Omega;', tclass: 'normal'},
-          '20': {c: '&#x2C7;', tclass: 'normal'}
-        },
-        cmmi10: {
-          '10': {c: '<I>&Omega;</I>', tclass: 'normal'},
-          '20': {c: '&kappa;', tclass: 'normal'}
-        },
-        cmsy10: {
-          '10': {c: '&otimes;', tclass: 'normal'},
-          '20': {c: '&#x2264;', tclass: 'normal'}
-        },
-        cmex10: {
-          '10': {c: '<SPAN STYLE="font-size: 67%">D</SPAN>'},
-          '20': {c: '<SPAN STYLE="font-size: 82%">"</SPAN>'}
-        },
-        cmti10: {
-          '10': {c: '<I>&Omega;</I>', tclass: 'normal'},
-          '20': {c: '<I>&#x2C7;</I>', tclass: 'normal'}
-        },
-        cmbx10: {
-          '10': {c: '<B>&Omega;</B>', tclass: 'normal'},
-          '20': {c: '<B>&#x2C7;</B>', tclass: 'normal'}
-        }
-      });
-      this.allowAbsolute = 0;
-      this.delay = 10;
-      this.operaHiddenFix = '[Processing Math]';
-    }
-  },
-
-  //
-  //  Handle Safari
-  //
-  Safari: function () {
-    if (navigator.appVersion.match(/Safari\//)) {
-      jsMath.browser = 'Safari';
-      var version = navigator.userAgent.match("Safari/([0-9]+)");
-      version = (version)? version[1] : 200;  // FIXME: hack until I get Tiger
-      for (var i = 0; i < jsMath.TeX.fam.length; i++)
-        {if (jsMath.TeX.fam[i]) {jsMath.TeX[jsMath.TeX.fam[i]].dh = .1}}
-      jsMath.TeX.axis_height += .05;
-      this.allowAbsoluteDelim = version >= 125;
-      this.safariIFRAMEbug = version >= 312;  // FIXME: find out if they fixed it
-      this.safariImgBug = 1;
-      this.buttonCheck = 1;
-    }
-  },
-  
-  //
-  //  Handle Konqueror
-  //
-  Konqueror: function () {
-    if (navigator.product && navigator.product.match("Konqueror")) {
-      jsMath.browser = 'Konqueror';
-      jsMath.Update.TeXfonts({
-        cmr10:  {'20': {c: '&#x2C7;', tclass: 'normal'}},
-        cmmi10: {'20': {c: '&kappa;', tclass: 'normal'}},
-        cmsy10: {'20': {c: '&#x2264;', tclass: 'normal'}},
-        cmex10: {'20': {c: '<SPAN STYLE="font-size: 84%">"</SPAN>'}},
-        cmti10: {'20': {c: '<I>&#x2C7;</I>', tclass: 'normal'}},
-        cmbx10: {'20': {c: '<B>&#x2C7;</B>', tclass: 'normal'}}
-      });
-      this.allowAbsolute = 0;
-      this.allowAbsoluteDelim = 0;
-      if (navigator.userAgent.match(/Konqueror\/(\d+)\.(\d+)/)) {
-        if (RegExp.$1 < 3 || (RegExp.$1 == 3 && RegExp.$2 < 3)) {
-          this.separateSkips = 1;
-          this.valignBug = 1;
-          this.hiddenSpace = '&nbsp;';
-          jsMath.Box.prototype.Remeasured = function () {return this};
-        }
-      }
-    }
-  }
-
-};
-
-/***************************************************************************/
-
-/*
- *  Implement font check and messages
- */
-jsMath.Font = {
-  
-  fallback: "symbol", // the default fallback method
-
-  // the HTML for the missing font message
-  message:    
-    '<B>No TeX fonts found</B> -- using image fonts instead.<BR>\n'
-      + 'These may be slow and might not print well.<BR>\n'
-      + 'Use the jsMath control panel to get additional information.',
-      
-  extra_message:
-    'Extra TeX fonts not found: <B><SPAN ID="jsMath.ExtraFonts"></SPAN></B><BR>'
-      + 'Using image fonts instead.  This may be slow and might not print well.<BR>\n'
-      + 'Use the jsMath control panel to get additional information.',
-  
-  /*
-   *  Look to see if a font is found.  HACK!
-   *  Check the character in a given position, and see if it is
-   *  wider than the usual one in that position.
-   */
-  Test1: function (name,n,factor) {
-    if (n == null) {n = 124}; if (factor == null) {factor = 2}
-    var wh1 = jsMath.BBoxFor('<SPAN STYLE="font-family: '+name+', serif">'+jsMath.TeX[name][n].c+'</SPAN>');
-    var wh2 = jsMath.BBoxFor('<SPAN STYLE="font-family: serif">'+jsMath.TeX[name][n].c+'</SPAN>');
-    //alert([wh1.w,wh2.w,wh1.h,factor*wh2.w]);
-    return (wh1.w > factor*wh2.w && wh1.h != 0);
-  },
-
-  Test2: function (name,n,factor) {
-    if (n == null) {n = 124}; if (factor == null) {factor = 2}
-    var wh1 = jsMath.BBoxFor('<SPAN STYLE="font-family: '+name+', serif">'+jsMath.TeX[name][n].c+'</SPAN>');
-    var wh2 = jsMath.BBoxFor('<SPAN STYLE="font-family: serif">'+jsMath.TeX[name][n].c+'</SPAN>');
-    //alert([wh2.w,wh1.w,wh1.h,factor*wh1.w]);
-    return (wh2.w > factor*wh1.w && wh1.h != 0);
-  },
-  
-  /*
-   *  Check for the availability of TeX fonts.  We do this by looking at
-   *  the width and height of a character in the cmex10 font.  The cmex10
-   *  font has depth considerably greater than most characters' widths (the
-   *  whole font has the depth of the character with greatest depth).  This
-   *  is not the case for most fonts, so if we can access cmex10, the
-   *  height of a character should be much bigger than the width.
-   *  Otherwise, if we don't have cmex10, we'll get a character in another
-   *  font with normal height and width.  In this case, we insert a message
-   *  pointing the user to the jsMath site, and load one of the fallback
-   *  definitions.
-   *  
-   */
-  Check: function () {
-    var cookie = jsMath.Controls.cookie;
-    var wh = jsMath.BBoxFor('<SPAN STYLE="font-family: cmex10">'+jsMath.TeX.cmex10[1].c+'</SPAN>');
-    jsMath.nofonts = ((wh.w*3 > wh.h || wh.h == 0) && !this.Test1('cmr10'));
-    if (jsMath.nofonts) {
-      if (cookie.autofont || cookie.font == 'tex') {
-        cookie.font = this.fallback;
-        if (cookie.warn) {
-          jsMath.nofontMessage = 1;
-          cookie.warn = 0; jsMath.Controls.SetCookie(0);
-          if (window.NoFontMessage) {window.NoFontMessage()}
-                               else {this.Message(this.message)}
-        }
-      }
-    } else {
-      if (cookie.autofont) {cookie.font = 'tex'}
-      if (cookie.font == 'tex') return;
-    }
-    if (jsMath.noImgFonts) {cookie.font = 'unicode'}
-    if (cookie.font == 'unicode') {
-      var platform = ({Win32: 'pc', MacPPC: 'mac'})[navigator.platform] || 'unix';
-      jsMath.Setup.Script('jsMath-fallback-'+platform+'.js');
-      return;
-    }
-    if (cookie.font == 'symbol') {
-      jsMath.Setup.Script('jsMath-fallback-symbols.js');
-      return;
-    }
-    jsMath.Img.SetFont({
-      cmr10:  ['all'], cmmi10: ['all'], cmsy10: ['all'],
-      cmex10: ['all'], cmbx10: ['all'], cmti10: ['all']
-    });
-    jsMath.Img.LoadFont('cm-fonts');
-  },
-
-  /*
-   *  The message for when no TeX fonts.  You can eliminate this message
-   *  by including
-   *  
-   *      <SCRIPT>jsMath = {Font: {Message: function () {}}}</SCRIPT>
-   *
-   *  in your HTML file, before loading jsMath.js, if you want.  But this
-   *  means the user may not know that he or she can get a better version
-   *  of your page.
-   */
-  Message: function (message) {
-    if(jsMath.Element("Warning")) return;
-    var div = jsMath.Setup.TopHTML("Warning",{'class':'jsM_Warning'},{});
-    div.innerHTML = 
-      '<CENTER><TABLE><TR><TD>'
-      + '<DIV CLASS="jsM_noFont">' + message
-      + '<DIV STYLE="text-align:left"><SPAN STYLE="float:left; margin: 8px 0px 0px 20px">'
-      + '<A HREF="javascript:jsMath.Controls.Panel()" CLASS="jsM_fontLink">jsMath Control Panel</A>'
-      + '</SPAN><SPAN STYLE="margin: 8px 20px 0px 0px; float:right">'
-      + '<A HREF="javascript:jsMath.Font.HideMessage()" CLASS="jsM_fontLink">Hide this Message</A>'
-      + '</SPAN></DIV><BR CLEAR="ALL"></DIV>'
-      + '<DIV STYLE="width:22em; height:1px"></DIV>'
-      + '</TD></TR></TABLE></CENTER><HR>';
-  },
-  
-  HideMessage: function () {
-    var message = jsMath.Element("Warning");
-    if (message) {message.style.display = "none"}
-  },
-  
-  /*
-   *  Register an extra font so jsMath knows about it
-   */
-  Register: function (data) {
-    if (typeof(data) == 'string') {data = {name: data}}
-    var fontname = data.name; var name = fontname.replace(/10$/,'');
-    var fontfam = jsMath.TeX.fam.length;
-    if (!data.style) {data.style = "font-family: "+fontname+", serif"}
-    if (!data.styles) {data.styles = {}}
-    if (!data.macros) {data.macros = {}}
-    /*
-     *  Register font family
-     */
-    jsMath.TeX.fam[fontfam] = fontname;
-    data.macros[name] = ['HandleFont',fontfam];
-    jsMath.Add(jsMath.Parser.prototype.macros,data.macros);
-    /*
-     *  Set up styles
-     */
-    data.styles['.'+fontname] = data.style;
-    jsMath.Setup.Styles(data.styles);
-    jsMath.Setup.TeXfont(fontname);
-    /*
-     *  Check for font and give message if missing
-     */
-    var hasTeXfont = !jsMath.nofonts &&
-                      data.test(fontname,data.testChar,data.testFactor);
-    if (hasTeXfont && jsMath.Controls.cookie.font == 'tex') {
-      if (data.tex) {data.tex(fontname,fontfam)}
-      return;
-    }
-    if (!hasTeXfont && jsMath.Controls.cookie.warn &&
-        jsMath.Controls.cookie.font == 'tex' && !jsMath.nofonts) {
-      if (!jsMath.Element("Warning")) this.Message(this.extra_message);
-      var extra = jsMath.Element("ExtraFonts");
-      if (extra) {
-        if (extra.innerHTML != "") {extra.innerHTML += ','}
-        extra.innerHTML += " " + fontname;
-      }
-    }
-    if (jsMath.Controls.cookie.font == 'unicode') {
-      if (data.fallback) {data.fallback(fontname,fontfam)}
-      return;
-    }
-    //  Image fonts
-    var font = {}; font[fontname] = ['all'];
-    jsMath.Img.SetFont(font);
-    jsMath.Img.LoadFont(fontname);
-  },
-
-  /*
-   *  Load a font
-   */
-  Load: function (name) {jsMath.Setup.Script("fonts/"+name+"/def.js")}
-  
-};
-
-/***************************************************************************/
-
-/*
- *  Implements the jsMath control panel.
- *  Much of the code is in jsMath-controls.html, which is
- *  loaded into a hidden IFRAME on demand
- */
-jsMath.Controls = {
-
-  //  Data stored in the jsMath cookie
-  cookie: {
-    scale: 100,
-    font: 'tex', autofont: 1, scaleImg: 0, alpha: 1,
-    warn: 1, button: 1,
-    print: 0, keep: '0D'
-  },
-  
-  cookiePath: '/',  // can also set cookieDomain
-  
-  
-  /*
-   *  Load the control panel
-   */
-  Panel: function () {
-    if (!this.panel) {this.panel = jsMath.Element("Controls")}
-    if (this.loaded) {this.Main()} else {
-      this.openMain = 1;
-      if (!this.iframe) {this.iframe = jsMath.Element("Frame")}
-      this.iframe.src = jsMath.root+"jsMath-controls.html";
-    }
-  },
-  
-  /*
-   *  Create the control panel button
-   */
-  Button: function () {
-    var button = jsMath.Setup.TopHTML("jsMath",{'class':'jsM_button'},{});
-    button.innerHTML = 
-      '<A HREF="javascript:jsMath.Controls.Panel()" '+
-         'STYLE="text-decoration:inherit; color:inherit">' +
-      '<SPAN TITLE="Open jsMath Control Panel">jsMath</SPAN></A>'
-    if (!this.cookie.button) {button.style.display = "none"}
-  },
-  
- /*
-  *  MSIE doesn't implement position:fixed, so redraw the button on scrolls.
-  */
-  MoveButton: function () {
-    if (!this.button) {this.button = jsMath.Element("jsMath")}
-    this.button.style.visibility = "hidden";
-    this.button.style.visibility = "visible";
-  },
-
-  /*
-   *  Create the HTML needed for control panel
-   */
-  Init: function () {
-    this.document = document;
-    this.panel = jsMath.Setup.TopHTML("Controls", {'class':"jsM_panel"},{display:'none'});
-    if (!jsMath.Browser.msieButtonBug) {this.Button()}
-      else {setTimeout("jsMath.Controls.Button()",500)}
-    if (jsMath.Browser.safariIFRAMEbug) {
-      document.write(
-         '<IFRAME SRC="'+jsMath.root+'jsMath-controls.html" '
-         + 'ID="jsMath.Frame" SCROLLING="no" '
-         + 'STYLE="visibility:hidden; position:absolute; width:1em; height:1em;">'
-         + '</IFRAME>\n');
-      return;
-    }
-    try {
-      var frame = document.createElement('iframe');
-      frame.setAttribute('scrolling','no');
-      frame.style.border = '0px';
-      frame.style.width  = '0px';
-      frame.style.height = '0px';
-      document.body.insertBefore(frame,this.panel);
-      this.iframe = frame;
-    } catch (err) {
-      document.write('<IFRAME SRC="" ID="jsMath.Frame" SCROLLING="no" '
-         + 'STYLE="visibility:hidden; position:absolute; width:1em; height:1em;">'
-         + '</IFRAME>\n');
-    }
-  },
-
-  /*
-   *  Get the cookie data from the browser
-   *  (for file: references, use url '?' syntax)
-   */
-  GetCookie: function () {
-    var cookies = document.cookie;
-    if (window.location.protocol == 'file:') 
-      {cookies = unescape(window.location.search.substr(1))}
-    if (cookies.match(/jsMath=([^;]*)/)) {
-      var data = RegExp.$1.split(/,/);
-      for (var i = 0; i < data.length; i++) {
-        var x = data[i].match(/(.*):(.*)/);
-        if (x[2].match(/^\d+$/)) {x[2] = 1*x[2]} // convert from string
-        this.cookie[x[1]] = x[2];
-      }
-    }
-  },
-  
-  /*
-   *  Save the cookie data in the browser
-   *  (for file: urls, append data like CGI reference)
-   */
-  SetCookie: function (warn) {
-    var cookie = [];
-    for (var id in this.cookie) {cookie[cookie.length] = id + ':' + this.cookie[id]}
-    cookie = cookie.join(',');
-    if (window.location.protocol == 'file:') {
-      if (!warn) return;
-      this.loaded = 0;
-      var href = window.location.href;
-      href = href.replace(/\?.*/,"") + '?jsMath=' + escape(cookie);
-      if (href != window.location.href) {window.location.replace(href)}
-    } else {
-      if (this.cookiePath) {cookie += '; path='+this.cookiePath}
-      if (this.cookieDomain) {cookie += '; domain='+this.cookieDomain}
-      if (this.cookie.keep != '0D') {
-        var ms = {
-          D: 1000*60*60*24,
-          W: 1000*60*60*24*7,
-          M: 1000*60*60*24*30,
-          Y: 1000*60*60*24*365
-        };
-        var exp = new Date;
-        exp.setTime(exp.getTime() +
-            this.cookie.keep.substr(0,1) * ms[this.cookie.keep.substr(1,1)]);
-        cookie += '; expires=' + exp.toGMTString();
-      }
-      document.cookie = 'jsMath='+cookie;
-      var cookies = document.cookie;
-      if (warn && !cookies.match(/jsMath=/))
-        {alert("Cookies must be enabled in order to save jsMath options")}
-    }
-  }
-
-};
-
-/***************************************************************************/
-
-/*
- *  Implements the actions for clicking and double-clicking
- *  on math formulas
- */
-jsMath.Click = {
-  
-  dragging: 0,
-  
-  /*
-   *  Create the hidden DIV used for the tex source window
-   */
-  Init: function () {
-    this.source = jsMath.Setup.TopHTML("Source",{'class':'jsM_float'},{display:'none'});
-    this.source.innerHTML =
-      '<DIV CLASS="jsM_drag"><DIV CLASS="jsM_close"></DIV></DIV>'
-      + '<DIV CLASS="jsM_source"><SPAN></SPAN></DIV>';
-    this.drag = this.source.firstChild;
-    this.tex  = this.drag.nextSibling.firstChild;
-    this.drag.firstChild.onclick = jsMath.Click.CloseSource;
-    this.drag.onmousedown = jsMath.Click.StartDragging;
-    this.drag.ondragstart = jsMath.Click.False;
-    this.drag.onselectstart = jsMath.Click.False;
-    this.source.onclick = jsMath.Click.CheckClose;
-  },
-  False: function () {return false},
-
-  /*
-   *  Handle clicking on math to get control panel
-   */
-  CheckClick: function (event) {
-    if (!event) {event = window.event}
-    if (event.altKey) jsMath.Controls.Panel();
-  },
-  
-  /*
-   *  Handle double-click for seeing TeX code
-   */
-  CheckDblClick: function (event) {
-    if (!event) {event = window.event}
-    var event = jsMath.Click.Event(event);
-
-    var source = jsMath.Click.source
-    var tex = jsMath.Click.tex;
-
-    source.style.visibility = 'hidden';
-    source.style.display = ''; source.style.width = '';
-    source.style.left = ''; source.style.top = '';
-    tex.innerHTML = '';
-
-    var TeX = this.alt;
-    TeX = TeX.replace(/^\s+|\s+$/g,'');
-    TeX = TeX.replace(/&/g,'&amp;');
-    TeX = TeX.replace(/</g,'&lt;');
-    TeX = TeX.replace(/>/g,'&gt;');
-    TeX = TeX.replace(/\n/g,'<BR>');
-    tex.innerHTML = TeX;
-
-    var h = source.offsetHeight; var w;
-    if (jsMath.Browser.msieDivWidthBug) {
-      tex.className = 'jsM_source';      // Work around MSIE bug where
-      w = tex.offsetWidth + 5;           // DIV's don't collapse to
-      tex.className = '';                // their natural widths
-    } else {
-      w = source.offsetWidth;
-    }
-    w = Math.max(50,Math.min(w,.8*event.W,event.W-40));
-    var x = Math.floor(event.x-w/2); var y = Math.floor(event.y-h/2);
-    x = event.X + Math.max(Math.min(x,event.W-w-20),20);
-    y = event.Y + Math.max(Math.min(y,event.H-h-5),5);
-
-    source.style.left = x+'px'; source.style.top = y+'px';
-    source.style.width = w+'px';
-    source.style.visibility = '';
-    jsMath.Click.left = x + event.X; jsMath.Click.top = y + event.Y;
-    jsMath.Click.w = w; jsMath.Click.h = source.offsetHeight;
-
-    jsMath.Click.DeselectText(x,y);
-    return false;
-  },
-
-  /*
-   *  Get window width, height, and offsets plus
-   *  position of pointer relative to the window
-   */
-  Event: function (event) {
-    var W = window.innerWidth  || document.body.clientWidth;
-    var H = window.innerHeight || document.body.clientHeight;
-    var X = window.pageXOffset; var Y = window.pageYOffset;
-    if (X == null) {X = document.body.clientLeft; Y = document.body.clientTop}
-    var x = event.pageX; var y = event.pageY;
-    if (x == null) {
-      x = event.clientX; y = event.clientY;
-      if (jsMath.browser == 'MSIE' && document.compatMode == 'CSS1Compat') {
-        X = document.documentElement.scrollLeft;
-        Y = document.documentElement.scrollTop;
-        W = document.documentElement.clientWidth;
-        H = document.documentElement.clientHeight;
-      } else {
-        X = document.body.scrollLeft;
-        Y = document.body.scrollTop;
-      }
-    } else {x -= X; y -= Y}
-
-    return {x: x, y: y, W: W, H: H, X: X, Y: Y};
-  },
-  
-  /*
-   *  Unselect whatever text is selected (since double-clicking
-   *  usually selects something)
-   */
-  DeselectText: function (x,y) {
-    if (window.getSelection && window.getSelection().removeAllRanges)
-      {window.getSelection().removeAllRanges()}
-    else if (document.getSelection && document.getSelection().removeAllRanges)
-      {document.getSelection().removeAllRanges()}
-    else if (document.selection && document.selection.empty)
-      {document.selection.empty()}
-    else {
-      /* Hack to deselect the text in Opera and Safari */
-      if (jsMath.browser == 'MSIE') return;  // don't try it if MISE on Mac
-      jsMath.hiddenTop.innerHTML =
-        '<textarea style="visibility:hidden" ROWS="1" COLS="1">a</textarea>';
-      jsMath.hiddenTop.firstChild.style.position = 'absolute';
-      jsMath.hiddenTop.firstChild.style.left = x+'px';
-      jsMath.hiddenTop.firstChild.style.top  = y+'px';
-      setTimeout(jsMath.Click.SelectHidden,1);
-    }
-  },
-  SelectHidden: function () {
-    jsMath.hiddenTop.firstChild.focus();
-    jsMath.hiddenTop.firstChild.select();
-    jsMath.hiddenTop.innerHTML = '';
-  },
-
-  /*
-   *  Close the TeX source window
-   */
-  CloseSource: function () {
-    jsMath.Click.tex.innerHTML = '';
-    jsMath.Click.source.style.display = 'none';
-    jsMath.Click.source.style.visibility = 'hidden';
-    jsMath.Click.StopDragging();
-    return false;
-  },
-  CheckClose: function (event) {
-    if (!event) {event = window.event}
-    if (event.altKey) {jsMath.Click.CloseSource(); return false}
-  },
-  
-  /*
-   *  Set up for dragging the source panel
-   */
-  StartDragging: function (event) {
-    if (!event) {event = window.event}
-    if (jsMath.Click.dragging) {jsMath.Click.StopDragging(event)}
-    var event = jsMath.Click.Event(event);
-    jsMath.Click.dragging = 1;
-    jsMath.Click.x = event.x + 2*event.X - jsMath.Click.left;
-    jsMath.Click.y = event.y + 2*event.Y - jsMath.Click.top;
-    jsMath.Click.oldonmousemove = document.body.onmousemove;
-    jsMath.Click.oldonmouseup = document.body.onmouseup;
-    document.body.onmousemove = jsMath.Click.DragSource;
-    document.body.onmouseup = jsMath.Click.StopDragging;
-    return false;
-  },
-  
-  /*
-   *  Stop dragging the source window
-   */
-  StopDragging: function (event) {
-    if (jsMath.Click.dragging) {
-      document.body.onmousemove = jsMath.Click.oldonmousemove;
-      document.body.onmouseup   = jsMath.Click.oldonmouseup;
-      jsMath.Click.oldonmousemove = null;
-      jsMath.Click.oldonmouseup   = null;
-      jsMath.Click.dragging = 0;
-    }
-    return false;
-  },
-  
-  /*
-   *  Move the source window (but stay within the browser window)
-   */
-  DragSource: function (event) {
-    if (!event) {event = window.event}
-    if (jsMath.Browser.buttonCheck && !event.button) {return jsMath.Click.StopDragging(event)}
-    event = jsMath.Click.Event(event);
-    var x = event.x + event.X - jsMath.Click.x;
-    var y = event.y + event.Y - jsMath.Click.y;
-    x = Math.max(event.X,Math.min(event.W+event.X-jsMath.Click.w,x));
-    y = Math.max(event.Y,Math.min(event.H+event.Y-jsMath.Click.h,y));
-    jsMath.Click.source.style.left = x + 'px';
-    jsMath.Click.source.style.top  = y + 'px';
-    jsMath.Click.left = x + event.X; jsMath.Click.top = y + event.Y;
-    return false;
-  }
-
-};
-
-/***************************************************************************/
-
-/*
- *  The TeX font information
- */
-jsMath.TeX = {
-
-  //
-  //  The TeX font parameters
-  //
-  thinmuskip:   3/18,
-  medmuskip:    4/18,
-  thickmuskip:  5/18,
-
-  x_height:    .430554,
-  quad:        1,
-  num1:        .676508,
-  num2:        .393732,
-  num3:        .44373,
-  denom1:      .685951,
-  denom2:      .344841,
-  sup1:        .412892,
-  sup2:        .362892,
-  sup3:        .288888,
-  sub1:        .15,
-  sub2:        .247217,
-  sup_drop:    .386108,
-  sub_drop:    .05,
-  delim1:     2.39,
-  delim2:     1.0,
-  axis_height: .25,
-  default_rule_thickness: .04,
-  big_op_spacing1:  .111111,
-  big_op_spacing2:  .166666,
-  big_op_spacing3:  .2,
-  big_op_spacing4:  .6,
-  big_op_spacing5:  .1,
-
-  integer:          6553.6,     // conversion of em's to TeX internal integer
-  scriptspace:         .05,
-  nulldelimiterspace:  .12,
-  delimiterfactor:     901,
-  delimitershortfall:   .5,
-  scale:                 1,     //  scaling factor for font dimensions
- 
-  //  The TeX math atom types (see Appendix G of the TeXbook)
-  atom: ['ord', 'op', 'bin', 'rel', 'open', 'close', 'punct', 'ord'],
-
-  //  The TeX font families
-  fam: ['cmr10','cmmi10','cmsy10','cmex10','cmti10','','cmbx10'],
-
-  /*
-   *  The following are the TeX font mappings and metrics.  The metric
-   *  information comes directly from the TeX .tfm files, and the
-   *  character mappings are for the TrueType TeX fonts.  Browser-specific
-   *  adjustments are made to these tables in the Browser.Init() routine
-   */
-  cmr10: [
-    // 00 - 0F
-    {c: '&#xA1;', h: 0.683, w: 0.625},
-    {c: '&#xA2;', h: 0.683, w: 0.833},
-    {c: '&#xA3;', h: 0.683, w: 0.778},
-    {c: '&#xA4;', h: 0.683, w: 0.694},
-    {c: '&#xA5;', h: 0.683, w: 0.667},
-    {c: '&#xA6;', h: 0.683, w: 0.75},
-    {c: '&#xA7;', h: 0.683, w: 0.722},
-    {c: '&#xA8;', h: 0.683, w: 0.778},
-    {c: '&#xA9;', h: 0.683, w: 0.722},
-    {c: '&#xAA;', h: 0.683, w: 0.778},
-    {c: '&#xAD;', h: 0.683, w: 0.722},
-    {c: '&#xAE;', h: 0.694, w: 0.583, ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 14, '108': 15}},
-    {c: '&#xAF;', h: 0.694, w: 0.556},
-    {c: '&#xB0;', h: 0.694, w: 0.556},
-    {c: '&#xB1;', h: 0.694, w: 0.833},
-    {c: '&#xB2;', h: 0.694, w: 0.833},
-    // 10 - 1F
-    {c: '&#xB3;', h: 0.431, w: 0.278},
-    {c: '&#xB4;', h: 0.431, d: 0.194, w: 0.306},
-    {c: '&#xB5;', h: 0.694, w: 0.5},
-    {c: '&#xB6;', h: 0.694, w: 0.5},
-    {c: '&#x2219;', h: 0.628, w: 0.5},
-    {c: '&#xB8;', h: 0.694, w: 0.5},
-    {c: '&#xB9;', h: 0.568, w: 0.5},
-    {c: '&#xBA;', h: 0.694, w: 0.75},
-    {c: '&#xBB;', d: 0.17, w: 0.444},
-    {c: '&#xBC;', h: 0.694, w: 0.5},
-    {c: '&#xBD;', h: 0.431, w: 0.722},
-    {c: '&#xBE;', h: 0.431, w: 0.778},
-    {c: '&#xBF;', h: 0.528, d: 0.0972, w: 0.5},
-    {c: '&#xC0;', h: 0.683, w: 0.903},
-    {c: '&#xC1;', h: 0.683, w: 1.01},
-    {c: '&#xC2;', h: 0.732, d: 0.0486, w: 0.778},
-    // 20 - 2F
-    {c: '&#xC3;', h: 0.431, w: 0.278, krn: {'108': -0.278, '76': -0.319}},
-    {c: '!', h: 0.694, w: 0.278, lig: {'96': 60}},
-    {c: '"', h: 0.694, w: 0.5},
-    {c: '#', h: 0.694, d: 0.194, w: 0.833},
-    {c: '$', h: 0.75, d: 0.0556, w: 0.5},
-    {c: '%', h: 0.75, d: 0.0556, w: 0.833},
-    {c: '&#x26;', h: 0.694, w: 0.778},
-    {c: '\'', h: 0.694, w: 0.278, krn: {'63': 0.111, '33': 0.111}, lig: {'39': 34}},
-    {c: '(', h: 0.75, d: 0.25, w: 0.389},
-    {c: ')', h: 0.75, d: 0.25, w: 0.389},
-    {c: '*', h: 0.75, w: 0.5},
-    {c: '+', h: 0.583, d: 0.0833, w: 0.778},
-    {c: ',', h: 0.106, d: 0.194, w: 0.278},
-    {c: '-', h: 0.431, w: 0.333, lig: {'45': 123}},
-    {c: '.', h: 0.106, w: 0.278},
-    {c: '/', h: 0.75, d: 0.25, w: 0.5},
-    // 30 - 3F
-    {c: '0', h: 0.644, w: 0.5},
-    {c: '1', h: 0.644, w: 0.5},
-    {c: '2', h: 0.644, w: 0.5},
-    {c: '3', h: 0.644, w: 0.5},
-    {c: '4', h: 0.644, w: 0.5},
-    {c: '5', h: 0.644, w: 0.5},
-    {c: '6', h: 0.644, w: 0.5},
-    {c: '7', h: 0.644, w: 0.5},
-    {c: '8', h: 0.644, w: 0.5},
-    {c: '9', h: 0.644, w: 0.5},
-    {c: ':', h: 0.431, w: 0.278},
-    {c: ';', h: 0.431, d: 0.194, w: 0.278},
-    {c: '&#x3C;', h: 0.5, d: 0.194, w: 0.278},
-    {c: '=', h: 0.367, d: -0.133, w: 0.778},
-    {c: '&#x3E;', h: 0.5, d: 0.194, w: 0.472},
-    {c: '?', h: 0.694, w: 0.472, lig: {'96': 62}},
-    // 40 - 4F
-    {c: '@', h: 0.694, w: 0.778},
-    {c: 'A', h: 0.683, w: 0.75, krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}},
-    {c: 'B', h: 0.683, w: 0.708},
-    {c: 'C', h: 0.683, w: 0.722},
-    {c: 'D', h: 0.683, w: 0.764, krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}},
-    {c: 'E', h: 0.683, w: 0.681},
-    {c: 'F', h: 0.683, w: 0.653, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
-    {c: 'G', h: 0.683, w: 0.785},
-    {c: 'H', h: 0.683, w: 0.75},
-    {c: 'I', h: 0.683, w: 0.361, krn: {'73': 0.0278}},
-    {c: 'J', h: 0.683, w: 0.514},
-    {c: 'K', h: 0.683, w: 0.778, krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
-    {c: 'L', h: 0.683, w: 0.625, krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}},
-    {c: 'M', h: 0.683, w: 0.917},
-    {c: 'N', h: 0.683, w: 0.75},
-    {c: 'O', h: 0.683, w: 0.778, krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}},
-    // 50 - 5F
-    {c: 'P', h: 0.683, w: 0.681, krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}},
-    {c: 'Q', h: 0.683, d: 0.194, w: 0.778},
-    {c: 'R', h: 0.683, w: 0.736, krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}},
-    {c: 'S', h: 0.683, w: 0.556},
-    {c: 'T', h: 0.683, w: 0.722, krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}},
-    {c: 'U', h: 0.683, w: 0.75},
-    {c: 'V', h: 0.683, w: 0.75, ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
-    {c: 'W', h: 0.683, w: 1.03, ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
-    {c: 'X', h: 0.683, w: 0.75, krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
-    {c: 'Y', h: 0.683, w: 0.75, ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}},
-    {c: 'Z', h: 0.683, w: 0.611},
-    {c: '[', h: 0.75, d: 0.25, w: 0.278},
-    {c: '\\', h: 0.694, w: 0.5},
-    {c: ']', h: 0.75, d: 0.25, w: 0.278},
-    {c: '^', h: 0.694, w: 0.5},
-    {c: '_', h: 0.668, w: 0.278},
-    // 60 - 6F
-    {c: '&#x60;', h: 0.694, w: 0.278, lig: {'96': 92}},
-    {c: 'a', h: 0.431, w: 0.5, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
-    {c: 'b', h: 0.694, w: 0.556, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
-    {c: 'c', h: 0.431, w: 0.444, krn: {'104': -0.0278, '107': -0.0278}},
-    {c: 'd', h: 0.694, w: 0.556},
-    {c: 'e', h: 0.431, w: 0.444},
-    {c: 'f', h: 0.694, w: 0.306, ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}},
-    {c: 'g', h: 0.431, d: 0.194, w: 0.5, ic: 0.0139, krn: {'106': 0.0278}},
-    {c: 'h', h: 0.694, w: 0.556, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}},
-    {c: 'i', h: 0.668, w: 0.278},
-    {c: 'j', h: 0.668, d: 0.194, w: 0.306},
-    {c: 'k', h: 0.694, w: 0.528, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}},
-    {c: 'l', h: 0.694, w: 0.278},
-    {c: 'm', h: 0.431, w: 0.833, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}},
-    {c: 'n', h: 0.431, w: 0.556, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}},
-    {c: 'o', h: 0.431, w: 0.5, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
-    // 70 - 7F
-    {c: 'p', h: 0.431, d: 0.194, w: 0.556, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
-    {c: 'q', h: 0.431, d: 0.194, w: 0.528},
-    {c: 'r', h: 0.431, w: 0.392},
-    {c: 's', h: 0.431, w: 0.394},
-    {c: 't', h: 0.615, w: 0.389, krn: {'121': -0.0278, '119': -0.0278}},
-    {c: 'u', h: 0.431, w: 0.556, krn: {'119': -0.0278}},
-    {c: 'v', h: 0.431, w: 0.528, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}},
-    {c: 'w', h: 0.431, w: 0.722, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}},
-    {c: 'x', h: 0.431, w: 0.528},
-    {c: 'y', h: 0.431, d: 0.194, w: 0.528, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}},
-    {c: 'z', h: 0.431, w: 0.444},
-    {c: '&#x7B;', h: 0.431, w: 0.5, ic: 0.0278, lig: {'45': 124}},
-    {c: '&#x7C;', h: 0.431, w: 1, ic: 0.0278},
-    {c: '&#x7D;', h: 0.694, w: 0.5},
-    {c: '&#x7E;', h: 0.668, w: 0.5},
-    {c: '&#xC4;', h: 0.668, w: 0.5}
-  ],
-  
-  cmmi10: [
-    // 00 - 0F
-    {c: '&#xA1;', h: 0.683, w: 0.615, ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}},
-    {c: '&#xA2;', h: 0.683, w: 0.833, krn: {'127': 0.167}},
-    {c: '&#xA3;', h: 0.683, w: 0.763, ic: 0.0278, krn: {'127': 0.0833}},
-    {c: '&#xA4;', h: 0.683, w: 0.694, krn: {'127': 0.167}},
-    {c: '&#xA5;', h: 0.683, w: 0.742, ic: 0.0757, krn: {'127': 0.0833}},
-    {c: '&#xA6;', h: 0.683, w: 0.831, ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}},
-    {c: '&#xA7;', h: 0.683, w: 0.78, ic: 0.0576, krn: {'127': 0.0833}},
-    {c: '&#xA8;', h: 0.683, w: 0.583, ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0556}},
-    {c: '&#xA9;', h: 0.683, w: 0.667, krn: {'127': 0.0833}},
-    {c: '&#xAA;', h: 0.683, w: 0.612, ic: 0.11, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}},
-    {c: '&#xAD;', h: 0.683, w: 0.772, ic: 0.0502, krn: {'127': 0.0833}},
-    {c: '&#xAE;', h: 0.431, w: 0.64, ic: 0.0037, krn: {'127': 0.0278}},
-    {c: '&#xAF;', h: 0.694, d: 0.194, w: 0.566, ic: 0.0528, krn: {'127': 0.0833}},
-    {c: '&#xB0;', h: 0.431, d: 0.194, w: 0.518, ic: 0.0556},
-    {c: '&#xB1;', h: 0.694, w: 0.444, ic: 0.0378, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}},
-    {c: '&#xB2;', h: 0.431, w: 0.406, krn: {'127': 0.0556}},
-    // 10 - 1F
-    {c: '&#xB3;', h: 0.694, d: 0.194, w: 0.438, ic: 0.0738, krn: {'127': 0.0833}},
-    {c: '&#xB4;', h: 0.431, d: 0.194, w: 0.497, ic: 0.0359, krn: {'127': 0.0556}},
-    {c: '&#xB5;', h: 0.694, w: 0.469, ic: 0.0278, krn: {'127': 0.0833}},
-    {c: '&#xB6;', h: 0.431, w: 0.354, krn: {'127': 0.0556}},
-    {c: '&#x2219;', h: 0.431, w: 0.576},
-    {c: '&#xB8;', h: 0.694, w: 0.583},
-    {c: '&#xB9;', h: 0.431, d: 0.194, w: 0.603, krn: {'127': 0.0278}},
-    {c: '&#xBA;', h: 0.431, w: 0.494, ic: 0.0637, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}},
-    {c: '&#xBB;', h: 0.694, d: 0.194, w: 0.438, ic: 0.046, krn: {'127': 0.111}},
-    {c: '&#xBC;', h: 0.431, w: 0.57, ic: 0.0359},
-    {c: '&#xBD;', h: 0.431, d: 0.194, w: 0.517, krn: {'127': 0.0833}},
-    {c: '&#xBE;', h: 0.431, w: 0.571, ic: 0.0359, krn: {'59': -0.0556, '58': -0.0556}},
-    {c: '&#xBF;', h: 0.431, w: 0.437, ic: 0.113, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}},
-    {c: '&#xC0;', h: 0.431, w: 0.54, ic: 0.0359, krn: {'127': 0.0278}},
-    {c: '&#xC1;', h: 0.694, d: 0.194, w: 0.596, krn: {'127': 0.0833}},
-    {c: '&#xC2;', h: 0.431, d: 0.194, w: 0.626, krn: {'127': 0.0556}},
-    // 20 - 2F
-    {c: '&#xC3;', h: 0.694, d: 0.194, w: 0.651, ic: 0.0359, krn: {'127': 0.111}},
-    {c: '!', h: 0.431, w: 0.622, ic: 0.0359},
-    {c: '"', h: 0.431, w: 0.466, krn: {'127': 0.0833}},
-    {c: '#', h: 0.694, w: 0.591, krn: {'127': 0.0833}},
-    {c: '$', h: 0.431, w: 0.828, ic: 0.0278},
-    {c: '%', h: 0.431, d: 0.194, w: 0.517, krn: {'127': 0.0833}},
-    {c: '&#x26;', h: 0.431, d: 0.0972, w: 0.363, ic: 0.0799, krn: {'127': 0.0833}},
-    {c: '\'', h: 0.431, d: 0.194, w: 0.654, krn: {'127': 0.0833}},
-    {c: '(', h: 0.367, d: -0.133, w: 1},
-    {c: ')', h: 0.367, d: -0.133, w: 1},
-    {c: '*', h: 0.367, d: -0.133, w: 1},
-    {c: '+', h: 0.367, d: -0.133, w: 1},
-    {c: ',', h: 0.464, d: -0.0363, w: 0.278},
-    {c: '-', h: 0.464, d: -0.0363, w: 0.278},
-    {c: '.', h: 0.465, d: -0.0347, w: 0.5},
-    {c: '/', h: 0.465, d: -0.0347, w: 0.5},
-    // 30 - 3F
-    {c: '0', h: 0.431, w: 0.5},
-    {c: '1', h: 0.431, w: 0.5},
-    {c: '2', h: 0.431, w: 0.5},
-    {c: '3', h: 0.431, d: 0.194, w: 0.5},
-    {c: '4', h: 0.431, d: 0.194, w: 0.5},
-    {c: '5', h: 0.431, d: 0.194, w: 0.5},
-    {c: '6', h: 0.644, w: 0.5},
-    {c: '7', h: 0.431, d: 0.194, w: 0.5},
-    {c: '8', h: 0.644, w: 0.5},
-    {c: '9', h: 0.431, d: 0.194, w: 0.5},
-    {c: ':', h: 0.106, w: 0.278},
-    {c: ';', h: 0.106, d: 0.194, w: 0.278},
-    {c: '&#x3C;', h: 0.539, d: 0.0391, w: 0.778},
-    {c: '=', h: 0.75, d: 0.25, w: 0.5, krn: {'1': -0.0556, '65': -0.0556, '77': -0.0556, '78': -0.0556, '89': 0.0556, '90': -0.0556}},
-    {c: '&#x3E;', h: 0.539, d: 0.0391, w: 0.778},
-    {c: '?', h: 0.465, d: -0.0347, w: 0.5},
-    // 40 - 4F
-    {c: '@', h: 0.694, w: 0.531, ic: 0.0556, krn: {'127': 0.0833}},
-    {c: 'A', h: 0.683, w: 0.75, krn: {'127': 0.139}},
-    {c: 'B', h: 0.683, w: 0.759, ic: 0.0502, krn: {'127': 0.0833}},
-    {c: 'C', h: 0.683, w: 0.715, ic: 0.0715, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
-    {c: 'D', h: 0.683, w: 0.828, ic: 0.0278, krn: {'127': 0.0556}},
-    {c: 'E', h: 0.683, w: 0.738, ic: 0.0576, krn: {'127': 0.0833}},
-    {c: 'F', h: 0.683, w: 0.643, ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}},
-    {c: 'G', h: 0.683, w: 0.786, krn: {'127': 0.0833}},
-    {c: 'H', h: 0.683, w: 0.831, ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}},
-    {c: 'I', h: 0.683, w: 0.44, ic: 0.0785, krn: {'127': 0.111}},
-    {c: 'J', h: 0.683, w: 0.555, ic: 0.0962, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.167}},
-    {c: 'K', h: 0.683, w: 0.849, ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}},
-    {c: 'L', h: 0.683, w: 0.681, krn: {'127': 0.0278}},
-    {c: 'M', h: 0.683, w: 0.97, ic: 0.109, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
-    {c: 'N', h: 0.683, w: 0.803, ic: 0.109, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
-    {c: 'O', h: 0.683, w: 0.763, ic: 0.0278, krn: {'127': 0.0833}},
-    // 50 - 5F
-    {c: 'P', h: 0.683, w: 0.642, ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}},
-    {c: 'Q', h: 0.683, d: 0.194, w: 0.791, krn: {'127': 0.0833}},
-    {c: 'R', h: 0.683, w: 0.759, ic: 0.00773, krn: {'127': 0.0833}},
-    {c: 'S', h: 0.683, w: 0.613, ic: 0.0576, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
-    {c: 'T', h: 0.683, w: 0.584, ic: 0.139, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
-    {c: 'U', h: 0.683, w: 0.683, ic: 0.109, krn: {'59': -0.111, '58': -0.111, '61': -0.0556, '127': 0.0278}},
-    {c: 'V', h: 0.683, w: 0.583, ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}},
-    {c: 'W', h: 0.683, w: 0.944, ic: 0.139, krn: {'59': -0.167, '58': -0.167, '61': -0.111}},
-    {c: 'X', h: 0.683, w: 0.828, ic: 0.0785, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
-    {c: 'Y', h: 0.683, w: 0.581, ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}},
-    {c: 'Z', h: 0.683, w: 0.683, ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
-    {c: '[', h: 0.75, w: 0.389},
-    {c: '\\', h: 0.694, d: 0.194, w: 0.389},
-    {c: ']', h: 0.694, d: 0.194, w: 0.389},
-    {c: '^', h: 0.358, d: -0.142, w: 1},
-    {c: '_', h: 0.358, d: -0.142, w: 1},
-    // 60 - 6F
-    {c: '&#x60;', h: 0.694, w: 0.417, krn: {'127': 0.111}},
-    {c: 'a', h: 0.431, w: 0.529},
-    {c: 'b', h: 0.694, w: 0.429},
-    {c: 'c', h: 0.431, w: 0.433, krn: {'127': 0.0556}},
-    {c: 'd', h: 0.694, w: 0.52, krn: {'89': 0.0556, '90': -0.0556, '106': -0.111, '102': -0.167, '127': 0.167}},
-    {c: 'e', h: 0.431, w: 0.466, krn: {'127': 0.0556}},
-    {c: 'f', h: 0.694, d: 0.194, w: 0.49, ic: 0.108, krn: {'59': -0.0556, '58': -0.0556, '127': 0.167}},
-    {c: 'g', h: 0.431, d: 0.194, w: 0.477, ic: 0.0359, krn: {'127': 0.0278}},
-    {c: 'h', h: 0.694, w: 0.576, krn: {'127': -0.0278}},
-    {c: 'i', h: 0.66, w: 0.345},
-    {c: 'j', h: 0.66, d: 0.194, w: 0.412, ic: 0.0572, krn: {'59': -0.0556, '58': -0.0556}},
-    {c: 'k', h: 0.694, w: 0.521, ic: 0.0315},
-    {c: 'l', h: 0.694, w: 0.298, ic: 0.0197, krn: {'127': 0.0833}},
-    {c: 'm', h: 0.431, w: 0.878},
-    {c: 'n', h: 0.431, w: 0.6},
-    {c: 'o', h: 0.431, w: 0.485, krn: {'127': 0.0556}},
-    // 70 - 7F
-    {c: 'p', h: 0.431, d: 0.194, w: 0.503, krn: {'127': 0.0833}},
-    {c: 'q', h: 0.431, d: 0.194, w: 0.446, ic: 0.0359, krn: {'127': 0.0833}},
-    {c: 'r', h: 0.431, w: 0.451, ic: 0.0278, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}},
-    {c: 's', h: 0.431, w: 0.469, krn: {'127': 0.0556}},
-    {c: 't', h: 0.615, w: 0.361, krn: {'127': 0.0833}},
-    {c: 'u', h: 0.431, w: 0.572, krn: {'127': 0.0278}},
-    {c: 'v', h: 0.431, w: 0.485, ic: 0.0359, krn: {'127': 0.0278}},
-    {c: 'w', h: 0.431, w: 0.716, ic: 0.0269, krn: {'127': 0.0833}},
-    {c: 'x', h: 0.431, w: 0.572, krn: {'127': 0.0278}},
-    {c: 'y', h: 0.431, d: 0.194, w: 0.49, ic: 0.0359, krn: {'127': 0.0556}},
-    {c: 'z', h: 0.431, w: 0.465, ic: 0.044, krn: {'127': 0.0556}},
-    {c: '&#x7B;', h: 0.431, w: 0.322, krn: {'127': 0.0278}},
-    {c: '&#x7C;', h: 0.431, d: 0.194, w: 0.384, krn: {'127': 0.0833}},
-    {c: '&#x7D;', h: 0.431, d: 0.194, w: 0.636, krn: {'127': 0.111}},
-    {c: '&#x7E;', h: 0.714, w: 0.5, ic: 0.154},
-    {c: '&#xC4;', h: 0.694, w: 0.278, ic: 0.399}
-  ],
-
-  cmsy10: [
-    // 00 - 0F
-    {c: '&#xA1;', h: 0.583, d: 0.0833, w: 0.778},
-    {c: '&#xA2;', h: 0.444, d: -0.0556, w: 0.278},
-    {c: '&#xA3;', h: 0.583, d: 0.0833, w: 0.778},
-    {c: '&#xA4;', h: 0.465, d: -0.0347, w: 0.5},
-    {c: '&#xA5;', h: 0.583, d: 0.0833, w: 0.778},
-    {c: '&#xA6;', h: 0.444, d: -0.0556, w: 0.5},
-    {c: '&#xA7;', h: 0.583, d: 0.0833, w: 0.778},
-    {c: '&#xA8;', h: 0.583, d: 0.0833, w: 0.778},
-    {c: '&#xA9;', h: 0.583, d: 0.0833, w: 0.778},
-    {c: '&#xAA;', h: 0.583, d: 0.0833, w: 0.778},
-    {c: '&#xAD;', h: 0.583, d: 0.0833, w: 0.778},
-    {c: '&#xAE;', h: 0.583, d: 0.0833, w: 0.778},
-    {c: '&#xAF;', h: 0.583, d: 0.0833, w: 0.778},
-    {c: '&#xB0;', h: 0.694, d: 0.194, w: 1},
-    {c: '&#xB1;', h: 0.444, d: -0.0556, w: 0.5},
-    {c: '&#xB2;', h: 0.444, d: -0.0556, w: 0.5},
-    // 10 - 1F
-    {c: '&#xB3;', h: 0.464, d: -0.0363, w: 0.778},
-    {c: '&#xB4;', h: 0.464, d: -0.0363, w: 0.778},
-    {c: '&#xB5;', h: 0.636, d: 0.136, w: 0.778},
-    {c: '&#xB6;', h: 0.636, d: 0.136, w: 0.778},
-    {c: '&#x2219;', h: 0.636, d: 0.136, w: 0.778},
-    {c: '&#xB8;', h: 0.636, d: 0.136, w: 0.778},
-    {c: '&#xB9;', h: 0.636, d: 0.136, w: 0.778},
-    {c: '&#xBA;', h: 0.636, d: 0.136, w: 0.778},
-    {c: '&#xBB;', h: 0.367, d: -0.133, w: 0.778},
-    {c: '&#xBC;', h: 0.483, d: -0.0169, w: 0.778},
-    {c: '&#xBD;', h: 0.539, d: 0.0391, w: 0.778},
-    {c: '&#xBE;', h: 0.539, d: 0.0391, w: 0.778},
-    {c: '&#xBF;', h: 0.539, d: 0.0391, w: 1},
-    {c: '&#xC0;', h: 0.539, d: 0.0391, w: 1},
-    {c: '&#xC1;', h: 0.539, d: 0.0391, w: 0.778},
-    {c: '&#xC2;', h: 0.539, d: 0.0391, w: 0.778},
-    // 20 - 2F
-    {c: '&#xC3;', h: 0.367, d: -0.133, w: 1},
-    {c: '!', h: 0.367, d: -0.133, w: 1},
-    {c: '"', h: 0.694, d: 0.194, w: 0.5},
-    {c: '#', h: 0.694, d: 0.194, w: 0.5},
-    {c: '$', h: 0.367, d: -0.133, w: 1},
-    {c: '%', h: 0.694, d: 0.194, w: 1},
-    {c: '&#x26;', h: 0.694, d: 0.194, w: 1},
-    {c: '\'', h: 0.464, d: -0.0363, w: 0.778},
-    {c: '(', h: 0.367, d: -0.133, w: 1},
-    {c: ')', h: 0.367, d: -0.133, w: 1},
-    {c: '*', h: 0.694, d: 0.194, w: 0.611},
-    {c: '+', h: 0.694, d: 0.194, w: 0.611},
-    {c: ',', h: 0.367, d: -0.133, w: 1},
-    {c: '-', h: 0.694, d: 0.194, w: 1},
-    {c: '.', h: 0.694, d: 0.194, w: 1},
-    {c: '/', h: 0.431, w: 0.778},
-    // 30 - 3F
-    {c: '0', h: 0.556, w: 0.275},
-    {c: '1', h: 0.431, w: 1},
-    {c: '2', h: 0.539, d: 0.0391, w: 0.667},
-    {c: '3', h: 0.539, d: 0.0391, w: 0.667},
-    {c: '4', h: 0.694, d: 0.194, w: 0.889},
-    {c: '5', h: 0.694, d: 0.194, w: 0.889},
-    {c: '6', h: 0.694, d: 0.194, w: 0},
-    {c: '7', h: 0.367, d: -0.133, w: 0},
-    {c: '8', h: 0.694, w: 0.556},
-    {c: '9', h: 0.694, w: 0.556},
-    {c: ':', h: 0.431, w: 0.667},
-    {c: ';', h: 0.75, d: 0.0556, w: 0.5},
-    {c: '&#x3C;', h: 0.694, w: 0.722},
-    {c: '=', h: 0.694, w: 0.722},
-    {c: '&#x3E;', h: 0.694, w: 0.778},
-    {c: '?', h: 0.694, w: 0.778},
-    // 40 - 4F
-    {c: '@', h: 0.694, w: 0.611},
-    {c: 'A', h: 0.683, w: 0.798, krn: {'48': 0.194}},
-    {c: 'B', h: 0.683, w: 0.657, ic: 0.0304, krn: {'48': 0.139}},
-    {c: 'C', h: 0.683, w: 0.527, ic: 0.0583, krn: {'48': 0.139}},
-    {c: 'D', h: 0.683, w: 0.771, ic: 0.0278, krn: {'48': 0.0833}},
-    {c: 'E', h: 0.683, w: 0.528, ic: 0.0894, krn: {'48': 0.111}},
-    {c: 'F', h: 0.683, w: 0.719, ic: 0.0993, krn: {'48': 0.111}},
-    {c: 'G', h: 0.683, d: 0.0972, w: 0.595, ic: 0.0593, krn: {'48': 0.111}},
-    {c: 'H', h: 0.683, w: 0.845, ic: 0.00965, krn: {'48': 0.111}},
-    {c: 'I', h: 0.683, w: 0.545, ic: 0.0738, krn: {'48': 0.0278}},
-    {c: 'J', h: 0.683, d: 0.0972, w: 0.678, ic: 0.185, krn: {'48': 0.167}},
-    {c: 'K', h: 0.683, w: 0.762, ic: 0.0144, krn: {'48': 0.0556}},
-    {c: 'L', h: 0.683, w: 0.69, krn: {'48': 0.139}},
-    {c: 'M', h: 0.683, w: 1.2, krn: {'48': 0.139}},
-    {c: 'N', h: 0.683, w: 0.82, ic: 0.147, krn: {'48': 0.0833}},
-    {c: 'O', h: 0.683, w: 0.796, ic: 0.0278, krn: {'48': 0.111}},
-    // 50 - 5F
-    {c: 'P', h: 0.683, w: 0.696, ic: 0.0822, krn: {'48': 0.0833}},
-    {c: 'Q', h: 0.683, d: 0.0972, w: 0.817, krn: {'48': 0.111}},
-    {c: 'R', h: 0.683, w: 0.848, krn: {'48': 0.0833}},
-    {c: 'S', h: 0.683, w: 0.606, ic: 0.075, krn: {'48': 0.139}},
-    {c: 'T', h: 0.683, w: 0.545, ic: 0.254, krn: {'48': 0.0278}},
-    {c: 'U', h: 0.683, w: 0.626, ic: 0.0993, krn: {'48': 0.0833}},
-    {c: 'V', h: 0.683, w: 0.613, ic: 0.0822, krn: {'48': 0.0278}},
-    {c: 'W', h: 0.683, w: 0.988, ic: 0.0822, krn: {'48': 0.0833}},
-    {c: 'X', h: 0.683, w: 0.713, ic: 0.146, krn: {'48': 0.139}},
-    {c: 'Y', h: 0.683, d: 0.0972, w: 0.668, ic: 0.0822, krn: {'48': 0.0833}},
-    {c: 'Z', h: 0.683, w: 0.725, ic: 0.0794, krn: {'48': 0.139}},
-    {c: '[', h: 0.556, w: 0.667},
-    {c: '\\', h: 0.556, w: 0.667},
-    {c: ']', h: 0.556, w: 0.667},
-    {c: '^', h: 0.556, w: 0.667},
-    {c: '_', h: 0.556, w: 0.667},
-    // 60 - 6F
-    {c: '&#x60;', h: 0.694, w: 0.611},
-    {c: 'a', h: 0.694, w: 0.611},
-    {c: 'b', h: 0.75, d: 0.25, w: 0.444},
-    {c: 'c', h: 0.75, d: 0.25, w: 0.444},
-    {c: 'd', h: 0.75, d: 0.25, w: 0.444},
-    {c: 'e', h: 0.75, d: 0.25, w: 0.444},
-    {c: 'f', h: 0.75, d: 0.25, w: 0.5},
-    {c: 'g', h: 0.75, d: 0.25, w: 0.5},
-    {c: 'h', h: 0.75, d: 0.25, w: 0.389},
-    {c: 'i', h: 0.75, d: 0.25, w: 0.389},
-    {c: 'j', h: 0.75, d: 0.25, w: 0.278},
-    {c: 'k', h: 0.75, d: 0.25, w: 0.5},
-    {c: 'l', h: 0.75, d: 0.25, w: 0.5},
-    {c: 'm', h: 0.75, d: 0.25, w: 0.611},
-    {c: 'n', h: 0.75, d: 0.25, w: 0.5},
-    {c: 'o', h: 0.694, d: 0.194, w: 0.278},
-    // 70 - 7F
-    {c: 'p', h: 0.04, d: 0.96, w: 0.833},
-    {c: 'q', h: 0.683, w: 0.75},
-    {c: 'r', h: 0.683, w: 0.833},
-    {c: 's', h: 0.694, d: 0.194, w: 0.417, ic: 0.111},
-    {c: 't', h: 0.556, w: 0.667},
-    {c: 'u', h: 0.556, w: 0.667},
-    {c: 'v', h: 0.636, d: 0.136, w: 0.778},
-    {c: 'w', h: 0.636, d: 0.136, w: 0.778},
-    {c: 'x', h: 0.694, d: 0.194, w: 0.444},
-    {c: 'y', h: 0.694, d: 0.194, w: 0.444},
-    {c: 'z', h: 0.694, d: 0.194, w: 0.444},
-    {c: '&#x7B;', h: 0.694, d: 0.194, w: 0.611},
-    {c: '&#x7C;', h: 0.694, d: 0.13, w: 0.778},
-    {c: '&#x7D;', h: 0.694, d: 0.13, w: 0.778},
-    {c: '&#x7E;', h: 0.694, d: 0.13, w: 0.778},
-    {c: '&#xC4;', h: 0.694, d: 0.13, w: 0.778}
-  ],
-
-  cmex10: [
-    // 00 - 0F
-    {c: '&#xA1;', h: 0.04, d: 1.16, w: 0.458, n: 16},
-    {c: '&#xA2;', h: 0.04, d: 1.16, w: 0.458, n: 17},
-    {c: '&#xA3;', h: 0.04, d: 1.16, w: 0.417, n: 104},
-    {c: '&#xA4;', h: 0.04, d: 1.16, w: 0.417, n: 105},
-    {c: '&#xA5;', h: 0.04, d: 1.16, w: 0.472, n: 106},
-    {c: '&#xA6;', h: 0.04, d: 1.16, w: 0.472, n: 107},
-    {c: '&#xA7;', h: 0.04, d: 1.16, w: 0.472, n: 108},
-    {c: '&#xA8;', h: 0.04, d: 1.16, w: 0.472, n: 109},
-    {c: '&#xA9;', h: 0.04, d: 1.16, w: 0.583, n: 110},
-    {c: '&#xAA;', h: 0.04, d: 1.16, w: 0.583, n: 111},
-    {c: '&#xAD;', h: 0.04, d: 1.16, w: 0.472, n: 68},
-    {c: '&#xAE;', h: 0.04, d: 1.16, w: 0.472, n: 69},
-    {c: '&#xAF;', d: 0.6, w: 0.333, delim: {rep: 12}},
-    {c: '&#xB0;', d: 0.6, w: 0.556, delim: {rep: 13}},
-    {c: '&#xB1;', h: 0.04, d: 1.16, w: 0.578, n: 46},
-    {c: '&#xB2;', h: 0.04, d: 1.16, w: 0.578, n: 47},
-    // 10 - 1F
-    {c: '&#xB3;', h: 0.04, d: 1.76, w: 0.597, n: 18},
-    {c: '&#xB4;', h: 0.04, d: 1.76, w: 0.597, n: 19},
-    {c: '&#xB5;', h: 0.04, d: 2.36, w: 0.736, n: 32},
-    {c: '&#xB6;', h: 0.04, d: 2.36, w: 0.736, n: 33},
-    {c: '&#x2219;', h: 0.04, d: 2.36, w: 0.528, n: 34},
-    {c: '&#xB8;', h: 0.04, d: 2.36, w: 0.528, n: 35},
-    {c: '&#xB9;', h: 0.04, d: 2.36, w: 0.583, n: 36},
-    {c: '&#xBA;', h: 0.04, d: 2.36, w: 0.583, n: 37},
-    {c: '&#xBB;', h: 0.04, d: 2.36, w: 0.583, n: 38},
-    {c: '&#xBC;', h: 0.04, d: 2.36, w: 0.583, n: 39},
-    {c: '&#xBD;', h: 0.04, d: 2.36, w: 0.75, n: 40},
-    {c: '&#xBE;', h: 0.04, d: 2.36, w: 0.75, n: 41},
-    {c: '&#xBF;', h: 0.04, d: 2.36, w: 0.75, n: 42},
-    {c: '&#xC0;', h: 0.04, d: 2.36, w: 0.75, n: 43},
-    {c: '&#xC1;', h: 0.04, d: 2.36, w: 1.04, n: 44},
-    {c: '&#xC2;', h: 0.04, d: 2.36, w: 1.04, n: 45},
-    // 20 - 2F
-    {c: '&#xC3;', h: 0.04, d: 2.96, w: 0.792, n: 48},
-    {c: '!', h: 0.04, d: 2.96, w: 0.792, n: 49},
-    {c: '"', h: 0.04, d: 2.96, w: 0.583, n: 50},
-    {c: '#', h: 0.04, d: 2.96, w: 0.583, n: 51},
-    {c: '$', h: 0.04, d: 2.96, w: 0.639, n: 52},
-    {c: '%', h: 0.04, d: 2.96, w: 0.639, n: 53},
-    {c: '&#x26;', h: 0.04, d: 2.96, w: 0.639, n: 54},
-    {c: '\'', h: 0.04, d: 2.96, w: 0.639, n: 55},
-    {c: '(', h: 0.04, d: 2.96, w: 0.806, n: 56},
-    {c: ')', h: 0.04, d: 2.96, w: 0.806, n: 57},
-    {c: '*', h: 0.04, d: 2.96, w: 0.806},
-    {c: '+', h: 0.04, d: 2.96, w: 0.806},
-    {c: ',', h: 0.04, d: 2.96, w: 1.28},
-    {c: '-', h: 0.04, d: 2.96, w: 1.28},
-    {c: '.', h: 0.04, d: 1.76, w: 0.811, n: 30},
-    {c: '/', h: 0.04, d: 1.76, w: 0.811, n: 31},
-    // 30 - 3F
-    {c: '0', h: 0.04, d: 1.76, w: 0.875, delim: {top: 48, bot: 64, rep: 66}},
-    {c: '1', h: 0.04, d: 1.76, w: 0.875, delim: {top: 49, bot: 65, rep: 67}},
-    {c: '2', h: 0.04, d: 1.76, w: 0.667, delim: {top: 50, bot: 52, rep: 54}},
-    {c: '3', h: 0.04, d: 1.76, w: 0.667, delim: {top: 51, bot: 53, rep: 55}},
-    {c: '4', h: 0.04, d: 1.76, w: 0.667, delim: {bot: 52, rep: 54}},
-    {c: '5', h: 0.04, d: 1.76, w: 0.667, delim: {bot: 53, rep: 55}},
-    {c: '6', d: 0.6, w: 0.667, delim: {top: 50, rep: 54}},
-    {c: '7', d: 0.6, w: 0.667, delim: {top: 51, rep: 55}},
-    {c: '8', d: 0.9, w: 0.889, delim: {top: 56, mid: 60, bot: 58, rep: 62}},
-    {c: '9', d: 0.9, w: 0.889, delim: {top: 57, mid: 61, bot: 59, rep: 62}},
-    {c: ':', d: 0.9, w: 0.889, delim: {top: 56, bot: 58, rep: 62}},
-    {c: ';', d: 0.9, w: 0.889, delim: {top: 57, bot: 59, rep: 62}},
-    {c: '&#x3C;', d: 1.8, w: 0.889, delim: {rep: 63}},
-    {c: '=', d: 1.8, w: 0.889, delim: {rep: 119}},
-    {c: '&#x3E;', d: 0.3, w: 0.889, delim: {rep: 62}},
-    {c: '?', d: 0.6, w: 0.667, delim: {top: 120, bot: 121, rep: 63}},
-    // 40 - 4F
-    {c: '@', h: 0.04, d: 1.76, w: 0.875, delim: {top: 56, bot: 59, rep: 62}},
-    {c: 'A', h: 0.04, d: 1.76, w: 0.875, delim: {top: 57, bot: 58, rep: 62}},
-    {c: 'B', d: 0.6, w: 0.875, delim: {rep: 66}},
-    {c: 'C', d: 0.6, w: 0.875, delim: {rep: 67}},
-    {c: 'D', h: 0.04, d: 1.76, w: 0.611, n: 28},
-    {c: 'E', h: 0.04, d: 1.76, w: 0.611, n: 29},
-    {c: 'F', d: 1, w: 0.833, n: 71},
-    {c: 'G', h: 0.1, d: 1.5, w: 1.11},
-    {c: 'H', d: 1.11, w: 0.472, ic: 0.194, n: 73},
-    {c: 'I', d: 2.22, w: 0.556, ic: 0.444},
-    {c: 'J', d: 1, w: 1.11, n: 75},
-    {c: 'K', h: 0.1, d: 1.5, w: 1.51},
-    {c: 'L', d: 1, w: 1.11, n: 77},
-    {c: 'M', h: 0.1, d: 1.5, w: 1.51},
-    {c: 'N', d: 1, w: 1.11, n: 79},
-    {c: 'O', h: 0.1, d: 1.5, w: 1.51},
-    // 50 - 5F
-    {c: 'P', d: 1, w: 1.06, n: 88},
-    {c: 'Q', d: 1, w: 0.944, n: 89},
-    {c: 'R', d: 1.11, w: 0.472, ic: 0.194, n: 90},
-    {c: 'S', d: 1, w: 0.833, n: 91},
-    {c: 'T', d: 1, w: 0.833, n: 92},
-    {c: 'U', d: 1, w: 0.833, n: 93},
-    {c: 'V', d: 1, w: 0.833, n: 94},
-    {c: 'W', d: 1, w: 0.833, n: 95},
-    {c: 'X', h: 0.1, d: 1.5, w: 1.44},
-    {c: 'Y', h: 0.1, d: 1.5, w: 1.28},
-    {c: 'Z', d: 2.22, w: 0.556, ic: 0.444},
-    {c: '[', h: 0.1, d: 1.5, w: 1.11},
-    {c: '\\', h: 0.1, d: 1.5, w: 1.11},
-    {c: ']', h: 0.1, d: 1.5, w: 1.11},
-    {c: '^', h: 0.1, d: 1.5, w: 1.11},
-    {c: '_', h: 0.1, d: 1.5, w: 1.11},
-    // 60 - 6F
-    {c: '&#x60;', d: 1, w: 0.944, n: 97},
-    {c: 'a', h: 0.1, d: 1.5, w: 1.28},
-    {c: 'b', h: 0.722, w: 0.556, n: 99},
-    {c: 'c', h: 0.75, w: 1, n: 100},
-    {c: 'd', h: 0.75, w: 1.44},
-    {c: 'e', h: 0.722, w: 0.556, n: 102},
-    {c: 'f', h: 0.75, w: 1, n: 103},
-    {c: 'g', h: 0.75, w: 1.44},
-    {c: 'h', h: 0.04, d: 1.76, w: 0.472, n: 20},
-    {c: 'i', h: 0.04, d: 1.76, w: 0.472, n: 21},
-    {c: 'j', h: 0.04, d: 1.76, w: 0.528, n: 22},
-    {c: 'k', h: 0.04, d: 1.76, w: 0.528, n: 23},
-    {c: 'l', h: 0.04, d: 1.76, w: 0.528, n: 24},
-    {c: 'm', h: 0.04, d: 1.76, w: 0.528, n: 25},
-    {c: 'n', h: 0.04, d: 1.76, w: 0.667, n: 26},
-    {c: 'o', h: 0.04, d: 1.76, w: 0.667, n: 27},
-    // 70 - 7F
-    {c: 'p', h: 0.04, d: 1.16, w: 1, n: 113},
-    {c: 'q', h: 0.04, d: 1.76, w: 1, n: 114},
-    {c: 'r', h: 0.04, d: 2.36, w: 1, n: 115},
-    {c: 's', h: 0.04, d: 2.96, w: 1, n: 116},
-    {c: 't', d: 1.8, w: 1.06, delim: {top: 118, bot: 116, rep: 117}},
-    {c: 'u', d: 0.6, w: 1.06},
-    {c: 'v', h: 0.04, d: 0.56, w: 1.06},
-    {c: 'w', d: 0.6, w: 0.778, delim: {top: 126, bot: 127, rep: 119}},
-    {c: 'x', d: 0.6, w: 0.667, delim: {top: 120, rep: 63}},
-    {c: 'y', d: 0.6, w: 0.667, delim: {bot: 121, rep: 63}},
-    {c: 'z', h: 0.12, w: 0.45},
-    {c: '&#x7B;', h: 0.12, w: 0.45},
-    {c: '&#x7C;', h: 0.12, w: 0.45},
-    {c: '&#x7D;', h: 0.12, w: 0.45},
-    {c: '&#x7E;', d: 0.6, w: 0.778, delim: {top: 126, rep: 119}},
-    {c: '&#xC4;', d: 0.6, w: 0.778, delim: {bot: 127, rep: 119}}
-  ],
-  
-  cmti10: [
-    // 00 - 0F
-    {c: '&#xA1;', h: 0.683, w: 0.627, ic: 0.133},
-    {c: '&#xA2;', h: 0.683, w: 0.818},
-    {c: '&#xA3;', h: 0.683, w: 0.767, ic: 0.094},
-    {c: '&#xA4;', h: 0.683, w: 0.692},
-    {c: '&#xA5;', h: 0.683, w: 0.664, ic: 0.153},
-    {c: '&#xA6;', h: 0.683, w: 0.743, ic: 0.164},
-    {c: '&#xA7;', h: 0.683, w: 0.716, ic: 0.12},
-    {c: '&#xA8;', h: 0.683, w: 0.767, ic: 0.111},
-    {c: '&#xA9;', h: 0.683, w: 0.716, ic: 0.0599},
-    {c: '&#xAA;', h: 0.683, w: 0.767, ic: 0.111},
-    {c: '&#xAD;', h: 0.683, w: 0.716, ic: 0.103},
-    {c: '&#xAE;', h: 0.694, d: 0.194, w: 0.613, ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 14, '108': 15}},
-    {c: '&#xAF;', h: 0.694, d: 0.194, w: 0.562, ic: 0.103},
-    {c: '&#xB0;', h: 0.694, d: 0.194, w: 0.588, ic: 0.103},
-    {c: '&#xB1;', h: 0.694, d: 0.194, w: 0.882, ic: 0.103},
-    {c: '&#xB2;', h: 0.694, d: 0.194, w: 0.894, ic: 0.103},
-    // 10 - 1F
-    {c: '&#xB3;', h: 0.431, w: 0.307, ic: 0.0767},
-    {c: '&#xB4;', h: 0.431, d: 0.194, w: 0.332, ic: 0.0374},
-    {c: '&#xB5;', h: 0.694, w: 0.511},
-    {c: '&#xB6;', h: 0.694, w: 0.511, ic: 0.0969},
-    {c: '&#x2219;', h: 0.628, w: 0.511, ic: 0.083},
-    {c: '&#xB8;', h: 0.694, w: 0.511, ic: 0.108},
-    {c: '&#xB9;', h: 0.562, w: 0.511, ic: 0.103},
-    {c: '&#xBA;', h: 0.694, w: 0.831},
-    {c: '&#xBB;', d: 0.17, w: 0.46},
-    {c: '&#xBC;', h: 0.694, d: 0.194, w: 0.537, ic: 0.105},
-    {c: '&#xBD;', h: 0.431, w: 0.716, ic: 0.0751},
-    {c: '&#xBE;', h: 0.431, w: 0.716, ic: 0.0751},
-    {c: '&#xBF;', h: 0.528, d: 0.0972, w: 0.511, ic: 0.0919},
-    {c: '&#xC0;', h: 0.683, w: 0.883, ic: 0.12},
-    {c: '&#xC1;', h: 0.683, w: 0.985, ic: 0.12},
-    {c: '&#xC2;', h: 0.732, d: 0.0486, w: 0.767, ic: 0.094},
-    // 20 - 2F
-    {c: '&#xC3;', h: 0.431, w: 0.256, krn: {'108': -0.256, '76': -0.321}},
-    {c: '!', h: 0.694, w: 0.307, ic: 0.124, lig: {'96': 60}},
-    {c: '"', h: 0.694, w: 0.514, ic: 0.0696},
-    {c: '#', h: 0.694, d: 0.194, w: 0.818, ic: 0.0662},
-    {c: '$', h: 0.694, w: 0.769},
-    {c: '%', h: 0.75, d: 0.0556, w: 0.818, ic: 0.136},
-    {c: '&#x26;', h: 0.694, w: 0.767, ic: 0.0969},
-    {c: '\'', h: 0.694, w: 0.307, ic: 0.124, krn: {'63': 0.102, '33': 0.102}, lig: {'39': 34}},
-    {c: '(', h: 0.75, d: 0.25, w: 0.409, ic: 0.162},
-    {c: ')', h: 0.75, d: 0.25, w: 0.409, ic: 0.0369},
-    {c: '*', h: 0.75, w: 0.511, ic: 0.149},
-    {c: '+', h: 0.562, d: 0.0567, w: 0.767, ic: 0.0369},
-    {c: ',', h: 0.106, d: 0.194, w: 0.307},
-    {c: '-', h: 0.431, w: 0.358, ic: 0.0283, lig: {'45': 123}},
-    {c: '.', h: 0.106, w: 0.307},
-    {c: '/', h: 0.75, d: 0.25, w: 0.511, ic: 0.162},
-    // 30 - 3F
-    {c: '0', h: 0.644, w: 0.511, ic: 0.136},
-    {c: '1', h: 0.644, w: 0.511, ic: 0.136},
-    {c: '2', h: 0.644, w: 0.511, ic: 0.136},
-    {c: '3', h: 0.644, w: 0.511, ic: 0.136},
-    {c: '4', h: 0.644, d: 0.194, w: 0.511, ic: 0.136},
-    {c: '5', h: 0.644, w: 0.511, ic: 0.136},
-    {c: '6', h: 0.644, w: 0.511, ic: 0.136},
-    {c: '7', h: 0.644, d: 0.194, w: 0.511, ic: 0.136},
-    {c: '8', h: 0.644, w: 0.511, ic: 0.136},
-    {c: '9', h: 0.644, w: 0.511, ic: 0.136},
-    {c: ':', h: 0.431, w: 0.307, ic: 0.0582},
-    {c: ';', h: 0.431, d: 0.194, w: 0.307, ic: 0.0582},
-    {c: '&#x3C;', h: 0.5, d: 0.194, w: 0.307, ic: 0.0756},
-    {c: '=', h: 0.367, d: -0.133, w: 0.767, ic: 0.0662},
-    {c: '&#x3E;', h: 0.5, d: 0.194, w: 0.511},
-    {c: '?', h: 0.694, w: 0.511, ic: 0.122, lig: {'96': 62}},
-    // 40 - 4F
-    {c: '@', h: 0.694, w: 0.767, ic: 0.096},
-    {c: 'A', h: 0.683, w: 0.743, krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
-    {c: 'B', h: 0.683, w: 0.704, ic: 0.103},
-    {c: 'C', h: 0.683, w: 0.716, ic: 0.145},
-    {c: 'D', h: 0.683, w: 0.755, ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}},
-    {c: 'E', h: 0.683, w: 0.678, ic: 0.12},
-    {c: 'F', h: 0.683, w: 0.653, ic: 0.133, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}},
-    {c: 'G', h: 0.683, w: 0.774, ic: 0.0872},
-    {c: 'H', h: 0.683, w: 0.743, ic: 0.164},
-    {c: 'I', h: 0.683, w: 0.386, ic: 0.158},
-    {c: 'J', h: 0.683, w: 0.525, ic: 0.14},
-    {c: 'K', h: 0.683, w: 0.769, ic: 0.145, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}},
-    {c: 'L', h: 0.683, w: 0.627, krn: {'84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
-    {c: 'M', h: 0.683, w: 0.897, ic: 0.164},
-    {c: 'N', h: 0.683, w: 0.743, ic: 0.164},
-    {c: 'O', h: 0.683, w: 0.767, ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}},
-    // 50 - 5F
-    {c: 'P', h: 0.683, w: 0.678, ic: 0.103, krn: {'65': -0.0767}},
-    {c: 'Q', h: 0.683, d: 0.194, w: 0.767, ic: 0.094},
-    {c: 'R', h: 0.683, w: 0.729, ic: 0.0387, krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
-    {c: 'S', h: 0.683, w: 0.562, ic: 0.12},
-    {c: 'T', h: 0.683, w: 0.716, ic: 0.133, krn: {'121': -0.0767, '101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}},
-    {c: 'U', h: 0.683, w: 0.743, ic: 0.164},
-    {c: 'V', h: 0.683, w: 0.743, ic: 0.184, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}},
-    {c: 'W', h: 0.683, w: 0.999, ic: 0.184, krn: {'65': -0.0767}},
-    {c: 'X', h: 0.683, w: 0.743, ic: 0.158, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}},
-    {c: 'Y', h: 0.683, w: 0.743, ic: 0.194, krn: {'101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}},
-    {c: 'Z', h: 0.683, w: 0.613, ic: 0.145},
-    {c: '[', h: 0.75, d: 0.25, w: 0.307, ic: 0.188},
-    {c: '\\', h: 0.694, w: 0.514, ic: 0.169},
-    {c: ']', h: 0.75, d: 0.25, w: 0.307, ic: 0.105},
-    {c: '^', h: 0.694, w: 0.511, ic: 0.0665},
-    {c: '_', h: 0.668, w: 0.307, ic: 0.118},
-    // 60 - 6F
-    {c: '&#x60;', h: 0.694, w: 0.307, ic: 0.124, lig: {'96': 92}},
-    {c: 'a', h: 0.431, w: 0.511, ic: 0.0767},
-    {c: 'b', h: 0.694, w: 0.46, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
-    {c: 'c', h: 0.431, w: 0.46, ic: 0.0565, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
-    {c: 'd', h: 0.694, w: 0.511, ic: 0.103, krn: {'108': 0.0511}},
-    {c: 'e', h: 0.431, w: 0.46, ic: 0.0751, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
-    {c: 'f', h: 0.694, d: 0.194, w: 0.307, ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 12, '102': 11, '108': 13}},
-    {c: 'g', h: 0.431, d: 0.194, w: 0.46, ic: 0.0885},
-    {c: 'h', h: 0.694, w: 0.511, ic: 0.0767},
-    {c: 'i', h: 0.655, w: 0.307, ic: 0.102},
-    {c: 'j', h: 0.655, d: 0.194, w: 0.307, ic: 0.145},
-    {c: 'k', h: 0.694, w: 0.46, ic: 0.108},
-    {c: 'l', h: 0.694, w: 0.256, ic: 0.103, krn: {'108': 0.0511}},
-    {c: 'm', h: 0.431, w: 0.818, ic: 0.0767},
-    {c: 'n', h: 0.431, w: 0.562, ic: 0.0767, krn: {'39': -0.102}},
-    {c: 'o', h: 0.431, w: 0.511, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
-    // 70 - 7F
-    {c: 'p', h: 0.431, d: 0.194, w: 0.511, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
-    {c: 'q', h: 0.431, d: 0.194, w: 0.46, ic: 0.0885},
-    {c: 'r', h: 0.431, w: 0.422, ic: 0.108, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
-    {c: 's', h: 0.431, w: 0.409, ic: 0.0821},
-    {c: 't', h: 0.615, w: 0.332, ic: 0.0949},
-    {c: 'u', h: 0.431, w: 0.537, ic: 0.0767},
-    {c: 'v', h: 0.431, w: 0.46, ic: 0.108},
-    {c: 'w', h: 0.431, w: 0.664, ic: 0.108, krn: {'108': 0.0511}},
-    {c: 'x', h: 0.431, w: 0.464, ic: 0.12},
-    {c: 'y', h: 0.431, d: 0.194, w: 0.486, ic: 0.0885},
-    {c: 'z', h: 0.431, w: 0.409, ic: 0.123},
-    {c: '&#x7B;', h: 0.431, w: 0.511, ic: 0.0921, lig: {'45': 124}},
-    {c: '&#x7C;', h: 0.431, w: 1.02, ic: 0.0921},
-    {c: '&#x7D;', h: 0.694, w: 0.511, ic: 0.122},
-    {c: '&#x7E;', h: 0.668, w: 0.511, ic: 0.116},
-    {c: '&#xC4;', h: 0.668, w: 0.511, ic: 0.105}
-  ],
-  
-  cmbx10: [
-    // 00 - 0F
-    {c: '&#xA1;', h: 0.686, w: 0.692},
-    {c: '&#xA2;', h: 0.686, w: 0.958},
-    {c: '&#xA3;', h: 0.686, w: 0.894},
-    {c: '&#xA4;', h: 0.686, w: 0.806},
-    {c: '&#xA5;', h: 0.686, w: 0.767},
-    {c: '&#xA6;', h: 0.686, w: 0.9},
-    {c: '&#xA7;', h: 0.686, w: 0.831},
-    {c: '&#xA8;', h: 0.686, w: 0.894},
-    {c: '&#xA9;', h: 0.686, w: 0.831},
-    {c: '&#xAA;', h: 0.686, w: 0.894},
-    {c: '&#xAD;', h: 0.686, w: 0.831},
-    {c: '&#xAE;', h: 0.694, w: 0.671, ic: 0.109, krn: {'39': 0.109, '63': 0.109, '33': 0.109, '41': 0.109, '93': 0.109}, lig: {'105': 14, '108': 15}},
-    {c: '&#xAF;', h: 0.694, w: 0.639},
-    {c: '&#xB0;', h: 0.694, w: 0.639},
-    {c: '&#xB1;', h: 0.694, w: 0.958},
-    {c: '&#xB2;', h: 0.694, w: 0.958},
-    // 10 - 1F
-    {c: '&#xB3;', h: 0.444, w: 0.319},
-    {c: '&#xB4;', h: 0.444, d: 0.194, w: 0.351},
-    {c: '&#xB5;', h: 0.694, w: 0.575},
-    {c: '&#xB6;', h: 0.694, w: 0.575},
-    {c: '&#x2219;', h: 0.632, w: 0.575},
-    {c: '&#xB8;', h: 0.694, w: 0.575},
-    {c: '&#xB9;', h: 0.596, w: 0.575},
-    {c: '&#xBA;', h: 0.694, w: 0.869},
-    {c: '&#xBB;', d: 0.17, w: 0.511},
-    {c: '&#xBC;', h: 0.694, w: 0.597},
-    {c: '&#xBD;', h: 0.444, w: 0.831},
-    {c: '&#xBE;', h: 0.444, w: 0.894},
-    {c: '&#xBF;', h: 0.542, d: 0.0972, w: 0.575},
-    {c: '&#xC0;', h: 0.686, w: 1.04},
-    {c: '&#xC1;', h: 0.686, w: 1.17},
-    {c: '&#xC2;', h: 0.735, d: 0.0486, w: 0.894},
-    // 20 - 2F
-    {c: '&#xC3;', h: 0.444, w: 0.319, krn: {'108': -0.319, '76': -0.378}},
-    {c: '!', h: 0.694, w: 0.35, lig: {'96': 60}},
-    {c: '"', h: 0.694, w: 0.603},
-    {c: '#', h: 0.694, d: 0.194, w: 0.958},
-    {c: '$', h: 0.75, d: 0.0556, w: 0.575},
-    {c: '%', h: 0.75, d: 0.0556, w: 0.958},
-    {c: '&#x26;', h: 0.694, w: 0.894},
-    {c: '\'', h: 0.694, w: 0.319, krn: {'63': 0.128, '33': 0.128}, lig: {'39': 34}},
-    {c: '(', h: 0.75, d: 0.25, w: 0.447},
-    {c: ')', h: 0.75, d: 0.25, w: 0.447},
-    {c: '*', h: 0.75, w: 0.575},
-    {c: '+', h: 0.633, d: 0.133, w: 0.894},
-    {c: ',', h: 0.156, d: 0.194, w: 0.319},
-    {c: '-', h: 0.444, w: 0.383, lig: {'45': 123}},
-    {c: '.', h: 0.156, w: 0.319},
-    {c: '/', h: 0.75, d: 0.25, w: 0.575},
-    // 30 - 3F
-    {c: '0', h: 0.644, w: 0.575},
-    {c: '1', h: 0.644, w: 0.575},
-    {c: '2', h: 0.644, w: 0.575},
-    {c: '3', h: 0.644, w: 0.575},
-    {c: '4', h: 0.644, w: 0.575},
-    {c: '5', h: 0.644, w: 0.575},
-    {c: '6', h: 0.644, w: 0.575},
-    {c: '7', h: 0.644, w: 0.575},
-    {c: '8', h: 0.644, w: 0.575},
-    {c: '9', h: 0.644, w: 0.575},
-    {c: ':', h: 0.444, w: 0.319},
-    {c: ';', h: 0.444, d: 0.194, w: 0.319},
-    {c: '&#x3C;', h: 0.5, d: 0.194, w: 0.35},
-    {c: '=', h: 0.391, d: -0.109, w: 0.894},
-    {c: '&#x3E;', h: 0.5, d: 0.194, w: 0.543},
-    {c: '?', h: 0.694, w: 0.543, lig: {'96': 62}},
-    // 40 - 4F
-    {c: '@', h: 0.694, w: 0.894},
-    {c: 'A', h: 0.686, w: 0.869, krn: {'116': -0.0319, '67': -0.0319, '79': -0.0319, '71': -0.0319, '85': -0.0319, '81': -0.0319, '84': -0.0958, '89': -0.0958, '86': -0.128, '87': -0.128}},
-    {c: 'B', h: 0.686, w: 0.818},
-    {c: 'C', h: 0.686, w: 0.831},
-    {c: 'D', h: 0.686, w: 0.882, krn: {'88': -0.0319, '87': -0.0319, '65': -0.0319, '86': -0.0319, '89': -0.0319}},
-    {c: 'E', h: 0.686, w: 0.756},
-    {c: 'F', h: 0.686, w: 0.724, krn: {'111': -0.0958, '101': -0.0958, '117': -0.0958, '114': -0.0958, '97': -0.0958, '65': -0.128, '79': -0.0319, '67': -0.0319, '71': -0.0319, '81': -0.0319}},
-    {c: 'G', h: 0.686, w: 0.904},
-    {c: 'H', h: 0.686, w: 0.9},
-    {c: 'I', h: 0.686, w: 0.436, krn: {'73': 0.0319}},
-    {c: 'J', h: 0.686, w: 0.594},
-    {c: 'K', h: 0.686, w: 0.901, krn: {'79': -0.0319, '67': -0.0319, '71': -0.0319, '81': -0.0319}},
-    {c: 'L', h: 0.686, w: 0.692, krn: {'84': -0.0958, '89': -0.0958, '86': -0.128, '87': -0.128}},
-    {c: 'M', h: 0.686, w: 1.09},
-    {c: 'N', h: 0.686, w: 0.9},
-    {c: 'O', h: 0.686, w: 0.864, krn: {'88': -0.0319, '87': -0.0319, '65': -0.0319, '86': -0.0319, '89': -0.0319}},
-    // 50 - 5F
-    {c: 'P', h: 0.686, w: 0.786, krn: {'65': -0.0958, '111': -0.0319, '101': -0.0319, '97': -0.0319, '46': -0.0958, '44': -0.0958}},
-    {c: 'Q', h: 0.686, d: 0.194, w: 0.864},
-    {c: 'R', h: 0.686, w: 0.862, krn: {'116': -0.0319, '67': -0.0319, '79': -0.0319, '71': -0.0319, '85': -0.0319, '81': -0.0319, '84': -0.0958, '89': -0.0958, '86': -0.128, '87': -0.128}},
-    {c: 'S', h: 0.686, w: 0.639},
-    {c: 'T', h: 0.686, w: 0.8, krn: {'121': -0.0319, '101': -0.0958, '111': -0.0958, '114': -0.0958, '97': -0.0958, '65': -0.0958, '117': -0.0958}},
-    {c: 'U', h: 0.686, w: 0.885},
-    {c: 'V', h: 0.686, w: 0.869, ic: 0.016, krn: {'111': -0.0958, '101': -0.0958, '117': -0.0958, '114': -0.0958, '97': -0.0958, '65': -0.128, '79': -0.0319, '67': -0.0319, '71': -0.0319, '81': -0.0319}},
-    {c: 'W', h: 0.686, w: 1.19, ic: 0.016, krn: {'111': -0.0958, '101': -0.0958, '117': -0.0958, '114': -0.0958, '97': -0.0958, '65': -0.128, '79': -0.0319, '67': -0.0319, '71': -0.0319, '81': -0.0319}},
-    {c: 'X', h: 0.686, w: 0.869, krn: {'79': -0.0319, '67': -0.0319, '71': -0.0319, '81': -0.0319}},
-    {c: 'Y', h: 0.686, w: 0.869, ic: 0.0287, krn: {'101': -0.0958, '111': -0.0958, '114': -0.0958, '97': -0.0958, '65': -0.0958, '117': -0.0958}},
-    {c: 'Z', h: 0.686, w: 0.703},
-    {c: '[', h: 0.75, d: 0.25, w: 0.319},
-    {c: '\\', h: 0.694, w: 0.603},
-    {c: ']', h: 0.75, d: 0.25, w: 0.319},
-    {c: '^', h: 0.694, w: 0.575},
-    {c: '_', h: 0.694, w: 0.319},
-    // 60 - 6F
-    {c: '&#x60;', h: 0.694, w: 0.319, lig: {'96': 92}},
-    {c: 'a', h: 0.444, w: 0.559, krn: {'118': -0.0319, '106': 0.0639, '121': -0.0319, '119': -0.0319}},
-    {c: 'b', h: 0.694, w: 0.639, krn: {'101': 0.0319, '111': 0.0319, '120': -0.0319, '100': 0.0319, '99': 0.0319, '113': 0.0319, '118': -0.0319, '106': 0.0639, '121': -0.0319, '119': -0.0319}},
-    {c: 'c', h: 0.444, w: 0.511, krn: {'104': -0.0319, '107': -0.0319}},
-    {c: 'd', h: 0.694, w: 0.639},
-    {c: 'e', h: 0.444, w: 0.527},
-    {c: 'f', h: 0.694, w: 0.351, ic: 0.109, krn: {'39': 0.109, '63': 0.109, '33': 0.109, '41': 0.109, '93': 0.109}, lig: {'105': 12, '102': 11, '108': 13}},
-    {c: 'g', h: 0.444, d: 0.194, w: 0.575, ic: 0.016, krn: {'106': 0.0319}},
-    {c: 'h', h: 0.694, w: 0.639, krn: {'116': -0.0319, '117': -0.0319, '98': -0.0319, '121': -0.0319, '118': -0.0319, '119': -0.0319}},
-    {c: 'i', h: 0.694, w: 0.319},
-    {c: 'j', h: 0.694, d: 0.194, w: 0.351},
-    {c: 'k', h: 0.694, w: 0.607, krn: {'97': -0.0639, '101': -0.0319, '97': -0.0319, '111': -0.0319, '99': -0.0319}},
-    {c: 'l', h: 0.694, w: 0.319},
-    {c: 'm', h: 0.444, w: 0.958, krn: {'116': -0.0319, '117': -0.0319, '98': -0.0319, '121': -0.0319, '118': -0.0319, '119': -0.0319}},
-    {c: 'n', h: 0.444, w: 0.639, krn: {'116': -0.0319, '117': -0.0319, '98': -0.0319, '121': -0.0319, '118': -0.0319, '119': -0.0319}},
-    {c: 'o', h: 0.444, w: 0.575, krn: {'101': 0.0319, '111': 0.0319, '120': -0.0319, '100': 0.0319, '99': 0.0319, '113': 0.0319, '118': -0.0319, '106': 0.0639, '121': -0.0319, '119': -0.0319}},
-    // 70 - 7F
-    {c: 'p', h: 0.444, d: 0.194, w: 0.639, krn: {'101': 0.0319, '111': 0.0319, '120': -0.0319, '100': 0.0319, '99': 0.0319, '113': 0.0319, '118': -0.0319, '106': 0.0639, '121': -0.0319, '119': -0.0319}},
-    {c: 'q', h: 0.444, d: 0.194, w: 0.607},
-    {c: 'r', h: 0.444, w: 0.474},
-    {c: 's', h: 0.444, w: 0.454},
-    {c: 't', h: 0.635, w: 0.447, krn: {'121': -0.0319, '119': -0.0319}},
-    {c: 'u', h: 0.444, w: 0.639, krn: {'119': -0.0319}},
-    {c: 'v', h: 0.444, w: 0.607, ic: 0.016, krn: {'97': -0.0639, '101': -0.0319, '97': -0.0319, '111': -0.0319, '99': -0.0319}},
-    {c: 'w', h: 0.444, w: 0.831, ic: 0.016, krn: {'101': -0.0319, '97': -0.0319, '111': -0.0319, '99': -0.0319}},
-    {c: 'x', h: 0.444, w: 0.607},
-    {c: 'y', h: 0.444, d: 0.194, w: 0.607, ic: 0.016, krn: {'111': -0.0319, '101': -0.0319, '97': -0.0319, '46': -0.0958, '44': -0.0958}},
-    {c: 'z', h: 0.444, w: 0.511},
-    {c: '&#x7B;', h: 0.444, w: 0.575, ic: 0.0319, lig: {'45': 124}},
-    {c: '&#x7C;', h: 0.444, w: 1.15, ic: 0.0319},
-    {c: '&#x7D;', h: 0.694, w: 0.575},
-    {c: '&#x7E;', h: 0.694, w: 0.575},
-    {c: '&#xC4;', h: 0.694, w: 0.575}
-  ]
-};
-
-/***************************************************************************/
-
-/*
- *  Implement image-based fonts for fallback method
- */
-jsMath.Img = {
-  
-  // font sizes available
-  fonts: [50, 60, 70, 85, 100, 120, 144, 173, 207, 249, 298, 358, 430],
-    
-  // em widths for the various font size directories
-  w: {'50': 6.9, '60': 8.3, '70': 9.7, '85': 11.8, '100': 13.9,
-      '120': 16.7, '144': 20.0, '173': 24.0, '207': 28.8, '249': 34.6,
-      '298': 41.4, '358': 49.8, '430': 59.8},
-        
-  // index of best font size in the fonts list
-  best: 4,
-    
-  // fonts to update (see UpdateFonts below)
-  update: {},
-    
-  // factor by which to shrink images (for better printing)
-  factor: 1,
-  
-  // image fonts are loaded
-  loaded: 0,
-  
-  // add characters to be drawn using images
-  SetFont: function (change) {
-    for (var font in change) {
-      if (!this.update[font]) {this.update[font] = []}
-      this.update[font] = this.update[font].concat(change[font]);
-    }
-  },
-
-  /*
-   *  Called by the exta-font definition files to add an image font
-   *  into the mix
-   */
-  AddFont: function (size,def) {
-    if (!jsMath.Img[size]) {jsMath.Img[size] = {}};
-    jsMath.Add(jsMath.Img[size],def);
-  },
-    
-  /*
-   *  Update font(s) to use image data rather than native fonts
-   *  It looks in the jsMath.Img.update array to find the names
-   *  of the fonts to udpate, and the arrays of character codes
-   *  to set (or 'all' to change every character);
-   */
-  UpdateFonts: function () {
-    var change = this.update; if (!this.loaded) return;
-    var best = this[jsMath.Img.fonts[this.best]];
-    for (var font in change) {
-      for (var i = 0; i < change[font].length; i++) {
-        var c = change[font][i];
-        if (c == 'all') {for (c in jsMath.TeX[font]) {jsMath.TeX[font][c].img = {}}}
-          else {jsMath.TeX[font][c].img = {}}
-      }
-    }
-    this.update = {};
-  },
-  
-  /*
-   *  Find the font size that best fits our current font
-   *  (this is the directory name for the img files used
-   *  in some fallback modes).
-   */
-  BestSize: function () {
-    var w = jsMath.em * this.factor;
-    var m = this.w[this.fonts[0]];
-    for (var i = 1; i < this.fonts.length; i++) {
-      if (w < (this.w[this.fonts[i]] + 2*m) / 3) {return i-1}
-      m = this.w[this.fonts[i]];
-    }
-    return i-1;
-  },
-
-  /*
-   *  Get the scaling factor for the image fonts
-   */
-  Scale: function () {
-    if (!this.loaded) return;
-    this.best = this.BestSize();
-    this.em = jsMath.Img.w[this.fonts[this.best]];
-    this.scale = (jsMath.em/this.em);
-    if (Math.abs(this.scale - 1) < .12) {this.scale = 1}
-  },
-
-  /*
-   *  Get URL to directory for given font and size, based on the
-   *  user's alpha/plain setting
-   */
-  URL: function (name,size,C) {
-    var type = (jsMath.Controls.cookie.alpha) ? '/alpha/': '/plain/';
-    if (C == null) {C = "def.js"} else {C = 'char'+C+'.png'}
-    if (size != "") {size += '/'}
-    return this.root+name+type+size+C;
-  },
-
-  /*
-   *  Laod the data for an image font
-   */
-  LoadFont: function (name) {
-    if (jsMath.Controls.cookie.print) {
-      jsMath.Controls.cookie.print = 0;
-      var button = jsMath.Element("jsMath");
-      if (button) {button.style.display = "none"}
-      this.factor *= 3;
-      if (window.location.protocol != 'file:') {jsMath.Controls.SetCookie(0)}
-      if (jsMath.Browser.alphaPrintBug) {jsMath.Controls.cookie.alpha = 0}
-    }
-    document.writeln('<SCRIPT SRC="'+this.URL(name,"")+'"></SCRIPT>');
-    this.loaded = 1;
-  }
-  
-};
-
-/***************************************************************************/
-
-/*
- *  jsMath.HTML handles creation of most of the HTML needed for
- *  presenting mathematics in HTML pages.
- */
-
-jsMath.HTML = {
-  
-  /*
-   *  produce a string version of a measurement in ems,
-   *  showing only a limited number of digits, and 
-   *  using 0 when the value is near zero.
-   */
-  Em: function (m) {
-    var n = 5; if (m < 0) {n++}
-    if (Math.abs(m) < .000001) {m = 0}
-    var s = String(m); s = s.replace(/(\.\d\d\d).+/,'$1');
-    return s+'em'
-  },
-
-  /*
-   *  Create a horizontal space of width w
-   */
-  Spacer: function (w) {
-    if (w == 0) {return ''};
-    return jsMath.Browser.msieSpaceFix
-      + '<SPAN STYLE="margin-left: '
-      +    this.Em(w-jsMath.Browser.spaceWidth)+'">'
-      + jsMath.Browser.hiddenSpace + '</SPAN>';
-  },
-
-  /*
-   *  Create a colored frame (for debugging use)
-   */
-  Frame: function (x,y,w,h,c,pos) {
-
-    h -= 2/jsMath.em; // use 2 pixels to compensate for border size
-    w -= 2/jsMath.em;
-    y -= 1/jsMath.em;
-    if (!c) {c = 'black'};
-    if (pos) {pos = 'absolute;'} else
-             {pos = 'relative; margin-right: '+this.Em(-(w+2/jsMath.em))+'; '}
-    return '<IMG SRC="'+jsMath.blank+'" STYLE="position:' + pos
-             + 'vertical-align: '+this.Em(y)+'; left: '+this.Em(x)+'; '
-             + 'width:' +this.Em(w*jsMath.Browser.imgScale)+'; '
-             + 'height:'+this.Em(h*jsMath.Browser.imgScale)+'; '
-             + 'border: 1px solid '+c+';">';
-  },
-
-  /*
-   *  Create a rule line for fractions, etc.
-   *  Height is converted to pixels (with a minimum of 1), so that
-   *    the line will not disappear at small font sizes.  This means that
-   *    the thickness will not change if you change the font size, or
-   *    may not be correct within a header or other enlarged text.
-   */
-  Rule: function (w,h) {
-    if (h == null) {h = jsMath.TeX.default_rule_thickness}
-    if (w == 0 || h == 0) return;  // should make an invisible box?
-    w *= jsMath.Browser.imgScale;
-    h = Math.round(h*jsMath.em*jsMath.Browser.imgScale+.25);
-    if (h < 1) {h = 1};
-    return '<IMG SRC="'+jsMath.blank+'" HSPACE="0" VSPACE="0" '
-              + 'STYLE="width:'+this.Em(w)+'; height:1px; '
-              + 'vertical-align:-1px; '
-              + 'border:0px none; border-top:'+h+'px solid">';
-  },
-  
-  /*
-   *  Add a <SPAN> tag to activate a specific CSS class
-   */
-  Class: function (tclass,html) {
-    return '<SPAN CLASS="'+tclass+'">'+html+'</SPAN>';
-  },
-  
-  /*
-   *  Use a <SPAN> to place some HTML at a specific position.
-   *  (This can be replaced by the ones below to overcome
-   *   some browser-specific bugs.)
-   */
-  Place: function (html,x,y) {
-    if (Math.abs(x) < .0001) {x = 0}
-    if (Math.abs(y) < .0001) {y = 0}
-    if (x || y) {
-      var span = '<SPAN STYLE="position: relative;';
-      if (x) {span += ' margin-left:'+this.Em(x)+';'}
-      if (y) {span += ' top:'+this.Em(-y)+';'}
-      html = span + '">' + html + '</SPAN>';
-    }
-    return html;
-  },
-  
-  /*
-   *  For MSIE on Windows, backspacing must be done in a separate
-   *  <SPAN>, otherwise the contents will be clipped.  Netscape
-   *  also doesn't combine vertical and horizontal spacing well.
-   *  Here the x and y positioning are done in separate <SPAN> tags
-   */
-  PlaceSeparateSkips: function (html,x,y) {
-    if (Math.abs(x) < .0001) {x = 0}
-    if (Math.abs(y) < .0001) {y = 0}
-    if (y) {html = '<SPAN STYLE="position: relative; top:'+this.Em(-y)+';'
-                       + '">' + html + '</SPAN>'}
-    if (x) {html = jsMath.Browser.msieSpaceFix 
-                       + '<SPAN STYLE="margin-left:'
-                       +    this.Em(x-jsMath.Browser.spaceWidth)+';">'
-                       +  jsMath.Browser.hiddenSpace + '</SPAN>' + html}
-    return html;
-  },
-  
-  /*
-   *  Place a SPAN with absolute coordinates
-   */
-  PlaceAbsolute: function (html,x,y) {
-    if (Math.abs(x) < .0001) {x = 0}
-    if (Math.abs(y) < .0001) {y = 0}
-    html = '<SPAN STYLE="position: absolute; left:'+this.Em(x)+'; '
-              + 'top:'+this.Em(y)+';">' + html + '&nbsp;</SPAN>';
-              //  space normalizes line height
-    return html;
-  },
-
-  Absolute: function(html,w,h,d,y,H) {
-    var align = "";
-    if (d && d != "none") {align = ' vertical-align: '+jsMath.HTML.Em(-d)+';'}
-    if (y != "none") {
-      if (Math.abs(y) < .0001) {y = 0}
-      html = '<SPAN STYLE="position: absolute; '
-               + 'top:'+jsMath.HTML.Em(y)+'; left: 0em;">'
-               + html + '&nbsp;' // space normalizes line height in script styles
-             + '</SPAN>';
-    }
-    html += '<IMG SRC="'+jsMath.blank+'" STYLE="'
-              + 'width:' +jsMath.HTML.Em(w*jsMath.Browser.imgScale)+'; '
-              + 'height:'+jsMath.HTML.Em(h*jsMath.Browser.imgScale)+';'+align+'">';
-    if (jsMath.Browser.msieAbsoluteBug) {           // for MSIE (Mac)
-      html = '<SPAN STYLE="position: relative;">' + html + '</SPAN>';
-    }
-    html =   '<SPAN STYLE="position: relative;'
-           +     ' width: '+jsMath.HTML.Em(w)+';'   // for MSIE
-           +     ' height: '+jsMath.HTML.Em(H)+';'  // for MSIE
-           +     jsMath.Browser.msieInlineBlockFix  // for MSIE
-           +     '">'
-           +   html
-           + '</SPAN>';
-    return html;
-  }
-
-};
-
-
-/***************************************************************************/
-
-/*
- *  jsMath.Box handles TeX's math boxes and jsMath's equivalent of hboxes.
- */
-
-jsMath.Box = function (format,text,w,h,d) {
-  if (d == null) {d = jsMath.d}
-  this.type = 'typeset';
-  this.w = w; this.h = h; this.d = d; this.bh = h; this.bd = d;
-  this.x = 0; this.y = 0;
-  this.html = text; this.format = format;
-};
-
-
-jsMath.Add(jsMath.Box,{
-
-  /*
-   *  An empty box
-   */
-  Null: new jsMath.Box('null','',0,0,0),
-
-  /*
-   *  A box containing only text whose class and style haven't been added
-   *  yet (so that we can combine ones with the same styles).  It gets
-   *  the text dimensions, if needed.  (In general, this has been
-   *  replaced by TeX() below, but is still used in fallback mode.)
-   */
-  Text: function (text,tclass,style,size,a,d) {
-    var html = jsMath.Typeset.AddClass(tclass,text);
-        html = jsMath.Typeset.AddStyle(style,size,html);
-    var BB = jsMath.EmBoxFor(html); var TeX = jsMath.Typeset.TeX(style,size);
-    var bd = ((tclass == 'cmsy10' || tclass == 'cmex10')? BB.h-TeX.h: TeX.d*BB.h/TeX.hd);
-    var box = new jsMath.Box('text',text,BB.w,BB.h-bd,bd);
-    box.style = style; box.size = size; box.tclass = tclass;
-    if (d != null) {if (d != 1) {box.d = d}} else {box.d = 0}
-    if (a == null || a == 1) {box.h = .9*TeX.M_height}
-      else {box.h = 1.1*TeX.x_height + 1*a}; // sometimes a is a string?
-    return box;
-  },
-
-  /*
-   *  Produce a box containing a given TeX character from a given font.
-   *  The box is a text box (like the ones above), so that characters from
-   *  the same font can be combined.
-   */
-  TeX: function (C,font,style,size) {
-    var c = jsMath.TeX[font][C];
-    if (c.d == null) {c.d = 0}; if (c.h == null) {c.h = 0}
-    if (c.img != null && c.c != '') this.TeXIMG(font,C,jsMath.Typeset.StyleSize(style,size));
-    var scale = jsMath.Typeset.TeX(style,size).scale;
-    var h = c.h + jsMath.TeX[font].dh
-    var box = new jsMath.Box('text',c.c,c.w*scale,h*scale,c.d*scale);
-    box.style = style; box.size = size;
-    if (c.tclass) {
-      box.tclass = c.tclass;
-      box.bh = scale*jsMath.h;
-      box.bd = scale*jsMath.d;
-    } else {
-      box.tclass = font;
-      box.bh = scale*jsMath.TeX[font].h;
-      box.bd = scale*jsMath.TeX[font].d;
-      if (jsMath.Browser.msieFontBug) {
-        // hack to avoid Font changing back to the default
-        // font when a unicode reference is not followed
-        // by a letter or number
-        box.html += '<SPAN STYLE="display: none">x</SPAN>'
-      }
-    }
-    if (c.img != null) {
-      box.bh = c.img.bh; box.bd = c.img.bd;
-      box.tclass = "normal";
-    }
-    return box;
-  },
-  
-  /*
-   *  Set the character's string to the appropriate image file
-   */
-  TeXIMG: function (font,C,size) {
-    var c = jsMath.TeX[font][C];
-    if (c.img.size != null && c.img.size == size &&
-        c.img.best != null && c.img.best == jsMath.Img.best) return;
-    var mustScale = (jsMath.Img.scale != 1);
-    var id = jsMath.Img.best + size - 4;
-    if (id < 0) {id = 0; mustScale = 1} else
-    if (id >= jsMath.Img.fonts.length) {id = jsMath.Img.fonts.length-1; mustScale = 1}
-    var imgFont = jsMath.Img[jsMath.Img.fonts[id]];
-    var img = imgFont[font][C];
-    var scale = 1/jsMath.Img.w[jsMath.Img.fonts[id]];
-    if (id != jsMath.Img.best + size - 4) {
-      if (c.w != null) {scale = c.w/img[0]} else {
-        scale *= jsMath.Img.fonts[size]/jsMath.Img.fonts[4]
-              *  jsMath.Img.fonts[jsMath.Img.best]/jsMath.Img.fonts[id];
-      }
-    }
-    var w = img[0]*scale; var h = img[1]*scale; var d = -img[2]*scale; var v;
-    var wadjust = (c.w == null || Math.abs(c.w-w) < .01)? "" : " margin-right:"+jsMath.HTML.Em(c.w-w)+';';
-    var resize = ""; C = this.HexCode(C);
-    if (!mustScale && !jsMath.Controls.cookie.scaleImg) {
-      if (2*w < h || (jsMath.Browser.msieAlphaBug && jsMath.Controls.cookie.alpha))
-         {resize = "height:"+(img[1]*jsMath.Browser.imgScale)+'px;'}
-      resize += " width:"+(img[0]*jsMath.Browser.imgScale)+'px;'
-      v = -img[2]+'px';
-    } else {
-      if (2*w < h || (jsMath.Browser.msieAlphaBug && jsMath.Controls.cookie.alpha))
-         {resize = "height:"+jsMath.HTML.Em(h*jsMath.Browser.imgScale)+';'}
-      resize += " width:"+jsMath.HTML.Em(w*jsMath.Browser.imgScale)+';'
-      v = jsMath.HTML.Em(d);
-    }
-    var vadjust = (Math.abs(d) < .01 && !jsMath.Browser.valignBug)?
-                         "": " vertical-align:"+v+';';
-    var URL = jsMath.Img.URL(font,jsMath.Img.fonts[id],C);
-    if (jsMath.Browser.msieAlphaBug && jsMath.Controls.cookie.alpha) {
-      c.c = '<IMG SRC="'+jsMath.blank+'" '
-               + 'STYLE="'+jsMath.Browser.msieCenterBugFix
-               + resize + vadjust + wadjust
-               + ' filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' + "'"
-               + URL + "', sizingMethod='scale'" + ');">';
-    } else {
-      c.c = '<IMG SRC="'+URL+'" STYLE="'+jsMath.Browser.msieCenterBugFix
-                  + resize + vadjust + wadjust + '">';
-    }
-    c.tclass = "normal";
-    c.img.bh = h+d; c.img.bd = -d;
-    c.img.size = size; c.img.best = jsMath.Img.best;
-  },
-  
-  /*
-   *  Get a two-character hex code (some browsers don't know toString(16))
-   */
-  HexCode: function (C) {
-    var codes = '0123456789ABCDEF';
-    var h = Math.floor(C/16); var l = C - 16*h;
-    return codes.charAt(h)+codes.charAt(l);
-  },
-
-  /*
-   *  A box containing a spacer of a specific width
-   */
-  Space: function (w) {
-    return new jsMath.Box('html',jsMath.HTML.Spacer(w),w,0,0);
-  },
-
-  /*
-   *  A box containing a horizontal rule
-   */
-  Rule: function (w,h) {
-    if (h == null) {h = jsMath.TeX.default_rule_thickness}
-    html = jsMath.HTML.Rule(w,h);
-    return new jsMath.Box('html',html,w,h,0);
-  },
-
-  /*
-   *  Get a character from a TeX font, and make sure that it has
-   *  its metrics specified.
-   */
-  GetChar: function (code,font) {
-    var c = jsMath.TeX[font][code];
-    if (c.img != null) {this.TeXIMG(font,code,4)}
-    if (c.tclass == null) {c.tclass = font}
-    if (!c.computedW) {
-      c.w = jsMath.EmBoxFor(jsMath.Typeset.AddClass(c.tclass,c.c)).w;
-      if (c.h == null) {c.h = jsMath.defaultH}; if (c.d == null) {c.d = 0}
-      c.computedW = 1;
-    }
-    return c;
-  },
-  
-  /*
-   *  Locate the TeX delimiter character that matches a given height.
-   *  Return the character, font, style and actual height used.
-   */
-  DelimBestFit: function (H,c,font,style) {
-    if (c == 0 && font == 0) return;
-    var C; var h; font = jsMath.TeX.fam[font];
-    var isSS = (style.charAt(1) == 'S');
-    var isS  = (style.charAt(0) == 'S');
-    while (c != null) {
-      C = jsMath.TeX[font][c];
-      if (C.h == null) {C.h = jsMath.defaultH}; if (C.d == null) {C.d = 0}
-      h = C.h+C.d;
-      if (C.delim) {return [c,font,'',H]}
-      if (isSS && .5*h >= H) {return [c,font,'SS',.5*h]}
-      if (isS  && .7*h >= H) {return [c,font,'S',.7*h]}
-      if (h >= H || C.n == null) {return [c,font,'T',h]}
-      c = C.n
-    }
-  },
-  
-  /*
-   *  Create the HTML needed for a stretchable delimiter of a given height,
-   *  either centered or not.  This version uses relative placement (i.e.,
-   *  backspaces, not line-breaks).  This works with more browsers, but
-   *  if the font size changes, the backspacing may not be right, so the
-   *  delimiters may become jagged.
-   */
-  DelimExtendRelative: function (H,c,font,a,nocenter) {
-    var C = jsMath.TeX[font][c];
-    var top = this.GetChar(C.delim.top? C.delim.top: C.delim.rep,font);
-    var rep = this.GetChar(C.delim.rep,font);
-    var bot = this.GetChar(C.delim.bot? C.delim.bot: C.delim.rep,font);
-    var ext = jsMath.Typeset.AddClass(rep.tclass,rep.c);
-    var w = rep.w; var h = rep.h+rep.d
-    var y; var dx;
-    if (C.delim.mid) {// braces
-      var mid = this.GetChar(C.delim.mid,font);
-      var n = Math.ceil((H-(top.h+top.d)-(mid.h+mid.d)-(bot.h+bot.d))/(2*(rep.h+rep.d)));
-      H = 2*n*(rep.h+rep.d) + (top.h+top.d) + (mid.h+mid.d) + (bot.h+bot.d);
-      if (nocenter) {y = 0} else {y = H/2+a}; var Y = y;
-      var html = jsMath.HTML.Place(jsMath.Typeset.AddClass(top.tclass,top.c),0,y-top.h)
-               + jsMath.HTML.Place(jsMath.Typeset.AddClass(bot.tclass,bot.c),-(top.w+bot.w)/2,y-(H-bot.d))
-               + jsMath.HTML.Place(jsMath.Typeset.AddClass(mid.tclass,mid.c),-(bot.w+mid.w)/2,y-(H+mid.h-mid.d)/2);
-      dx = (w-mid.w)/2; if (Math.abs(dx) < .0001) {dx = 0}
-      if (dx) {html += jsMath.HTML.Spacer(dx)}
-      y -= top.h+top.d + rep.h;
-      for (var i = 0; i < n; i++) {html += jsMath.HTML.Place(ext,-w,y-i*h)}
-      y -= H/2 - rep.h/2;
-      for (var i = 0; i < n; i++) {html += jsMath.HTML.Place(ext,-w,y-i*h)}
-    } else {// everything else
-      var n = Math.ceil((H - (top.h+top.d) - (bot.h+bot.d))/(rep.h+rep.d));
-      // make sure two-headed arrows have an extender
-      if (top.h+top.d < .9*(rep.h+rep.d)) {n = Math.max(1,n)}
-      H = n*(rep.h+rep.d) + (top.h+top.d) + (bot.h+bot.d);
-      if (nocenter) {y = 0} else {y = H/2+a}; var Y = y;
-      var html = jsMath.HTML.Place(jsMath.Typeset.AddClass(top.tclass,top.c),0,y-top.h)
-      dx = (w-top.w)/2; if (Math.abs(dx) < .0001) {dx = 0}
-      if (dx) {html += jsMath.HTML.Spacer(dx)}
-      y -= top.h+top.d + rep.h;
-      for (var i = 0; i < n; i++) {html += jsMath.HTML.Place(ext,-w,y-i*h)}
-      html += jsMath.HTML.Place(jsMath.Typeset.AddClass(bot.tclass,bot.c),-(w+bot.w)/2,Y-(H-bot.d));
-    }
-    if (nocenter) {h = top.h} else {h = H/2+a}
-    var box = new jsMath.Box('html',html,rep.w,h,H-h);
-    box.bh = jsMath.TeX[font].h; box.bd = jsMath.TeX[font].d;
-    return box;
-  },
-
-  /*
-   *  Create the HTML needed for a stretchable delimiter of a given height,
-   *  either centered or not.  This version uses absolute placement (i.e.,
-   *  line-breaks, not backspacing).  This gives more reliable results,
-   *  but doesn't work with all browsers.
-   */
-  DelimExtendAbsolute: function (H,c,font,a,nocenter) {
-    var Font = jsMath.TeX[font];
-    var C = Font[c];
-    var top = this.GetChar(C.delim.top? C.delim.top: C.delim.rep,font);
-    var rep = this.GetChar(C.delim.rep,font);
-    var bot = this.GetChar(C.delim.bot? C.delim.bot: C.delim.rep,font);
-    
-    if (C.delim.mid) {// braces
-      var mid = this.GetChar(C.delim.mid,font);
-      var n = Math.ceil((H-(top.h+top.d)-(mid.h+mid.d-.05)-(bot.h+bot.d-.05))/(2*(rep.h+rep.d-.05)));
-      H = 2*n*(rep.h+rep.d-.05) + (top.h+top.d) + (mid.h+mid.d-.05) + (bot.h+bot.d-.05);
-      
-      html = jsMath.HTML.PlaceAbsolute(jsMath.Typeset.AddClass(top.tclass,top.c),0,0);
-      var h = rep.h+rep.d - .05; var y = top.d-.05 + rep.h;
-      var ext = jsMath.Typeset.AddClass(font,rep.c)
-      for (var i = 0; i < n; i++) {html += jsMath.HTML.PlaceAbsolute(ext,0,y+i*h)}
-      html += jsMath.HTML.PlaceAbsolute(jsMath.Typeset.AddClass(mid.tclass,mid.c),0,y+n*h-rep.h+mid.h);
-      y += n*h + mid.h+mid.d - .05;
-      for (var i = 0; i < n; i++) {html += jsMath.HTML.PlaceAbsolute(ext,0,y+i*h)}
-      html += jsMath.HTML.PlaceAbsolute(jsMath.Typeset.AddClass(bot.tclass,bot.c),0,y+n*h-rep.h+bot.h);
-    } else {// all others
-      var n = Math.ceil((H - (top.h+top.d) - (bot.h+bot.d-.05))/(rep.h+rep.d-.05));
-      H = n*(rep.h+rep.d-.05) + (top.h+top.d) + (bot.h+bot.d-.05);
-
-      html = jsMath.HTML.PlaceAbsolute(jsMath.Typeset.AddClass(top.tclass,top.c),0,0);
-      var h = rep.h+rep.d-.05; var y = top.d-.05 + rep.h;
-      var ext = jsMath.Typeset.AddClass(rep.tclass,rep.c);
-      for (var i = 0; i < n; i++) {html += jsMath.HTML.PlaceAbsolute(ext,0,y+i*h)}
-      html += jsMath.HTML.PlaceAbsolute(jsMath.Typeset.AddClass(bot.tclass,bot.c),0,y+n*h-rep.h+bot.h);
-    }
-    
-    var w = top.w;
-    if (nocenter) {h = top.h; y = 0} else {h = H/2 + a; y = h - top.h}
-    html = jsMath.HTML.Absolute(html,w,Font.h,"none",-y,top.h);
-    var box = new jsMath.Box('html',html,rep.w,h,H-h);
-    box.bh = jsMath.TeX[font].h; box.bd = jsMath.TeX[font].d;
-    return box;
-  },
-  
-  /*
-   *  Get the HTML for a given delimiter of a given height.
-   *  It will return either a single character, if one exists, or the
-   *  more complex HTML needed for a stretchable delimiter.
-   */
-  Delimiter: function (H,delim,style,nocenter) {
-    var size = 4;  //### pass this?
-    var TeX = jsMath.Typeset.TeX(style,size);
-    if (!delim) {return this.Space(TeX.nulldelimiterspace)}
-    var CFSH = this.DelimBestFit(H,delim[2],delim[1],style);
-    if (CFSH == null || CFSH[3] < H) 
-      {CFSH = this.DelimBestFit(H,delim[4],delim[3],style)}
-    if (CFSH == null) {return this.Space(TeX.nulldelimiterspace)}
-    if (CFSH[2] == '')
-      {return this.DelimExtend(H,CFSH[0],CFSH[1],TeX.axis_height,nocenter)}
-    box = jsMath.Box.TeX(CFSH[0],CFSH[1],CFSH[2],size).Styled();
-    if (nocenter) {box.y = -jsMath.TeX[CFSH[1]].dh*TeX.scale}
-      else {box.y = -((box.h+box.d)/2 - box.d - TeX.axis_height)}
-    if (Math.abs(box.y) < .0001) {box.y = 0}
-    if (box.y) {box = jsMath.Box.SetList([box],CFSH[2],size)}
-    return box;
-  },
-  
-  /*
-   *  Get a character by its TeX charcode, and make sure its width
-   *  is specified.
-   */
-  GetCharCode: function (code) {
-    var font = jsMath.TeX.fam[code[0]];
-    var Font = jsMath.TeX[font];
-    var c = Font[code[1]];
-    if (c.img != null) {this.TeXIMG(font,code[1],4)}
-    if (c.w == null) {c.w = jsMath.EmBoxFor(jsMath.Typeset.AddClass(c.tclass,c.c)).w}
-    if (c.font == null) {c.font = font}
-    return c;
-  },
-
-  /*
-   * Add the class to the html, and use the font if there isn't one
-   * specified already
-   */
-
-  AddClass: function (tclass,html,font) {
-    if (tclass == null) {tclass = font}
-    return jsMath.Typeset.AddClass(tclass,html);
-  },
-  
-  /*
-   *  Create a horizontally stretchable "delimiter" (like over- and
-   *  underbraces).
-   */
-//###  Add size?
-  Leaders: function (W,leader) {
-    var h; var d; var w; var html; var font;
-    if (leader.lmid) {// braces
-      font = jsMath.TeX.fam[leader.left[0]];
-      var left = this.GetCharCode(leader.left);
-      var right = this.GetCharCode(leader.right);
-      var lmid = this.GetCharCode(leader.lmid);
-      var rmid = this.GetCharCode(leader.rmid);
-      w = (W - left.w - right.w - lmid.w - rmid.w)/2 - .1; h = .4; d = .3;
-      if (w < 0) {w = 0}
-      html = this.AddClass(left.tclass,left.c,left.font) 
-           + jsMath.HTML.Rule(w,left.h)
-           + this.AddClass(lmid.tclass,lmid.c+rmid.c,lmid.font)
-           + jsMath.HTML.Rule(w,right.h)
-           + this.AddClass(right.tclass,right.c,right.font);
-    } else { //arrows
-      font = jsMath.TeX.fam[leader.rep[0]];
-      var left = this.GetCharCode(leader.left? leader.left: leader.rep);
-      var rep = this.GetCharCode(leader.rep);
-      var right = this.GetCharCode(leader.right? leader.right: leader.rep);
-      var n = Math.ceil((W - left.w - right.w + .4)/(rep.w - .3));
-      w = (W - left.w - right.w + .4 - n*(rep.w - .3));
-      if (leader.left) {h = left.h; d = left.d} else {h = right.h; d = right.d}
-      if (d == null) {d = 0}; if (h == null) {h = 0}
-      var html = this.AddClass(left.tclass,left.c,left.font); var m = Math.floor(n/2);
-      var ext = jsMath.HTML.Place(rep.c,-.3,0);
-      var ehtml = ''; for (var i = 0; i < m; i++) {ehtml += ext};
-      html += this.AddClass(rep.tclass,ehtml,rep.font) + jsMath.HTML.Spacer(w);
-      ehtml = ''; for (var i = m; i < n; i++) {ehtml += ext};
-      html += this.AddClass(rep.tclass,ehtml,rep.font);
-      if (jsMath.Browser.msieFontBug) {html += '<SPAN STYLE="display: none">x</SPAN>'}
-      html += jsMath.HTML.Place(this.AddClass(right.tclass,right.c,right.font),-.4,0);
-    }
-    w = jsMath.EmBoxFor(html).w;
-    if (w != W) {
-      w = jsMath.HTML.Spacer((W-w)/2);
-      html = w + html + w;
-    }
-    var box = new jsMath.Box('html',html,W,h,d);
-    box.bh = jsMath.TeX[font].h; box.bd = jsMath.TeX[font].d;
-    return box;
-  },
-  
-  /*
-   *  Create the HTML for an alignment (e.g., array or matrix)
-   *  Since the widths are not really accurate (they are based on pixel
-   *  widths not the sub-pixel widths of the actual characters), there
-   *  is some drift involved.  We lay out the table column by column
-   *  to help reduce the problem.
-   *  
-   *  ###  still need to allow users to specify row and column attributes,
-   *       and do things like \span and \multispan  ###
-   */
-  LayoutRelative: function (size,table,align,cspacing) {
-    if (align == null) {align = []}
-    if (cspacing == null) {cspacing = []}
-    
-    // get row and column maximum dimensions
-    var scale = jsMath.sizes[size]/100;
-    var W = []; var H = []; var D = [];
-    var unset = -1000; var bh = unset; var bd = unset;
-    var i; var j; var row;
-    for (i = 0; i < table.length; i++) {
-      row = table[i]; H[i] = jsMath.h*scale; D[i] = jsMath.d*scale;
-      for (j = 0; j < row.length; j++) {
-        row[j] = row[j].Remeasured();
-        if (row[j].h > H[i]) {H[i] = row[j].h}
-        if (row[j].d > D[i]) {D[i] = row[j].d}
-        if (j >= W.length) {W[j] = row[j].w}
-        else if (row[j].w > W[j]) {W[j] = row[j].w}
-        if (row[j].bh > bh) {bh = row[j].bh}
-        if (row[j].bd > bd) {bd = row[j].bd}
-      }
-    }
-    if (bh == unset) {bh = 0}; if (bd == unset) {bd = 0}
-
-    // lay out the columns
-    var HD = (jsMath.hd-.01)*scale;
-    var html = ''; var pW = 0; var cW = 0;
-    var w; var h; var y;
-    var box; var mlist; var entry;
-    for (j = 0; j < W.length; j++) {
-      mlist = []; y = -H[0]; pW = 0;
-      for (i = 0; i < table.length; i++) {
-        entry = table[i][j];
-        if (entry && entry.format != 'null') {
-          if (align[j] == 'l') {w = 0} else
-          if (align[j] == 'r') {w = W[j] - entry.w} else
-            {w = (W[j] - entry.w)/2}
-          entry.x = w - pW; pW = entry.w + w; entry.y = y;
-          mlist[mlist.length] = entry;
-        }
-        if (i == table.length-1) {y -= D[i]}
-        else {y -= Math.max(HD,D[i]+H[i+1]) + scale/10}
-      }
-      if (cspacing[j] == null) cspacing[j] = scale;
-      if (mlist.length > 0) {
-        box = jsMath.Box.SetList(mlist,'T',size);
-        html += jsMath.HTML.Place(box.html,cW,0);
-        cW = W[j] - box.w + cspacing[j];
-      } else {cW += cspacing[j]}
-    }
-    
-    // get the full width and height
-    w = -cspacing[W.length-1]; y = (H.length-1)*scale/10;
-    for (i = 0; i < W.length; i++) {w += W[i] + cspacing[i]}
-    for (i = 0; i < H.length; i++) {y += Math.max(HD,H[i]+D[i])}
-    h = y/2 + jsMath.TeX.axis_height; var d = y-h;
-    
-    // adjust the final row width, and vcenter the table
-    //   (add 1/6em at each side for the \,)
-    html += jsMath.HTML.Spacer(cW-cspacing[W.length-1] + scale/6);
-    html = jsMath.HTML.Place(html,scale/6,h);
-    box = new jsMath.Box('html',html,w+scale/3,h,d);
-    box.bh = bh; box.bd = bd;
-    return box;
-  },
-
-  /*
-   *  Create the HTML for an alignment (e.g., array or matrix)
-   *  Use absolute position for elements in the array.
-   *  
-   *  ###  still need to allow users to specify row and column attributes,
-   *       and do things like \span and \multispan  ###
-   */
-  LayoutAbsolute: function (size,table,align,cspacing) {
-    if (align == null) {align = []}
-    if (cspacing == null) {cspacing = []}
-    
-    // get row and column maximum dimensions
-    var scale = jsMath.sizes[size]/100;
-    var HD = (jsMath.hd-.01)*scale;
-    var W = []; var H = []; var D = [];
-    var w = 0; var h; var x; var y;
-    var i; var j; var row;
-    for (i = 0; i < table.length; i++) {
-      row = table[i];
-      H[i] = jsMath.h*scale; D[i] = jsMath.d*scale;
-      for (j = 0; j < row.length; j++) {
-        row[j] = row[j].Remeasured();
-        if (row[j].h > H[i]) {H[i] = row[j].h}
-        if (row[j].d > D[i]) {D[i] = row[j].d}
-        if (j >= W.length) {W[j] = row[j].w}
-        else if (row[j].w > W[j]) {W[j] = row[j].w}
-      }
-    }
-
-    // get the height and depth of the centered table
-    y = (H.length-1)*scale/6;
-    for (i = 0; i < H.length; i++) {y += Math.max(HD,H[i]+D[i])}
-    h = y/2 + jsMath.TeX.axis_height; var d = y - h;
-
-    // lay out the columns
-    var html = ''; var entry; w = scale/6;
-    for (j = 0; j < W.length; j++) {
-      y = H[0]-h;
-      for (i = 0; i < table.length; i++) {
-        entry = table[i][j];
-        if (entry && entry.format != 'null') {
-          if (align[j] == 'l') {x = 0} else
-          if (align[j] == 'r') {x = W[j] - entry.w} else
-            {x = (W[j] - entry.w)/2}
-          html += jsMath.HTML.PlaceAbsolute(entry.html,w+x,
-                    y-Math.max(0,entry.bh-jsMath.h*scale));
-        }
-        if (i == table.length-1) {y += D[i]}
-        else {y += Math.max(HD,D[i]+H[i+1]) + scale/6}
-      }
-      if (cspacing[j] == null) cspacing[j] = scale;
-      w += W[j] + cspacing[j];
-    }
-    
-    // get the full width
-    w = -cspacing[W.length-1]+scale/3;
-    for (i = 0; i < W.length; i++) {w += W[i] + cspacing[i]}
-
-    html = jsMath.HTML.Spacer(scale/6)+html+jsMath.HTML.Spacer(scale/6);
-    if (jsMath.Browser.spanHeightVaries) {y = h-jsMath.h} else {y = 0}
-    html = jsMath.HTML.Absolute(html,w,h+d,d,y,H[0]);
-    var box = new jsMath.Box('html',html,w+scale/3,h,d);
-    return box;
-  },
-
-  /*
-   *  Look for math within \hbox and other non-math text
-   */
-  InternalMath: function (text,size) {
-    if (!text.match(/\$|\\\(/)) {return this.Text(text,'normal','T',size).Styled()}
-    
-    var i = 0; var k = 0; var c; var match = '';
-    var mlist = []; var parse; var html; var box;
-    while (i < text.length) {
-      c = text.charAt(i++);
-      if (c == '$') {
-        if (match == '$') {
-          parse = jsMath.Parse(text.slice(k,i-1),null,size);
-          if (parse.error) {
-            mlist[mlist.length] = this.Text(parse.error,'error','T',size,1,1);
-          } else {
-            parse.Atomize();
-            mlist[mlist.length] = parse.mlist.Typeset('T',size).Styled();
-          }
-          match = ''; k = i;
-        } else {
-          mlist[mlist.length] = this.Text(text.slice(k,i-1),'normal','T',size,1,1);
-          match = '$'; k = i;
-        }
-      } else if (c == '\\') {
-        c = text.charAt(i++);
-        if (c == '(' && match == '') {
-          mlist[mlist.length] = this.Text(text.slice(k,i-2),'normal','T',size,1,1);
-          match = ')'; k = i;
-        } else if (c == ')' && match == ')') {
-          parse = jsMath.Parse(text.slice(k,i-2),null,size);
-          if (parse.error) {
-            mlist[mlist.length] = this.Text(parse.error,'error','T',size,1,1);
-          } else {
-            parse.Atomize();
-            mlist[mlist.length] = parse.mlist.Typeset('T',size).Styled();
-          }
-          match = ''; k = i;
-        }
-      }
-    }
-    mlist[mlist.length] = this.Text(text.slice(k),'normal','T',size,1,1);
-    return this.SetList(mlist,'T',size);
-  },
-  
-  /*
-   *  Convert an abitrary box to a typeset box.  I.e., make an
-   *  HTML version of the contents of the box, at its desired (x,y)
-   *  position.
-   */
-  Set: function (box,style,size,addstyle) {
-    if (box) {
-      if (box.type == 'typeset') {return box}
-      if (box.type == 'mlist') {
-        box.mlist.Atomize(style,size);
-        return box.mlist.Typeset(style,size);
-      }
-      if (box.type == 'text') {
-        box = this.Text(box.text,box.tclass,style,size,box.ascend,box.descend);
-        if (addstyle != 0) {box.Styled()}
-        return box;
-      }
-      box = this.TeX(box.c,box.font,style,size);
-      if (addstyle != 0) {box.Styled()}
-      return box;
-    }
-    return jsMath.Box.Null;
-  },
-
-  /*
-   *  Convert a list of boxes to a single typeset box.  I.e., finalize
-   *  the HTML for the list of boxes, properly spaced and positioned.
-   */
-  SetList: function (boxes,style,size) {
-    var mlist = []; var box;
-    for (var i = 0; i < boxes.length; i++) {
-      box = boxes[i];
-      if (box.type == 'typeset') {box = jsMath.mItem.Typeset(box)}
-      mlist[mlist.length] = box;
-    }
-    var typeset = new jsMath.Typeset(mlist);
-    return typeset.Typeset(style,size);
-  }
-
-});
-
-
-jsMath.Package(jsMath.Box,{
-
-  /*
-   *  Add the class and style to a text box (i.e., finalize the
-   *  unpositioned HTML for the box).
-   */
-  Styled: function () {
-    if (this.format == 'text') {
-      this.html = jsMath.Typeset.AddClass(this.tclass,this.html);
-      this.html = jsMath.Typeset.AddStyle(this.style,this.size,this.html);
-      delete this.tclass; delete this.style;
-      this.format = 'html';
-    }
-    return this;
-  },
-  
-  /*
-   *  Recompute the box width to make it more accurate.
-   */
-  Remeasured: function () {
-    if (this.w > 0 && !this.html.match(/position: ?absolute/))
-      {this.w = jsMath.EmBoxFor(this.html).w}
-    return this;
-  }
-
-});
-
-
-/***************************************************************************/
-
-/*
- *  mItems are the building blocks of mLists (math lists) used to
- *  store the information about a mathematical expression.  These are
- *  basically the items listed in the TeXbook in Appendix G (plus some
- *  minor extensions).
- */
-jsMath.mItem = function (type,def) {
-  this.type = type;
-  jsMath.Add(this,def);
-}
-
-jsMath.Add(jsMath.mItem,{
-
-  /*
-   *  a general atom (given a nucleus for the atom)
-   */
-  Atom: function (type,nucleus) {
-    return new jsMath.mItem(type,{atom: 1, nuc: nucleus});
-  },
-
-  /*
-   *  An atom whose nucleus is a piece of text, in a given
-   *  class, with a given additional height and depth
-   */
-  TextAtom: function (type,text,tclass,a,d) {
-    var atom = new jsMath.mItem(type,{
-      atom: 1,
-      nuc: {
-        type: 'text',
-        text: text,
-        tclass: tclass
-      }
-    });
-    if (a != null) {atom.nuc.ascend = a}
-    if (d != null) {atom.nuc.descend = d}
-    return atom;
-  },
-  
-  /*
-   *  An atom whose nucleus is a TeX character in a specific font
-   */
-  TeXAtom: function (type,c,font) {
-    return new jsMath.mItem(type,{
-      atom: 1,
-      nuc: {
-        type: 'TeX',
-        c: c,
-        font: font
-      }
-    });
-  },
-
-  /*
-   *  A generalized fraction atom, with given delimiters, rule
-   *  thickness, and a numerator and denominator.
-   */
-  Fraction: function (name,num,den,thickness,left,right) {
-    return new jsMath.mItem('fraction',{
-      from: name, num: num, den: den,
-      thickness: thickness, left: left, right: right
-    });
-  },
-
-  /*
-   *  An atom that inserts some glue
-   */
-  Space: function (w) {return new jsMath.mItem('space',{w: w})},
-
-  /*
-   *  An atom that contains a typeset box (like an hbox or vbox)
-   */
-  Typeset: function (box) {return new jsMath.mItem('box',{nuc: box})},
-  
-  /*
-   *  An atom that contains some finished HTML (acts like a typeset box)
-   */
-  HTML: function (html) {return new jsMath.mItem('html',{html: html})}
-
-});
-
-/***************************************************************************/
-
-/*
- *  mLists are lists of mItems, and encode the contents of
- *  mathematical expressions and sub-expressions.  They act as
- *  the expression "stack" as the mathematics is parsed, and
- *  contain some state information, like the position of the
- *  most recent open paren and \over command, and the current font.
- */
-jsMath.mList = function (list,font,size,style) {
-  if (list) {this.mlist = list} else {this.mlist = []}
-  if (style == null) {style = 'T'}; if (size == null) {size = 4}
-  this.data = {openI: null, overI: null, overF: null,
-               font: font, size: size, style: style};
-  this.init = {size: size, style: style};
-}
-
-jsMath.Package(jsMath.mList,{
-
-  /*
-   *  Add an mItem to the list
-   */
-  Add: function (box) {return (this.mlist[this.mlist.length] = box)},
-  
-  /*
-   *  Get the i-th mItem from the list
-   */
-  Get: function (i) {return this.mlist[i]},
-  
-  /*
-   *  Get the length of the list
-   */
-  Length: function() {return this.mlist.length},
-
-  /*
-   *  Get the tail mItem of the list
-   */
-  Last: function () {
-    if (this.mlist.length == 0) {return null}
-    return this.mlist[this.mlist.length-1]
-  },
-
-  /*
-   *  Get a sublist of an mList
-   */
-  Range: function (i,j) {
-    if (j == null) {j = this.mlist.length}
-    return new jsMath.mList(this.mlist.slice(i,j+1));
-  },
-
-  /*
-   *  Remove a range of mItems from the list.
-   */
-  Delete: function (i,j) {
-    if (j == null) {j = i}
-    if (this.mlist.splice) {this.mlist.splice(i,j-i+1)} else {
-      var mlist = [];
-      for (var k = 0; k < this.mlist.length; k++)
-        {if (k < i || k > j) {mlist[mlist.length] = this.mlist[k]}}
-      this.mlist = mlist;
-    }
-  },
-
-  /*
-   *  Add an open brace and maintain the stack information
-   *  about the previous open brace so we can recover it
-   *  when this one os closed.
-   */
-  Open: function (left) {
-    var box = this.Add(new jsMath.mItem('boundary',{data: this.data}));
-    var olddata = this.data;
-    this.data = {}; for (var i in olddata) {this.data[i] = olddata[i]}
-    delete this.data.overI; delete this.data.overF;
-    this.data.openI = this.mlist.length-1;
-    if (left != null) {box.left = left}
-    return box;
-  },
-
-  /*
-   *  Attempt to close a brace.  Recover the stack information
-   *  about previous open braces and \over commands.  If there was an
-   *  \over (or \above, etc) in this set of braces, create a fraction
-   *  atom from the two halves, otherwise create an inner or ord
-   *  from the contents of the braces.
-   *  Remove the braced material from the list and add the newly
-   *  created atom (the fraction, inner or ord).
-   */
-  Close: function (right) {
-    if (right != null) {right = new jsMath.mItem('boundary',{right: right})}
-    var atom; var open = this.data.openI;
-    var over = this.data.overI; var from = this.data.overF;
-    this.data  = this.mlist[open].data;
-    if (over) {
-      atom = jsMath.mItem.Fraction(from.name,
-        {type: 'mlist', mlist: this.Range(open+1,over-1)},
-        {type: 'mlist', mlist: this.Range(over)},
-        from.thickness,from.left,from.right);
-      if (right) {
-        var mlist = new jsMath.mList([this.mlist[open],atom,right]);
-        atom = jsMath.mItem.Atom('inner',{type: 'mlist', mlist: mlist});
-      }
-    } else {
-      var openI = open+1; if (right) {this.Add(right); openI--}
-      atom = jsMath.mItem.Atom((right)?'inner':'ord',
-                  {type: 'mlist', mlist: this.Range(openI)});
-    }
-    this.Delete(open,this.Length());
-    return this.Add(atom);
-  },
-
-  /*
-   *  Create a generalized fraction from an mlist that
-   *  contains an \over (or \above, etc).
-   */
-  Over: function () {
-    var over = this.data.overI; var from = this.data.overF
-    var atom = jsMath.mItem.Fraction(from.name,
-      {type: 'mlist', mlist: this.Range(open+1,over-1)},
-      {type: 'mlist', mlist: this.Range(over)},
-      from.thickness,from.left,from.right);
-    this.mlist = [atom];
-  },
-
-  /*
-   *  Take a raw mList (that has been produced by parsing some TeX
-   *  expression), and perform the modifications outlined in
-   *  Appendix G of the TeXbook.  
-   */
-  Atomize: function (style,size) {
-    var mitem; var prev = '';
-    this.style = style; this.size = size;
-    for (var i = 0; i < this.mlist.length; i++) {
-      mitem = this.mlist[i]; mitem.delta = 0;
-      if (mitem.type == 'choice') 
-        {this.mlist = this.Atomize.choice(this.style,mitem,i,this.mlist); i--}
-      else if (this.Atomize[mitem.type]) {
-        var f = this.Atomize[mitem.type]; // Opera needs separate name
-        f(this.style,this.size,mitem,prev,this,i);
-      }
-      prev = mitem;
-    }
-    if (mitem && mitem.type == 'bin') {mitem.type = 'ord'}
-    if (this.mlist.length >= 2 && mitem.type == 'boundary' &&
-        this.mlist[0].type == 'boundary') {this.AddDelimiters(style,size)}
-  },
-
-  /*
-   *  For a list that has boundary delimiters as its first and last
-   *  entries, we replace the boundary atoms by open and close
-   *  atoms whose nuclii are the specified delimiters properly sized
-   *  for the contents of the list.  (Rule 19)
-   */
-  AddDelimiters: function(style,size) {
-    var unset = -10000; var h = unset; var d = unset;
-    for (var i = 0; i < this.mlist.length; i++) {
-      mitem = this.mlist[i];
-      if (mitem.atom || mitem.type == 'box') {
-        h = Math.max(h,mitem.nuc.h+mitem.nuc.y);
-        d = Math.max(d,mitem.nuc.d-mitem.nuc.y);
-      }
-    }
-    var TeX = jsMath.TeX; var a = jsMath.Typeset.TeX(style,size).axis_height;
-    var delta = Math.max(h-a,d+a);
-    var H =  Math.max(Math.floor(TeX.integer*delta/500)*TeX.delimiterfactor,
-                      TeX.integer*(2*delta-TeX.delimitershortfall))/TeX.integer;
-    var left = this.mlist[0]; var right = this.mlist[this.mlist.length-1];
-    left.nuc = jsMath.Box.Delimiter(H,left.left,style);
-    right.nuc = jsMath.Box.Delimiter(H,right.right,style);
-    left.type = 'open'; left.atom = 1; delete left.left;
-    right.type = 'close'; right.atom = 1; delete right.right;
-  },
-  
-  /*
-   *  Typeset a math list to produce final HTML for the list.
-   */
-  Typeset: function (style,size) {
-    var typeset = new jsMath.Typeset(this.mlist);
-    return typeset.Typeset(style,size);
-  }
-
-});
-
-
-/*
- *  These routines implement the main rules given in Appendix G of the
- *  TeXbook
- */
-
-jsMath.Add(jsMath.mList.prototype.Atomize,{
-
-  /*
-   *  Handle a 4-way choice atom.  (Rule 4)
-   */
-  choice: function (style,mitem,i,mlist) {
-    if (style.charAt(style.length-1) == "'") {style = style.slice(0,style.length-1)}
-    var nlist = []; var M = mitem[style]; if (!M) {M = {type: 'mlist', mlist: []}}
-    if (M.type == 'mlist') {
-      M = M.mlist.mlist;
-      for (var k = 0; k < i; k++) {nlist[k] = mlist[k]}
-      for (k = 0; k < M.length; k++) {nlist[i+k] = M[k]}
-      for (k = i+1; k < mlist.length; k++) {nlist[nlist.length] = mlist[k]}
-      return nlist;
-    } else {
-      mlist[i] = jsMath.mItem.Atom('ord',M);
-      return mlist;
-    }
-  },
-  
-  /*
-   *  Handle \displaystyle, \textstyle, etc.
-   */
-  style: function (style,size,mitem,prev,mlist) {
-    mlist.style = mitem.style;
-  },
-  
-  /*
-   *  Handle \tiny, \small, etc.
-   */
-  size: function (style,size,mitem,prev,mlist) {
-    mlist.size = mitem.size;
-  },
-  
-  /*
-   *  Create empty boxes of the proper sizes for the various
-   *  phantom-type commands
-   */
-  phantom: function (style,size,mitem) {
-    var box = mitem.nuc = jsMath.Box.Set(mitem.phantom,style,size);
-    if (mitem.h) {box.Remeasured(); box.html = jsMath.HTML.Spacer(box.w)}
-      else {box.html = '', box.w = 0}
-    if (!mitem.v) {box.h = box.d = 0}
-    box.bd = box.bh = 0;
-    delete mitem.phantom;
-    mitem.type = 'box';
-  },
-  
-  /*
-   *  Create a box of zero height and depth containing the
-   *  contents of the atom
-   */
-  smash: function (style,size,mitem) {
-    var box = mitem.nuc = jsMath.Box.Set(mitem.smash,style,size).Remeasured();
-    box.h = box.d = box.bd = box.bh = 0;
-    delete mitem.smash;
-    mitem.type = 'box';
-  },
-
-  /*
-   *  Move a box up or down vertically
-   */
-  raise: function (style,size,mitem) {
-    mitem.nuc = jsMath.Box.Set(mitem.nuc,style,size);
-    var y = mitem.raise;
-    mitem.nuc.html = jsMath.HTML.Place(mitem.nuc.html,0,y);
-    mitem.nuc.h += y; mitem.nuc.d -= y;
-    mitem.type = 'ord'; mitem.atom = 1;
-  },
-
-  /*
-   *  Hide the size of a box so that it laps to the left or right, or
-   *  up or down.
-   */
-  lap: function (style,size,mitem) {
-    var box = jsMath.Box.Set(mitem.nuc,style,size).Remeasured();
-    var mlist = [box];
-    if (mitem.lap == 'llap') {box.x = -box.w} else
-    if (mitem.lap == 'rlap') {mlist[1] = jsMath.mItem.Space(-box.w)} else
-    if (mitem.lap == 'ulap') {box.y = box.d; box.h = box.d = 0} else
-    if (mitem.lap == 'dlap') {box.y = -box.h; box.h = box.d = 0}
-    mitem.nuc = jsMath.Box.SetList(mlist,style,size);
-    if (mitem.lap == 'ulap' || mitem.lap == 'dlap') {mitem.nuc.h = mitem.nuc.d = 0}
-    mitem.type = 'box'; delete mitem.atom;
-  },
-
-  /*
-   *  Handle a Bin atom. (Rule 5)
-   */
-  bin: function (style,size,mitem,prev) {
-    if (prev) {
-      var type  = prev.type;
-      if (type == 'bin' || type == 'op' || type == 'rel' ||
-          type == 'open' || type == 'punct' || type == '' ||
-          (type == 'boundary' && prev.left != '')) {mitem.type = 'ord'}
-    } else {mitem.type = 'ord'}
-    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
-  },
-
-  /*
-   *  Handle a Rel atom.  (Rule 6)
-   */
-  rel: function (style,size,mitem,prev) {
-    if (prev.type == 'bin') {prev.type = 'ord'}
-    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
-  },
-
-  /*
-   *  Handle a Close atom.  (Rule 6)
-   */
-  close: function (style,size,mitem,prev) {
-    if (prev.type == 'bin') {prev.type = 'ord'}
-    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
-  },
-
-  /*
-   *  Handle a Punct atom.  (Rule 6)
-   */
-  punct: function (style,size,mitem,prev) {
-    if (prev.type == 'bin') {prev.type = 'ord'}
-    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
-  },
-
-  /*
-   *  Handle an Open atom.  (Rule 7)
-   */
-  open: function (style,size,mitem) {
-    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
-  },
-
-  /*
-   *  Handle an Inner atom.  (Rule 7)
-   */
-  inner: function (style,size,mitem) {
-    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
-  },
-
-  /*
-   *  Handle a Vcent atom.  (Rule 8)
-   */
-  vcenter: function (style,size,mitem) {
-    var box = jsMath.Box.Set(mitem.nuc,style,size);
-    var TeX = jsMath.Typeset.TeX(style,size);
-    box.y = TeX.axis_height - (box.h-box.d)/2;
-    mitem.nuc = box; mitem.type = 'ord';
-    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
-  },
-
-  /*
-   *  Handle an Over atom.  (Rule 9)
-   */
-  overline: function (style,size,mitem) {
-    var TeX = jsMath.Typeset.TeX(style,size);
-    var box = jsMath.Box.Set(mitem.nuc,jsMath.Typeset.PrimeStyle(style),size).Remeasured();
-    var t = TeX.default_rule_thickness;
-    var rule = jsMath.Box.Rule(box.w,t);
-    rule.x = -rule.w; rule.y = box.h + 3*t;
-    mitem.nuc = jsMath.Box.SetList([box,rule],style,size);
-    mitem.nuc.h += t;
-    mitem.type = 'ord';
-    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
-  },
-
-  /*
-   *  Handle an Under atom.  (Rule 10)
-   */
-  underline: function (style,size,mitem) {
-    var TeX = jsMath.Typeset.TeX(style,size);
-    var box = jsMath.Box.Set(mitem.nuc,jsMath.Typeset.PrimeStyle(style),size).Remeasured();
-    var t = TeX.default_rule_thickness;
-    var rule = jsMath.Box.Rule(box.w,t);
-    rule.x = -rule.w; rule.y = -box.d - 3*t - t;
-    mitem.nuc = jsMath.Box.SetList([box,rule],style,size);
-    mitem.nuc.d += t;
-    mitem.type = 'ord';
-    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
-  },
-
-  /*
-   *  Handle a Rad atom.  (Rule 11 plus stuff for \root..\of)
-   */
-  radical: function (style,size,mitem) {
-    var TeX = jsMath.Typeset.TeX(style,size);
-    var Cp = jsMath.Typeset.PrimeStyle(style);
-    var box = jsMath.Box.Set(mitem.nuc,Cp,size).Remeasured();
-    var t = TeX.default_rule_thickness;
-    var p = t; if (style == 'D' || style == "D'") {p = TeX.x_height}
-    var r = t + p/4; 
-    var surd = jsMath.Box.Delimiter(box.h+box.d+r+t,[0,2,0x70,3,0x70],style,1);
-    t = surd.h; // thickness of rule is height of surd character
-    if (surd.d > box.h+box.d+r) {r = (r+surd.d-box.h-box.d)/2}
-    surd.y = box.h+r;
-    var rule = jsMath.Box.Rule(box.w,t);
-    rule.y = surd.y-t/2; rule.h += 3*t/2; box.x = -box.w;
-    var Cr = jsMath.Typeset.UpStyle(jsMath.Typeset.UpStyle(style));
-    var root = jsMath.Box.Set(mitem.root,Cr,size).Remeasured();
-    if (mitem.root) {
-      root.y = .55*(box.h+box.d+3*t+r)-box.d;
-      surd.x = Math.max(root.w-(11/18)*surd.w,0);
-      rule.x = (7/18)*surd.w;
-      root.x = -(root.w+rule.x);
-    }
-    mitem.nuc = jsMath.Box.SetList([surd,root,rule,box],style,size);
-    mitem.type = 'ord';
-    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
-  },
-
-  /*
-   *  Handle an Acc atom.  (Rule 12)
-   */
-  accent: function (style,size,mitem) {
-    var TeX = jsMath.Typeset.TeX(style,size);
-    var Cp = jsMath.Typeset.PrimeStyle(style);
-    var box = jsMath.Box.Set(mitem.nuc,Cp,size);
-    var u = box.w; var s; var Font;
-    if (mitem.nuc.type == 'TeX') {
-      Font = jsMath.TeX[mitem.nuc.font];
-      if (Font[mitem.nuc.c].krn && Font.skewchar)
-        {s = Font[mitem.nuc.c].krn[Font.skewchar]}
-    }
-    if (s == null) {s = 0}
-    
-    var c = mitem.accent[2];
-    var font = jsMath.TeX.fam[mitem.accent[1]]; Font = jsMath.TeX[font];
-    while (Font[c].n && Font[Font[c].n].w <= u) {c = Font[c].n}
-    
-    var delta = Math.min(box.h,TeX.x_height);
-    if (mitem.nuc.type == 'TeX') {
-      var nitem = jsMath.mItem.Atom('ord',mitem.nuc);
-      nitem.sup = mitem.sup; nitem.sub = mitem.sub; nitem.delta = 0;
-      jsMath.mList.prototype.Atomize.SupSub(style,size,nitem);
-      delta += (nitem.nuc.h - box.h);
-      box = mitem.nuc = nitem.nuc;
-      delete mitem.sup; delete mitem.sub;
-    }
-    var acc = jsMath.Box.TeX(c,font,style,size);
-    acc.y = box.h - delta; acc.x = -box.w + s + (u-acc.w)/2;
-    if (Font[c].ic) {acc.x -= Font[c].ic * TeX.scale}
-
-    mitem.nuc = jsMath.Box.SetList([box,acc],style,size);
-    if (mitem.nuc.w != box.w) {
-      var space = jsMath.mItem.Space(box.w-mitem.nuc.w);
-      mitem.nuc = jsMath.Box.SetList([mitem.nuc,space],style,size);
-    }
-    mitem.type = 'ord';
-    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
-  },
-
-  /*
-   *  Handle an Op atom.  (Rules 13 and 13a)
-   */
-  op: function (style,size,mitem) {
-    var TeX = jsMath.Typeset.TeX(style,size); var box;
-    mitem.delta = 0; var isD = (style.charAt(0) == 'D');
-    if (mitem.limits == null && isD) {mitem.limits = 1}
-
-    if (mitem.nuc.type == 'TeX') {
-      var C = jsMath.TeX[mitem.nuc.font][mitem.nuc.c];
-      if (isD && C.n) {mitem.nuc.c = C.n; C = jsMath.TeX[mitem.nuc.font][C.n]}
-      box = jsMath.Box.Set(mitem.nuc,style,size);
-      if (C.ic) {
-        mitem.delta = C.ic * TeX.scale;
-        if (mitem.limits || !mitem.sub || jsMath.Browser.msieIntegralBug) 
-          {box = jsMath.Box.SetList([box,jsMath.mItem.Space(mitem.delta)],style,size)}
-      }
-      box.y = -((box.h+box.d)/2 - box.d - TeX.axis_height);
-      if (Math.abs(box.y) < .0001) {box.y = 0}
-    }
-
-    if (!box) {box = jsMath.Box.Set(mitem.nuc,style,size).Remeasured()}
-    if (mitem.limits) {
-      var W = box.w; var x = box.w;
-      var mlist = [box]; var dh = 0; var dd = 0;
-      if (mitem.sup) {
-        var sup = jsMath.Box.Set(mitem.sup,jsMath.Typeset.UpStyle(style),size).Remeasured();
-        sup.x = ((box.w-sup.w)/2 + mitem.delta/2) - x; dh = TeX.big_op_spacing5;
-        W = Math.max(W,sup.w); x += sup.x + sup.w;
-        sup.y = box.h+sup.d + box.y +
-                    Math.max(TeX.big_op_spacing1,TeX.big_op_spacing3-sup.d);
-        mlist[mlist.length] = sup; delete mitem.sup;
-      }
-      if (mitem.sub) {
-        var sub = jsMath.Box.Set(mitem.sub,jsMath.Typeset.DownStyle(style),size).Remeasured();
-        sub.x = ((box.w-sub.w)/2 - mitem.delta/2) - x; dd = TeX.big_op_spacing5;
-        W = Math.max(W,sub.w); x += sub.x + sub.w;
-        sub.y = -box.d-sub.h + box.y -
-                   Math.max(TeX.big_op_spacing2,TeX.big_op_spacing4-sub.h);
-        mlist[mlist.length] = sub; delete mitem.sub;
-      }
-      if (W > box.w) {box.x = (W-box.w)/2; x += box.x}
-      if (x < W) {mlist[mlist.length] = jsMath.mItem.Space(W-x)}
-      mitem.nuc = jsMath.Box.SetList(mlist,style,size);
-      mitem.nuc.h += dh; mitem.nuc.d += dd;
-    } else {
-      if (jsMath.Browser.msieIntegralBug && mitem.sub && C && C.ic) 
-        {mitem.nuc = jsMath.Box.SetList([box,jsMath.Box.Space(-C.ic*TeX.scale)],style,size)}
-      else if (box.y) {mitem.nuc = jsMath.Box.SetList([box],style,size)}
-      jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
-    }
-  },
-
-  /*
-   *  Handle an Ord atom.  (Rule 14)
-   */
-  ord: function (style,size,mitem,prev,mList,i) {
-    if (mitem.nuc.type == 'TeX' && !mitem.sup && !mitem.sub) {
-      var nitem = mList.mlist[i+1];
-      if (nitem && nitem.atom && nitem.type &&
-          (nitem.type == 'ord' || nitem.type == 'op' || nitem.type == 'bin' ||
-           nitem.type == 'rel' || nitem.type == 'open' ||
-           nitem.type == 'close' || nitem.type == 'punct')) {
-        if (nitem.nuc.type == 'TeX' && nitem.nuc.font == mitem.nuc.font) {
-          mitem.textsymbol = 1;
-          var krn = jsMath.TeX[mitem.nuc.font][mitem.nuc.c].krn;
-          krn *= jsMath.Typeset.TeX(style,size).scale;
-          if (krn && krn[nitem.nuc.c]) {
-            for (var k = mList.mlist.length-1; k > i; k--)
-              {mList.mlist[k+1] = mList.mlist[k]}
-            mList.mlist[i+1] = jsMath.mItem.Space(krn[nitem.nuc.c]);
-          }
-        }
-      }
-    }
-    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
-  },
-
-  /*
-   *  Handle a generalized fraction.  (Rules 15 to 15e)
-   */
-  fraction: function (style,size,mitem) {
-    var TeX = jsMath.Typeset.TeX(style,size); var t = 0;
-    if (mitem.thickness != null) {t = mitem.thickness}
-    else if (mitem.from.match(/over/)) {t = TeX.default_rule_thickness}
-    var isD = (style.charAt(0) == 'D');
-    var Cn = (style == 'D')? 'T': (style == "D'")? "T'": jsMath.Typeset.UpStyle(style);
-    var Cd = (isD)? "T'": jsMath.Typeset.DownStyle(style);
-    var num = jsMath.Box.Set(mitem.num,Cn,size).Remeasured();
-    var den = jsMath.Box.Set(mitem.den,Cd,size).Remeasured();
-
-    var u; var v; var w;
-    var H = (isD)? TeX.delim1 : TeX.delim2;
-    var mlist = [jsMath.Box.Delimiter(H,mitem.left,style)]
-    var right = jsMath.Box.Delimiter(H,mitem.right,style);
-
-    if (num.w < den.w) {
-      num.x = (den.w-num.w)/2;
-      den.x = -(num.w + num.x);
-      w = den.w; mlist[1] = num; mlist[2] = den;
-    } else {
-      den.x = (num.w-den.w)/2;
-      num.x = -(den.w + den.x);
-      w = num.w; mlist[1] = den; mlist[2] = num;
-    }
-    if (isD) {u = TeX.num1; v = TeX.denom1} else {
-      u = (t != 0)? TeX.num2: TeX.num3;
-      v = TeX.denom2;
-    }
-    if (t == 0) {// atop
-      var p = (isD)? 7*TeX.default_rule_thickness: 3*TeX.default_rule_thickness;
-      var r = (u - num.d) - (den.h - v);
-      if (r < p) {u += (p-r)/2; v += (p-r)/2}
-    } else {// over
-      var p = (isD)? 3*t: t; var a = TeX.axis_height;
-      var r = (u-num.d)-(a+t/2); if (r < p) {u += p-r}
-          r = (a-t/2)-(den.h-v); if (r < p) {v += p-r}
-      var rule = jsMath.Box.Rule(w,t); rule.x = -w; rule.y = a - t/2;
-      mlist[mlist.length] = rule;
-    }
-    num.y = u; den.y = -v;
-
-    mlist[mlist.length] = right;
-    mitem.nuc = jsMath.Box.SetList(mlist,style,size);
-    mitem.type = 'ord'; mitem.atom = 1;
-    delete mitem.num; delete mitem.den;
-    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
-  },
-
-  /*
-   *  Add subscripts and superscripts.  (Rules 17-18f)
-   */
-  SupSub: function (style,size,mitem) {
-    var TeX = jsMath.Typeset.TeX(style,size);
-    var nuc = mitem.nuc;
-    var box = mitem.nuc = jsMath.Box.Set(mitem.nuc,style,size,0);
-    if (box.format == 'null') 
-      {box = mitem.nuc = jsMath.Box.Text('','normal',style,size)}
-
-    if (nuc.type == 'TeX') {
-      if (!mitem.textsymbol) {
-        var C = jsMath.TeX[nuc.font][nuc.c];
-        if (C.ic) {
-          mitem.delta = C.ic * TeX.scale;
-          if (!mitem.sub) {
-            box = mitem.nuc = jsMath.Box.SetList([box,jsMath.Box.Space(mitem.delta)],style,size);
-            mitem.delta = 0;
-          }
-        }
-      } else {mitem.delta = 0}
-    }
-
-    if (!mitem.sup && !mitem.sub) return;
-    mitem.nuc.Styled();
-    
-    var Cd = jsMath.Typeset.DownStyle(style);
-    var Cu = jsMath.Typeset.UpStyle(style);
-    var q = jsMath.Typeset.TeX(Cu,size).sup_drop;
-    var r = jsMath.Typeset.TeX(Cd,size).sub_drop;
-    var u = 0; var v = 0; var p;
-    if (nuc.type != 'text' && nuc.type != 'TeX' && nuc.type != 'null')
-      {u = box.h - q; v = box.d + r}
-
-    if (mitem.sub) {
-      var sub = jsMath.Box.Set(mitem.sub,Cd,size);
-      sub = jsMath.Box.SetList([sub,jsMath.mItem.Space(TeX.scriptspace)],style,size);
-    }
-
-    if (!mitem.sup) {
-      sub.y = -Math.max(v,TeX.sub1,sub.h-(4/5)*jsMath.Typeset.TeX(Cd,size).x_height);
-      mitem.nuc = jsMath.Box.SetList([box,sub],style,size).Styled(); delete mitem.sub;
-      return;
-    }
-
-    var sup = jsMath.Box.Set(mitem.sup,Cu,size);
-    sup = jsMath.Box.SetList([sup,jsMath.mItem.Space(TeX.scriptspace)],style,size);
-    if (style == 'D') {p = TeX.sup1}
-    else if (style.charAt(style.length-1) == "'") {p = TeX.sup3}
-    else {p = TeX.sup2}
-    u = Math.max(u,p,sup.d+jsMath.Typeset.TeX(Cu,size).x_height/4);
-
-    if (!mitem.sub) {
-      sup.y = u;
-      mitem.nuc = jsMath.Box.SetList([box,sup],style,size); delete mitem.sup;
-      return;
-    }
-
-    v = Math.max(v,jsMath.Typeset.TeX(Cd,size).sub2);
-    var t = TeX.default_rule_thickness;
-    if ((u-sup.d) - (sub.h -v) < 4*t) {
-      v = 4*t + sub.h - (u-sup.d);
-      p = (4/5)*TeX.x_height - (u-sup.d);
-      if (p > 0) {u += p; v -= p}
-    }
-    sup.Remeasured(); sub.Remeasured();
-    sup.y = u; sub.y = -v; sup.x = mitem.delta;
-    if (sup.w+sup.x > sub.w)
-      {sup.x -= sub.w; mitem.nuc = jsMath.Box.SetList([box,sub,sup],style,size)} else
-      {sub.x -= (sup.w+sup.x); mitem.nuc = jsMath.Box.SetList([box,sup,sub],style,size)}
-
-    delete mitem.sup; delete mitem.sub;
-  }
-
-});
-
-
-/***************************************************************************/
-
-/*
- *  The Typeset object handles most of the TeX-specific processing
- */
-
-jsMath.Typeset = function (mlist) {
-  this.type = 'typeset';
-  this.mlist = mlist;
-}
-
-jsMath.Add(jsMath.Typeset,{
-
-  /*
-   *  The "C-uparrow" style table (TeXbook, p. 441)
-   */
-  upStyle: {
-    D: "S", T: "S",  "D'": "S'", "T'": "S'",
-    S: "SS",  SS: "SS",  "S'": "SS'", "SS'": "SS'"
-  },
-
-  /*
-   *  The "C-downarrow" style table (TeXbook, p. 441)
-   */
-  downStyle: {
-    D: "S'", T: "S'",  "D'": "S'", "T'": "S'",
-    S: "SS'",  SS: "SS'",  "S'": "SS'", "SS'": "SS'"
-  },
-
-  /*
-   *  Get the various styles given the current style
-   *  (see TeXbook, p. 441)
-   */
-  UpStyle: function (style) {return this.upStyle[style]},
-  DownStyle: function (style) {return this.downStyle[style]},
-  PrimeStyle: function (style) {
-    if (style.charAt(style.length-1) == "'") {return style}
-    return style + "'"
-  },
-
-  /*
-   *  A value scaled to the appropriate size for scripts
-   */
-  StyleValue: function (style,v) {
-    if (style == "S" || style == "S'")   {return .7*v}
-    if (style == "SS" || style == "SS'") {return .5*v}
-    return v;
-  },
-  
-  /*
-   *  Return the size associated with a given style and size
-   */
-  StyleSize: function (style,size) {
-    if      (style == "S" || style == "S'")   {size = Math.max(0,size-2)}
-    else if (style == "SS" || style == "SS'") {size = Math.max(0,size-4)}
-    return size;
-  },
-
-  /*
-   *  Return the font parameter table for the given style
-   */
-  TeX: function (style,size) {
-    if      (style == "S" || style == "S'")   {size = Math.max(0,size-2)}
-    else if (style == "SS" || style == "SS'") {size = Math.max(0,size-4)}
-    return jsMath.TeXparams[size];
-  },
-
-
-  /*
-   *  Add the CSS class for the given TeX style
-   */
-  AddStyle: function (style,size,html) {
-    if      (style == "S" || style == "S'")   {size = Math.max(0,size-2)}
-    else if (style == "SS" || style == "SS'") {size = Math.max(0,size-4)}
-    if (size != 4) {html = '<SPAN CLASS="size'+size+'">' + html + '</SPAN>'}
-    return html;
-  },
-
-  /*
-   *  Add the font class, if needed
-   */
-  AddClass: function (tclass,html) {
-    if (tclass != '' && tclass != 'normal') {html = jsMath.HTML.Class(tclass,html)}
-    return html;
-  }
-
-});
-
-
-jsMath.Package(jsMath.Typeset,{
-  
-  /*
-   *  The spacing tables for inter-atom spacing
-   *  (See rule 20, and Chapter 18, p 170)
-   */
-  DTsep: {
-    ord: {op: 1, bin: 2, rel: 3, inner: 1},
-    op:  {ord: 1, op: 1, rel: 3, inner: 1},
-    bin: {ord: 2, op: 2, open: 2, inner: 2},
-    rel: {ord: 3, op: 3, open: 3, inner: 3},
-    open: {},
-    close: {op: 1, bin:2, rel: 3, inner: 1},
-    punct: {ord: 1, op: 1, rel: 1, open: 1, close: 1, punct: 1, inner: 1},
-    inner: {ord: 1, op: 1, bin: 2, rel: 3, open: 1, punct: 1, inner: 1}
-  },
-
-  SSsep: {
-    ord: {op: 1},
-    op:  {ord: 1, op: 1},
-    bin: {},
-    rel: {},
-    open: {},
-    close: {op: 1},
-    punct: {},
-    inner: {op: 1}
-  },
-
-  /*
-   *  The sizes used in the tables above
-   */
-  sepW: ['','thinmuskip','medmuskip','thickmuskip'],
-  
-  
-  /*
-   *  Find the amount of separation to use between two adjacent
-   *  atoms in the given style
-   */
-  GetSeparation: function (l,r,style) {
-    if (l && l.atom && r.atom) {
-      var table = this.DTsep; if (style.charAt(0) == "S") {table = this.SSsep}
-      var row = table[l.type];
-      if (row && row[r.type] != null) {return jsMath.TeX[this.sepW[row[r.type]]]}
-    }
-    return 0;
-  },
-
-  /*
-   *  Typeset an mlist (i.e., turn it into HTML).
-   *  Here, text items of the same class and style are combined
-   *  to reduce the number of <SPAN> tags used (though it is still
-   *  huge).  Spaces are combined, when possible.
-   *  ###  More needs to be done with that.  ###
-   *  The width of the final box is recomputed at the end, since
-   *  the final width is not necessarily the sum of the widths of
-   *  the individual parts (widths are in pixels, but the browsers
-   *  puts pieces together using sub-pixel accuracy).
-   */
-  Typeset: function (style,size) {
-    this.style = style; this.size = size; var unset = -10000
-    this.w = 0; this.h = unset; this.d = unset;
-    this.bh = this.h; this.bd = this.d;
-    this.tbuf = ''; this.tx = 0; this.tclass = '';
-    this.cbuf = ''; this.hbuf = ''; this.hx = 0;
-    var mitem = null; var prev; this.x = 0; this.dx = 0;
-
-    for (var i = 0; i < this.mlist.length; i++) {
-      prev = mitem; mitem = this.mlist[i];
-      switch (mitem.type) {
-
-        case 'size':
-          this.FlushClassed();
-          this.size = mitem.size;
-          mitem = prev; // hide this from TeX
-          break;
-
-        case 'style':
-          this.FlushClassed();
-          if (this.style.charAt(this.style.length-1) == "'")
-            {this.style = mitem.style + "'"} else {this.style = mitem.style}
-          mitem = prev; // hide this from TeX
-          break;
-
-        case 'space':
-          if (typeof(mitem.w) == 'object') {
-            if (this.style.charAt(1) == 'S') {mitem.w = .5*mitem.w[0]/18}
-            else if (this.style.charAt(0) == 'S') {mitem.w = .7*mitem.w[0]/18}
-            else {mitem.w = mitem.w[0]/18}
-          }
-          this.dx += mitem.w-0; // mitem.w is sometimes a string?
-          mitem = prev; // hide this from TeX
-          break;
-          
-        case 'html':
-          this.FlushClassed();
-          if (this.hbuf == '') {this.hx = this.x}
-          this.hbuf += mitem.html;
-          mitem = prev; // hide this from TeX
-          break;
-          
-        default:   // atom
-          if (!mitem.atom && mitem.type != 'box') break;
-          mitem.nuc.x += this.dx + this.GetSeparation(prev,mitem,this.style);
-          if (mitem.nuc.y || mitem.nuc.x) mitem.nuc.Styled();
-          this.dx = 0; this.x = this.x + this.w;
-          this.w += mitem.nuc.w + mitem.nuc.x;
-          if (mitem.nuc.format == 'text') {
-            if (this.tclass != mitem.nuc.tclass && this.tclass != '') this.FlushText();
-            if (this.tbuf == '' && this.cbuf == '') {this.tx = this.x}
-            this.tbuf += mitem.nuc.html; this.tclass = mitem.nuc.tclass;
-          } else  {
-            this.FlushClassed();
-            if (mitem.nuc.x || mitem.nuc.y) this.Place(mitem.nuc);
-            if (this.hbuf == '') {this.hx = this.x}
-            this.hbuf += mitem.nuc.html;
-          }
-          this.h = Math.max(this.h,mitem.nuc.h+mitem.nuc.y); this.bh = Math.max(this.bh,mitem.nuc.bh);
-          this.d = Math.max(this.d,mitem.nuc.d-mitem.nuc.y); this.bd = Math.max(this.bd,mitem.nuc.bd);
-          break;
-      }
-    }
-    
-    this.FlushClassed(); // make sure scaling is included
-    if (this.dx) {this.hbuf += jsMath.HTML.Spacer(this.dx); this.w += this.dx}
-    if (this.hbuf == '') {return jsMath.Box.Null}
-    if (this.h == unset) {this.h = 0}
-    if (this.d == unset) {this.d = 0}
-    var box = new jsMath.Box('html',this.hbuf,this.w,this.h,this.d);
-    box.bh = this.bh; box.bd = this.bd;
-    return box;
-  },
-
-  /*
-   *  Add the font to the buffered text and move it to the
-   *  classed-text buffer.
-   */
-  FlushText: function () {
-    if (this.tbuf == '') return;
-    this.cbuf += jsMath.Typeset.AddClass(this.tclass,this.tbuf);
-    this.tbuf = ''; this.tclass = '';
-  },
-
-  /*
-   *  Add the script or scriptscript style to the text and
-   *  move it to the HTML buffer
-   */
-  FlushClassed: function () {
-    this.FlushText();
-    if (this.cbuf == '') return;
-    if (this.hbuf == '') {this.hx = this.tx}
-    this.hbuf += jsMath.Typeset.AddStyle(this.style,this.size,this.cbuf);
-    this.cbuf = '';
-  },
-
-  /*
-   *  Add a <SPAN> to position an item's HTML, and
-   *  adjust the item's height and depth.
-   *  (This may be replaced buy one of the following browser-specific
-   *   versions by Browser.Init().)
-   */
-  Place: function (item) {
-    var html = '<SPAN STYLE="position: relative;';
-    if (item.x) {html += ' margin-left:'+jsMath.HTML.Em(item.x)+';'}
-    if (item.y) {html += ' top:'+jsMath.HTML.Em(-item.y)+';'}
-    item.html = html + '">' + item.html + '</SPAN>';
-    item.h += item.y; item.d -= item.y;
-    item.x = 0; item.y = 0;
-  },
-  
-  /*
-   *  For MSIE on Windows, backspacing must be done in a separate
-   *  <SPAN>, otherwise the contents will be clipped.  Netscape
-   *  also doesn't combine vertical and horizontal spacing well.
-   *  Here, the horizontal and vertical spacing are done separately.
-   */
-  PlaceSeparateSkips: function (item) {
-    if (item.y) {
-      if (item.html.match(/^<IMG[^>]*>(<SPAN STYLE="margin-left: [-0-9.]*em"><\/SPAN>)?$/i) && !item.html.match(/top:/)) {
-        item.html = item.html.replace(/STYLE="/,
-            'STYLE="position:relative; top:'+jsMath.HTML.Em(-item.y)+';');
-      } else {
-        item.html = '<SPAN STYLE="position: relative; '
-                       + 'top:'+jsMath.HTML.Em(-item.y)+';'
-                       + '">' + item.html + '</SPAN>'
-      }
-    }
-    if (item.x) 
-      {item.html = jsMath.Browser.msieSpaceFix
-                       + '<SPAN STYLE="margin-left:'
-                       +    jsMath.HTML.Em(item.x-jsMath.Browser.spaceWidth)+';">'
-                       + jsMath.Browser.hiddenSpace + '</SPAN>' + item.html}
-    item.h += item.y; item.d -= item.y;
-    item.x = 0; item.y = 0;
-  }
-  
-});
-
-
-
-/***************************************************************************/
-
-/*
- *  The Parse object handles the parsing of the TeX input string, and creates
- *  the mList to be typeset by the Typeset object above.
- */
-
-jsMath.Parse = function (s,font,size,style) {
-  var parse = new jsMath.Parser(s,font,size,style);
-  parse.Parse();
-  return parse;
-}
-
-jsMath.Parser = function (s,font,size,style) {
-  this.string = s; this.i = 0;
-  this.mlist = new jsMath.mList(null,font,size,style);
-}
-
-jsMath.Package(jsMath.Parser,{
-  
-  // special characters
-  cmd:   '\\',
-  open:  '{',
-  close: '}',
-
-  // patterns for letters and numbers
-  letter:  /[a-z]/i,
-  number:  /[0-9]/,
-  
-  //  the \mathchar definitions (see Appendix B of the TeXbook).
-  mathchar: {
-    '!': [5,0,0x21],
-    '(': [4,0,0x28],
-    ')': [5,0,0x29],
-    '*': [2,2,0x03], // \ast
-    '+': [2,0,0x2B],
-    ',': [6,1,0x3B],
-    '-': [2,2,0x00],
-    '.': [0,1,0x3A],
-    '/': [0,1,0x3D],
-    ':': [3,0,0x3A],
-    ';': [6,0,0x3B],
-    '<': [3,1,0x3C],
-    '=': [3,0,0x3D],
-    '>': [3,1,0x3E],
-    '?': [5,0,0x3F],
-    '[': [4,0,0x5B],
-    ']': [5,0,0x5D],
-//  '{': [4,2,0x66],
-//  '}': [5,2,0x67],
-    '|': [0,2,0x6A]
-  },
-
-  //  handle special \catcode characters
-  special: {
-    '^':   'HandleSuperscript',
-    '_':   'HandleSubscript',
-    ' ':   'Space',
-    "\t":  'Space',
-    "\r":  'Space',
-    "\n":  'Space',
-    "'":   'Prime',
-    '%':   'HandleComment',
-    '&':   'HandleEntry'
-  },
-
-  // the \mathchardef table (see Appendix B of the TeXbook).
-  mathchardef: {
-  // brace parts
-    braceld:      [0,3,0x7A],
-    bracerd:      [0,3,0x7B],
-    bracelu:      [0,3,0x7C],
-    braceru:      [0,3,0x7D],
-
-  // Greek letters
-    alpha:        [0,1,0x0B],
-    beta:         [0,1,0x0C],
-    gamma:        [0,1,0x0D],
-    delta:        [0,1,0x0E],
-    epsilon:      [0,1,0x0F],
-    zeta:         [0,1,0x10],
-    eta:          [0,1,0x11],
-    theta:        [0,1,0x12],
-    iota:         [0,1,0x13],
-    kappa:        [0,1,0x14],
-    lambda:       [0,1,0x15],
-    mu:           [0,1,0x16],
-    nu:           [0,1,0x17],
-    xi:           [0,1,0x18],
-    pi:           [0,1,0x19],
-    rho:          [0,1,0x1A],
-    sigma:        [0,1,0x1B],
-    tau:          [0,1,0x1C],
-    upsilon:      [0,1,0x1D],
-    phi:          [0,1,0x1E],
-    chi:          [0,1,0x1F],
-    psi:          [0,1,0x20],
-    omega:        [0,1,0x21],
-    varepsilon:   [0,1,0x22],
-    vartheta:     [0,1,0x23],
-    varpi:        [0,1,0x24],
-    varrho:       [0,1,0x25],
-    varsigma:     [0,1,0x26],
-    varphi:       [0,1,0x27],
-    
-    Gamma:        [7,0,0x00],
-    Delta:        [7,0,0x01],
-    Theta:        [7,0,0x02],
-    Lambda:       [7,0,0x03],
-    Xi:           [7,0,0x04],
-    Pi:           [7,0,0x05],
-    Sigma:        [7,0,0x06],
-    Upsilon:      [7,0,0x07],
-    Phi:          [7,0,0x08],
-    Psi:          [7,0,0x09],
-    Omega:        [7,0,0x0A],
-
-  // Ord symbols
-    aleph:        [0,2,0x40],
-    imath:        [0,1,0x7B],
-    jmath:        [0,1,0x7C],
-    ell:          [0,1,0x60],
-    wp:           [0,1,0x7D],
-    Re:           [0,2,0x3C],
-    Im:           [0,2,0x3D],
-    partial:      [0,1,0x40],
-    infty:        [0,2,0x31],
-    prime:        [0,2,0x30],
-    emptyset:     [0,2,0x3B],
-    nabla:        [0,2,0x72],
-    surd:         [1,2,0x70],
-    top:          [0,2,0x3E],
-    bot:          [0,2,0x3F],
-    triangle:     [0,2,0x34],
-    forall:       [0,2,0x38],
-    exists:       [0,2,0x39],
-    neg:          [0,2,0x3A],
-    lnot:         [0,2,0x3A],
-    flat:         [0,1,0x5B],
-    natural:      [0,1,0x5C],
-    sharp:        [0,1,0x5D],
-    clubsuit:     [0,2,0x7C],
-    diamondsuit:  [0,2,0x7D],
-    heartsuit:    [0,2,0x7E],
-    spadesuit:    [0,2,0x7F],
-
-  // big ops
-    coprod:      [1,3,0x60],
-    bigvee:      [1,3,0x57],
-    bigwedge:    [1,3,0x56],
-    biguplus:    [1,3,0x55],
-    bigcap:      [1,3,0x54],
-    bigcup:      [1,3,0x53],
-    intop:       [1,3,0x52], 
-    prod:        [1,3,0x51],
-    sum:         [1,3,0x50],
-    bigotimes:   [1,3,0x4E],
-    bigoplus:    [1,3,0x4C],
-    bigodot:     [1,3,0x4A],
-    ointop:      [1,3,0x48],
-    bigsqcup:    [1,3,0x46],
-    smallint:    [1,2,0x73],
-
-  // binary operations
-    triangleleft:      [2,1,0x2F],
-    triangleright:     [2,1,0x2E],
-    bigtriangleup:     [2,2,0x34],
-    bigtriangledown:   [2,2,0x35],
-    wedge:       [2,2,0x5E],
-    land:        [2,2,0x5E],
-    vee:         [2,2,0x5F],
-    lor:         [2,2,0x5F],
-    cap:         [2,2,0x5C],
-    cup:         [2,2,0x5B],
-    ddagger:     [2,2,0x7A],
-    dagger:      [2,2,0x79],
-    sqcap:       [2,2,0x75],
-    sqcup:       [2,2,0x74],
-    uplus:       [2,2,0x5D],
-    amalg:       [2,2,0x71],
-    diamond:     [2,2,0x05],
-    bullet:      [2,2,0x0F],
-    wr:          [2,2,0x6F],
-    div:         [2,2,0x04],
-    odot:        [2,2,0x0C],
-    oslash:      [2,2,0x0B],
-    otimes:      [2,2,0x0A],
-    ominus:      [2,2,0x09],
-    oplus:       [2,2,0x08],
-    mp:          [2,2,0x07],
-    pm:          [2,2,0x06],
-    circ:        [2,2,0x0E],
-    bigcirc:     [2,2,0x0D],
-    setminus:    [2,2,0x6E], // for set difference A\setminus B
-    cdot:        [2,2,0x01],
-    ast:         [2,2,0x03],
-    times:       [2,2,0x02],
-    star:        [2,1,0x3F],
-
-  // Relations
-    propto:      [3,2,0x2F],
-    sqsubseteq:  [3,2,0x76],
-    sqsupseteq:  [3,2,0x77],
-    parallel:    [3,2,0x6B],
-    mid:         [3,2,0x6A],
-    dashv:       [3,2,0x61],
-    vdash:       [3,2,0x60],
-    leq:         [3,2,0x14],
-    le:          [3,2,0x14],
-    geq:         [3,2,0x15],
-    ge:          [3,2,0x15],
-    succ:        [3,2,0x1F],
-    prec:        [3,2,0x1E],
-    approx:      [3,2,0x19],
-    succeq:      [3,2,0x17],
-    preceq:      [3,2,0x16],
-    supset:      [3,2,0x1B],
-    subset:      [3,2,0x1A],
-    supseteq:    [3,2,0x13],
-    subseteq:    [3,2,0x12],
-    'in':        [3,2,0x32],
-    ni:          [3,2,0x33],
-    owns:        [3,2,0x33],
-    gg:          [3,2,0x1D],
-    ll:          [3,2,0x1C],
-    not:         [3,2,0x36],
-    sim:         [3,2,0x18],
-    simeq:       [3,2,0x27],
-    perp:        [3,2,0x3F],
-    equiv:       [3,2,0x11],
-    asymp:       [3,2,0x10],
-    smile:       [3,1,0x5E],
-    frown:       [3,1,0x5F],
-
-  // Arrows
-    Leftrightarrow:   [3,2,0x2C],
-    Leftarrow:        [3,2,0x28],
-    Rightarrow:       [3,2,0x29],
-    leftrightarrow:   [3,2,0x24],
-    leftarrow:        [3,2,0x20],
-    gets:             [3,2,0x20],
-    rightarrow:       [3,2,0x21],
-    to:               [3,2,0x21],
-    mapstochar:       [3,2,0x37],
-    leftharpoonup:    [3,1,0x28],
-    leftharpoondown:  [3,1,0x29],
-    rightharpoonup:   [3,1,0x2A],
-    rightharpoondown: [3,1,0x2B],
-    nearrow:          [3,2,0x25],
-    searrow:          [3,2,0x26],
-    nwarrow:          [3,2,0x2D],
-    swarrow:          [3,2,0x2E],
-
-    hbarchar:   [0,0,0x16], // for \hbar
-    lhook:      [3,1,0x2C],
-    rhook:      [3,1,0x2D],
-
-    ldotp:      [6,1,0x3A], // ldot as a punctuation mark
-    cdotp:      [6,2,0x01], // cdot as a punctuation mark
-    colon:      [6,0,0x3A], // colon as a punctuation mark
-
-    '#':        [7,0,0x23],
-    '$':        [7,0,0x24],
-    '%':        [7,0,0x25],
-    '&':        [7,0,0x26]
-  },
-  
-  // The delimiter table (see Appendix B of the TeXbook)
-  delimiter: {
-    '(':                [0,0,0x28,3,0x00],
-    ')':                [0,0,0x29,3,0x01],
-    '[':                [0,0,0x5B,3,0x02],
-    ']':                [0,0,0x5D,3,0x03],
-    '<':                [0,2,0x68,3,0x0A],
-    '>':                [0,2,0x69,3,0x0B],
-    '/':                [0,0,0x2F,3,0x0E],
-    '|':                [0,2,0x6A,3,0x0C],
-    '.':                [0,0,0x00,0,0x00],
-    '\\':               [0,2,0x6E,3,0x0F],
-    '\\lmoustache':     [4,3,0x7A,3,0x40],  // top from (, bottom from )
-    '\\rmoustache':     [5,3,0x7B,3,0x41],  // top from ), bottom from (
-    '\\lgroup':         [4,6,0x28,3,0x3A],  // extensible ( with sharper tips
-    '\\rgroup':         [5,6,0x29,3,0x3B],  // extensible ) with sharper tips
-    '\\arrowvert':      [0,2,0x6A,3,0x3C],  // arrow without arrowheads
-    '\\Arrowvert':      [0,2,0x6B,3,0x3D],  // double arrow without arrowheads
-//  '\\bracevert':      [0,7,0x7C,3,0x3E],  // the vertical bar that extends braces
-    '\\bracevert':      [0,2,0x6A,3,0x3E],  // we don't load tt, so use | instead
-    '\\Vert':           [0,2,0x6B,3,0x0D],
-    '\\|':              [0,2,0x6B,3,0x0D],
-    '\\vert':           [0,2,0x6A,3,0x0C],
-    '\\uparrow':        [3,2,0x22,3,0x78],
-    '\\downarrow':      [3,2,0x23,3,0x79],
-    '\\updownarrow':    [3,2,0x6C,3,0x3F],
-    '\\Uparrow':        [3,2,0x2A,3,0x7E],
-    '\\Downarrow':      [3,2,0x2B,3,0x7F],
-    '\\Updownarrow':    [3,2,0x6D,3,0x77],
-    '\\backslash':      [0,2,0x6E,3,0x0F],  // for double coset G\backslash H
-    '\\rangle':         [5,2,0x69,3,0x0B],
-    '\\langle':         [4,2,0x68,3,0x0A],
-    '\\rbrace':         [5,2,0x67,3,0x09],
-    '\\lbrace':         [4,2,0x66,3,0x08],
-    '\\}':              [5,2,0x67,3,0x09],
-    '\\{':              [4,2,0x66,3,0x08],
-    '\\rceil':          [5,2,0x65,3,0x07],
-    '\\lceil':          [4,2,0x64,3,0x06],
-    '\\rfloor':         [5,2,0x63,3,0x05],
-    '\\lfloor':         [4,2,0x62,3,0x04]
-  },
-
-  /*
-   *  The basic macros for plain TeX.
-   *
-   *  When the control sequence on the left is called, the JavaScript
-   *  funtion on the right is called, with the name of the control sequence
-   *  as its first parameter (this way, the same function can be called by
-   *  several different control sequences to do similar actions, and the
-   *  function can still tell which TeX command was issued).  If the right
-   *  is an array, the first entry is the routine to call, and the
-   *  remaining entries in the array are parameters to pass to the function
-   *  as the second parameter (they are in an array reference).
-   *  
-   *  Note:  TeX macros as defined by the user are discussed below.
-   */
-  macros: {
-    displaystyle:      ['HandleStyle','D'],
-    textstyle:         ['HandleStyle','T'],
-    scriptstyle:       ['HandleStyle','S'],
-    scriptscriptstyle: ['HandleStyle','SS'],
-    
-    rm:                ['HandleFont',0],
-    mit:               ['HandleFont',1],
-    oldstyle:          ['HandleFont',1],
-    cal:               ['HandleFont',2],
-    it:                ['HandleFont',4],
-    bf:                ['HandleFont',6],
-    
-    left:              'HandleLeft',
-    right:             'HandleRight',
-
-    arcsin:       ['NamedOp',0],
-    arccos:       ['NamedOp',0],
-    arctan:       ['NamedOp',0],
-    arg:          ['NamedOp',0],
-    cos:          ['NamedOp',0],
-    cosh:         ['NamedOp',0],
-    cot:          ['NamedOp',0],
-    coth:         ['NamedOp',0],
-    csc:          ['NamedOp',0],
-    deg:          ['NamedOp',0],
-    det:           'NamedOp',
-    dim:          ['NamedOp',0],
-    exp:          ['NamedOp',0],
-    gcd:           'NamedOp',
-    hom:          ['NamedOp',0],
-    inf:           'NamedOp',
-    ker:          ['NamedOp',0],
-    lg:           ['NamedOp',0],
-    lim:           'NamedOp',
-    liminf:       ['NamedOp',null,'lim<SPAN STYLE="margin-left: '+1/6+'em"></SPAN>inf'],
-    limsup:       ['NamedOp',null,'lim<SPAN STYLE="margin-left: '+1/6+'em"></SPAN>sup'],
-    ln:           ['NamedOp',0],
-    log:          ['NamedOp',0],
-    max:           'NamedOp',
-    min:           'NamedOp',
-    Pr:            'NamedOp',
-    sec:          ['NamedOp',0],
-    sin:          ['NamedOp',0],
-    sinh:         ['NamedOp',0],
-    sup:           'NamedOp',
-    tan:          ['NamedOp',0],
-    tanh:         ['NamedOp',0],
-
-    vcenter:        ['HandleAtom','vcenter'],
-    overline:       ['HandleAtom','overline'],
-    underline:      ['HandleAtom','underline'],
-    over:            'HandleOver',
-    overwithdelims:  'HandleOver',
-    atop:            'HandleOver',
-    atopwithdelims:  'HandleOver',
-    above:           'HandleOver',
-    abovewithdelims: 'HandleOver',
-    brace:           ['HandleOver','\\{','\\}'],
-    brack:           ['HandleOver','[',']'],
-    choose:          ['HandleOver','(',')'],
-    
-    overbrace:       ['HandleLeaders','downbrace',1],
-    underbrace:      ['HandleLeaders','upbrace',1,1],
-    overrightarrow:  ['HandleLeaders','rightarrow'],
-    overleftarrow:   ['HandleLeaders','leftarrow'],
-
-    llap:            'HandleLap',
-    rlap:            'HandleLap',
-    ulap:            'HandleLap',
-    dlap:            'HandleLap',
-    raise:           'RaiseLower',
-    lower:           'RaiseLower',
-    moveleft:        'MoveLeftRight',
-    moveright:       'MoveLeftRight',
-
-    frac:            'Frac',
-    root:            'Root',
-    sqrt:            'Sqrt',
-
-    //  TeX substitution macros
-    hbar:               ['Macro','\\hbarchar\\kern-.5em h'],
-    ne:                 ['Macro','\\not='],
-    neq:                ['Macro','\\not='],
-    notin:              ['Macro','\\mathrel{\\rlap{\\kern2mu/}}\\in'],
-    cong:               ['Macro','\\mathrel{\\lower2mu{\\mathrel{{\\rlap{=}\\raise6mu\\sim}}}}'],
-    bmod:               ['Macro','\\mathbin{\\rm mod}'],
-    pmod:               ['Macro','\\kern 18mu ({\\rm mod}\\,\\,#1)',1],
-    'int':              ['Macro','\\intop\\nolimits'],
-    oint:               ['Macro','\\ointop\\nolimits'],
-    doteq:              ['Macro','\\buildrel\\textstyle.\\over='],
-    ldots:              ['Macro','\\mathinner{\\ldotp\\ldotp\\ldotp}'],
-    cdots:              ['Macro','\\mathinner{\\cdotp\\cdotp\\cdotp}'],
-    vdots:              ['Macro','\\mathinner{\\rlap{\\raise8pt{.\\rule 0pt 6pt 0pt}}\\rlap{\\raise4pt{.}}.}'],
-    ddots:              ['Macro','\\mathinner{\\kern1mu\\raise7pt{\\rule 0pt 7pt 0pt .}\\kern2mu\\raise4pt{.}\\kern2mu\\raise1pt{.}\\kern1mu}'],
-    joinrel:            ['Macro','\\mathrel{\\kern-4mu}'],
-    relbar:             ['Macro','\\mathrel{\\smash-}'], // \smash, because - has the same height as +
-    Relbar:             ['Macro','\\mathrel='],
-    bowtie:             ['Macro','\\mathrel\\triangleright\\joinrel\\mathrel\\triangleleft'],
-    models:             ['Macro','\\mathrel|\\joinrel='],
-    mapsto:             ['Macro','\\mapstochar\\rightarrow'],
-    rightleftharpoons:  ['Macro','\\vcenter{\\mathrel{\\rlap{\\raise3mu{\\rightharpoonup}}}\\leftharpoondown}'],
-    hookrightarrow:     ['Macro','\\lhook\\joinrel\\rightarrow'],
-    hookleftarrow:      ['Macro','\\leftarrow\\joinrel\\rhook'],
-    Longrightarrow:     ['Macro','\\Relbar\\joinrel\\Rightarrow'],
-    longrightarrow:     ['Macro','\\relbar\\joinrel\\rightarrow'],
-    longleftarrow:      ['Macro','\\leftarrow\\joinrel\\relbar'],
-    Longleftarrow:      ['Macro','\\Leftarrow\\joinrel\\Relbar'],
-    longmapsto:         ['Macro','\\mapstochar\\char{cmsy10}{0}\\joinrel\\rightarrow'],
-    longleftrightarrow: ['Macro','\\leftarrow\\joinrel\\rightarrow'],
-    Longleftrightarrow: ['Macro','\\Leftarrow\\joinrel\\Rightarrow'],
-    iff:                ['Macro','\\;\\Longleftrightarrow\\;'],
-    mathrm:             ['Macro','{\\rm #1}',1],
-    mathbf:             ['Macro','{\\bf #1}',1],
-    mathbb:             ['Macro','{\\bf #1}',1],
-    mathit:             ['Macro','{\\it #1}',1],
-
-    TeX:                ['Macro','T\\kern-.1667em\\lower.5ex{E}\\kern-.125em X'],
-
-    limits:       ['Limits',1],
-    nolimits:     ['Limits',0],
-
-    ',':          ['Spacer',1/6],
-    ':':          ['Spacer',1/6],  // for LaTeX
-    '>':          ['Spacer',2/9],
-    ';':          ['Spacer',5/18],
-    '!':          ['Spacer',-1/6],
-    enspace:      ['Spacer',1/2],
-    quad:         ['Spacer',1],
-    qquad:        ['Spacer',2],
-    thinspace:    ['Spacer',1/6],
-    negthinspace: ['Spacer',-1/6],
-    
-    hskip:         'Hskip',
-    kern:          'Hskip',
-    rule:          ['Rule','colored'],
-    space:         ['Rule','blank'],
-    
-    big:        ['MakeBig','ord',0.85],
-    Big:        ['MakeBig','ord',1.15],
-    bigg:       ['MakeBig','ord',1.45],
-    Bigg:       ['MakeBig','ord',1.75],
-    bigl:       ['MakeBig','open',0.85],
-    Bigl:       ['MakeBig','open',1.15],
-    biggl:      ['MakeBig','open',1.45],
-    Biggl:      ['MakeBig','open',1.75],
-    bigr:       ['MakeBig','close',0.85],
-    Bigr:       ['MakeBig','close',1.15],
-    biggr:      ['MakeBig','close',1.45],
-    Biggr:      ['MakeBig','close',1.75],
-    bigm:       ['MakeBig','rel',0.85],
-    Bigm:       ['MakeBig','rel',1.15],
-    biggm:      ['MakeBig','rel',1.45],
-    Biggm:      ['MakeBig','rel',1.75],
-    
-    mathord:    ['HandleAtom','ord'],
-    mathop:     ['HandleAtom','op'],
-    mathopen:   ['HandleAtom','open'],
-    mathclose:  ['HandleAtom','close'],
-    mathbin:    ['HandleAtom','bin'],
-    mathrel:    ['HandleAtom','rel'],
-    mathpunct:  ['HandleAtom','punct'],
-    mathinner:  ['HandleAtom','inner'],
-    
-    mathchoice: 'MathChoice',
-    buildrel:   'BuildRel',
-    
-    hbox:       'HBox',
-    text:       'HBox',
-    mbox:       'HBox',
-    fbox:       'FBox',
-
-    strut:      'Strut',
-    mathstrut:  ['Macro','\\vphantom{(}'],
-    phantom:    ['Phantom',1,1],
-    vphantom:   ['Phantom',1,0],
-    hphantom:   ['Phantom',0,1],
-    smash:      'Smash',
-    
-    acute:      ['MathAccent', [7,0,0x13]],
-    grave:      ['MathAccent', [7,0,0x12]],
-    ddot:       ['MathAccent', [7,0,0x7F]],
-    tilde:      ['MathAccent', [7,0,0x7E]],
-    bar:        ['MathAccent', [7,0,0x16]],
-    breve:      ['MathAccent', [7,0,0x15]],
-    check:      ['MathAccent', [7,0,0x14]],
-    hat:        ['MathAccent', [7,0,0x5E]],
-    vec:        ['MathAccent', [0,1,0x7E]],
-    dot:        ['MathAccent', [7,0,0x5F]],
-    widetilde:  ['MathAccent', [0,3,0x65]],
-    widehat:    ['MathAccent', [0,3,0x62]],
-
-    '_':        ['Replace','ord','_','normal',-.4,.1],
-    ' ':        ['Replace','ord','&nbsp;','normal'],
-    angle:      ['Replace','ord','&#x2220;','normal'],
-        
-    matrix:     'Matrix',
-    array:      'Matrix',  // ### still need to do alignment options ###
-    pmatrix:    ['Matrix','(',')','c'],
-    cases:      ['Matrix','\\{','.',['l','l']],
-    cr:         'HandleRow',
-    '\\':       'HandleRow',
-    
-    //  LaTeX
-    begin:      'Begin',
-    end:        'End',
-    tiny:       ['HandleSize',0],
-    Tiny:       ['HandleSize',1],  // non-standard
-    scriptsize: ['HandleSize',2],
-    small:      ['HandleSize',3],
-    normalsize: ['HandleSize',4],
-    large:      ['HandleSize',5],
-    Large:      ['HandleSize',6],
-    LARGE:      ['HandleSize',7],
-    huge:       ['HandleSize',8],
-    Huge:       ['HandleSize',9],
-    dots:       ['Macro','\\ldots'],
-
-    //  Extensions to TeX
-    color:      'Color',
-    href:       'Href',
-    'class':    'Class',
-    style:      'Style',
-    unicode:    'Unicode',
-
-    //  debugging and test routines
-    'char':     'Char'
-  },
-  
-  /*
-   *  LaTeX environments
-   */
-  environments: {
-    array:      'Array',
-    matrix:     ['Array',null,null,'c'],
-    pmatrix:    ['Array','(',')','c'],
-    bmatrix:    ['Array','[',']','c'],
-    Bmatrix:    ['Array','\\{','\\}','c'],
-    vmatrix:    ['Array','\\vert','\\vert','c'],
-    Vmatrix:    ['Array','\\Vert','\\Vert','c'],
-    cases:      ['Array','\\{','.','ll'],
-    eqnarray:   ['Array',null,null,'rcl',[5/18,5/18]]
-  },
-
-  /*
-   *  The horizontally stretchable delimiters
-   */
-  leaders: {
-    downbrace:  {left: [3,0x7A], lmid: [3,0x7D], rmid: [3,0x7C], right: [3,0x7B]},
-    upbrace:    {left: [3,0x7C], lmid: [3,0x7B], rmid: [3,0x7A], right: [3,0x7D]},
-    leftarrow:  {left: [2,0x20], rep:  [2,0x00]},
-    rightarrow: {rep:  [2,0x00], right: [2,0x21]}
-  },
-
-
-  /***************************************************************************/
-
-  /*
-   *  Add special characters to list above.  (This makes it possible
-   *  to define them in a variable that the user can change.)
-   */
-  AddSpecial: function (obj) {
-    for (var id in obj) {
-      jsMath.Parser.prototype.special[jsMath.Parser.prototype[id]] = obj[id];
-    }
-  },
-
-  /*
-   *  Throw an error
-   */
-  Error: function (s) {
-   this.i = this.string.length;
-    if (s.error) {this.error = s.error} else {
-      if (!this.error) {this.error = s}
-    }
-  },
-
-  /***************************************************************************/
-
-  /*
-   *  Check if the next character is a space
-   */
-  nextIsSpace: function () {
-    return this.string.charAt(this.i) == ' ';
-  },
-
-  /*
-   *  Parse a substring to get its mList, and return it.
-   *  Check that no errors occured
-   */
-  Process: function (arg) {
-    var data = this.mlist.data;
-    arg = jsMath.Parse(arg,data.font,data.size,data.style);
-      if (arg.error) {this.Error(arg); return}
-    if (arg.mlist.Length() == 0) {return null}
-    if (arg.mlist.Length() == 1) {
-      var atom = arg.mlist.Last();
-      if (atom.atom && atom.type == 'ord' && atom.nuc &&
-         !atom.sub && !atom.sup && (atom.nuc.type == 'text' || atom.nuc.type == 'TeX'))
-             {return atom.nuc}
-    }
-    return {type: 'mlist', mlist: arg.mlist};
-  },
-
-  /*
-   *  Get and return a control-sequence name from the TeX string
-   */
-  GetCommand: function () {
-    var letter = /^([a-z]+|.) ?/i;
-    var cmd = letter.exec(this.string.slice(this.i));
-    if (cmd) {this.i += cmd[1].length; return cmd[1]}
-    this.Error("Missing control sequnece name at end of string or argument"); return
-  },
-
-  /*
-   *  Get and return a TeX argument (either a single character or control sequence,
-   *  or the contents of the next set of braces).
-   */
-  GetArgument: function (name,noneOK) {
-    while (this.nextIsSpace()) {this.i++}
-    if (this.i >= this.string.length) {if (!noneOK) this.Error("Missing argument for "+name); return}
-    if (this.string.charAt(this.i) == this.close) {if (!noneOK) this.Error("Extra close brace"); return}
-    if (this.string.charAt(this.i) == this.cmd) {this.i++; return this.cmd+this.GetCommand()}
-    if (this.string.charAt(this.i) != this.open) {return this.string.charAt(this.i++)}
-    var j = ++this.i; var pcount = 1; var c = '';
-    while (this.i < this.string.length) {
-      c = this.string.charAt(this.i++);
-      if (c == this.cmd) {this.i++}
-      else if (c == this.open) {pcount++}
-      else if (c == this.close) {
-        if (pcount == 0) {this.Error("Extra close brace"); return}
-        if (--pcount == 0) {return this.string.slice(j,this.i-1)}
-      }
-    }
-    this.Error("Missing close brace");
-  },
-
-  /*
-   *  Get an argument and process it into an mList
-   */
-  ProcessArg: function (name) {
-    var arg = this.GetArgument(name); if (this.error) return;
-    return this.Process(arg);
-  },
-
-  /*
-   *  Get the name of a delimiter (check it in the delimiter list).
-   */
-  GetDelimiter: function (name) {
-    while (this.nextIsSpace()) {this.i++}
-    var c = this.string.charAt(this.i);
-    if (this.i < this.string.length) {
-      this.i++;
-      if (c == this.cmd) {c = '\\'+this.GetCommand(name); if (this.error) return}
-      if (this.delimiter[c] != null) {return this.delimiter[c]}
-    }
-    this.Error("Missing or unrecognized delimiter for "+name);
-  },
-  
-  /*
-   *  Get a dimension (including its units).
-   *  Convert the dimen to em's, except for mu's, which must be
-   *  converted when typeset.
-   */
-  GetDimen: function (name,nomu) {
-    var rest; var advance = 0;
-    if (this.nextIsSpace()) {this.i++}
-    if (this.string.charAt(this.i) == '{') {
-      rest = this.GetArgument(name);
-    } else {
-      rest = this.string.slice(this.i);
-      advance = 1;
-    }
-    var match = rest.match(/^\s*([-+]?(\.\d+|\d+(\.\d*)?))(pt|em|ex|mu|px)/);
-    if (!match) {this.Error("Missing dimension or its units for "+name); return}
-    if (advance) {
-      this.i += match[0].length;
-      if (this.nextIsSpace()) {this.i++}
-    }
-    var d = match[1]-0;
-    if (match[4] == 'px') {d /= jsMath.em}
-    else if (match[4] == 'pt') {d /= 10}
-    else if (match[4] == 'ex') {d *= jsMath.TeX.x_height}
-    else if (match[4] == 'mu') {if (nomu) {d = d/18} else {d = [d,'mu']}}
-    return d;
-  },
-
-  /*
-   *  Get the next non-space character
-   */
-  GetNext: function () {
-    while (this.nextIsSpace()) {this.i++}
-    return this.string.charAt(this.i);
-  },
-  
-  /*
-   *  Get an optional LaTeX argument in brackets
-   */
-  GetBrackets: function (name) {
-    var c = this.GetNext(); if (c != '[') return '';
-    var start = ++this.i; var pcount = 0;
-    while (this.i < this.string.length) {
-      var c = this.string.charAt(this.i++);
-      if (c == '{') {pcount++}
-      else if (c == '}') {
-        if (pcount == 0)
-          {this.Error("Extra close brace while looking for ']'"); return}
-        pcount --;
-      } else if (c == this.cmd) {
-        this.i++;
-      } else if (c == ']') {
-        if (pcount == 0) {return this.string.slice(start,this.i-1)}
-      }
-    }
-    this.Error("Couldn't find closing ']' for argument to "+this.cmd+name);
-  },
-  
-  /*
-   *  Get everything up to the given control sequence name (token)
-   */
-  GetUpto: function (name,token) {
-    while (this.nextIsSpace()) {this.i++}
-    var start = this.i; var pcount = 0;
-    while (this.i < this.string.length) {
-      var c = this.string.charAt(this.i++);
-      if (c == '{') {pcount++}
-      else if (c == '}') {
-        if (pcount == 0)
-          {this.Error("Extra close brace while looking for "+this.cmd+token); return}
-        pcount --;
-      } else if (c == this.cmd) {
-        // really need separate counter for begin/end
-        // and it should really be a stack (new pcount for each begin)
-        if (this.string.slice(this.i,this.i+5) == "begin") {pcount++; this.i+=4}
-        else if (this.string.slice(this.i,this.i+3) == "end") {
-          if (pcount > 0) {pcount--; this.i += 2}
-        }
-        if (pcount == 0)  {
-          if (this.string.slice(this.i,this.i+token.length) == token) {
-            c = this.string.charAt(this.i+token.length);
-            if (c.match(/[^a-z]/i) || !token.match(/[a-z]/i)) {
-              var arg = this.string.slice(start,this.i-1);
-              this.i += token.length;
-              return arg;
-            }
-          }
-        }
-        this.i++;
-      }
-    }
-    this.Error("Couldn't find "+this.cmd+token+" for "+name);
-  },
-
-  /*
-   *  Get a parameter delimited by a control sequence, and
-   *  process it to get its mlist
-   */
-  ProcessUpto: function (name,token) {
-    var arg = this.GetUpto(name,token); if (this.error) return;
-    return this.Process(arg);
-  },
-
-  /*
-   *  Get everything up to \end{env}
-   */
-  GetEnd: function (env) {
-    var body = ''; var name = '';
-    while (name != env) {
-      body += this.GetUpto('begin{'+env+'}','end'); if (this.error) return;
-      name = this.GetArgument(this.cmd+'end'); if (this.error) return;
-    }
-    return body;
-  },
-  
-
-  /***************************************************************************/
-
-
-  /*
-   *  Ignore spaces
-   */
-  Space: function () {},
-
-  /*
-   *  Collect together any primes and convert them to a superscript
-   */
-  Prime: function (c) {
-    var base = this.mlist.Last();
-    if (base == null || (!base.atom && base.type != 'box' && base.type != 'frac'))
-       {base = this.mlist.Add(jsMath.mItem.Atom('ord',null))}
-    if (base.sup) {this.Error("Prime causes double exponent: use braces to clarify"); return}
-    var sup = '';
-    while (c == "'") {sup += '\\prime'; c = this.GetNext(); if (c == "'") {this.i++}}
-    base.sup = this.Process(sup);
-  },
-
-  /*
-   *  Raise or lower its parameter by a given amount
-   *  @@@ Note that this is different from TeX, which requires an \hbox @@@
-   *  ### make this work with mu's ###
-   */
-  RaiseLower: function (name) {
-    var h = this.GetDimen(this.cmd+name,1); if (this.error) return;
-    var box = this.ProcessArg(this.cmd+name); if (this.error) return;
-    if (name == 'lower') {h = -h}
-    this.mlist.Add(new jsMath.mItem('raise',{nuc: box, raise: h}));
-  },
-  
-  /*
-   *  Shift an expression to the right or left
-   *  @@@ Note that this is different from TeX, which requires a \vbox @@@
-   *  ### make this work with mu's ###
-   */
-  MoveLeftRight: function (name) {
-    var x = this.GetDimen(this.cmd+name,1); if (this.error) return;
-    var box = this.ProcessArg(this.cmd+name); if (this.error) return;
-    if (name == 'moveleft') {x = -x}
-    this.mlist.Add(jsMath.mItem.Space(x));
-    this.mlist.Add(jsMath.mItem.Atom('ord',box));
-    this.mlist.Add(jsMath.mItem.Space(-x));
-  },
-
-  /*
-   *  Show the argument in a particular color
-   *  ### doesn't affect horizontal rules; can we fix that? ###
-   */
-  Color: function (name) {
-    var color = this.GetArgument(this.cmd+name); if (this.error) return;
-    // check that it looks like a color?
-    this.AddHTML(name,['<SPAN STYLE="color: '+color+'">','</SPAN>']);
-  },
-  
-  /*
-   *  Make the argument be a link
-   */
-  Href: function (name) {
-    var href = this.GetArgument(this.cmd+name); if (this.error) return;
-    this.AddHTML(name,['<A CLASS="mathlink" HREF="'+href+'">','</A>']);
-  },
-  
-  /*
-   *  Apply a CSS class to the argument
-   */
-  Class: function (name) {
-    var clss = this.GetArgument(this.cmd+name); if (this.error) return;
-    this.AddHTML(name,['<SPAN CLASS="'+clss+'">','</SPAN>']);
-  },
-  
-  /*
-   *  Apply a CSS style to the argument
-   */
-  Style: function (name) {
-    var style = this.GetArgument(this.cmd+name); if (this.error) return;
-    this.AddHTML(name,['<SPAN STYLE="'+style+'">','</SPAN>']);
-  },
-  
-  /*
-   *  Insert some raw HTML around the argument (this will not affect
-   *  the spacing or other TeX features)
-   */
-  AddHTML: function (name,params) {
-    var data = this.mlist.data;
-    var arg = this.GetArgument(this.cmd+name); if (this.error) return;
-    arg = jsMath.Parse(arg,data.font,data.size,data.style);
-      if (arg.error) {this.Error(arg); return}
-    this.mlist.Add(jsMath.mItem.HTML(params[0]));
-    for (var i = 0; i < arg.mlist.Length(); i++) {this.mlist.Add(arg.mlist.Get(i))}
-    this.mlist.Add(jsMath.mItem.HTML(params[1]));
-  },
-  
-  /*
-   *  Insert a unicode reference as an Ord atom.  Its argument should
-   *  be the unicode code point, e.g. \unicode{8211}, or \unicode{x203F}.
-   *  You can also specify the height and depth in ems, e.g.,
-   *  \unicode{8211,.6,-.3}
-   */
-  Unicode: function (name) {
-    var arg = this.GetArgument(this.cmd+name); if (this.error) return;
-    arg = arg.split(','); arg[0] = '&#'+arg[0]+';';
-    if (!arg[1]) {arg[1] = 'normal'}
-    this.mlist.Add(jsMath.mItem.TextAtom('ord',arg[0],arg[1],arg[2],arg[3]));
-  },
-  
-  /*
-   *  Implements \frac{num}{den}
-   */
-  Frac: function (name) {
-    var num = this.ProcessArg(this.cmd+name); if (this.error) return;
-    var den = this.ProcessArg(this.cmd+name); if (this.error) return;
-    this.mlist.Add(jsMath.mItem.Fraction('over',num,den));
-  },
-  
-  /*
-   *  Implements \sqrt[n]{...}
-   */
-  Sqrt: function (name) {
-    var n = this.GetBrackets(this.cmd+name); if (this.error) return;
-    var arg = this.ProcessArg(this.cmd+name); if (this.error) return;
-    box = jsMath.mItem.Atom('radical',arg);
-    if (this.n != '') {box.root = this.Process(n); if (this.error) return}
-    this.mlist.Add(box);
-  },
-
-  /*
-   *  Implements \root...\of{...}
-   */
-  Root: function (name) {
-    var n = this.ProcessUpto(this.cmd+name,'of'); if (this.error) return;
-    var arg = this.ProcessArg(this.cmd+name); if (this.error) return;
-    box = jsMath.mItem.Atom('radical',arg);
-    box.root = n; this.mlist.Add(box);
-  },
-  
-
-  /*
-   *  Implements \mathchoice{}{}{}{}
-   */
-  MathChoice: function (name) {
-    var D  = this.ProcessArg(this.cmd+name); if (this.error) return;
-    var T  = this.ProcessArg(this.cmd+name); if (this.error) return;
-    var S  = this.ProcessArg(this.cmd+name); if (this.error) return;
-    var SS = this.ProcessArg(this.cmd+name); if (this.error) return;
-    var box = new jsMath.mItem('choice',{D: D, T: T, S: S, SS: SS});
-    this.mlist.Add(new jsMath.mItem('choice',{D: D, T: T, S: S, SS: SS}));
-  },
-  
-  /*
-   *  Implements \buildrel...\over{...}
-   */
-  BuildRel: function (name) {
-    var top = this.ProcessUpto(this.cmd+name,'over'); if (this.error) return;
-    var bot = this.ProcessArg(this.cmd+name); if (this.error) return;
-    var op = jsMath.mItem.Atom('op',bot);
-    op.limits = 1; op.sup = top;
-    this.mlist.Add(op);
-  },
-
-  /*
-   *  Create a delimiter of the type and size specified in the parameters
-   */
-  MakeBig: function (name,data) {
-    var type = data[0]; var h = data[1] * jsMath.p_height;
-    var delim = this.GetDelimiter(this.cmd+name); if (this.error) return;
-    this.mlist.Add(jsMath.mItem.Atom(type,jsMath.Box.Delimiter(h,delim,'T')));
-  },
-  
-  /*
-   *  Insert the specified character in the given font.
-   */
-  Char: function (name) {
-    var font = this.GetArgument(this.cmd+name); if (this.error) return;
-    var n = this.GetArgument(this.cmd+name); if (this.error) return;
-    this.mlist.Add(jsMath.mItem.Typeset(jsMath.Box.TeX(n-0,font,'T',this.mlist.data.size)));
-    return;
-  },
-  
-  /*
-   *  Create an array or matrix.
-   */
-  Matrix: function (name,delim) {
-    var data = this.mlist.data;
-    var arg = this.GetArgument(this.cmd+name); if (this.error) return;
-    var parse = new jsMath.Parser(arg+'\\\\',null,data.size);
-    parse.matrix = name; parse.row = []; parse.table = [];
-    parse.Parse(); if (parse.error) {this.Error(parse); return}
-    parse.HandleRow(name,1);  // be sure the last row is recorded
-    var box = jsMath.Box.Layout(data.size,parse.table,delim[2]);
-    // Add parentheses, if needed
-    if (delim[0] && delim[1]) {
-      var left  = jsMath.Box.Delimiter(box.h+box.d,this.delimiter[delim[0]],'T');
-      var right = jsMath.Box.Delimiter(box.h+box.d,this.delimiter[delim[1]],'T');
-      box = jsMath.Box.SetList([left,box,right],data.style,data.size);
-    }
-    this.mlist.Add(jsMath.mItem.Atom((delim[0]? 'inner': 'ord'),box));
-  },
-  
-  /*
-   *  When we see an '&', try to add a matrix entry to the row data.
-   *  (Use all the data in the current mList, and then clear it)
-   */
-  HandleEntry: function (name) {
-    if (!this.matrix) 
-      {this.Error(name+" can only appear in a matrix or array"); return}
-    if (this.mlist.data.openI != null) {
-      var open = this.mlist.Get(this.mlist.data.openI);
-      if (open.left) {this.Error("Missing "+this.cmd+"right")}
-        else {this.Error("Missing close brace")}
-    }
-    if (this.mlist.data.overI != null) {this.mlist.Over()}
-    var data = this.mlist.data;
-    this.mlist.Atomize('T',data.size); var box = this.mlist.Typeset('T',data.size);
-    this.row[this.row.length] = box;
-    this.mlist = new jsMath.mList(null,null,data.size); 
-  },
-  
-  /*
-   *  When we see a \cr or \\, try to add a row to the table
-   */
-  HandleRow: function (name,last) {
-    if (!this.matrix)
-      {this.Error(this.cmd+name+" can only appear in a matrix or array"); return}
-    this.HandleEntry(name);
-    if (!last || this.row.length > 1 || this.row[0].format != 'null')
-      {this.table[this.table.length] = this.row}
-    this.row = [];
-  },
-  
-  /*
-   *  LaTeX array environment
-   */
-  Array: function (name,delim) {
-    var columns = delim[2]; var cspacing = delim[3];
-    if (!columns) {
-      columns = this.GetArgument(this.cmd+'begin{'+name+'}');
-      if (this.error) return;
-    }
-    columns = columns.replace(/[^clr]/g,'');
-    columns = columns.split('');
-    var data = this.mlist.data;
-    var arg = this.GetEnd(name); if (this.error) return;
-    var parse = new jsMath.Parser(arg+'\\\\',null,data.size);
-    parse.matrix = name; parse.row = []; parse.table = [];
-    parse.Parse(); if (parse.error) {this.Error(parse); return}
-    parse.HandleRow(name,1);  // be sure the last row is recorded
-    var box = jsMath.Box.Layout(data.size,parse.table,columns,cspacing);
-    // Add parentheses, if needed
-    if (delim[0] && delim[1]) {
-      var left  = jsMath.Box.Delimiter(box.h+box.d,this.delimiter[delim[0]],'T');
-      var right = jsMath.Box.Delimiter(box.h+box.d,this.delimiter[delim[1]],'T');
-      box = jsMath.Box.SetList([left,box,right],data.style,data.size);
-    }
-    this.mlist.Add(jsMath.mItem.Atom((delim[0]? 'inner': 'ord'),box));
-  },
-  
-  /*
-   *  LaTeX \begin{env}
-   */
-  Begin: function (name) {
-    var env = this.GetArgument(this.cmd+name); if (this.error) return;
-    if (env.match(/[^a-z*]/i)) {this.Error('Invalid environment name "'+env+'"'); return}
-    if (!this.environments[env]) {this.Error('Unknown environment "'+env+'"'); return}
-    var cmd = this.environments[env];
-    if (typeof(cmd) == "string") {cmd = [cmd]}
-    this[cmd[0]](env,cmd.slice(1));
-  },
-  
-  /*
-   *  LaTeX \end{env}
-   */
-  End: function (name) {
-    var env = this.GetArgument(this.cmd+name); if (this.error) return;
-    this.Error(this.cmd+name+'{'+env+'} without matching '+this.cmd+'begin');
-  },
-
-  /*
-   *  Add a fixed amount of horizontal space
-   */
-  Spacer: function (name,w) {
-    this.mlist.Add(jsMath.mItem.Space(w-0));
-  },
-  
-  /*
-   *  Add horizontal space given by the argument
-   */
-  Hskip: function (name) {
-    var w = this.GetDimen(this.cmd+name); if (this.error) return;
-    this.mlist.Add(jsMath.mItem.Space(w));
-  },
-
-  /*
-   *  Typeset the argument as plain text rather than math.
-   */
-  HBox: function (name) {
-    var text = this.GetArgument(this.cmd+name); if (this.error) return;
-    var box = jsMath.Box.InternalMath(text,this.mlist.data.size);
-    this.mlist.Add(jsMath.mItem.Typeset(box));
-  },
-  
-  /*
-   *  Implement \fbox{...}
-   */
-  FBox: function (name) {
-    var text = this.GetArgument(this.cmd+name); if (this.error) return;
-    var arg = jsMath.Box.InternalMath(text,this.mlist.data.size);
-    var f = 0.25 * jsMath.sizes[this.mlist.data.size]/100;
-    var box = jsMath.Box.Set(arg,this.mlist.data.style,this.mlist.data.size,1).Remeasured();
-    var frame = jsMath.HTML.Frame(-f,-box.d-f,box.w+2*f,box.h+box.d+2*f);
-    box.html = frame + box.html + jsMath.HTML.Spacer(f);
-    box.h += f; box.d += f; box.w +=2*f; box.x += f;
-    box.bh = Math.max(box.bh,box.h); box.bd = Math.max(box.bd,box.d);
-    this.mlist.Add(jsMath.mItem.Atom('ord',box));
-  },
-  
-  /*
-   *  Insert a rule of a particular width, height and depth
-   *  This replaces \hrule and \vrule
-   *  @@@ not a standard TeX command, and all three parameters must be given @@@
-   */
-  Rule: function (name,style) {
-    var w = this.GetDimen(this.cmd+name,1); if (this.error) return;
-    var h = this.GetDimen(this.cmd+name,1); if (this.error) return;
-    var d = this.GetDimen(this.cmd+name,1); if (this.error) return;
-    h += d; var html;
-    if (h != 0) {h = Math.max(1.05/jsMath.em,h)}
-    if (h == 0 || w == 0) {style = "blank"}
-    if (w == 0) {
-      html = '<IMG SRC="'+jsMath.blank+'" STYLE="'
-                + 'border:0px none; width:1px; margin-right:-1px; '
-                + 'height:'+jsMath.HTML.Em(h*jsMath.Browser.imgScale)+'">';
-    } else if (style == "blank") {
-      html = '<IMG SRC="'+jsMath.blank+'" STYLE="border:0px none; '
-                + 'height:'+jsMath.HTML.Em(h*jsMath.Browser.imgScale)+'; '
-                + 'width:' +jsMath.HTML.Em(w*jsMath.Browser.imgScale)+'">';
-    } else {
-      html = '<IMG SRC="'+jsMath.blank+'" STYLE="'
-                + 'position: relative; top:1px; height:1px; border:0px none; '
-                + 'border-top:'+jsMath.HTML.Em(h*jsMath.Browser.imgScale)+' solid; '
-                + 'width:' +jsMath.HTML.Em(w*jsMath.Browser.imgScale)+'">';
-    }
-    if (d) {
-      html = '<SPAN STYLE="vertical-align:'+jsMath.HTML.Em(-d)+'">'
-           +  html + '</SPAN>';
-    }
-    this.mlist.Add(jsMath.mItem.Typeset(new jsMath.Box('html',html,w,h-d,d)));
-  },
-  
-  /*
-   *  Inserts an empty box of a specific height and depth
-   */
-  Strut: function () {
-    var size = this.mlist.data.size;
-    var box = jsMath.Box.Text('','normal','T',size).Styled();
-    box.bh = box.bd = 0; box.h = .8; box.d = .3; box.w = 0;
-    this.mlist.Add(jsMath.mItem.Typeset(box));
-  },
-  
-  /*
-   *  Handles \phantom, \vphantom and \hphantom
-   */
-  Phantom: function (name,data) {
-    var arg = this.ProcessArg(this.cmd+name); if (this.error) return;
-    this.mlist.Add(new jsMath.mItem('phantom',{phantom: arg, v: data[0], h: data[1]}));
-  },
-  
-  /*
-   *  Implements \smash
-   */
-  Smash: function (name,data) {
-    var arg = this.ProcessArg(this.cmd+name); if (this.error) return;
-    this.mlist.Add(new jsMath.mItem('smash',{smash: arg}));
-  },
-  
-  /*
-   *  Puts an accent on the following argument
-   */
-  MathAccent: function (name,accent) {
-    var c = this.ProcessArg(this.cmd+name); if (this.error) return;
-    var atom = jsMath.mItem.Atom('accent',c); atom.accent = accent[0];
-    this.mlist.Add(atom);
-  },
-
-  /*
-   *  Handles functions and operators like sin, cos, sum, etc.
-   */
-  NamedOp: function (name,data) {
-    var a = (name.match(/[^acegm-su-z]/)) ? 1: 0;
-    var d = (name.match(/[gjpqy]/)) ? 1: 0;
-    if (data[1]) {name = data[1]}
-    var box = jsMath.mItem.TextAtom('op',name,'cmr10',a,d);
-    if (data[0] != null) {box.limits = data[0]}
-    this.mlist.Add(box);
-  },
-
-  /*
-   *  Implements \limits
-   */
-  Limits: function (name,data) {
-    var atom = this.mlist.Last();
-    if (!atom || atom.type != 'op') 
-      {this.Error(this.cmd+name+" is allowed only on operators"); return}
-    atom.limits = data[0];
-  },
-
-  /*
-   *  Implements macros like those created by \def.  The named control
-   *  sequence is replaced by the string given as the first data value.
-   *  If there is a second data value, this specifies how many arguments
-   *  the macro uses, and in this case, those arguments are substituted
-   *  for #1, #2, etc. within the replacement string.
-   *  
-   *  See the jsMath.Macro() command below for more details.
-   */
-  Macro: function (name,data) {
-    var text = data[0]
-    if (data[1]) {
-      var args = [];
-      for (var i = 0; i < data[1]; i++) 
-        {args[args.length] = this.GetArgument(this.cmd+name); if (this.error) return}
-      text = ''; var c; var i = 0;
-      while (i < data[0].length) {
-        c = data[0].charAt(i++);
-        if (c == '\\') {text += c + data[0].charAt(i++)}
-        else if (c == '#') {
-          c = data[0].charAt(i++);
-          if (c == "#") {text += c} else {
-            if (!c.match(/[1-9]/) || c > args.length)
-              {this.Error("Illegal macro argument reference"); return}
-            text += args[c-1];
-          }
-        } else {text += c}
-      }
-    }
-    this.string = text + this.string.slice(this.i);
-    this.i = 0;
-  },
-  
-  /*
-   *  Replace the control sequence with the given text
-   */
-  Replace: function (name,data) {
-    this.mlist.Add(jsMath.mItem.TextAtom(data[0],data[1],data[2],data[3]));
-  },
-
-  /*
-   *  Implements \overbrace, \underbrace, etc.
-   */
-  HandleLeaders: function (name,data) {
-    var box = this.ProcessArg(this.cmd+name); if (this.error) return;
-    box = jsMath.Box.Set(box,'D',this.mlist.data.size).Remeasured();
-    var leader = jsMath.Box.Leaders(box.w,this.leaders[data[0]]);
-    if (data[2]) {leader.y = -leader.h - box.d} else {leader.y = box.h + leader.d}
-    leader.x = -(leader.w + box.w)/2;
-    box = jsMath.mItem.Atom(data[1]? 'op': 'inner',
-      jsMath.Box.SetList([box,leader],'T',this.mlist.data.size));
-    box.limits = (data[1]? 1: 0);
-    this.mlist.Add(box);
-  },
-  
-  /*
-   *  Implements \llap, \rlap, etc.
-   */
-  HandleLap: function (name) {
-    var box = this.ProcessArg(); if (this.error) return;
-    box = this.mlist.Add(new jsMath.mItem('lap',{nuc: box, lap: name}));
-  },
-
-  /*
-   *  Adds the argument as a specific type of atom (for commands like
-   *  \overline, etc.)
-   */
-  HandleAtom: function (name,data) {
-    var arg = this.ProcessArg(this.cmd+name); if (this.error) return;
-    this.mlist.Add(jsMath.mItem.Atom(data,arg));
-  },
-
-
-  /*
-   *  Process the character associated with a specific \mathcharcode
-   */
-  HandleMathCode: function (name,code) {
-    this.HandleTeXchar(code[0],code[1],code[2]);
-  },
-  
-  /*
-   *  Add a specific character from a TeX font (use the current
-   *  font if the type is 7 (variable) or the font is not specified)
-   */
-  HandleTeXchar: function (type,font,code) {
-    if (type == 7 && this.mlist.data.font != null) {font = this.mlist.data.font}
-    font = jsMath.TeX.fam[font];
-    this.mlist.Add(jsMath.mItem.TeXAtom(jsMath.TeX.atom[type],code,font));
-  },
-
-  /*
-   *  Add a TeX variable character or number
-   */
-  HandleVariable: function (c) {this.HandleTeXchar(7,1,c.charCodeAt(0))},
-  HandleNumber: function (c) {this.HandleTeXchar(7,0,c.charCodeAt(0))},
-
-  /*
-   *  For unmapped characters, just add them in as normal
-   *  (non-TeX) characters
-   */
-  HandleOther: function (c) {
-    this.mlist.Add(jsMath.mItem.TextAtom('ord',c,'normal'));
-  },
-  
-  /*
-   *  Ignore comments in TeX data
-   *  ### Some browsers remove the newlines, so this might cause
-   *      extra stuff to be ignored; look into this ###
-   */
-  HandleComment: function () {
-    var c;
-    while (this.i < this.string.length) {
-      c = this.string.charAt(this.i++);
-      if (c == "\r" || c == "\n") return;
-    }
-  },
-
-  /*
-   *  Add a style change (e.g., \displaystyle, etc)
-   */
-  HandleStyle: function (name,style) {
-    this.mlist.data.style = style[0];
-    this.mlist.Add(new jsMath.mItem('style',{style: style[0]}));
-  },
-  
-  /*
-   *  Implements \small, \large, etc.
-   */
-  HandleSize: function (name,size) {
-    this.mlist.data.size = size[0];
-    this.mlist.Add(new jsMath.mItem('size',{size: size[0]}));
-  },
-
-  /*
-   *  Set the current font (e.g., \rm, etc)
-   */
-  HandleFont: function (name,font) {
-    this.mlist.data.font = font[0];
-  },
-
-  /*
-   *  Look for and process a control sequence
-   */
-  HandleCS: function () {
-    var cmd = this.GetCommand(); if (this.error) return;
-    if (this.macros[cmd]) {
-      var macro = this.macros[cmd];
-      if (typeof(macro) == "string") {macro = [macro]}
-      this[macro[0]](cmd,macro.slice(1)); return;
-    }
-    if (this.mathchardef[cmd]) {
-      this.HandleMathCode(cmd,this.mathchardef[cmd]);
-      return;
-    }
-    if (this.delimiter[this.cmd+cmd]) {
-      this.HandleMathCode(cmd,this.delimiter[this.cmd+cmd].slice(0,3))
-      return;
-    }
-    this.Error("Unknown control sequence '"+this.cmd+cmd+"'");
-  },
-
-  /*
-   *  Process open and close braces
-   */
-  HandleOpen: function () {this.mlist.Open()},
-  HandleClose: function () {
-    if (this.mlist.data.openI == null) {this.Error("Extra close brace"); return}
-    var open = this.mlist.Get(this.mlist.data.openI);
-    if (!open || open.left == null) {this.mlist.Close()}
-      else {this.Error("Extra close brace or missing "+this.cmd+"right"); return}
-  },
-
-  /*
-   *  Implements \left
-   */
-  HandleLeft: function (name) {
-    var left = this.GetDelimiter(this.cmd+name); if (this.error) return;
-    this.mlist.Open(left);
-  },
-
-  /*
-   *  Implements \right
-   */
-  HandleRight: function (name) {
-    var right = this.GetDelimiter(this.cmd+name); if (this.error) return;
-    var open = this.mlist.Get(this.mlist.data.openI);
-    if (open && open.left != null) {this.mlist.Close(right)}
-      else {this.Error("Extra open brace or missing "+this.cmd+"left");}
-  },
-
-  /*
-   *  Implements generalized fractions (\over, \above, etc.)
-   */
-  HandleOver: function (name,data) {
-    if (this.mlist.data.overI != null) 
-      {this.Error('Ambiguous use of '+this.cmd+name); return}
-    this.mlist.data.overI = this.mlist.Length();
-    this.mlist.data.overF = {name: name};
-    if (data.length > 0) {
-      this.mlist.data.overF.left  = this.delimiter[data[0]];
-      this.mlist.data.overF.right = this.delimiter[data[1]];
-    } else if (name.match(/withdelims$/)) {
-      this.mlist.data.overF.left  = this.GetDelimiter(this.cmd+name); if (this.error) return;
-      this.mlist.data.overF.right = this.GetDelimiter(this.cmd+name); if (this.error) return;
-    }
-    if (name.match(/^above/))
-    {
-      this.mlist.data.overF.thickness = this.GetDimen(this.cmd.name,1);
-      if (this.error) return;
-    }
-  },
-
-  /*
-   *  Add a superscript to the preceeding atom
-   */
-  HandleSuperscript: function () {
-    var base = this.mlist.Last();
-    if (base == null || (!base.atom && base.type != 'box' && base.type != 'frac'))
-       {base = this.mlist.Add(jsMath.mItem.Atom('ord',null))}
-    if (base.sup) {this.Error("Double exponent: use braces to clarify"); return}
-    base.sup = this.ProcessArg('superscript'); if (this.error) return;
-  },
-
-  /*
-   *  Adda subscript to the preceeding atom
-   */
-  HandleSubscript: function () {
-    var base = this.mlist.Last();
-    if (base == null || (!base.atom && base.type != 'box' && base.type != 'frac'))
-       {base = this.mlist.Add(jsMath.mItem.Atom('ord',null))}
-    if (base.sub) {this.Error("Double subscripts: use braces to clarify"); return}
-    base.sub = this.ProcessArg('subscript'); if (this.error) return;
-  },
-
-  /*
-   *  Parse a TeX math string, handling macros, etc.
-   */
-  Parse: function () {
-    var c;
-    while (this.i < this.string.length) {
-      c = this.string.charAt(this.i++);
-      if (this.mathchar[c]) {this.HandleMathCode(c,this.mathchar[c])}
-      else if (this.special[c]) {this[this.special[c]](c)}
-      else if (this.letter.test(c)) {this.HandleVariable(c)}
-      else if (this.number.test(c)) {this.HandleNumber(c)}
-      else {this.HandleOther(c)}
-    }
-    if (this.mlist.data.openI != null) {
-      var open = this.mlist.Get(this.mlist.data.openI);
-      if (open.left) {this.Error("Missing "+this.cmd+"right")}
-        else {this.Error("Missing close brace")}
-    }
-    if (this.mlist.data.overI != null) {this.mlist.Over()}
-  },
-
-  /*
-   *  Perform the processing of Appendix G
-   */
-  Atomize: function () {
-    var data = this.mlist.init;
-    if (!this.error) this.mlist.Atomize(data.style,data.size)
-  },
-
-  /*
-   *  Produce the final HTML.
-   *  
-   *  We have to wrap the HTML it appropriate <SPAN> tags to hide its
-   *  actual dimensions when these don't match the TeX dimensions of the
-   *  results.  We also include an image to force the results to take up
-   *  the right amount of space.  The results may need to be vertically
-   *  adjusted to make the baseline appear in the correct place.
-   */
-  Typeset: function () {
-    var data = this.mlist.init;
-    var box = this.typeset = this.mlist.Typeset(data.style,data.size);
-    if (this.error) {return '<SPAN CLASS="error">'+this.error+'</SPAN>'}
-    if (box.format == 'null') {return ''};
-
-    box.Styled().Remeasured(); var isSmall = 0; var isBig = 0;
-    if (box.bh > box.h && box.bh > jsMath.h+.001) {isSmall = 1}
-    if (box.bd > box.d && box.bd > jsMath.d+.001) {isSmall = 1}
-    if (box.h > jsMath.h || box.d > jsMath.d) {isBig = 1}
-
-    var html = box.html;
-    if (isSmall) {// hide the extra size
-      if (jsMath.Browser.allowAbsolute) {
-        var y = 0;
-        if (box.bh > jsMath.h+.001) {y = jsMath.h - box.bh}
-        html = jsMath.HTML.Absolute(html,box.w,jsMath.h,0,y,jsMath.h);
-      } else if (!jsMath.Browser.valignBug) {
-        // remove line height and try to hide the depth
-        var dy = jsMath.HTML.Em(Math.max(0,box.bd-jsMath.hd)/3);
-        html = '<SPAN STYLE="line-height: 0;'
-               + ' position:relative; top:'+dy+'; vertical-align:'+dy
-               + '">' + html + '</SPAN>';
-      }
-      isBig = 1;
-    }
-    if (isBig) {// add height and depth to the line (force a little
-                //    extra to separate lines if needed)
-      html += '<IMG SRC="'+jsMath.blank+'" CLASS="mathHD" STYLE="'
-               + 'height:'+jsMath.HTML.Em((box.h+box.d+.1)*jsMath.Browser.imgScale)+'; '
-               + 'vertical-align:'+jsMath.HTML.Em(-box.d-.05)+';">'
-    }
-    return '<NOBR><SPAN CLASS="jsM_scale">'+html+'</SPAN></NOBR>';
-  }
-
-});
-
-/*
- *  Make these characters special (and call the given routines)
- */
-jsMath.Parser.prototype.AddSpecial({
-  cmd:   'HandleCS',
-  open:  'HandleOpen',
-  close: 'HandleClose'
-});
-
-
-/*
- *  The web-page author can call jsMath.Macro to create additional
- *  TeX macros for use within his or her mathematics.  jsMath.Macro
- *  has two required and one optional parameter.  The first parameter
- *  is the control sequence name that will trigger the macro, and the
- *  second is the replacement string for that control sequence.
- *  NOTE:  since the backslash (\) has special meaning in JavaScript,
- *  you must double the backslash in order to include control sequences
- *  within your replacement string.  E.g., 
- *  
- *      <SCRIPT> jsMath.Macro('R','{\\rm R}') </SCRIPT>
+ *  Copyright 2004-2006 by Davide P. Cervone
  * 
- *  would make \R produce a bold-faced R.
- *  
- *  The optional parameter tells how many arguments the macro
- *  requires.  These are substituted for #1, #2, etc. within the 
- *  replacement string of the macro.  For example
- *  
- *      <SCRIPT> jsMath.Macro('x','{\\vec x}_{#1}',1) </SCRIPT>
- *  
- *  would make \x1 produce {\vec x}_{1} and \x{i+1} produce {\vec x}_{i+1}.
- *
- *  You can put several jsMath.Macro calls together into one .js file, and
- *  then include that into your web page using a command of the form
- *  
- *      <SCRIPT SRC="..."></SCRIPT>
- *  
- *  in your main HTML page.  This way you can include the same macros
- *  into several web pages, for example.
- */
-
-jsMath.Add(jsMath,{
-  Macro: function (name) {
-    var macro = jsMath.Parser.prototype.macros;
-    macro[name] = ['Macro'];
-    for (var i = 1; i < arguments.length; i++) 
-      {macro[name][macro[name].length] = arguments[i]}
-  }
-});
-
-
-/***************************************************************************/
-
-/*
- *  These routines look through the web page for math elements to process.
- *  There are two main entry points you can call:
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
  *  
- *      <SCRIPT> jsMath.Process() </SCRIPT>
- *  or
- *      <SCRIPT> jsMath.ProcessBeforeShowing() </SCRIPT>
- *
- *  The first will process the page asynchronously (so the user can start
- *  reading the top of the file while jsMath is still processing the bottom)
- *  while the second does not update until all the mathematics is typeset.
- */
-
-jsMath.Add(jsMath,{
-
-  /*
-   *  Typeset a string in \textstyle and return the HTML for it
-   */
-  TextMode: function (s) {
-    var parse = jsMath.Parse(s,null,null,'T');
-    parse.Atomize();
-    var html = parse.Typeset();
-    return html;
-  },
-
-  /*
-   *  Typeset a string in \displaystyle and return the HTML for it
-   */
-  DisplayMode: function (s) {
-    var parse = jsMath.Parse(s,null,null,'D');
-    parse.Atomize();
-    var html = parse.Typeset();
-    return html;
-  },
-  
-  /*
-   *  Return the text of a given DOM element
-   */
-  GetElementText: function (element) {
-    var text = element.innerText;
-    if (text == null || text == "") {
-      try {text = element.textContent} catch (err) {}
-      if (text == null || text == "") {text = element.innerHTML}
-    }
-    if (text.search('&') >= 0) {
-      text = text.replace(/&lt;/g,'<');
-      text = text.replace(/&gt;/g,'>');
-      text = text.replace(/&quot;/g,'"');
-      text = text.replace(/&amp;/g,'&');
-    }
-    return text;
-  },
-  
-  /*
-   *  Move hidden to the location of the math element to be
-   *  processed and reinitialize sizes for that location.
-   */
-  ResetHidden: function (element) {
-    element.innerHTML =
-      '<SPAN CLASS="normal" STYLE="position:absolute; top:0px;left:0px;"></SPAN>'
-        + jsMath.Browser.operaHiddenFix; // needed by Opera in tables
-    element.className='';
-    jsMath.hidden = element.firstChild;
-    jsMath.ReInit();
-  },
-
-  
-  /*
-   *  Typeset the contents of an element in \textstyle
-   */
-  ConvertText: function (element) {
-    var text = this.GetElementText(element);
-    this.ResetHidden(element);
-    element.innerHTML = this.TextMode(text);
-    element.className = 'typeset';
-    element.alt = text;
-  },
-  
-  /*
-   *  Typeset the contents of an element in \displaystyle
-   */
-  ConvertDisplay: function (element) {
-    var text = this.GetElementText(element);
-    this.ResetHidden(element);
-    element.innerHTML = this.DisplayMode(text);
-    element.className = 'typeset';
-    element.alt = text;
-  },
-  
-  /*
-   *  Process a math element
-   */
-  ProcessElement: function (element) {
-    try {
-      if (element.tagName == 'DIV') {
-        this.ConvertDisplay(element);
-      } else if (element.tagName == 'SPAN') {
-        this.ConvertText(element);
-        //
-        // Overcome a bug in MSIE where were tex2math can't insert DIV's inside
-        // some elements, so fake it with SPANs, but can't fake the centering,
-        // so do that here.
-        //
-        if (element.parentNode.className == 'jsMath.recenter') {
-          element.parentNode.style.marginLeft =
-            Math.floor((element.parentNode.offsetWidth - element.offsetWidth)/2)+"px";
-        }
-      }
-      element.onclick = jsMath.Click.CheckClick;
-      element.ondblclick = jsMath.Click.CheckDblClick;
-    } catch (err) {}
-  },
-
-  /*
-   *  Asynchronously process all the math elements starting with
-   *  the k-th one
-   */
-  ProcessElements: function (k) {
-    if (k >= this.element.length) {
-      this.ProcessComplete();
-    } else {
-      this.ProcessElement(this.element[k])
-      setTimeout('jsMath.ProcessElements('+(k+1)+')',jsMath.Browser.delay);
-    }
-  },
-
-  /*
-   *  Call this at the bottom of your HTML page to have the
-   *  mathematics typeset asynchronously.  This lets the user
-   *  start reading the mathematics while the rest of the page
-   *  is being processed.
-   */
-  Process: function (obj) {
-    if (!jsMath.initialized) {jsMath.Init()}
-    this.element = this.GetMathElements(obj);
-    window.status = 'Processing Math...';
-    setTimeout('jsMath.ProcessElements(0)',jsMath.Browser.delay);
-  },
-  
-  /*
-   *  Call this at the bottom of your HTML page to have the
-   *  mathematics typeset before the page is displayed.
-   *  This can take a long time, so the user could cancel the
-   *  page before it is complete; use it with caution, and only
-   *  when there is a relatively small amount of math on the page.
-   */
-  ProcessBeforeShowing: function (obj) {
-    if (!jsMath.initialized) {jsMath.Init()}
-    var element = jsMath.GetMathElements(obj);
-    window.status = 'Processing Math...';
-    for (var i = 0; i < element.length; i++)
-      {jsMath.ProcessElement(element[i])}
-    jsMath.ProcessComplete();
-  },
-  
-  element: [],  // the list of math elements on the page
-
-  /*
-   *  Look up all the math elements on the page and
-   *  put them in a list sorted from top to bottom of the page
-   */
-  GetMathElements: function (obj) {
-    var element = [];
-    if (!obj) {obj = document}
-    if (typeof(obj) == 'string') {obj = document.getElementById(obj)}
-    if (!obj.getElementsByTagName) return
-    var math = obj.getElementsByTagName('DIV');
-    for (var k = 0; k < math.length; k++) {
-      if (math[k].className == 'math') {
-        if (jsMath.Browser.renameOK && obj.getElementsByName) 
-               {math[k].setAttribute('NAME','_jsMath_')}
-          else {element[element.length] = math[k]}
-      }
-    }
-    math = obj.getElementsByTagName('SPAN');
-    for (var k = 0; k < math.length; k++) {
-      if (math[k].className == 'math') {
-        if (jsMath.Browser.renameOK && obj.getElementsByName) 
-               {math[k].setAttribute('NAME','_jsMath_')}
-          else {element[element.length] = math[k]}
-      }
-    }
-    // this gets the SPAN and DIV elements interleaved in order
-    if (jsMath.Browser.renameOK && obj.getElementsByName) {
-      element = obj.getElementsByName('_jsMath_');
-    } else if (jsMath.hidden.sourceIndex) {
-      element.sort(function (a,b) {return a.sourceIndex - b.sourceIndex});
-    }
-    return element;
-  },
-
-  /*
-   *  Remove the window message about processing math
-   *  and clean up any marked <SPAN> or <DIV> tags
-   */
-  ProcessComplete: function () {
-    if (jsMath.Browser.renameOK) {
-      var element = document.getElementsByName('_jsMath_');
-      for (var i = element.length-1; i >= 0; i--) {
-        element[i].removeAttribute('NAME');
-      }
-    }
-    jsMath.hidden = jsMath.hiddenTop;
-    jsMath.element = [];
-    window.status = 'Done';
-    if (jsMath.Browser.safariImgBug &&
-        (jsMath.Controls.cookie.font == 'symbol' ||
-         jsMath.Controls.cookie.font == 'image')) {
-      //
-      //  For Safari, the images don't always finish
-      //  updating, so nudge the window to cause a
-      //  redraw.  (Hack!)
-      //
-      setTimeout("window.resizeBy(-1,0); window.resizeBy(1,0);",2000);
-    }
-  },
-  
-  Element: function (name) {return document.getElementById('jsMath.'+name)}
-  
-});
-
-
-/***************************************************************************/
+ *****************************************************************************/
 
-/*
- *  Initialize everything
- */
-jsMath.Loaded();
-jsMath.Controls.GetCookie();
-if (document.body) {jsMath.Setup.Body()}
+if (!window.jsMath) {jsMath = {}}
+if (!jsMath.Script) {jsMath.Script = {}}
 
-}}
+jsMath.Script.Uncompress = function (data) {
+  for (var k = 0; k <  data.length; k++) {
+    var d = data[k]; var n = d.length;
+    for (var i = 0; i < n; i++) {if (typeof(d[i]) == 'number') {d[i] = d[d[i]]}}
+    data[k] = d.join('');
+  }
+  eval(data.join(''));
+}
+
+//start = new Date().getTime();
+jsMath.Script.Uncompress([
+  ['if(!','window.','jsMath','||!',1,'jsMath.','loaded','){if(',1,'parent','&&',1,9,'.',2,'){',2,'=',1,9,'.',2,';}var ','jsMath_old','=',1,2,';',0,'document.','getElementById','||!',29,'childNodes||!',29,'createElement','){','alert("','The',' mathematics ','on this page requires W3C DOM support in its JavaScript. "+"Unfortunately, your ','browser',' doesn\'t seem to have this.");}','else{',2,'={version:"3.2",document:document,window:window,','sizes',':[50,60,70,85,100,120,144,173,207,249],styles:{".math','":"font-family: serif; font-style: normal; font-weight: normal','",".typeset',48,'","div.typeset','":"text-align: ','center; margin: 1em 0px;","span.typeset',52,'left',49,' span',52,'left','; border:0px','; margin:0px; padding:0px','",".typeset .','normal',48,62,'size0','":"font-size: ','50','%",".typeset .','size1',67,'60',69,'size2',67,'70',69,'size3',67,'85',69,'size4',67,'100',69,'size5',67,'120',69,'size6',67,'144',69,'size7',67,'173',69,'size8',67,'207',69,'size9',67,'249',69,'cmr10','":"font-family: jsMath-',106,', serif',62,'cmbx10',107,111,', ',2,'-cmr10',62,'cmti10',107,118,', ',2,116,62,'cmmi10',107,125,62,'cmsy10',107,129,62,'cmex10',107,133,62,'textit','":"font-family: serif; font-','style:italic',62,'textbf',138,'weight:bold',62,'link":"','text-decoration',': none',62,'error',67,'10pt; font-style: italic; "+"','background-color',': #FFFFCC','; padding: ','1px; "+"','border: ','1px solid',' #CC0000',62,'blank":"','display:inline-block','; ','overflow:hidden',60,' none; width:0px; height:0px;",".typeset .','spacer','":"',161,'","#jsMath_message','":"position:fixed; bottom:','1px; left:2px; ',152,':#E6E6E6','; "+"border: solid 1px #959595; margin:0px; padding: ','1px 8px','; "+"z-index:102; color',': black','; font-size:small; width:auto;","#','jsMath_panel',170,'1.5em; right:1.5em',154,'10px 20px','; "+"',152,':#DDDDDD; border: outset ','2px; "+"z-index:103; width:auto;","#','jsMath_button',170,'1px; right:2px; ',152,':white',174,'0px 3px 1px 3px',176,':black; ',146,':none','; font-size',':x-small;
 "+"','width:auto; cursor:pointer; cursor:hand',';","#jsMath_float','":"','position:absolute','; top:0px; left:0px; max-width:80%; "+"z-index:101; ','width:auto; height:auto',202,' .drag":"',152,186,'1px; height:12px',199,': 1px',202,' .close":"',152,173,'; border: ','inset 1px; width:8px; height:8px; margin: 1px 2px',202,' .source":"',152,':#E2E2E2',218,'outset ',155,206,154,'8px 15px; "+"','font-family',': courier, fixed',199,': 90%","#','jsMath_noFont',52,'center',154,183,218,'3px solid #DD0000; "+"',152,': #FFF8F8; color: #AA0000',178,234,' .link":"padding: 0px 5px 2px 5px',218,'2px outset; ',152,':#E8E8E8; "+"color:black',199,':80%; ',201,';","@media print":"#',188,' {','display:none','}"},Element',':function(','_1){return ',5,29,30,'("jsMath_"+_1);},','BBoxFor',258,'s','){this.','hidden.innerHTML','="<nobr><span class=\\"typeset\\"><span class=\\"scale\\">"+s+"</span></span></nobr>";var _3={w:this.','hidden','.offsetWidth',',h:this.',270,'.offsetHeight','};this.',268,'="";return _3;},EmBoxFor',258,'s){var _5','=this.BBoxFor','(s);return {w:_5.w/this.em,h:_5','.h/this.em};},','EmBoxForItalics',258,'s){var _7',280,'(s);if(s.match(/<i>|class=\\"(icm|italic|igreek|iaccent)/i)){_7.w',280,'(s+',5,'Browser.','italicString',').w-',5,291,'italicCorrection',';}return {w:_7.w/this.em,h:_7',282,'Init',':function(){','if(',5,'Setup.inited','!=1',7,5,303,'){',37,'It looks like ',2,' failed to set up properly (error code "+',5,303,'+").  "+"I\'ll will try to keep going, but it could get ugly.");',5,303,'=1;}',43,37,'You must call ',5,'Setup.','Body() explicitly when ',2,' is"+"',6,' as part of the <HEAD> section");}',5,323,'Body();}this.em',280,'("<span style=\\""+',5,291,'block+";','width:10em;height:1em','\\"></span>").','w/10;if(this.em==0',267,'em',280,'("<img src=\\""+',5,'blank+"\\" style=\\"',337,'\\"/>").w/10;}if(',5,291,292,'){',5,291,296,'=',5,264,'(',5,291,292,').w;}var bb',280,'("x");var h=bb.h;var d',280,'("x"+',5,'HTML.Rule(1,','h/',5,'em)).h-h;this.h=(h-d)/this.em;this.d=d/this.em;this.hd=this.h+this.d;thi
s.xWidth=bb.w;this.',323,'TeXfonts','();var _b=this.','EmBoxFor("<span class','=\\"',106,'\\">M</span>").w/2;this.TeX.M_height=_b*(26/14);this.TeX.h=this.h;this.TeX.d=this.d;this.TeX.hd=this.hd;this.Img.Scale();',0,'this.initialized',267,323,'Sizes','();this.','Img.UpdateFonts();}this.p_height=(this.','TeX.cmex10[','0].h+this.',386,'0].d)/0.85;',380,'=1;},ReInit',300,'var w',280,'("x").w;if(w!=this.xWidth',267,'Init();}},Loaded',300,'if(',23,'){var _d=["Process","ProcessBeforeShowing","ConvertTeX","ConvertTeX2","ConvertLaTeX","ConvertCustom","CustomSearch","Synchronize","Macro","document"];','for(var i=0;i<','_d','.length;','i++){if(',23,'[_d[i]]){',23,'[_d[i]]=null;}}}if(',23,267,'Insert(',2,',',23,');}',23,'=null;',5,6,'=1;},Add',258,'_f,src){','for(var id in ','src){_f[id]=src[id];}},Insert',258,'dst,src){',424,'src',7,'dst[id]&&typeof (src[id])=="object"&&(','typeof (dst[id])=="','object"||',432,'function")){this.',412,'dst[id],src[id]);}',43,'dst[id]=src[id];}}},Package',258,'obj,def',267,412,'obj.prototype,def);}};',5,'Script={request:null,Init',300,'if(!(',5,'Controls.cookie','.asynch&&',5,450,'.progress',')){if(',1,'XMLHttpRequest','){','this.request','=new ',457,';}',43,'if(',1,'ActiveXObject','){try{',459,'=new ',466,'("Microsoft.XMLHTTP");}catch(err){}}}}',0,459,'||',5,323,'domainChanged',267,'Load=this.delayedLoad;this.needsBody=1;}},Load',258,'url,_18',7,'_18){',5,'Message.Set("Loading "+url);',5,'Script.','Delay(1);',5,'Script.Push(','this,"xmlRequest",url',');',5,490,5,'Message',',"Clear");}',43,5,490,491,');}},','xmlRequest',258,'url){','this.debug("',503,': "+url);','try{',459,'.open("GET",url,false);',459,'.send(null);}catch(err','){throw "jsMath can\'t load the file \'"+url+"\'\\n"+"',496,': "+err.message;}if(',459,'.status','&&',459,518,'>=400',514,'Error status: "+',459,518,';}this.','Start();','this.blocking','=1;',5,1,'eval(',459,'.responseText);this.End();',529,'=0;this.Process','();},cancelTimeout:30*1000,iframe:null,blocking:0,cancelTimer:null,needsBody:0,queue:[],queueAt:0,Synchronize'
,258,'_1a,_1b){','if(typeof (','_1a)!="string"){',5,490,'null,_1a,_1b);}',43,5,490,5,'window,"eval",_1a);}},Push',258,'_1c,_1d,_1e){',506,'Pushing: "+_1d+" at "+','this.queueAt',');this.queue=[].concat(','this.queue.slice(','0,',555,'),[[_1c,_1d,_1e]],',557,555,'));',555,'++;if(!(',529,'||(this.needsBody&&!',5,29,'body))){this.Process();}},Process',300,'while(','this.queue.length','&&!',529,267,528,'var _1f=this.queue[0];this.queue=',557,'1);var _20=_1f[0];var _21=_1f[1];var _22=_1f[2];',506,'Calling: "+_21);if(_20){_20[_21](_22);}',43,'if(_21){_21(_22);}}',506,'Done:    "+_21);}this.End();},Start',300,555,'=0;},End',300,555,'=',573,';},delayedLoad',258,'url){',506,'Loading',508,'this.Push(this,"startLoad",url);},startLoad',258,'url){','this.iframe','=',5,29,35,'("iframe");','this.iframe.style.','visibility="',270,'";',609,'position="absolute";',609,'width="0px";',609,'height="0px";if(',5,29,'body.firstChild','){',5,29,'body.insertBefore(',603,',',5,29,621,');}',43,5,29,'body','.appendChild(',603,');}',529,'=1;this.','url=url;',0,'url.match(/\\.js$/)){',603,'.src=url;}',43,603,'.src=',5,'root+"',2,'-loader.html";}if(url.substr(0,',5,'root.length',')==',5,'root){url=url.substr(',5,654,');}',5,485,506,'Starting',508,'this.cancelTimer','=setTimeout("',5,487,'cancelLoad','()",this.cancelTimeout);},endLoad',258,'_25){',506,'Ending: "+this.url);if(',666,'){clearTimeout(',666,');',666,'=null;}',5,496,'.Clear();if(_25!="cancel"){',529,537,'();}},',670,300,666,'=null;',5,496,'.Set("Can\'t load file");this.endLoad("cancel");},Delay',258,'_26){',529,'=1;setTimeout("',5,487,'endDelay','()",_26);},',701,300,506,701,'");',529,537,'();},','WaitForImage',258,'_27){',529,'=1;if(this.img==null',267,'img=[];}var img=new Image',384,'img[this.img.length]=img;img.onload=function(){',5,487,701,'();};img.onerror','=img.onload;img.','onabort',724,'src=_27;},Uncompress',258,'_29){','for(var k=0;k<','_29',404,'k++){var d=_29[k];var n=d',404,402,'n;',405,'typeof (d[i])=="number"){d[i]=d[d[i]];}}_29[k]=d.join("");}',1,'eval(_29.join(""));},
debug',258,'_2e){}};',5,496,'={blank:null,message:null,text:null,clear:null,Init',300,0,5,29,'body||!',5,450,454,'){return;}','if(',5,323,'stylesReady){','this.message','=',5,'Setup.DIV("message",{visibility:"hidden','"});}',43,759,'=',5,762,'",position:"absolute",','bottom:"1px",left:"2px",','backgroundColor',':"#E6E6E6",border:"solid 1px #959595",margin:"0px",padding:"1px 8px",zIndex:102,color:"black",fontSize:"small",width:"auto"});}','this.text','=',5,29,'createTextNode','("");',759,636,773,');',759,'.onmousedown=',5,'Translate.Cancel;},Set',258,'_2f,_30){','if(this.clear){clearTimeout(this.clear',');','this.clear',681,'if(',5,450,454,'){',0,773,267,'Init();',0,773,'){return;}}if(',5,291,'textNodeBug','){',759,'.innerHTML','=_2f;}',43,773,'.nodeValue',811,759,'.style.visibility="','visible";if(_30){',759,'.style.cursor','="pointer";',0,759,820,'){',759,820,'="hand";}',759,'.title=" Cancel Processing of Math ";}',43,759,820,';',759,'.title="";}}',43,'if(_2f.substr(0,8)!="Loading "){',5,1,'status=_2f;}}},Clear',300,789,');}',791,'=setTimeout("',5,496,'.doClear()",1000);},doClear',300,'if(',791,267,'clear=null;',5,1,'status="";if(',773,'){',773,814,'="";}if(',759,'){',759,817,270,'";}}},Blank',300,'if(','this.blank','||!',5,29,'body',754,871,'=',5,323,'DIV("blank",{position:(',5,291,'msiePositionFixedBug','?"absolute":"fixed"),top:"0px",left:"0px",bottom:"0px",right:"0px",zIndex:101,',771,':"white"});if(',5,291,'msieBlankBug','){',871,810,'="&nbsp;";',871,'.style.width="110%";',871,'.style.height="110%";}},UnBlank',300,'if(',871,'){',5,29,'body.removeChild(',871,');}',871,'=null;}};',5,'Setup={',6,':[],DIV',258,'id,_32){var div=',5,29,35,'("div");div.id="jsMath_"+id;','for(var i in ','_32){div.style[i]=_32[i];}',0,5,29,'body.hasChildNodes){',5,29,'body',636,'div);}',43,5,29,625,'div,',5,29,621,');}return div;},Script',258,'_35,_36',7,'this.loaded[_35',']){','return;}',43,943,']=1;}',0,'_35.match("^([a-zA-Z]+:/)?/")){_35=',5,'root+_35;}',5,487,'Load(_35,_36);},Hidden',300,5,270,'=this.DIV("Hidden",{visibility:"'
,270,769,'top:0,left:0,border:0,padding:0,margin:0});',5,'hiddenTop=',5,270,';return;},Source',300,'if(',5,'Autoload&&',5,'Autoload.root','){',5,'root=',5,973,';}',43,5,'root="";var _37=',5,29,'getElementsByTagName("','script");if(_37){',402,'_37',404,'i++){var ','src=_37[i].src;if(src&&src.match("(^|/)',5,'js$")){',5,'root=src.replace','(/',5,'js$/,"");if(',5,'root.charAt(0)=="/"){',5,976,5,29,'location','.protocol+"//"+',5,29,1005,'.host+',5,'root;}',43,0,5,'root.match','(/^[a-z]+:/i)){src','=new String(',5,29,1005,');',5,995,'(new RegExp("[^/]*$"),"")+',5,'root;',572,5,1016,'("/[^/]*/\\\\.\\\\./")){',5,976,5,'root.replace(new RegExp("/[^/]*/\\\\.\\\\./"),"/");}}}i=_37.length;}}}}',5,'Img.',976,5,650,'fonts/";',5,'blank=',5,650,'blank.gif";this.Domain();},Domain',300,'var _3a="";var _3b=',5,29,'domain;if(',5,1016,'("://([^/]*)/")){_3a=RegExp.$1;}_3a=_3a.replace(/:\\d+$/,"");if(_3a==""||_3a==_3b',754,'if(navigator.','appName=="Microsoft Internet Explorer"&&','navigator.','platform=="','MacPPC"&&',1058,'onLine&&',1058,'userProfile&&',5,29,'all',754,'_3a=_3a.split(/\\./);_3b=_3b.split(/\\./);if(_3a.length<2||_3b.length<2||','_3a[_3a.length-','1',']!=_3b[_3b.length-','1]||',1070,'2',1072,'2]){this.','DomainWarning','();',945,'var _3c=',1070,'2]+"."+',1070,'1];for(var i=3;i<=_3a.length&&i<=_3b',404,405,1070,'i',1072,'i]){break;}_3c=',1070,'i]+"."+_3c;}',5,29,'domain=_3c;this.',477,'=1;},',1078,300,37,'In order for ',2,' to be able to load the additional "+"components that it may need, the ',5,'js file must be "+"',6,' from a server in the same domain as the page that "+"contains it.  Because that is not the case for this page, "+"the',39,'displayed here may not appear correctly.");},','EncodeFont',258,'_3e){var _3f=',5,'TeX[_3e];if(_3f[0].c!=null',754,730,'128;k++){var _41=_3f[k];_3f[k]=_41[3];if(_3f[k]==null){_3f[k]={};}_3f[k].w=_41[0];_3f[k].h=_41[1];if(_41[2]!=null){_3f[k].d=_41[2];}_3f[k].c=',5,'TeX.encoding[k];}},Fonts',300,402,5,'TeX.fam.length;',990,'_43=',5,'TeX.fam[i','];if(_43',267,1111,'(_43);}}},TeXfont
',258,'_44){var _45=',5,'TeX[_44];if(_45==null',754,'var WH=',5,375,'=\\""+_44+"\\">"+_45[65','].c+"</span>");','_45.hd=WH.h;_45.dh=0.05;_45.d=',5,375,'=\\""+_44+"\\">"+_45[65].c+',5,368,'_45.hd)+"</span>").h-_45.hd;_45.h=_45.hd-_45.d;','if(_44=="',125,'"){_45.skewchar=','127;}',43,1150,129,1152,'48;}}},',373,300,402,5,1124,405,5,1128,']){this.TeXfont(',5,1128,']);}}},Sizes',300,5,'TeXparams','=[];for(var j=0;j<',5,46,404,'j++){',5,1173,'[j]={};}',920,5,'TeX){',541,5,'TeX[i])!="object"){for(var j=0;j<',5,46,404,'j++){',5,1173,'[j][i]=',5,46,'[j]*',5,'TeX[i]/100;}}}},Styles',258,'_4b){',0,'_4b){_4b=',5,'styles;_4b[".typeset .scale"]="font-size:"+',5,450,'.scale+"%";this.stylesReady=1;}',5,490,'this,"','AddStyleSheet','",_4b);if(',5,291,'styleChangeDelay','){',5,490,5,'Script,"','Delay",1);}},',1212,258,'_4c){var _4d=',5,29,985,'head")[0];var _4e="";',424,'_4c){_4e+=id+" {"+_4c[id]+"}\\n";}if(',5,29,'createStyleSheet){_4d.insertAdjacentHTML("beforeEnd","<','span style=\\"',256,'\\">x</span','><style type=\\"text/css\\">"+_4e+"</style>");}',43,'var _50=',5,29,35,'("style");_50.type="text/css";_50',636,5,29,777,'(_4e));_4d',636,'_50);}},Body',300,'if(this.inited',754,'this.inited=-','1;',5,323,'Hidden();',1255,'2;',5,291,801,1255,'3;if(',5,450,'.blank){',5,496,'.Blank();}',1255,'4;',5,323,'Styles();',1255,'5;',5,'Controls.',801,1255,'6;',5,490,5,'Setup,"User","pre-font");',1255,'7;',5,490,5,'Font,"Check");this.inited=1;},User',258,'_51){}};',5,'Update={',373,258,'_52){for(var ','_53 in ',1301,'_54 in _52[_53]){',424,'_52[_53][_54',']){',5,'TeX[_53][_54][id]=',1306,'][id];}}}},TeXfontCodes',258,'_56){for(var _57 in _56){',402,'_56[_57].length;i++){',5,'TeX[_57][i].c=_56[_57][i];}}}};',5,'Browser={allowAbsolute:1,allowAbsoluteDelim:0,separateSkips:0,valignBug:0,operaHiddenFix:"",','msieCenterBugFix',':"",','msieInlineBlockFix',':"",imgScale:1,renameOK:1,',1216,':0,delay:1,version:0,','TestSpanHeight',300,5,268,'="<span><','span style=\\""+this.block+";','height:2em;width:','1px\\"></','span></span>";var ','_59=',5,'hi
dden.firstChild;','var img=_59.firstChild;','this.spanHeightVaries','=(_59',274,'>=img',274,'&&_59',274,'>0);','this.spanHeightTooBig','=(_59',274,'>img',274,');',5,268,'="";},','TestInlineBlock',300,'this.block','="',161,'";','this.hasInlineBlock','=',5,'BBoxFor("<span style=\\""+this.block+";','width:10px;height:5px\\"></span>").w>0;if(!this.hasInlineBlock){',1358,'="display:-moz-inline-box";',1362,'=',5,1365,1366,945,5,'styles[".typeset .','blank"]=',5,1376,'blank','"].replace(/',161,'/,',1358,');}',1358,'+=";',163,'";var h=',5,264,'("x").h;this.mozInlineBlockBug=',5,1365,'height:"+h+"px;width:1px','\\"></span>x','"+"<',1331,1395,';vertical-align:-"+h+"px',338,'h>2*h;this.widthAddsBorder=',5,1365,163,';height:1px;width:10px',';border-left:','10px solid',338,'w>10;','this.msieBorderBug','=',5,1365,1395,1396,'").h!=',5,1365,1395,1407,157,1396,'").h;this.blankWidthBug=',1411,'||',5,1365,1332,'0px',338,'h==0;},','TestRenameOK',300,5,268,'="<',1334,'_5c=',5,1337,'_5c.setAttribute("name","','jsMath_test','");this.renameOK=(',5,29,'getElementsByName("',1443,'").length>0);',5,268,1355,'TestStyleChange',300,5,268,'="<span ID=\\"',1443,1237,'>";var _5d=',5,1337,'var w=_5d',271,';',5,323,1212,'({"#',1443,'":"font-size:200%"});this.',1216,'=(_5d',271,'==w);',5,268,1355,'VersionAtLeast',258,'v){var bv',1018,'this.version).split(".");v',1018,'v).split(".");if(v[1]==null){v[1]="0";}return bv[0]>v[0]||(bv[0]==v[0]&&bv[1]>=v[1]);},Init',300,5,41,'="unknown";this.',1356,384,1326,384,1433,384,1453,384,'MSIE',384,'Mozilla',384,'Opera',384,'OmniWeb',384,'Safari',384,'Konqueror','();if(','this.allowAbsoluteDelim','){',5,'Box.DelimExtend=',5,'Box.DelimExtendAbsolute;',5,'Box.Layout=',5,'Box.LayoutAbsolute;}',43,5,'Box.DelimExtend=',5,'Box.DelimExtendRelative;',5,'Box.Layout=',5,'Box.LayoutRelative;}if(','this.separateSkips','){',5,'HTML.Place=',5,'HTML.','PlaceSeparateSkips',';',5,'Typeset.prototype.','Place=',5,1538,1535,';}},MSIE',300,'if(',1339,'&&!',1347,'){',5,41,'="MSIE";',1056,1059,'Win32"){',1510,'=1;',1529,'=1',';this.butt
onCheck=1;this.',890,'=1;this.msieDivWidthBug=1;this.',884,640,'msieIntegralBug',640,'waitForImages',640,'msieAlphaBug=1;','this.alphaPrintBug=1',';this.',1320,'="position:relative; ";this.',1322,'=" ',161,';";',5,'Macro("joinrel","\\\\mathrel{\\\\kern-5mu}"),',5,1376,'arial"]="',230,': \'Arial unicode MS\'";',5,'styles["#jsMath_message','"]=',5,1586,1381,'position:fixed','/,"',204,'").','replace(/width:auto','/,"");',5,'styles["#jsMath_panel','"]=',5,1598,1381,1591,'/,"',204,'").',1595,1596,5,'styles["#jsMath_button','"]="width:','1px; "+',5,1610,1381,1591,'/,"',204,'").',1595,1596,5,1,'onscroll=',5,1281,'MoveButton;',5,1376,166,'"]=',5,1376,166,1381,161,1596,'if(','screen.deviceXDPI','&&','screen.logicalXDPI','&&',1639,'!=',1641,267,'imgScale*=',1641,'/',1639,';',5,450,'.alpha=0',527,292,'="<i>x</i>";',5,'EmBoxFor=',5,283,';}',43,1056,1059,'MacPPC"){this.msieAbsoluteBug',640,'msieButtonBug',1562,890,'=1;',5,'Setup.Script("jsMath-','msie-mac.js");',5,'Parser.prototype.macros.angle=["Replace","ord","<font face=\\"Symbol\\">&#x8B;</font>","normal"];',5,1598,1611,'25em; "+',5,1598,'"].',1595,1596,5,1610,1611,1612,5,1610,'"].',1595,'/,"");}}',5,'Macro("not","\\\\mathrel{\\\\rlap{\\\\kern3mu','/}}");}},Mozilla',300,'if(',5,270,'.ATTRIBUTE_NODE){',5,41,'="Mozilla";',1056,1059,'Win32"){',1570,';}',1510,'=1;',5,1696,'/}}");',1056,'vendor=="Firefox"){',5,291,'version=',1058,'vendorSub;}',43,1056,'userAgent.match','(" Firefox/([0-9.]+)( |$)")){',5,291,1720,'RegExp.$1;}}}},',1504,300,1056,'accentColorName){',5,41,'="',1504,'";','this.allowAbsolute','=',1362,';',1510,'=',1740,';this.valignBug=',1740,1560,807,'=1;',0,1362,'){',5,1673,'old-browsers.js','");}}},Opera',300,'if(',1347,'){',5,41,'="Opera";var _61=',1058,1725,'("Opera 7");',1740,'=0;this.delay=10;this.operaHiddenFix="[Processing]";if(_61){',5,1673,1757,'");}}},Safari',300,1056,'appVersion.match(/Safari\\//)){',5,41,'="Safari";var _62=',1058,1725,'("Safari/([0-9]+)");_62=(_62)?_62[1]:400;',402,5,1124,405,5,1128,']){',5,'TeX[',5,1128,']].dh=0.1;}}',5,'TeX.axis_heig
ht+=0.05;',1510,'=_62>=125;this.safariIFRAMEbug=_62>=312&&_62<412;this.safariImgBug',640,807,'=1',1560,1216,'=1;}},',1508,300,1056,'product&&',1058,'product.match("',1508,'")){',5,41,'="',1508,'";',1740,'=0;',1510,'=0;',1056,1725,'(/',1508,'\\/(\\d+)\\.(\\d+)/)){if(RegExp.$1<3||(RegExp.$1==3&&RegExp.$2<3)){',1529,'=1',1747,'1;',5,1673,1757,'");}}}}};',5,'Font={fallback:"symbol",message:"<b>No ',2,' TeX fonts found</b> -- using',' image fonts instead','.<br/>\\n"+"These',' may be slow and might not print well.<br/>\\n"+"Use the jsMath control panel to get additional information.",','extra_message:"Extra TeX fonts not found: <b><span id=\\"jsMath_ExtraFonts\\"></span></b><br/>"+"Using',1840,'.  This',1842,'Test1',258,'_64,n,_66,_67','){if(n==null){n=124;}if(','_66==null){_66=2;}if(_67==null){_67="";}var wh1=',5,'BBoxFor("<span style=\\"font-family',': "+_67+_64+", serif\\">"+',5,'TeX[_64][n',1142,'var wh2=',5,1853,': serif\\">"+',5,'TeX[_64][n',1142,'return (wh1.w>_66*wh2','.w&&wh1.h!=0);},','Test2',258,'_6a,n,_6c,_6d',1850,'_6c==null){_6c=2;}if(_6d==null){_6d="";}var wh1=',5,1853,': "+_6d+_6a+", serif\\">"+',5,'TeX[_6a][n',1142,'var wh2=',5,1853,': serif\\">"+',5,'TeX[_6a][n',1142,'return (wh2.w>_6c*wh1',1866,'CheckTeX',300,'var wh=',5,1853,': ',2,'-',133,109,'\\">"+',5,386,'1',1142,5,'nofonts=((wh.w*3>wh.h||wh.h==0)&&!this.Test1("cmr10','",null,null,"',2,'-"));if(',5,'nofonts&&(',1058,'platform!="MacPPC"||',5,41,'!="Mozilla"||!',5,291,1479,'(1.5))){wh=',5,1853,': ',133,109,'\\">"+',5,386,'1',1142,5,1903,'"));',0,5,'nofonts){',5,1673,'BaKoMa-fonts.js");}}},Check',300,'var _71=',5,450,';this.CheckTeX();if(',5,1933,'if(_71.autofont','||_71.font=="tex"){_71.font=this.fallback;if(_71.warn){',5,'nofontMessage=1;_71.warn=0;',5,1281,'SetCookie(0);if(',5,1,'NoFontMessage','){',5,1,1953,'();}',43,'this.',496,'(',759,');}}}}',43,1944,'){_71.font="','tex";}','if(_71.font=="','tex"){return;}}if(',5,'noImgFonts',1967,'unicode";}',1969,'unicode"){var _72=({Win32:"pc",MacPPC:"mac"})[',1058,'platform]||"unix";',5,1673,'fallback-
"+_72+".js");',5,'Box.TeXnonfallback=',5,'Box.TeX',';',5,1985,'=',5,'Box.TeXfallback;return;}','if(',5,291,1567,'){',5,490,5,1221,711,'",',5,'blank);}',1969,'symbol"){',5,1673,'fallback-symbols.js");',5,'Box.TeXnonfallback=',5,1985,';',5,1985,'=',5,1991,5,'Img.SetFont({',106,':["all"],',125,2023,129,2023,133,2023,111,2023,118,':["all"]});',5,'Img.LoadFont("cm-fonts");},',496,258,'_73',7,5,'Element("Warning','")){',945,'var div=',5,323,'DIV("Warning",{});div',810,'="<center><table><tr><td>"+"<div id=\\"',234,'\\">"+_73+"<','div style=\\"','text-align:left\\"><',1235,'float:left; ','margin: 8px ','0px 0px 20px\\">"+"<span onclick=\\"',5,1281,'Panel()\\" title=\\" Open the ',2,' Control Panel',' \\" class=\\"link\\">',2,2062,'</span>"+"</span','><',1235,2056,'20px 0px 0px; float:right\\">"+"<span onclick=\\"',5,'Font.HideMessage()\\" title=\\" Remove this font warning message',2063,'Hide this ',496,2066,'></div><',2052,'height:6px\\"></div><br clear=\\"all\\"/></div>"+"<',2052,'width:22em; height:1px\\"></div>"+"</td></tr></table></center><hr/>";},HideMessage',300,'var _75=',5,2041,'");if(_75){_75.style.display="none";}},Register',258,'_76){',5,487,528,541,'_76)=="string"){_76={name:_76};}var _77=_76.name;var _78=_77.replace(/10$/,"");var _79=',5,1124,'if(_76.prefix==null){_76.prefix="";}',0,'_76.style){_76.style="',230,': "+_76.prefix+_77+", serif";}',0,'_76.styl'],
+  ['es){','_76.styles','={};}','if(!','_76.macros','){',4,2,'jsMath.','TeX.fam[_79]=_77;',8,'TeX.famName[_77]=_79;',4,'[_78]=["HandleFont",_79];',8,'Add(',8,'Parser.prototype.macros,',4,');',1,'[".typeset ."+_77]=_76.style;',8,'Setup.','Styles(',1,');','jsMath.Script.Push(jsMath.','Setup,"TeXfont",_77);var _7a=!',8,'nofonts&&_76.test(_77,_76.testChar,_76.testFactor,_76.prefix);if(_7a&&','jsMath.Controls','.cookie.font=="','tex"){if(_76.tex){_76.tex','(_77,_79,_76);}jsMath.Script.End();return;}',3,'_7a&&',31,'.cookie.warn&&',31,32,'tex"&&!',8,'nofonts){',3,8,'Element("','Warning")){this.Message(this.extra_message);}var _7b=',8,46,'ExtraFonts");if(_7b){if(','_7b.innerHTML','!=""){',51,'+=",";}',51,'+=" "+_76.prefix+_77;}}if(',31,32,'unicode"){if(','_76.fallback','){',60,34,'var _7c={};_7c[_77]=["all"];',8,'Img.SetFont(_7c);',8,'Img.LoadFont(_77);',27,'Img,"Scale");',27,'Img,"UpdateFonts");',8,'Script','.End();},Load',':function(','_7d){',8,23,74,'(this.URL(_7d));},URL',76,'_7e){return ',8,'Img.root+_7e+"/def.js";}};',31,'={cookie:{scale:100,font:"tex",autofont:1,scaleImg:0,alpha:1,warn:1,button:1,progress:1,asynch:0,blank:0,print:0,keep:"0D"},cookiePath:"/",Init',':function(){','this.panel=',8,23,'DIV("panel",{display:"none"});',3,8,'Browser.msieButtonBug){this.Button();}else{setTimeout("',31,'.Button()",500);}},Panel',88,8,'Translate.Cancel();if(this.loaded){this.Main();}else{',8,74,'.delayedLoad(',8,'root+"jsMath-controls.html");}},Button',88,'var _7f=',8,23,'DIV("button",{});_7f.title=" Open jsMath Control Panel ";_7f.innerHTML="jsMath";if(_7f.offsetWidth<2*',8,'em){_7f.style.width="auto";}_7f.onclick=new Function("',31,'.Panel()");',3,'this.cookie','.button){_7f.style.display="none";}},MoveButton',88,3,'this.button','){',120,'=',8,46,'button");}','this.button.style.visibility="','hidden";',127,'visible";},GetCookie',88,'var _80=',8,'document.cookie',';if(','jsMath.window.location.','protocol=="file:"){','_80=unescape(',136,'search.substr(1));}if(_80','.match(/jsMath','=([^;]*)/)){var _81=RegExp.$1.split(/,/);
for(var i=0;i<_81.length;i++){var x=_81[i].match(/(.*):(.*)/);if(x[2].match(/^\\d+$/)){x[2]=1*x[2];}',116,'[x[1]]=x[2];}}},SetCookie',76,'_84){var _85=[];','for(var id in ',116,'){_85[_85.length]=id+":"+',116,'[id];}_85=_85.join(",");if(',136,137,3,'_84){return;}this.loaded=0;var _87=',136,'href;_87=_87.replace(/\\?.*/,"")+"?jsMath="+escape(_85);if(_87!=',136,'href){',136,'replace(_87);}}else{if(','this.cookiePath','){_85+="; ','path="+',162,';}if(','this.cookieDomain',163,'domain="+',167,166,116,'.keep!="0D"){var ms={D',':1000*60*60*24',',W',174,'*7,M',174,'*30,Y',174,'*365};var exp=new Date;exp.setTime(exp.getTime()+',116,'.keep.substr(','0,1)*ms[',116,183,'1,1)]);_85+="; expires="+exp.toGMTString();}',8,134,'="jsMath="+_85;var _8a=',8,134,';if(_84&&!_8a',141,'=/)){alert("Cookies must be enabled in order to save jsMath options");}}}};',8,'Click={CheckClick',76,'_8b){',3,'_8b){_8b=',8,'window.event',166,'_8b.altKey){',31,'.Panel();}},CheckDblClick',76,'_8c){',3,'_8c){_8c=',8,'window.event;}',3,8,'Click.DblClick){',8,'Extension.Require("double-click",1);var _8d=_8c;_8c={};',147,'_8d){_8c[id]=_8d[id];}}',27,'Click,"DblClick",[_8c,this.alt]);}};',8,'TeX={thinmuskip:3/18,medmuskip:4/18,thickmuskip:5/18,x_height:0.430554,quad:1,num1:0.676508,num2:0.393732,num3:0.44373,denom1:0.685951,denom2:0.344841,sup1:0.412892,sup2:0.362892,sup3:0.288888,sub1:0.15,sub2:0.247217,sup_drop:0.386108,sub_drop:0.05,delim1:2.39,delim2:1,axis_height:0.25,default_rule_thickness:0.04,big_op_spacing1:0.111111,big_op_spacing2:0.166666,big_op_spacing3:0.2,big_op_spacing4:0.6,big_op_spacing5:0.1,integer:6553.6,scriptspace:0.05,nulldelimiterspace:0.12,delimiterfactor:901,delimitershortfall:0.5,scale:1,atom:["ord","op","bin","rel","open","close","punct","ord"],fam:["cmr10","cmmi10","cmsy10","cmex10","cmti10","","cmbx10",""],famName:{cmr10:0,cmmi10:1,cmsy10:2,cmex10:3,cmti10:4,cmbx10:6},encoding:["&#xC0;","&#xC1;","&#xC2;","&#xC3;","&#xC4;","&#xC5;","&#xC6;","&#xC7;","&#xC8;","&#xC9;","&#xCA;","&#xCB;","&#xCC;","&#xCD;","&#xCE;","&#xCF;","&#xB0;"
,"&#xD1;","&#xD2;","&#xD3;","&#xD4;","&#xD5;","&#xD6;","&#xB7;","&#xD8;","&#xD9;","&#xDA;","&#xDB;","&#xDC;","&#xB5;","&#xB6;","&#xDF;","&#xEF;","!","&#x22;","#","$","%","&#x26;","&#x27;","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","&#x3C;","=","&#x3E;","?","@","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","[","&#x5C;","]","^","_","`","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","{","|","}","&#x7E;","&#xFF;"],cmr10:[[0.625',',0.683],[0.','833',225,'778',225,'694',225,'667',225,'75',225,'722',225,'778',225,'722',225,'778',225,'722',225,'583',',0.694,0,{ic:0.','0778,krn:{"39":0.0778,"63":0.0778,"33":0.0778,"41":0.0778,"93":0.0778},lig:{"105":','14,"108":15}}],[0.','556',',0.694],[0.','556',251,'833',251,'833',251,'278',',0.431],[0.','306',',0.431,0.194','],[0.5',251,'5',251,'5,0.628],[0.5',251,'5,0.568],[0.75',251,'444,0,0.17],[0.5',251,'722',259,'778',259,'5,0.528,0.0972],[0.903,0.683],[1.01',225,'778,0.732,0.0486],[0.278',',0.431,0,{krn:{"','108":-0.278,"76":-0.319}}],[0.278',',0.694,0,{lig:{"96":','60}}],[0.','5',251,'833',',0.694,0.194],[','0.5',',0.75,0.0556],[0.','833',288,'778',251,'278',',0.694,0,{krn:{"','63":0.111,"33":0.111','},lig:{"39":34}}],[0.','389',',0.75,0.25],[0.','389',298,'5,0.75],[','0.778,0.583,0.0833],[','0.278,0.106',',0.194],[0.','333',',0.431,0,{','lig:{"45":','123}}],[',303,'],[0.5',298,'5',',0.644','],[0.5,0.644],[0.','5',313,314,'5',313,314,'5',313,314,'5',313,314,'278',259,'278',261,'],[0.278,0.5',304,'778',',0.367,-0.133],[','0.472,0.5',304,'472',281,'62}}],[0.778',251,'75',',0.683,0,{krn:{"','116','":-0.0278,"','67',344,'79',344,'71',344,'85',344,'81',344,'84":-0.0833,"89":-0.0833,"86":-0.111,"87":-0.111}}],[0.','708',225,'722',225,'764',342,'88',344,'87',344,'65',344,'86',344,'89":-','0.0278}}],[0.','681',225,'653',',0.683,0,{','krn:{"111":-0.0833,"101":-0.0833,"117":-0.0833,"114":-0.0833,"97":-0.0833,"65":-0.111,"79":-0.0278,"67"
:-0.0278,"71":-0.0278,"81":-0.0278}}],[','0.785',225,'75',225,'361',342,'73":',371,'514',225,'778',342,'79',344,'67',344,'71',344,'81":-',371,'625',342,355,'917',225,'75',225,'778',342,'88',344,'87',344,'65',344,'86',344,'89":-',371,'681',342,'65','":-0.0833,"','111',344,'101',344,'97',344,'46',419,'44":-0.','0833}}],[0.','778,0.683',304,'736',342,'116',344,'67',344,'79',344,'71',344,'85',344,'81',344,355,'556',225,'722',342,'121',344,'101',419,'111',419,'114',419,'97',419,'65',419,'117":-0.',429,'75',225,'75',',0.683,0,{ic:0.','0139,',376,'1.03',468,'0139,',376,'0.75',342,'79',344,'67',344,'71',344,'81":-',371,'75',468,'025,','krn:{"101',419,'111',419,'114',419,'97',419,'65',419,463,429,'611',225,'278',298,'5',251,'278',298,'5',251,'278,0.668],[0.','278',281,'92}}],[0.','5',279,'118',344,'106":0.0556,"121',344,'119":-',371,'556',',0.694',',0',',{krn:{"101":0.0278,"111":0.0278,"120":-0.0278,"100":0.0278,"99":0.0278,"113":0.0278,"118":-0.0278,"106":0.0556,"121":-0.0278,"119":-0.0278}}],[0.','444',279,'104',344,'107":-',371,'556',251,'444',259,'306',247,248,'12,"102":11,"108":13}}],[0.','5,0.431',',0.194,{ic:0.','0139,krn:{"','106":',371,'556',294,'116',344,'117',344,'98',344,'121',344,'118',344,'119":-',371,510,'306,0.668',304,'528',294,'97','":-0.0556,"','101',344,'97',344,'111',344,'99":-',371,'278',251,'833',279,'116',344,'117',344,'98',344,'121',344,'118',344,'119":-',371,'556',279,'116',344,'117',344,'98',344,'121',344,'118',344,'119":-',371,540,',0',525,'556',261,525,'528',261,'],[0.392',259,'394',259,'389,0.615,0,{krn:{"121',344,'119":-',371,'556',279,'119":-',371,'528',',0.431,0,{ic:0.',542,'97',565,'101',344,'97',344,'111',344,'99":-',371,'722',625,542,'101',344,'97',344,'111',344,'99":-',371,'528',259,'528',',0.431',541,542,'111',344,'101',344,'97',344,'46',419,'44":-0.',429,'444',259,'5',625,'0278,',307,'124}}],[1',625,'0278}],[0.','5',251,'5,0.668],[0.5,0.668]],cmmi10:[[0.615',468,'139',',krn:{"61":-0.0556,"59":-0.111,"58":-0.111,"127":0.',429,'833',342,'127":0.167}}],[0.','763',468,668,'krn:{"127":0.
0833}}],[0.','694',342,682,'742',468,'0757,',686,'831',468,'0812,krn:{"61',565,'59":-0.0556,"58":-0.0556,"127":0.','0556}}],[0.','78',468,'0576,',686,'583',468,'139',678,699,'667',375,686,'612',468,'11,krn:{"61',565,698,699,'772',468,'0502,',686,'64',625,'0037,','krn:{"127":',371,'566',523,541,'0528,',686,'518',651,541,'0556}],[0.444',247,'0378,krn:{"',698,699,'406',306,'krn:{"127":0.0556}}],[0.','438',523,541,'0738,',686,'497',651,541,'0359,',742,'469',247,668,686,'354',306,742,'576',259,'583',251,'603',261,',{',725,371,'494',625,'0637,krn:{"',698,'0278}}],[0.','438',523,541,'046,','krn:{"127":0.111}}],[0.','57',625,'0359}],[0.','517',261,',{',686,'571',625,'0359,krn:{"59',565,'58":-0.',699,'437',625,'113,krn:{"',698,773,'54',625,'0359,',725,371,'596',523,',0.194,{',686,'626',261,',{',742,'651',523,541,'0359,',778,'622',625,781,'466',306,686,'591',',0.694,0,{',686,'828',625,672,'517',261,',{',686,'363',651,',0.0972,{ic:0.','0799,',686,'654',261,',{',725,'0.0833}}],[1',334,'1',334,'1',334,'1',334,'0.278',',0.464,-0.0363],[','0.278',849,'0.5,0.465,-0.0347],[',852,'0.5',259,'5',259,'5',259,'5',261,'],[0.5',261,'],[0.5',261,314,'5',261,314,'5',261,'],[',303,'],[',303,304,'778',',0.539,0.0391],[','0.5,0.75,0.25,{krn:{"1',565,'65',565,'77',565,'78',565,'89":0.0556,"90":-0.',699,'778',878,852,'0.531',247,'0556,',686,'75',342,'127":','0.','139}}],[0.','759',468,'0502,',686,'715',468,'0715,krn:{"61',344,698,429,'828',468,668,742,'738',468,'0576,',686,'643',468,'139',678,429,'786',375,686,'831',468,'0812,krn:{"61',565,698,699,'44',468,'0785,',778,'555',468,'0962',678,'167}}],[0.','849',468,'0715,krn:{"61',565,698,699,'681',342,898,371,'97',468,'109,krn:{"','61',565,698,429,'803',468,954,'61',419,'61',344,698,429,'763',468,668,686,'642',468,'139',678,429,'791,0.683',804,686,'759',468,'00773,',686,'613',468,'0576,krn:{"61',565,698,429,'584',468,'139,krn:{"61',344,698,429,'683',468,954,'59":-0.111,"',790,'111,"61',565,898,371,'583',468,'222',',krn:{"59":-0.167,"58":-0.167,"61":-0.111}}],[0.','944',468,'139',1008,'828',468,'
0785,krn:{"61',419,'61',344,698,429,'581',468,'222',1008,'683',468,'0715,krn:{"61',565,698,429,'389,0.75],[0.389',286,'0.389',286,'1,0.358,-0.142],[',1035,'0.417',822,778,'529',259,'429',251,'433',306,742,'52',294,'89":0.0556,"90',565,'106":-0.111,"102":-0.167,"',682,'466',306,742,'49',523,541,'108,krn:{"',698,941,'477',651,541,'0359,',725,371,'576',294,'127":-',371,'345,0.66],[0.412,0.66',541,'0572,krn:{"59',565,790,699,'521',247,'0315}],[0.298',247,'0197,',686,'878',259,'6',259,'485',306,742,'503',261,',{',686,'446',651,541,'0359,',686,'451',625,668,'krn:{"',698,699,'469',306,742,'361,0.615,0,{',686,'572',279,898,371,'485',625,'0359,',725,371,'716',625,'0269,',686,'572',279,898,371,'49',651,541,'0359,',742,'465',625,'044,',742,'322',279,898,371,'384',261,',{',686,'636',261,',{',778,'5,0.714',',0,{ic:0.','154}],[0.278',247,'399}]],cmsy10:[[',302,'0.278,0.444,-0.0556],[',302,852,302,'0.5,0.444,-0.0556],[',302,302,302,302,302,302,302,'1',286,1159,1159,'0.778',849,'0.778,0.464,-0.0363','],[0.778,0.636,0.136',1174,1174,1174,1174,1174,'],[0.778',334,'0.778,0.483,-0.0169],[0.778',878,'0.778',878,'1',878,'1',878,'0.778',878,'0.778',878,'1',334,'1',334,'0.5',286,'0.5',286,'1',334,'1',286,'1',286,'0.778',849,'1',334,'1',334,'0.611',286,'0.611',286,'1',334,'1',286,'1',286,'0.778',259,'275,0.556],[1',259,'667',878,'0.667',878,'0.889',286,'0.889',286,'0',286,'0',334,'0.556',251,'556',251,'667',259,'5',288,'722',251,'722',251,'778',251,'778',251,'611',251,'798',342,'48":0.','194}}],[0.657',468,'0304',',krn:{"48":0.',900,'527',468,'0583',1264,900,'771',468,'0278',1264,429,'528',468,'0894',1264,'111}}],[0.','719',468,'0993',1264,1280,'595',',0.683,0.0972,{ic:0.','0593',1264,1280,'845',468,'00965',1264,1280,'545',468,'0738,krn:{"48":',371,'678',1287,'185',1264,941,'762',468,'0144',1264,699,'69',342,1260,'139}}],[1.2',342,1260,900,'82',468,'147',1264,429,'796',468,1273,1264,1280,'696',468,'0822',1264,429,'817,0.683,0.0972,{krn:{"',1260,1280,'848',342,1260,429,'606',468,'075',1264,900,'545',468,'254,krn:{"48":',371,'626',468,'09
93',1264,429,'613',468,'0822,krn:{"48":',371,'988',468,'0822',1264,429,'713',468,'146',1264,900,'668',1287,'0822',1264,429,'725',468,'0794',1264,900,'667,0.556],[0.',1377,1377,1377,1377,'611',251,'611',251,'444',298,'444',298,'444',298,'444',298,'5',298,'5',298,'389',298,'389',298,'278',298,'5',298,'5',298,'611',298,'5',298,'278',286,'0.833,0.04,0.96],[0.75',225,'833',225,'417',523,541,'111}],[0.',1377,'667,0.556',1174,1174,'],[0.444',286,'0.444',286,'0.444',286,'0.611',286,'0.778,0.694,0.13','],[',1434,'],[',1434,'],[',1434,']],cmex10:[[0.458',',0.04,1.16,{n:','16}],[0.458',1442,'17}],[0.417',1442,'104}],[0.417',1442,'105}],[0.','472',1442,'106}],[0.472',1442,'107}],[0.472',1442,'108}],[0.','472',1442,'109}],[0.583',1442,'110}],[0.583',1442,1421,'472',1442,'68}],[0.472',1442,'69}],[0.333',',0,0.6,{delim:{','rep:12}}],[0.556',1469,'rep:13}}],[0.578',1442,'46}],[0.578',1442,'47}],[0.597',',0.04,1.76,{','n:18}],[0.597',1477,'n:19}],[0.736',',0.04,2.36,{n:','32}],[0.736',1481,'33}],[0.528',1481,'34}],[0.528',1481,'35}],[0.583',1481,'36}],[0.583',1481,'37}],[0.583',1481,'38}],[0.583',1481,'39}],[0.75',1481,'40}],[0.75',1481,'41}],[0.75',1481,'42}],[0.75',1481,'43}],[1.04',1481,'44}],[1.04',1481,'45}],[0.792',',0.04,2.96,{n:','48}],[0.792',1509,'49}],[0.583',1509,'50}],[0.583',1509,'51}],[0.639',1509,'52}],[0.639',1509,'53}],[0.639',1509,'54}],[0.639',1509,'55}],[0.806',1509,'56}],[0.806',1509,'57}],[0.806',',0.04,2.96],[','0.806',1529,'1.28',1529,'1.28',1529,'0.811',1477,'n:30}],[0.811',1477,'n:31}],[0.875',1477,'delim:{top:','48,bot:64,rep:66}}],[0.875',1477,1542,'49,bot:65,','rep:67}}],[0.','667',1477,1542,'50,bot:52,rep:54}}],[0.667',1477,1542,'51,bot:53,rep:55}}],[0.667',1477,'delim:{bot:','52,rep:54}}],[0.667',1477,1556,'53,rep:55}}],[0.667',1469,'top:50,rep:54}}],[0.667',1469,'top:51,rep:55','}}],[0.889,0,0.9,{delim:{top:','56,mid:60,bot:58,rep:62',1565,'57,mid:61,bot:59,rep:62',1565,'56,bot:58,rep:62',1565,'57,bot:59,rep:62','}}],[0.889,0,1.8,{delim:{rep:','63',1573,'119}}],[0.889,0,0.3,{delim:{','rep:62}}],[
0.','667',1469,'top:120,','bot:121,rep:63}}],[0.','875',1477,1542,'56,bot:59,',1577,'875',1477,1542,'57,bot:58,',1577,'875',1469,'rep:66}}],[0.875',1469,1547,'611',1477,'n:28}],[0.611',1477,'n:29','}],[0.833,0,1,{n:','71}],[1.','11,0.1,1.5],[','0.472,0,1.11,{ic:0.194,n:','73}],[0.556,0,2.22,{ic:0.444}],[1.','11,0,1,{n:','75}],[1.51',',0.1,1.5],[1.',1607,'77}],[1.51',1609,1607,'79}],[1.51',1609,'06,0,1,{n:88}],[','0.944,0,1,{n:','89}],[',1605,'90',1602,'91',1602,'92',1602,'93',1602,'94',1602,'95}],[1.44',1609,'28,0.1,1.5],[0.556,0',',2.22,{ic:0.444}],[1.11',1609,'11',1609,'11',1609,'11',1609,1604,1617,'97}],[1.',1632,'.722,0,{n:99','}],[1,0.75,0,{n:','100','}],[1.44,0.75],[0.','556,0.722,0,{n:102',1646,'103',1648,'472',1477,'n:20}],[0.472',1477,'n:21}],[0.528',1477,'n:22}],[0.528',1477,'n:23}],[0.528',1477,'n:24}],[0.528',1477,'n:25}],[0.667',1477,'n:26}],[0.667',1477,'n:27}],[1',1442,'113}],[1',1477,'n:114}],[1',1481,'115}],[1',1509,'116}],[1.06,0,1.8,{',1542,'118,bot:116,rep:117}}],[1.06,0,0.6],[1.06,0.04,0.56],[0.778',1469,'top:126,','bot:127,rep:119','}}],[0.667',1469,1580,'rep:63}}],[0.667',1469,1581,'45,0.12],[0.',1689,1689,1689,'778',1469,1681,'rep:119}}],[0.778',1469,1682,'}}]],cmti10:[[0.627',468,'133}],[0.818',225,'767',468,'094}],[0.692',225,'664',468,'153}],[0.743',468,'164}],[0.','716',468,'12}],[0.','767',468,1421,'716',468,'0599}],[0.767',468,1421,'716',468,'103}],[0.','613',523,541,'212,krn:{"39":0.104,"63":0.104,"33":0.104,"41":0.104,"93":0.104},lig:{"105":',249,'562',523,541,1725,'588',523,541,1725,'882',523,541,1725,'894',523,541,1725,'307',625,'0767}],[0.','332',651,541,'0374}],[0.511',251,'511',247,'0969','}],[0.511,0.','628',1150,'083}],[0.511',247,'108',1758,'562',1150,1725,'831',251,'46,0,0.17],[0.537',523,541,1449,'716',625,'0751}],[0.716',625,'0751',1758,'528',833,'0919}],[0.883',468,1714,'985',468,1714,'767,0.732,0.0486,{ic:0.094}],[0.256',279,'108":-0.256,"76":-0.321}}],[0.307',247,'124,lig:{"96":',282,'514',247,'0696}],[0.818',523,541,'0662}],[0.769',251,'818,0.75,0.0556,{ic:0.136}],[
0.767',247,'0969}],[0.307',247,'124,krn:{"63":0.102,"33":0.102',296,'409',',0.75,0.25,{ic:0.','162}],[0.409',1808,'0369',1758,'75',1150,'149}],[0.767,0.562,0.0567,{ic:0.0369','}],[0.307,0.','106',304,'358',625,'0283,',307,'123}}],[0.307,0.106],[0.511',1808,'162}],[','0.511,0.644,0,{ic:0.136}],[',1826,1826,1826,'0.511',313,541,'136}],[',1826,1826,'0.511',313,541,'136}],[',1826,1826,'0.307',625,'0582',1816,'431',541,'0582',1816,'5',541,'0756}],[0.767,0.367,-0.133,{ic:0.0662',1758,'5',304,'511',247,'122,lig:{"96":62}}],[0.767',247,'096}],[0.743',375,'krn:{"110":-0.0256,"108":-0.0256,"114":-0.0256,"117":-0.0256,"109":-0.0256,"116":-0.0256,"105":-0.0256,"67":-0.0256,"79":-0.0256,"71":-0.0256,"104":-0.0256,"98":-0.0256,"85":-0.0256,"107":-0.0256,"118":-0.0256,"119":-0.0256,"81":-','0.0256,"84','":-0.0767,"','89',1864,'86','":-0.102,"','87',1868,'101":-0.0511,"97":-0.0511,"111":-0.0511,"100":-0.0511,"99":-0.0511,"103":-0.0511,"113":-0.0511}}],[0.','704',468,1725,'716',468,'145}],[0.','755',468,'094,krn:{"88','":-0.0256,"','87',1881,'65',1881,'86',1881,'89','":-0.0256}}],[0.','678',468,1714,'653',468,'133,krn:{"','111','":-0.0767,"101":-0.0767,"','117','":-0.0767,"114":-0.0767,"97":-0.0767,"','65',1868,'79":-0.0256,"67":-0.0256,"71":-0.0256,"81":-0.0256}}],[0.','774',468,'0872}],[0.743',468,1711,'386',468,'158}],[0.525',468,'14}],[0.769',468,'145,krn:{"',1902,'627',342,'84',1864,'89',1864,'86',1868,'87',1868,1871,'897',468,1711,'743',468,1711,'767',468,'094,krn:{"88',1881,'87',1881,'65',1881,'86',1881,'89',1889,'678',468,'103',',krn:{"65":-0.0767}}],[0.','767,0.683',541,'094}],[0.729',468,'0387,',1862,'0.0256,"84',1864,'89',1864,'86',1868,'87',1868,1871,'562',468,1714,'716',468,1895,'121',1897,'111',1899,'117":-0.0767,"65":-0.0767}}],[0.','743',468,1711,'743',468,'184,krn:{"111',1897,'117',1899,'65',1868,1902,'999',468,'184',1948,'743',468,'158,krn:{"',1902,'743',468,'194,',488,1864,'111',1899,1974,'613',468,1877,'307',1808,'188}],[0.514',247,'169}],[0.307',1808,1449,'511',247,'0665',1816,'668',1150,'118}],[0.307',247,1
792,513,'511',625,1749,'46',247,'0631,krn:{"',1871,'46',625,'0565,krn:{"',1871,'511',247,'103,krn:{"108":0.0511}}],[0.46',625,'0751,krn:{"',1871,'307',523,541,1729,539,'46',651,541,'0885}],[0.511',247,'0767',1816,'655',1150,'102',1816,'655',541,1877,'46',247,1456,'256',822,'i'],
+  ['c:0.103',',krn:{"108":0.0511}}],[0.','818',',0.431,0,{ic:0.','0767}],[0.','562',3,'0767,krn:{"39":-0.102','}}],[0.','511',3,'0631',',krn:{"101":-0.0511,"97":-0.0511,"111":-0.0511,"100":-0.0511,"99":-0.0511,"103":-0.0511,"113":-0.0511}}],[0.','511',',0.431,0.194,{ic:0.','0631',12,'46',14,'0885}],[0.','422',3,'108',12,'409',3,'0821}],[0.332,0.615,0,{ic:0.0949}],[0.537',3,4,'46',3,'108}],[0.664',3,'108',1,'464',3,'12}],[0.486',14,19,'409',3,'123}],[0.511',3,'0921',',lig:{"45":124}}],[1.','02',3,'0921}],[0.511,0.694,0,{ic:0.122','}],[0.511,0.668,0,{ic:0.','116',49,'105}]],cmbx10:[[0.692',',0.686],[0.','958',53,'894',53,'806',53,'767',53,'9',53,'831',53,'894',53,'831',53,'894',53,'831',53,'671',',0.694,0,{ic:0.109,krn:{"39":0.109,"63":0.109,"33":0.109,"41":0.109,"93":0.109},lig:{"105":','14,"108":15',8,'639',',0.694],[0.','639',79,'958',79,'958',79,'319',',0.444],[0.','351',',0.444,0.194','],[0.575,0.','694',90,'694',90,'632',90,'694',90,'596],[0.869',79,'511,0,0.17],[0.597',79,'831',87,'894,0.444',90,'542,0.0972],[1.04,0.686],[1.17',53,'894,0.735,0.0486],[0.319',',0.444,0,{krn:{"','108":-0.319,"76":-0.378',8,'35',',0.694,0,{lig:{"96":','60',8,'603',79,'958,0.','694,0.194',90,'75,0.0556],[0.',119,122,'894',79,'319',',0.694,0,{krn:{"','63":0.128,"33":0.128},lig:{"39":34',8,'447',',0.75,0.25],[0.','447,0.75,0.25',90,'75],[0.894,0.633,0.133],[','0.319,0.156',',0.194],[0.','383',',0.444,0',',{lig:{"45":123}}],[',136,90,'75,0.25',90,'644',90,'644',90,'644',90,'644',90,'644',90,'644',90,'644',90,'644',90,'644',90,'644],[0.319',87,'319',89,'],[0.35,0.5',137,'894,0.391,-0.109],[0.543,0.5',137,'543',114,'62',8,'894',79,'869',',0.686,0,{krn:{"','116','":-0.0319,"','67',180,'79',180,'71',180,'85',180,'81',180,'84":-0.0958,"89":-0.0958,"86":-0.128,"87":-0.128}}],[','0.818',53,'831',53,'882',178,'88',180,'87',180,'65',180,'86',180,'89','":-0.0319}}],[0.','756',53,'724,0.686,0,{','krn:{"111":-0.0958,"101":-0.0958,"117":-0.0958,"114":-0.0958,"97":-0.0958,"65":-0.128,"79":-0.0319,"67":-0.0319,"71":-0.0319,"81":-0.0319}}],[','0.
904',53,'9',53,'436',178,'73":0.0319',8,'594',53,'901',178,'79',180,'67',180,'71',180,'81',207,'692',178,191,'1.09',53,'9',53,'864',178,'88',180,'87',180,'65',180,'86',180,'89',207,'786',178,'65":-0.0958,"111',180,'101',180,'97',180,'46":-0.0958,"44":-0.0958}}],[0.','864,0.686',137,'862',178,'116',180,'67',180,'79',180,'71',180,'85',180,'81',180,191,'0.639',53,'8',178,'121',180,'101":-0.0958,"111":-0.0958,"114":-0.0958,"97":-0.0958,"65":-0.0958,"117":-0.0958}}],[0.','885',53,'869,0.686,0,{ic:0.','016,',211,'1.19,0.686,0,{ic:0.016,',211,'0.869',178,'79',180,'67',180,'71',180,'81',207,286,'0287,krn:{"',283,'703',53,'319',132,'603',79,'319,0.75,0.25',90,'694],[0.319',79,'319',114,'92',8,'559',110,'118',180,'106":0.0639,"121',180,'119',207,'639,0.694,0',',{krn:{"101":0.0319,"111":0.0319,"120":-0.0319,"100":0.0319,"99":0.0319,"113":0.0319,"118":-0.0319,"106":0.0639,"121":-0.0319,"119":-0.0319}}],[0.','511',110,'104',180,'107',207,'639',79,'527',87,'351',75,'12,"102":11,"108":13',8,'575',89,',{ic:0.016,krn:{"','106":0.0319',8,'639',128,'116',180,'117',180,'98',180,'121',180,'118',180,'119',207,'319',79,'351,0.694',137,'607',128,'97":-0.0639,"101',180,'97',180,'111',180,'99',207,'319',79,'958',110,'116',180,'117',180,'98',180,'121',180,'118',180,'119',207,'639',110,'116',180,'117',180,'98',180,'121',180,'118',180,'119',207,'575',139,327,'639',89,327,'607',89,'],[0.474',87,'454',87,'447,0.635,0,{krn:{"121',180,'119',207,'639',110,'119',207,'607',139,344,'97":-0.0639,"101',180,'97',180,'111',180,'99',207,'831',139,344,'101',180,'97',180,'111',180,'99',207,'607',87,'607',89,344,'111',180,'101',180,'97',180,259,'511,0.444',90,'444,0,{ic:0.0319',45,'15,0.',461,'}],[0.575,0.694',90,'694',90,'694]]};','jsMath.Img','={fonts:[50,60,70,85,100,120,144,173,207,249,298,358,430],w:{"50":6.9,"60":8.3,"70":9.7,"85":11.8,"100":13.9,"120":16.7,"144":20,"173":24,"207":28.8,"249":34.6,"298":41.4,"358":49.8,"430":59.8},best:4,update:{},factor:1,loaded:0,SetFont',':function(','_8f){for(var _90 in _8f){if(!','this.update[_90',']){',474,']=[]
;}',474,']=',474,'].concat(_8f[_90]);}},AddFont',472,'_91,def){if(!',470,'[_91]){',470,'[_91]={};}','jsMath.Add(',470,'[_91],def);},UpdateFonts',':function(){','var _93=this.update;','if(!this.loaded){','return;}var ','_94=this[','jsMath.Img.fonts','[this.best]];','for(var _95 in _93){','for(var i=0;i<','_93[_95].length;i++){var c=_93[_95][i];if(c=="all"){for(c in ','jsMath.TeX[','_95]){',501,'_95][c].img','={};}}else{',501,504,'={};}}}this.update={};},BestSize',491,'var w=jsMath.em*this.factor;var m=','this.w[this.fonts[','0]];for(var i=1;i<','this.fonts','.length;i++){','if(w<(',511,'i]]+2*m)/3){','return ','i-1;}m=',511,'i]];}',518,'i-1;},Scale',491,493,'return;}this.best=this.BestSize();this.em=',470,'.w[',513,497,'this.scale','=(jsMath.em/this.em);','if(Math.abs(',531,'-1)<0.12){',531,'=1;}},URL',472,'_9b,_9c,C){var _9e=(','jsMath.Controls.cookie.','alpha)?"/alpha/":"/plain/";if(C==null){C="def.js";}else{C="char"+C+".png";}if(_9c!=""){_9c+="/";}','return this.','root+_9b+_9e+_9c+C;},LoadFont',472,'_9f){',493,'this.Init();}jsMath.Setup.Script(this.URL(_9f,""));},Init',491,'if(',540,'print){',540,'print=0;this.factor*=3;if(jsMath.window.location.protocol!="file:"){jsMath.Controls.SetCookie(0);}if(','jsMath.Browser.','alphaPrintBug){',540,'alpha=0;}}var _a0="0123456789ABCDEF";this.HexCode=[];',499,'128;i++){var h=Math.floor(i/16);var l=i-16*h;this.HexCode[i]=_a0.charAt(h)+_a0.charAt(l);}this.loaded=1;}};jsMath.HTML={Em',472,'m){var n=5;if(m<0){n++;}',533,'m)<0.000001){m=0;}var s=String(m);s=s.replace(/(\\.\\d\\d\\d).+/,"$1");',518,'s+"em";},Spacer',472,'w){if(w==0){return "";}return "<','span class=\\"spacer\\" style=\\"margin-','left:"+this.Em(','w)+"\\"></span>";},Blank',472,'w,h,d,_ab){var _ac="";var _ad="";if(_ab){_ad+="border-',569,'w)+" solid;";if(',554,'widthAddsBorder){w=0;}}if(w==0){if(',554,'blankWidthBug){_ad+="width:1px;";_ac="<',568,'right:-1px\\"></span>";}}else{_ad+="width:"+this.Em(w)+";";}if(d==null){d=0;}if(h){var H=this.Em(h+d);if(_ab&&h>0&&h*jsMath.em<1.5){H="1px";h=1/jsMath.em;}_ad+="heigh
t:"+H+";";}if(',554,'mozInlineBlockBug){d=-h;}if(',554,'msieBorderBug&&!_ab){d-=jsMath.d;}if(d){_ad+="','vertical-align:"+','this.Em(-d);}',518,'_ac+"<span class=\\"blank\\" ','style=\\""+','_ad+"\\"></span>";},Rule',472,'w,h){if(h==null){h=jsMath.TeX.default_rule_thickness;}',542,'Blank(w,h,0,1);},Class',472,'_b1,_b2){return "<span class=\\""+_b1+"\\">"+_b2+"</span>";},Place',472,'_b3',',x,y){if(Math.abs(x)<0.0001){x=0;}if(Math.abs(y)<0.0001){y=0;}','if(x||y){var _b6','="<span style=\\"position',': relative',';";if(x){_b6+=" margin-',569,'x)+";";}if(y){_b6+=" ','top:"+this.Em','(-y)+";";}_b3=_b6+"\\">"+_b3','+"</span>";}',518,'_b3;},PlaceSeparateSkips',472,'_b7',599,'if(y){_b7',601,602,'; ',606,'(-y)+";"+"\\">"+_b7',608,'if(x){_b7=this.Spacer(x)+_b7',';}return ','_b7;},PlaceAbsolute',472,'_ba',599,'_ba',601,':absolute','; ',569,'x)+"; "+"',606,'(y)+";\\">"+_ba+"&nbsp;</span>";',518,'_ba;},Absolute',472,'_bd,w,h,d,y,H){if(y!="none"){',533,'y)<0.0001){y=0;}_bd',601,629,'; "+"top:"+','jsMath.HTML.','Em(y)+"; left:0em',';\\">"+_bd','+"&nbsp;"+"</span>";}if(d=="none"){d=0;}_bd+=this.Blank(w,h-d,d);if(',554,'msieAbsoluteBug){_bd',601,':relative',646,608,'_bd',601,651,';"+" width: "+',644,'Em(w)+";"+" height: "+',644,'Em(H)+";"+',554,'msieInlineBlockFix+"\\">"+_bd+"</span>";',518,'_bd;}};','jsMath.Box','=function(','_c3,_c4,w,h,d){if(d==null){d=jsMath.d;}this.type="typeset";this.w=w;this.h=h;this.d=d;this.bh=h;this.bd=d;this.x=0;this.y=0;','this.html=','_c4;this.format=_c3;};',488,666,',{defaultH:0,Null:','new jsMath.Box("','null","",0,0,0),Text',472,'_c8,_c9,_ca,_cb,a,d){var _ce=','jsMath.Typeset.AddClass(','_c9,_c8);_ce=','jsMath.Typeset.','AddStyle(','_ca,_cb,_ce);var BB','=jsMath.EmBoxFor(','_ce);var TeX=',680,'TeX(_ca,_cb);var bd=((_c9=="cmsy10"||_c9=="cmex10")?BB.h-TeX.h:TeX.d*BB.h/TeX.hd);','var box=',674,'text",_c8,BB.w,BB.h-bd,bd);box.style=_ca;box.size=_cb;','box.tclass','=_c9;if(d','!=null){box.','d=d','*TeX.scale;}else{box.','d=0;}if(a==null||a==1){box.h=0.9*TeX.M_height;}else{box.h=1.1*TeX.x_height+TeX.sc
ale*a;}','return box;},','TeX',472,'C,_d4,_d5,_d6){var c=',501,'_d4][C];if(','c.d==null){c.d=0;}','if(c.h','==null){c.','h=0',';}if(c.img!=null','&&c.c!=""){this.TeXIMG(_d4,C,',680,'StyleSize(_d5,_d6));}var _d8=',680,'TeX(_d5,_d6).scale;var h=c.h+',501,'_d4].dh;',687,674,'text",c.c,c.w*_d8,h*_d8,c.d*_d8);box.style=_d5;box.size=_d6;if(c.tclass){',690,'=c.tclass;if(c.img){box.bh=c.img.bh;box.bd=c.img.bd;}else{box.bh=_d8*jsMath.h;box.bd=_d8*jsMath.d;}}else{',690,'=_d4;box.bh=_d8*',501,'_d4].h;box.bd=_d8*',501,'_d4].d;if(',554,'msieFontBug&&box.html.match(/&#/)){box.html+="<span style=\\"display',': none\\">x</span>";}}',696,'TeXfallback',472,'C,_dc,_dd,_de','){c=',501,'_dc][C];if(!c.tclass){c.tclass=_dc',706,'){',542,'TeXnonfallback(',731,');}if(c.h!=null&&c.a',704,'a=c.h-1.1*jsMath.TeX.x_height;}',687,'this.Text(c.c,c.tclass,_dd,_de,c.a,c.d);var _e0=',680,'TeX(_dd,_de).scale;if(c.bh',692,'bh=c.bh*_e0;box.bd=c.bd*_e0;}else{var h=box.bd+box.bh;var _e2=',678,690,',box.html);_e2=',680,681,'_dd,_de,_e2);box.bd',683,'_e2+',644,'Blank(1,h)).h-h;box.bh=h-box.bd;if(_e0==1){c.bh=box.bh;c.bd=box.bd;}}if(jsMath.',726,':none\\">x</span>";}',696,'TeXIMG',472,'_e3,C,_e5){var c=',501,'_e3][C];if(c.img.size!=null&&c.img.size==_e5&&c.img.best!=null&&c.img.best==','jsMath.Img.best','){',494,'_e7=(',470,'.scale!=1);var id=',767,'+_e5-4;if(id<0){id=0;_e7=1;}else{if(id>=',496,'.length){','id=',496,'.length-1',';_e7=1;}}var _e9=',470,'[',496,'[id]];var img=_e9[_e3][C];var _eb=1/',470,'.w[',496,'[id]];if(id!=',767,'+_e5-4){if(c.w!=null){_eb=c.w/img[0];}else{_eb*=',496,'[_e5]/',496,'[4]*',496,'[',767,']/',496,'[id];}}var w=img[0]*_eb;var h=img[1]*_eb;var d=-img[2]*_eb;var v;var _f0=(c.w==null||Math.abs(c.w-w)<0.01)?"":" margin-right:"+',644,'Em(c.w-w)+";";var _f1="";C=',470,'.HexCode[C];if(!_e7&&!',540,'scaleImg){if(2*w<h||(',554,'msieAlphaBug&&',540,'alpha)){_f1="height',':"+(img[1]*',554,'imgScale',')+"px;";}_f1+=" width:"+(img[0]*',554,813,')+"px;";v=-img[2]+"px";}else{if(2*w<h||(',554,'msieAlphaBug&&',540,810,':"+',644,'Em(h*',554,813
,')+";";}_f1+=" width:"+',644,'Em(w*',554,813,')+";";v=',644,'Em(d);}var _f2=(Math.abs(d)<0.01&&!',554,'valignBug)?"":" ',585,'v+";";var URL=',470,'.URL(_e3,',496,'[id],C);if(',554,'msieAlphaBug&&',540,'alpha){','c.c="<img src=\\""+','jsMath.blank+"\\" "+"',589,554,'msieCenterBugFix+_f1+_f2+_f0','+" filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="+"\'"+URL+"\', sizingMethod=\'scale\'"+");\\" />";}else{',847,'URL+"\\" ',589,554,851,'+"\\" />";}c.tclass="normal";c.img.bh=h+d;c.img.bd=-d;c.img.size=_e5;c.img.best=',767,';},Space',472,'w){',518,674,'html",',644,'Spacer(w),w,0,0);},Rule',472,592,'var _f7=',644,'Rule(w,h);',518,674,865,'_f7,w,h,0);},GetChar',472,'_f8,_f9){var c=',501,'_f9][_f8];','if(c.img!=null){this.TeXIMG(','_f9,_f8,4);}if(c.tclass',704,'tclass=_f9;}if(!c.computedW){c.w',683,678,'c.tclass,c.c)).w',';if(c.h==null){c','.h=jsMath.Box.defaultH;}if(',702,'c.computedW=1',622,'c;},DelimBestFit',472,'H,c,_fd,_fe){if(c==0&&_fd','==0){return null;}','var C;var h;_fd','=jsMath.TeX.fam[','_fd];var isSS=(_fe.charAt(1)=="S");var isS=(_fe.charAt(0)=="S");while(c!=null){C=',501,'_fd][c];if(C.h==null){C',889,'C.d==null){C.d=0;}h=C.h+C.d;if(C.delim','){return [c,_fd',',"",H];}if(isSS&&0.5*h>=H',904,',"SS",0.5*h];}if(isS&&0.7*h>=H',904,',"S",0.7*h];}if(h>=H||C.n==null',904,',"T",h];}c=C.n',622,'null;},DelimExtendRelative',472,'H,c,font,a,','_107){var C=',501,'font][','c];var top=this.GetChar(C.delim.top?C.delim.top:C.delim.rep,font);var rep=this.GetChar(C.delim.rep,font);var bot=this.GetChar(C.delim.bot?C.delim.bot:C.delim.rep,font);','var ext=',678,'rep.tclass,rep.c);','var w=rep.w;var h=','rep.h+rep.d',';var y;var dx;','if(C.delim.mid){var mid=this.GetChar(C.delim.mid,font);var n=Math.ceil((H-(top.h+top.d)-(mid.h+mid.d',')-(','bot.h+bot.d','))/(2*(',924,')));H=2*n*(',924,')+(top.h+top.d)+(','mid.h+mid.d',')+(',928,');if(_107){y=0;}else{y=H/2+a;}var Y=y',';var html=',644,'Place(',678,'top.tclass,top.c),0,','y-top.h)+',644,940,678,'bot.tclass,bot.c),-(','top.w+bot.w)/2,y-(H-bot.d))+',644,940,678,'mid.t
class,mid.c','),-(bot.w+mid.w)/2,y-(H+mid.h-mid.d)/2);dx=(w-mid','.w)/2;if(Math.abs(dx)<0.0001){dx=0;}if(dx){html+=jsMath.HTML.Spacer(dx);}y-=top.h+top.d+rep.h;for(var i=0;i<n;i++){html+=jsMath.HTML.Place(ext,-w,y-i*h);}','y-=H/2-rep.h/2;',499,'n;i++){','html+=',644,940,'ext,-w,y-i*h);}}','else{var n=Math.ceil((H-(top.h+top.d)-(bot.h+bot.d','))/(',924,'));if(top.h+top.d<0.9*(',924,')){n=Math.max(1,n);}H=n*(',924,933,928,');if(_107){y=0;}else{y=H/2+a;}var Y=y',938,644,940,678,942,'y-top.h);dx=(w-top',954,958,644,940,678,947,'w+bot.w)/2,Y-(H-bot.d));}if(_107){h=top.h;}else{h=H/2+a;}','var box=new jsMath.Box("html",html,rep.w,h,H-h);box.bh=jsMath.TeX[font].h;box.bd=jsMath.TeX[font].d;return box;},','DelimExtendAbsolute',472,915,'_120){var Font=',501,'font];var ','C=Font[',919,926,'-0.05)-(',928,'-0.05))/(','2*(','rep.h+rep.d-0.05',')));H=2*n*(',999,933,934,'-0.05)+(',928,'-0.05);html=','jsMath.HTML.PlaceAbsolute(',678,942,'0);var h=',999,';var y=top.d-0.05+rep.h;var ext=',678,'font,rep.c);',499,'n;i++){',958,1007,'ext,0,y+i*h);}',958,1007,678,952,'),0,y+n*h-rep.h+mid.h);y+=n*h+',934,'-0.05;',499,'n;i++){',958,1007,'ext,0,y+i*h);}',958,1007,678,'bot.tclass,bot.c),0,y+n*h-rep.h+bot.h);}',962,997,999,'));H=n*(',999,933,928,'-0.05);html=',1007,678,942,'0);var h=',999,';var y=top.d-0.05+rep.h;var ext=',678,922,499,'n;i++){',958,1007,'ext,0,y+i*h);}',958,1007,678,1035,'var w=top.w;if(_120){h=top.h;y=0;}else{h=H/2+a;y=h-top.h;}html=',644,'Absolute(html,w,','Font.h,"none",-y,top.h);',985,'Delimiter',472,'H,_135,_136,_137){var size=4;var TeX=',680,'TeX(_136,size);if(!_135){',542,'Space(TeX.nulldelimiterspace);}','var ','CFSH=this.DelimBestFit(H,_135[','2],_135[1],_136);if(CFSH==null||CFSH[3]<H){',1074,'4],_135[3],_136);}if(CFSH==null){',542,1072,'if(CFSH[2]==""){',542,'DelimExtend(H,','CFSH[0],CFSH[1],','TeX.axis_height',',_137);}box=',666,'.TeX(',1083,'CFSH[2],size',').Styled();if(_137){box.y=-',501,'CFSH[1]].dh',694,'y=-((box.h+box.d)/2-box.d-',1084,');}',533,'box.y)<0.0001){box.y=0;}if(box.y','){box=jsMath.Box.SetList','
([box],',1089,');}',696,'GetCharCode',472,'code){var font',898,'code[0]];var Font=',501,991,'c=Font[code[1]];',881,'font,code[1],4);}if(c.w',704,'w',683,678,887,';}if(c.font',704,'font=font',622,'c;},AddClass',472,'_13f,html',',font){if(_13f==null){_13f=font',622,678,1125,');},LayoutRelative',472,'size,_143,_144,_145){if(_144==null){_144=[];}if(_145==null){_145=[];}var _146=jsMath.sizes[size]/100',';var W=[];var H=[];var D=[];var ','_14a=-1000;var bh=_14a;var bd=_14a',';var i;var j;var row;for(i=0;i<','_143',514,'row=_143','[i];H[i]=jsMath.h*','_146',';D[i]=jsMath.d*','_146',';for(j=0;j<','row.length;j++){row[j]=row[j].Remeasured();if(row[j].h>H[i]){H[i]=row[j].h;}if(row[j].d>D[i]){D[i]=row[j].d;}if(j>=W.length){W[j]=row[j].w;}else{if(row[j].w>W[j]){W[j]=row[j].','w;}}if(row[j].bh>bh){bh=row[j].bh;}if(row[j].bd>bd){bd=row[j].bd;}}}if(bh==_14a){bh=0;}if(bd==_14a){bd=0;}','var HD=(jsMath.hd-0.01)*','_146;','var html="";var ','pW=0;var cW=0;var w;var h;var y;var box;var _158;var _159',';for(j=0;j<W.length;j++){','_158=[];y=-H[0];pW=0',';for(i=0;i<','_143',514,'_159=_143[i][j];if(_159&&_159','.format!="null"){if(','_144[j]=="l"){w=0;}else{if(_144[j]=="r"){w=W[j]-_159.w;}else{w=(W[j]-_159.w)/2;}}_159.x=w-pW;pW=_159.w+w;_159.y=y;_158[_158.length]=_159;}if(i==_143',779,'){y-=D[i];}else{y-=','Math.max(HD,D[i]+H[i+1])+','_146/10;}}if(_145[j]==null){_145[j]=_146;}if(_158.length>0',1099,'(_158,"T",size);',958,644,940,'box.html,cW,0);cW=W[j]-box.w+_145[j];}else{cW+=_145[j];}}w=-_145[W',779,'];y=(H',779,')*_146/10',1152,'W',514,'w+=W[i]+_145[i];}','for(i=0;i<H.length;i++){y+=Math.max(HD,H[i]+D[i]);}h=y/2+jsMath.TeX.axis_height;var d=y-h;',958,644,'Spacer(cW-_145[W',779,']+_146/6);html=',644,940,'html,_146/6,h);box=',674,'html",html,w+','_146/3,h,d);box.bh=bh;box.bd=bd;',696,'LayoutAbsolute',472,'size,_15c,_15d,_15e){if(_15d==null){_15d=[];}if(_15e==null){_15e=[];}var _15f=jsMath.sizes[size]/100;',1146,'_15f',1133,'w=0;var h;var x;var y',1135,'_15c',514,'row=_15c',1139,'_15f',1141,'_15f',1143,1144,'w;}}}}y=(H',779,')*_15f/6;'
,1176,1148,'_16d;w=_15f/6',1150,'y=H[0]-h',1152,'_15c',514,'_16d=_15c[i][j];if(_16d&&_16d',1156,'_15d[j]=="l"){x=0;}else{if(_15d[j]=="r"){x=W[j]-_16d.w;}else{x=(W[j]-_16d.w)/2;}}',958,1007,'_16d.html,w+x,y-Math.max(0,_16d.bh-jsMath.h*_15f));}if(i==_15c',779,'){y+=D[i];}else{y+=',1160,'_15f/6;}}if(_15e[j]==null){_15e[j]=_15f;}w+=W[j]+_15e[j];}w=-_15e[W',779,']+_15f/3',1152,'W',514,'w+=W[i]+_15e[i];}html=',644,'Spacer(_15f/6',')+html+',644,1234,');if(',554,'spanHeightVaries){y=h-jsMath.h;}else{y=0;}html=',644,1063,'h+d,d,y,H[0]);',687,674,1186,'_15f/3,h,d);',696,'InternalMath',472,'text,size){if(!text.match(/\\$|\\\\\\(/)){',542,'Text(text,"normal","T",size).Styled();}var i=0;var k=0;var c;var _174="";var _175=[];var _176;var html;var box;while(i<text',776,'c=text.charAt(i++);if(c','=="$"){if(_174=="$"){','_176=jsMath.Parse(text.slice(k,i-','1','),null,size);if(_176.error){_175[_175.length]=this.Text(_176.error,"error","T",size,1,0.2);}else{_176.Atomize();_175[_175.length]=_176.mlist.Typeset("T",size).Styled();}_174="";k=i',';}else{','_175[_175.length]=this.Text(text.slice(k',',i-1','),"normal","T",size,1,0.2);','_174="$";k=i;}}else{if(c=="\\\\"){',1255,'=="("&&_174==""){',1261,',i-2',1263,'_174=")";k=i;}else{if(c==")"&&_174==")"){',1257,'2',1259,';}}}}}',1261,1263,542,'SetList(_175,"T",size);},Set',472,'box',',_17a,size',',_17c){if(box&&box.type){','if(box.type=="typeset"){',518,'box;}if(box.type=="mlist"){box.mlist.Atomize(_17a,size);',518,'box.mlist.Typeset(_17a,size);}if(box.type=="text"){box=this.Text(box.text,',690,1281,',box.ascend,box.descend',');if(_17c!=0){box.Styled();}return box;}','box=this.TeX(box.c,box.font',1281,1291,518,666,'.Null;},SetList',472,'_17d,_17e,size){var _180=[];var box;',499,'_17d',514,'box=_17d[i];',1283,'box=','jsMath.mItem','.Typeset(box);}_180[_180.length]=box;}var _183=new jsMath.Typeset(_180);',518,'_183.Typeset(_17e,size);}});','jsMath.Package(jsMath.','Box,{Styled',491,'if(this.format=="text"){',669,678,'this.tclass',',this.html);',669,680,681,'this.style,this.size',1317,'dele
te this.','tclass;',1323,'style;this.format="html";}',518,'this;},Remeasured',491,'if(this.w>0&&!this.html.match(/position: ?absolute/)){this.w',683,'this.html).w',622,'this;}});',1306,667,'type,def){this.type=type;',488,'this,def);};',488,1306,',{Atom',472,'type,_187','){return new jsMath.mItem','(type,{atom:1,nuc',':_187});},TextAtom',472,'type,text,_18a,a,d){var atom=new ',1306,1346,':{type:"text",text:text,tclass:_18a}});if(a','!=null){atom.nuc.','ascend=a;}if(d',1353,'descend=d',622,'atom;},TeXAtom',472,'type,c,font',1345,1346,':{type:"TeX",c:c,font:font}});},Fraction',472,'name,num,den,_194,left,_196',1345,'("fraction",{from:name,num:num,den:den,thickness:_194,left:left,right:_196});},Space',472,'w',1345,'("space",{w:w});},Typeset',472,'box',1345,'("ord",{atom:1,nuc:box});},HTML',472,'html',1345,'("html",{html:html});}});jsMath.mList',667,'list,font,size,_19d){if(list){','this.mlist','=list;}else{',1382,'=[];}if(_19d==null){_19d="T";}if(size==null){size=4;}this.data={openI:null,overI:null,overF:null,font:font,','size:size,style:_19d','};this.init={',1386,'};};',1310,'mList,{Add',472,'box){return (',1382,'[','this.mlist.length',']=box);},Get',472,'i){',542,'mlist[i];},Length',491,518,1396,';},Last',491,'if(',1396,896,542,'mlist[',1396,'-1];},Range',472,'i,j){if(j==null){j=',1396,622,'new jsMath.mList','(',1382,'.slice(i,j+1));},Delete',472,1415,'i;}if(',1382,'.splice){',1382,'.splice(i,j-i+1);}else{var _1a4=[];for(var k=0;k<',1396,';k++){if(k<i||k>j){_1a4[_1a4.length]=',1382,'[k];}}',1382,'=_1a4;}},Open',472,'left){',687,'this.Add(new ',1306,'("boundary",{','data:this.data}));var _1a8=this.data;this.data={};for(var i in _1a8){this.data[i]=_1a8[i];}',1323,'data.overI;',1323,'data.overF;this.data.openI=',1396,'-1;if(left',692,'left=left;}',696,'Close',472,'_1aa){if(_1aa!=null){_1aa=new ',1306,1440,'right:_1aa});}var atom;var open=this.data.openI;','var over=this.data.overI;var from=this.data.overF;','this.data=',1382,'[open].data;if(over){','atom=jsMath.mItem.Fraction(from.name,{type:"mlist",mlist:this.Range(
open+1,over-1)},{type:"mlist",mlist:this.Range(over)},from.thickness,from.left,from.right);','if(_1aa){var _1af=',1418,'([',1382,'[open],atom,_1aa]);atom=',1306,'.Atom("inner','",{type:"mlist",mlist:','_1af});}}else{var _1b0=open+1;if(_1aa){this.Add(_1aa);_1b0--;}atom=',1306,'.Atom((_1aa)?"inner":"ord',1469,'this.Range(_1b0)});}this.Delete(open,this.Length());',542,'Add(atom);},Over',491,1457,'var ',1461,1382,'=[atom];},Atomize',472,'_1b4,size){var _1b6;var prev="";this.style=_1b4;this.size=size;',499,1396,';i++){_1b6=this.mlist['],
+  ['i];','_1b6','.delta=0',';if(',1,'.type=="','choice"){','this.mlist','=this.Atomize.choice(','this.style',',',1,',i,',7,');i--;}','else{if(','this.Atomize[_1b6.type',']){var f=',16,'];f(',9,',','this.size',',',1,',prev,this,i);}}prev=',1,';}if(',1,'&&',1,5,'bin"){',1,'.type="ord','";}if(',7,'.length>=2&&',1,5,'boundary"&&',7,'[0].type=="boundary"){this.','AddDelimiters','(_1b4,size);}},',43,':function(','_1ba,size){var _1bc=-10000;var h=_1bc;var d=_1bc;for(var i=0;i<',7,'.length;i++){','mitem=',7,'[i];if(mitem.atom||mitem',5,'box"){h','=Math.max(','h,','mitem.nuc.','h+',57,'y);d',55,'d,',57,'d-',57,'y);}}var TeX','=jsMath.TeX',';var a=','jsMath.Typeset.','TeX(_1ba,size).axis_height;var _1c2',55,'h-a,d+a);var H',55,'Math.floor(','TeX.integer','*_1c2/500)*TeX.delimiterfactor,',75,'*(2*_1c2-TeX.delimitershortfall))/',75,';var left=',7,'[0];var _1c5=',7,'[',7,'.length-1];left.nuc','=jsMath.Box.','Delimiter(H,','left.left',',_1ba);_1c5.nuc',87,88,'_1c5.right',',_1ba);left.type="open";left','.atom=1;delete ',89,';_1c5.type="close";_1c5',95,93,';},Typeset',46,'_1c6,size){var _1c8=new ','jsMath.Typeset','(',7,');return _1c8.Typeset(_1c6,size);}});jsMath.Add(jsMath.mList.prototype.Atomize,{style',46,'_1c9,size,_1cb,prev,_1cd){_1cd.style=_1cb.style;},size',46,'_1ce,size,_1d0,prev,_1d2){_1d2.size=_1d0.size;},phantom',46,'_1d3,size,_1d5){','var box','=_1d5.nuc',87,'Set(','_1d5.phantom',',_1d3',',size);','if(_1d5.h){box','.Remeasured();','box','.html=','jsMath.HTML.','Spacer(','box.w);}else{','box.html="",box.w=0;}if(!_1d5.v){','box.h=box.d=','0;}','box.bd=box.bh=0;delete ',117,';_1d5','.type="box";},','smash',46,'_1d7,size,_1d9){',113,'=_1d9.nuc',87,116,'_1d9.smash',',_1d7,','size).Remeasured();',128,130,141,';_1d9',133,'raise',46,'_1db,size,_1dd){','_1dd.nuc',87,116,152,',_1db',',size);var ','y=_1dd.raise;',152,123,124,'Place(',152,'.html,0,y);',152,'.h+=y;',152,'.d-=y;_1dd',34,'";_1dd.atom=1;},lap',46,'_1df,size,_1e1){',113,87,116,'_1e1.nuc',',_1df,',143,'var _1e3=[box];','if(_1e1.lap=="','llap"){','box.x=-box.w',';}e
lse{',180,'rlap"){_1e3[1]=','jsMath.mItem.Space','(-',126,180,'ulap"){box.y=box.d;',128,'0',183,180,'dlap"){box.y=-box.h;',128,'0;}}}}',176,87,'SetList','(_1e3,_1df',119,180,'ulap"||_1e1.lap=="dlap"){',176,'.h=',176,'.d=0;}_1e1.type="box";delete _1e1.atom;},bin',46,'_1e4,size,_1e6',',prev){if(prev','){var type=prev.type;if(type=="bin','"||type=="','op',213,'rel',213,'open',213,'punct','"||type==""||(type=="',40,'prev.left!="")){_1e6',34,'";}}else{_1e6',34,'";}','jsMath.mList.prototype.Atomize.SupSub(',210,');},rel',46,'_1e9,size,_1eb',211,5,32,'prev',34,'";}',228,232,');},close',46,'_1ed,size,_1ef',211,5,32,'prev',34,'";}',228,243,');},',220,46,'_1f1,size,_1f3',211,5,32,'prev',34,'";}',228,255,');},open',46,'_1f5,size,_1f7','){',228,266,');},inner',46,'_1f8,size,_1fa','){',228,272,');},','vcenter',46,'_1fb,size,_1fd','){',113,87,116,'_1fd.nuc,_1fb',157,'TeX=',69,'TeX(_1fb',119,'box.y=','TeX.axis_height','-(box.h-box.d)/2;_1fd.nuc=box;_1fd',34,'";',228,279,');},','overline',46,'_200,size,_202','){var TeX=',69,'TeX(_200',157,'box',87,116,'_202.nuc',',',69,'PrimeStyle','(_200),',143,'var t=','TeX.default_rule_thickness',';var rule',87,'Rule(box.w,t);rule.x=-rule.w;rule.y','=box.h+3*t;',308,87,'SetList([box,','rule],_200',119,308,'.h+=t;_202',34,'";',228,300,');},','underline',46,'_207,size,_209','){var TeX=',69,'TeX(_207',157,'box',87,116,'_209.nuc',',',69,311,'(_207),',143,314,315,';var rule',87,318,'=-box.d-3*t-t;',342,87,322,'rule],_207',119,342,'.d+=t;_209',34,'";',228,334,');},radical',46,'_20e,size,_210','){var TeX=',69,'TeX(_20e',157,'Cp=',69,311,'(_20e);',113,87,116,'_210.nuc,Cp,',143,314,315,';var p=t;if(_20e=="D"||_20e=="D\'"){p=TeX.x_height;}var r=t+p/4;var surd',87,'Delimiter(','box.h+box.d','+r+t,[0,2,112,3,112],_20e,1);t=surd.h;if(surd.d>',386,'+r){r=(r+surd.d-box.h-box.d)/2;}surd.y=box.h+r;var rule',87,'Rule(box.w,t);rule.y=surd.y-t/2;rule.h+=3*t/2;',182,';var Cr=',69,'UpStyle(',69,395,'_20e));var root',87,116,'_210.root,Cr,',143,'if(_210.root){root.y=0.55*(',386,'+3*t+r)-box.d;surd.x',55,'root.w-(11
/18)*surd.w,0);rule.x=(7/18)*surd.w;root.x=-(root.w+rule.x);}_210.nuc',87,200,'([surd,root,rule,box],_20e',119,'_210',34,'";',228,367,');},accent',46,'_21b,size',',_21d){var TeX=',69,'TeX(_21b',157,'Cp=',69,311,'(_21b);',113,87,116,'_21d.nuc',',Cp',157,'u=box.w;var s;var Font;if(',431,5,'TeX"){Font',67,'[',431,'.font];if(Font[',431,'.c].krn&&Font.skewchar){s=Font[',431,'.c].krn[Font.skewchar];}}if(s==null){s=0;}var c=_21d.accent[2];var font',67,'.fam[_21d.accent[1]];Font',67,'[font];while(Font[c].n&&Font[Font[c].n].w<=u){c=Font[c].n;}var _226=Math.min(box.h,TeX.','x_height);','if(',431,5,'TeX"){var ','_227=jsMath.mItem.Atom("ord",',431,');_227.sup=_21d.sup;_227.sub=_21d.sub;_227',2,';',228,419,',_227);_226+=(_227.nuc.h-box.h);box=',431,'=_227.nuc;delete _21d.sup;delete _21d.sub;}var acc',87,'TeX(c,font,',419,');acc.y=box.h-_226;acc.x=-box.w+s+(u-acc.w)/2;if(Font[c].ic){acc.x-=Font[c].ic*TeX.scale;}',431,87,322,'acc],',419,');if(',431,'.w!=box.w){var _229=',186,'(box.w-',431,'.w);',431,87,200,'([',431,',_229],',419,');}_21d',34,'";',228,419,',_21d);},op',46,'_22a,size,_22c','){var TeX=',69,'TeX(_22a',157,'box;_22c',2,';var isD=(_22a','.charAt(0)=="','D");if','(_22c.limits','==null&&isD){_22c.limits=1;}if(','_22c.nuc',5,454,'C',67,'[_22c.nuc.font][',507,'.c];if(isD&&C.n){',507,'.c=C.n;C',67,512,'C.n];}box',87,'Set(_22c.nuc,_22a,size',');if(C.ic){_22c','.delta=C.ic*TeX.scale;if',505,'||!_22c.sub||','jsMath.Browser.msieIntegralBug','){box',87,322,186,'(_22c.delta)],','_22a,size);}}','box.y=-((',386,')/2-box.d-',291,');if(Math.abs(box.y)<0.0001){box.y=0;}}if(!box){box',87,521,').Remeasured();}if',505,'){var W=box.w;var x=box.w;var _233=[box];var dh=0;var dd=0;if(_22c.sup){var sup',87,116,'_22c.sup,',69,395,'_22a),',143,'sup.x=((box.w-sup.w)/2+','_22c.delta/2)-x;','dh=TeX.big_op_spacing5;W',55,'W,sup.w);x+=sup.x+sup.w;sup.y=box.h+sup.d+box.y+Math.max(TeX.big_op_spacing1,TeX.big_op_spacing3-sup.d);','_233[_233.length]=','sup;delete _22c.sup;}if(_22c.sub){var sub',87,116,'_22c.sub,',69,'DownStyle','(_22a),',143,'sub.x=(
(box.w-sub.w)/2-',551,'dd=TeX.big_op_spacing5;W',55,'W,sub.w);x+=sub.x+sub.w;sub.y=-box.d-sub.h+box.y-Math.max(TeX.big_op_spacing2,TeX.big_op_spacing4-sub.h);',555,'sub;delete _22c.sub;}if(W>box.w){box.x=(W-box.w)/2;x+=box.x;}if(x<W){',555,186,'(W-x);}',507,87,200,'(_233,_22a',119,507,'.h+=dh;',507,'.d+=dd;}',15,526,'&&_22c.sub&&C&&C.ic){',507,87,322,'jsMath.Box.','Space(-C.ic*TeX.scale)],_22a,size);}',15,'box.y){',507,87,200,'([box],',532,228,495,');}},ord',46,'_238,size,_23a',',prev,_23c,i){if(_23a.nuc',5,'TeX"&&!_23a.sup&&!_23a.sub){var _23e=','_23c.mlist[','i+1];if(_23e&&_23e.atom&&_23e.type&&(_23e',5,'ord"||_23e',5,'op"||_23e',5,'bin"||_23e',5,'rel"||_23e',5,'open"||_23e',5,'close"||_23e',5,220,'")){if(_23e.nuc',5,'TeX"&&_23e.nuc.font==_23a.nuc.font){_23a.textsymbol=1;var krn',67,'[_23a.nuc.font][_23a.nuc.c].krn;krn*=',69,'TeX(_238,size).scale;if(krn&&krn[_23e.nuc.c]){for(var k=_23c.mlist.length-1;k>i;k--){',606,'k+1]=',606,'k];}',606,'i+1]=',186,'(krn[_23e.nuc.c]);}}}}',228,602,');},fraction',46,'_241,size,_243','){var TeX=',69,'TeX(_241',157,'t=0;if(_243.thickness!=null){t=_243.thickness;}',15,'_243.from.match(/over/)){t=',315,';}}var isD=(_241',503,'D");var Cn=(_241=="D")?"T":(_241=="D\'")?"T\'":',69,395,'_241);var Cd=(isD)?"T\'":',69,561,'(_241);var num',87,116,'_243.num,Cn,',143,'var den',87,116,'_243.den,Cd,',143,'var u;var v;var w;var H=(isD)?TeX.delim1:TeX.delim2;var _24f=[',589,88,'_243.left,_241)];var _250',87,88,'_243.right,_241);if(num.w<den.w){num.x=(den.w-num.w)/2;den.x=-(num.w+num.x);w=den.w;_24f[1]=num;_24f[2]=den',183,'den.x=(num.w-den.w)/2;num.x=-(den.w+den.x);w=num.w;_24f[1]=den;_24f[2]=num;}if(isD){u=TeX.num1;v=TeX.denom1',183,'u=(t!=0)?TeX.num2:TeX.num3;v=TeX.denom2;}if(t==0){var p=(isD)?7*',315,':3*',315,';var r=(u-num.d)-(','den.h-v);if(r<p){','u+=(p-r)/2;v+=(p-r)/2;}}else{var p=(isD)?3*t:t',68,291,682,'a+t/2);if(r<p){u+=p-r;}r=(a-t/2)-(',683,'v+=p-r;}var rule',87,'Rule(w,t);rule.x=-w;rule.y=a-t/2',';_24f[_24f.length]=','rule;}num.y=u;den.y=-v',693,'_250;_243.nuc',87,200,'(_24f,_241',
119,'_243',34,'";_243',95,'_243.num;delete _243.den;',228,641,');},SupSub',46,'_257,size,_259){var TeX=',69,'TeX(_257',157,'nuc=','_259.nuc',';',113,'=',715,87,116,715,',_257,size,0);if(box.format=="null"){box=',715,87,'Text("","normal",','_257,size);}','if(nuc',5,'TeX"){if(!_259.textsymbol){var C',67,'[nuc.font][nuc.c];if(C.ic){_259',523,'(!_259.sub){','box=',715,87,322,589,'Space(_259.delta)],_257',119,'_259',2,';}}}else{_259',2,';}}if(!_259.sup&&!_259.sub){return;}',715,'.Styled();var Cd=',69,561,'(_257);var Cu=',69,395,'_257);var q=',69,'TeX(Cu,size).','sup_drop;var r=',69,'TeX(Cd,size).','sub_drop;var u=0;var v=0;var p;if(nuc.type&&nuc.type!="text"&&nuc.type!="TeX"&&nuc.type!="null"){u=box.h-q;v=box.d+r;}if(_259.sub){var sub',87,116,'_259.sub,Cd',119,'sub',87,200,'([sub,',186,'(TeX.scriptspace)],_257,size',');}if(!_259.sup){sub.y=-Math.max(v,TeX.sub1,sub.h-(4/5)*',69,759,450,715,87,322,'sub],_257,size).Styled();','delete _259.','sub;return;}var sup',87,116,'_259.sup,Cu',119,'sup',87,200,'([sup,',186,770,');if(_257=="D"){p=TeX.sup1;}',15,'_257','.charAt(','_257','.length-1)=="\'"){','p=TeX.sup3',183,'p=TeX.sup2;}}u',55,'u,p,sup.d+',69,756,'x_height/4);if',734,'sup.y=u;',715,87,322,'sup],_257',119,779,'sup;return;}v',55,'v,',69,759,'sub2);',314,315,';if((u-sup.d)-(sub.h-v)<4*t){v=4*t+sub.h-(u-sup.d);p=(4/5)*TeX.x_height-(u-sup.d);if(p>0){u+=p;v-=p;}}sup',121,'sub',121,806,'sub.y=-v;sup.x=_259.delta;if(sup.w+sup.x>sub.w){sup.x-=sub.w;',715,87,322,'sub,sup],',727,'else{sub.x-=(sup.w+sup.x);',715,87,322,'sup,sub],',727,779,'sup;',779,'sub;}});',103,'=function(_268){this.type="typeset";',7,'=_268;};jsMath.Add(',103,',{upStyle:{D:"S",T:"S","','D\'":"S\'","T\'":"S\'",S:"SS','",SS:"SS","','S\'":"SS\'","SS\'":"SS\'"},','downStyle:{D:"S\'",T:"S\'","',848,'\'",SS:"SS\'","',850,'UpStyle',46,'_269){return this.upStyle[_269];},',561,46,'_26a){return this.downStyle[_26a];},',311,46,'_26b){if(_26b',794,'_26b',796,'return _26b;}return _26b+"\'";},StyleValue',46,'_26c,v){if(_26c=="S"||_26c=="S\'"){return 0.7*v;}if(_26c=="SS"|
|_26c=="SS\'"){return 0.5*v;}return v;},StyleSize',46,'_26e,size){if(_26e=="S"||_26e=="S','\'"){size=Math.max(0,size-','2);}',15,'_26e=="SS','"||',875,872,'4);}}return ','size;},TeX',46,'_270,size){if(_270=="S"||_270=="S',872,'2);}',15,'_270=="SS','"||',886,872,879,'jsMath.TeXparams[size];},AddStyle',46,'_272,size,html){if(_272=="S"||_272=="S',872,'2);}',15,'_272=="SS','"||',897,872,'4);}}if(size!=4){html="<span class=\\"size"+size+"\\">"+html+"</span>";}return html;},AddClass',46,'_275,html){if(_275!=""&&_275!="normal"){html=',124,'Class(_275,html);}return html',';}});jsMath.','Package(',103,',{DTsep:{ord',':{op:1,bin:2,rel:3,inner:1},','op',':{ord:1,op:1',',rel:3,inner:1},bin:{ord:2,op:2,open:2,inner:2},rel:{ord:3,op:3,open:3,inner:3},open:{},close',910,220,912,',rel:1,open:1,close',':1,punct:1,inner:1','},inner',912,',bin:2,rel:3,open',918,'}},SSsep:{ord:{op:1},op',912,'},bin:{},rel:{},open:{},close:{op:1},',220,':{},inner:{op:1}},sepW:["","thinmuskip","medmuskip","thickmuskip"],','GetSeparation',46,'l,r,_279){if(l&&l.atom&&r.atom){var _27a=this.DTsep;if(_279',503,'S"){_27a=this.SSsep;}var row=_27a[l.type];if(row&&row[r.type]!=null){return jsMath.TeX[this.sepW[row[r.type]]];}}return 0;},Typeset',46,'_27c,size){',9,'=_27c;',22,'=size;var _27e=-10000;this.w=0;this.h=_27e;this.d=_27e;this.bh=this.h;this.bd=this.d;','this.tbuf','="";this.','tx=0;','this.tclass','="";','this.cbuf',940,'hbuf',940,'hx=0;var _27f=null;var prev;this.x=0;this.dx=0;for(var i=0;i<',7,49,'prev=_27f;_27f=',7,'[i];switch(_27f.type){case "size":','this.FlushClassed();',22,'=_27f.size;','_27f=prev;break;case "','style":',954,'if(',9,794,9,796,9,'=_27f.style','+"\'";}else{',9,966,';}',957,'space":if(typeof (_27f.w)=="object"){if(',9,794,'1)=="','S"){_27f.w=0.','5*','_27f.w[0]/18',';}',15,9,503,976,'7*',978,183,'_27f.w=',978,';}}}this.dx+=_27f.w-0;',957,'html":',954,'if(this.hbuf==""){this.hx=this.','x;}','this.hbuf+=','_27f.html;_27f=prev;break;default:if(!_27f.atom&&_27f.type!="box"){break;}','_27f.nuc.','x+=this.dx+this.',928,'(prev,_27f,',9
,');if(',997,'y||',997,'x){',997,'Styled();}this.dx=0;this.x=this.x+this.w;this.w+=',997,'w+',997,'x;if(',997,'format=="text"){if(',942,'!=',997,'tclass','&&',942,'!=""){this.FlushText();}if(',939,'==""&&',944,'==""){this.tx=this.x;}',939,'+=',997,'html;',942,'=',997,1018,183,954,'if(',997,'x||',997,'y){this.Place(_27f.nuc);}',993,'x;}',995,997,'html;}this.h',55,'this.h,',997,'h+',997,'y);this.bh',55,'this.bh,',997,'bh);this.d',55,'this.d,',997,'d-',997,'y);this.bd',55,'this.bd,',997,'bd);break;}}',954,'if(this.dx){',995,124,125,'this.dx);this.w+=this.dx;}if(this.hbuf==""){return ',589,'Null;}if(this.h==_27e){this.h=0;}if(this.d==_27e){this.d=0;}',113,'=new jsMath.','Box("html",this.hbuf,this.w,this.h,this.d);box.bh=this.bh;box.bd=this.bd;return box;},FlushText:function(){if(',939,'==""){return;}',944,'+=',69,'AddClass(',942,',',939,');',939,'="";',942,'="";},FlushClassed:function(){this.FlushText();if(',944,1078,993,'tx;}',995,69,'AddStyle(',9,',',22,',',944,');',944,'="";},Place',46,'item){var ','html="<span style=\\"position: relative',';";if(item.x){html+=" margin-left:"+',124,'Em(item.x)+";";}if(item.y){html+=" top:"+',124,'Em(-item.y',')+";";}item',123,'html+"\\">"+','item.html+"</span','>";','item.h+=item.y;item.d-=item.y;item.x=0;item.y=0',';},PlaceSeparateSkips',46,'item){if(item.y){item.',1108,'; "+"top:"+',124,1113,')+";"+"\\">"+',1117,'>";}if(item.x){item',123,124,125,'item.x)+item.html;}',1119,906,'Parse','=function(s,font,size,','_289){var _28a=new ','jsMath.Parser','(s,font,size,_289);_28a.Parse();return _28a;};',1139,1137,'_28e){this.string=s;this.i=0;',7,1075,'mList(null,font,size,_28e);};jsMath.Package(',1139,',{cmd:"\\\\",open:"{",close:"}",letter:/[a-z]/i,number:/[0-9]/,scriptargs:/^((math|text)..|mathcal)$/,mathchar:{"!":[5,0,33],"(":[4,0,40],")":[5,0,41],"*":[2,2,3],"+":[2,0,43],",":[6,1,59],"-":[2,2,0],".":[0,1,58],"/":[0,1,61],":":[3,0,58],";":[6,0,59],"<":[3,1,60],"=":[3,0,61],">":[3,1,62],"?":[5,0,63],"[":[4,0,91],"]":[5,0,93],"|":[0,2,106]},special:{"~":"Tilde","^":"HandleSuperscript",
"_":"HandleSubscript"," ":"Space","\\x01','":"Space","\\','t',1149,'r',1149,'n":"Space","\'":"Prime","%":"HandleComment","&":"HandleEntry"},mathchardef:{braceld:[0,3,122],bracerd:[0,3,123],bracelu:[0,3,124],braceru:[0,3,125],alpha:[0,1,11],beta:[0,1,12],gamma:[0,1,13],delta:[0,1,14],epsilon:[0,1,15],zeta:[0,1,16],eta:[0,1,17],theta:[0,1,18],iota:[0,1,19],kappa:[0,1,20],lambda:[0,1,21],mu:[0,1,22],nu:[0,1,23],xi:[0,1,24],pi:[0,1,25],rho:[0,1,26],sigma:[0,1,27],tau:[0,1,28],upsilon:[0,1,29],phi:[0,1,30],chi:[0,1,31],psi:[0,1,32],omega:[0,1,33],varepsilon:[0,1,34],vartheta:[0,1,35],varpi:[0,1,36],varrho:[0,1,37],varsigma:[0,1,38],varphi:[0,1,39],Gamma:[7,0,0],Delta:[7,0,1],Theta:[7,0,2],Lambda:[7,0,3],Xi:[7,0,4],Pi:[7,0,5],Sigma:[7,0,6],Upsilon:[7,0,7],Phi:[7,0,8],Psi:[7,0,9],Omega:[7,0,10],aleph:[0,2,64],imath:[0,1,123],jmath:[0,1,124],ell:[0,1,96],wp:[0,1,125],Re:[0,2,60],Im:[0,2,61],partial:[0,1,64],infty:[0,2,49],prime:[0,2,48],emptyset:[0,2,59],nabla:[0,2,114],surd:[1,2,112],top:[0,2,62],bot:[0,2,63],triangle:[0,2,52],forall:[0,2,56],exists:[0,2,57],neg:[0,2,58],lnot:[0,2,58],flat:[0,1,91],natural:[0,1,92],sharp:[0,1,93],clubsuit:[0,2,124],diamondsuit:[0,2,125],heartsuit:[0,2,126],spadesuit:[0,2,127],coprod:[1,3,96],bigvee:[1,3,87],bigwedge:[1,3,86],biguplus:[1,3,85],bigcap:[1,3,84],bigcup:[1,3,83],intop:[1,3,82],prod:[1,3,81],sum:[1,3,80],bigotimes:[1,3,78],bigoplus:[1,3,76],bigodot:[1,3,74],ointop:[1,3,72],bigsqcup:[1,3,70],smallint:[1,2,115],triangleleft:[2,1,47],','triangleright',':[2,1,46],bigtriangleup:[2,2,52],bigtriangledown:[2,2,53],wedge:[2,2,94],land:[2,2,94],vee:[2,2,95],lor:[2,2,95],cap:[2,2,92],cup:[2,2,91],ddagger:[2,2,122],dagger:[2,2,121],sqcap:[2,2,117],sqcup:[2,2,116],uplus:[2,2,93],amalg:[2,2,113],diamond:[2,2,5],bullet:[2,2,15],wr:[2,2,111],div:[2,2,4],odot:[2,2,12],oslash:[2,2,11],otimes:[2,2,10],ominus:[2,2,9],oplus:[2,2,8],mp:[2,2,7],pm:[2,2,6],circ:[2,2,14],bigcirc:[2,2,13],setminus:[2,2,110],cdot:[2,2,1],ast:[2,2,3],times:[2,2,2],star:[2,1,63],propto:[3,2,47],sqsubseteq:[3,2,118],sqsu
pseteq:[3,2,119],parallel:[3,2,107],mid:[3,2,106],dashv:[3,2,97],vdash:[3,2,96],leq:[3,2,20],le:[3,2,20],geq:[3,2,21],ge:[3,2,21],succ:[3,2,31],prec:[3,2,30],approx:[3,2,25],succeq:[3,2,23],preceq:[3,2,22],supset:[3,2,27],subset:[3,2,26],supseteq:[3,2,19],subseteq:[3,2,18],"in":[3,2,50],ni:[3,2,51],owns:[3,2,51],gg:[3,2,29],ll:[3,2,28],not:[3,2,54],sim:[3,2,24],simeq:[3,2,39],perp:[3,2,63],equiv:[3,2,17],asymp:[3,2,16],smile:[3,1,94],frown:[3,1,95],Leftrightarrow:[3,2,44],Leftarrow:[3,2,40],Rightarrow:[3,2,41],leftrightarrow:[3,2,36],leftarrow:[3,2,32],gets:[3,2,32],rightarrow:[3,2,33],to:[3,2,33],mapstochar:[3,2,55],leftharpoonup:[3,1,40],','leftharpoondown',':[3,1,41],rightharpoonup:[3,1,42],rightharpoondown:[3,1,43],nearrow:[3,2,37],searrow:[3,2,38],nwarrow:[3,2,45],swarrow:[3,2,46],hbarchar:[0,0,22],lhook:[3,1,44],rhook:[3,1,45],ldotp:[6,1,58],cdotp:[6,2,1],colon:[6,0,58],"#":[7,0,35],"$":[7,0,36],"%":[7,0,37],"&":[7,0,38]},delimiter:{"(":[0,0,40,3,0],")":[0,0,41,3,1],"[":[0,0,91,3,2],"]":[0,0,93,3,3],"<":[0,2,104,3,10],">":[0,2,105,3,11],"/":[0,0,47,3,14],"|":[0,2,106,3,12],".":[0,0,0,0,0],"\\\\":[','0,2,110,3,15],"\\\\','lmoustache":[4,3,122,3,64],"\\\\rmoustache":[5,3,123,3,65],"\\\\lgroup":[4,6,40,3,58],"\\\\rgroup":[5,6,41,3,59],"\\\\arrowvert','":[0,2,106,3,','60],"\\\\Arrowvert":[0,2,107,3,61],"\\\\bracevert',1161,'62],"\\\\Vert":[0,2,107,3,13],"\\\\|":[0,2,107,3,13],"\\\\vert',1161,'12],"\\\\uparrow":[3,2,34,3,120],"\\\\downarrow":[3,2,35,3,121],"\\\\updownarrow":[3,2,108,3,63],"\\\\Uparrow":[3,2,42,3,126],"\\\\Downarrow":[3,2,43,3,127],"\\\\Updownarrow":[3,2,109,3,119],"\\\\backslash":[',1159,'rangle":[5,2,105,3,11],"\\\\langle":[4,2,104,3,10],"\\\\rbrace":[5,2,103,3,9],"\\\\lbrace":[4,2,102,3,8],"\\\\}":[5,2,103,3,9],"\\\\{":[4,2,102,3,8],"\\\\rceil":[5,2,101,3,7],"\\\\lceil":[4,2,100,3,6],"\\\\rfloor":[5,2,99,3,5],"\\\\lfloor":[4,2,98,3,4],"\\\\lbrack":[0,0,91,3,2],"\\\\rbrack":[0,0,93,3,3]},macros:{displaystyle',':["HandleStyle","','D"],textstyle',1169,'T"],scriptstyle',1169,'S"],scriptscriptstyl
e',1169,'SS"],rm',':["HandleFont",','0],mit',1177,'1],oldstyle',1177,'1],cal',1177,'2],it',1177,'4],bf',1177,'6],left:"HandleLeft",right:"HandleRight",arcsin',':["NamedOp",0],','arccos',1189,'arctan',1189,'arg',1189,'cos',1189,'cosh',1189,'cot',1189,'coth',1189,'csc',1189,'deg',1189,'det',':"NamedOp",','dim',1189,'exp',1189,'gcd',1209,'hom',1189,'inf',1209,'ker',1189,'lg',1189,'lim',1209,'liminf',':["NamedOp",null,"lim<span style=\\"margin-left: "+1/6+"em\\"></span>','inf"],limsup',1227,'sup"],ln',1189,'log',1189,'max',1209,'min',1209,'Pr',1209,'sec',1189,'sin',1189,'sinh',1189,'sup',1209,'tan',1189,'tanh',1189,277,':["HandleAtom","',277,'"],',298,1253,298,'"],',332,1253,332,'"],over',':"HandleOver",','overwithdelims',1264,'atop',1264,'atopwithdelims',1264,'above',1264,'abovewithdelims',1264,'brace',':["HandleOver','","\\\\{","\\\\}"],brack',1276,'","[","]"],choose',1276,'","(",")"],overbrace',':["Extension","leaders"],','underbrace',1282,'overrightarrow',1282,'overleftarrow',1282,'overset',':["Extension","underset-overset"],','underset',1290,'llap',':"HandleLap",','rlap',1294,'ulap',1294,'dlap',1294,'raise:"RaiseLower",lower:"RaiseLower",moveleft',':"MoveLeftRight",','moveright',1302,'frac:"Frac",root:"Root",sqrt:"Sqrt",hbar',':["Macro","\\\\','hbarchar\\\\kern-.5em h"],ne',1306,'not="],neq',1306,'not="],notin',1306,'mathrel{\\\\','rlap{\\\\kern2mu/}}\\\\in"],cong',1306,1313,'lower2mu{\\\\','mathrel','{{\\\\rlap{=}\\\\raise6mu\\\\sim}}}}"],bmod',1306,'mathbin{\\\\rm mod}"],pmod',1306,'kern 18mu ({\\\\rm mod}\\\\,\\\\,#1)",1],"int":["Macro","\\\\intop\\\\nolimits"],oint',1306,'ointop\\\\nolimits"],doteq',1306,'buildrel\\\\textstyle.\\\\over="],ldots',1306,'mathinner{\\\\','ldotp\\\\ldotp\\\\ldotp}"],cdots',1306,1329,'cdotp\\\\cdotp\\\\cdotp}"],vdots',1306,1329,'rlap{\\\\raise8pt{.\\\\rule 0pt 6pt 0pt}}\\\\rlap{\\\\raise4pt{.}}.}"],ddots',1306,1329,'kern1mu\\\\raise7pt{\\\\rule 0pt 7pt 0pt .}\\\\kern2mu\\\\raise4pt{.}\\\\kern2mu\\\\raise1pt{.}\\\\kern1mu}"],joinrel',1306,1313,'kern-4mu}"],relbar',1306,1313,'smash
-}"],','Relbar',1306,1318,'="],bowtie',1306,1318,'\\\\',1155,'\\\\joinrel\\\\',1318,'\\\\triangleleft"],models',1306,1318,'|\\\\joinrel="],mapsto',1306,'mapstochar\\\\','rightarrow"],rightleftharpoons',1306,277,'{\\\\',1313,'rlap{\\\\raise3mu{\\\\rightharpoonup}}}\\\\',1157,'}"],hookrightarrow',1306,'lhook\\\\','joinrel\\\\rightarrow"],','hookleftarrow',1306,'leftarrow\\\\joinrel\\\\','rhook"],Longrightarrow',1306,1346,1354,'Rightarrow"],','longrightarrow',1306,'relbar\\\\',1372,'longleftarrow',1306,1375,'relbar"],Longleftarrow',1306,'Leftarrow\\\\joinrel\\\\',1346,'"],longmapsto',1306,1361,'char{cmsy10}{0}\\\\',1372,'longleftrightarrow',1306,'leftarrow\\\\',1372,'Longleftrightarrow',1306,1390,1380,'iff:["Macro","\\\\;\\\\',1401,'\\\\;"],mathcal',':["Macro","{\\\\','cal #1}",1],mathrm',1408,'rm #1}",1],mathbf',1408,'bf #1}",1],','mathbb',1408,1413,'mathit',1408,'it #1}",1],textrm',1306,'mathord{\\\\hbox{#1}}",1],','textit',1306,'mathord{\\\\class{',1422,'}{\\\\hbox{#1}}}",1],','textbf',1306,1424,1427,1426,'TeX:["Macro","T\\\\kern-.1667em\\\\lower.5ex{E}\\\\kern-.125em X"],limits:["Limits",1],nolimits:["Limits",0],",":["Spacer",1/6],":":["Spacer",1/6],">":["Spacer",2/9],";":["Spacer",5/18],"!":["Spacer",-1/6],enspace',':["Spacer",','1/2],quad',1433,'1],qquad',1433,'2],thinspace',1433,'1/6],negthinspace:["Spacer",-1/6],hskip:"Hskip",kern:"Hskip",rule:["Rule","colored"],space:["Rule","blank"],big',':["MakeBig","','ord",0.85],Big',1441,'ord",1.','15],bigg',1441,1444,'45],Bigg',1441,1444,'75],bigl',1441,'open",0.85],Bigl',1441,'open",1.','15],biggl',1441,1455,'45],Biggl',1441,1455,'75],bigr',1441,'close",0.85],Bigr',1441,'close",1.','15],biggr',1441,1466,'45],Biggr',1441,1466,'75],bigm',1441,'rel",0.85],Bigm',1441,'rel",1.','15],biggm',1441,1477,'45],Biggm',1441,1477,'75],mathord',1253,'ord"],mathop',1253,'op"],mathopen',1253,'open"],mathclose',1253,'close"],mathbin',1253,'bin"],',1318,1253,'rel"],mathpunct',1253,220,'"],mathinner',1253,'inner"],','mathchoice',':["Extension","',1503,'"],buildrel:"BuildRel",hbox:"HBox
",text:"HBox",mbox:"HBox",fbox',1504,'fbox"],strut:"Strut",mathstrut',1306,'vphantom{(}"],phantom',':["Phantom",','1,1],vphantom',1511,'1,0],hphantom',1511,'0,1],smash:"Smash",acute',':["MathAccent",[7,0,','19]],grave',1517,'18]],ddot',1517,'127]],tilde',1517,'126]],bar',1517,'22]],breve',1517,'21]],check',1517,'20]],hat',1517,'94]],vec',':["MathAccent",[0,','1,126]],dot',1517,'95]],widetilde',1533,'3,101]],widehat',1533,'3,98]],"_":["','Replace","ord','","_","normal",-0.4,0.1]," ":["',1541,'","&nbsp;","normal"],angle:["',1541,'","&#x2220;","normal"],matrix:"Matrix",array:"Matrix",pmatrix:["Matrix","(",")","c"],cases:["Matrix","\\\\{",".",["l","l"]],cr:"HandleRow","\\\\":"HandleRow",begin:"Begin",end:"End",tiny',':["HandleSize",','0],Tiny',1547,'1],scriptsize',1547,'2],small',1547,'3],normalsize',1547,'4],large',1547,'5],Large:["HandleSize"'],
+  [',6],LARGE',':["HandleSize",','7],huge',1,'8],Huge',1,'9],dots:["','Macro','","\\\\ldots"],','newcommand',':["Extension","',9,'"],def',10,9,'"],color',10,'HTML"],','href',10,'HTML"],"class":["','Extension','","',17,'style',10,17,'cssId',10,17,'unicode',10,17,'require:"','Require','","char":"Char"},','environments',':{array:"Array",','matrix',':["Array",null,null,"','c"],pmatrix:["Array","(",")","c"],bmatrix:["Array","[","]","c"],Bmatrix:["Array","\\\\{","\\\\}","c"],vmatrix:["Array","\\\\vert","\\\\vert","c"],Vmatrix:["Array","\\\\Vert","\\\\Vert","c"],cases:["Array","\\\\{",".","ll"],eqnarray',39,'rcl",[5/18,5/18],"D"]},AddSpecial',':function','(obj){','for(var id in obj){','jsMath.Parser.prototype','.special[',46,'[id]]=obj[id];}},Error',43,'(s){this.i=','this.string','.length;','if(s','.error){','this.error','=s.error;}','else{if(!','this',55,56,'=s;}}},nextIsSpace',43,'(){','return ','this.string.charAt(this.i',')==" ";},trimSpaces',43,'(text){','if(typeof (','text)!="string"){',65,'text;}',65,'text','.replace(/^\\s+|\\s','+/g,"");},','Process',43,'(arg','){var ','data=','this.mlist.','data;','arg=','jsMath.','Parse(arg,','data.font',',','data.size',',data.style',');if(arg',55,'this.Error(','arg);','return null',';}if(arg.mlist.Length()==','0){',96,97,'1',81,'atom=','arg.mlist.','Last();if','(atom','.atom&&','atom.type=="ord"&&atom.nuc&&!atom.sub&&!atom.sup&&(','atom.nuc.type=="','text"||',109,'TeX")){',65,'atom.nuc;}}return {type:"mlist",mlist:arg.mlist};},GetCommand',43,'(){var ','_296=/^([a-z]+|.) ?/i;var cmd=_296.exec(','this.string.slice(','this.i));','if(cmd){this.i+=cmd[1].length;',65,'cmd[1];}','this.Error("','Missing',' control sequnece name at end of string or',' argument','");',96,';},GetArgument',':function(name',',','_299){','while','(this.nextIsSpace()){this.i','++;}','if(this.','i>=',52,'.length){','if(!',132,123,124,126,' for "+','name);}',96,';}if(',66,')==','this.close){if','(!',132,123,'Extra close brace','");}',96,148,66,')==','this.cmd','){','this.i++;',65,161,'+','this.GetCommand','
();}if(',66,')!=this.open','){return ',66,'++);}var j=++','this.i;var ','_29b=1;var c="";',133,'(this.i<this.string.length){','c=',66,'++);','if(c==this.cmd){','this.i','++;}else{if(c','==this.open){_29b',183,'==',151,'(_29b==0){',123,155,'");',96,';}if(--_29b==0',171,118,'j,this.i-1);}}}}}',123,'Missing close brace','");',96,';},ProcessArg',130,81,85,'this.GetArgument(','name);','if(this.error){return',' null;}','return this.Process(arg);},','ProcessScriptArg',130,81,85,205,206,207,208,'if(arg.charAt(0)==',161,'){','csname','=arg.substr(1);if(',221,'=="frac"){arg+="{"+',205,221,')+"}";',207,208,'arg+="{"+',205,221,')+"}";',207,' null;}}else{if(csname','=="sqrt"){arg+="["+','this.GetBrackets(',221,')+"]";',207,208,'arg+="{"+',205,221,')+"}";',207,235,'.match(this.scriptargs)){arg+="{"+',205,221,')+"}";',207,' null;}}}}}',209,'GetDelimiter',130,'){',133,134,'++;}var c=',66,');if',177,163,181,'c="\\\\"+',167,'(',206,207,' null;}}','if(','this.delimiter[','c]!=null',171,273,'c];}}',123,124,' or unrecognized delimiter',145,206,96,';},GetDimen',130,',nomu',81,'rest;var _2a6=0;if',134,'++;}if(',66,')=="{"){rest=',205,146,'else{rest=',118,'this.i);_2a6=1',';}var ','_2a7=rest.match(/^\\s*([-+]?(\\.\\d+|\\d+(\\.\\d*)?))(pt|em|ex|mu|px)/);if(!_2a7){',123,124,' dimension or its units',145,206,96,148,'_2a6){this.i+=_2a7[0].length;if',134,'++;}}var d=_2a7[1]-0;if(_2a7[4]=="px"){d/=',86,'em',';}else{if(_2a7[4]=="','pt"){d/=10',312,'ex"){d*=','jsMath.TeX.','x_height',312,'mu"){if(nomu){d=d/18;}else{d=[d,"mu"];}}}}}',65,'d;},GetNext',43,'(){',133,134,'++;}',65,66,');},GetBrackets',130,81,'c=this.GetNext();if(c','!="["){return "";}var _2ab=++',174,'_2ac=0;',133,177,'var c=',66,'++);if(c=="{"){','_2ac',183,'=="}"){if(','_2ac==0){',123,155,' while looking for',' \']\'");',96,';}_2ac--;}else{',181,'this.i',183,'=="]"){if(_2ac==0',171,118,'_2ab,this.i-1);}}}}}}',123,'Couldn\'t find',' closing \']\' for',126,' to "+','this.cmd+name);',96,';},GetUpto',130,',_2af){',133,134,'++;}var _2b0=',174,'_2b1=0;',133,177,'var c=',66,340,'_2b1',1
83,343,'_2b1==0){',123,155,347,' "+',161,'+_2af);',96,';}_2b1--;}else{',181,'if(',118,'this.i,this.i+','5)=="begin"){_2b1++;this.i+=4;}else{if(',118,393,'3)=="end"){if(_2b1>0){_2b1--;this.i+=2;}}}if(',381,'if(',118,393,'_2af.length)==_2af){c=',66,'+_2af.length);if(c.match(/[^a-z]/i)||!_2af.match(/[a-z]/i)){var ',85,118,'_2b0,this.i-1);this.i+=_2af',53,65,'arg;}}}this.i++;}}}}',123,359,' "+',161,'+_2af+" for "+',206,96,';},','ProcessUpto',130,',_2b5',81,85,'this.GetUpto','(name,_2b5);',207,208,209,'GetEnd',43,'(env',81,'body="";var name="";',133,'(name!=env){body+=',424,'("begin{"+env+"}","end");',207,208,'name=',205,161,'+"end");',207,271,65,'body;},Space',43,'(){},','Prime',43,'(c',81,'base=',83,105,'(base==null||(!base',107,'base.type!="','box"&&',459,'frac")){',454,'this.mlist.Add(jsMath.mItem.','Atom("ord",{type:null}));}','if(base.sup){',123,'Prime causes double exponent',': use braces to clarify");return',298,'sup="";',133,'(c=="\'"){sup+=',161,'+"prime";',332,'=="\'"){this.i++;}}','base.sup=this.',78,'(sup);','base.sup.isPrime','=1;},RaiseLower',130,81,'h','=this.GetDimen(this.cmd+name',',1);',207,298,'box','=this.ProcessArg(',363,207,148,'name=="lower"){h=-h;}',83,'Add(new jsMath.mItem("','raise",{nuc:box,raise:h}));},MoveLeftRight',130,81,'x',486,487,207,298,'box',491,363,207,148,'name=="moveleft"){x=-x;}',464,'Space(x));',464,'Atom("ord",box));',464,'Space(-x));},',34,130,81,'file=',205,363,207,';}file=',86,21,'.URL(file);if(','jsMath.Setup.','loaded[file',']){','return;}','this.',21,'(null,[','file]);},',21,130,',data){','jsMath.Translate','.restart=1;if(name','!=null){','delete ',46,'[data[1]||"macros"][name];}','jsMath.Script.','Start();',86,21,'.',34,'(data[0],',540,'.asynchronous',');throw "restart";},Frac',130,81,'num',491,363,207,298,'den',491,363,207,';}',464,'Fraction("over",num,den));},Sqrt',130,81,'n=',237,363,207,298,'arg',491,363,207,';}box=jsMath.mItem.Atom("radical",arg);',136,'n!=""){box.root=this.',78,'(n);',207,';}}',83,'Add(box);},','Root',130,81,'n=this.',419,'(',161,'+name,"of");',
207,298,'arg',491,363,207,581,'box.root=n;',83,589,'BuildRel',130,81,'top=this.',419,'(',161,'+name,"over");',207,298,'bot',491,363,207,298,'op=',86,'mItem.Atom("','op",bot);op.limits=1;op.sup=top;',83,'Add(op);},MakeBig',130,',data){var ','type=data[0];var h=data[1]*',86,'p_height;var _2d8=this.',255,'(',363,207,';}',464,'Atom(type,',86,'Box.Delimiter(h,_2d8,"T")));},Char',130,81,'font=',205,363,207,298,'n=',205,363,207,';}if(!','jsMath.TeX[font',']){',655,']=[];this.',21,535,'jsMath.Font.URL(font',')]);}else{',464,'Typeset(',86,'Box.TeX(n-0,font,"T",',83,90,')));}},Matrix',130,',_2dd',81,'data=',83,84,'var ',85,205,363,207,298,'_2e0','=new jsMath.Parser(arg','+"\\\\\\\\",null,',90,');_2e0.',38,'=name;_2e0.row=[];_2e0.table=[];_2e0.Parse();if(_2e0',55,94,'_2e0);',532,'_2e0','.HandleRow(name,1);var box=jsMath.Box.Layout(data.size,','_2e0.table,_2dd[2]);if(_2dd[0]&&_2dd[1]){var left','=jsMath.Box.Delimiter(box.h+box.d,this.delimiter[','_2dd[0]],"T");var _2e3',696,'_2dd','[1]],"T");box=jsMath.Box.SetList([left,box,','_2e3],','data.style,data.size',');}',464,'Atom((_2dd','[0]?"inner":"ord"),box));},','HandleEntry',130,'){','if(!this.',38,'){',94,'name+" can only appear in a matrix or array");return;}','if(',83,'data.openI',542,'var open=',83,'Get(',83,717,');if(open','.left){',123,124,' "+',161,'+"right','");}else{',123,198,'");}}if(',83,'data.overI',542,83,'Over();}var data=',83,84,83,'Atomize(',702,');var box=',83,664,702,');this.row[','this.row.length',']=box;this.mlist=new ',86,'mList(null,null,',90,91,');},HandleRow',130,',last){',710,38,'){',94,161,'+',714,'this.',707,'(',206,'if(!last||',750,'>1||this.row[0].format!="null"){this.table[this.table.length]=this.row;}this.row=[];},Array',130,',_2eb',81,'_2ec=_2eb[2];var _2ed=_2eb[3];if(!_2ec){_2ec=',205,161,'+"begin{"+name+"}");',207,';}}_2ec=_2ec.replace(/[^clr]/g,"");_2ec=_2ec.split("");var data=',83,84,'var _2ef=_2eb[4]||"T";var ',85,'this.GetEnd(',206,207,298,'_2f1',683,'+',161,'+"\\\\",null,',90,',_2ef);_2f1.',38,'=name;_2f1.row=[];_2f1.table=[];_2f1.Parse(
);if(_2f1',55,94,'_2f1);',532,'_2f1',694,'_2f1.table,_2ec,_2ed);if(_2eb[0]&&_2eb[1]){var left',696,'_2eb[0]],"T");var _2f4',696,'_2eb',700,'_2f4],',702,');}',464,'Atom((_2eb',706,'Begin',130,81,'env=',205,363,207,148,'env.match(/[^a-z*]/i)){',123,'Invalid',' environment',' name',' \\""+env+"\\"");return;}',710,36,'[env]){',123,'Unknown',828,830,'var cmd=this.',36,'[env];',70,'cmd',')=="string"){','cmd=[cmd];}this[cmd[0]](env,cmd.slice(1));},End',130,81,'env=',205,363,207,';}',94,161,'+name+"{"+env+"} without matching "+',161,'+"begin");},Spacer',130,',w){',464,'Space(w-0));},Hskip',130,81,'w=this.GetDimen(',363,207,';}',464,'Space(w));},HBox',130,81,'text=',205,363,207,';}','var box=jsMath.','Box.InternalMath(text,',83,90,');',464,664,'box));},Rule',130,',_302',81,'w',486,487,207,298,'h',486,487,207,298,'d',486,487,207,';}h+=d;var html;if(h!=0){h=Math.max(1.05/',86,'em,h);}if(h==0||w==0||_302=="blank"){html=','jsMath.HTML.','Blank(w,h);}else{html=',904,'Rule(w,h);}if(d){html','="<span style=\\"','vertical-align:"+',904,'Em(-d)+"\\">"+html','+"</span>";}',464,664,'new ',86,'Box("html",html,w,h-d,d)));},Strut',43,116,'size=',83,90,';',876,'Box.Text("","normal","T",size).Styled();box.bh=box.bd=0;box.h=0.8;box.d=0.3;box.w=0;',464,664,'box));},Phantom',130,630,'arg',491,363,207,';}',83,497,'phantom",{phantom:arg,v:data[0],h:data[1]}));},Smash',130,630,'arg',491,363,207,';}',83,497,'smash",{smash:arg}));},MathAccent',130,',_310',81,'c',491,363,207,298,103,86,625,'accent",c);atom.accent=_310[0];',83,'Add(atom);},NamedOp',130,630,'a=(name.match(/[^acegm-su-z]/))?1:0;var d=(name.match(/[gjpqy]/))?0.2:0;if(data[1]){name=data[1];}',876,'mItem.TextAtom("op",name,"cmr10",a,d);if(data[0]!=null){box.limits=data[0];}',83,589,'Limits',130,630,103,83,105,'(!atom||atom.type!="op"){',94,161,'+name+" is allowed only on operators");',532,'atom.limits=data[0];},',7,130,630,'text=data[0];if(data[1]){var args=[];','for(var i=0;i<','data[1];i++){args[args.length]=',205,363,207,';}}','text=this.','SubstituteArgs','(args,text);}',52,'=','t
his.AddArgs(','text,',118,119,'this.i=0;},',993,43,'(args,_321',81,'text="";var _323="";var c;var i','=0;while(i<','_321',139,'c=','_321.charAt(i','++);',181,'text+=c+',1011,'++);}else{if(c=="#"){c=',1011,'++);if(c=="#"){text+=c;}',58,'c.match(/[1-9]/)||c>args',139,123,'Illegal macro parameter reference");',532,'_323=',997,997,'_323,text','),args[c-1]);text="";}}else{text+=c;}}}',65,997,1028,');},AddArgs',43,'(s1,s2){if(s2.match(/^[a-z]/i)&&s1.match(/(^|[^\\\\])(\\\\\\\\)*\\\\[a-z]+$/i)){s1+=" ";}',65,'s1+s2;},Replace',130,539,464,'TextAtom',552,'data[1],data[2],data[3]));},Tilde',130,'){',464,'TextAtom("ord','","&nbsp;","normal"));},HandleLap',130,81,'box=this.ProcessArg();',207,';}box=',83,497,'lap",{nuc:box,lap:name}));},HandleAtom',130,630,'arg',491,363,207,';}',464,'Atom(data,arg));},HandleMathCode',130,',code','){this.HandleTeXchar(','code[0],code[1],code[2]);},HandleTeXchar',43,'(type,font,code){if(type==7&&',83,88,542,645,83,88,';}',645,316,'fam[font];if(!',655,']){',655,']=[];this.',21,535,661,')]);}else{',464,'TeXAtom(',316,'atom[type],code,font));}},','HandleVariable',43,'(c',1068,'7,1',',c.charCodeAt(0));},','HandleNumber',43,'(c',1068,'7,0',1099,'HandleOther',43,'(c){',464,1047,'",c,"normal"));},HandleComment',43,116,'c;',133,177,'c=',66,'++);if(c=="\\r"||c=="\\n"){return;}}},HandleStyle',130,',_33a){',83,'data.style=_33a[0];',83,497,'style",{style:_33a[0]}));},HandleSize',130,',size){',83,90,'=size[0];',83,497,'size",{size:size[0]}));},HandleFont',130,',font){',83,88,'=font[0];},HandleCS',43,116,'cmd=',167,'();',207,';}',136,'macros[cmd]){var _340=this.macros[cmd];',70,'_340',843,'_340=[_340];}this[_340[0]](cmd,_340.slice(1));',532,136,'mathchardef[cmd',']){this.HandleMathCode(','cmd,this.',1155,']);',532,'if(',273,161,'+cmd',1156,'cmd,',273,161,'+cmd].slice(0,3));',532,123,'Unknown control sequence \'"+',161,'+cmd+"\'");},HandleOpen',43,'(){',83,'Open();},HandleClose',43,'(){if(',83,717,'==null){',123,155,'");',532,'var open=',83,'Get(',83,717,');if(!open||','open.left',1183,83,'Close();}else{',12
3,155,' or missing "+',161,730,'");return;}},HandleLeft',130,81,'left=this.',255,'(',363,207,';}',83,'Open(left);},HandleRight',130,81,'_345=this.',255,'(',363,207,298,'open=',83,'Get(',83,717,724,'&&',1194,542,83,'Close(_345);}else{',123,'Extra open brace or missing "+',161,'+"left");}},HandleOver',130,539,'if(',83,736,542,123,'Ambiguous use of "+',363,532,83,736,'=',83,'Length();',83,'data.overF={name:name};if(data.length>0){',83,'data.overF.','left=',273,'data[0]];',83,1255,'right=',273,'data[1]];}else{if(name.match(/withdelims$/)){',83,1255,1206,255,'(',363,207,';}',83,1255,1261,'this.',255,'(',363,207,';}}else{',83,1255,'left=null;',83,1255,1261,'null;}}if(name.match(/^above/)){',83,1255,'thickness=','this.GetDimen(',161,'.name',487,207,1280,83,1255,1290,'null;}},HandleSuperscript',43,116,454,83,105,'(base==null||(!base',107,459,'box"&&',459,'frac")){',454,464,465,466,'if(',481,'){',454,464,465,'else{',123,'Double exponent',469,';}}',478,210,'("superscript");',207,';}},HandleSubscript',43,116,454,83,105,'(base==null||(!base',107,459,'box"&&',459,'frac")){',454,464,465,'if(base.sub){',123,'Double subscripts',469,';}base.sub=this.',210,'("subscript");',207,';}},Parse',43,116,'c;',133,177,'c=',66,'++);',136,'mathchar[c',1156,'c,this.',1364,']);}else{',136,'special[c]){this[this',47,'c]](c);}else{',136,'letter','.test(c)){this.',1094,'(c);}else{',136,'number',1375,1100,1377,'this.',1106,'(c);}}}}}if(',83,717,542,'var open=',83,'Get(',83,717,724,'.left){',123,124,' "+',161,730,731,123,198,'");}}if(',83,736,542,83,'Over();}},Atomize',43,116,'data=',83,'init;if(!this',55,83,743,702,');}},Typeset',43,116,'data=',83,'init;var box=this.typeset=',83,664,702,');',207,' "<span class=\\"error\\">"+',56,912,'if(box.format=="null"){return "";}box.Styled().Remeasured();var _350=0;var _351','=0;if(box.bh>','box.h&&box.bh>',86,'h','+0.001){_350=1;}if(box.','bd>box.d&&box.bd>',86,'d',1438,'h>',86,'h||box.d>',86,'d){_351=1',298,'html=box.html;if(_350){if(','jsMath.Browser.','allowAbsolute',81,'y',1434,86,'h+0.001){y=',86,'h-box
.bh;}html=',904,'Absolute(html,box.w,',86,'h,0,y,',86,'h);}',58,1450,'valignBug',81,'dy=',904,'Em(Math.max(0,box.bd-',86,'hd)/3);html',908,'line-height: 0px;"+" position:relative; top:"+dy+"; ',909,'dy+"\\">"+html+"</span>";}}_351=1',148,'_351){html+=',904,'Blank(0,box.h+0.05,box.d+0.05);}return "<nobr><span class=\\"scale\\">"+html+"</span></nobr>";}});',46,'.AddSpecial({cmd:"HandleCS",open:"HandleOpen",close:"HandleClose"});','jsMath.Add(jsMath,{',7,130,81,'_356=',46,'.macros;','_356','[name]=["',7,'"];for(var i=1;i<arguments',53,'i++){_356[name][_356[name].length]=arguments[i];}}});',86,21,'={safeRequire:1,',7,130,',file',81,'_35a=',46,1490,'if(file',1183,'file=name;}_35a',1492,21,'",file];},LaTeX',43,'(env,file',81,'_35d=',46,'.',36,';_35d[env]=["',21,'",file,"',36,'"];},Font',130,1136,'if(font',1183,645,'name+"10";}var _360=',46,1490,'_360',1492,21,'",',661,')];},MathChar',43,'(font,defs',81,'fam=',316,'famName[font','];if(fam',1183,1542,316,'fam',53,316,'fam[fam]=font;',316,1544,']=fam',298,'_364=',46,'.mathchardef;for(var c in defs){_364[c]=[defs[c][0],fam,defs[c][1]];}},',34,43,'(file,show){',136,'safeRequire&&(file.match(/\\.\\.\\/|[^-a-z0-9.\\/:_+=%~]/i)||(file.match(/:/)&&file.substr(0,',86,'root.length)!=',86,'root))){',529,530,']=1;',532,529,'Script(this.URL(file),show);},URL',43,'(file){file=file',76,'+$/g,"");if(!file.match(/^([a-z]+:|\\/|fonts|extensions\\/)/i)){file="extensions/"+file;}if(!file.match(/\\.js$/)){file+=".js";}',65,'file;}};',1484,78,43,44,529,'Body();',546,'Push(',540,',"','Asynchronous','",obj);},ProcessBeforeShowing',43,44,529,1586,'var _36b=(','jsMath.Controls.cookie.','asynch?"',1591,'":"','Synchronous','");',546,1588,540,',_36b,obj);}});',540,'={element:[],cancel:0,TextMode',43,'(s',81,'_36d','=jsMath.Parse(s,null,null,"','T");',1613,'.Atomize();var html=',1613,'.Typeset();return html;},','DisplayMode',43,'(s',81,'_370',1614,'D");',1624,1617,1624,1619,'GetElementText',43,'(_372',81,992,'recursiveElementText','(_372);_372.alt=text;if(text.search("&")>=0){','text=text.replace(/
&','lt;/g,"<");',1638,'gt;/g,">");',1638,'quot;/g,"\\"");',1638,'amp;/g,"&");}',65,'text;},',1636,43,'(_374){if(','_374.nodeValue','!=null',171,1651,148,'_374.childNodes','.length==0){return " ";}var text="";',986,1656,53,'i++){text+=this.',1636,'(',1656,'[i]);}',65,1647,'ResetHidden',43,'(_377){_377.innerHTML',908,'visibility: hidden; position:absolute; top:0px;left:0px;\\"></span>"+',1450,'operaHiddenFix;_377.className="";',86,'hidden=_377.firstChild;if(!',86,'BBoxFor("x").w){','jsMath.hidden=jsMath.hiddenTop',';}',86,'ReInit();},','ConvertText',43,'(_378','){var text=this.GetElementText(','_378',');this.ResetHidden(','_378);',992,'TextMode(text);_378','.className="typeset";','_378','.innerHTML=text;},','ConvertDisplay',43,'(_37a',1686,'_37a',1688,'_37a);',992,1620,'(text);_37a',1692,'_37a',1694,'ProcessElement',43,'(_37c){this.restart=0;try','{if(_37c.tagName.toLowerCase()=="','div"){this.',1695,'(_37c);_37c.onclick=jsMath.Click.CheckClick;_37c.ondblclick=jsMath.Click.CheckDblClick',';}else',1711,'span"){this.',1683,1714,';}}}catch(err){if(_37c.alt',81,'tex=_37c.alt;','tex=tex.replace','(/&/g,"&amp;");',1723,'(/</g,"&lt;");',1723,'(/>/g,"&gt;");_37c.innerHTML=tex;}',1679,';}},','ProcessElements',43,'(k){',546,'blocking=','1;if(k>=','this.element.length','||this.cancel){this.','ProcessComplete','();',136,'cancel){','jsMath.Message.','Set("',78,' Math: Canceled");',1743,'Clear();}',546,1735,'0;',546,78,'();}else{','this.ProcessElement(this.element[','k]);',136,'restart){',546,1588,'this,"',1731,'",k);',546,1735,'0;setTimeout("',546,78,'()",',1450,'delay);}else{k++;var p=Math.floor(100*k/',1737,');','jsMath.Message.Set("Processing Math',': "+p+"%");setTimeout("',540,'.',1731,'("+k+")",',1450,'delay);}}},',1591,43,'(obj','){if(!jsMath.initialized){jsMath.Init();}this.element=this.GetMathElements(obj);','this.cancel=0;this',554,'=1;',546,1735,'1;',1774,': 0%",1);setTimeout("',540,'.',1731,'(0)",',1450,'delay);},',1602,43,'(obj,i){if(i==null',1785,'i=0;}this',554,1007,1737,'){',1755,'i]);',136,'restart){',86,'Synch
ronize','("',540,'.',1602,'(null,"+i+")");',546,78,'();',532,'i++;}this.',1739,'(1);},GetMathElements',43,'(obj',81,'_384=[];if(!obj){obj=','jsMath.document',148,'typeof (obj',843,'obj=',1831,'.getElementById(obj);}if(!','obj.getElementsByTagName','){',96,298,'math=',1838,'("div','");for(var k=0;k<math.length;k++){if(math[k].className=="math"){if(jsMath.Browser.renameOK&&obj.getElementsByName){math[k].setAttribute("name","_jsMath_");}else{_384[_384.length]=math[k];}}}','math=',1838,'("span',1845,'if(',1450,'renameOK','&&obj','.getElementsByName','){_384=obj',1854,'("_jsMath_',731,'if(',86,'hidden','.sourceIndex','){_384.sort(function(a,b',171,'a',1862,'-b',1862,';});}}',65,'_384;},',1739,43,'(_38a){if(',1450,1852,81,'_38b=',1831,1854,1857,'");for(var i=_38b.length-1;i>=0;i--){_38b[i].removeAttribute("name");}}',1679,';this.element=[];if(!_38a){',1774,': Done");',1743,'Clear();}',1743,'UnBlank();if(',1450,'safariImgBug&&(',1598,'font=="symbol"||',1598,'font=="image")){',136,'timeout){clearTimeout(this.timeout);}this.timeout=setTimeout("','jsMath.window.resizeBy','(-1,0); "+"',1899,'(1,0); "+"',540,'.timeout = null",2000);}},Cancel',43,'(){',540,'.cancel=1;if(',546,'cancelTimer){',546,'cancelLoad();}}};',1484,'ConvertTeX',43,'(_38d){',546,'Push(jsMath.tex2math,"',1914,'",_38d);},','ConvertTeX2',43,'(_38e){',546,1918,1921,'",_38e);},','ConvertLaTeX',43,'(_38f){',546,1918,1928,'",_38f);},','ConvertCustom',43,'(_390){',546,1918,1935,'",_390);},','CustomSearch',43,'(om,cm,od,cd','){',546,1588,'null,function(){',86,'tex2math.',1942,1944,');});},tex2math:{',1914,43,449,1921,43,449,1928,43,449,1935,43,449,1942,43,'(){}}});',86,1814,'=',546,1814,';if(','window.parent','!=window){',1975,'.jsMath=jsMath;',1831,'=',1975,'.document;',86,'window=',1975,';}',86,'Loaded();',86,'Controls.GetCookie();',529,'Source();',546,'Init();',529,'Fonts();if(',1831,'.body){jsMath.Setup.Body();}}}']
+]);
+//end = new Date().getTime();
+//alert(end-start);
Index: loncom/html/adm/jsMath/plugins/autoload.js
diff -u loncom/html/adm/jsMath/plugins/autoload.js:1.1 loncom/html/adm/jsMath/plugins/autoload.js:1.2
--- loncom/html/adm/jsMath/plugins/autoload.js:1.1	Wed Dec  7 13:57:49 2005
+++ loncom/html/adm/jsMath/plugins/autoload.js	Mon Mar 27 14:32:29 2006
@@ -12,17 +12,30 @@
  *      jsMath.Autoload.findMathElements
  *      jsMath.Autoload.findTeXstrings
  *      jsMath.Autoload.findLaTeXstrings
+ *      jsMath.Autoload.findCustomStrings
+ *      jsMath.Autoload.findCustomSettings
  *  
  *  which control whether to look for SPAN and DIV elements of class
  *  "math", TeX strings that will be converted by jsMath.ConvertTeX(), or
  *  LaTeX strings that will be converted by jsMath.ConvertLaTeX().  By
- *  default, the first is true and the last two are false.
+ *  default, the first is true and the second and third are false.  The
+ *  findCustomStrings can be used to specify your own delimiters for
+ *  in-line and display mathematics, e.g
+ *  
+ *      jsMath.Autoload.findCustomStrings = [
+ *         '[math],'[/math]',          // start and end in-line math
+ *         '[display]','[/display]'    // start and end display math
+ *      ];
+ *  
+ *  Finally, findCustomSettings can be set to an object reference whose
+ *  name:value pairs control the individual search settings for tex2math.  
+ *  (See the plugins/tex2math.js file for more details).
  *  
  *  If any math strings are found, jsMath.js will be loaded automatically, 
- *  but not loaded otherwise.  If any of the last two are true and TeX math
+ *  but not loaded otherwise.  If any of the last four are set and TeX math
  *  strings are found, then plugins/tex2ath.js will be loaded
  *  automatically.  jsMath.Autoload.needsJsMath will be set to true or
- *  false depending on whether jsMath needs to be loaded.
+ *  false depending on whether jsMath needed to be loaded.
  *  
  *  The value of jsMath.Autoload.element controls the element to be
  *  searched by the autoload plug-in.  If unset, the complete document will
@@ -41,21 +54,31 @@
  *  will be run.  Relative URL's are loaded based from the URL containing
  *  jsMath.js.
  *  
- *  ---------------------------------------------------------------------
+ *  The autoload plugin can be loaded in the document HEAD or in the BODY. 
+ *  If it is loaded in the HEAD, you will need to call jsMath.Autoload.Check()
+ *  at the end of the BODY (say in the window.onload handler) in order to
+ *  get it to check the page for math that needs to be tagged, otherwise load
+ *  the file at the bottom of the BODY and it will run the check automatically.
  *
- *  jsMath is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  jsMath is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
+ *  You can call jsMath.Autoload.Run() after the check has been performed
+ *  in order to call the appropriate tex2math routines for the given Autoload
+ *  settings.  You can call jsMath.Autoload.Run() even when jsMath isn't loaded.
+ *  
+ *  ---------------------------------------------------------------------
  *
- *  You should have received a copy of the GNU General Public License
- *  along with jsMath; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *  Copyright 2004-2006 by Davide P. Cervone
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
  */
 
 /*************************************************************************/
@@ -63,146 +86,278 @@
 /*
  *  Make sure jsMath.Autoload is available
  */
-if (jsMath == null) {var jsMath = {}}
+if (jsMath == null) {jsMath = {}}
 if (jsMath.Autoload == null) {jsMath.Autoload = {}}
+jsMath.Add = function (dst,src) {for (var id in src) {dst[id] = src[id]}},
+jsMath.document = document; // tex2math needs this
 
-/*
- *  Look to see if there are SPAN or DIV elements of class "math".
- */
-jsMath.Autoload.areMathElements = function (obj) {
-  if (!obj) {obj = document}
-  if (typeof(obj) == 'string') {obj = document.getElementById(obj)}
-  if (!obj.getElementsByTagName) {return false}
-  var math = obj.getElementsByTagName('DIV');
-  for (var k = 0; k < math.length; k++) 
-    {if (math[k].className == 'math') {return true}}
-  math = obj.getElementsByTagName('SPAN');
-  for (var k = 0; k < math.length; k++) 
-    {if (math[k].className == 'math') {return true}}
-  return false;
-};
+jsMath.Add(jsMath.Autoload,{
+  
+  Script: {
+
+    iframe: null,  // the hidden iframe
+
+    /*
+     *  Load an external JavaScript file asynchronously
+     */
+    Load: function (url) {
+      this.iframe = document.createElement('iframe');
+      this.iframe.style.visibility = 'hidden';
+      this.iframe.style.position = 'absolute';
+      this.iframe.style.width  = '0px';
+      this.iframe.style.height = '0px';
+      if (document.body.firstChild) {
+        document.body.insertBefore(this.iframe,document.body.firstChild);
+      } else {
+        document.body.appendChild(this.iframe);
+      }
+      this.url = url; setTimeout('jsMath.Autoload.Script.setURL()',100);
+    },
+    endLoad: function () {setTimeout('jsMath.Autoload.Script.AfterLoad()',1)},
+
+    /*
+     *  Use location.replace() to avoid browsers placing the file in
+     *  the history (and messing up the BACK button action).  Not
+     *  completely effective in Firefox 1.0.x.  Safari won't handle
+     *  replace() if the document is local (not sure if that's really
+     *  the issue, but that's the only time I see it).
+     */
+    setURL: function () {
+      var url = jsMath.Autoload.root+"jsMath-autoload.html";
+      var doc = this.iframe.contentDocument;
+      if (!doc && this.iframe.contentWindow) {doc = this.iframe.contentWindow.document}
+      if (navigator.vendor == "Apple Computer, Inc." &&
+          document.location.protocol == 'file:') {doc = null}
+      if (doc) {doc.location.replace(url)} else {this.iframe.src = url}
+    },
+
+    /*
+     *  Queue items that need to be postponed until jsMath has run
+     */
+    queue: [],
+    Push: function (name,data) {this.queue[this.queue.length] = [name,data]},
+    RunStack: function () {
+      if (this.tex2math) {jsMath.Autoload.Check2(); return}
+      for (var i = 0; i < this.queue.length; i++) {
+        var name = this.queue[i][0];
+        var data = this.queue[i][1];
+        if (data.length == 1) {jsMath[name](data[0])}
+          else {jsMath[name](data[0],data[1],data[2],data[3])}
+      }
+    },
+  
+    AfterLoad: function () {jsMath.Autoload.Script.RunStack()},
+
+    /*
+     *  Look up the jsMath root directory, if it is not already supplied
+     */
+    Root: function () {
+      if (jsMath.Autoload.root) return;
+      var script = document.getElementsByTagName('script');
+      if (script) {
+        for (var i = 0; i < script.length; i++) {
+          var src = script[i].src;
+          if (src && src.match('(^|/)plugins/autoload.js$')) {
+            jsMath.Autoload.root = src.replace(/plugins\/autoload.js$/,'');
+            break;
+          }
+        }
+      }
+    }
 
-/*
- *  The patterns used for searching for TeX and LaTeX math strings
- *  (taken from plugins/tex2math.js).
- */
-jsMath.Autoload.pattern = {
-  tex:   /((^|[^\\])(\\[^\[\(])*)(\\\((([^\\]|\\[^\)])*)\\\)|\\\[(([^\\]|\\[^\]])*)\\\]|(\$\$?)(([^$\\]|\\.)*)\9)/,
-  latex: /((^|[^\\])(\\[^\[\(])*)(\\\((([^\\]|\\[^\)])*)\\\)|\\\[(([^\\]|\\[^\]])*)\\\])/
-};
+  },
+  
+  /**************************************************************/
+  
+  /*
+   *  Load tex2math first (so we can call its search functions
+   *  to look to see if anything needs to be turned into math)
+   *  if it is needed, otherwise go on to the second check.
+   */
+  Check: function () {
+    if (this.checked) return; this.checked = 1;
+    if (this.findTeXstrings || this.findLaTeXstrings ||
+        this.findCustomStrings || this.findCustomSettings) {
+      this.Script.tex2math = 1;
+      this.Script.Load('plugins/tex2math.js');
+    } else {
+      if (!jsMath.tex2math) {jsMath.tex2math = {}}
+      this.Check2();
+    }
+  },
 
-/*
- *  Recursively search for text elements, and check them for
- *  TeX or LaTeX strings that would be recognized by tex2math.
- */
-jsMath.Autoload.FindPattern = function (method,element,recurse) {
-  if (!element) {
-    if (recurse) {return false};
-    element = document.body;
-  }
-  if (typeof(element) == 'string') {element = document.getElementById(element)}
-      
-  var pattern = jsMath.Autoload.pattern[method];
-  while (element) {
-    if (element.nodeName == '#text') {
-      if (pattern.exec(element.nodeValue.replace(/\n/g,' '))) {return true}
-    } else if (!element.tagName ||
-               !element.tagName.match(/^(SCRIPT|NOSCRIPT|STYLE|TEXTAREA|PRE)$/i)) {
-      if (this.FindPattern(method,element.firstChild,1)) {return true};
+  /*
+   *  Once tex2math is loaded, use it to check for math that
+   *  needs to be tagged for jsMath, and load jsMath if it is needed
+   */
+  Check2: function () {
+    this.Script.tex2math = 0;
+    this.needsJsMath = 0;
+    if (this.findMathElements) {
+      this.needsJsMath = this.areMathElements(this.checkElement);
     }
-    element = element.nextSibling;
-  }
-  return false;
-};
+    jsMath.tex2math.callback = this.tex2mathCallback;
+    if (this.findTeXstrings && !this.needsJsMath) {
+      jsMath.tex2math.ConvertTeX(this.checkElement);
+    }
+    if (this.findLaTeXstrings && !this.needsJsMath) {
+      jsMath.tex2math.ConvertLaTeX(this.checkElement);
+    }
+    if (this.findCustomSettings && !this.needsJsMath) {
+      jsMath.tex2math.Convert(this.checkElement,this.findCustomSettings);
+    }
+    if (this.findCustomStrings && !this.needsJsMath) {
+      var s = this.findCustomStrings;
+      jsMath.tex2math.CustomSearch(s[0],s[1],s[2],s[3]);
+      jsMath.tex2math.ConvertCustom(this.checkElement);
+    }
+    jsMath.tex2math.callback = null;
 
-jsMath.Autoload.areTeXstrings = function (obj) {return this.FindPattern('tex',obj,0)}
-jsMath.Autoload.areLaTeXstrings = function (obj) {return this.FindPattern('latex',obj,0)}
+    if (this.needsJsMath) {
+      this.LoadJsMath();
+    } else {
+      jsMath.Autoload.Script = null;
+      jsMath.Process = function () {};
+      jsMath.ProcessBeforeShowing = function () {};
+      jsMath.Synchronize = function () {};
+      jsMath.ConvertTeX = function () {};
+      jsMath.ConvertTeX2 = function () {};
+      jsMath.ConvertLaTeX = function () {};
+      jsMath.ConvertCustom = function () {};
+      jsMath.CustomSearch = function () {};
+      jsMath.Macro = function () {};
+      jsMath.Autoload.Run = function () {};
+    }
+  },
 
-/*
- *  When math tags are found, load the jsMath.js file.  If we looked
- *  for TeX and LaTeX strings, load the tex2math as well.
- */
-jsMath.Autoload.LoadJsMath = function () {
-  if (!jsMath.Autoload.root) {
-    var script = document.getElementsByTagName('SCRIPT');
-    if (script) {
-      for (var i = 0; i < script.length; i++) {
-        var src = script[i].src;
-        if (src && src.match('(^|/)plugins/autoload.js$')) {
-          jsMath.Autoload.root = src.replace(/plugins\/autoload.js$/,'');
-          break;
-        }
-      }
+  /*
+   *  A callback used in the tex2math searches to signal that
+   *  some math has been found.
+   */
+  tex2mathCallback: function () {
+    jsMath.Autoload.needsJsMath = 1;
+    return false;
+  },
+
+  /*
+   *  jsMath.Autoload.Run() can be called to perform the 
+   *  tex2math calls given by the Autoload parameters.
+   */
+  Run: function (data) {this.Script.Push('Autorun',[data])},
+
+  Autorun: function () {
+    if (this.findTeXstrings) {jsMath.ConvertTeX(this.checkElement)}
+    if (this.findLaTeXstrings) {jsMath.ConvertLaTeX(this.checkElement)}
+    if (this.findCustomSettings) {
+      jsMath.Synchronize(function () {
+        jsMath.tex2math.Convert(jsMath.Autoload.checkElement,
+                                jsMath.Autoload.findCustomSettings);
+      });
     }
-  }
-  if (jsMath.Autoload.root) {
-    document.write('<SCRIPT SRC="'+jsMath.Autoload.root+'jsMath.js"></'+'SCRIPT>');
-    if (jsMath.Autoload.findTeXstrings || jsMath.Autoload.findLaTeXstrings)
-      {document.write('<SCRIPT SRC="'+jsMath.Autoload.root+'plugins/tex2math.js"></'+'SCRIPT>')}
-  } else {
-    alert("Can't determine URL for jsMath.js");
-  }
-}
+    if (this.findCustomStrings) {
+      var s = this.findCustomStrings;
+      jsMath.CustomSearch(s[0],s[1],s[2],s[3]);
+      jsMath.ConvertCustom(this.checkElement);
+    }
+  },
 
-/*
- *  Load any specified fonts
- */
-jsMath.Autoload.LoadExtraFonts = function () {
-  var fonts = jsMath.Autoload.loadFonts;
-  if (typeof(fonts) != 'object') {fonts = [fonts]}
-  for (var i in fonts) {
-    document.writeln('<SCRIPT>jsMath.Font.Load("'+fonts[i]+'")</'+'SCRIPT>');
+  /*
+   *  Look to see if there are SPAN or DIV elements of class "math".
+   */
+  areMathElements: function (obj) {
+    if (!obj) {obj = document}
+    if (typeof(obj) == 'string') {obj = document.getElementById(obj)}
+    if (!obj.getElementsByTagName) {return false}
+    var math = obj.getElementsByTagName('div');
+    for (var k = 0; k < math.length; k++) 
+      {if (math[k].className == 'math') {return true}}
+    math = obj.getElementsByTagName('span');
+    for (var k = 0; k < math.length; k++) 
+      {if (math[k].className == 'math') {return true}}
+    return false;
+  },
+
+  /*
+   *  When math tags are found, load the jsMath.js file,
+   *  and afterward, load any auxiliary files or fonts,
+   *  and then do any pending commands.
+   */
+  LoadJsMath: function () {
+    if (this.root) {
+      this.setMessage('Loading jsMath...');
+      this.Script.AfterLoad = this.afterLoad;
+      this.Script.Load('jsMath.js');
+    } else {
+      alert("Can't determine URL for jsMath.js");
+    }
+  },
+  afterLoad: function () {
+    if (jsMath.tex2math.window) {jsMath.tex2math.window.jsMath = jsMath}
+    //
+    //  Handle MSIE bug where jsMath.window both is and is not the actual window
+    //
+    if (jsMath.browser == 'MSIE') {window.onscroll = jsMath.window.onscroll};
+    var fonts = jsMath.Autoload.loadFonts;
+    if (fonts) {
+      if (typeof(fonts) != 'object') {fonts = [fonts]}
+      for (var i in fonts) {jsMath.Font.Load(fonts[i])}
+    }
+    var files = jsMath.Autoload.loadFiles;
+    if (files) {
+      if (typeof(files) != 'object') {files = [files]}
+      for (var i in files) {jsMath.Setup.Script(files[i])}
+    }
+    jsMath.Synchronize(function () {jsMath.Autoload.Script.RunStack()});
+    jsMath.Autoload.setMessage();
+  },
+
+  /*
+   *  Display a message in a small box at the bottom of the screen
+   */
+  setMessage: function (message) {
+    if (message) {
+      this.div = document.createElement('div');
+      if (!document.body.hasChildNodes) {document.body.appendChild(this.div)}
+        else {document.body.insertBefore(this.div,document.body.firstChild)}
+      var style = {
+        position:'absolute', bottom:'1px', left:'2px',
+        backgroundColor:'#E6E6E6', border:'solid 1px #959595',
+        margin:'0px', padding:'1px 8px', zIndex:102,
+        color:'black', fontSize:'75%', width:'auto'
+      };
+      for (var id in style) {this.div.style[id] = style[id]}
+      this.div.appendChild(jsMath.document.createTextNode(message));
+    } else {
+      this.div.firstChild.nodeValue = "";
+      this.div.style.visibility = 'hidden';
+    }
   }
-}
+  
+});
 
 /*
- *  Load any specified files
+ *  Queue these so we can do them after jsMath has been loaded
  */
-jsMath.Autoload.LoadExtraFiles = function () {
-  var files = jsMath.Autoload.loadFiles;
-  if (typeof(files) != 'object') {files = [files]}
-  for (var i in files) {
-    document.writeln('<SCRIPT>jsMath.Setup.Script("'+files[i]+'")<'+'/SCRIPT>');
-  }
-}
+jsMath.Add(jsMath,{
+  Process: function (data) {jsMath.Autoload.Script.Push('Process',[data])},
+  ProcessBeforeShowing: function (data) {jsMath.Autoload.Script.Push('ProcessBeforeShowing',[data])},
+  ConvertTeX: function (data) {jsMath.Autoload.Script.Push('ConvertTeX',[data])},
+  ConvertTeX2: function (data) {jsMath.Autoload.Script.Push('ConvertTeX2',[data])},
+  ConvertLaTeX: function (data) {jsMath.Autoload.Script.Push('ConvertLaTeX',[data])},
+  ConvertCustom: function (data) {jsMath.Autoload.Script.Push('ConvertCustom',[data])},
+  CustomSearch: function (d1,d2,d3,d4) {jsMath.Autoload.Script.Push('CustomSearch',[d1,d2,d3,d4])},
+  Synchronize: function (data) {jsMath.Autoload.Script.Push('Synchronize',[data])},
+  Macro: function (cs,def,params) {jsMath.Autoload.Script.Push('Macro',[cs,def,params])},
+  Autorun: function () {jsMath.Autoload.Autorun()}
+});
 
 /*
- *  The default settings
+ *  Initialize
  */
+
 if (jsMath.Autoload.findMathElements == null) {jsMath.Autoload.findMathElements = 1}
 if (jsMath.Autoload.findTeXstrings == null)   {jsMath.Autoload.findTeXstrings = 0}
 if (jsMath.Autoload.findLaTeXstrings == null) {jsMath.Autoload.findLaTeXstrings = 0}
 
-/*
- *  Look for the requested math strings (stop after the first is found)
- */
-jsMath.Autoload.needsJsMath = 0;
-if (jsMath.Autoload.findMathElements) {
-  jsMath.Autoload.needsJsMath = 
-    jsMath.Autoload.areMathElements(jsMath.Autoload.checkElement);
-}
-if (jsMath.Autoload.findTeXstrings && !jsMath.Autoload.needsJsMath) {
-  jsMath.Autoload.needsJsMath =
-    jsMath.Autoload.areTeXstrings(jsMath.Autoload.checkElement);
-}
-if (jsMath.Autoload.findLaTeXstrings && !jsMath.Autoload.needsJsMath) {
-  jsMath.Autoload.needsJsMath =
-    jsMath.Autoload.areLaTeXstrings(jsMath.Autoload.checkElement);
-}
-
-/*
- *  If math was found, load jsMath.js and tex2math.js (if needed).
- *  Otherwise, define the routines that are normally called
- *  to process the page, so the author doesn't have to do a
- *  check before calling these.
- */
-if (jsMath.Autoload.needsJsMath) {
-  jsMath.Autoload.LoadJsMath();
-  jsMath.Autoload.LoadExtraFonts();
-  jsMath.Autoload.LoadExtraFiles();
-} else {
-  jsMath.Process = function () {};
-  jsMath.ProcessBeforeShowing = function () {};
-  jsMath.ConvertTeX = function () {};
-  jsMath.ConvertLaTeX = function () {};
-}
+jsMath.Autoload.Script.Root();
+if (document.body) {jsMath.Autoload.Check()}
Index: loncom/html/adm/jsMath/plugins/mimeTeX.js
diff -u loncom/html/adm/jsMath/plugins/mimeTeX.js:1.1 loncom/html/adm/jsMath/plugins/mimeTeX.js:1.2
--- loncom/html/adm/jsMath/plugins/mimeTeX.js:1.1	Wed Dec  7 13:57:49 2005
+++ loncom/html/adm/jsMath/plugins/mimeTeX.js	Mon Mar 27 14:32:29 2006
@@ -1,4 +1,32 @@
 /*
+ *  mimeTeX.js
+ *  
+ *  Part of the jsMath package for mathematics on the web.
+ *
+ *  This file makes jsMath more compatible with the mimeTeX program.
+ *  It does not make everything work, but it goes a long way.
+ *
+ *  ---------------------------------------------------------------------
+ *
+ *  Copyright 2004-2006 by Davide P. Cervone
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+
+jsMath.Script.Start();
+
+/*
  *  Treat ~ as space
  */
 jsMath.Parser.prototype.nextIsSpace = function () {
@@ -192,4 +220,6 @@
     }
     this.mlist.Add(jsMath.mItem.Atom((delim[0]? 'inner': 'ord'),box));
   }
-});
\ No newline at end of file
+});
+
+jsMath.Script.End();
\ No newline at end of file
Index: loncom/html/adm/jsMath/plugins/noImageFonts.js
diff -u loncom/html/adm/jsMath/plugins/noImageFonts.js:1.1 loncom/html/adm/jsMath/plugins/noImageFonts.js:1.2
--- loncom/html/adm/jsMath/plugins/noImageFonts.js:1.1	Wed Dec  7 13:57:49 2005
+++ loncom/html/adm/jsMath/plugins/noImageFonts.js	Mon Mar 27 14:32:29 2006
@@ -8,19 +8,19 @@
  *
  *  ---------------------------------------------------------------------
  *
- *  jsMath is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  jsMath is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with jsMath; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *  Copyright 2004-2006 by Davide P. Cervone
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
  */
 
 if (!jsMath) {var jsMath = {}}
Index: loncom/html/adm/jsMath/plugins/tex2math.js
diff -u loncom/html/adm/jsMath/plugins/tex2math.js:1.1 loncom/html/adm/jsMath/plugins/tex2math.js:1.2
--- loncom/html/adm/jsMath/plugins/tex2math.js:1.1	Wed Dec  7 13:57:49 2005
+++ loncom/html/adm/jsMath/plugins/tex2math.js	Mon Mar 27 14:32:29 2006
@@ -10,30 +10,38 @@
  *
  *  ---------------------------------------------------------------------
  *
- *  jsMath is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
- *  (at your option) any later version.
- *
- *  jsMath is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with jsMath; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *  Copyright 2004-2006 by Davide P. Cervone
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
  */
 
-jsMath.Insert(jsMath,{
+if (!jsMath.tex2math) {jsMath.tex2math = {}}  // make sure jsMath.tex2math is defined
+if (!jsMath.tex2math.loaded) {                // only load it once
+
+if (!jsMath.Controls) {jsMath.Controls = {}}
+if (!jsMath.Controls.cookie) {jsMath.Controls.cookie = {}}
+
+jsMath.Add(jsMath.tex2math,{
   
+  loaded: 1,
+  window: window,
+
   /*
-   *  Call the main conversion routine with 
-   *  appropriate flags
+   *  Call the main conversion routine with appropriate flags
    */
-  
+
   ConvertTeX: function (element) {
-    jsMath.tex2math.Convert(element,{
+    this.Convert(element,{
       processSingleDollars: 1, processDoubleDollars: 1,
       processSlashParens: 1, processSlashBrackets: 1,
       custom: 0, fixEscapedDollars: 1
@@ -41,7 +49,7 @@
   },
   
   ConvertTeX2: function (element) {
-    jsMath.tex2math.Convert(element,{
+    this.Convert(element,{
       processSingleDollars: 0, processDoubleDollars: 1,
       processSlashParens: 1, processSlashBrackets: 1,
       custom: 0, fixEscapedDollars: 0
@@ -49,7 +57,7 @@
   },
   
   ConvertLaTeX: function (element) {
-    jsMath.tex2math.Convert(element,{
+    this.Convert(element,{
       processSingleDollars: 0, processDoubleDollars: 0,
       processSlashParens: 1, processSlashBrackets: 1,
       custom: 0, fixEscapedDollars: 0
@@ -57,208 +65,237 @@
   },
   
   ConvertCustom: function (element) {
-    jsMath.tex2math.Convert(element,{custom: 1, fixEscapedDollars: 0});
+    this.Convert(element,{custom: 1, fixEscapedDollars: 0});
   },
+  
+  /*******************************************************************/
 
   /*
-   *  The main tex2math code
+   *  Define a custom search by indicating the
+   *  strings to use for starting and ending
+   *  in-line and display mathematics
    */
-  tex2math: {
-    
-    /*
-     *  Define a custom search by indicating the
-     *  strings to use for starting and ending
-     *  in-line and display mathematics
-     */
-    CustomSearch: function (iOpen,iClose,dOpen,dClose) {
-      this.inLineOpen = iOpen; this.inLineClose = iClose;
-      this.displayOpen = dOpen; this.displayClose = dClose;
-      this.createPattern('customPattern',new RegExp(
-        '('+this.patternQuote(dOpen)+'|'
-           +this.patternQuote(iOpen)+'|'
-           +this.patternQuote(dClose)+'|'
-           +this.patternQuote(iClose)+'|\\\\.)','g'
-      ));
-    },
-    
-    patternQuote: function (s) {
-      s = s.replace(/([\^(){}+*?\-|\[\]\:\\])/g,'\\$1');
-      return s;
-    },
+  CustomSearch: function (iOpen,iClose,dOpen,dClose) {
+    this.inLineOpen = iOpen; this.inLineClose = iClose;
+    this.displayOpen = dOpen; this.displayClose = dClose;
+    this.createPattern('customPattern',new RegExp(
+      '('+this.patternQuote(dOpen)+'|'
+         +this.patternQuote(iOpen)+'|'
+         +this.patternQuote(dClose)+'|'
+         +this.patternQuote(iClose)+'|\\\\.)','g'
+    ));
+  },
+  
+  patternQuote: function (s) {
+    s = s.replace(/([\^(){}+*?\-|\[\]\:\\])/g,'\\$1');
+    return s;
+  },
 
+  /*
+   *  MSIE on the Mac doesn't handle lastIndex correctly, so
+   *  override it and implement it correctly.
+   */
+  createPattern: function (name,pattern) {
+    jsMath.tex2math[name] = pattern;
+    if (this.fixPatterns) {
+      pattern.oldExec = pattern.exec;
+      pattern.exec = this.msiePatternExec;
+    }
+  },
+  msiePatternExec: function (string) {
+    if (this.lastIndex == null) (this.lastIndex = 0);
+    var match = this.oldExec(string.substr(this.lastIndex));
+    if (match) {this.lastIndex += match.lastIndex}
+          else {this.lastIndex = null}
+    return match;
+  },
 
-    /*
-     *  Set up for the correct type of search, and recursively
-     *  convert the mathematics.  Disable tex2math if the cookie
-     *  isn't set, or of there is an element with ID of 'tex2math_off'.
-     */
-    Convert: function (element,flags) {
-      if (!element) {element = document.body}
-      if (typeof(element) == 'string') {element = document.getElementById(element)}
-      if (jsMath.Controls.cookie.tex2math && 
-          (!jsMath.tex2math.allowDisableTag || !document.getElementById('tex2math_off'))) {
-        this.custom = 0; for (var i in flags) {this[i] = flags[i]}
-        if (this.custom) {
-          this.pattern = this.customPattern;
-          this.ProcessMatch = this.customProcessMatch;
-        } else {
-          this.pattern = this.stdPattern;
-          this.ProcessMatch = this.stdProcessMatch;
-        }
-        if (this.processDoubleDollars || this.processSingleDollars ||
-            this.processSlashParens   || this.processSlashBrackets ||
-            this.custom) jsMath.tex2math.ScanElement(element);
+  /*******************************************************************/
+
+  /*
+   *  Set up for the correct type of search, and recursively
+   *  convert the mathematics.  Disable tex2math if the cookie
+   *  isn't set, or of there is an element with ID of 'tex2math_off'.
+   */
+  Convert: function (element,flags) {
+    this.Init();
+    if (!element) {element = jsMath.document.body}
+    if (typeof(element) == 'string') {element = jsMath.document.getElementById(element)}
+    if (jsMath.Controls.cookie.tex2math && 
+        (!jsMath.tex2math.allowDisableTag || !jsMath.document.getElementById('tex2math_off'))) {
+      this.custom = 0; for (var i in flags) {this[i] = flags[i]}
+      if (this.custom) {
+        this.pattern = this.customPattern;
+        this.ProcessMatch = this.customProcessMatch;
+      } else {
+        this.pattern = this.stdPattern;
+        this.ProcessMatch = this.stdProcessMatch;
       }
-    },
+      if (this.processDoubleDollars || this.processSingleDollars ||
+          this.processSlashParens   || this.processSlashBrackets ||
+          this.custom) this.ScanElement(element);
+    }
+  },
 
-    /*
-     *  Recursively look through a document for text nodes that could
-     *  contain mathematics.
-     */
-    ScanElement: function (element,ignore) {
-      if (!element) {element = document.body}
-      if (typeof(element) == 'string') {element = document.getElementById(element)}
-      while (element) {
-        if (element.nodeName == '#text') {
-          if (!ignore) {element = this.ScanText(element)}
-        } else if (element.firstChild && element.className != 'math') {
-          var off = ignore || element.className == 'tex2math_ignore' ||
-             (element.tagName && element.tagName.match(/^(script|noscript|style|textarea|pre)$/i));
-          off = off && element.className != 'tex2math_process';
-          this.ScanElement(element.firstChild,off);
-        }
-        if (element) {element = element.nextSibling}
+  /*
+   *  Recursively look through a document for text nodes that could
+   *  contain mathematics.
+   */
+  ScanElement: function (element,ignore) {
+    if (!element) {element = jsMath.document.body}
+    if (typeof(element) == 'string') {element = jsMath.document.getElementById(element)}
+    while (element) {
+      if (element.nodeName == '#text') {
+        if (!ignore) {element = this.ScanText(element)}
+      } else if (element.firstChild && element.className != 'math') {
+        var off = ignore || element.className == 'tex2math_ignore' ||
+           (element.tagName && element.tagName.match(/^(script|noscript|style|textarea|pre)$/i));
+        off = off && element.className != 'tex2math_process';
+        this.ScanElement(element.firstChild,off);
       }
-    },
-    
-    /*
-     *  Looks through a text element for math delimiters and
-     *  process them.  If <BR> tags are found in the middle, they
-     *  are ignored (this is for BBS systems that have editors
-     *  that insert these automatically).
-     */
-    ScanText: function (element) {
-      if (element.nodeValue.replace(/\s+/,'') == '') {return element}
-      var match; var prev; this.search = {};
-      while (element) {
-        this.pattern.lastIndex = 0;
-        while (element.nodeName == '#text' &&
-              (match = this.pattern.exec(element.nodeValue))) {
-          element = this.ProcessMatch(match[0],match.index,element);
-        }
-        if (this.search.matched) {element = this.EncloseMath(element)}
-        prev = element; element = element.nextSibling;
-        while (element && element.nodeName.toLowerCase() == 'br')
-          {prev = element; element = element.nextSibling}
-        if (!element || element.nodeName != '#text') {return prev}
+      if (element) {element = element.nextSibling}
+    }
+  },
+  
+  /*
+   *  Looks through a text element for math delimiters and
+   *  process them.  If <BR> tags are found in the middle, they
+   *  are ignored (this is for BBS systems that have editors
+   *  that insert these automatically).
+   */
+  ScanText: function (element) {
+    if (element.nodeValue.replace(/\s+/,'') == '') {return element}
+    var match; var prev; this.search = {};
+    while (element) {
+      this.pattern.lastIndex = 0;
+      while (element && element.nodeName == '#text' &&
+            (match = this.pattern.exec(element.nodeValue))) {
+        element = this.ProcessMatch(match[0],match.index,element);
       }
-      return element;
-    },
-    
-    /*
-     *  If a matching end tag has been found, process the mathematics.
-     *  Otherwise, update the search data for the given delimiter,
-     *  or ignore it, as the item dictates.
-     */
-    stdProcessMatch: function (match,index,element) {
-      if (match == this.search.end) {
-        this.search.close = element;
-        this.search.clength = match.length;
-        this.search.cpos = this.pattern.lastIndex;
-        element = this.EncloseMath(element);
-      } else {
-        switch (match) {
-          case '\\(':
-            if (this.search.end != '$' && this.search.end != '$$' &&
-                this.processSlashParens) {
-              this.ScanMark('span',element,'\\)');
-            }
-            break;
-
-          case '\\[':
-            if (this.search.end != '$' && this.search.end != '$$' &&
-                this.processSlashBrackets) {
-              this.ScanMark('div',element,'\\]');
-            }
-            break;
-
-          case '$$':
-            if (this.processDoubleDollars) {
-              var type = (this.doubleDollarsAreInLine? 'span': 'div');
-              this.ScanMark(type,element,'$$');
-            }
-            break;
-
-          case '$':
-            if (this.search.end == null && this.processSingleDollars) {
-              this.ScanMark('span',element,'$');
-            }
-            break;
-
-          case '\\$':
-            if (this.search.end == null && this.fixEscapedDollars) {
-              element.nodeValue = element.nodeValue.substr(0,index)
-                                + element.nodeValue.substr(index+1);
-            }
-            break;
-        }
+      if (this.search.matched) {element = this.EncloseMath(element)}
+      if (!element) {return null}
+      prev = element; element = element.nextSibling;
+      while (element && element.nodeName.toLowerCase() == 'br')
+        {prev = element; element = element.nextSibling}
+      if (!element || element.nodeName != '#text') {return prev}
+    }
+    return element;
+  },
+  
+  /*
+   *  If a matching end tag has been found, process the mathematics.
+   *  Otherwise, update the search data for the given delimiter,
+   *  or ignore it, as the item dictates.
+   */
+  stdProcessMatch: function (match,index,element) {
+    if (match == this.search.end) {
+      this.search.close = element;
+      this.search.clength = match.length;
+      this.search.cpos = this.pattern.lastIndex;
+      element = this.EncloseMath(element);
+    } else {
+      switch (match) {
+        case '\\(':
+          if (this.search.end != '$' && this.search.end != '$$' &&
+              this.processSlashParens) {
+            this.ScanMark('span',element,'\\)');
+          }
+          break;
+
+        case '\\[':
+          if (this.search.end != '$' && this.search.end != '$$' &&
+              this.processSlashBrackets) {
+            this.ScanMark('div',element,'\\]');
+          }
+          break;
+
+        case '$$':
+          if (this.processDoubleDollars) {
+            var type = (this.doubleDollarsAreInLine? 'span': 'div');
+            this.ScanMark(type,element,'$$');
+          }
+          break;
+
+        case '$':
+          if (this.search.end == null && this.processSingleDollars) {
+            this.ScanMark('span',element,'$');
+          }
+          break;
+
+        case '\\$':
+          if (this.search.end == null && this.fixEscapedDollars) {
+            element.nodeValue = element.nodeValue.substr(0,index)
+                              + element.nodeValue.substr(index+1);
+          }
+          break;
       }
-      return element;
-    },
+    }
+    return element;
+  },
 
-    /*
-     *  If a matching end tag has been found, process the mathematics.
-     *  Otherwise, update the search data for the given delimiter,
-     *  or ignore it, as the item dictates.
-     */
-    customProcessMatch: function (match,index,element) {
-      if (match == this.search.end) {
-        this.search.close = element;
-        this.search.clength = match.length;
-        this.search.cpos = this.pattern.lastIndex;
-        this.search.matched = 1;
-      } else if (match == this.inLineOpen) {
-        if (this.search.matched) {element = this.EncloseMath(element)}
-        this.ScanMark('span',element,this.inLineClose);
-      } else if (match == this.displayOpen) {
-        if (this.search.matched) {element = this.EncloseMath(element)}
-        this.ScanMark('div',element,this.displayClose);
-      }
-      return element;
-    },
+  /*
+   *  If a matching end tag has been found, process the mathematics.
+   *  Otherwise, update the search data for the given delimiter,
+   *  or ignore it, as the item dictates.
+   */
+  customProcessMatch: function (match,index,element) {
+    if (match == this.search.end) {
+      this.search.close = element;
+      this.search.clength = match.length;
+      this.search.cpos = this.pattern.lastIndex;
+      this.search.matched = 1;
+    } else if (match == this.inLineOpen) {
+      if (this.search.matched) {element = this.EncloseMath(element)}
+      this.ScanMark('span',element,this.inLineClose);
+    } else if (match == this.displayOpen) {
+      if (this.search.matched) {element = this.EncloseMath(element)}
+      this.ScanMark('div',element,this.displayClose);
+    }
+    return element;
+  },
 
-    /*
-     *  Return a structure that records the starting location
-     *  for the math element, and the end delimiter we want to find.
-     */
-    ScanMark: function (type,element,end) {
-      var len = RegExp.$1.length;
-      this.search = {
-        type: type, end: end, open: element, olength: len,
-        pos: this.pattern.lastIndex - len
-      };
-    },
-    
-    /*
-     *  Surround the mathematics by an appropriate
-     *  SPAN or DIV element marked as CLASS="math".
-     */
-    EncloseMath: function (element) {
-      var search = this.search;
-      var close = search.close;
-      if (search.cpos == close.length) {close = close.nextSibling}
-         else {close = close.splitText(search.cpos)}
-      if (!close) {close = document.createTextNode("")}
-      if (element == search.close) {element = close}
-      var math = search.open.splitText(search.pos);
-      while (math.nextSibling && math.nextSibling != close) {
-        if (math.nextSibling.nodeValue) {math.nodeValue += math.nextSibling.nodeValue}
-        math.parentNode.removeChild(math.nextSibling);
-      }
-      var TeX = math.nodeValue.substr(search.olength,
-        math.nodeValue.length-search.olength-search.clength);
-      math.parentNode.removeChild(math);
-      math = this.createMathTag(search.type,TeX);
+  /*
+   *  Return a structure that records the starting location
+   *  for the math element, and the end delimiter we want to find.
+   */
+  ScanMark: function (type,element,end) {
+    var len = RegExp.$1.length;
+    this.search = {
+      type: type, end: end, open: element, olength: len,
+      pos: this.pattern.lastIndex - len
+    };
+  },
+  
+  /*******************************************************************/
+
+  /*
+   *  Surround the mathematics by an appropriate
+   *  SPAN or DIV element marked as CLASS="math".
+   */
+  EncloseMath: function (element) {
+    if (this.callback) {if (!this.callback()) {return null}}
+    var search = this.search;
+    var close = search.close;
+    if (search.cpos == close.length) {close = close.nextSibling}
+       else {close = close.splitText(search.cpos)}
+    if (!close) {close = jsMath.document.createTextNode("")}
+    if (element == search.close) {element = close}
+    var math = search.open.splitText(search.pos);
+    while (math.nextSibling && math.nextSibling != close) {
+      if (math.nextSibling.nodeValue) {math.nodeValue += math.nextSibling.nodeValue}
+        else {math.nodeValue += ' '}
+      math.parentNode.removeChild(math.nextSibling);
+    }
+    var TeX = math.nodeValue.substr(search.olength,
+      math.nodeValue.length-search.olength-search.clength);
+    math.parentNode.removeChild(math);
+    math = this.createMathTag(search.type,TeX);
+    //
+    //  This is where older, buggy browsers can fail under unpredicatble 
+    //  circumstances, so we trap errors and at least get to continue
+    //  with the rest of the math.  (## should add error message ##)
+    //
+    try {
       if (close && close.parentNode) {
         close.parentNode.insertBefore(math,close);
       } else if (search.open.nextSibling) {
@@ -266,98 +303,93 @@
       } else {
         search.open.parentNode.appendChild(math);
       }
-      this.search = {}; this.pattern.lastIndex = 0;
-      return element;
-    },
+    } catch (err) {}
+    this.search = {}; this.pattern.lastIndex = 0;
+    return math;
+  },
     
+  /*
+   *  Create an element for the mathematics
+   */
+  createMathTag: function (type,text) {
+    var tag = jsMath.document.createElement(type); tag.className = "math";
+    var math = jsMath.document.createTextNode(text);
+    tag.appendChild(math);
+    return tag;
+  },
+
+  //
+  //  MSIE won't let you insert a DIV within tags that are supposed to
+  //  contain in-line data (like <P> or <SPAN>), so we have to fake it
+  //  using SPAN tags that force the formatting to work like DIV.  We
+  //  use a separate SPAN that is the full width of the containing
+  //  item, and that has the margins and centering from the div.typeset
+  //  style.
+  //
+  MSIEcreateMathTag: function (type,text) {
+    var tag = jsMath.document.createElement("span");
+    tag.className = "math";
+    text = text.replace(/</g,'&lt;').replace(/>/g,'&gt;');
+    if (type == 'div') {
+      tag.className = "";
+      tag.style.width = "100%"; tag.style.margin = jsMath.tex2math.margin;
+      tag.style.display = "inline-block";
+      text = '<span class="math">\\displaystyle{'+text+'}</span>';
+      if (jsMath.tex2math.center) {
+        tag.style.textAlign = "center";
+        text = '<span style="text-align:left">'+text+'</span>'
+      }
+    }
+    tag.innerHTML = text;
+    return tag;
+  },
+  
+  /*******************************************************************/
+
+  Init: function () {
+
+    if (this.inited || !jsMath.browser) return
     /*
-     *  Create an element for the mathematics
+     *  MSIE can't handle the DIV's properly, so we need to do it by
+     *  hand.  Look up the style for typeset math to see if the user
+     *  has changed it, and get whether it is centered or indented
+     *  so we can mirror that using a SPAN
      */
-    createMathTag: function (type,text) {
-      var tag = document.createElement(type); tag.className = "math";
-      var math = document.createTextNode(text);
-      tag.appendChild(math);
-      return tag;
-    },
-
-    //
-    //  MSIE won't let you insert a DIV within tags that are supposed to
-    //  contain in-line data (like <P> or <SPAN>), so we have to fake it
-    //  using SPAN tags that force the formatting to work like DIV.  We
-    //  use a separate SPAN that is the full width of the containing
-    //  item, and that has the margins from the div.typeset style
-    //  and we name is jsMath.recenter to get jsMath to recenter it when
-    //  it is typeset (HACK!!!)
-    //
-    MSIEcreateMathTag: function (type,text) {
-      var tag = document.createElement("span");
-      tag.className = "math";
-      text = text.replace(/</g,'&lt;').replace(/>/g,'&gt;');
-      if (type == 'div') {
-        tag.className = (jsMath.tex2math.center)? "jsMath.recenter": "";
-        tag.style.width = "100%"; tag.style.margin = jsMath.tex2math.margin;
-        tag.style.display = "inline-block";
-        text = '<span class="math">\\displaystyle{'+text+'}</span>';
+    if (jsMath.browser == 'MSIE' && navigator.platform == 'Win32') {
+      this.createMathTag = this.MSIEcreateMathTag;
+      this.margin = ""; this.center = 0;
+      for (var i = 0; i < jsMath.document.styleSheets.length; i++) {
+        var rules = jsMath.document.styleSheets[i].cssRules;
+        if (!rules) {rules = jsMath.document.styleSheets[i].rules}
+        for (var j = 0; j < rules.length; j++) {
+          if (rules[j].selectorText.toLowerCase() == 'div.typeset') {
+            if (rules[j].style.margin != "") {this.margin = rules[j].style.margin}
+            this.center = (rules[j].style.textAlign == 'center');
+          }
+        }
       }
-      tag.innerHTML = text;
-      return tag;
     }
-    
+    this.inited = 1;
+  },
+  
+  /*
+   *  Test to see if we need to override the pattern exec() call
+   *  (for MSIE on the Mac).
+   */
+  TestPatterns: function () {
+    var pattern = /a/g;
+    var match = pattern.exec("xax");
+    this.fixPatterns = (pattern.lastIndex != 2 && match.lastIndex == 2);
   }
+  
 });
 
 /*
- *  Set the defaults
+ *  Initialize
  */
 if (jsMath.Controls.cookie.tex2math == null) {jsMath.Controls.cookie.tex2math = 1}
 if (jsMath.tex2math.allowDisableTag == null) {jsMath.tex2math.allowDisableTag = 1}
+jsMath.tex2math.TestPatterns();
+jsMath.tex2math.createPattern('stdPattern',/(\\[\(\)\[\]$]|\$\$|\$)/g);
 
-/*
- *  MSIE can't handle the DIV's properly, so we need to do it by
- *  hand.  Look up the style for typeset math to see if the user
- *  has changed it, and get whether it is centered or indented
- *  so we can mirror that using a SPAN
- */
-if (jsMath.browser == 'MSIE' && navigator.platform == 'Win32') {
-  jsMath.tex2math.createMathTag = jsMath.tex2math.MSIEcreateMathTag;
-  jsMath.Add(jsMath.tex2math,{margin: "", center: 0});
-  for (var i = 0; i < document.styleSheets.length; i++) {
-    var rules = document.styleSheets[i].cssRules;
-    if (!rules) {rules = document.styleSheets[i].rules}
-    for (var j = 0; j < rules.length; j++) {
-      if (rules[j].selectorText.toLowerCase() == 'div.typeset') {
-        if (rules[j].style.margin != "") 
-        {jsMath.tex2math.margin = rules[j].style.margin}
-        jsMath.tex2math.center =
-          (rules[j].style.textAlign == 'center')? 1: 0;
-      }
-    }
-  }
-}
-
-/*
- *  MSIE on the mac doesn't handle lastIndex correctly, so
- *  override it and implement it correctly.
- */
-if (jsMath.browser == 'MSIE' && navigator.platform == 'MacPPC') {
-  jsMath.tex2math.createPattern = function (name,pattern) {
-    jsMath.tex2math[name] = pattern;
-    pattern.oldExec = pattern.exec;
-    pattern.exec = function (string) {
-      var pattern = jsMath.tex2math[name];
-      if (pattern.lastIndex == null) (pattern.lastIndex = 0);
-      var match = pattern.oldExec(string.substr(pattern.lastIndex));
-      if (match) {pattern.lastIndex += match.lastIndex} 
-            else {pattern.lastIndex = null}
-      return match;
-    }
-  }
-} else {
-  jsMath.tex2math.createPattern =
-    function (name,pattern) {jsMath.tex2math[name] = pattern}
 }
-
-/*
- *  The standard pattern for TeX and LaTeX strings
- */
-jsMath.tex2math.createPattern('stdPattern',/(\\[\(\)\[\]$]|\$\$|\$)/g);

Index: loncom/html/adm/jsMath/jsMath-BaKoMa-fonts.js
+++ loncom/html/adm/jsMath/jsMath-BaKoMa-fonts.js
/*
 *  jsMath-BaKoMa-fonts.js
 *  
 *  Part of the jsMath package for mathematics on the web.
 *
 *  This file makes changes needed to use the BaKoMa fonts and
 *  their encoding.
 *
 *  ---------------------------------------------------------------------
 *
 *  Copyright 2004-2006 by Davide P. Cervone
 * 
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */



/********************************************************************
 *
 *  The BaKoMa fonts have a different encoding, so change the characters
 *  to correspond to the their encoding.
 */

jsMath.Script.Start();

if (jsMath.browser == "Mozilla" && navigator.platform != "MacPPC") {

  /*
   *  Mozilla/PC
   */
  jsMath.Update.TeXfontCodes({
    cmr10: [
      '&#x0393;', '&#x0394;', '&#x0398;', '&#x039B;',
      '&#x039E;', '&#x03A0;', '&#x03A3;', '&#x03A5;',
      '&#x03A6;', '&#x03A8;', '&#x03A9;', '&#xFB00;',
      '&#xFB01;', '&#xFB02;', '&#xFB03;', '&#xFB04;',
      
      '&#x0131;', '&#xEEF0;', '&#x0300;', '&#x0301;',
      '&#x030C;', '&#x0306;', '&#x0305;', '&#x030A;',
      '&#x0327;', '&#x00DF;', '&#x00E6;', '&#x0153;',
      '&#x00F8;', '&#x00C6;', '&#x0152;', '&#x00D8;',
        
      '&#x337;', '&#x21;', '&#x201D;', '&#x23;',
      '&#x24;', '&#x25;', '&#x26;', '&#x27;',
      '&#x28;', '&#x29;', '&#x2A;', '&#x2B;',
      '&#x2C;', '&#x2D;', '&#x2E;', '&#x2F;', 
        
      '0', '1', '2', '3', '4', '5', '6', '7',
      '8', '9', ':', ';', '&#xA1;', '&#x3D;', '&#xBf;', '&#x3F;',
        
      '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
      'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
      
      'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
      'X', 'Y', 'Z', '&#x5B;', '&#x201C;', '&#x5D;', '&#x302;', '&#x307;',
      
      '&#x2018;', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
      'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
      
      'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
      'x', 'y', 'z', '&#x2013;', '&#x2014;', '&#x30B;', '&#x303;', '&#x308;'
    ],
      
    cmmi10: [
      '&#x393;', '&#x394;', '&#x398;', '&#x39B;',
      '&#x39E;', '&#x3A0;', '&#x3A3;', '&#x3A5;',
      '&#x3A6;', '&#x3A8;', '&#x3A9;', '&#x3B1;',
      '&#x3B2;', '&#x3B3;', '&#x3B4;', '&#x3B5;',
      
      '&#x3B6;', '&#x3B7;', '&#x3B8;', '&#x3B9;',
      '&#x3BA;', '&#x3BB;', '&#x3BC;', '&#x3BD;',
      '&#x3BE;', '&#x3C0;', '&#x3C1;', '&#x3C3;',
      '&#x3C4;', '&#x3C5;', '&#x3C6;', '&#x3C7;',
      
      '&#x3C8;', '&#x3C9;', '&#x25B;', '&#x3D1;',
      '&#x3D6;', '&#x3F1;', '&#x3C2;', '&#x3D5;',
      '&#x21BC;', '&#x21BD;', '&#x21C0;', '&#x21C1;',
      '&#xEFBA;', '&#xEFBB;', '&#x25B9;', '&#x25C3;',
      
      '0', '1', '2', '3', '4', '5', '6', '7',
      '8', '9', '&#x2E;', '&#x2C;', '&#x3C;', '&#x2F;', '&#x3E;', '&#x22C6;',
      
      '&#x2202;', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
      'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
        
      'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
      'X', 'Y', 'Z', '&#x266D;', '&#x266E;', '&#x266F;', '&#x2323;', '&#x2322;',
      
      '&#x2113;', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
      'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
      
      'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
      'x', 'y', 'z', '&#x131;', '&#xEEF0;', '&#x2118;', '&#x20D7;', '&#x0311;'
    ],
      
    cmsy10: [
      '&#x2212;', '&#xB7;',   '&#xD7;',   '&#x22C6;',
      '&#xF7;',   '&#x22C4;', '&#xB1;',   '&#x2213;',
      '&#x2295;', '&#x2296;', '&#x2297;', '&#x2298;',
      '&#x2299;', '&#x25CB;', '&#x2218;', '&#x2219;',
      
      '&#x2243;', '&#x224D;', '&#x2286;', '&#x2287;',
      '&#x2264;', '&#x2265;', '&#x227C;', '&#x227D;',
      '&#x223C;', '&#x2245;', '&#x2282;', '&#x2283;',
      '&#x226A;', '&#x226B;', '&#x227A;', '&#x227B;',
      
      '&#x2190;', '&#x2192;', '&#x2191;', '&#x2193;',
      '&#x2194;', '&#x2197;', '&#x2198;', '&#x2242;',
      '&#x21D0;', '&#x21D2;', '&#x21D1;', '&#x21D3;', 
      '&#x21D4;', '&#x2196;', '&#x2199;', '&#x221D;',
      
      '&#x2032;', '&#x221E;', '&#x2208;', '&#x220B;',
      '&#x25B3;', '&#x25BD;', '&#x338;',  '&#xEFB9;', 
      '&#x2200;', '&#x2203;', '&#xAC;',   '&#x2205;',
      '&#x211C;', '&#x2111;', '&#x22A4;', '&#x22A5;',
      
      '&#x2135;', '&#xEF35;', '&#x212C;', '&#xEF36;',
      '&#xEF37;', '&#x2130;', '&#x2131;', '&#xEF38;',
      '&#x210B;', '&#x2110;', '&#xEF39;', '&#xEF3A;',
      '&#x2112;', '&#x2133;', '&#xEF3B;', '&#xEF3C;',
      
      '&#xEF3D;', '&#xEF3E;', '&#x211B;', '&#xEF3F;',
      '&#xEF40;', '&#xEF41;', '&#xEF42;', '&#xEF43;',
      '&#xEF44;', '&#xEF45;', '&#xEF46;', '&#x222A;',
      '&#x2229;', '&#x228E;', '&#x2227;', '&#x2228;',
      
      '&#x22A2;', '&#x22A3;', '&#x230A;', '&#x230B;',
      '&#x2308;', '&#x2309;', '&#x7B;',   '&#x7D;',
      '&#x2329;', '&#x232A;', '&#x2223;', '&#x2225;',
      '&#x2195;', '&#x21D5;', '&#x2216;', '&#x2240;',
      
      '&#x221A;', '&#x2210;', '&#x2207;', '&#x222B;', 
      '&#x2294;', '&#x2293;', '&#x2291;', '&#x2292;',
      '&#xA7;',   '&#x2020;', '&#x2021;', '&#xB6;',
      '&#x2663;', '&#x2662;', '&#x2661;', '&#x2660;'
    ],
      
    cmex10: [
      '&#xF006;', '&#xF007;', '&#xF008;', '&#xF009;',
      '&#xF00A;', '&#xF00B;', '&#xF00C;', '&#xF00D;',
      '&#xF00E;', '&#xF00F;', '&#xF02C;', '&#xF02D;',
      '&#xF012;', '&#xF013;', '&#xF014;', '&#xF015;',

      '&#xF016;', '&#xF017;', '&#xF018;', '&#xF019;',
      '&#xF01A;', '&#xF01B;', '&#xF01C;', '&#xF01D;',
      '&#xF01E;', '&#xF01F;', '&#xF020;', '&#xF021;',
      '&#xF02E;', '&#xF02F;', '&#xF024;', '&#xF025;',
      
      '&#xF026;', '&#xEFBC;', '&#xEFBD;', '&#xEFBE;',
      '&#xEFBF;', '&#xEFC0;', '&#xEFC1;', '&#xEFC2;',
      '&#xEFC3;', '&#xEFC4;', '&#xF028;', '&#xF029;', 
      '&#xEFC7;', '&#xEFC8;', '&#xEFC9;', '&#xEFCA;',
        
      '&#xF8EB;', '&#xF8F6;', '&#xF8EE;', '&#xF8F9;',
      '&#xF8F0;', '&#xF8FB;', '&#xF8EF;', '&#xF8FA;',
      '&#xF8F1;', '&#xF8FC;', '&#xF8F3;', '&#xF8FE;',
      '&#xF8F2;', '&#xF8FD;', '&#xF8F4;', '&#xF8E6;',
      
      '&#xF8ED;', '&#xF8F8;', '&#xF8EC;', '&#xF8F7;',
      '&#xF02A;', '&#xF02B;', '&#xEFCD;', '&#xEFCE;',
      '&#xEFCF;', '&#xEFD0;', '&#xEFD1;', '&#xEFD2;',
      '&#xEFD3;', '&#xEFD4;', '&#xEFD5;', '&#xEFD6;',
      
      '&#xEFD7;', '&#xEFD8;', '&#xEFD9;', '&#xEFDA;',
      '&#xEFDB;', '&#xEFDC;', '&#xEFDD;', '&#xEFDE;',
      '&#xEFDF;', '&#xEFE0;', '&#xEFE1;', '&#xEFE2;',
      '&#xEFE3;', '&#xEFE4;', '&#xEFE5;', '&#xEFE6;',
      
      '&#xEFE7;', '&#xEFE8;', '&#xEFE9;', '&#xEFEA;',
      '&#xEFEB;', '&#xEFEC;', '&#xEFED;', '&#xEFEE;',
      '&#xEFEF;', '&#xEFF0;', '&#xEFF1;', '&#xEFF2;',
      '&#xEFF3;', '&#xEFF4;', '&#xEFF5;', '&#xEFF6;',
      
      '&#xEFF7;', '&#xEFF8;', '&#xEFF9;', '&#xEFFA;',
      '&#xEFFB;', '&#xEFFC;', '&#xEFFD;', '&#xEFFE;',
      '&#xEFFF;', '&#xF000;', '&#xF001;', '&#xF002;',
      '&#xF003;', '&#xF004;', '&#xF005;', '&#xF027;'
    ]
  });
    
  /*
   *  Adjust a few other characters as well
   */
    
  jsMath.Update.TeXfonts({
    cmr10:  {'20': {c: '&#x02C7;', tclass: 'normal', w: .3}},
    cmmi10: {
      '20': {c: '<i>&kappa</i>', tclass: 'normal'},
      '58': {c: '.', tclass: 'normal'},
      '59': {c: ',', tclass: 'normal'},
      '61': {c: '&#x2F;', tclass: 'cmr10'}
    },
    cmsy10: {
      '3':  {c: '*', tclass: 'normal'},
      '16': {c: '&#x224D;'},
      '17': {c: '&equiv;', tclass: 'normal'},
      '25': {c: '&#x2248;', tclass: 'normal'},
      '39': {c: '&#x2243;'},
      '20': {c: '&le;', tclass: 'normal'}
    },
    cmex10: {'20': {c: '<span style="font-size: 80%">&#xEFBD;</span>'}},
    cmti10: {'10': {c: '<i>&Omega;</i>', tclass: 'normal'}},
    cmbx10: {'10': {c: '<b>&Omega;</b>', tclass: 'normal'}}
  });
    
} else {
  
  jsMath.Font.BaKoMa = [
    '&#xA1;', '&#xA2;', '&#xA3;', '&#xA4;', '&#xA5;', '&#xA6;', '&#xA7;', '&#xA8;',
    '&#xA9;', '&#xAA;', '&#xAD;', '&#xAE;', '&#xAF;', '&#xB0;', '&#xB1;', '&#xB2;',

    '&#xB3;', '&#xB4;', '&#xB5;', '&#xB6;', '&#x2219;', '&#xB8;', '&#xB9;', '&#xBA;',
    '&#xBB;', '&#xBC;', '&#xBD;', '&#xBE;', '&#xBF;', '&#xC0;', '&#xC1;', '&#xC2;',

    '&#xC3;', '!', '"', '#', '$', '%', '&#x26;', '\'', 
    '(', ')', '*', '+', ',', '-', '.', '/', 

    '0', '1', '2', '3', '4', '5', '6', '7',
    '8', '9', ':', ';', '&#x3C;', '=', '&#x3E;', '?',

    '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
    'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',

    'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
    'X', 'Y', 'Z', '[', '\\', ']', '^', '_',

    '&#x60;', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
    'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',

    'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
    'x', 'y', 'z', '&#x7B;', '&#x7C;', '&#x7D;', '&#x7E;', '&#xC4;'
  ];

  jsMath.Update.TeXfontCodes({
    cmr10:  jsMath.Font.BaKoMa,
    cmmi10: jsMath.Font.BaKoMa,
    cmsy10: jsMath.Font.BaKoMa,
    cmex10: jsMath.Font.BaKoMa,
    cmti10: jsMath.Font.BaKoMa,
    cmbx10: jsMath.Font.BaKoMa
  });
  
  /*
   *  MSIE corrections
   */
  switch (jsMath.browser) {
    
    case "MSIE":
      if (navigator.platform == "Win32") {
        /*
         *  MSIE/PC
         */
        jsMath.Browser.msieFontBug = 1;
        jsMath.Update.TeXfonts({
          cmr10:  {'10': {c: '&Omega;', tclass: 'normal'}},
          cmmi10: {
            '10':  {c: '<i>&Omega;</i>', tclass: 'normal'},
            '126': {c: '&#x7E;<span style="margin-left:.1em"></span>'}
          },
          cmsy10: {
            '10': {c: '&#x2297;', tclass: 'arial'},
            '55': {c: '<span style="margin-right:-.54em">7</span>'}
          },
          cmex10: {'10': {c: '<span style="font-size: 67%">D</span>'}},
          cmti10: {'10': {c: '<i>&Omega;</i>', tclass: 'normal'}},
          cmbx10: {'10': {c: '<b>&Omega;</b>', tclass: 'normal'}}
        });
      } else {
        /*
         *  MSIE/Mac
         */
        jsMath.Update.TeXfonts({
          
          cmr10: {
            '3':  {c: '<font face="Symbol">L</font>', tclass: 'normal'},
            '5':  {c: '<font face="Symbol">P</font>', tclass: 'normal'},
            '10': {c: '<font face="Symbol">W</font>', tclass: 'normal'},
            '15': {c: 'ffl', tclass: 'normal'},
            '16': {c: '&#x0131;', tclass: 'normal'},
            '20': {c: '&#x02C7;', tclass: 'normal'},
            '22': {c: '&#xAF;', tclass: 'normal', w: .3},
            '25': {c: '&#xDF;', tclass: 'normal'},
            '26': {c: '&#xE6;', tclass: 'normal'},
            '27': {c: '&#x153;', tclass: 'normal'}
          },
          
          cmmi10: {
            '3':  {c: '<font face="Symbol">L</font>', tclass: 'italic'},
            '5':  {c: '<font face="Symbol">P</font>', tclass: 'italic'},
            '10': {c: '<font face="Symbol">W</font>', tclass: 'italic'},
            '15': {c: '<font face="Symbol">e</font>', tclass: 'italic'},
            '16': {c: '<font face="Symbol">z</font>', tclass: 'italic'},
            '20': {c: '<font face="Symbol">k</font>', tclass: 'italic'},
            '22': {c: '<font face="Symbol">m</font>', tclass: 'italic'},
            '25': {c: '<font face="Symbol">p</font>', tclass: 'italic'},
            '26': {c: '<font face="Symbol">r</font>', tclass: 'italic'},
            '27': {c: '<font face="Symbol">s</font>', tclass: 'italic'}
          },
          
          cmsy10: {
            '3':  {c: '<span style="vertical-align:-.3em">*</span>', tclass: 'normal'},
            '5':  {c: '&#x389;', tclass: 'normal'},
            '10': {c: '&otimes;', tclass: 'normal'},
            '15': {c: '&#x2022;', tclass: 'normal'},
            '16': {c: '&#x224D;', tclass: 'normal'},
            '20': {c: '&le;', tclass: 'normal'},
            '22': {c: '&le;', tclass: 'normal'},
            '25': {c: '&#x2248;', tclass: 'normal'},
            '26': {c: '<font face="Symbol">&#xCC;</font>', tclass: 'normal'},
            '27': {c: '<font face="Symbol">&#xC9;</font>', tclass: 'normal'}
          },
          
          cmex10: {
            '3':  {c: '<span style="font-size: 67%">&#x69;</span>'},
            '5':  {c: '<span style="font-size: 67%">&#x6B;</span>'},
            '10': {c: '<span style="font-size: 67%">&#x44;</span>'},
            '15': {c: '<span style="font-size: 55%">&#xC2;</span>'},
            '16': {c: '<span style="font-size: 83%">&#xB5;</span>'},
            '20': {c: '<span style="font-size: 83%">"</span>'},
            '22': {c: '<span style="font-size: 83%">$</span>'},
            '25': {c: '<span style="font-size: 83%">\'</span>'},
            '26': {c: '<span style="font-size: 83%">(</span>'},
            '27': {c: '<span style="font-size: 83%">)</span>'}
          },
          
          cmti10: {
            '3':  {c: '<font face="Symbol">L</font>', tclass: 'italic'},
            '5':  {c: '<font face="Symbol">P</font>', tclass: 'italic'},
            '10': {c: '<font face="Symbol">W</font>', tclass: 'italic'},
            '16': {c: '&#x0131;', tclass: 'italic'},
            '20': {c: '&#xAD;', tclass: 'italic'},
            '22': {c: '&#xAF;', tclass: 'italic', w: .3},
            '25': {c: '&#xDF;', tclass: 'italic'},
            '26': {c: '&#xE6;', tclass: 'italic'},
            '27': {c: '&#x153;', tclass: 'italic'}
          },
          
          cmbx10: {
            '3':  {c: '<font face="Symbol">L</font>', tclass: 'bold'},
            '5':  {c: '<font face="Symbol">P</font>', tclass: 'bold'},
            '10': {c: '<font face="Symbol">W</font>', tclass: 'bold'},
            '16': {c: '&#x0131;', tclass: 'bold'},
            '20': {c: '&#xAD;', tclass: 'bold'},
            '22': {c: '&#xAF;', tclass: 'bold', w: .3},
            '25': {c: '&#xDF;', tclass: 'bold'},
            '26': {c: '&#xE6;', tclass: 'bold'},
            '27': {c: '&#x153;', tclass: 'bold'}
          }
        });
      }
      break;
      
    case "Mozilla":
      if (navigator.platform == "MacPPC") {
        /*
         *  Mozilla/Mac
         */
        jsMath.Update.TeXfonts({
          cmr10:  {'10': {c: '&Omega;', tclass: 'normal'}},
          cmmi10: {'10': {c: '<i>&Omega;</i>', tclass: 'normal'}},
          cmsy10: {'10': {c: '&otimes;', tclass: 'normal'}},
          cmex10: {'10': {c: '<span style="font-size: 67%">D</span>'}},
          cmti10: {'10': {c: '<i>&Omega;</i>', tclass: 'normal'}},
          cmbx10: {'10': {c: '<b>&Omega;</b>', tclass: 'normal'}}
        });
      }
      break;

    case "Opera":
      jsMath.Update.TeXfonts({
        cmr10:  {
          '10': {c: '&Omega;', tclass: 'normal'},
          '20': {c: '&#x2C7;', tclass: 'normal'}
        },
        cmmi10: {
          '10': {c: '<i>&Omega;</i>', tclass: 'normal'},
          '20': {c: '&kappa;', tclass: 'normal'}
        },
        cmsy10: {
          '10': {c: '&otimes;', tclass: 'normal'},
          '20': {c: '&#x2264;', tclass: 'normal'}
        },
        cmex10: {
          '10': {c: '<span style="font-size: 67%">D</span>'},
          '20': {c: '<span style="font-size: 82%">"</span>'}
        },
        cmti10: {
          '10': {c: '<i>&Omega;</i>', tclass: 'normal'},
          '20': {c: '<i>&#x2C7;</i>', tclass: 'normal'}
        },
        cmbx10: {
          '10': {c: '<b>&Omega;</b>', tclass: 'normal'},
          '20': {c: '<b>&#x2C7;</b>', tclass: 'normal'}
        }
      });
      break;
      
    case "Konqueror":
      jsMath.Update.TeXfonts({
        cmr10:  {'20': {c: '&#x2C7;', tclass: 'normal'}},
        cmmi10: {'20': {c: '&kappa;', tclass: 'normal'}},
        cmsy10: {'20': {c: '&#x2264;', tclass: 'normal'}},
        cmex10: {'20': {c: '<span style="font-size: 84%">"</span>'}},
        cmti10: {'20': {c: '<i>&#x2C7;</i>', tclass: 'normal'}},
        cmbx10: {'20': {c: '<b>&#x2C7;</b>', tclass: 'normal'}}
      });
      break;
  }

}

jsMath.Setup.Styles({
  '.typeset .cmr10':  'font-family: cmr10, serif',
  '.typeset .cmbx10': 'font-family: cmbx10, cmr10',
  '.typeset .cmti10': 'font-family: cmti10, cmr10',
  '.typeset .cmmi10': 'font-family: cmmi10',
  '.typeset .cmsy10': 'font-family: cmsy10',
  '.typeset .cmex10': 'font-family: cmex10',
  '.typeset .arial':  "font-family: 'Arial unicode MS'"
});

jsMath.Script.End();

Index: loncom/html/adm/jsMath/jsMath-autoload.html
+++ loncom/html/adm/jsMath/jsMath-autoload.html
<html>
<head>
<!--
 | jsMath-autoload.html
 |
 | Part of the jsMath package for mathematics on the web.
 | 
 | This file is used for loading jsMath.js and other components
 | when the "autoload" plugin is used.
 | 
 | ---------------------------------------------------------------------
 | 
 | Copyright 2004-2006 by Davide P. Cervone
 |
 | Licensed under the Apache License, Version 2.0 (the "License");
 | you may not use this file except in compliance with the License.
 | You may obtain a copy of the License at
 |
 |     http://www.apache.org/licenses/LICENSE-2.0
 |
 | Unless required by applicable law or agreed to in writing, software
 | distributed under the License is distributed on an "AS IS" BASIS,
 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | See the License for the specific language governing permissions and
 | limitations under the License.
-->
</head>
<body>

<script>
  window.jsMath = window.parent.jsMath;
  document.write('<script src="'+jsMath.Autoload.Script.url+'"><'+'/script>');
</script>

<script>
if (window.jsMath) {
  if (document.readyState == 'loading') {
    // work around bug in OmniWeb 4.5 that would otherwise run this twice.
    setTimeout("jsMath.Autoload.Script.endLoad();",1)
  } else {
    jsMath.Autoload.Script.endLoad();
  }
}
</script>

</body>
</html>

Index: loncom/html/adm/jsMath/jsMath-controls.html
+++ loncom/html/adm/jsMath/jsMath-controls.html
<html>
<head>
<!--
 | jsMath-controls.html
 |
 | Part of the jsMath package for mathematics on the web.
 | 
 | This file handles the details of the jsMath control panels
 | 
 | ---------------------------------------------------------------------
 | 
 | Copyright 2004-2006 by Davide P. Cervone
 |
 | Licensed under the Apache License, Version 2.0 (the "License");
 | you may not use this file except in compliance with the License.
 | You may obtain a copy of the License at
 |
 |     http://www.apache.org/licenses/LICENSE-2.0
 |
 | Unless required by applicable law or agreed to in writing, software
 | distributed under the License is distributed on an "AS IS" BASIS,
 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | See the License for the specific language governing permissions and
 | limitations under the License.
-->
</head>
<body>

<script>
var showWarning = 0;
while (!window.jsMath && !showWarning) {
  try {
    window.jsMath = window.parent.jsMath;
    if (!window.jsMath) {throw "no jsMath";}
  } catch (err) {
    showWarning = 1;
    //
    // MSIE on Mac can't change document.domain, and 'try' won't
    //   catch the error (Grrr!) so don't even try for it
    //
    if (document.domain.match(/\..*\./) &&
        (navigator.appName != 'Microsoft Internet Explorer' ||
         navigator.platform != 'MacPPC' || !navigator.userProfile || !document.all)) {
      try {
        document.domain = document.domain.replace(/^[^.]*\./,'');
        showWarning = 0;
      } catch(err) {}
    }
  }
}

function Warning () {
  alert(
    "jsMath can't open the control panel, since jsMath was not " +
    "obtained from a server that is in the same domain as the " +
    "page that loaded it."
  );
}

if (showWarning) {setTimeout("Warning()",1)} else {
debug = window.parent.debug; show = window.parent.show;

jsMath.Add(jsMath.Controls,{

  loaded: 1,

  Close: function () {
    this.panel.style.display = "none";
    jsMath.Element("button").style.display = (this.cookie.button ? "block" : "none");
    if (jsMath.document.location.protocol == 'file:') return;
    for (var id in {scale:1, scaleImg:1, font:1, print:1, autofont:1, alpha:1, tex2math:1}) {
      if (this.cookie[id] != this.oldCookie[id] && this.oldCookie[id] != null) {
        this.loaded = 0;
        jsMath.document.location.reload();
        return;
      }
    }
  },

  Main: function () {
    this.oldCookie = {}; jsMath.Add(this.oldCookie,this.cookie);
    this.panel.innerHTML = ""; // for MSIE on the Mac
    if (jsMath.browser == 'Mozilla') {
      this.panel.appendChild(document.getElementById("jsMath_panel").cloneNode(true));
    } else {
      this.panel.innerHTML = document.getElementById("jsMath_panel").innerHTML;
    }

    jsMath.Element("_version").innerHTML = jsMath.version;

    jsMath.Element("_fontType").innerHTML =
      ({tex:"TeX",
        image:"Image",
        symbol:"Image symbol",
        unicode:"Unicode"})[this.cookie.font];

     jsMath.Element("_mailto").href =
       "mailto:dpvc@union.edu?subject=Bug Report for jsMath "
           + jsMath.version + " (using " + jsMath.browser
           + " in " + this.cookie.font + " mode)";

    if (this.cookie.print ||
       (this.cookie.font != 'image' && this.cookie.font != 'symbol'))
         {jsMath.Element("_resolution").disabled = true}

    /*
     *  Seems to be a bug in Safari that messes up the button names
     *  when the page is reloaded after an option change
     */
    if (jsMath.browser == 'Safari') {
      jsMath.Element("_resolution").value = "Hi-Res Fonts for Printing";
      jsMath.Element("_opts").value = "Options";
      jsMath.Element("_done").value = "Done";
    }

    this.panel.style.display = "block";
    this.openMain = 0;
  },

  Options: function () {
    this.panel.innerHTML = ""; // for MSIE on the Mac
    if (jsMath.browser == 'Mozilla') {
      this.panel.appendChild(document.getElementById("jsMath_options").cloneNode(true));
    } else {
      this.panel.innerHTML = document.getElementById("jsMath_options").innerHTML;
    }
    jsMath.Element("_scale").value = this.cookie.scale;
    jsMath.Element("_keep").value = this.cookie.keep;
    for (var id in {autofont:1, scaleImg:1, alpha:1, warn:1, button:1,
                    progress:1, asynch:1, blank:1, tex2math:1}) {
      if (this.cookie[id]) {jsMath.Element('_'+id).checked = true}
    }
    var font = jsMath.document.getElementsByName("jsMath__font");
    for (var i = 0; i < font.length; i++) {
      if ((font[i].value == 'tex' && jsMath.nofonts) ||
          ((font[i].value == 'symbol' || font[i].value == 'image') &&
             jsMath.noImgFonts)) {
        jsMath.Element('_'+font[i].value+"Text").style.color = "#888888";
        font[i].disabled = true;
      }
      else if (this.cookie.font == font[i].value) {font[i].checked = true}
    }
    if (jsMath.noImgFonts) {
      jsMath.Element("_alphaText").style.color = "#888888";
      jsMath.Element("_alpha").disabled = true;
      jsMath.Element("_scaleImg").disabled = true;
    } else if (jsMath.Browser.imgScale != 1) {
      jsMath.Element("_alphaText").style.color = "#888888";
      jsMath.Element("_alpha").disabled = true;
    }
    if (jsMath.tex2math.Convert) {
      jsMath.Element("_tex2mathRow").style.display = '';
    }

    /*
     *  Seems to be a bug in Safari that messes up the button names
     *  when the page is reloaded after an option change
     */
    if (jsMath.isSafari) {
      jsMath.Element("_back").value = "Back";
      jsMath.Element("_done").value = "Done";
    }

    this.panel.style.display = "block";
  },

  SaveOptions: function (close) {
    this.cookie.scale = jsMath.Element("_scale").value;
    var font = jsMath.document.getElementsByName("jsMath__font");
    for (var i = 0; i < font.length; i++) 
      {if (font[i].checked) {this.cookie.font = font[i].value}}
    for (var id in {autofont:1, scaleImg:1, alpha:1, warn:1, button:1,
                    progress:1, asynch:1, blank:1, tex2math:1}) {
      if (this.cookie[id] != null) {
        this.cookie[id] = jsMath.Element('_'+id).checked ? 1: 0;
      }
    }
    this.cookie.keep = jsMath.Element("_keep").value;
    this.SetCookie(1);
    if (close) {this.Close()} else {this.Main()}
  },

  PrintResolution: function () {
    this.cookie.print = 1;
    this.SetCookie(1);
    this.Close();
  },

  CheckVersion: function () {
    jsMath.Script.delayedLoad('http://www.math.union.edu/locate/jsMath/jsMath/jsMath-version-check.js');
  },

  NoAuto: function () {jsMath.Element("_autofont").checked = false}

});

}
</script>

<!------------------------------------------------------------>

<div id="jsMath_panel">
<div style="text-align:center; margin:1em 2em">
<b style="font-size:large">jsMath v<span ID="jsMath__version"></span></b><br/>
<small>(<span id="jsMath__fontType">type</span> fonts)</small>
<p>
<table border="0" cellspacing="0" cellpadding="0" style="margin:0px">
<tr><td align="center"><table border="0" cellspacing="0" cellpadding="0">
<tr><td align="center" colspan="3">
<table border="0" cellspacing="0" cellpadding="0">
<tr><td align="left">&#8226; <a target="_blank" href="http://www.math.union.edu/locate/jsMath/users/quickstart.html">Quick Start</a></td></tr>
<tr><td align="left">&#8226; <a target="_blank" href="http://www.math.union.edu/locate/jsMath/users/printing.html">Printing Issues</a></td></tr>
<tr><td height="5"></td></tr>
<tr><td align="left">&#8226; <a target="_blank" href="http://www.math.union.edu/locate/jsMath">Home Page</a></td></tr>
<tr><td align="left">&#8226; <a target="_blank" href="http://www.math.union.edu/locate/jsMath/users/">Documentation</a></td></tr>
<tr><td align="left">&#8226; <a target="_blank" href="http://www.math.union.edu/locate/jsMath/download/jsMath-fonts.html">Download Fonts</a></td></tr>
<tr><td height="5"></td></tr>
<tr><td align="left">&#8226; <a target="_blank" href="http://www.math.union.edu/locate/jsMath/bugs.html">Known Bugs</a></td></tr>
<tr><td align="left">&#8226; <a id="jsMath__mailto" href="mailto:dpvc@union.edu?subject=jsMath Bug Report">Report a  Bug</a></td></tr>
<tr><td height="5"></td></tr>
<tr><td align="left">&#8226; <a target="_blank" href="http://www.math.union.edu/locate/jsMath/jsMath/COPYING.txt">License</a></td></tr>
</table>
</td></tr>
<tr><td style="height:1em"></td></tr>
<tr><td align="center" colspan="3">
<input type="button" id="jsMath__resolution" value="Hi-Res Fonts for Printing"
       style="width:17em" onclick="jsMath.Controls.PrintResolution()" />
</td></tr>
<tr><td height="1"></td></tr>
<tr><td align="center" colspan="3">
<input type="button" value="Check for jsMath Updates"
       style="width:17em" onclick="jsMath.Controls.CheckVersion()" />
</td></tr>
<tr><td height="5"></td></tr>
<tr><td align="left">
<input type="button" value="Options" id="jsMath__opts" style="width:8em" onclick="jsMath.Controls.Options()" />
</td><td>
&nbsp;
</td><td align="right">
<input type="button" value="Done" id="jsMath__done" style="width:8em" onclick="jsMath.Controls.Close()" />
</td></tr>
</table></td></tr>
<tr><td height="7"></td></tr>
<tr><td align="center" colspan="3" style="width:20em; font-size:x-small">
<i>Click on the jsMath floating button or <nobr>ALT-click</nobr> on a
mathematical expression to get this dialog at any time.</i>
</td></tr>
</table></p>
</div>
</div>

<!------------------------------------------------------------>

<div id="jsMath_options">
<div style="text-align:center; padding:.75em 1.4em;">
<b style="font-size:large">jsMath Options</b> <small>[<a target="_blank" href="http://www.math.union.edu/locate/jsMath/users/help.html">help</a>]</small>
<p>
<form action="javascript:" style="margin:0px;">
<table border="0" cellspacing="0" cellpadding="0" style="text-align:left">

<tr><td>Scale all mathematics to <input type="text" id="jsMath__scale" value="100" size="3" />%</td></tr>

<tr><td height="5"></td></tr>

<tr><td><input type="radio" name="jsMath__font" value="tex" onclick="jsMath.Controls.NoAuto()" />
<span id="jsMath__texText">Use native TeX fonts</span>
<small>(<a target="_blank" href="http://www.math.union.edu/locate/jsMath/download/jsMath-fonts.html">download</a>)</small>
</td></tr>
<tr><td><input type="radio" name="jsMath__font" value="image" onclick="jsMath.Controls.NoAuto()" />
<span id="jsMath__imageText">Use image fonts
(<input type="checkbox" id="jsMath__scaleImg" value="1" /> scalable)</span></td></tr>
<tr><td><input type="radio" name="jsMath__font" value="symbol" onclick="jsMath.Controls.NoAuto()" />
<span id="jsMath__symbolText">Use images for symbols only</span></td></tr>
<tr><td height="2"></td></tr>
<tr><td><input type="radio" name="jsMath__font" value="unicode" onclick="jsMath.Controls.NoAuto()" />
Use native Unicode fonts</td></tr>

<tr><td height="8"></td></tr>

<tr><td><input type="checkbox" id="jsMath__autofont" value="1" /> Autoselect best font</td></tr>
<tr><td><input type="checkbox" id="jsMath__alpha"    value="1" /> <span id="jsMath__alphaText">Use image alpha channels</span></td></tr>
<tr><td><input type="checkbox" id="jsMath__warn"     value="1" /> Show font warnings</td></tr>

<tr><td height="8"></td></tr>

<tr><td><input type="checkbox" id="jsMath__progress" value="1" /> Show progress messages</td></tr>
<tr><td><input type="checkbox" id="jsMath__asynch"   value="1" /> Force asynchronous processing</td></tr>
<tr><td><input type="checkbox" id="jsMath__blank"    value="1" /> Don't show page until complete</td></tr>
<tr><td><input type="checkbox" id="jsMath__button"   value="1" /> Show jsMath button</td></tr>

<tr><td height="8"></td></tr>

<tr id="jsMath__tex2mathRow" STYLE="display:none"><td><input type="checkbox" id="jsMath__tex2math" value="1" /> Enable <code>tex2math</code> plug-in</td></tr>

<tr><td height="8"></td></tr>

<tr><td>Save settings for

<select id="jsMath__keep">
<option value="0D">this session only
<option value="1D">1 day
<option value="2D">2 days
<option value="3D">3 days
<option value="1W">1 week
<option value="2W">2 weeks
<option value="1M">1 month
<option value="2M">2 months
<option value="3M">3 months
<option value="6M">6 months
<option value="1Y">1 year
<option value="5Y">5 years
</select>

</td></tr>

<tr><td height="13"></td></tr>

<tr><td align="center">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td align="left">
<input type="button" value="Back" id="jsMath__back" style="width:8em" onclick="jsMath.Controls.SaveOptions(0)" />
&nbsp;&nbsp;
</td>
<td align="right">
<input type="button" value="Done" id="jsMath__done" style="width:8em" onclick="jsMath.Controls.SaveOptions(1)" />
</td>
</tr>
</table>
</td></tr>

</table>
</form>
</div>
</div>
</p>

<!------------------------------------------------------------>

<script>
  if (!showWarning) {jsMath.Controls.Main()}
</script>
<script>
  if (window.jsMath) {
    jsMath.Script.endLoad();
    jsMath.Message.doClear();
  }
</script>
</body>
</html>

Index: loncom/html/adm/jsMath/jsMath-loader.html
+++ loncom/html/adm/jsMath/jsMath-loader.html
<html>
<head>
<!--
 | jsMath-loader.html
 |
 | Part of the jsMath package for mathematics on the web.
 | 
 | This file is used for jsMath components when the browser doesn't
 | handle the XmlHttpRequest function, or when they must be obtained
 | from a server other than the one server the page that is using jsMath.
 | 
 | ---------------------------------------------------------------------
 | 
 | Copyright 2004-2006 by Davide P. Cervone
 |
 | Licensed under the Apache License, Version 2.0 (the "License");
 | you may not use this file except in compliance with the License.
 | You may obtain a copy of the License at
 |
 |     http://www.apache.org/licenses/LICENSE-2.0
 |
 | Unless required by applicable law or agreed to in writing, software
 | distributed under the License is distributed on an "AS IS" BASIS,
 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | See the License for the specific language governing permissions and
 | limitations under the License.
-->
</head>
<body>

<script>
var showWarning = 0;
while (!window.jsMath && !showWarning) {
  try {
    window.jsMath = window.parent.jsMath;
    if (!window.jsMath) {throw "no jsMath";}
  } catch (err) {
    showWarning = 1;
    //
    // MSIE on Mac can't change document.domain, and 'try' won't
    //   catch the error (Grrr!) so don't even try for it
    //
    if (document.domain.match(/\..*\./) &&
        (navigator.appName != 'Microsoft Internet Explorer' ||
         navigator.platform != 'MacPPC' || !navigator.userProfile || !document.all)) {
      try {
        document.domain = document.domain.replace(/^[^.]*\./,'');
        showWarning = 0;
      } catch(err) {}
    }
  }
}

function Warning () {
  alert(
    "jsMath can't load one of its required components, because jsMath " +
    "was not obtained from a server that is in the same domain as the " +
    "page that loaded it."
  );
}

if (showWarning) {setTimeout("Warning()",1)} else {
  debug = window.parent.debug; show = window.parent.show;
  jsMath.Script.window = window; url = jsMath.Script.url;
  document.write('<script src="'+url+'"><'+'/script>');
}
</script>

<script>
if (window.jsMath) {
  if (document.readyState == 'loading') {
    // work around bug in OmniWeb 4.5 that would otherwise run this twice.
    setTimeout("jsMath.Script.endLoad();",1)
  } else {
    jsMath.Script.endLoad();
  }
}
</script>

</body>
</html>

Index: loncom/html/adm/jsMath/jsMath-old-browsers.js
+++ loncom/html/adm/jsMath/jsMath-old-browsers.js
/*
 *  jsMath-old-browsers.js
 *  
 *  Part of the jsMath package for mathematics on the web.
 *
 *  This file makes changes needed by older versions of some browsers
 *
 *  ---------------------------------------------------------------------
 *
 *  Copyright 2004-2006 by Davide P. Cervone
 * 
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

jsMath.Script.Start();

jsMath.Add(jsMath.HTML,{
  /*
   *  Use the blank GIF image for spacing and rules
   */
  Blank: function (w,h,d,isRule) {
    var style = '';
    if (isRule) {
      if (h*jsMath.em < 1.5) {h = '1px'} else {h = jsMath.HTML.Em(h)}
      style = 'border-top:'+h+' solid;'; h = 0;
    }
    if (d == null) {d = 0}
    style += 'width:'+this.Em(w)+'; height:'+this.Em(h+d)+';';
    if (d) {style += 'vertical-align:'+this.Em(-d)}
    return '<img src="'+jsMath.blank+'" style="'+style+'" />';
  }
});

if (jsMath.browser == 'Konqueror') {
  
  jsMath.Package(jsMath.Box,{Remeasured: function() {return this}});

  jsMath.Add(jsMath.HTML,{
    Spacer: function (w) {
      if (w == 0) {return ''};
      return '<span style="margin-left:'+this.Em(w-jsMath.Browser.spaceWidth)+'">'
             + '&nbsp;</span>';
    }
  });

  jsMath.Browser.spaceWidth = this.EmBoxFor('&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;').w/5;

}

jsMath.styles['.typeset .spacer'] = '';
 
jsMath.Script.End();

Index: loncom/html/adm/jsMath/extensions/AMSsymbols.js
+++ loncom/html/adm/jsMath/extensions/AMSsymbols.js
/*
 *  extensions/AMSsymbol.js
 *  
 *  Part of the jsMath package for mathematics on the web.
 *
 *  This file defines the macros needed to access the AMS symbol fonts
 *  available in msam10 and msbm10.  You can activate it by calling
 *  
 *    jsMath.Extension.Require('AMSsymbols');
 *  
 *  once jsMath.js has been loaded.
 *  
 *  Note that you will need to install the msam10 and msbm10 fonts
 *  that are available from the jsMath extra font page at
 *  
 *      http://www.math.union.edu/locate/jsMath/download/extra-fonts/
 *  
 *  in order to make this work in image mode.  Note that there is no
 *  unicode fallback mode for these fonts at this time.
 *  
 *  ---------------------------------------------------------------------
 *
 *  Copyright 2006 by Davide P. Cervone
 * 
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

/********************************************************************/


delete jsMath.Parser.prototype.macros['hbar'];
delete jsMath.Parser.prototype.macros['angle'];
delete jsMath.Parser.prototype.macros['rightleftharpoons'];

jsMath.Extension.MathChar("msam10",{
  // Miscellaneous symbols
  vartriangle:        [3,0x4D],
  triangledown:       [0,0x4F],
  square:             [0,0x03],
  lozenge:            [0,0x06],
  circledS:           [0,0x73],
  angle:              [0,0x5C],
  measuredangle:      [0,0x5D],
  backprime:          [0,0x38],
  blacktriangle:      [0,0x4E],
  blacktriangledown:  [0,0x48],
  blacksquare:        [0,0x04],
  blacklozenge:       [0,0x07],
  bigstar:            [0,0x46],
  sphericalangle:     [0,0x5E],
  complement:         [0,0x7B],

  // Binary operators
  dotplus:            [2,0x75],
  Cap:                [2,0x65],
  doublecap:          [2,0x65],
  Cup:                [2,0x64],
  doublecup:          [2,0x64],
  barwedge:           [2,0x5A],
  veebar:             [2,0x59],
  doublebarwedge:     [2,0x5B],
  boxminus:           [2,0x0C],
  boxtimes:           [2,0x02],
  boxdot:             [2,0x00],
  boxplus:            [2,0x01],
  leftthreetimes:     [2,0x68],
  rightthreetimes:    [2,0x69],
  curlywedge:         [2,0x66],
  curlyvee:           [2,0x67],
  circleddash:        [2,0x7F],
  circledast:         [2,0x7E],
  circledcirc:        [2,0x7D],
  centerdot:          [2,0x05],
  intercal:           [2,0x7C],

  // Binary relations
  leqq:               [3,0x35],
  leqslant:           [3,0x36],
  eqslantless:        [3,0x30],
  lesssim:            [3,0x2E],
  lessapprox:         [3,0x2F],
  lll:                [3,0x6E],
  llless:             [3,0x6E],
  lessgtr:            [3,0x37],
  lesseqgtr:          [3,0x51],
  lesseqqgtr:         [3,0x53],
  doteqdot:           [3,0x2B],
  Doteq:              [3,0x2B],
  risingdotseq:       [3,0x3A],
  fallingdotseq:      [3,0x3B],
  backsim:            [3,0x76],
  backsimeq:          [3,0x77],
  subseteqq:          [3,0x6A],
  Subset:             [3,0x62],
  sqsubset:           [3,0x40],
  preccurlyeq:        [3,0x34],
  curlyeqprec:        [3,0x32],
  precsim:            [3,0x2D],
  vartriangleleft:    [3,0x43],
  trianglelefteq:     [3,0x45],
  vDash:              [3,0x0F],
  Vvdash:             [3,0x0E],
  smallsmile:         [3,0x60],
  smallfrown:         [3,0x61],
  bumpeq:             [3,0x6C],
  Bumpeq:             [3,0x6D],
  varpropto:          [3,0x5F],
  blacktriangleleft:  [3,0x4A],
  therefore:          [3,0x29],
  geqq:               [3,0x3D],
  geqslant:           [3,0x3E],
  eqslantgtr:         [3,0x31],
  gtrsim:             [3,0x26],
  gtrapprox:          [3,0x27],
  ggg:                [3,0x6F],
  gggtr:              [3,0x6F],
  gtrless:            [3,0x3F],
  gtreqless:          [3,0x52],
  gtreqqless:         [3,0x54],
  eqcirc:             [3,0x50],
  circeq:             [3,0x24],
  triangleq:          [3,0x2C],
  supseteqq:          [3,0x6B],
  Supset:             [3,0x63],
  sqsupset:           [3,0x41],
  succcurlyeq:        [3,0x3C],
  curlyeqsucc:        [3,0x33],
  succsim:            [3,0x25],
  vartriangleright:   [3,0x42],
  trianglerighteq:    [3,0x44],
  Vdash:              [3,0x0D],
  between:            [3,0x47],
  pitchfork:          [3,0x74],
  blacktriangleright: [3,0x49],
  because:            [3,0x2A],

  // Arrows
  leftleftarrows:     [3,0x12],
  leftrightarrows:    [3,0x1C],
  Lleftarrow:         [3,0x57],
  twoheadleftarrow:   [3,0x11],
  leftarrowtail:      [3,0x1B],
  looparrowleft:      [3,0x22],
  leftrightharpoons:  [3,0x0B],
  circlearrowleft:    [3,0x09],
  Lsh:                [3,0x1E],
  upuparrows:         [3,0x14],
  upharpoonleft:      [3,0x18],
  downharpoonleft:    [3,0x19],
  multimap:           [3,0x28],
  leftrightsquigarrow:[3,0x21],
  rightrightarrows:   [3,0x13],
  rightleftarrows:    [3,0x1D],
  Rrightarrow:        [3,0x56],
  twoheadrightarrow:  [3,0x10],
  rightarrowtail:     [3,0x1A],
  looparrowright:     [3,0x23],
  rightleftharpoons:  [3,0x0A],
  circlearrowright:   [3,0x08],
  Rsh:                [3,0x1F],
  downdownarrows:     [3,0x15],
  upharpoonright:     [3,0x16],
  downharpoonright:   [3,0x17],
  rightsquigarrow:    [3,0x20]
});

jsMath.Extension.MathChar("msbm10",{
  // Lowercase Greek letters
  digamma:            [0,0x7A],
  varkappa:           [0,0x7B],

  // Hebrew letters
  beth:               [0,0x69],
  daleth:             [0,0x6B],
  gimel:              [0,0x6A],

  // Miscellaneous symbols
  hbar:               [0,0x7E],
  hslash:             [0,0x7D],
  nexists:            [0,0x40],
  mho:                [0,0x66],
  Finv:               [0,0x60],
  Game:               [0,0x61],
  Bbbk:               [0,0x7C],
  varnothing:         [0,0x3F],
  eth:                [0,0x67],
  diagup:             [0,0x1E],
  diagdown:           [0,0x1F],

  // Binary operators
  smallsetminus:      [2,0x72],
  divideontimes:      [2,0x3E],
  ltimes:             [2,0x6E],
  rtimes:             [2,0x6F],

  // Binary relations
  approxeq:           [3,0x75],
  lessdot:            [3,0x6C],
  precapprox:         [3,0x77],
  gtrdot:             [3,0x6D],
  thicksim:           [3,0x73],
  thickapprox:        [3,0x74],
  succapprox:         [3,0x76],
  shortmid:           [3,0x70],
  shortparallel:      [3,0x71],
  backepsilon:        [3,0x7F],

  // Negated relations
  nless:              [3,0x04],
  nleq:               [3,0x02],
  nleqslant:          [3,0x0A],
  nleqq:              [3,0x14],
  lneq:               [3,0x0C],
  lneqq:              [3,0x08],
  lvertneqq:          [3,0x00],
  lnsim:              [3,0x12],
  lnapprox:           [3,0x1A],
  nprec:              [3,0x06],
  npreceq:            [3,0x0E],
  precneqq:           [3,0x16],
  precnsim:           [3,0x10],
  precnapprox:        [3,0x18],
  nsim:               [3,0x1C],
  nshortmid:          [3,0x2E],
  nmid:               [3,0x2D],
  nvdash:             [3,0x30],
  nVdash:             [3,0x31],
  ntriangleleft:      [3,0x36],
  ntrianglelefteq:    [3,0x35],
  nsubseteq:          [3,0x2A],
  nsubseteqq:         [3,0x22],
  subsetneq:          [3,0x28],
  varsubsetneq:       [3,0x20],
  subsetneqq:         [3,0x24],
  varsubsetneqq:      [3,0x26],
  ngtr:               [3,0x05],
  ngeq:               [3,0x03],
  ngeqslant:          [3,0x0B],
  ngeqq:              [3,0x15],
  gneq:               [3,0x0D],
  gneqq:              [3,0x09],
  gvertneqq:          [3,0x01],
  gnsim:              [3,0x13],
  gnapprox:           [3,0x1B],
  nsucc:              [3,0x07],
  nsucceq:            [3,0x0F],
  succneqq:           [3,0x17],
  succnsim:           [3,0x11],
  succnapprox:        [3,0x19],
  ncong:              [3,0x1D],
  nshortparallel:     [3,0x2F],
  nparallel:          [3,0x2C],
  nvDash:             [3,0x32],
  nVDash:             [3,0x33],
  ntriangleright:     [3,0x37],
  ntrianglerighteq:   [3,0x34],
  nsupseteq:          [3,0x2B],
  nsupseteqq:         [3,0x23],
  supsetneq:          [3,0x29],
  varsupsetneq:       [3,0x21],
  supsetneqq:         [3,0x25],
  varsupsetneqq:      [3,0x27],

  // Arrows
  curvearrowleft:     [3,0x78],
  curvearrowright:    [3,0x79],

  // Negated arrows
  nleftarrow:         [3,0x38],
  nLeftarrow:         [3,0x3A],
  nleftrightarrow:    [3,0x3D],
  nrightarrow:        [3,0x39],
  nRightarrow:        [3,0x3B],
  nLeftrightarrow:    [3,0x3C]
});

jsMath.Macro('Bbb','{\\msbm #1}',1);
jsMath.Extension.Font('msbm');
jsMath.Extension.Font('msam');

Index: loncom/html/adm/jsMath/extensions/HTML.js
+++ loncom/html/adm/jsMath/extensions/HTML.js
/*
 *  extensions/HTML.js
 *  
 *  Part of the jsMath package for mathematics on the web.
 *
 *  This file implements a number of HTML-specific extensions to TeX,
 *  including \color, \style, \class, \unicode, etc.  It will be loaded
 *  automatically when needed, or can be loaded by
 *  
 *    jsMath.Extension.Require('HTML');
 *
 *  ---------------------------------------------------------------------
 *
 *  Copyright 2005-2006 by Davide P. Cervone
 * 
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

/********************************************************************/

jsMath.Package(jsMath.Parser,{

  macros: {
    color:      'Color',
    href:       'Href',
    'class':    'Class',
    style:      'Style',
    cssId:      'CSSId',
    unicode:    'Unicode'
  },
  
  /*
   *  Show the argument in a particular color
   */
  Color: function (name) {
    var color = this.GetArgument(this.cmd+name); if (this.error) return;
    // check that it looks like a color?
    this.AddHTML(name,['<span style="color: '+color+'">','</span>']);
  },
  
  /*
   *  Make the argument be a link
   */
  Href: function (name) {
    var href = this.GetArgument(this.cmd+name); if (this.error) return;
    this.AddHTML(name,['<a class="link" href="'+href+'">','</a>']);
  },
  
  /*
   *  Apply a CSS class to the argument
   */
  Class: function (name) {
    var clss = this.GetArgument(this.cmd+name); if (this.error) return;
    this.AddHTML(name,['<span class="'+clss+'">','</span>']);
  },
  
  /*
   *  Apply a CSS style to the argument
   */
  Style: function (name) {
    var style = this.GetArgument(this.cmd+name); if (this.error) return;
    this.AddHTML(name,['<span style="'+style+'">','</span>']);
  },
  
  /*
   *  Add a CSS element ID to the argument
   */
  CSSId: function (name) {
    var id = this.GetArgument(this.cmd+name); if (this.error) return;
    this.AddHTML(name,['<span id="'+id+'">','</span>']);
  },
  
  /*
   *  Insert some raw HTML around the argument (this will not affect
   *  the spacing or other TeX features)
   */
  AddHTML: function (name,params) {
    var data = this.mlist.data;
    var arg = this.GetArgument(this.cmd+name); if (this.error) return;
    arg = jsMath.Parse(arg,data.font,data.size,data.style);
      if (arg.error) {this.Error(arg); return}
    this.mlist.Add(jsMath.mItem.HTML(params[0]));
    for (var i = 0; i < arg.mlist.Length(); i++) {this.mlist.Add(arg.mlist.Get(i))}
    this.mlist.Add(jsMath.mItem.HTML(params[1]));
  },
  
  /*
   *  Insert a unicode reference as an Ord atom.  Its argument should
   *  be the unicode code point, e.g. \unicode{8211}, or \unicode{x203F}.
   *  You can also specify the height and depth in ems, e.g.,
   *  \unicode{8211,.6,-.3}
   */
  Unicode: function (name) {
    var arg = this.GetArgument(this.cmd+name); if (this.error) return;
    arg = arg.split(','); arg[0] = '&#'+arg[0]+';';
    if (!arg[1]) {arg[1] = 'normal'}
    this.mlist.Add(jsMath.mItem.TextAtom('ord',arg[0],arg[1],arg[2],arg[3]));
  }

});

Index: loncom/html/adm/jsMath/extensions/boldsymbol.js
+++ loncom/html/adm/jsMath/extensions/boldsymbol.js
/*
 *  extensions/boldsymbol.js
 *  
 *  Part of the jsMath package for mathematics on the web.
 *
 *  This file implements the \boldsymbol macro.  You can activate it
 *  by calling
 *  
 *    jsMath.Extension.Macro('boldsymbol');
 *  
 *  which will cause the extension to be loaded only when it is
 *  needed, or you can force it to be loaded via
 *  
 *    jsMath.Extension.Require('boldsymbol');
 *    
 *  once jsMath.js has been loaded.
 *  
 *  Note that you will need to install the cmmib10 and cmbsy10 fonts
 *  that are available from the jsMath extra font page at
 *  
 *      http://www.math.union.edu/locate/jsMath/download/extra-fonts/
 *
 *  to make this work in image mode.  Note that there is no unicode
 *  fallback for these fonts at the moment.
 *  
 *  ---------------------------------------------------------------------
 *
 *  Copyright 2006 by Davide P. Cervone
 * 
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

/********************************************************************/

jsMath.Package(jsMath.Parser,{
  
  macros: {boldsymbol: 'BoldSymbol'},
  
  /*
   *  Implement \boldsymbol{...}
   */
  BoldSymbol: function (name) {
    var fam = jsMath.TeX.fam
    var oldfam = [fam[0],fam[1],fam[2]];
    fam[0] = "cmbx10"; fam[1] = "cmmib10"; fam[2] = "cmbsy10";
    var box = this.ProcessArg(this.cmd+name);
    fam[0] = oldfam[0]; fam[1] = oldfam[1]; fam[2] = oldfam[2];
    if (this.error) return;
    this.mlist.Add(jsMath.mItem.Atom('ord',box));
  }
  
});

Index: loncom/html/adm/jsMath/extensions/double-click.js
+++ loncom/html/adm/jsMath/extensions/double-click.js
/*
 *  extensions/double-click.js
 *  
 *  Part of the jsMath package for mathematics on the web.
 *
 *  This file allows users to double click on typeset mathematics
 *  to view the TeX source for the given expression.  It will be loaded
 *  automatically when needed, or can be loaded by
 *  
 *    jsMath.Extension.Require('double-click');
 *
 *  ---------------------------------------------------------------------
 *
 *  Copyright 2005-2006 by Davide P. Cervone
 * 
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

/********************************************************************/

jsMath.Add(jsMath.Click,{

  dragging: 0,
  
  /*
   *  Create the hidden DIV used for the tex source window
   */
  Init: function () {
    this.source = jsMath.Setup.DIV("float",{display:'none'});
    this.source.innerHTML =
        '<div class="drag"><div class="close"></div></div>'
      + '<div class="source"><span></span></div>';
    this.drag = this.source.firstChild;
    this.tex  = this.drag.nextSibling.firstChild;
    this.drag.firstChild.onclick = jsMath.Click.CloseSource;
    this.drag.onmousedown = jsMath.Click.StartDragging;
    this.drag.ondragstart = jsMath.Click.False;
    this.drag.onselectstart = jsMath.Click.False;
    this.source.onclick = jsMath.Click.CheckClose;
  },
  False: function () {return false},

  /*
   *  Handle a double-click on an equation
   */
  DblClick: function (data) {
    var event = data[0]; var TeX = data[1];
    var event = jsMath.Click.Event(event);

    var source = jsMath.Click.source
    var tex = jsMath.Click.tex;

    source.style.visibility = 'hidden';
    source.style.display = ''; source.style.width = '';
    source.style.left = ''; source.style.top = '';
    tex.innerHTML = '';

    TeX = TeX.replace(/^\s+|\s+$/g,'');
    TeX = TeX.replace(/&/g,'&amp;');
    TeX = TeX.replace(/</g,'&lt;');
    TeX = TeX.replace(/>/g,'&gt;');
    TeX = TeX.replace(/\n/g,'<br/>');
    tex.innerHTML = TeX;

    var h = source.offsetHeight; var w;
    if (jsMath.Browser.msieDivWidthBug) {
      tex.className = 'source';          // Work around MSIE bug where
      w = tex.offsetWidth + 5;           // DIV's don't collapse to
      tex.className = '';                // their natural widths
    } else {
      w = source.offsetWidth;
    }
    w = Math.max(50,Math.min(w,.8*event.W,event.W-40));
    var x = Math.floor(event.x-w/2); var y = Math.floor(event.y-h/2);
    x = event.X + Math.max(Math.min(x,event.W-w-20),20);
    y = event.Y + Math.max(Math.min(y,event.H-h-5),5);

    source.style.left = x+'px'; source.style.top = y+'px';
    source.style.width = w+'px';
    source.style.visibility = '';
    jsMath.Click.left = x + event.X; jsMath.Click.top = y + event.Y;
    jsMath.Click.w = w; jsMath.Click.h = source.offsetHeight;

    jsMath.Click.DeselectText(x,y);
    return false;
  },

  /*
   *  Get window width, height, and offsets plus
   *  position of pointer relative to the window
   */
  Event: function (event) {
    var W = jsMath.window.innerWidth  || jsMath.document.body.clientWidth;
    var H = jsMath.window.innerHeight || jsMath.document.body.clientHeight;
    var X = jsMath.window.pageXOffset; var Y = jsMath.window.pageYOffset;
    if (X == null) {
      X = jsMath.document.body.clientLeft;
      Y = jsMath.document.body.clientTop;
    }
    var x = event.pageX; var y = event.pageY;
    if (x == null) {
      x = event.clientX; y = event.clientY;
      if (jsMath.browser == 'MSIE' && jsMath.document.compatMode == 'CSS1Compat') {
        X = jsMath.document.documentElement.scrollLeft;
        Y = jsMath.document.documentElement.scrollTop;
        W = jsMath.document.documentElement.clientWidth;
        H = jsMath.document.documentElement.clientHeight;
      } else {
        X = jsMath.document.body.scrollLeft;
        Y = jsMath.document.body.scrollTop;
      }
    } else {x -= X; y -= Y}

    return {x: x, y: y, W: W, H: H, X: X, Y: Y};
  },
  
  /*
   *  Unselect whatever text is selected (since double-clicking
   *  usually selects something)
   */
  DeselectText: function (x,y) {
    if (jsMath.window.getSelection && jsMath.window.getSelection().removeAllRanges)
      {jsMath.window.getSelection().removeAllRanges()}
    else if (jsMath.document.getSelection && jsMath.document.getSelection().removeAllRanges)
      {jsMath.document.getSelection().removeAllRanges()}
    else if (jsMath.document.selection && jsMath.document.selection.empty)
      {jsMath.document.selection.empty()}
    else {
      /* Hack to deselect the text in Opera and Safari */
      if (jsMath.browser == 'MSIE') return;  // don't try it if MISE on Mac
      jsMath.hiddenTop.innerHTML =
        '<textarea style="visibility:hidden" rows="1" cols="1">a</textarea>';
      jsMath.hiddenTop.firstChild.style.position = 'absolute';
      jsMath.hiddenTop.firstChild.style.left = x+'px';
      jsMath.hiddenTop.firstChild.style.top  = y+'px';
      setTimeout(jsMath.Click.SelectHidden,1);
    }
  },
  SelectHidden: function () {
    jsMath.hiddenTop.firstChild.focus();
    jsMath.hiddenTop.firstChild.select();
    jsMath.hiddenTop.innerHTML = '';
  },

  /*
   *  Close the TeX source window
   */
  CloseSource: function () {
    jsMath.Click.tex.innerHTML = '';
    jsMath.Click.source.style.display = 'none';
    jsMath.Click.source.style.visibility = 'hidden';
    jsMath.Click.StopDragging();
    return false;
  },
  CheckClose: function (event) {
    if (!event) {event = jsMath.window.event}
    if (event.altKey) {jsMath.Click.CloseSource(); return false}
  },
  
  /*
   *  Set up for dragging the source panel
   */
  StartDragging: function (event) {
    if (!event) {event = jsMath.window.event}
    if (jsMath.Click.dragging) {jsMath.Click.StopDragging(event)}
    var event = jsMath.Click.Event(event);
    jsMath.Click.dragging = 1;
    jsMath.Click.x = event.x + 2*event.X - jsMath.Click.left;
    jsMath.Click.y = event.y + 2*event.Y - jsMath.Click.top;
    jsMath.Click.oldonmousemove = jsMath.document.body.onmousemove;
    jsMath.Click.oldonmouseup = jsMath.document.body.onmouseup;
    jsMath.document.body.onmousemove = jsMath.Click.DragSource;
    jsMath.document.body.onmouseup = jsMath.Click.StopDragging;
    return false;
  },
  
  /*
   *  Stop dragging the source window
   */
  StopDragging: function (event) {
    if (jsMath.Click.dragging) {
      jsMath.document.body.onmousemove = jsMath.Click.oldonmousemove;
      jsMath.document.body.onmouseup   = jsMath.Click.oldonmouseup;
      jsMath.Click.oldonmousemove = null;
      jsMath.Click.oldonmouseup   = null;
      jsMath.Click.dragging = 0;
    }
    return false;
  },
  
  /*
   *  Move the source window (but stay within the browser window)
   */
  DragSource: function (event) {
    if (!event) {event = jsMath.window.event}
    if (jsMath.Browser.buttonCheck && !event.button) {return jsMath.Click.StopDragging(event)}
    event = jsMath.Click.Event(event);
    var x = event.x + event.X - jsMath.Click.x;
    var y = event.y + event.Y - jsMath.Click.y;
    x = Math.max(event.X,Math.min(event.W+event.X-jsMath.Click.w,x));
    y = Math.max(event.Y,Math.min(event.H+event.Y-jsMath.Click.h,y));
    jsMath.Click.source.style.left = x + 'px';
    jsMath.Click.source.style.top  = y + 'px';
    jsMath.Click.left = x + event.X; jsMath.Click.top = y + event.Y;
    return false;
  }

});

jsMath.Click.Init();

Index: loncom/html/adm/jsMath/extensions/fbox.js
+++ loncom/html/adm/jsMath/extensions/fbox.js
/*
 *  extensions/fbox.js
 *  
 *  Part of the jsMath package for mathematics on the web.
 *
 *  This file implements the \fbox macro.  It will be loaded
 *  automatically when needed, or can be loaded by
 *  
 *    jsMath.Extension.Require('fbox');
 *
 *  ---------------------------------------------------------------------
 *
 *  Copyright 2005-2006 by Davide P. Cervone
 * 
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

/********************************************************************/

jsMath.Add(jsMath.HTML,{

  /*
   *  Create a colored frame
   */
  Frame: function (x,y,w,h,c,pos) {

    h -= 2/jsMath.em; // use 2 pixels to compensate for border size
    w -= 2/jsMath.em;
    y -= 1/jsMath.em;
    if (!c) {c = 'black'};
    if (pos) {pos = 'absolute;'} else
             {pos = 'relative; margin-right: '+this.Em(-(w+2/jsMath.em))+'; '}
    return '<img src="'+jsMath.blank+'" style="position:' + pos
             + 'vertical-align: '+this.Em(y)+'; left: '+this.Em(x)+'; '
             + 'width:' +this.Em(w*jsMath.Browser.imgScale)+'; '
             + 'height:'+this.Em(h*jsMath.Browser.imgScale)+'; '
             + 'border: 1px solid '+c+';" />';
  }

});

jsMath.Package(jsMath.Parser,{
  
  macros: {fbox: 'FBox'},
  
  /*
   *  Implement \fbox{...}
   */
  FBox: function (name) {
    var text = this.GetArgument(this.cmd+name); if (this.error) return;
    var arg = jsMath.Box.InternalMath(text,this.mlist.data.size);
    var f = 0.25 * jsMath.sizes[this.mlist.data.size]/100;
    var box = jsMath.Box.Set(arg,this.mlist.data.style,this.mlist.data.size,1).Remeasured();
    var frame = jsMath.HTML.Frame(-f,-box.d-f,box.w+2*f,box.h+box.d+2*f);
    box.html = frame + box.html + jsMath.HTML.Spacer(f);
    box.h += f; box.d += f; box.w +=2*f; box.x += f;
    box.bh = Math.max(box.bh,box.h); box.bd = Math.max(box.bd,box.d);
    this.mlist.Add(jsMath.mItem.Atom('ord',box));
  }
  
});

Index: loncom/html/adm/jsMath/extensions/leaders.js
+++ loncom/html/adm/jsMath/extensions/leaders.js
/*
 *  extensions/leaders.js
 *  
 *  Part of the jsMath package for mathematics on the web.
 *
 *  This file implements the \overbrace, \underbrace, \overrightarrow 
 *  and \overleftarrow macros. It will be loaded automatically when needed,
 *  or can be loaded by
 *  
 *    jsMath.Extension.Require('leaders');
 *
 *  ---------------------------------------------------------------------
 *
 *  Copyright 2005-2006 by Davide P. Cervone
 * 
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

/********************************************************************/

jsMath.Add(jsMath.Box,{

  /*
   *  Create a horizontally stretchable "delimiter" (like over- and
   *  underbraces).
   */
//###  Add size?
  Leaders: function (W,leader) {
    var h; var d; var w; var html; var font;
    if (leader.lmid) {// braces
      font = jsMath.TeX.fam[leader.left[0]];
      var left = this.GetCharCode(leader.left);
      var right = this.GetCharCode(leader.right);
      var lmid = this.GetCharCode(leader.lmid);
      var rmid = this.GetCharCode(leader.rmid);
      w = (W - left.w - right.w - lmid.w - rmid.w)/2 - .1; h = .4; d = .3;
      if (w < 0) {w = 0}
      html = this.AddClass(left.tclass,left.c,left.font) 
           + jsMath.HTML.Rule(w,left.h)
           + this.AddClass(lmid.tclass,lmid.c+rmid.c,lmid.font)
           + jsMath.HTML.Rule(w,right.h)
           + this.AddClass(right.tclass,right.c,right.font);
    } else { //arrows
      font = jsMath.TeX.fam[leader.rep[0]];
      var left = this.GetCharCode(leader.left? leader.left: leader.rep);
      var rep = this.GetCharCode(leader.rep);
      var right = this.GetCharCode(leader.right? leader.right: leader.rep);
      var n = Math.ceil((W - left.w - right.w + .4)/(rep.w - .3));
      w = (W - left.w - right.w + .4 - n*(rep.w - .3));
      if (leader.left) {h = left.h; d = left.d} else {h = right.h; d = right.d}
      if (d == null) {d = 0}; if (h == null) {h = 0}
      var html = this.AddClass(left.tclass,left.c,left.font); var m = Math.floor(n/2);
      var ext = jsMath.HTML.Place(rep.c,-.3,0);
      var ehtml = ''; for (var i = 0; i < m; i++) {ehtml += ext};
      html += this.AddClass(rep.tclass,ehtml,rep.font) + jsMath.HTML.Spacer(w);
      ehtml = ''; for (var i = m; i < n; i++) {ehtml += ext};
      html += this.AddClass(rep.tclass,ehtml,rep.font);
      if (jsMath.Browser.msieFontBug) {html += '<span style="display: none">x</span>'}
      html += jsMath.HTML.Place(this.AddClass(right.tclass,right.c,right.font),-.4,0);
    }
    w = jsMath.EmBoxFor(html).w;
    if (w != W) {
      w = jsMath.HTML.Spacer((W-w)/2);
      html = w + html + w;
    }
    var box = new jsMath.Box('html',html,W,h,d);
    box.bh = jsMath.TeX[font].h; box.bd = jsMath.TeX[font].d;
    return box;
  }

});

jsMath.Package(jsMath.Parser,{
  
  macros: {
    overbrace:       ['HandleLeaders','downbrace',1],
    underbrace:      ['HandleLeaders','upbrace',1,1],
    overrightarrow:  ['HandleLeaders','rightarrow'],
    overleftarrow:   ['HandleLeaders','leftarrow']
  },
  
  /*
   *  The horizontally stretchable delimiters
   */
  leaders: {
    downbrace:  {left: [3,0x7A], lmid: [3,0x7D], rmid: [3,0x7C], right: [3,0x7B]},
    upbrace:    {left: [3,0x7C], lmid: [3,0x7B], rmid: [3,0x7A], right: [3,0x7D]},
    leftarrow:  {left: [2,0x20], rep:   [2,0x00]},
    rightarrow: {rep:  [2,0x00], right: [2,0x21]}
  },

  /*
   *  Implements \overbrace, \underbrace, etc.
   */
  HandleLeaders: function (name,data) {
    var box = this.ProcessArg(this.cmd+name); if (this.error) return;
    box = jsMath.Box.Set(box,'D',this.mlist.data.size).Remeasured();
    var leader = jsMath.Box.Leaders(box.w,this.leaders[data[0]]);
    if (data[2]) {leader.y = -leader.h - box.d}
            else {leader.y = box.h + Math.max(0,leader.d)}
    box.x = -(leader.w + box.w)/2;
    var space = jsMath.Box.Space((leader.w-box.w)/2);
    box = jsMath.mItem.Atom(data[1]? 'op': 'inner',
      jsMath.Box.SetList([leader,box,space],'T',this.mlist.data.size));
    box.limits = (data[1]? 1: 0);
    this.mlist.Add(box);
  }
  
});

Index: loncom/html/adm/jsMath/extensions/mathchoice.js
+++ loncom/html/adm/jsMath/extensions/mathchoice.js
/*
 *  extensions/mathchoice.js
 *  
 *  Part of the jsMath package for mathematics on the web.
 *
 *  This file implements the 4-way math choice.  It will be loaded
 *  automatically when needed, or can be loaded by
 *  
 *    jsMath.Extension.Require('mathchoice');
 *
 *  ---------------------------------------------------------------------
 *
 *  Copyright 2005-2006 by Davide P. Cervone
 * 
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

/********************************************************************/

jsMath.Add(jsMath.mList.prototype.Atomize,{

  /*
   *  Handle a 4-way choice atom.  (Rule 4)
   */
  choice: function (style,mitem,i,mlist) {
    if (style.charAt(style.length-1) == "'") {style = style.slice(0,style.length-1)}
    var nlist = []; var M = mitem[style]; if (!M) {M = {type: 'mlist', mlist: []}}
    if (M.type == 'mlist') {
      M = M.mlist.mlist;
      for (var k = 0; k < i; k++) {nlist[k] = mlist[k]}
      for (k = 0; k < M.length; k++) {nlist[i+k] = M[k]}
      for (k = i+1; k < mlist.length; k++) {nlist[nlist.length] = mlist[k]}
      return nlist;
    } else {
      mlist[i] = jsMath.mItem.Atom('ord',M);
      return mlist;
    }
  }

});

jsMath.Package(jsMath.Parser,{

  macros: {mathchoice: 'MathChoice'},
  
  /*
   *  Implements \mathchoice{}{}{}{}
   */
  MathChoice: function (name) {
    var D  = this.ProcessArg(this.cmd+name); if (this.error) return;
    var T  = this.ProcessArg(this.cmd+name); if (this.error) return;
    var S  = this.ProcessArg(this.cmd+name); if (this.error) return;
    var SS = this.ProcessArg(this.cmd+name); if (this.error) return;
    var box = new jsMath.mItem('choice',{D: D, T: T, S: S, SS: SS});
    this.mlist.Add(new jsMath.mItem('choice',{D: D, T: T, S: S, SS: SS}));
  }

});


Index: loncom/html/adm/jsMath/extensions/mimeTeX.js
+++ loncom/html/adm/jsMath/extensions/mimeTeX.js
/*
 *  extensions/mimeTeX.js
 *  
 *  Part of the jsMath package for mathematics on the web.
 *
 *  This file loads the mimeTeX plugin, and can be called either
 *  by
 *  
 *    jsMath.Extension.Require('mimeTeX');
 *
 *  or by using
 *  
 *    \require{mimeTeX}
 * 
 *  within a typeset equation.
 *
 *  ---------------------------------------------------------------------
 *
 *  Copyright 2005-2006 by Davide P. Cervone
 * 
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

/********************************************************************/

jsMath.Script.Start();
jsMath.Setup.Script('plugins/mimeTeX.js');
jsMath.Script.End();

Index: loncom/html/adm/jsMath/extensions/moreArrows.js
+++ loncom/html/adm/jsMath/extensions/moreArrows.js
/*
 *  extensions/moreArrows.js
 *  
 *  Part of the jsMath package for mathematics on the web.
 *
 *  This file implements additional arrow macros with under- and
 *  overset labels.  It can be loaded by
 *  
 *    jsMath.Extension.Require('moreArrows');
 *
 *  or using \require{moreArrows} within a math formula.
 *
 *  ---------------------------------------------------------------------
 *
 *  Copyright 2005-2006 by Davide P. Cervone
 * 
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

/********************************************************************/

jsMath.Script.Start();

jsMath.Extension.Require('leaders');

jsMath.Package(jsMath.Parser,{

  macros: {
    xrightarrow:       ['HandleArrows','rightarrow'],
    xleftarrow:        ['HandleArrows','leftarrow'],
    xuprightharpoon:   ['HandleArrows','uprightharpoon'],
    xupleftharpoon:    ['HandleArrows','upleftharpoon'],
    xdownrightharpoon: ['HandleArrows','downrightharpoon'],
    xdownleftharpoon:  ['HandleArrows','downleftharpoon']
  },
  
  leaders: {
    upleftharpoon:    {left: [1,0x28], rep:   [2,0x00]},
    uprightharpoon:   {rep:  [2,0x00], right: [1,0x2A]},
    downleftharpoon:  {left: [1,0x29], rep:   [2,0x00]},
    downrightharpoon: {rep:  [2,0x00], right: [1,0x2B]}
  },

  HandleArrows: function (name,data) {
    var bot = this.GetBrackets(this.cmd+name); if (this.error) return;
    var top = this.ProcessArg(this.cmd+name); if (this.error) return;
    var box = jsMath.Box.Set(top,'S',this.mlist.data.size).Remeasured();
    var w = box.w;
    if (bot) {
      bot = this.Process(bot); if (this.error) return;
      var box = jsMath.Box.Set(bot,'S',this.mlist.data.size).Remeasured();
      w = Math.max(w,box.w);
    }
    var leader = jsMath.Box.Leaders(w+.75,this.leaders[data[0]]);
    box = jsMath.mItem.Atom('op',jsMath.Box.SetList([leader],'T',this.mlist.data.size));
    box.limits = 1; box.sup = top; box.sub = bot;
    this.mlist.Add(box);
  }

});

jsMath.Script.End();

Index: loncom/html/adm/jsMath/extensions/newcommand.js
+++ loncom/html/adm/jsMath/extensions/newcommand.js
/*
 *  extensions/newcommand.js
 *  
 *  Part of the jsMath package for mathematics on the web.
 *
 *  This file implements the \newcommand and \def macros.  It will be
 *  loaded automatically when needed, or can be loaded by
 *  
 *    jsMath.Extension.Require('newcommand');
 *
 *  ---------------------------------------------------------------------
 *
 *  Copyright 2005-2006 by Davide P. Cervone
 * 
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

/********************************************************************/

jsMath.Package(jsMath.Parser,{
  
  macros: {
    newcommand: 'NewCommand',
    def: 'MacroDef'
  },
  
  /*
   *  Implement \newcommand[n]{\name}{...}
   */
  NewCommand: function (name) {
    var n = this.trimSpaces(this.GetBrackets(this.cmd+name)); if (this.error) return;
    var cs = this.trimSpaces(this.GetArgument(this.cmd+name)); if (this.error) return;
    var def = this.GetArgument(this.cmd+name); if (this.error) return;
    if (n == '') {n = null}
    if (cs.charAt(0) == this.cmd) {cs = cs.substr(1)}
    if (!cs.match(/^(.|[a-z]+)$/)) {this.Error("Illegal control sequence name for "+this.cmd+name); return}
    if (n != null && !n.match(/^[0-9]+$/)) {this.Error("Illegal number of parameters specified in "+this.cmd+name); return}
    jsMath.Parser.prototype.macros[cs] = ['Macro',def,n];
  },
  
  /*
   *  Implement \def command
   */
  MacroDef: function (name) {
    var cs = this.GetCSname(this.cmd+name); if (this.error) return;
    var params = this.GetTemplate(this.cmd+name); if (this.error) return;
    var def = this.GetArgument(this.cmd+name); if (this.error) return;
    if (typeof(params) == 'number') {
      jsMath.Parser.prototype.macros[cs] = ['Macro',def,params];
    } else {
      jsMath.Parser.prototype.macros[cs] = ['MacroWithTemplate',def,params[0],params[1]];
    }
  },

  /*
   *  Get a CS name or give an error
   */
  GetCSname: function (cmd) {
    var c = this.GetNext();
    if (c != this.cmd) {this.Error(cmd+" must be followed by a control sequence"); return null}
    var cs = this.trimSpaces(this.GetArgument(cmd)); if (this.error) {return null};
    return cs.substr(1);
  },
  
  /*
   *  Get a \def parameter template
   */
  GetTemplate: function (cmd) {
    var c; var params = []; var n = 0;
    c = this.GetNext(); var i = this.i;
    while (this.i < this.string.length) {
      c = this.GetNext();
      if (c == '#') {
        if (i != this.i) {params[n] = this.string.substr(i,this.i-i)}
        c = this.string.charAt(++this.i);
        if (!c.match(/[1-9]/)) {this.Error("Illegal use of # in "+cmd); return null}
        if (1*c != ++n) {this.Error("Parameters must be numbered sequentially"); return null}
        i = this.i+1;
      } else if (c == '{') {
        if (i != this.i) {params[n] = this.string.substr(i,this.i-i)}
        if (params.length > 0) {return [n,params]} else {return n}
      }
      this.i++;
    }
    this.Error("Missing replacement string for definition of "+cmd);
    return null;
  },
  
  /*
   *  Process a macro with a parameter template
   */
  MacroWithTemplate: function (name,data) {
    var text = data[0];
    var n = data[1]; var params = data[2];
    if (n) {
      var args = []; var c = this.GetNext();
      if (params[0] && !this.MatchParam(params[0]))
        {this.Error("Use of "+this.cmd+name+" doesn't match its definition"); return}
      for (var i = 0; i < n; i++) {
        args[args.length] = this.GetParameter(this.cmd+name,params[i+1]);
        if (this.error) return;
      }
      text = this.SubstituteArgs(args,text);
    }
    this.string = this.AddArgs(text,this.string.slice(this.i));
    this.i = 0;
  },

  /*
   *  Find a single parameter delimited by a trailing template
   */
  GetParameter: function (name,param) {
    if (param == null) {return this.GetArgument(name)}
    var i = this.i; var j = 0; var hasBraces = 0;
    while (this.i < this.string.length) {
      if (this.string.charAt(this.i) == '{') {
        if (this.i == i) {hasBraces = 1}
        this.GetArgument(name); j = this.i - i;
      } else if (this.MatchParam(param)) {
        if (hasBraces) {i++; j -= 2}
        return this.string.substr(i,j);
      } else {
        this.i++; j++; hasBraces = 0;
      }
    }
    this.Error("Runaway argument for "+name+"?");
    return null;
  },

  /*
   *  Check if a template is at the current location.
   *  (The match must be exact, with no spacing differences.  TeX is
   *   a little more forgiving about spaces after macro names)
   */
  MatchParam: function (param) {
    if (this.string.substr(this.i,param.length) != param) {return 0}
    this.i += param.length;
    return 1;
  }
  
});

Index: loncom/html/adm/jsMath/extensions/underset-overset.js
+++ loncom/html/adm/jsMath/extensions/underset-overset.js
/*
 *  extensions/underset-overset.js
 *  
 *  Part of the jsMath package for mathematics on the web.
 *
 *  This file implements \underset and \overset macros.  It will be loaded
 *  automatically when needed, or can be loaded by
 *  
 *    jsMath.Extension.Require('underset-overset');
 *  
 *  ---------------------------------------------------------------------
 *
 *  Copyright 200-20065 by Davide P. Cervone
 * 
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

/********************************************************************/

jsMath.Package(jsMath.Parser,{

  macros: {
    overset:            'Overset',
    underset:           'Underset'
  },
  
  Overset: function (name) {
    var top = this.ProcessArg(this.cmd+name); if (this.error) return;
    var bot = this.ProcessArg(this.cmd+name); if (this.error) return;
    var op = jsMath.mItem.Atom('op',bot);
    op.limits = 1; op.sup = top;
    this.mlist.Add(op);
  },

  Underset: function (name) {
    var bot = this.ProcessArg(this.cmd+name); if (this.error) return;
    var top = this.ProcessArg(this.cmd+name); if (this.error) return;
    var op = jsMath.mItem.Atom('op',top);
    op.limits = 1; op.sub = bot;
    this.mlist.Add(op);
  }

});

Index: loncom/html/adm/jsMath/uncompressed/def.js
+++ loncom/html/adm/jsMath/uncompressed/def.js
jsMath.Img.AddFont(50,{
  cmr10: [
    [5,5,0], [6,6,0], [6,6,1], [5,6,0], [5,5,0], [6,5,0], [5,5,0], [6,5,0],
    [5,5,0], [6,5,0], [5,5,0], [5,5,0], [4,5,0], [4,5,0], [6,5,0], [6,5,0],
    [2,4,0], [3,6,2], [3,2,-3], [3,2,-3], [3,2,-3], [3,2,-3], [4,2,-3], [4,3,-3],
    [3,3,2], [4,6,1], [5,5,1], [6,5,1], [4,5,1], [7,5,0], [7,6,1], [6,7,1],
    [2,2,-1], [2,6,0], [3,3,-2], [6,7,2], [4,7,1], [6,7,1], [6,7,1], [2,3,-2],
    [3,8,2], [3,8,2], [4,4,-2], [6,6,1], [2,3,2], [2,1,-1], [2,1,0], [4,8,2],
    [4,6,1], [3,5,0], [4,5,0], [4,6,1], [4,5,0], [4,6,1], [4,6,1], [4,6,1],
    [4,6,1], [4,6,1], [2,4,0], [2,6,2], [2,6,2], [6,3,0], [3,6,2], [3,5,0],
    [6,6,1], [6,6,0], [5,5,0], [5,6,1], [5,5,0], [5,5,0], [5,5,0], [6,6,1],
    [6,5,0], [3,5,0], [4,6,1], [6,5,0], [5,5,0], [7,5,0], [6,5,0], [6,6,1],
    [5,5,0], [6,7,2], [6,6,1], [4,6,1], [5,5,0], [6,6,1], [6,6,1], [8,6,1],
    [6,5,0], [6,5,0], [4,5,0], [2,8,2], [4,3,-2], [2,8,2], [3,2,-3], [2,2,-3],
    [2,3,-2], [4,5,1], [4,6,1], [3,5,1], [4,6,1], [3,5,1], [3,5,0], [4,6,2],
    [4,5,0], [2,5,0], [3,7,2], [4,5,0], [2,5,0], [6,4,0], [4,4,0], [4,5,1],
    [4,6,2], [4,6,2], [3,4,0], [3,5,1], [3,6,1], [4,5,1], [4,5,1], [5,5,1],
    [4,4,0], [4,6,2], [3,4,0], [4,1,-1], [7,1,-1], [3,2,-3], [3,1,-4], [3,2,-3]
  ],
  cmmi10: [
    [6,5,0], [6,6,0], [6,6,1], [5,6,0], [6,5,0], [7,5,0], [6,5,0], [5,5,0],
    [5,5,0], [5,5,0], [6,5,0], [5,5,1], [5,7,2], [4,6,2], [4,6,1], [3,5,1],
    [4,7,2], [4,6,2], [4,6,1], [3,5,1], [4,5,1], [4,6,1], [4,6,2], [4,4,0],
    [4,7,2], [4,5,1], [4,6,2], [4,5,1], [4,5,1], [4,5,1], [5,7,2], [5,6,2],
    [5,7,2], [5,5,1], [3,5,1], [4,6,1], [6,5,1], [4,6,2], [3,5,1], [5,6,2],
    [7,3,-1], [7,3,1], [7,3,-1], [7,3,1], [2,3,-1], [2,3,-1], [4,5,1], [4,5,1],
    [4,5,1], [3,4,0], [4,4,0], [4,6,2], [4,6,2], [4,6,2], [4,6,1], [4,6,2],
    [4,6,1], [4,6,2], [2,1,0], [2,3,2], [5,5,1], [4,8,2], [5,5,1], [4,4,0],
    [4,7,1], [6,6,0], [6,5,0], [6,6,1], [6,5,0], [6,5,0], [6,5,0], [6,6,1],
    [7,5,0], [4,5,0], [5,6,1], [7,5,0], [5,5,0], [8,5,0], [7,5,0], [6,6,1],
    [6,5,0], [6,7,2], [6,6,1], [5,6,1], [5,5,0], [6,6,1], [6,6,1], [8,6,1],
    [6,5,0], [6,5,0], [6,5,0], [3,7,1], [3,8,2], [3,8,2], [7,3,0], [7,3,0],
    [3,6,1], [4,5,1], [3,6,1], [4,5,1], [4,6,1], [4,5,1], [4,7,2], [4,6,2],
    [4,6,1], [3,6,1], [4,7,2], [4,6,1], [2,6,1], [6,5,1], [4,5,1], [4,5,1],
    [5,6,2], [4,6,2], [4,5,1], [3,5,1], [3,6,1], [4,5,1], [4,5,1], [5,5,1],
    [4,5,1], [4,6,2], [4,5,1], [3,5,1], [4,6,2], [5,6,2], [5,2,-3], [5,2,-3]
  ],
  cmsy10: [
    [5,1,-1], [2,2,-1], [5,4,0], [4,4,0], [6,5,1], [4,4,0], [6,5,0], [6,6,2],
    [6,6,1], [6,6,1], [6,6,1], [6,6,1], [6,6,1], [7,8,2], [4,4,0], [4,4,0],
    [6,4,0], [6,4,0], [5,6,1], [5,6,1], [5,6,1], [5,6,1], [5,6,1], [5,6,1],
    [6,3,0], [6,4,0], [5,5,1], [5,5,1], [7,5,1], [7,5,1], [5,5,1], [5,5,1],
    [7,3,0], [7,3,0], [3,7,2], [3,7,2], [7,3,0], [7,7,2], [7,7,2], [6,4,0],
    [7,5,1], [7,5,1], [5,7,2], [5,7,2], [7,5,1], [7,7,2], [7,7,2], [6,5,1],
    [2,4,0], [7,5,1], [5,5,1], [5,5,1], [6,6,0], [6,6,2], [5,8,2], [1,4,0],
    [4,6,1], [4,5,0], [5,3,0], [4,7,1], [5,7,1], [5,6,1], [6,5,0], [6,5,0],
    [4,5,0], [6,7,1], [5,6,1], [4,6,1], [6,5,0], [4,6,1], [6,6,1], [5,6,1],
    [6,6,1], [6,5,0], [6,6,1], [6,6,1], [5,6,1], [8,6,1], [8,7,1], [6,6,1],
    [6,6,1], [6,6,1], [6,6,1], [5,6,1], [6,6,0], [6,6,1], [5,6,1], [8,6,1],
    [6,5,0], [6,6,1], [6,5,0], [5,6,1], [5,6,1], [5,6,1], [5,6,1], [5,6,1],
    [4,5,0], [4,5,0], [3,8,2], [2,8,2], [3,8,2], [2,8,2], [3,8,2], [3,8,2],
    [3,8,2], [2,8,2], [2,8,2], [3,8,2], [3,8,2], [5,8,2], [4,8,2], [2,6,1],
    [6,8,7], [5,5,0], [6,6,1], [4,8,2], [5,5,0], [5,5,0], [5,6,1], [5,6,1],
    [3,7,2], [3,7,2], [3,7,2], [5,7,2], [6,7,1], [6,8,2], [6,7,1], [6,7,1]
  ],
  cmex10: [
    [3,10,9], [3,10,9], [3,10,9], [2,10,9], [4,10,9], [2,10,9], [4,10,9], [2,10,9],
    [4,10,9], [4,10,9], [3,10,9], [3,10,9], [2,6,5], [3,6,5], [4,10,9], [4,10,9],
    [4,14,13], [3,14,13], [5,18,17], [4,18,17], [4,18,17], [2,18,17], [4,18,17], [3,18,17],
    [4,18,17], [3,18,17], [5,18,17], [5,18,17], [5,18,17], [5,18,17], [7,18,17], [7,18,17],
    [6,22,21], [4,22,21], [4,22,21], [3,22,21], [5,22,21], [3,22,21], [5,22,21], [3,22,21],
    [5,22,21], [5,22,21], [5,22,21], [5,22,21], [9,22,21], [9,22,21], [6,14,13], [6,14,13],
    [6,14,13], [5,14,13], [5,14,13], [3,14,13], [5,14,13], [3,14,13], [3,6,5], [3,6,5],
    [6,8,7], [4,8,7], [6,8,7], [4,8,7], [4,14,13], [6,14,13], [4,4,3], [3,6,5],
    [6,14,13], [5,14,13], [3,6,5], [5,6,5], [4,14,13], [4,14,13], [6,8,7], [8,11,10],
    [5,9,8], [7,17,16], [8,8,7], [11,11,10], [8,8,7], [11,11,10], [8,8,7], [11,11,10],
    [7,8,7], [7,8,7], [5,9,8], [6,8,7], [6,8,7], [6,8,7], [6,8,7], [6,8,7],
    [10,11,10], [9,11,10], [7,17,16], [8,11,10], [8,11,10], [8,11,10], [8,11,10], [8,11,10],
    [7,8,7], [9,11,10], [5,3,-3], [9,2,-4], [12,2,-4], [4,2,-4], [7,2,-4], [11,2,-4],
    [4,14,13], [2,14,13], [4,14,13], [3,14,13], [4,14,13], [3,14,13], [4,14,13], [4,14,13],
    [8,10,9], [8,14,13], [8,18,17], [8,22,21], [6,14,13], [6,6,5], [8,6,5], [4,6,5],
    [4,6,5], [4,6,5], [5,3,2], [5,3,2], [5,3,0], [5,3,0], [6,6,5], [6,6,5]
  ],
  cmbx10: [
    [5,5,0], [7,5,0], [6,6,1], [6,5,0], [6,5,0], [7,5,0], [6,5,0], [6,5,0],
    [6,5,0], [6,5,0], [6,5,0], [6,5,0], [5,5,0], [5,5,0], [7,5,0], [7,5,0],
    [2,4,0], [3,6,2], [3,2,-3], [4,2,-3], [4,2,-3], [4,2,-3], [4,2,-3], [4,2,-3],
    [4,3,2], [4,6,1], [6,5,1], [7,5,1], [4,5,1], [8,5,0], [8,6,1], [6,7,1],
    [3,2,-1], [2,5,0], [4,3,-2], [7,7,2], [4,7,1], [7,7,1], [6,6,1], [2,3,-2],
    [3,8,2], [3,8,2], [4,4,-2], [6,6,1], [2,4,2], [3,1,-1], [2,2,0], [4,8,2],
    [4,6,1], [4,5,0], [4,5,0], [4,6,1], [4,5,0], [4,6,1], [4,6,1], [4,6,1],
    [4,6,1], [4,6,1], [2,4,0], [2,6,2], [2,6,2], [6,3,0], [4,6,2], [4,5,0],
    [6,6,1], [6,5,0], [6,5,0], [6,6,1], [6,5,0], [6,5,0], [5,5,0], [6,6,1],
    [7,5,0], [3,5,0], [4,6,1], [6,5,0], [5,5,0], [8,5,0], [7,5,0], [6,6,1],
    [6,5,0], [6,7,2], [6,6,1], [5,6,1], [6,5,0], [6,6,1], [6,6,1], [9,6,1],
    [6,5,0], [6,5,0], [5,5,0], [3,8,2], [4,3,-2], [2,8,2], [4,2,-3], [2,2,-3],
    [2,3,-2], [4,5,1], [5,6,1], [4,5,1], [5,6,1], [4,5,1], [4,5,0], [4,6,2],
    [5,5,0], [2,5,0], [3,7,2], [5,5,0], [3,5,0], [7,4,0], [5,4,0], [4,5,1],
    [5,6,2], [5,6,2], [4,4,0], [3,5,1], [3,6,1], [5,5,1], [5,5,1], [6,5,1],
    [5,4,0], [5,6,2], [4,4,0], [5,2,-1], [9,2,-1], [4,2,-3], [4,1,-4], [4,2,-3]
  ],
  cmti10: [
    [5,5,0], [6,6,0], [6,6,1], [5,6,0], [6,5,0], [6,5,0], [6,5,0], [6,5,0],
    [6,5,0], [6,5,0], [6,5,0], [7,7,2], [6,7,2], [6,7,2], [8,7,2], [8,7,2],
    [3,5,1], [4,6,2], [4,2,-3], [4,2,-3], [4,2,-3], [4,2,-3], [4,2,-3], [5,3,-3],
    [3,3,2], [6,7,2], [6,5,1], [6,5,1], [4,5,1], [7,5,0], [8,6,1], [6,7,1],
    [3,2,-1], [3,6,0], [4,3,-2], [6,7,2], [5,6,1], [6,7,1], [6,7,1], [3,3,-2],
    [4,8,2], [3,8,2], [5,4,-2], [6,5,1], [2,3,2], [3,1,-1], [2,1,0], [5,8,2],
    [4,6,1], [4,5,0], [4,6,1], [4,6,1], [4,7,2], [4,6,1], [4,6,1], [5,6,1],
    [4,6,1], [4,6,1], [3,4,0], [3,6,2], [3,6,2], [6,3,0], [4,6,2], [4,6,0],
    [6,6,1], [5,6,0], [6,5,0], [6,6,1], [6,5,0], [6,5,0], [6,5,0], [6,6,1],
    [6,5,0], [4,5,0], [5,6,1], [7,5,0], [5,5,0], [8,5,0], [6,5,0], [6,6,1],
    [6,5,0], [6,7,2], [6,6,1], [5,6,1], [6,5,0], [6,6,1], [7,6,1], [8,6,1],
    [6,5,0], [7,5,0], [5,5,0], [4,8,2], [5,3,-2], [4,8,2], [4,2,-3], [3,2,-3],
    [3,3,-2], [4,5,1], [4,6,1], [4,5,1], [4,6,1], [4,5,1], [5,7,2], [4,6,2],
    [4,6,1], [3,6,1], [4,7,2], [4,6,1], [3,6,1], [6,5,1], [5,5,1], [4,5,1],
    [4,6,2], [4,6,2], [4,5,1], [3,5,1], [3,6,1], [4,5,1], [4,5,1], [5,5,1],
    [4,5,1], [4,6,2], [4,5,1], [4,1,-1], [8,1,-1], [5,2,-3], [4,2,-3], [4,2,-3]
  ]
});

jsMath.Img.AddFont(60,{
  cmr10: [
    [5,6,0], [7,6,0], [6,7,1], [6,6,0], [5,6,0], [6,6,0], [6,6,0], [6,6,0],
    [6,6,0], [6,6,0], [6,6,0], [6,6,0], [5,6,0], [5,6,0], [7,6,0], [7,6,0],
    [2,4,0], [3,6,2], [3,2,-4], [4,2,-4], [4,2,-4], [4,2,-4], [4,1,-4], [4,2,-4],
    [3,3,2], [4,7,1], [6,5,1], [6,5,1], [4,6,1], [7,6,0], [8,7,1], [6,7,1],
    [3,2,-2], [2,6,0], [3,3,-3], [7,8,2], [4,7,1], [7,7,1], [6,7,1], [2,3,-3],
    [3,8,2], [3,8,2], [4,4,-2], [6,6,1], [2,3,2], [3,1,-1], [2,1,0], [4,8,2],
    [4,7,1], [4,6,0], [4,6,0], [4,7,1], [4,6,0], [4,7,1], [4,7,1], [4,7,1],
    [4,7,1], [4,7,1], [2,4,0], [2,6,2], [2,6,2], [6,2,-1], [4,6,2], [4,6,0],
    [6,7,1], [6,6,0], [6,6,0], [6,7,1], [6,6,0], [6,6,0], [5,6,0], [6,7,1],
    [6,6,0], [3,6,0], [4,7,1], [6,6,0], [5,6,0], [8,6,0], [6,6,0], [6,7,1],
    [5,6,0], [6,8,2], [6,7,1], [4,7,1], [6,6,0], [6,7,1], [6,7,1], [9,7,1],
    [6,6,0], [6,6,0], [5,6,0], [3,8,2], [4,3,-3], [2,8,2], [4,2,-4], [2,2,-4],
    [2,3,-3], [4,5,1], [5,7,1], [4,5,1], [5,7,1], [4,5,1], [3,6,0], [4,6,2],
    [5,6,0], [2,6,0], [3,8,2], [5,6,0], [3,6,0], [7,4,0], [5,4,0], [4,5,1],
    [5,6,2], [5,6,2], [3,4,0], [3,5,1], [3,6,1], [5,5,1], [5,5,1], [6,5,1],
    [5,4,0], [5,6,2], [4,4,0], [4,1,-2], [8,1,-2], [4,2,-4], [4,2,-4], [4,2,-4]
  ],
  cmmi10: [
    [6,6,0], [7,6,0], [6,7,1], [6,6,0], [7,6,0], [8,6,0], [7,6,0], [6,6,0],
    [6,6,0], [6,6,0], [7,6,0], [5,5,1], [5,8,2], [5,6,2], [4,7,1], [4,5,1],
    [4,8,2], [4,6,2], [4,7,1], [3,5,1], [5,5,1], [5,7,1], [5,6,2], [5,4,0],
    [4,8,2], [5,5,1], [5,6,2], [5,5,1], [5,5,1], [5,5,1], [5,8,2], [5,6,2],
    [6,8,2], [5,5,1], [4,5,1], [5,7,1], [7,5,1], [5,6,2], [4,5,1], [5,6,2],
    [8,4,-1], [8,4,1], [8,4,-1], [8,4,1], [2,3,-1], [2,3,-1], [4,6,1], [4,6,1],
    [4,5,1], [4,4,0], [4,4,0], [4,6,2], [4,6,2], [4,6,2], [4,7,1], [4,6,2],
    [4,7,1], [4,6,2], [2,1,0], [2,3,2], [6,6,1], [4,8,2], [6,6,1], [4,4,0],
    [5,7,1], [6,6,0], [7,6,0], [7,7,1], [7,6,0], [7,6,0], [7,6,0], [7,7,1],
    [8,6,0], [4,6,0], [6,7,1], [8,6,0], [6,6,0], [9,6,0], [8,6,0], [6,7,1],
    [7,6,0], [6,8,2], [7,7,1], [6,7,1], [6,6,0], [7,7,1], [7,7,1], [9,7,1],
    [7,6,0], [7,6,0], [6,6,0], [3,7,1], [3,8,2], [3,8,2], [8,2,-1], [8,3,-1],
    [4,7,1], [4,5,1], [4,7,1], [4,5,1], [5,7,1], [4,5,1], [5,8,2], [4,6,2],
    [5,7,1], [3,7,1], [5,8,2], [5,7,1], [3,7,1], [7,5,1], [5,5,1], [4,5,1],
    [5,6,2], [4,6,2], [4,5,1], [4,5,1], [3,7,1], [5,5,1], [4,5,1], [6,5,1],
    [5,5,1], [4,6,2], [4,5,1], [3,5,1], [4,6,2], [5,6,2], [5,2,-4], [6,2,-4]
  ],
  cmsy10: [
    [6,2,-1], [2,2,-1], [6,4,0], [4,4,0], [6,6,1], [4,4,0], [6,6,0], [6,6,2],
    [6,6,1], [6,6,1], [6,6,1], [6,6,1], [6,6,1], [8,8,2], [4,4,0], [4,4,0],
    [6,4,0], [6,4,0], [6,8,2], [6,8,2], [6,8,2], [6,8,2], [6,8,2], [6,8,2],
    [6,2,-1], [6,4,0], [6,6,1], [6,6,1], [8,6,1], [8,6,1], [6,6,1], [6,6,1],
    [8,4,0], [8,4,0], [4,8,2], [4,8,2], [8,4,0], [8,8,2], [8,8,2], [6,4,0],
    [8,6,1], [8,6,1], [5,8,2], [5,8,2], [8,6,1], [8,8,2], [8,8,2], [6,5,1],
    [3,5,0], [8,5,1], [5,6,1], [5,6,1], [7,6,0], [7,6,2], [6,8,2], [1,4,0],
    [5,7,1], [4,6,0], [5,3,0], [4,8,1], [6,7,1], [6,7,1], [6,6,0], [6,6,0],
    [5,6,0], [7,7,1], [6,7,1], [5,7,1], [7,6,0], [5,7,1], [7,7,1], [5,7,1],
    [7,7,1], [7,6,0], [7,7,1], [6,7,1], [6,7,1], [9,7,1], [9,8,1], [7,7,1],
    [6,7,1], [7,7,1], [7,7,1], [6,7,1], [7,6,0], [7,7,1], [6,7,1], [9,7,1],
    [7,6,0], [6,8,2], [7,6,0], [5,6,1], [5,6,1], [5,6,1], [5,6,1], [5,6,1],
    [5,6,0], [5,6,0], [4,8,2], [3,8,2], [4,8,2], [3,8,2], [4,8,2], [4,8,2],
    [3,8,2], [3,8,2], [2,8,2], [3,8,2], [4,10,3], [5,10,3], [4,8,2], [2,6,1],
    [7,9,8], [6,6,0], [7,7,1], [4,8,2], [5,5,0], [5,5,0], [6,8,2], [6,8,2],
    [3,8,2], [4,8,2], [4,8,2], [5,8,2], [6,8,2], [6,8,2], [6,7,1], [6,8,2]
  ],
  cmex10: [
    [4,11,10], [3,11,10], [4,11,10], [2,11,10], [4,11,10], [3,11,10], [4,11,10], [3,11,10],
    [4,11,10], [4,11,10], [4,11,10], [3,11,10], [2,6,5], [4,6,5], [5,11,10], [5,11,10],
    [5,16,15], [4,16,15], [6,20,19], [5,20,19], [5,20,19], [3,20,19], [5,20,19], [3,20,19],
    [5,20,19], [3,20,19], [5,20,19], [5,20,19], [6,20,19], [5,20,19], [8,20,19], [8,20,19],
    [7,25,24], [5,25,24], [5,25,24], [3,25,24], [6,25,24], [3,25,24], [6,25,24], [3,25,24],
    [6,25,24], [6,25,24], [6,25,24], [6,25,24], [10,25,24], [10,25,24], [7,16,15], [7,16,15],
    [7,16,15], [5,16,15], [6,16,15], [3,16,15], [6,16,15], [3,16,15], [4,6,5], [3,6,5],
    [6,9,8], [5,9,8], [6,9,8], [5,9,8], [5,16,15], [6,16,15], [5,4,3], [3,6,5],
    [7,16,15], [5,16,15], [4,6,5], [5,6,5], [5,16,15], [4,16,15], [7,9,8], [9,13,12],
    [5,10,9], [8,19,18], [9,9,8], [12,13,12], [9,9,8], [12,13,12], [9,9,8], [12,13,12],
    [8,9,8], [8,9,8], [5,10,9], [7,9,8], [7,9,8], [7,9,8], [7,9,8], [7,9,8],
    [12,13,12], [10,13,12], [8,19,18], [9,13,12], [9,13,12], [9,13,12], [9,13,12], [9,13,12],
    [8,9,8], [10,13,12], [6,2,-4], [10,3,-4], [13,3,-4], [5,2,-4], [8,2,-4], [12,2,-4],
    [4,16,15], [2,16,15], [5,16,15], [3,16,15], [5,16,15], [3,16,15], [5,16,15], [5,16,15],
    [9,11,10], [9,16,15], [9,20,19], [9,25,24], [6,16,15], [6,6,5], [9,6,5], [5,6,5],
    [5,6,5], [5,6,5], [5,3,2], [5,3,2], [5,3,0], [5,3,0], [6,6,5], [6,6,5]
  ],
  cmbx10: [
    [6,6,0], [8,6,0], [7,7,1], [7,6,0], [6,6,0], [7,6,0], [7,6,0], [7,6,0],
    [7,6,0], [7,6,0], [7,6,0], [6,6,0], [5,6,0], [5,6,0], [8,6,0], [8,6,0],
    [3,4,0], [4,6,2], [3,2,-4], [4,2,-4], [4,2,-4], [4,2,-4], [4,1,-4], [5,2,-4],
    [4,3,2], [5,7,1], [7,5,1], [7,5,1], [5,6,1], [9,6,0], [10,7,1], [7,7,1],
    [3,2,-2], [3,6,0], [4,4,-2], [8,8,2], [5,7,1], [8,7,1], [7,7,1], [3,4,-2],
    [4,8,2], [3,8,2], [4,4,-2], [7,8,2], [2,4,2], [3,2,-1], [2,2,0], [5,8,2],
    [5,7,1], [4,6,0], [5,6,0], [5,7,1], [5,6,0], [5,7,1], [5,7,1], [5,7,1],
    [5,7,1], [5,7,1], [2,4,0], [2,6,2], [3,6,2], [7,4,0], [4,6,2], [4,6,0],
    [7,7,1], [7,6,0], [7,6,0], [7,7,1], [7,6,0], [6,6,0], [6,6,0], [7,7,1],
    [7,6,0], [4,6,0], [5,7,1], [7,6,0], [6,6,0], [9,6,0], [7,6,0], [7,7,1],
    [6,6,0], [7,8,2], [7,7,1], [5,7,1], [7,6,0], [7,7,1], [7,7,1], [10,7,1],
    [7,6,0], [7,6,0], [6,6,0], [3,8,2], [5,4,-2], [2,8,2], [4,2,-4], [2,2,-4],
    [2,4,-2], [5,5,1], [5,7,1], [4,5,1], [5,7,1], [4,5,1], [4,6,0], [5,6,2],
    [5,6,0], [3,6,0], [4,8,2], [5,6,0], [3,6,0], [8,4,0], [5,4,0], [5,5,1],
    [5,6,2], [5,6,2], [4,4,0], [4,5,1], [4,7,1], [5,5,1], [5,5,1], [7,5,1],
    [5,4,0], [5,6,2], [4,4,0], [5,1,-2], [10,1,-2], [4,2,-4], [4,2,-4], [4,2,-4]
  ],
  cmti10: [
    [6,6,0], [7,6,0], [7,7,1], [6,6,0], [7,6,0], [7,6,0], [7,6,0], [7,6,0],
    [6,6,0], [7,6,0], [7,6,0], [8,8,2], [6,8,2], [7,8,2], [9,8,2], [9,8,2],
    [3,5,1], [4,6,2], [4,2,-4], [5,2,-4], [5,2,-4], [5,2,-4], [5,1,-4], [6,2,-4],
    [3,3,2], [6,8,2], [6,5,1], [6,5,1], [5,6,1], [8,6,0], [9,7,1], [7,7,1],
    [3,2,-2], [3,6,0], [5,3,-3], [7,8,2], [6,7,1], [7,7,1], [7,7,1], [3,3,-3],
    [5,8,2], [4,8,2], [5,4,-2], [7,6,1], [2,3,2], [3,1,-1], [2,1,0], [5,8,2],
    [5,7,1], [4,6,0], [5,7,1], [5,7,1], [4,8,2], [5,7,1], [5,7,1], [5,7,1],
    [5,7,1], [5,7,1], [3,4,0], [3,6,2], [3,6,2], [7,2,-1], [4,6,2], [5,6,0],
    [7,7,1], [6,6,0], [6,6,0], [7,7,1], [7,6,0], [6,6,0], [6,6,0], [7,7,1],
    [7,6,0], [5,6,0], [5,7,1], [7,6,0], [5,6,0], [9,6,0], [7,6,0], [7,7,1],
    [6,6,0], [7,8,2], [6,7,1], [6,7,1], [7,6,0], [7,7,1], [7,7,1], [9,7,1],
    [7,6,0], [7,6,0], [6,6,0], [4,8,2], [5,3,-3], [4,8,2], [5,2,-4], [3,2,-4],
    [3,3,-3], [5,5,1], [4,7,1], [4,5,1], [5,7,1], [4,5,1], [5,8,2], [4,6,2],
    [5,7,1], [3,7,1], [4,8,2], [5,7,1], [3,7,1], [7,5,1], [5,5,1], [5,5,1],
    [5,6,2], [4,6,2], [4,5,1], [4,5,1], [3,7,1], [5,5,1], [4,5,1], [6,5,1],
    [5,5,1], [5,6,2], [4,5,1], [5,1,-2], [9,1,-2], [5,2,-4], [5,2,-4], [5,2,-4]
  ]
});

jsMath.Img.AddFont(70,{
  cmr10: [
    [6,7,0], [8,8,0], [8,9,1], [7,8,0], [7,7,0], [8,7,0], [7,7,0], [8,8,0],
    [7,7,0], [8,7,0], [7,8,0], [7,8,0], [6,8,0], [6,8,0], [9,8,0], [9,8,0],
    [3,5,0], [4,8,3], [3,2,-5], [4,2,-5], [4,2,-5], [4,2,-5], [5,1,-5], [5,3,-5],
    [4,4,3], [5,9,1], [7,6,1], [8,6,1], [5,8,2], [9,7,0], [10,9,1], [8,9,1],
    [3,2,-2], [2,8,0], [4,4,-3], [8,9,2], [5,9,1], [8,9,1], [8,9,1], [3,4,-3],
    [4,11,3], [3,11,3], [5,5,-3], [8,7,1], [3,4,2], [3,2,-1], [2,2,0], [5,11,3],
    [5,8,1], [5,7,0], [5,7,0], [5,8,1], [5,7,0], [5,8,1], [5,8,1], [5,8,1],
    [5,8,1], [5,8,1], [2,5,0], [2,7,2], [2,8,3], [8,3,-1], [5,8,3], [5,8,0],
    [8,9,1], [8,8,0], [7,7,0], [7,9,1], [8,7,0], [7,7,0], [7,7,0], [8,9,1],
    [8,7,0], [4,7,0], [5,8,1], [8,7,0], [6,7,0], [9,7,0], [8,7,0], [8,9,1],
    [7,7,0], [8,10,2], [8,8,1], [5,9,1], [7,7,0], [8,8,1], [8,8,1], [11,8,1],
    [8,7,0], [8,7,0], [6,7,0], [3,11,3], [5,4,-3], [2,11,3], [4,2,-5], [2,2,-5],
    [2,4,-3], [5,6,1], [6,8,1], [5,6,1], [6,8,1], [5,6,1], [4,8,0], [5,8,3],
    [6,7,0], [3,7,0], [4,10,3], [6,7,0], [3,7,0], [9,5,0], [6,5,0], [5,6,1],
    [6,7,2], [6,7,2], [4,5,0], [4,6,1], [4,8,1], [6,6,1], [6,6,1], [8,6,1],
    [6,5,0], [6,8,3], [5,5,0], [5,1,-2], [10,1,-2], [5,2,-5], [5,2,-5], [4,2,-5]
  ],
  cmmi10: [
    [8,7,0], [8,8,0], [8,9,1], [7,8,0], [8,7,0], [9,7,0], [9,7,0], [8,8,0],
    [7,7,0], [7,7,0], [8,8,0], [7,6,1], [6,10,2], [6,8,3], [5,9,1], [4,6,1],
    [5,10,3], [5,8,3], [5,9,1], [4,6,1], [6,6,1], [6,8,1], [6,8,3], [6,5,0],
    [5,10,3], [6,6,1], [6,8,3], [6,6,1], [6,6,1], [6,6,1], [6,10,3], [6,8,3],
    [7,10,3], [7,6,1], [5,6,1], [6,9,1], [9,6,1], [6,7,2], [5,7,2], [7,8,3],
    [10,4,-2], [10,4,1], [10,4,-2], [10,4,1], [3,3,-2], [3,3,-2], [5,7,1], [5,7,1],
    [5,6,1], [5,5,0], [5,5,0], [5,8,3], [5,7,2], [5,8,3], [5,8,1], [5,8,3],
    [5,8,1], [5,8,3], [2,2,0], [3,4,2], [7,7,1], [5,11,3], [7,7,1], [5,5,0],
    [6,9,1], [8,8,0], [8,7,0], [8,9,1], [9,7,0], [8,7,0], [8,7,0], [8,9,1],
    [9,7,0], [5,7,0], [7,8,1], [9,7,0], [7,7,0], [11,7,0], [9,7,0], [8,9,1],
    [8,7,0], [8,10,2], [8,8,1], [7,9,1], [8,7,0], [8,8,1], [8,8,1], [11,8,1],
    [9,7,0], [8,7,0], [8,7,0], [4,9,1], [4,11,3], [4,11,3], [10,3,-1], [10,3,-1],
    [4,9,1], [5,6,1], [5,8,1], [5,6,1], [6,8,1], [5,6,1], [6,11,3], [5,8,3],
    [6,8,1], [3,8,1], [5,10,3], [6,8,1], [3,8,1], [9,6,1], [6,6,1], [5,6,1],
    [6,7,2], [5,7,2], [5,6,1], [5,6,1], [4,8,1], [6,6,1], [5,6,1], [7,6,1],
    [6,6,1], [5,8,3], [5,6,1], [3,6,1], [5,8,3], [7,8,3], [7,3,-5], [7,2,-5]
  ],
  cmsy10: [
    [7,1,-2], [2,3,-1], [7,5,0], [5,5,0], [8,7,1], [5,5,0], [8,7,0], [8,7,2],
    [8,7,1], [8,7,1], [8,7,1], [8,7,1], [8,7,1], [10,11,3], [5,5,0], [5,5,0],
    [8,5,0], [8,5,0], [7,9,2], [7,9,2], [7,9,2], [7,9,2], [7,9,2], [7,9,2],
    [8,3,-1], [8,5,0], [7,7,1], [7,7,1], [10,7,1], [10,7,1], [7,7,1], [7,7,1],
    [10,5,0], [10,5,0], [5,9,2], [5,9,2], [10,5,0], [10,9,2], [10,9,2], [8,5,0],
    [10,7,1], [10,7,1], [6,9,2], [6,9,2], [10,7,1], [10,9,2], [10,9,2], [8,6,1],
    [3,6,0], [10,6,1], [6,7,1], [6,7,1], [9,8,0], [9,8,3], [7,11,3], [2,5,0],
    [6,8,1], [5,7,0], [7,4,0], [5,9,1], [8,9,1], [7,9,1], [8,7,0], [8,7,0],
    [6,7,0], [8,9,1], [7,9,1], [6,9,1], [8,7,0], [6,9,1], [9,8,1], [7,10,2],
    [9,8,1], [8,7,0], [9,9,2], [8,9,1], [7,9,1], [12,9,1], [11,9,1], [8,9,1],
    [8,8,1], [8,10,2], [9,8,1], [7,9,1], [8,8,0], [8,8,1], [7,8,1], [11,8,1],
    [9,7,0], [8,9,2], [8,7,0], [7,7,1], [7,7,1], [7,7,1], [7,7,1], [7,7,1],
    [6,7,0], [6,7,0], [5,11,3], [3,11,3], [5,11,3], [3,11,3], [5,11,3], [5,11,3],
    [4,11,3], [3,11,3], [2,11,3], [4,11,3], [5,11,3], [6,11,3], [5,11,3], [3,7,1],
    [9,11,10], [8,7,0], [8,8,1], [5,11,3], [7,6,0], [7,6,0], [8,9,2], [7,9,2],
    [4,11,3], [4,11,3], [4,11,3], [6,9,2], [8,10,2], [8,10,2], [8,9,1], [8,10,2]
  ],
  cmex10: [
    [5,13,12], [4,13,12], [4,13,12], [3,13,12], [5,13,12], [3,13,12], [5,13,12], [3,13,12],
    [5,13,12], [5,13,12], [4,13,12], [4,13,12], [2,8,7], [5,8,7], [6,13,12], [6,13,12],
    [6,19,18], [5,19,18], [7,25,24], [6,25,24], [6,25,24], [3,25,24], [6,25,24], [4,25,24],
    [6,25,24], [4,25,24], [7,25,24], [7,25,24], [7,25,24], [7,25,24], [10,25,24], [10,25,24],
    [8,31,30], [6,31,30], [6,31,30], [4,31,30], [7,31,30], [4,31,30], [7,31,30], [4,31,30],
    [7,31,30], [7,31,30], [7,31,30], [7,31,30], [13,31,30], [13,31,30], [8,19,18], [8,19,18],
    [9,19,18], [6,19,18], [7,19,18], [4,19,18], [7,19,18], [4,19,18], [4,8,7], [4,8,7],
    [8,11,10], [6,11,10], [8,10,9], [6,10,9], [6,20,19], [8,20,19], [6,5,4], [4,8,7],
    [9,19,18], [6,19,18], [5,8,7], [6,8,7], [6,19,18], [5,19,18], [8,11,10], [11,15,14],
    [7,13,12], [10,24,23], [11,11,10], [15,15,14], [11,11,10], [15,15,14], [11,11,10], [15,15,14],
    [10,11,10], [9,11,10], [7,13,12], [8,11,10], [8,11,10], [8,11,10], [8,11,10], [8,11,10],
    [14,15,14], [13,15,14], [10,24,23], [11,15,14], [11,15,14], [11,15,14], [11,15,14], [11,15,14],
    [9,11,10], [13,15,14], [7,3,-5], [12,3,-5], [16,3,-5], [6,2,-6], [10,2,-6], [15,2,-6],
    [5,19,18], [3,19,18], [6,19,18], [4,19,18], [6,19,18], [4,19,18], [6,19,18], [6,19,18],
    [11,13,12], [11,19,18], [11,25,24], [11,31,30], [8,19,18], [8,8,7], [11,7,6], [6,8,7],
    [6,7,6], [6,7,6], [6,5,3], [6,5,3], [6,4,0], [6,4,0], [8,7,6], [8,7,6]
  ],
  cmbx10: [
    [7,7,0], [9,7,0], [9,8,1], [8,7,0], [8,7,0], [9,7,0], [8,7,0], [9,7,0],
    [8,7,0], [9,7,0], [8,7,0], [8,7,0], [7,7,0], [7,7,0], [10,7,0], [10,7,0],
    [3,5,0], [4,7,2], [4,3,-5], [5,3,-5], [5,2,-5], [5,2,-5], [5,2,-5], [6,3,-5],
    [5,3,2], [6,8,1], [8,6,1], [9,6,1], [6,8,2], [11,7,0], [12,8,1], [9,9,1],
    [4,3,-2], [3,8,0], [5,4,-3], [9,9,2], [6,9,1], [9,9,1], [9,9,1], [3,4,-3],
    [4,11,3], [4,11,3], [5,5,-3], [9,9,2], [3,4,2], [4,2,-1], [3,2,0], [6,11,3],
    [6,8,1], [5,7,0], [6,7,0], [6,8,1], [6,7,0], [6,8,1], [6,8,1], [6,8,1],
    [6,8,1], [6,8,1], [3,5,0], [3,7,2], [3,8,3], [9,3,-1], [5,7,2], [5,7,0],
    [9,8,1], [9,7,0], [8,7,0], [8,8,1], [9,7,0], [8,7,0], [7,7,0], [9,8,1],
    [9,7,0], [5,7,0], [6,8,1], [9,7,0], [7,7,0], [11,7,0], [9,7,0], [8,8,1],
    [8,7,0], [9,9,2], [9,8,1], [6,8,1], [8,7,0], [9,8,1], [9,8,1], [12,8,1],
    [9,7,0], [9,7,0], [7,7,0], [3,11,3], [6,4,-3], [2,11,3], [5,2,-5], [3,2,-5],
    [3,4,-3], [6,6,1], [6,8,1], [5,6,1], [7,8,1], [5,6,1], [5,7,0], [6,8,3],
    [7,7,0], [3,7,0], [4,9,2], [6,7,0], [3,7,0], [10,5,0], [7,5,0], [6,6,1],
    [6,7,2], [7,7,2], [5,5,0], [5,6,1], [4,8,1], [7,6,1], [6,6,1], [9,6,1],
    [6,5,0], [6,7,2], [5,5,0], [6,1,-2], [12,1,-2], [5,3,-5], [5,2,-5], [5,2,-5]
  ],
  cmti10: [
    [8,7,0], [8,8,0], [8,9,1], [7,8,0], [8,7,0], [9,7,0], [8,7,0], [9,8,0],
    [8,7,0], [9,7,0], [8,8,0], [9,11,3], [7,11,3], [8,11,3], [11,11,3], [11,11,3],
    [4,6,1], [5,8,3], [5,2,-5], [6,2,-5], [6,2,-5], [6,2,-5], [6,1,-5], [7,3,-5],
    [4,3,2], [7,11,3], [8,6,1], [8,6,1], [6,8,2], [10,7,0], [11,9,1], [9,9,1],
    [4,2,-2], [4,8,0], [6,4,-3], [9,9,2], [7,9,1], [9,9,1], [9,9,1], [4,4,-3],
    [6,11,3], [4,11,3], [6,5,-3], [8,7,1], [3,4,2], [4,2,-1], [3,2,0], [7,11,3],
    [6,8,1], [5,7,0], [6,8,1], [6,8,1], [5,9,2], [6,8,1], [6,8,1], [7,8,1],
    [6,8,1], [6,8,1], [4,5,0], [4,7,2], [4,8,3], [8,3,-1], [5,8,3], [6,8,0],
    [8,9,1], [7,8,0], [8,7,0], [9,9,1], [8,7,0], [8,7,0], [8,7,0], [9,9,1],
    [9,7,0], [6,7,0], [7,8,1], [9,7,0], [7,7,0], [11,7,0], [9,7,0], [8,9,1],
    [8,7,0], [8,10,2], [8,8,1], [7,9,1], [9,7,0], [9,8,1], [9,8,1], [12,8,1],
    [9,7,0], [9,7,0], [8,7,0], [5,11,3], [7,4,-3], [5,11,3], [6,2,-5], [4,2,-5],
    [4,4,-3], [6,6,1], [5,8,1], [5,6,1], [6,8,1], [5,6,1], [6,11,3], [5,8,3],
    [6,8,1], [4,8,1], [5,10,3], [6,8,1], [4,8,1], [9,6,1], [6,6,1], [6,6,1],
    [6,7,2], [5,7,2], [5,6,1], [5,6,1], [4,8,1], [6,6,1], [5,6,1], [7,6,1],
    [6,6,1], [6,8,3], [5,6,1], [6,1,-2], [11,1,-2], [6,2,-5], [6,2,-5], [6,2,-5]
  ]
});

jsMath.Img.AddFont(85,{
  cmr10: [
    [7,9,0], [10,9,0], [9,10,1], [8,9,0], [8,9,0], [9,9,0], [8,9,0], [9,9,0],
    [8,9,0], [9,9,0], [9,9,0], [8,9,0], [7,9,0], [7,9,0], [10,9,0], [10,9,0],
    [3,6,0], [4,9,3], [4,3,-6], [5,3,-6], [5,2,-6], [5,3,-6], [6,2,-6], [6,3,-6],
    [5,4,3], [6,10,1], [9,7,1], [9,7,1], [6,9,2], [11,9,0], [12,10,1], [9,10,1],
    [4,2,-3], [3,9,0], [5,5,-4], [10,12,3], [6,10,1], [10,10,1], [9,10,1], [3,5,-4],
    [4,12,3], [4,12,3], [6,6,-3], [9,8,1], [3,5,3], [4,1,-2], [3,2,0], [6,12,3],
    [6,9,1], [6,8,0], [6,8,0], [6,9,1], [6,9,0], [6,9,1], [6,9,1], [6,10,1],
    [6,9,1], [6,9,1], [3,6,0], [3,9,3], [3,9,3], [9,4,-1], [5,9,3], [5,9,0],
    [9,10,1], [9,9,0], [8,9,0], [8,10,1], [9,9,0], [8,9,0], [8,9,0], [9,10,1],
    [9,9,0], [4,9,0], [6,10,1], [9,9,0], [7,9,0], [11,9,0], [9,9,0], [9,10,1],
    [8,9,0], [9,12,3], [9,10,1], [6,10,1], [9,9,0], [9,10,1], [9,10,1], [13,10,1],
    [9,9,0], [9,9,0], [7,9,0], [4,12,3], [6,5,-4], [2,12,3], [5,3,-6], [3,3,-6],
    [3,5,-4], [6,7,1], [7,10,1], [5,7,1], [7,10,1], [5,7,1], [5,9,0], [6,9,3],
    [7,9,0], [3,9,0], [4,12,3], [7,9,0], [4,9,0], [10,6,0], [7,6,0], [6,7,1],
    [7,9,3], [7,9,3], [5,6,0], [5,7,1], [4,9,1], [7,7,1], [7,7,1], [9,7,1],
    [7,6,0], [7,9,3], [5,6,0], [6,1,-3], [12,1,-3], [6,3,-6], [5,3,-6], [5,3,-6]
  ],
  cmmi10: [
    [9,9,0], [10,9,0], [9,10,1], [8,9,0], [10,9,0], [11,9,0], [10,9,0], [9,9,0],
    [8,9,0], [9,9,0], [10,9,0], [8,7,1], [8,12,3], [7,9,3], [6,10,1], [5,7,1],
    [6,12,3], [6,9,3], [6,10,1], [4,7,1], [7,7,1], [7,10,1], [7,9,3], [7,6,0],
    [6,12,3], [7,7,1], [7,9,3], [7,7,1], [7,7,1], [7,7,1], [7,12,3], [8,9,3],
    [8,12,3], [8,7,1], [6,7,1], [7,10,1], [10,7,1], [7,9,3], [5,8,2], [8,9,3],
    [12,5,-2], [12,5,1], [12,5,-2], [12,5,1], [3,4,-2], [3,4,-2], [6,8,1], [6,8,1],
    [6,7,1], [6,6,0], [6,6,0], [6,9,3], [6,9,3], [6,9,3], [6,9,1], [6,9,3],
    [6,9,1], [6,9,3], [3,2,0], [3,5,3], [9,8,1], [6,12,3], [9,8,1], [6,6,0],
    [7,10,1], [9,9,0], [10,9,0], [10,10,1], [10,9,0], [10,9,0], [10,9,0], [10,10,1],
    [11,9,0], [6,9,0], [8,10,1], [11,9,0], [8,9,0], [13,9,0], [11,9,0], [9,10,1],
    [10,9,0], [9,12,3], [10,10,1], [8,10,1], [9,9,0], [10,10,1], [10,10,1], [13,10,1],
    [11,9,0], [10,9,0], [9,9,0], [4,10,1], [4,12,3], [4,12,3], [12,4,-1], [12,4,-1],
    [5,10,1], [6,7,1], [5,10,1], [6,7,1], [7,10,1], [6,7,1], [7,12,3], [6,9,3],
    [7,10,1], [4,9,1], [6,11,3], [7,10,1], [4,10,1], [11,7,1], [7,7,1], [6,7,1],
    [7,9,3], [6,9,3], [6,7,1], [6,7,1], [4,9,1], [7,7,1], [6,7,1], [9,7,1],
    [7,7,1], [6,9,3], [6,7,1], [4,7,1], [6,9,3], [8,9,3], [8,3,-6], [8,2,-6]
  ],
  cmsy10: [
    [9,2,-2], [3,2,-2], [8,6,0], [6,6,0], [9,8,1], [6,6,0], [9,8,0], [9,8,2],
    [9,8,1], [9,8,1], [9,8,1], [9,8,1], [9,8,1], [12,12,3], [6,6,0], [6,6,0],
    [9,6,0], [9,6,0], [9,10,2], [9,10,2], [9,10,2], [9,10,2], [9,10,2], [9,10,2],
    [9,4,-1], [9,6,0], [9,8,1], [9,8,1], [12,8,1], [12,8,1], [9,8,1], [9,8,1],
    [12,6,0], [12,6,0], [6,12,3], [6,12,3], [12,6,0], [12,12,3], [12,12,3], [9,6,0],
    [12,8,1], [12,8,1], [7,12,3], [7,12,3], [12,8,1], [12,12,3], [12,12,3], [9,7,1],
    [4,7,0], [12,7,1], [7,8,1], [7,8,1], [10,9,0], [10,9,3], [8,12,3], [2,6,0],
    [7,10,1], [6,9,0], [8,4,-1], [6,11,1], [9,10,1], [9,10,1], [9,8,0], [9,8,0],
    [7,9,0], [10,10,1], [8,10,1], [7,10,1], [10,9,0], [7,10,1], [10,10,1], [8,11,2],
    [10,10,1], [9,9,0], [11,11,2], [9,10,1], [8,10,1], [14,10,1], [13,11,1], [10,10,1],
    [9,10,1], [10,11,2], [11,10,1], [8,10,1], [10,9,0], [10,10,1], [8,10,1], [13,10,1],
    [10,9,0], [9,11,2], [10,9,0], [8,9,1], [8,9,1], [8,9,1], [8,9,1], [8,9,1],
    [7,9,0], [7,9,0], [6,12,3], [4,12,3], [6,12,3], [4,12,3], [6,12,3], [6,12,3],
    [4,12,3], [4,12,3], [2,12,3], [5,12,3], [6,14,4], [7,14,4], [6,12,3], [3,8,1],
    [11,13,12], [9,9,0], [10,10,1], [6,12,3], [8,8,0], [8,8,0], [9,10,2], [9,10,2],
    [5,12,3], [5,12,3], [5,12,3], [7,12,3], [9,11,2], [9,11,2], [9,10,1], [9,11,2]
  ],
  cmex10: [
    [5,15,14], [4,15,14], [5,15,14], [3,15,14], [6,15,14], [4,15,14], [6,15,14], [4,15,14],
    [6,15,14], [6,15,14], [5,15,14], [5,15,14], [3,9,8], [5,9,8], [7,15,14], [7,15,14],
    [7,23,22], [5,23,22], [9,30,29], [7,30,29], [7,30,29], [4,30,29], [7,30,29], [4,30,29],
    [7,30,29], [4,30,29], [8,30,29], [8,30,29], [8,30,29], [8,30,29], [12,30,29], [12,30,29],
    [10,37,36], [7,37,36], [7,37,36], [4,37,36], [8,37,36], [5,37,36], [8,37,36], [5,37,36],
    [8,37,36], [8,37,36], [9,37,36], [8,37,36], [15,37,36], [15,37,36], [10,23,22], [10,23,22],
    [11,23,22], [7,23,22], [8,23,22], [5,23,22], [8,23,22], [5,23,22], [5,9,8], [5,9,8],
    [9,12,11], [7,12,11], [9,12,11], [7,12,11], [7,23,22], [9,23,22], [7,5,4], [5,9,8],
    [11,23,22], [7,23,22], [5,9,8], [7,9,8], [7,23,22], [6,23,22], [10,13,12], [13,18,17],
    [8,15,14], [12,28,27], [13,13,12], [18,18,17], [13,13,12], [18,18,17], [13,13,12], [18,18,17],
    [12,13,12], [11,13,12], [8,15,14], [10,13,12], [10,13,12], [10,13,12], [10,13,12], [10,13,12],
    [17,18,17], [15,18,17], [12,28,27], [13,18,17], [13,18,17], [13,18,17], [13,18,17], [13,18,17],
    [11,13,12], [15,18,17], [8,3,-6], [14,4,-6], [19,4,-6], [7,2,-7], [12,2,-7], [18,2,-7],
    [6,23,22], [3,23,22], [7,23,22], [4,23,22], [7,23,22], [4,23,22], [7,23,22], [7,23,22],
    [13,15,14], [13,23,22], [13,30,29], [13,37,36], [9,23,22], [9,9,8], [13,8,7], [7,9,8],
    [7,9,8], [7,9,8], [7,5,3], [7,5,3], [7,5,0], [7,5,0], [9,9,8], [9,9,8]
  ],
  cmbx10: [
    [8,9,0], [11,9,0], [10,10,1], [10,9,0], [9,9,0], [11,9,0], [10,9,0], [10,9,0],
    [10,9,0], [10,9,0], [10,9,0], [9,9,0], [8,9,0], [8,9,0], [12,9,0], [12,9,0],
    [4,6,0], [5,9,3], [5,3,-6], [6,3,-6], [6,2,-6], [6,3,-6], [6,2,-6], [7,3,-6],
    [6,4,3], [7,10,1], [10,7,1], [11,7,1], [7,9,2], [13,9,0], [14,10,1], [10,10,1],
    [4,2,-3], [4,9,0], [6,5,-4], [11,12,3], [7,10,1], [11,10,1], [11,10,1], [4,5,-4],
    [5,12,3], [5,12,3], [6,6,-3], [10,10,2], [3,5,3], [4,2,-2], [3,2,0], [7,12,3],
    [7,9,1], [6,8,0], [7,8,0], [7,9,1], [7,8,0], [7,9,1], [7,9,1], [7,10,1],
    [7,9,1], [7,9,1], [3,6,0], [3,9,3], [4,9,3], [10,4,-1], [6,9,3], [6,9,0],
    [10,10,1], [10,9,0], [10,9,0], [10,10,1], [10,9,0], [9,9,0], [9,9,0], [11,10,1],
    [11,9,0], [5,9,0], [7,10,1], [11,9,0], [8,9,0], [13,9,0], [11,9,0], [10,10,1],
    [9,9,0], [10,12,3], [11,10,1], [7,10,1], [10,9,0], [11,10,1], [11,10,1], [14,10,1],
    [11,9,0], [11,9,0], [8,9,0], [4,12,3], [7,5,-4], [3,12,3], [6,3,-6], [3,3,-6],
    [3,5,-4], [7,7,1], [8,10,1], [6,7,1], [8,10,1], [6,7,1], [6,9,0], [7,9,3],
    [8,9,0], [4,9,0], [5,12,3], [8,9,0], [4,9,0], [12,6,0], [8,6,0], [7,7,1],
    [8,9,3], [8,9,3], [6,6,0], [5,7,1], [5,9,1], [8,7,1], [7,7,1], [10,7,1],
    [8,6,0], [7,9,3], [6,6,0], [7,1,-3], [14,1,-3], [6,3,-6], [6,2,-7], [6,3,-6]
  ],
  cmti10: [
    [9,9,0], [10,9,0], [10,10,1], [8,9,0], [10,9,0], [11,9,0], [10,9,0], [10,9,0],
    [9,9,0], [10,9,0], [10,9,0], [11,12,3], [9,12,3], [9,12,3], [12,12,3], [13,12,3],
    [4,7,1], [5,9,3], [6,3,-6], [7,3,-6], [7,2,-6], [7,3,-6], [7,2,-6], [9,3,-6],
    [5,4,3], [8,12,3], [9,7,1], [9,7,1], [7,9,2], [12,9,0], [13,10,1], [10,10,1],
    [5,2,-3], [5,9,0], [7,5,-4], [10,12,3], [9,10,1], [11,10,1], [10,10,1], [5,5,-4],
    [7,12,3], [5,12,3], [7,6,-3], [10,8,1], [3,5,3], [5,1,-2], [3,2,0], [8,12,3],
    [7,9,1], [6,8,0], [7,9,1], [7,9,1], [6,11,3], [7,9,1], [7,9,1], [8,9,1],
    [7,9,1], [7,9,1], [4,6,0], [4,9,3], [4,9,3], [10,4,-1], [6,9,3], [7,9,0],
    [10,10,1], [9,9,0], [9,9,0], [10,10,1], [10,9,0], [9,9,0], [9,9,0], [10,10,1],
    [11,9,0], [7,9,0], [8,10,1], [11,9,0], [8,9,0], [13,9,0], [11,9,0], [10,10,1],
    [9,9,0], [10,12,3], [9,10,1], [8,10,1], [10,9,0], [11,10,1], [11,10,1], [14,10,1],
    [10,9,0], [11,9,0], [9,9,0], [6,12,3], [8,5,-4], [6,12,3], [7,3,-6], [5,3,-6],
    [5,5,-4], [7,7,1], [6,10,1], [6,7,1], [7,10,1], [6,7,1], [7,12,3], [6,9,3],
    [7,10,1], [4,9,1], [6,11,3], [7,10,1], [4,10,1], [11,7,1], [8,7,1], [7,7,1],
    [7,9,3], [6,9,3], [6,7,1], [6,7,1], [5,9,1], [7,7,1], [6,7,1], [9,7,1],
    [7,7,1], [7,9,3], [6,7,1], [7,1,-3], [13,1,-3], [7,3,-6], [7,3,-6], [7,3,-6]
  ]
});

jsMath.Img.AddFont(100,{
  cmr10: [
    [9,10,0], [11,11,0], [11,11,1], [10,11,0], [9,10,0], [11,10,0], [10,10,0], [11,10,0],
    [10,10,0], [11,10,0], [10,10,0], [9,10,0], [8,10,0], [8,10,0], [12,10,0], [12,10,0],
    [4,7,0], [4,10,3], [5,3,-7], [6,3,-7], [6,2,-7], [6,3,-7], [7,2,-7], [7,4,-7],
    [6,4,3], [7,11,1], [10,8,1], [11,8,1], [7,10,2], [13,10,0], [14,11,1], [11,12,1],
    [4,3,-3], [3,11,0], [5,5,-5], [11,13,3], [7,12,1], [11,12,1], [11,12,1], [3,5,-5],
    [5,15,4], [5,15,4], [7,7,-4], [11,11,2], [3,5,3], [4,2,-2], [3,2,0], [7,15,4],
    [7,11,1], [6,10,0], [7,10,0], [7,11,1], [7,10,0], [7,11,1], [7,11,1], [7,11,1],
    [7,11,1], [7,11,1], [3,7,0], [3,10,3], [3,11,4], [11,5,-1], [6,10,3], [6,10,0],
    [11,11,1], [11,11,0], [10,10,0], [10,11,1], [10,10,0], [10,10,0], [9,10,0], [11,11,1],
    [11,10,0], [5,10,0], [7,11,1], [11,10,0], [9,10,0], [13,10,0], [11,10,0], [11,11,1],
    [9,10,0], [11,13,3], [11,11,1], [7,11,1], [10,10,0], [11,11,1], [11,11,1], [15,11,1],
    [11,10,0], [11,10,0], [8,10,0], [4,15,4], [7,5,-5], [3,15,4], [6,3,-7], [3,3,-7],
    [3,5,-5], [7,8,1], [8,11,1], [6,8,1], [8,11,1], [6,8,1], [5,10,0], [7,10,3],
    [8,10,0], [4,10,0], [4,13,3], [8,10,0], [4,10,0], [12,7,0], [8,7,0], [7,8,1],
    [8,10,3], [8,10,3], [6,7,0], [6,8,1], [5,10,1], [8,8,1], [8,8,1], [10,8,1],
    [8,7,0], [8,10,3], [6,7,0], [7,1,-3], [14,1,-3], [6,3,-7], [6,2,-8], [6,3,-7]
  ],
  cmmi10: [
    [11,10,0], [12,11,0], [11,11,1], [10,11,0], [11,10,0], [13,10,0], [12,10,0], [10,10,0],
    [9,10,0], [10,10,0], [11,10,0], [9,8,1], [9,13,3], [8,11,4], [7,11,1], [6,8,1],
    [7,13,3], [7,11,4], [7,11,1], [5,8,1], [8,8,1], [8,11,1], [9,11,4], [8,7,0],
    [7,13,3], [8,8,1], [8,11,4], [8,8,1], [8,8,1], [8,8,1], [9,13,3], [9,10,3],
    [9,13,3], [9,8,1], [6,8,1], [8,11,1], [12,8,1], [8,10,3], [6,9,2], [9,11,4],
    [14,5,-3], [14,5,1], [14,5,-3], [14,5,1], [4,4,-3], [4,4,-3], [7,9,1], [7,9,1],
    [7,8,1], [6,7,0], [7,7,0], [7,11,4], [7,10,3], [7,11,4], [7,11,1], [7,11,4],
    [7,11,1], [7,11,4], [3,2,0], [3,5,3], [10,9,1], [7,15,4], [10,9,1], [7,7,0],
    [8,12,1], [11,11,0], [11,10,0], [11,11,1], [12,10,0], [11,10,0], [11,10,0], [11,11,1],
    [13,10,0], [7,10,0], [9,11,1], [13,10,0], [9,10,0], [15,10,0], [13,10,0], [11,11,1],
    [11,10,0], [11,13,3], [11,11,1], [10,11,1], [10,10,0], [11,11,1], [11,11,1], [15,11,1],
    [12,10,0], [11,10,0], [11,10,0], [5,12,1], [5,15,4], [5,15,4], [14,5,-1], [14,5,-1],
    [6,11,1], [7,8,1], [6,11,1], [7,8,1], [8,11,1], [7,8,1], [8,13,3], [7,10,3],
    [8,11,1], [5,11,1], [7,13,3], [8,11,1], [4,11,1], [12,8,1], [8,8,1], [7,8,1],
    [8,10,3], [7,10,3], [7,8,1], [6,8,1], [5,10,1], [8,8,1], [7,8,1], [10,8,1],
    [8,8,1], [7,10,3], [7,8,1], [5,8,1], [7,10,3], [9,11,4], [9,3,-7], [10,3,-7]
  ],
  cmsy10: [
    [10,1,-3], [3,3,-2], [9,7,0], [7,7,0], [11,9,1], [7,7,0], [11,10,0], [11,10,3],
    [11,11,2], [11,11,2], [11,11,2], [11,11,2], [11,11,2], [14,15,4], [7,7,0], [7,7,0],
    [11,7,0], [11,7,0], [10,11,2], [10,11,2], [10,11,2], [10,11,2], [10,11,2], [10,11,2],
    [11,5,-1], [11,7,0], [10,9,1], [10,9,1], [14,9,1], [14,9,1], [10,9,1], [10,9,1],
    [14,5,-1], [14,5,-1], [6,13,3], [6,13,3], [14,5,-1], [14,13,3], [14,13,3], [11,7,0],
    [14,9,1], [14,9,1], [9,13,3], [9,13,3], [14,9,1], [14,13,3], [14,13,3], [11,8,1],
    [4,8,0], [14,8,1], [9,9,1], [9,9,1], [12,11,0], [12,11,4], [9,15,4], [2,7,0],
    [8,11,1], [7,10,0], [9,4,-1], [7,13,2], [10,12,1], [10,11,1], [11,10,0], [11,10,0],
    [8,10,0], [12,12,1], [10,11,1], [8,11,1], [11,10,0], [8,11,1], [12,11,1], [9,12,2],
    [12,11,1], [10,10,0], [12,12,2], [11,11,1], [10,11,1], [16,11,1], [15,12,1], [11,11,1],
    [11,11,1], [12,12,2], [12,11,1], [9,11,1], [12,11,0], [11,11,1], [10,11,1], [15,11,1],
    [12,10,0], [11,12,2], [11,10,0], [9,10,1], [9,10,1], [9,10,1], [9,10,1], [9,10,1],
    [8,10,0], [8,10,0], [6,15,4], [4,15,4], [6,15,4], [4,15,4], [6,15,4], [6,15,4],
    [5,15,4], [4,15,4], [3,15,4], [6,15,4], [6,15,4], [9,15,4], [7,15,4], [4,11,2],
    [12,15,14], [10,10,0], [11,11,1], [7,15,4], [9,9,0], [9,9,0], [10,11,2], [10,11,2],
    [6,13,3], [6,14,4], [6,13,3], [9,13,3], [11,13,2], [11,14,3], [11,12,1], [11,13,2]
  ],
  cmex10: [
    [6,18,17], [5,18,17], [6,18,17], [3,18,17], [7,18,17], [4,18,17], [7,18,17], [4,18,17],
    [7,18,17], [7,18,17], [6,18,17], [6,18,17], [3,10,9], [6,10,9], [8,18,17], [8,18,17],
    [8,26,25], [6,26,25], [10,35,34], [8,35,34], [8,35,34], [4,35,34], [8,35,34], [5,35,34],
    [8,35,34], [5,35,34], [9,35,34], [9,35,34], [10,35,34], [9,35,34], [14,35,34], [14,35,34],
    [11,43,42], [8,43,42], [8,43,42], [5,43,42], [9,43,42], [6,43,42], [9,43,42], [6,43,42],
    [10,43,42], [10,43,42], [10,43,42], [10,43,42], [18,43,42], [18,43,42], [11,26,25], [11,26,25],
    [12,26,25], [9,26,25], [10,26,25], [5,26,25], [10,26,25], [5,26,25], [6,10,9], [5,10,9],
    [11,14,13], [8,14,13], [11,14,13], [8,14,13], [8,27,26], [11,27,26], [8,6,5], [5,10,9],
    [12,26,25], [9,26,25], [6,10,9], [9,10,9], [8,26,25], [7,26,25], [11,15,14], [15,21,20],
    [9,17,16], [14,33,32], [15,15,14], [21,21,20], [15,15,14], [21,21,20], [15,15,14], [21,21,20],
    [14,15,14], [13,15,14], [9,17,16], [11,15,14], [11,15,14], [11,15,14], [11,15,14], [11,15,14],
    [20,21,20], [18,21,20], [14,33,32], [15,21,20], [15,21,20], [15,21,20], [15,21,20], [15,21,20],
    [13,15,14], [18,21,20], [9,4,-7], [16,3,-8], [22,3,-8], [8,3,-8], [14,3,-8], [21,3,-8],
    [7,26,25], [4,26,25], [8,26,25], [5,26,25], [8,26,25], [5,26,25], [8,26,25], [8,26,25],
    [15,18,17], [15,26,25], [15,35,34], [15,43,42], [11,27,26], [11,10,9], [16,10,9], [8,10,9],
    [8,10,9], [8,10,9], [8,5,3], [8,5,3], [8,5,0], [8,5,0], [11,10,9], [11,10,9]
  ],
  cmbx10: [
    [9,10,0], [13,10,0], [12,11,1], [11,10,0], [11,10,0], [13,10,0], [11,10,0], [12,10,0],
    [11,10,0], [12,10,0], [11,10,0], [11,10,0], [9,10,0], [9,10,0], [13,10,0], [13,10,0],
    [4,7,0], [5,10,3], [5,3,-7], [7,3,-7], [7,3,-7], [7,3,-7], [7,2,-7], [8,3,-7],
    [7,4,3], [8,11,1], [12,8,1], [13,8,1], [8,10,2], [15,10,0], [16,11,1], [12,12,1],
    [5,3,-3], [4,10,0], [7,6,-4], [13,13,3], [8,12,1], [13,12,1], [12,11,1], [4,6,-4],
    [6,15,4], [5,15,4], [7,7,-4], [12,11,2], [4,6,3], [5,2,-2], [4,3,0], [8,15,4],
    [8,11,1], [7,10,0], [8,10,0], [8,11,1], [8,10,0], [8,11,1], [8,11,1], [8,11,1],
    [8,11,1], [8,11,1], [4,7,0], [4,10,3], [4,10,3], [12,5,-1], [7,10,3], [7,10,0],
    [12,11,1], [12,10,0], [11,10,0], [11,11,1], [12,10,0], [11,10,0], [10,10,0], [12,11,1],
    [13,10,0], [6,10,0], [8,11,1], [12,10,0], [9,10,0], [15,10,0], [13,10,0], [12,11,1],
    [11,10,0], [12,13,3], [13,11,1], [9,11,1], [11,10,0], [12,11,1], [12,11,1], [17,11,1],
    [12,10,0], [12,10,0], [10,10,0], [5,15,4], [8,6,-4], [3,15,4], [7,3,-7], [4,3,-7],
    [4,6,-4], [8,8,1], [9,11,1], [7,8,1], [9,11,1], [7,8,1], [7,10,0], [8,10,3],
    [9,10,0], [4,10,0], [5,13,3], [9,10,0], [5,10,0], [14,7,0], [9,7,0], [8,8,1],
    [9,10,3], [9,10,3], [7,7,0], [6,8,1], [6,10,1], [9,8,1], [9,8,1], [12,8,1],
    [9,7,0], [9,10,3], [7,7,0], [9,2,-3], [17,2,-3], [7,3,-7], [7,2,-8], [7,3,-7]
  ],
  cmti10: [
    [10,10,0], [11,11,0], [12,11,1], [9,11,0], [11,10,0], [12,10,0], [11,10,0], [12,10,0],
    [11,10,0], [12,10,0], [11,10,0], [12,13,3], [10,13,3], [10,13,3], [14,13,3], [15,13,3],
    [5,8,1], [6,10,3], [7,3,-7], [8,3,-7], [8,2,-7], [8,3,-7], [8,2,-7], [10,4,-7],
    [5,4,3], [10,13,3], [11,8,1], [11,8,1], [8,10,2], [14,10,0], [15,11,1], [12,12,1],
    [5,3,-3], [6,11,0], [8,5,-5], [12,13,3], [10,11,1], [12,12,1], [12,12,1], [6,5,-5],
    [8,15,4], [6,15,4], [9,7,-4], [11,9,1], [4,5,3], [5,2,-2], [4,2,0], [9,15,4],
    [8,11,1], [7,10,0], [8,11,1], [8,11,1], [7,13,3], [8,11,1], [8,11,1], [9,11,1],
    [8,11,1], [8,11,1], [5,7,0], [5,10,3], [5,11,4], [11,5,-1], [7,11,4], [8,11,0],
    [12,11,1], [10,11,0], [11,10,0], [12,11,1], [11,10,0], [11,10,0], [11,10,0], [12,11,1],
    [12,10,0], [8,10,0], [9,11,1], [13,10,0], [9,10,0], [15,10,0], [12,10,0], [12,11,1],
    [11,10,0], [12,13,3], [11,11,1], [9,11,1], [12,10,0], [12,11,1], [13,11,1], [16,11,1],
    [12,10,0], [13,10,0], [10,10,0], [7,15,4], [9,5,-5], [7,15,4], [8,3,-7], [6,3,-7],
    [6,5,-5], [8,8,1], [7,11,1], [7,8,1], [8,11,1], [7,8,1], [8,13,3], [7,10,3],
    [8,11,1], [5,11,1], [6,13,3], [8,11,1], [5,11,1], [12,8,1], [9,8,1], [8,8,1],
    [8,10,3], [7,10,3], [7,8,1], [6,8,1], [6,10,1], [8,8,1], [7,8,1], [10,8,1],
    [8,8,1], [8,10,3], [7,8,1], [8,1,-3], [15,1,-3], [9,3,-7], [9,3,-7], [8,3,-7]
  ]
});

jsMath.Img.AddFont(120,{
  cmr10: [
    [10,12,0], [14,13,0], [13,13,1], [12,13,0], [11,12,0], [13,12,0], [12,12,0], [13,12,0],
    [12,12,0], [13,12,0], [12,12,0], [11,12,0], [9,12,0], [9,12,0], [14,12,0], [14,12,0],
    [5,8,0], [5,12,4], [5,4,-8], [7,4,-8], [7,3,-8], [7,4,-8], [8,2,-9], [8,4,-9],
    [7,5,4], [8,13,1], [12,9,1], [13,9,1], [8,12,2], [15,12,0], [17,13,1], [13,14,1],
    [5,3,-4], [4,13,0], [6,6,-6], [14,16,4], [8,14,1], [14,14,1], [13,14,1], [4,6,-6],
    [6,18,5], [5,18,5], [8,8,-5], [13,12,2], [4,6,4], [5,2,-3], [4,2,0], [8,18,5],
    [8,13,1], [8,12,0], [8,12,0], [8,13,1], [8,12,0], [8,13,1], [8,13,1], [9,13,1],
    [8,13,1], [8,13,1], [4,8,0], [4,12,4], [4,13,4], [13,5,-2], [8,13,4], [8,12,0],
    [13,13,1], [13,13,0], [12,12,0], [12,13,1], [13,12,0], [12,12,0], [11,12,0], [13,13,1],
    [13,12,0], [6,12,0], [8,13,1], [13,12,0], [10,12,0], [15,12,0], [13,12,0], [13,13,1],
    [11,12,0], [13,16,4], [13,13,1], [9,13,1], [12,12,0], [13,13,1], [13,13,1], [18,13,1],
    [13,12,0], [13,12,0], [10,12,0], [5,18,5], [8,6,-6], [3,18,5], [7,3,-9], [4,3,-9],
    [4,6,-6], [9,9,1], [9,13,1], [8,9,1], [9,13,1], [8,9,1], [7,12,0], [9,12,4],
    [10,12,0], [5,12,0], [5,16,4], [9,12,0], [5,12,0], [14,8,0], [10,8,0], [8,9,1],
    [9,12,4], [9,12,4], [7,8,0], [7,9,1], [6,12,1], [10,9,1], [9,9,1], [12,9,1],
    [9,8,0], [9,12,4], [7,8,0], [9,1,-4], [17,1,-4], [8,4,-8], [8,3,-9], [7,3,-9]
  ],
  cmmi10: [
    [13,12,0], [14,13,0], [13,13,1], [12,13,0], [14,12,0], [15,12,0], [14,12,0], [12,12,0],
    [11,12,0], [12,12,0], [14,12,0], [11,9,1], [11,16,4], [10,12,4], [8,14,1], [7,9,1],
    [9,16,4], [9,12,4], [8,13,1], [6,9,1], [10,9,1], [10,13,1], [10,12,4], [9,8,0],
    [8,16,4], [10,9,1], [9,12,4], [10,9,1], [9,9,1], [9,9,1], [10,16,4], [11,12,4],
    [11,16,4], [11,9,1], [8,9,1], [10,13,1], [14,9,1], [9,12,4], [7,10,2], [11,12,4],
    [17,6,-3], [17,6,1], [17,6,-3], [17,6,1], [4,5,-3], [4,5,-3], [9,10,1], [9,10,1],
    [8,9,1], [8,8,0], [8,8,0], [8,12,4], [8,12,4], [8,12,4], [8,13,1], [9,12,4],
    [8,13,1], [8,12,4], [4,2,0], [4,6,4], [12,11,1], [8,18,5], [12,11,1], [9,9,0],
    [10,14,1], [13,13,0], [13,12,0], [13,13,1], [14,12,0], [14,12,0], [13,12,0], [13,13,1],
    [15,12,0], [9,12,0], [11,13,1], [16,12,0], [11,12,0], [18,12,0], [15,12,0], [13,13,1],
    [13,12,0], [13,16,4], [13,13,1], [11,13,1], [12,12,0], [13,13,1], [14,13,1], [18,13,1],
    [15,12,0], [13,12,0], [13,12,0], [6,14,1], [6,17,4], [6,17,4], [17,5,-2], [17,5,-2],
    [7,13,1], [9,9,1], [8,13,1], [8,9,1], [9,13,1], [8,9,1], [10,16,4], [9,12,4],
    [10,13,1], [5,13,1], [8,16,4], [9,13,1], [5,13,1], [15,9,1], [10,9,1], [8,9,1],
    [10,12,4], [8,12,4], [8,9,1], [8,9,1], [6,12,1], [10,9,1], [8,9,1], [12,9,1],
    [9,9,1], [9,12,4], [8,9,1], [5,9,1], [8,12,4], [11,12,4], [11,5,-8], [12,3,-9]
  ],
  cmsy10: [
    [12,2,-3], [4,3,-3], [11,9,0], [8,8,0], [13,11,1], [9,9,0], [13,12,0], [13,12,3],
    [13,12,2], [13,12,2], [13,12,2], [13,12,2], [13,12,2], [17,17,4], [8,8,0], [8,8,0],
    [13,9,0], [13,8,0], [12,14,3], [12,14,3], [12,14,3], [12,14,3], [12,14,3], [12,14,3],
    [13,5,-2], [13,9,0], [12,11,1], [12,11,1], [17,12,2], [17,12,2], [12,11,1], [12,11,1],
    [17,7,-1], [17,7,-1], [8,16,4], [8,16,4], [17,7,-1], [17,16,4], [17,16,4], [13,8,0],
    [17,10,1], [17,10,1], [10,16,4], [10,16,4], [17,10,1], [17,16,4], [17,16,4], [13,9,1],
    [5,10,0], [17,9,1], [10,11,1], [10,11,1], [15,13,0], [15,13,4], [11,17,4], [3,7,-1],
    [10,13,1], [9,12,0], [11,6,-1], [8,16,2], [13,14,1], [12,13,1], [13,12,0], [13,12,0],
    [10,12,0], [14,14,1], [12,13,1], [10,13,1], [14,12,0], [10,13,1], [15,13,1], [11,15,3],
    [14,13,1], [12,12,0], [15,15,3], [13,13,1], [12,13,1], [19,13,1], [18,15,1], [14,13,1],
    [13,13,1], [14,15,3], [15,13,1], [11,13,1], [14,13,0], [13,13,1], [12,13,1], [18,13,1],
    [14,12,0], [13,15,3], [14,12,0], [11,12,1], [11,12,1], [11,12,1], [11,12,1], [11,12,1],
    [10,12,0], [10,12,0], [8,18,5], [5,18,5], [8,18,5], [5,18,5], [8,18,5], [8,18,5],
    [6,18,5], [5,18,5], [3,18,5], [7,18,5], [8,19,5], [10,19,5], [8,18,5], [4,12,2],
    [15,18,17], [13,12,0], [14,13,1], [8,17,4], [11,11,0], [11,11,0], [13,14,3], [12,14,3],
    [7,16,4], [7,16,4], [7,16,4], [10,16,4], [13,16,3], [13,16,3], [13,14,1], [13,16,3]
  ],
  cmex10: [
    [8,21,20], [6,21,20], [7,21,20], [4,21,20], [8,21,20], [5,21,20], [8,21,20], [5,21,20],
    [8,21,20], [8,21,20], [7,21,20], [7,21,20], [4,12,11], [7,12,11], [9,21,20], [9,21,20],
    [10,31,30], [8,31,30], [12,42,41], [9,42,41], [9,42,41], [5,42,41], [10,42,41], [6,42,41],
    [10,42,41], [6,42,41], [11,42,41], [11,42,41], [12,42,41], [11,42,41], [17,42,41], [17,42,41],
    [13,52,51], [10,52,51], [10,52,51], [6,52,51], [11,52,51], [7,52,51], [11,52,51], [7,52,51],
    [12,52,51], [12,52,51], [12,52,51], [12,52,51], [21,52,51], [21,52,51], [13,31,30], [13,31,30],
    [15,32,31], [10,32,31], [12,31,30], [6,31,30], [12,31,30], [6,31,30], [7,12,11], [6,12,11],
    [13,17,16], [9,17,16], [13,17,16], [9,17,16], [9,32,31], [13,32,31], [9,7,6], [7,12,11],
    [15,31,30], [10,31,30], [7,12,11], [10,12,11], [9,31,30], [9,31,30], [14,18,17], [18,25,24],
    [11,20,19], [17,39,38], [18,18,17], [25,25,24], [18,18,17], [25,25,24], [18,18,17], [25,25,24],
    [17,18,17], [16,18,17], [11,20,19], [14,18,17], [14,18,17], [14,18,17], [14,18,17], [14,18,17],
    [24,25,24], [21,25,24], [17,39,38], [18,25,24], [18,25,24], [18,25,24], [18,25,24], [18,25,24],
    [16,18,17], [21,25,24], [11,4,-9], [19,5,-9], [26,5,-9], [10,3,-10], [17,3,-10], [25,3,-10],
    [8,31,30], [5,31,30], [9,31,30], [6,31,30], [9,31,30], [6,31,30], [10,31,30], [10,31,30],
    [18,21,20], [18,31,30], [18,42,41], [18,52,51], [13,32,31], [13,12,11], [19,11,10], [9,12,11],
    [10,12,11], [10,12,11], [9,7,4], [10,7,4], [9,6,0], [10,6,0], [13,12,11], [13,12,11]
  ],
  cmbx10: [
    [11,12,0], [16,12,0], [15,13,1], [13,12,0], [13,12,0], [15,12,0], [14,12,0], [15,12,0],
    [14,12,0], [15,12,0], [14,12,0], [13,12,0], [11,12,0], [11,12,0], [16,12,0], [16,12,0],
    [5,8,0], [6,12,4], [6,4,-8], [8,4,-8], [8,4,-8], [8,4,-8], [9,2,-9], [10,3,-9],
    [8,5,4], [10,13,1], [14,9,1], [15,9,1], [10,12,2], [18,12,0], [20,13,1], [15,15,2],
    [6,3,-4], [5,12,0], [8,7,-5], [16,16,4], [9,14,1], [16,14,1], [15,13,1], [5,7,-5],
    [7,18,5], [6,18,5], [9,8,-5], [15,14,3], [5,7,4], [6,3,-2], [5,3,0], [9,18,5],
    [9,13,1], [9,12,0], [9,12,0], [9,13,1], [10,12,0], [9,13,1], [9,13,1], [10,13,1],
    [9,13,1], [9,13,1], [5,8,0], [5,12,4], [5,13,4], [15,6,-1], [9,13,4], [9,12,0],
    [15,13,1], [15,12,0], [13,12,0], [14,13,1], [14,12,0], [13,12,0], [12,12,0], [15,13,1],
    [15,12,0], [7,12,0], [9,13,1], [15,12,0], [11,12,0], [18,12,0], [15,12,0], [14,13,1],
    [13,12,0], [14,16,4], [15,13,1], [10,13,1], [13,12,0], [15,13,1], [15,13,1], [20,13,1],
    [15,12,0], [15,12,0], [11,12,0], [5,18,5], [10,7,-5], [4,18,5], [8,3,-9], [5,3,-9],
    [5,7,-5], [10,9,1], [11,13,1], [9,9,1], [11,13,1], [9,9,1], [8,12,0], [10,12,4],
    [11,12,0], [5,12,0], [6,16,4], [10,12,0], [5,12,0], [16,8,0], [11,8,0], [10,9,1],
    [11,12,4], [11,12,4], [8,8,0], [8,9,1], [7,12,1], [11,9,1], [10,9,1], [14,9,1],
    [10,8,0], [10,12,4], [8,8,0], [10,1,-4], [20,1,-4], [9,5,-8], [9,3,-9], [8,3,-9]
  ],
  cmti10: [
    [13,12,0], [13,13,0], [14,13,1], [11,13,0], [13,12,0], [15,12,0], [14,12,0], [15,12,0],
    [13,12,0], [15,12,0], [13,12,0], [14,16,4], [12,16,4], [12,16,4], [17,16,4], [18,16,4],
    [6,9,1], [7,12,4], [8,4,-8], [10,4,-8], [10,3,-8], [10,4,-8], [10,2,-9], [12,4,-9],
    [6,5,4], [11,16,4], [13,9,1], [13,9,1], [10,12,2], [17,12,0], [18,13,1], [14,15,2],
    [6,3,-4], [7,13,0], [9,6,-6], [15,16,4], [12,13,1], [15,14,1], [14,14,1], [7,6,-6],
    [9,18,5], [7,18,5], [10,8,-5], [13,11,1], [4,6,4], [6,2,-3], [4,2,0], [11,18,5],
    [10,13,1], [8,12,0], [10,13,1], [10,13,1], [9,16,4], [10,13,1], [10,13,1], [11,13,1],
    [10,13,1], [10,13,1], [6,8,0], [6,12,4], [6,13,4], [14,5,-2], [8,13,4], [10,13,0],
    [14,13,1], [12,13,0], [13,12,0], [14,13,1], [14,12,0], [13,12,0], [13,12,0], [14,13,1],
    [15,12,0], [9,12,0], [11,13,1], [15,12,0], [11,12,0], [18,12,0], [15,12,0], [14,13,1],
    [13,12,0], [14,16,4], [13,13,1], [11,13,1], [14,12,0], [15,13,1], [15,13,1], [20,13,1],
    [15,12,0], [15,12,0], [12,12,0], [8,18,5], [11,6,-6], [8,18,5], [9,3,-9], [7,3,-9],
    [7,6,-6], [10,9,1], [8,13,1], [8,9,1], [10,13,1], [8,9,1], [9,16,4], [9,12,4],
    [10,13,1], [6,13,1], [8,16,4], [9,13,1], [6,13,1], [15,9,1], [10,9,1], [9,9,1],
    [9,12,4], [9,12,4], [9,9,1], [8,9,1], [7,12,1], [10,9,1], [9,9,1], [12,9,1],
    [9,9,1], [9,12,4], [8,9,1], [10,1,-4], [18,1,-4], [10,4,-8], [10,3,-9], [10,3,-9]
  ]
});

jsMath.Img.AddFont(144,{
  cmr10: [
    [12,14,0], [16,15,0], [15,16,1], [14,15,0], [13,14,0], [15,14,0], [14,14,0], [15,15,0],
    [14,14,0], [15,14,0], [14,15,0], [13,15,0], [11,15,0], [11,15,0], [17,15,0], [17,15,0],
    [5,9,0], [6,14,5], [6,4,-10], [8,4,-10], [8,3,-10], [8,4,-10], [9,1,-11], [10,5,-10],
    [8,6,5], [10,16,1], [14,10,1], [15,10,1], [10,14,3], [18,14,0], [20,16,1], [15,17,2],
    [6,3,-5], [4,15,0], [7,7,-7], [16,18,4], [9,17,2], [16,17,2], [15,16,1], [5,7,-7],
    [7,20,5], [6,20,5], [9,9,-6], [15,14,2], [5,7,4], [6,2,-3], [4,3,0], [9,20,5],
    [10,15,1], [9,14,0], [9,14,0], [10,15,1], [10,14,0], [9,15,1], [10,15,1], [10,15,1],
    [10,15,1], [10,15,1], [4,9,0], [4,13,4], [4,15,5], [15,6,-2], [9,15,5], [9,15,0],
    [15,16,1], [15,15,0], [14,14,0], [14,16,1], [15,14,0], [14,14,0], [13,14,0], [15,16,1],
    [15,14,0], [7,14,0], [10,15,1], [15,14,0], [12,14,0], [18,14,0], [15,14,0], [15,16,1],
    [13,14,0], [15,19,4], [15,15,1], [10,16,1], [14,14,0], [15,15,1], [15,15,1], [21,15,1],
    [15,14,0], [15,14,0], [12,14,0], [6,20,5], [10,7,-7], [4,20,5], [8,4,-10], [4,3,-11],
    [4,7,-7], [10,10,1], [11,15,1], [9,10,1], [11,15,1], [9,10,1], [8,15,0], [10,15,5],
    [11,14,0], [5,14,0], [6,19,5], [11,14,0], [6,14,0], [17,9,0], [11,9,0], [10,10,1],
    [11,13,4], [11,13,4], [8,9,0], [8,10,1], [7,14,1], [11,10,1], [11,10,1], [15,10,1],
    [11,9,0], [11,14,5], [9,9,0], [10,1,-5], [20,1,-5], [9,4,-10], [9,3,-11], [8,3,-11]
  ],
  cmmi10: [
    [15,14,0], [16,15,0], [15,16,1], [14,15,0], [16,14,0], [18,14,0], [17,14,0], [15,15,0],
    [13,14,0], [14,14,0], [16,15,0], [13,10,1], [12,19,4], [11,14,5], [10,16,1], [8,10,1],
    [10,19,5], [10,14,5], [10,16,1], [7,10,1], [11,10,1], [11,15,1], [12,14,5], [11,9,0],
    [9,19,5], [12,10,1], [11,14,5], [12,10,1], [11,10,1], [11,10,1], [12,19,5], [12,14,5],
    [13,19,5], [13,10,1], [9,11,1], [12,16,1], [17,10,1], [11,13,4], [9,12,3], [13,14,5],
    [19,7,-4], [19,7,1], [19,7,-4], [19,7,1], [5,6,-4], [5,6,-4], [10,12,1], [10,12,1],
    [10,11,1], [9,10,0], [9,10,0], [10,15,5], [10,14,4], [9,15,5], [10,15,1], [10,15,5],
    [10,15,1], [10,15,5], [4,3,0], [5,7,4], [14,12,1], [9,20,5], [14,12,1], [10,10,0],
    [12,16,1], [15,15,0], [16,14,0], [16,16,1], [17,14,0], [16,14,0], [16,14,0], [16,16,1],
    [18,14,0], [10,14,0], [13,15,1], [18,14,0], [13,14,0], [21,14,0], [18,14,0], [15,16,1],
    [16,14,0], [15,19,4], [16,15,1], [13,16,1], [15,14,0], [16,15,1], [16,15,1], [21,15,1],
    [18,14,0], [16,14,0], [15,14,0], [7,16,1], [7,20,5], [7,20,5], [19,6,-2], [19,6,-2],
    [8,16,1], [10,10,1], [9,15,1], [9,10,1], [11,15,1], [9,10,1], [12,20,5], [10,14,5],
    [11,15,1], [6,15,1], [9,19,5], [11,15,1], [6,15,1], [17,10,1], [12,10,1], [10,10,1],
    [11,13,4], [10,13,4], [9,10,1], [9,10,1], [7,14,1], [11,10,1], [10,10,1], [14,10,1],
    [11,10,1], [10,14,5], [10,10,1], [6,10,1], [9,14,5], [13,15,5], [13,5,-10], [13,4,-10]
  ],
  cmsy10: [
    [14,2,-4], [4,4,-3], [13,10,0], [9,10,0], [15,12,1], [10,10,0], [15,14,0], [15,14,4],
    [15,14,2], [15,14,2], [15,14,2], [15,14,2], [15,14,2], [19,20,5], [9,8,-1], [9,8,-1],
    [15,10,0], [15,10,0], [14,16,3], [14,16,3], [14,16,3], [14,16,3], [14,16,3], [14,16,3],
    [15,6,-2], [15,9,-1], [14,12,1], [14,12,1], [19,14,2], [19,14,2], [14,12,1], [14,12,1],
    [19,8,-1], [19,8,-1], [9,18,4], [9,18,4], [19,8,-1], [19,18,4], [19,18,4], [15,10,0],
    [19,12,1], [19,12,1], [12,18,4], [12,18,4], [20,12,1], [19,18,4], [19,18,4], [15,10,1],
    [6,12,0], [19,10,1], [12,12,1], [12,12,1], [17,15,0], [17,15,5], [13,20,5], [3,8,-1],
    [12,15,1], [10,14,0], [13,7,-1], [10,18,2], [15,16,1], [14,16,1], [15,14,0], [15,14,0],
    [12,14,0], [16,16,1], [14,16,1], [11,16,1], [16,14,0], [12,16,1], [17,15,1], [13,18,3],
    [17,15,1], [14,14,0], [17,17,3], [15,16,1], [14,16,1], [23,16,1], [21,17,1], [16,16,1],
    [15,15,1], [16,18,3], [17,15,1], [13,16,1], [16,15,0], [15,15,1], [14,15,1], [21,15,1],
    [17,14,0], [15,17,3], [16,14,0], [13,13,1], [13,13,1], [13,13,1], [13,13,1], [13,13,1],
    [12,14,0], [12,14,0], [9,20,5], [6,20,5], [9,20,5], [6,20,5], [9,20,5], [9,20,5],
    [7,20,5], [6,20,5], [4,20,5], [8,20,5], [9,22,6], [12,22,6], [9,20,5], [5,14,2],
    [18,21,20], [15,14,0], [16,15,1], [10,20,5], [13,12,0], [13,12,0], [15,16,3], [14,16,3],
    [8,20,5], [8,20,5], [8,20,5], [12,18,4], [15,18,3], [15,19,4], [15,16,1], [15,18,3]
  ],
  cmex10: [
    [9,25,24], [7,25,24], [8,25,24], [5,25,24], [9,25,24], [6,25,24], [9,25,24], [6,25,24],
    [10,25,24], [10,25,24], [8,25,24], [8,25,24], [4,14,13], [9,14,13], [11,25,24], [11,25,24],
    [12,37,36], [9,37,36], [14,49,48], [11,49,48], [11,49,48], [6,49,48], [12,49,48], [7,49,48],
    [12,49,48], [7,49,48], [13,49,48], [13,49,48], [14,49,48], [13,49,48], [20,49,48], [20,49,48],
    [16,61,60], [12,61,60], [12,61,60], [7,61,60], [13,61,60], [8,61,60], [13,61,60], [8,61,60],
    [14,61,60], [14,61,60], [14,61,60], [14,61,60], [25,61,60], [25,61,60], [16,37,36], [16,37,36],
    [17,37,36], [12,37,36], [14,37,36], [7,37,36], [14,37,36], [7,37,36], [8,14,13], [7,14,13],
    [15,20,19], [11,20,19], [15,19,18], [11,19,18], [11,38,37], [15,38,37], [11,8,7], [8,14,13],
    [17,37,36], [12,37,36], [9,14,13], [12,14,13], [11,37,36], [10,37,36], [16,21,20], [22,29,28],
    [13,24,23], [19,46,45], [22,21,20], [30,29,28], [22,21,20], [30,29,28], [22,21,20], [30,29,28],
    [20,21,20], [18,21,20], [13,24,23], [16,21,20], [16,21,20], [16,21,20], [16,21,20], [16,21,20],
    [28,29,28], [25,29,28], [19,46,45], [22,29,28], [22,29,28], [22,29,28], [22,29,28], [22,29,28],
    [18,21,20], [25,29,28], [13,4,-11], [22,5,-11], [30,5,-11], [12,3,-12], [20,3,-12], [29,3,-12],
    [10,37,36], [5,37,36], [11,37,36], [7,37,36], [11,37,36], [7,37,36], [11,37,36], [11,37,36],
    [21,25,24], [21,37,36], [21,49,48], [21,61,60], [15,37,36], [15,14,13], [22,13,12], [11,14,13],
    [12,13,12], [12,13,12], [11,8,5], [11,8,5], [11,7,0], [11,7,0], [15,13,12], [15,13,12]
  ],
  cmbx10: [
    [13,14,0], [18,14,0], [17,15,1], [16,14,0], [15,14,0], [18,14,0], [16,14,0], [17,14,0],
    [16,14,0], [17,14,0], [16,14,0], [15,14,0], [13,14,0], [13,14,0], [19,14,0], [19,14,0],
    [6,9,0], [8,13,4], [7,5,-10], [10,5,-10], [9,4,-10], [10,4,-10], [10,2,-11], [12,5,-10],
    [9,5,4], [12,15,1], [16,11,1], [18,11,1], [11,15,3], [21,14,0], [23,15,1], [17,17,2],
    [7,4,-5], [6,15,0], [10,8,-6], [18,18,4], [11,17,2], [18,17,2], [17,16,1], [6,8,-6],
    [8,20,5], [7,20,5], [10,9,-6], [17,16,3], [5,8,4], [7,3,-3], [5,4,0], [11,20,5],
    [11,15,1], [10,14,0], [11,14,0], [11,15,1], [11,14,0], [11,15,1], [11,15,1], [12,15,1],
    [11,15,1], [11,15,1], [5,9,0], [5,13,4], [6,15,5], [17,6,-2], [10,14,4], [10,14,0],
    [17,15,1], [17,14,0], [16,14,0], [16,15,1], [17,14,0], [15,14,0], [14,14,0], [17,15,1],
    [18,14,0], [9,14,0], [11,15,1], [18,14,0], [13,14,0], [22,14,0], [18,14,0], [16,15,1],
    [15,14,0], [17,18,4], [18,15,1], [12,15,1], [16,14,0], [17,15,1], [17,15,1], [24,15,1],
    [17,14,0], [17,14,0], [13,14,0], [6,20,5], [12,8,-6], [4,20,5], [9,4,-10], [5,4,-10],
    [5,8,-6], [12,11,1], [12,15,1], [10,11,1], [13,15,1], [10,11,1], [9,14,0], [12,15,5],
    [13,14,0], [6,14,0], [8,18,4], [12,14,0], [6,14,0], [19,9,0], [13,9,0], [11,11,1],
    [12,13,4], [13,13,4], [9,9,0], [9,11,1], [8,14,1], [13,10,1], [12,10,1], [17,10,1],
    [12,9,0], [12,13,4], [10,9,0], [12,1,-5], [23,1,-5], [10,5,-10], [10,3,-11], [10,3,-11]
  ],
  cmti10: [
    [15,14,0], [16,15,0], [16,16,1], [13,15,0], [16,14,0], [18,14,0], [16,14,0], [17,15,0],
    [15,14,0], [17,14,0], [16,15,0], [17,20,5], [13,20,5], [14,20,5], [20,20,5], [20,20,5],
    [7,10,1], [8,14,5], [9,4,-10], [12,4,-10], [11,3,-10], [12,4,-10], [12,1,-11], [14,5,-10],
    [7,5,4], [13,20,5], [15,10,1], [15,10,1], [11,14,3], [20,14,0], [22,16,1], [17,17,2],
    [7,3,-5], [8,15,0], [11,7,-7], [17,18,4], [14,16,1], [17,17,2], [17,16,1], [8,7,-7],
    [11,20,5], [8,20,5], [12,9,-6], [16,14,2], [5,7,4], [7,2,-3], [5,3,0], [13,20,5],
    [12,15,1], [10,14,0], [12,15,1], [12,15,1], [10,18,4], [12,15,1], [12,15,1], [13,15,1],
    [12,15,1], [12,15,1], [7,9,0], [7,13,4], [7,15,5], [16,6,-2], [9,15,5], [12,15,0],
    [16,16,1], [14,15,0], [15,14,0], [17,16,1], [16,14,0], [15,14,0], [15,14,0], [17,16,1],
    [18,14,0], [11,14,0], [13,15,1], [18,14,0], [13,14,0], [21,14,0], [18,14,0], [16,16,1],
    [15,14,0], [16,19,4], [15,15,1], [13,16,1], [17,14,0], [18,15,1], [18,15,1], [23,15,1],
    [17,14,0], [18,14,0], [15,14,0], [9,20,5], [13,7,-7], [9,20,5], [11,4,-10], [8,3,-11],
    [8,7,-7], [11,10,1], [10,15,1], [10,10,1], [12,15,1], [10,10,1], [11,20,5], [10,14,5],
    [11,15,1], [7,15,1], [9,19,5], [11,15,1], [7,15,1], [17,10,1], [12,10,1], [11,10,1],
    [11,13,4], [10,13,4], [10,10,1], [9,10,1], [8,14,1], [12,10,1], [10,10,1], [14,10,1],
    [11,10,1], [11,14,5], [10,10,1], [12,1,-5], [21,1,-5], [12,4,-10], [12,3,-11], [11,3,-11]
  ]
});

jsMath.Img.AddFont(173,{
  cmr10: [
    [14,17,0], [19,18,0], [18,18,1], [16,18,0], [15,17,0], [18,17,0], [16,17,0], [18,17,0],
    [16,17,0], [18,17,0], [17,17,0], [16,17,0], [13,17,0], [13,17,0], [20,17,0], [20,17,0],
    [6,11,0], [7,16,5], [8,5,-12], [10,5,-12], [10,4,-12], [10,5,-12], [11,2,-13], [12,6,-12],
    [9,6,5], [12,18,1], [17,12,1], [18,12,1], [12,16,3], [21,17,0], [24,18,1], [18,20,2],
    [7,4,-6], [5,18,0], [9,8,-9], [19,22,5], [11,20,2], [19,20,2], [18,19,1], [5,8,-9],
    [8,24,6], [7,24,6], [11,11,-7], [18,16,2], [5,8,5], [7,2,-4], [5,3,0], [11,24,6],
    [12,17,1], [11,16,0], [11,16,0], [11,17,1], [12,17,0], [11,17,1], [11,17,1], [12,18,1],
    [11,17,1], [11,17,1], [5,11,0], [5,16,5], [5,18,6], [18,6,-3], [10,17,5], [10,17,0],
    [18,18,1], [18,18,0], [16,17,0], [16,18,1], [17,17,0], [16,17,0], [15,17,0], [18,18,1],
    [18,17,0], [8,17,0], [12,18,1], [18,17,0], [14,17,0], [22,17,0], [18,17,0], [18,18,1],
    [15,17,0], [18,22,5], [18,18,1], [12,18,1], [17,17,0], [18,18,1], [18,18,1], [25,18,1],
    [18,17,0], [18,17,0], [14,17,0], [7,24,6], [12,8,-9], [4,24,6], [10,5,-12], [5,4,-13],
    [5,8,-9], [12,12,1], [13,18,1], [10,12,1], [13,18,1], [10,12,1], [9,17,0], [12,16,5],
    [13,17,0], [6,17,0], [7,22,5], [13,17,0], [7,17,0], [20,11,0], [13,11,0], [12,12,1],
    [13,16,5], [13,16,5], [9,11,0], [9,12,1], [8,16,1], [13,12,1], [13,12,1], [17,12,1],
    [13,11,0], [13,16,5], [10,11,0], [12,1,-6], [24,1,-6], [11,5,-12], [10,4,-13], [10,4,-13]
  ],
  cmmi10: [
    [18,17,0], [19,18,0], [18,18,1], [16,18,0], [19,17,0], [22,17,0], [20,17,0], [17,17,0],
    [16,17,0], [17,17,0], [19,17,0], [15,12,1], [15,22,5], [14,17,6], [11,19,1], [10,12,1],
    [12,22,5], [12,17,6], [11,18,1], [8,12,1], [14,12,1], [14,18,1], [14,17,6], [13,11,0],
    [11,22,5], [14,12,1], [13,17,6], [14,12,1], [13,12,1], [13,12,1], [14,22,5], [15,16,5],
    [16,22,5], [15,12,1], [11,12,1], [14,18,1], [20,12,1], [13,16,5], [10,14,3], [15,17,6],
    [23,8,-5], [23,8,1], [23,8,-5], [23,8,1], [6,7,-5], [6,7,-5], [12,14,1], [12,14,1],
    [12,12,1], [11,11,0], [11,11,0], [11,17,6], [12,17,5], [11,17,6], [11,17,1], [12,18,6],
    [11,17,1], [11,17,6], [5,3,0], [5,8,5], [17,14,1], [11,24,6], [17,14,1], [12,12,0],
    [14,19,1], [18,18,0], [19,17,0], [19,18,1], [20,17,0], [19,17,0], [19,17,0], [19,18,1],
    [22,17,0], [12,17,0], [16,18,1], [22,17,0], [16,17,0], [26,17,0], [22,17,0], [18,18,1],
    [19,17,0], [18,22,5], [19,18,1], [16,18,1], [17,17,0], [19,18,1], [19,18,1], [26,18,1],
    [21,17,0], [19,17,0], [18,17,0], [8,19,1], [8,24,6], [8,24,6], [23,6,-3], [23,7,-3],
    [10,18,1], [12,12,1], [10,18,1], [11,12,1], [13,18,1], [11,12,1], [14,22,5], [12,16,5],
    [14,18,1], [8,17,1], [11,21,5], [13,18,1], [7,18,1], [21,12,1], [14,12,1], [12,12,1],
    [13,16,5], [11,16,5], [11,12,1], [11,12,1], [8,17,1], [14,12,1], [12,12,1], [17,12,1],
    [13,12,1], [12,16,5], [12,12,1], [8,12,1], [10,16,5], [15,17,6], [15,6,-12], [16,4,-12]
  ],
  cmsy10: [
    [17,2,-5], [5,4,-4], [16,12,0], [11,12,0], [18,14,1], [12,12,0], [18,16,0], [18,16,4],
    [18,16,2], [18,16,2], [18,16,2], [18,16,2], [18,16,2], [23,24,6], [11,10,-1], [11,10,-1],
    [18,12,0], [18,12,0], [17,20,4], [17,20,4], [17,20,4], [17,20,4], [17,20,4], [17,20,4],
    [18,6,-3], [18,11,-1], [17,14,1], [17,14,1], [23,16,2], [23,16,2], [17,14,1], [17,14,1],
    [23,10,-1], [23,10,-1], [11,22,5], [11,22,5], [23,10,-1], [23,22,5], [23,22,5], [18,12,0],
    [23,14,1], [23,14,1], [14,22,5], [14,22,5], [24,14,1], [23,22,5], [23,22,5], [18,12,1],
    [7,13,-1], [23,12,1], [14,14,1], [14,14,1], [20,18,0], [20,18,6], [16,24,6], [3,10,-1],
    [14,18,1], [12,17,0], [15,7,-2], [11,21,2], [18,19,1], [17,18,1], [18,16,0], [18,16,0],
    [14,17,0], [20,20,2], [16,18,1], [13,18,1], [19,17,0], [14,18,1], [20,18,1], [15,20,3],
    [20,19,2], [17,17,0], [21,20,3], [18,18,1], [16,18,1], [27,19,2], [25,21,2], [19,18,1],
    [18,19,2], [19,20,3], [21,18,1], [16,18,1], [20,18,0], [18,18,1], [16,19,2], [25,19,2],
    [20,17,0], [18,21,4], [19,17,0], [15,16,1], [15,16,1], [15,16,1], [15,16,1], [15,16,1],
    [14,17,0], [14,17,0], [11,24,6], [7,24,6], [11,24,6], [7,24,6], [11,24,6], [11,24,6],
    [8,24,6], [7,24,6], [4,24,6], [9,24,6], [11,26,7], [14,26,7], [11,24,6], [6,16,2],
    [21,25,24], [18,17,0], [19,18,1], [12,24,6], [15,15,0], [15,15,0], [18,20,4], [17,20,4],
    [9,22,5], [10,23,6], [10,22,5], [14,22,5], [18,22,4], [18,22,4], [18,19,1], [18,22,4]
  ],
  cmex10: [
    [10,29,28], [8,29,28], [10,29,28], [6,29,28], [11,29,28], [7,29,28], [11,29,28], [7,29,28],
    [12,29,28], [12,29,28], [10,29,28], [9,29,28], [5,16,15], [10,16,15], [13,29,28], [13,29,28],
    [14,44,43], [10,44,43], [17,58,57], [13,58,57], [13,58,57], [7,58,57], [14,58,57], [8,58,57],
    [14,58,57], [8,58,57], [15,58,57], [15,58,57], [16,58,57], [15,58,57], [24,58,57], [24,58,57],
    [19,73,72], [14,73,72], [14,73,72], [8,73,72], [16,73,72], [9,73,72], [16,73,72], [9,73,72],
    [16,73,72], [16,73,72], [17,73,72], [16,73,72], [30,73,72], [30,73,72], [19,44,43], [19,44,43],
    [21,44,43], [14,44,43], [16,44,43], [9,44,43], [16,44,43], [9,44,43], [10,16,15], [9,16,15],
    [18,23,22], [13,23,22], [18,23,22], [13,23,22], [13,45,44], [18,45,44], [13,9,8], [9,16,15],
    [21,45,43], [14,45,43], [10,16,15], [14,16,15], [13,44,43], [12,44,43], [19,25,24], [26,35,34],
    [15,28,27], [23,55,54], [26,25,24], [35,35,34], [26,25,24], [35,35,34], [26,25,24], [35,35,34],
    [24,25,24], [22,25,24], [15,28,27], [19,25,24], [19,25,24], [19,25,24], [19,25,24], [19,25,24],
    [34,35,34], [30,35,34], [23,55,54], [26,35,34], [26,35,34], [26,35,34], [26,35,34], [26,35,34],
    [22,25,24], [30,35,34], [15,5,-13], [26,6,-13], [36,6,-13], [14,4,-14], [24,4,-14], [35,4,-14],
    [11,44,43], [6,44,43], [13,44,43], [8,44,43], [13,44,43], [8,44,43], [14,44,43], [14,44,43],
    [25,29,28], [25,44,43], [25,58,57], [25,73,72], [18,45,44], [18,16,15], [26,15,14], [13,16,15],
    [14,16,15], [14,16,15], [13,9,6], [13,9,6], [13,9,0], [13,9,0], [18,16,15], [18,16,15]
  ],
  cmbx10: [
    [16,17,0], [22,17,0], [20,18,1], [19,17,0], [18,17,0], [21,17,0], [19,17,0], [20,17,0],
    [19,17,0], [20,17,0], [19,17,0], [18,17,0], [15,17,0], [15,17,0], [23,17,0], [23,17,0],
    [7,11,0], [9,16,5], [9,5,-12], [11,5,-12], [11,4,-12], [12,5,-12], [12,2,-13], [14,5,-12],
    [11,6,5], [14,18,1], [20,12,1], [21,12,1], [14,17,3], [25,17,0], [28,18,1], [20,20,2],
    [8,4,-6], [7,17,0], [12,9,-8], [22,22,5], [13,20,2], [22,20,2], [21,18,1], [7,9,-8],
    [10,24,6], [9,24,6], [12,11,-7], [20,20,4], [6,9,5], [8,3,-4], [6,4,0], [13,24,6],
    [13,17,1], [12,16,0], [13,16,0], [13,17,1], [14,16,0], [13,17,1], [13,17,1], [14,18,1],
    [13,17,1], [13,17,1], [6,11,0], [6,16,5], [7,17,5], [20,8,-2], [12,17,5], [12,17,0],
    [20,18,1], [20,17,0], [19,17,0], [19,18,1], [20,17,0], [18,17,0], [17,17,0], [21,18,1],
    [21,17,0], [10,17,0], [13,18,1], [21,17,0], [16,17,0], [26,17,0], [21,17,0], [20,18,1],
    [18,17,0], [20,22,5], [21,18,1], [14,18,1], [19,17,0], [21,18,1], [21,18,1], [28,18,1],
    [21,17,0], [21,17,0], [16,17,0], [8,24,6], [14,9,-8], [5,24,6], [11,5,-12], [6,5,-12],
    [6,9,-8], [14,12,1], [15,18,1], [12,12,1], [15,18,1], [12,12,1], [11,17,0], [14,16,5],
    [15,17,0], [7,17,0], [9,22,5], [15,17,0], [8,17,0], [23,11,0], [15,11,0], [14,12,1],
    [15,16,5], [15,16,5], [11,11,0], [10,12,1], [10,17,1], [15,12,1], [14,12,1], [20,12,1],
    [15,11,0], [14,16,5], [12,11,0], [14,2,-6], [28,2,-6], [12,6,-12], [12,3,-14], [12,4,-13]
  ],
  cmti10: [
    [17,17,0], [19,18,0], [19,18,1], [16,18,0], [19,17,0], [21,17,0], [19,17,0], [20,17,0],
    [18,17,0], [20,17,0], [19,17,0], [20,22,5], [16,22,5], [17,22,5], [23,22,5], [24,22,5],
    [8,12,1], [9,16,5], [11,5,-12], [14,5,-12], [13,4,-12], [14,5,-12], [14,2,-13], [17,6,-12],
    [9,6,5], [15,22,5], [18,12,1], [18,12,1], [14,16,3], [23,17,0], [26,18,1], [20,20,2],
    [9,4,-6], [9,18,0], [13,8,-9], [20,22,5], [17,18,1], [21,20,2], [20,19,1], [9,8,-9],
    [13,24,6], [10,24,6], [14,11,-7], [19,16,2], [6,8,5], [9,2,-4], [6,3,0], [15,24,6],
    [14,17,1], [12,16,0], [14,17,1], [14,17,1], [12,21,5], [14,17,1], [14,17,1], [15,17,1],
    [14,17,1], [14,17,1], [8,11,0], [8,16,5], [8,18,6], [19,6,-3], [11,18,6], [14,18,0],
    [19,18,1], [17,18,0], [18,17,0], [20,18,1], [19,17,0], [18,17,0], [18,17,0], [20,18,1],
    [21,17,0], [13,17,0], [15,18,1], [21,17,0], [15,17,0], [25,17,0], [21,17,0], [19,18,1],
    [18,17,0], [19,22,5], [18,18,1], [16,18,1], [20,17,0], [21,18,1], [21,18,1], [27,18,1],
    [20,17,0], [21,17,0], [17,17,0], [11,24,6], [15,8,-9], [10,24,6], [13,5,-12], [9,4,-13],
    [9,8,-9], [13,12,1], [12,18,1], [12,12,1], [14,18,1], [12,12,1], [12,22,5], [12,16,5],
    [13,18,1], [8,17,1], [10,21,5], [13,18,1], [8,18,1], [21,12,1], [15,12,1], [13,12,1],
    [13,16,5], [12,16,5], [12,12,1], [11,12,1], [9,17,1], [14,12,1], [12,12,1], [17,12,1],
    [13,12,1], [13,16,5], [12,12,1], [14,1,-6], [25,1,-6], [14,5,-12], [14,4,-13], [14,4,-13]
  ]
});

jsMath.Img.AddFont(207,{
  cmr10: [
    [17,20,0], [23,21,0], [21,22,1], [20,21,0], [19,20,0], [21,20,0], [20,20,0], [21,21,0],
    [20,20,0], [21,20,0], [20,21,0], [19,21,0], [16,21,0], [16,21,0], [24,21,0], [24,21,0],
    [8,13,0], [9,19,6], [9,7,-14], [12,7,-14], [12,5,-14], [12,6,-15], [13,2,-16], [14,6,-15],
    [11,7,6], [14,22,1], [21,14,1], [22,14,1], [14,19,3], [26,20,0], [29,22,1], [21,24,2],
    [8,4,-8], [6,21,0], [11,10,-11], [23,27,6], [13,24,2], [23,24,2], [22,22,1], [6,10,-11],
    [10,30,8], [9,30,8], [13,13,-9], [21,20,3], [6,10,6], [8,3,-5], [6,4,0], [13,30,8],
    [14,21,1], [13,20,0], [14,20,0], [14,21,1], [14,20,0], [14,21,1], [14,21,1], [15,21,1],
    [14,21,1], [14,21,1], [6,13,0], [6,19,6], [6,22,7], [21,8,-3], [13,21,6], [13,21,0],
    [21,22,1], [21,21,0], [19,20,0], [20,22,1], [21,20,0], [19,20,0], [18,20,0], [22,22,1],
    [21,20,0], [10,20,0], [14,21,1], [22,20,0], [17,20,0], [26,20,0], [21,20,0], [21,22,1],
    [19,20,0], [22,27,6], [22,21,1], [15,22,1], [20,20,0], [21,21,1], [22,21,1], [30,21,1],
    [22,20,0], [22,20,0], [17,20,0], [8,30,8], [14,10,-11], [5,30,8], [12,6,-15], [6,4,-16],
    [6,10,-11], [15,14,1], [16,22,1], [13,14,1], [16,22,1], [13,14,1], [11,21,0], [15,20,6],
    [16,21,0], [8,20,0], [9,26,6], [15,21,0], [8,21,0], [24,13,0], [16,13,0], [14,14,1],
    [16,19,6], [16,19,6], [11,13,0], [11,14,1], [10,19,1], [16,14,1], [15,14,1], [21,14,1],
    [15,13,0], [15,19,6], [12,13,0], [15,2,-7], [29,2,-7], [13,7,-14], [13,4,-16], [12,4,-16]
  ],
  cmmi10: [
    [21,20,0], [23,21,0], [22,22,1], [20,21,0], [23,20,0], [26,20,0], [24,20,0], [21,21,0],
    [19,20,0], [21,20,0], [23,21,0], [18,14,1], [18,27,6], [16,20,7], [14,22,1], [11,14,1],
    [14,27,6], [15,20,7], [14,22,1], [10,14,1], [16,14,1], [16,22,1], [17,20,7], [16,13,0],
    [13,27,6], [17,14,1], [15,20,7], [17,14,1], [15,14,1], [16,14,1], [17,27,6], [18,19,6],
    [19,27,6], [18,14,1], [13,15,1], [17,22,1], [24,14,1], [15,19,6], [12,17,4], [18,20,7],
    [28,9,-6], [28,9,1], [28,9,-6], [28,9,1], [7,8,-6], [7,8,-6], [14,16,1], [14,16,1],
    [14,15,1], [13,14,0], [14,14,0], [14,21,7], [14,20,6], [14,21,7], [14,21,1], [15,21,7],
    [14,21,1], [14,21,7], [6,4,0], [6,10,6], [21,18,2], [13,30,8], [21,18,2], [15,15,0],
    [17,22,1], [21,21,0], [22,20,0], [23,22,1], [24,20,0], [23,20,0], [22,20,0], [23,22,1],
    [26,20,0], [15,20,0], [19,21,1], [26,20,0], [19,20,0], [31,20,0], [26,20,0], [22,22,1],
    [22,20,0], [22,27,6], [22,21,1], [19,22,1], [21,20,0], [23,21,1], [23,21,1], [31,21,1],
    [25,20,0], [23,20,0], [21,20,0], [10,23,1], [9,29,7], [10,28,7], [28,8,-3], [28,9,-3],
    [12,22,1], [15,14,1], [13,22,1], [13,14,1], [15,22,1], [13,14,1], [17,27,6], [14,19,6],
    [16,22,1], [9,21,1], [13,26,6], [15,22,1], [8,22,1], [25,14,1], [17,14,1], [14,14,1],
    [16,19,6], [14,19,6], [13,14,1], [13,14,1], [10,20,1], [16,14,1], [14,14,1], [21,14,1],
    [16,14,1], [15,19,6], [14,14,1], [9,14,1], [12,19,6], [18,21,7], [19,7,-14], [19,5,-15]
  ],
  cmsy10: [
    [21,2,-6], [6,4,-5], [19,15,0], [13,14,0], [21,17,1], [15,15,0], [21,20,0], [21,20,5],
    [21,20,3], [21,20,3], [21,20,3], [21,20,3], [21,20,3], [28,28,7], [13,12,-1], [13,12,-1],
    [21,15,0], [21,13,-1], [21,23,4], [21,23,4], [21,23,4], [21,23,4], [21,23,4], [21,23,4],
    [21,8,-3], [21,13,-1], [21,18,2], [21,18,2], [28,19,2], [28,19,2], [21,18,2], [21,18,2],
    [28,11,-2], [28,11,-2], [13,27,6], [13,27,6], [28,11,-2], [28,27,6], [28,27,6], [21,13,-1],
    [28,17,1], [28,17,1], [17,27,6], [17,27,6], [28,17,1], [28,27,6], [28,27,6], [21,14,1],
    [8,16,-1], [28,14,1], [17,18,2], [17,18,2], [25,21,0], [25,22,7], [19,28,7], [4,12,-1],
    [17,22,1], [15,21,0], [18,9,-2], [14,26,3], [21,22,1], [21,22,1], [21,20,0], [21,20,0],
    [17,21,0], [24,23,2], [20,22,1], [16,22,1], [23,20,0], [17,22,1], [25,21,1], [18,25,4],
    [24,22,2], [20,20,0], [25,24,4], [22,22,1], [20,22,1], [33,23,2], [30,25,2], [23,22,1],
    [22,22,2], [23,25,4], [25,21,1], [19,22,1], [24,21,0], [21,21,1], [20,22,2], [31,22,2],
    [24,20,0], [21,24,4], [23,20,0], [18,19,1], [18,19,1], [18,19,1], [18,19,1], [18,19,1],
    [17,21,0], [17,21,0], [13,30,8], [8,30,8], [13,30,8], [8,30,8], [13,30,8], [13,30,8],
    [10,30,8], [9,30,8], [5,30,8], [11,30,8], [13,31,8], [17,31,8], [13,30,8], [7,20,3],
    [25,30,28], [21,20,0], [23,21,1], [14,28,7], [18,18,0], [18,18,0], [21,23,4], [21,23,4],
    [11,27,6], [12,28,7], [12,27,6], [17,27,6], [22,26,4], [21,27,5], [21,22,1], [21,26,4]
  ],
  cmex10: [
    [12,36,34], [9,36,34], [12,36,34], [7,36,34], [14,36,34], [8,36,34], [14,36,34], [8,36,34],
    [14,36,34], [14,36,34], [12,36,34], [11,36,34], [6,20,19], [12,20,19], [16,36,34], [16,36,34],
    [17,54,52], [13,54,52], [21,71,69], [16,71,69], [15,71,69], [9,71,69], [17,71,69], [10,71,69],
    [17,71,69], [10,71,69], [18,71,69], [18,71,69], [19,71,69], [19,71,69], [29,71,69], [29,71,69],
    [22,88,86], [17,88,86], [17,88,86], [9,88,86], [19,88,86], [11,88,86], [19,88,86], [11,88,86],
    [20,88,86], [20,88,86], [21,88,86], [20,88,86], [36,88,86], [36,88,86], [22,54,52], [22,54,52],
    [25,54,52], [17,54,52], [20,54,52], [10,54,52], [20,54,52], [10,54,52], [12,19,18], [10,19,18],
    [21,28,27], [15,28,27], [21,28,27], [15,28,27], [15,54,53], [21,54,53], [15,10,9], [11,19,18],
    [25,54,52], [17,54,52], [12,19,18], [17,19,18], [16,54,52], [15,54,52], [23,30,29], [31,42,41],
    [18,34,33], [28,66,65], [31,30,29], [43,42,41], [31,30,29], [43,42,41], [31,30,29], [43,42,41],
    [29,30,29], [26,30,29], [18,34,33], [23,30,29], [23,30,29], [23,30,29], [23,30,29], [23,30,29],
    [41,42,41], [36,42,41], [28,66,65], [31,42,41], [31,42,41], [31,42,41], [31,42,41], [31,42,41],
    [26,30,29], [36,42,41], [18,6,-16], [31,7,-16], [43,7,-16], [17,4,-17], [29,4,-18], [42,4,-18],
    [14,54,52], [8,54,52], [15,54,52], [9,54,52], [15,54,52], [9,54,52], [16,54,52], [16,54,52],
    [30,36,34], [30,54,52], [30,71,69], [30,88,86], [22,54,53], [22,19,18], [32,19,17], [16,19,18],
    [17,19,18], [17,19,18], [15,11,7], [15,11,7], [15,10,0], [15,10,0], [21,19,18], [21,19,18]
  ],
  cmbx10: [
    [19,20,0], [27,21,0], [25,22,1], [23,21,0], [21,20,0], [25,20,0], [23,20,0], [25,21,0],
    [23,20,0], [25,20,0], [23,21,0], [22,21,0], [18,21,0], [18,21,0], [27,21,0], [27,21,0],
    [9,14,0], [10,20,6], [10,7,-14], [14,7,-14], [13,4,-15], [14,7,-14], [15,2,-16], [17,6,-15],
    [13,7,6], [17,22,1], [24,15,1], [25,15,1], [16,21,4], [30,20,0], [33,22,1], [25,24,2],
    [10,4,-8], [8,21,0], [14,12,-9], [26,27,6], [15,24,2], [26,24,2], [25,22,1], [8,12,-9],
    [12,30,8], [10,30,8], [15,14,-8], [25,23,4], [8,11,6], [10,3,-5], [7,5,0], [15,30,8],
    [16,20,1], [15,19,0], [15,19,0], [16,20,1], [16,20,0], [15,20,1], [16,20,1], [17,21,1],
    [16,20,1], [16,20,1], [7,13,0], [7,19,6], [8,21,6], [25,9,-3], [14,21,6], [14,21,0],
    [25,22,1], [24,21,0], [22,20,0], [23,22,1], [24,20,0], [21,20,0], [20,20,0], [25,22,1],
    [25,20,0], [12,20,0], [16,21,1], [25,20,0], [19,20,0], [31,20,0], [25,20,0], [24,22,1],
    [21,20,0], [24,27,6], [25,21,1], [17,22,1], [22,20,0], [25,21,1], [25,21,1], [34,21,1],
    [25,20,0], [25,20,0], [19,20,0], [9,30,8], [17,12,-9], [6,30,8], [13,6,-15], [7,6,-15],
    [7,12,-9], [17,15,1], [18,22,1], [14,15,1], [18,22,1], [15,15,1], [13,21,0], [17,20,6],
    [18,21,0], [9,21,0], [10,27,6], [18,21,0], [9,21,0], [28,14,0], [18,14,0], [16,15,1],
    [18,20,6], [18,20,6], [13,14,0], [13,15,1], [12,20,1], [18,15,1], [17,14,1], [24,14,1],
    [17,13,0], [17,19,6], [14,13,0], [17,2,-7], [34,2,-7], [15,7,-14], [14,4,-17], [14,6,-15]
  ],
  cmti10: [
    [21,20,0], [22,21,0], [23,22,1], [19,21,0], [22,20,0], [25,20,0], [23,20,0], [25,21,0],
    [22,20,0], [24,20,0], [23,21,0], [23,27,6], [19,27,6], [20,27,6], [28,27,6], [29,27,6],
    [10,14,1], [12,19,6], [13,7,-14], [16,7,-14], [16,5,-14], [17,6,-15], [17,2,-16], [20,6,-15],
    [10,7,6], [18,27,6], [21,14,1], [21,14,1], [16,20,4], [28,20,0], [31,22,1], [24,24,2],
    [10,4,-8], [11,21,0], [15,10,-11], [25,27,6], [21,22,1], [25,24,2], [24,22,1], [11,10,-11],
    [15,30,8], [12,30,8], [17,13,-9], [22,19,2], [7,10,6], [10,3,-5], [7,4,0], [18,30,8],
    [17,21,1], [14,20,0], [16,21,1], [17,21,1], [14,26,6], [17,21,1], [17,21,1], [19,21,1],
    [17,21,1], [17,21,1], [9,13,0], [9,19,6], [10,22,7], [23,8,-3], [13,22,7], [16,21,0],
    [23,22,1], [21,21,0], [22,20,0], [24,22,1], [23,20,0], [22,20,0], [22,20,0], [24,22,1],
    [25,20,0], [15,20,0], [19,21,1], [25,20,0], [19,20,0], [30,20,0], [25,20,0], [23,22,1],
    [22,20,0], [23,27,6], [21,21,1], [19,22,1], [24,20,0], [25,21,1], [26,21,1], [33,21,1],
    [24,20,0], [26,20,0], [21,20,0], [13,30,8], [18,10,-11], [12,30,8], [16,6,-15], [11,4,-16],
    [11,10,-11], [16,14,1], [14,22,1], [14,14,1], [17,22,1], [14,14,1], [15,27,6], [15,19,6],
    [16,22,1], [10,21,1], [13,26,6], [15,22,1], [9,22,1], [25,14,1], [17,14,1], [15,14,1],
    [15,19,6], [15,19,6], [15,14,1], [13,14,1], [11,20,1], [17,14,1], [15,14,1], [21,14,1],
    [16,14,1], [15,19,6], [14,14,1], [16,2,-7], [31,2,-7], [17,7,-14], [17,4,-16], [16,4,-16]
  ]
});

jsMath.Img.AddFont(249,{
  cmr10: [
    [20,24,0], [27,25,0], [25,25,1], [23,25,0], [22,24,0], [25,24,0], [23,24,0], [25,24,0],
    [23,24,0], [25,24,0], [24,24,0], [22,24,0], [18,24,0], [18,24,0], [28,24,0], [28,24,0],
    [9,16,0], [10,23,7], [10,7,-17], [14,7,-17], [13,5,-17], [14,7,-17], [15,2,-19], [16,7,-18],
    [13,8,7], [17,25,1], [24,17,1], [26,17,1], [16,23,4], [30,24,0], [34,25,1], [25,28,2],
    [9,5,-9], [7,25,0], [12,11,-13], [27,31,7], [16,28,2], [27,28,2], [25,26,1], [7,11,-13],
    [12,35,9], [10,35,9], [15,16,-10], [25,23,3], [7,11,7], [10,3,-6], [7,4,0], [16,35,9],
    [16,24,1], [15,23,0], [16,23,0], [16,24,1], [17,24,0], [16,24,1], [16,24,1], [17,24,1],
    [16,24,1], [16,24,1], [7,15,0], [7,22,7], [7,25,8], [25,9,-4], [15,24,7], [15,24,0],
    [25,25,1], [25,25,0], [23,24,0], [23,25,1], [25,24,0], [23,24,0], [21,24,0], [25,25,1],
    [25,24,0], [12,24,0], [16,25,1], [26,24,0], [20,24,0], [30,24,0], [25,24,0], [25,25,1],
    [22,24,0], [25,31,7], [25,25,1], [17,25,1], [24,24,0], [25,25,1], [25,25,1], [35,25,1],
    [25,24,0], [26,24,0], [20,24,0], [9,35,9], [16,11,-13], [6,35,9], [14,6,-18], [7,4,-19],
    [7,11,-13], [17,17,1], [18,25,1], [15,17,1], [18,25,1], [15,17,1], [13,24,0], [17,23,7],
    [19,24,0], [9,23,0], [10,30,7], [18,24,0], [9,24,0], [28,16,0], [19,16,0], [17,17,1],
    [18,23,7], [18,23,7], [13,16,0], [13,17,1], [12,22,1], [19,17,1], [18,16,1], [24,16,1],
    [18,15,0], [18,22,7], [14,15,0], [17,2,-8], [34,2,-8], [15,7,-17], [15,4,-19], [14,4,-19]
  ],
  cmmi10: [
    [25,24,0], [27,25,0], [26,25,1], [23,25,0], [27,24,0], [30,24,0], [28,24,0], [24,24,0],
    [22,24,0], [24,24,0], [27,24,0], [21,17,1], [21,31,7], [19,24,8], [16,26,1], [13,16,1],
    [17,31,7], [17,24,8], [16,25,1], [12,17,1], [19,17,1], [19,25,1], [20,24,8], [18,16,0],
    [16,31,7], [20,16,1], [18,24,8], [20,16,1], [18,16,1], [18,17,1], [20,31,7], [21,23,7],
    [22,31,7], [21,17,1], [15,17,1], [20,25,1], [28,16,1], [18,23,7], [14,20,4], [22,24,8],
    [33,11,-7], [33,11,1], [33,11,-7], [33,11,1], [8,9,-7], [8,9,-7], [17,19,1], [17,19,1],
    [16,17,1], [15,16,0], [16,16,0], [16,24,8], [17,23,7], [16,24,8], [16,24,1], [17,24,8],
    [16,24,1], [16,24,8], [7,4,0], [7,11,7], [24,21,2], [16,35,9], [24,21,2], [17,17,0],
    [20,26,1], [25,25,0], [26,24,0], [26,25,1], [28,24,0], [27,24,0], [26,24,0], [26,25,1],
    [30,24,0], [17,24,0], [22,25,1], [31,24,0], [22,24,0], [36,24,0], [30,24,0], [26,25,1],
    [26,24,0], [26,31,7], [26,25,1], [22,25,1], [24,24,0], [26,25,1], [27,25,1], [36,25,1],
    [29,24,0], [26,24,0], [25,24,0], [12,27,1], [11,33,8], [12,33,8], [33,9,-4], [33,9,-4],
    [14,25,1], [17,17,1], [15,25,1], [15,17,1], [18,25,1], [15,17,1], [19,31,7], [17,23,7],
    [19,25,1], [10,24,1], [15,30,7], [18,25,1], [9,25,1], [29,17,1], [20,17,1], [16,17,1],
    [19,23,7], [16,23,7], [15,17,1], [15,17,1], [12,23,1], [19,17,1], [16,17,1], [24,17,1],
    [18,17,1], [17,23,7], [16,17,1], [10,17,1], [14,23,7], [22,24,8], [22,8,-17], [23,5,-18]
  ],
  cmsy10: [
    [24,3,-7], [7,5,-6], [22,17,0], [15,15,-1], [25,21,2], [17,17,0], [25,23,0], [25,23,6],
    [25,23,3], [25,23,3], [25,23,3], [25,23,3], [25,23,3], [33,33,8], [16,15,-1], [16,15,-1],
    [25,17,0], [25,15,-1], [24,27,5], [24,27,5], [24,27,5], [24,27,5], [24,27,5], [24,27,5],
    [25,9,-4], [25,16,-1], [24,21,2], [24,21,2], [33,23,3], [33,23,3], [24,21,2], [24,21,2],
    [33,13,-2], [33,13,-2], [15,31,7], [15,31,7], [33,13,-2], [33,31,7], [33,31,7], [25,15,-1],
    [33,19,1], [33,19,1], [20,31,7], [20,31,7], [33,19,1], [33,31,7], [33,31,7], [25,17,1],
    [9,18,-1], [33,17,1], [20,21,2], [20,21,2], [29,25,0], [29,25,8], [22,33,8], [5,13,-2],
    [19,25,1], [17,24,0], [21,10,-3], [16,30,3], [25,26,1], [24,25,1], [25,23,0], [25,23,0],
    [19,24,0], [28,27,2], [23,25,1], [19,25,1], [27,24,0], [20,25,1], [29,26,2], [21,29,5],
    [28,26,2], [23,24,0], [29,29,5], [25,25,1], [23,25,1], [38,26,2], [35,29,2], [27,25,1],
    [25,26,2], [27,29,5], [29,25,1], [22,25,1], [28,25,0], [25,25,1], [23,26,2], [36,26,2],
    [28,24,0], [25,29,5], [27,24,0], [21,22,1], [21,22,1], [21,22,1], [21,22,1], [21,22,1],
    [19,24,0], [19,24,0], [15,35,9], [10,35,9], [15,35,9], [10,35,9], [15,35,9], [15,35,9],
    [12,35,9], [10,35,9], [6,35,9], [13,35,9], [15,37,10], [20,37,10], [16,35,9], [8,23,3],
    [29,35,33], [25,24,0], [27,26,2], [17,33,8], [21,21,0], [21,21,0], [25,27,5], [24,27,5],
    [13,31,7], [14,32,8], [14,31,7], [20,31,7], [26,30,5], [25,31,6], [25,27,2], [25,30,5]
  ],
  cmex10: [
    [15,42,40], [11,42,40], [14,42,40], [8,42,40], [16,42,40], [10,42,40], [16,42,40], [10,42,40],
    [16,42,40], [16,42,40], [14,42,40], [13,42,40], [7,23,22], [14,23,22], [18,42,40], [18,42,40],
    [20,62,60], [15,62,60], [24,83,81], [18,83,81], [18,83,81], [10,83,81], [20,83,81], [12,83,81],
    [20,83,81], [12,83,81], [22,83,81], [22,83,81], [23,83,81], [22,83,81], [34,83,81], [34,83,81],
    [26,103,101], [19,103,101], [20,103,101], [11,103,101], [22,103,101], [13,103,101], [22,103,101], [13,103,101],
    [23,103,101], [23,103,101], [24,103,101], [23,103,101], [42,103,101], [42,103,101], [26,62,60], [26,62,60],
    [29,63,61], [20,63,61], [23,62,60], [12,62,60], [23,62,60], [12,62,60], [14,22,21], [12,22,21],
    [25,32,31], [18,32,31], [25,32,31], [18,32,31], [18,63,62], [25,63,62], [18,12,11], [13,22,21],
    [29,62,60], [20,62,60], [14,22,21], [20,22,21], [18,62,60], [17,62,60], [27,35,34], [36,49,48],
    [21,39,38], [33,77,76], [36,35,34], [50,49,48], [36,35,34], [50,49,48], [36,35,34], [50,49,48],
    [34,35,34], [31,35,34], [21,39,38], [27,35,34], [27,35,34], [27,35,34], [27,35,34], [27,35,34],
    [48,49,48], [42,49,48], [33,77,76], [36,49,48], [36,49,48], [36,49,48], [36,49,48], [36,49,48],
    [31,35,34], [42,49,48], [21,7,-19], [36,8,-19], [51,8,-19], [19,5,-20], [34,5,-21], [50,5,-21],
    [16,62,60], [9,62,60], [18,62,60], [11,62,60], [18,62,60], [11,62,60], [19,62,60], [19,62,60],
    [35,42,40], [35,62,60], [35,83,81], [35,103,101], [26,63,62], [26,23,22], [37,22,20], [18,22,21],
    [19,22,21], [19,22,21], [17,13,8], [18,13,8], [17,12,0], [18,12,0], [25,22,21], [25,22,21]
  ],
  cmbx10: [
    [22,24,0], [31,24,0], [29,25,1], [27,24,0], [25,23,0], [30,24,0], [27,24,0], [29,24,0],
    [27,24,0], [29,24,0], [27,24,0], [26,24,0], [21,24,0], [21,24,0], [32,24,0], [32,24,0],
    [10,16,0], [12,23,7], [12,7,-17], [16,7,-17], [15,6,-17], [16,7,-17], [17,3,-18], [19,6,-18],
    [15,8,7], [20,25,1], [28,17,1], [30,17,1], [19,23,4], [35,24,0], [39,25,1], [29,29,3],
    [11,5,-9], [9,24,0], [16,13,-11], [31,31,7], [18,28,2], [31,28,2], [29,25,1], [9,13,-11],
    [13,35,9], [12,35,9], [17,16,-10], [29,27,5], [9,13,7], [11,5,-5], [9,6,0], [18,35,9],
    [18,24,1], [17,23,0], [18,23,0], [18,24,1], [19,23,0], [18,24,1], [18,24,1], [19,24,1],
    [18,24,1], [18,24,1], [9,16,0], [9,23,7], [9,24,7], [29,11,-3], [17,24,7], [17,24,0],
    [29,25,1], [29,24,0], [26,24,0], [27,25,1], [28,24,0], [25,24,0], [23,24,0], [29,25,1],
    [30,24,0], [14,24,0], [18,25,1], [29,24,0], [22,24,0], [36,24,0], [30,24,0], [28,25,1],
    [25,24,0], [28,31,7], [30,25,1], [20,25,1], [26,23,0], [29,25,1], [29,25,1], [40,25,1],
    [29,24,0], [29,24,0], [22,24,0], [10,35,9], [20,13,-11], [7,35,9], [16,7,-17], [9,6,-18],
    [9,13,-11], [19,17,1], [21,25,1], [17,17,1], [21,25,1], [17,17,1], [15,24,0], [19,23,7],
    [21,24,0], [10,24,0], [12,31,7], [20,24,0], [10,24,0], [32,16,0], [21,16,0], [19,17,1],
    [21,23,7], [21,23,7], [16,16,0], [15,17,1], [13,23,1], [21,17,1], [20,17,1], [28,17,1],
    [20,16,0], [20,23,7], [16,16,0], [20,2,-8], [40,2,-8], [17,8,-17], [17,5,-19], [17,6,-18]
  ],
  cmti10: [
    [25,24,0], [26,25,0], [27,25,1], [22,25,0], [26,24,0], [29,24,0], [27,24,0], [29,24,0],
    [25,24,0], [29,24,0], [26,24,0], [27,31,7], [22,31,7], [23,31,7], [33,31,7], [34,31,7],
    [12,17,1], [13,23,7], [15,7,-17], [19,7,-17], [19,5,-17], [20,7,-17], [20,2,-19], [23,7,-18],
    [12,8,7], [21,31,7], [25,17,1], [25,17,1], [19,23,4], [33,24,0], [36,25,1], [28,29,3],
    [12,5,-9], [13,25,0], [18,11,-13], [29,31,7], [24,25,1], [29,28,2], [28,26,1], [13,11,-13],
    [18,35,9], [13,35,9], [20,16,-10], [26,21,2], [8,11,7], [12,3,-6], [8,4,0], [21,35,9],
    [19,24,1], [16,23,0], [19,24,1], [20,24,1], [17,30,7], [20,24,1], [20,24,1], [22,24,1],
    [19,24,1], [19,24,1], [11,15,0], [11,22,7], [11,25,8], [27,9,-4], [16,25,8], [19,25,0],
    [27,25,1], [24,25,0], [25,24,0], [28,25,1], [27,24,0], [26,24,0], [25,24,0], [28,25,1],
    [29,24,0], [18,24,0], [22,25,1], [30,24,0], [22,24,0], [35,24,0], [29,24,0], [27,25,1],
    [25,24,0], [27,31,7], [25,25,1], [22,25,1], [28,24,0], [29,25,1], [30,25,1], [39,25,1],
    [29,24,0], [30,24,0], [24,24,0], [16,35,9], [21,11,-13], [14,35,9], [18,6,-18], [13,4,-19],
    [13,11,-13], [19,17,1], [16,25,1], [16,17,1], [20,25,1], [16,17,1], [17,31,7], [17,23,7],
    [19,25,1], [12,24,1], [15,30,7], [18,25,1], [11,25,1], [29,17,1], [20,17,1], [18,17,1],
    [18,23,7], [17,23,7], [17,17,1], [15,17,1], [13,23,1], [20,17,1], [17,17,1], [24,17,1],
    [18,17,1], [18,23,7], [16,17,1], [19,2,-8], [36,2,-8], [20,7,-17], [20,4,-19], [19,4,-19]
  ]
});

jsMath.Img.AddFont(298,{
  cmr10: [
    [24,28,0], [33,30,0], [30,30,1], [28,30,0], [26,28,0], [30,28,0], [28,28,0], [30,29,0],
    [28,28,0], [30,28,0], [28,29,0], [26,29,0], [22,29,0], [22,29,0], [33,29,0], [33,29,0],
    [11,19,0], [11,28,9], [13,9,-20], [17,9,-20], [16,6,-21], [17,8,-21], [18,3,-22], [20,8,-22],
    [16,10,9], [20,30,1], [29,20,1], [31,20,1], [20,27,5], [36,28,0], [41,30,1], [30,34,3],
    [11,6,-11], [8,30,0], [15,13,-16], [32,37,8], [19,34,3], [32,34,3], [30,31,1], [9,13,-16],
    [14,42,11], [12,42,11], [18,18,-13], [30,28,4], [9,13,8], [12,4,-7], [8,5,0], [19,42,11],
    [19,29,1], [18,28,0], [19,28,0], [19,29,1], [20,28,0], [19,29,1], [19,29,1], [20,29,1],
    [19,29,1], [19,29,1], [8,18,0], [8,26,8], [8,30,9], [30,11,-5], [18,30,9], [18,29,0],
    [30,30,1], [30,30,0], [27,28,0], [28,30,1], [29,28,0], [27,28,0], [26,28,0], [31,30,1],
    [30,28,0], [14,28,0], [20,29,1], [31,28,0], [24,28,0], [37,28,0], [30,28,0], [30,30,1],
    [26,28,0], [30,37,8], [31,29,1], [21,30,1], [29,28,0], [30,29,1], [30,29,1], [42,29,1],
    [30,28,0], [31,28,0], [23,28,0], [11,42,11], [20,13,-16], [7,42,11], [16,7,-22], [8,5,-23],
    [8,13,-16], [21,20,1], [22,30,1], [18,20,1], [22,30,1], [18,20,1], [15,29,0], [20,28,9],
    [22,29,0], [11,28,0], [11,37,9], [21,29,0], [11,29,0], [34,19,0], [22,19,0], [20,20,1],
    [22,27,8], [22,27,8], [15,19,0], [15,20,1], [14,27,1], [22,20,1], [21,19,1], [29,19,1],
    [22,18,0], [21,27,9], [17,18,0], [21,2,-10], [41,2,-10], [18,8,-21], [18,5,-23], [17,5,-23]
  ],
  cmmi10: [
    [30,28,0], [33,30,0], [31,30,1], [28,30,0], [32,28,0], [37,28,0], [34,28,0], [29,29,0],
    [27,28,0], [29,28,0], [33,29,0], [25,20,1], [25,37,8], [23,28,9], [19,31,1], [16,19,1],
    [20,38,9], [21,28,9], [19,30,1], [14,20,1], [23,20,1], [23,30,1], [24,28,9], [22,19,0],
    [19,38,9], [24,19,1], [21,28,9], [24,19,1], [21,19,1], [22,20,1], [24,38,9], [25,28,9],
    [27,38,9], [25,20,1], [18,20,1], [23,30,1], [34,19,1], [21,27,8], [17,24,5], [26,28,9],
    [39,12,-9], [39,13,1], [39,12,-9], [39,13,1], [10,11,-9], [10,11,-9], [20,22,1], [20,22,1],
    [19,20,1], [18,19,0], [19,19,0], [19,28,9], [20,28,8], [19,28,9], [19,29,1], [20,28,9],
    [19,29,1], [19,28,9], [8,5,0], [9,13,8], [29,25,2], [19,42,11], [29,25,2], [21,20,0],
    [24,31,1], [30,30,0], [31,28,0], [32,30,1], [33,28,0], [32,28,0], [31,28,0], [32,30,1],
    [37,28,0], [21,28,0], [26,29,1], [37,28,0], [27,28,0], [43,28,0], [37,28,0], [31,30,1],
    [31,28,0], [31,37,8], [31,29,1], [27,30,1], [29,28,0], [32,29,1], [32,29,1], [43,29,1],
    [35,28,0], [32,28,0], [30,28,0], [14,32,1], [13,39,9], [14,39,9], [39,11,-5], [39,11,-5],
    [17,30,1], [21,20,1], [18,30,1], [18,20,1], [22,30,1], [18,20,1], [23,38,9], [20,28,9],
    [23,30,1], [13,29,1], [18,37,9], [21,30,1], [11,30,1], [35,20,1], [24,20,1], [20,20,1],
    [23,27,8], [19,27,8], [18,20,1], [18,20,1], [14,27,1], [23,20,1], [20,20,1], [29,20,1],
    [22,20,1], [21,28,9], [20,20,1], [13,20,1], [16,28,9], [26,28,9], [26,9,-21], [27,6,-22]
  ],
  cmsy10: [
    [29,3,-9], [8,5,-8], [26,21,0], [18,19,-1], [30,24,2], [21,21,0], [30,28,0], [30,28,7],
    [30,28,4], [30,28,4], [30,28,4], [30,28,4], [30,28,4], [39,39,9], [19,17,-2], [19,17,-2],
    [30,20,0], [30,19,-1], [29,33,6], [29,33,6], [29,33,6], [29,33,6], [29,33,6], [29,33,6],
    [30,11,-5], [30,18,-2], [29,25,2], [29,25,2], [39,27,3], [39,27,3], [29,25,2], [29,25,2],
    [39,16,-2], [39,16,-2], [18,37,8], [18,37,8], [39,16,-2], [39,37,8], [39,38,9], [30,19,-1],
    [39,24,2], [39,24,2], [24,37,8], [24,37,8], [40,24,2], [39,37,8], [39,38,9], [30,20,1],
    [11,22,-1], [39,20,1], [24,25,2], [24,25,2], [34,30,0], [34,30,9], [27,39,9], [6,16,-2],
    [23,30,1], [21,29,0], [26,12,-3], [19,36,4], [30,31,1], [29,30,1], [30,28,0], [30,28,0],
    [23,29,0], [33,33,3], [28,30,1], [22,30,1], [32,28,0], [24,30,1], [34,30,2], [25,34,5],
    [34,30,2], [28,28,0], [35,33,5], [31,30,1], [27,30,1], [46,32,3], [43,35,3], [32,30,1],
    [31,31,3], [33,35,6], [35,29,1], [27,30,1], [33,30,0], [30,30,2], [28,30,2], [43,30,2],
    [34,28,0], [30,34,6], [32,28,0], [26,26,1], [26,26,1], [26,26,1], [26,26,1], [26,26,1],
    [23,29,0], [23,29,0], [18,42,11], [12,42,11], [18,42,11], [12,42,11], [18,42,11], [18,42,11],
    [14,42,11], [12,42,11], [7,42,11], [16,42,11], [18,44,12], [24,44,12], [19,42,11], [10,28,4],
    [35,42,40], [30,28,0], [33,30,2], [20,39,9], [25,25,0], [25,25,0], [30,33,6], [29,33,6],
    [16,38,9], [16,38,9], [16,38,9], [24,37,8], [31,36,6], [30,37,7], [30,32,2], [30,36,6]
  ],
  cmex10: [
    [17,50,48], [13,50,48], [17,50,48], [9,50,48], [19,50,48], [12,50,48], [19,50,48], [12,50,48],
    [20,50,48], [20,50,48], [17,50,48], [16,50,48], [8,27,26], [17,27,26], [22,50,48], [22,50,48],
    [23,75,73], [18,75,73], [29,99,97], [22,99,97], [22,99,97], [12,99,97], [24,99,97], [14,99,97],
    [24,99,97], [14,99,97], [26,99,97], [26,99,97], [27,99,97], [26,99,97], [41,99,97], [41,99,97],
    [32,124,122], [23,124,122], [24,124,122], [13,124,122], [26,124,122], [15,124,122], [26,124,122], [15,124,122],
    [28,124,122], [28,124,122], [29,124,122], [28,124,122], [51,124,122], [51,124,122], [31,75,73], [31,75,73],
    [35,75,73], [24,75,73], [28,75,73], [14,75,73], [28,75,73], [14,75,73], [17,26,25], [14,26,25],
    [30,39,38], [21,39,38], [30,38,37], [21,38,37], [21,76,75], [30,76,75], [21,14,13], [15,26,25],
    [35,76,73], [24,76,73], [17,27,26], [24,27,26], [22,75,73], [21,75,73], [32,42,41], [44,59,58],
    [25,47,46], [39,93,92], [44,42,41], [60,59,58], [44,42,41], [60,59,58], [44,42,41], [60,59,58],
    [41,42,41], [37,42,41], [25,47,46], [32,42,41], [32,42,41], [32,42,41], [32,42,41], [32,42,41],
    [57,59,58], [51,59,58], [39,93,92], [44,59,58], [44,59,58], [44,59,58], [44,59,58], [44,59,58],
    [37,42,41], [51,59,58], [24,8,-23], [43,9,-23], [61,9,-23], [23,6,-24], [41,6,-25], [60,6,-25],
    [19,75,73], [11,75,73], [21,75,73], [13,75,73], [21,75,73], [13,75,73], [23,75,73], [23,75,73],
    [42,50,48], [42,75,73], [42,99,97], [42,124,122], [31,75,74], [31,27,26], [45,26,24], [22,26,25],
    [23,26,25], [23,26,25], [20,14,9], [21,14,9], [20,14,0], [21,14,0], [30,26,25], [30,26,25]
  ],
  cmbx10: [
    [27,28,0], [37,29,0], [34,30,1], [32,29,0], [30,28,0], [36,28,0], [32,29,0], [34,29,0],
    [32,29,0], [34,29,0], [32,29,0], [31,29,0], [25,29,0], [25,29,0], [38,29,0], [38,29,0],
    [12,19,0], [14,28,9], [14,9,-20], [19,9,-20], [19,6,-21], [20,9,-20], [21,3,-22], [23,8,-21],
    [19,10,9], [24,30,1], [33,20,1], [36,20,1], [23,28,5], [42,29,0], [47,30,1], [34,34,3],
    [14,6,-11], [11,29,0], [19,15,-14], [37,37,8], [21,34,3], [37,34,3], [35,30,1], [11,15,-14],
    [16,42,11], [14,42,11], [21,19,-12], [34,32,6], [11,15,8], [14,5,-7], [10,7,0], [21,42,11],
    [22,28,1], [21,27,0], [22,27,0], [22,28,1], [23,27,0], [22,28,1], [22,28,1], [23,29,1],
    [22,28,1], [22,28,1], [10,19,0], [10,27,8], [11,30,9], [34,13,-4], [20,30,9], [20,29,0],
    [34,30,1], [34,29,0], [31,29,0], [32,30,1], [34,29,0], [30,28,0], [28,28,0], [35,30,1],
    [36,29,0], [17,29,0], [22,30,1], [35,29,0], [27,29,0], [44,29,0], [36,29,0], [33,30,1],
    [30,29,0], [33,37,8], [36,30,1], [24,30,1], [32,28,0], [35,30,1], [35,30,1], [48,30,1],
    [35,29,0], [35,29,0], [27,29,0], [13,42,11], [24,15,-14], [8,42,11], [19,8,-21], [10,7,-22],
    [10,15,-14], [23,20,1], [25,30,1], [20,20,1], [25,30,1], [21,20,1], [18,29,0], [23,28,9],
    [26,29,0], [12,29,0], [14,38,9], [25,29,0], [13,29,0], [39,19,0], [26,19,0], [23,20,1],
    [25,27,8], [25,27,8], [19,19,0], [18,20,1], [16,28,1], [26,20,1], [24,20,1], [33,20,1],
    [24,19,0], [24,28,9], [19,19,0], [24,2,-10], [48,2,-10], [21,9,-21], [20,5,-24], [20,7,-22]
  ],
  cmti10: [
    [29,28,0], [31,30,0], [33,30,1], [27,30,0], [31,28,0], [35,28,0], [33,28,0], [35,29,0],
    [30,28,0], [34,28,0], [32,29,0], [34,38,9], [27,38,9], [29,38,9], [40,38,9], [41,38,9],
    [14,20,1], [16,28,9], [18,9,-20], [23,9,-20], [23,6,-20], [24,8,-21], [24,3,-22], [28,8,-22],
    [14,9,8], [25,38,9], [30,20,1], [30,20,1], [23,28,5], [39,28,0], [44,30,1], [34,34,3],
    [15,6,-11], [16,30,0], [21,13,-16], [34,37,8], [29,30,1], [35,34,3], [33,31,1], [16,13,-16],
    [22,42,11], [16,42,11], [24,18,-13], [31,26,3], [10,13,8], [14,3,-7], [10,5,0], [26,42,11],
    [23,29,1], [19,28,0], [23,29,1], [24,29,1], [20,36,8], [24,29,1], [24,29,1], [26,29,1],
    [23,29,1], [23,29,1], [13,18,0], [13,26,8], [14,30,9], [32,11,-5], [19,30,9], [23,30,0],
    [33,30,1], [29,30,0], [31,28,0], [34,30,1], [32,28,0], [31,28,0], [31,28,0], [34,30,1],
    [35,28,0], [21,28,0], [26,29,1], [36,28,0], [26,28,0], [42,28,0], [35,28,0], [33,30,1],
    [30,28,0], [33,37,8], [30,29,1], [26,30,1], [34,28,0], [35,29,1], [36,29,1], [47,29,1],
    [34,28,0], [36,28,0], [29,28,0], [19,42,11], [26,13,-16], [16,42,11], [22,8,-21], [15,5,-23],
    [15,13,-16], [22,20,1], [19,30,1], [20,20,1], [23,30,1], [20,20,1], [21,38,9], [20,28,9],
    [22,30,1], [14,28,1], [17,36,9], [21,30,1], [13,30,1], [35,20,1], [25,20,1], [21,20,1],
    [21,27,8], [21,27,8], [21,20,1], [18,20,1], [16,27,1], [23,20,1], [21,20,1], [29,20,1],
    [22,20,1], [22,28,9], [20,20,1], [23,2,-10], [43,2,-10], [24,9,-20], [24,5,-23], [23,5,-23]
  ]
});

jsMath.Img.AddFont(358,{
  cmr10: [
    [29,34,0], [39,36,0], [36,37,2], [33,36,0], [31,34,0], [36,34,0], [33,34,0], [36,35,0],
    [33,34,0], [36,34,0], [34,35,0], [31,35,0], [26,35,0], [26,35,0], [40,35,0], [40,35,0],
    [13,22,0], [13,33,11], [15,11,-24], [20,11,-24], [19,7,-25], [20,9,-25], [22,2,-27], [24,10,-26],
    [18,11,10], [24,36,1], [34,23,1], [37,23,1], [23,32,5], [43,34,0], [49,37,2], [36,40,3],
    [13,7,-13], [10,36,0], [17,15,-19], [39,44,10], [22,40,3], [39,40,3], [36,38,2], [11,15,-19],
    [17,50,13], [15,50,13], [22,22,-15], [36,34,5], [10,16,10], [14,3,-9], [10,6,0], [22,50,13],
    [23,35,2], [21,33,0], [22,33,0], [23,35,2], [24,34,0], [22,35,2], [23,35,2], [24,36,2],
    [23,35,2], [23,35,2], [10,22,0], [10,32,10], [10,36,11], [36,12,-6], [21,36,11], [21,35,0],
    [36,36,1], [36,36,0], [32,34,0], [33,37,2], [35,34,0], [32,34,0], [30,34,0], [37,37,2],
    [36,34,0], [17,34,0], [23,36,2], [37,34,0], [29,34,0], [44,34,0], [36,34,0], [36,37,2],
    [31,34,0], [36,45,10], [36,36,2], [25,37,2], [34,34,0], [36,36,2], [36,36,2], [50,36,2],
    [36,34,0], [37,34,0], [28,34,0], [13,50,13], [23,15,-19], [8,50,13], [19,8,-26], [10,6,-27],
    [10,15,-19], [25,23,1], [26,35,1], [21,23,1], [26,35,1], [21,23,1], [18,35,0], [24,34,11],
    [27,34,0], [13,33,0], [13,44,11], [26,34,0], [13,34,0], [40,22,0], [27,22,0], [24,23,1],
    [26,32,10], [26,32,10], [18,22,0], [18,23,1], [17,32,1], [27,23,1], [25,23,1], [35,23,1],
    [26,22,0], [25,33,11], [20,22,0], [25,2,-12], [49,2,-12], [21,10,-25], [21,5,-28], [20,6,-27]
  ],
  cmmi10: [
    [36,34,0], [39,36,0], [37,37,2], [33,36,0], [39,34,0], [44,34,0], [40,34,0], [35,35,0],
    [32,34,0], [34,34,0], [39,35,0], [30,23,1], [29,45,10], [27,33,11], [23,36,1], [19,23,1],
    [24,46,11], [25,33,11], [23,36,1], [16,23,1], [27,23,1], [27,35,1], [29,33,11], [26,22,0],
    [22,46,11], [28,23,1], [25,33,11], [28,23,1], [26,23,1], [26,23,1], [29,45,11], [30,33,11],
    [32,45,11], [30,23,1], [22,25,2], [28,36,1], [41,23,1], [25,32,10], [21,28,6], [31,33,11],
    [47,15,-11], [47,15,1], [47,15,-11], [47,15,1], [11,12,-11], [11,12,-11], [24,26,1], [24,26,1],
    [23,25,2], [21,23,0], [22,23,0], [23,34,11], [24,33,10], [22,34,11], [23,35,2], [24,34,11],
    [23,35,2], [23,34,11], [10,6,0], [10,16,10], [34,29,2], [22,50,13], [34,29,2], [25,24,0],
    [28,38,2], [36,36,0], [38,34,0], [38,37,2], [40,34,0], [38,34,0], [37,34,0], [38,37,2],
    [44,34,0], [25,34,0], [32,36,2], [44,34,0], [32,34,0], [52,34,0], [44,34,0], [37,37,2],
    [37,34,0], [37,45,10], [37,36,2], [32,37,2], [35,34,0], [38,36,2], [38,36,2], [52,36,2],
    [42,34,0], [38,34,0], [36,34,0], [17,39,2], [16,47,11], [17,47,11], [47,13,-6], [47,13,-6],
    [20,36,1], [25,23,1], [21,35,1], [22,23,1], [26,35,1], [22,23,1], [28,46,11], [24,33,11],
    [27,35,1], [15,34,1], [21,44,11], [25,35,1], [13,35,1], [42,23,1], [28,23,1], [23,23,1],
    [27,32,10], [23,32,10], [22,23,1], [21,23,1], [17,32,1], [27,23,1], [23,23,1], [34,23,1],
    [26,23,1], [25,33,11], [23,23,1], [15,23,1], [19,33,11], [31,34,11], [31,10,-25], [32,7,-26]
  ],
  cmsy10: [
    [34,3,-11], [10,6,-9], [31,25,0], [22,22,-1], [36,28,2], [24,24,0], [36,33,0], [36,34,9],
    [36,34,5], [36,34,5], [36,34,5], [36,34,5], [36,34,5], [47,47,11], [22,20,-2], [22,20,-2],
    [36,24,0], [36,22,-1], [34,39,7], [34,39,7], [34,39,7], [34,39,7], [34,39,7], [34,39,7],
    [36,12,-6], [36,22,-2], [34,29,2], [34,29,2], [47,32,4], [47,32,4], [34,29,2], [34,29,2],
    [47,18,-3], [47,18,-3], [21,44,10], [21,44,10], [47,18,-3], [47,45,10], [47,44,10], [36,22,-1],
    [47,28,2], [47,28,2], [29,44,10], [29,44,10], [48,28,2], [47,45,10], [47,44,10], [36,23,1],
    [13,26,-2], [47,23,1], [29,29,2], [29,29,2], [41,36,0], [41,36,11], [32,47,11], [7,19,-3],
    [28,36,2], [25,34,0], [30,14,-4], [23,42,4], [35,38,2], [34,36,1], [36,33,0], [36,33,0],
    [28,34,0], [40,39,3], [33,37,2], [27,37,2], [38,34,0], [28,37,2], [41,36,2], [30,41,6],
    [41,37,3], [34,34,0], [42,40,6], [36,37,2], [33,37,2], [55,38,3], [50,41,3], [39,37,2],
    [36,37,3], [39,42,7], [42,36,2], [32,37,2], [40,36,0], [35,36,2], [33,37,3], [51,37,3],
    [40,34,0], [36,41,7], [38,34,0], [30,32,2], [30,32,2], [30,32,2], [30,32,2], [30,32,2],
    [28,34,0], [28,34,0], [21,50,13], [14,50,13], [21,50,13], [14,50,13], [21,50,13], [21,50,13],
    [17,50,13], [14,50,13], [8,50,13], [18,50,13], [21,52,14], [29,52,14], [22,50,13], [11,34,5],
    [42,50,48], [35,34,0], [39,36,2], [24,47,11], [30,30,0], [30,30,0], [35,39,7], [34,39,7],
    [19,46,11], [19,46,11], [19,46,11], [29,44,10], [37,43,7], [36,44,8], [36,38,2], [36,43,7]
  ],
  cmex10: [
    [21,59,57], [15,59,57], [20,59,57], [11,59,57], [22,59,57], [14,59,57], [22,59,57], [14,59,57],
    [23,59,57], [23,59,57], [20,59,57], [19,59,57], [10,33,31], [21,33,31], [26,59,57], [26,59,57],
    [28,89,87], [21,89,87], [35,118,116], [26,118,116], [26,118,116], [14,118,116], [28,118,116], [17,118,116],
    [28,118,116], [17,118,116], [31,118,116], [31,118,116], [32,118,116], [31,118,116], [49,118,116], [49,118,116],
    [38,147,145], [28,147,145], [28,147,145], [16,147,145], [31,147,145], [18,147,145], [31,147,145], [18,147,145],
    [33,147,145], [33,147,145], [35,148,146], [33,148,146], [60,147,145], [60,147,145], [37,89,87], [37,89,87],
    [42,89,87], [29,89,87], [33,89,87], [17,89,87], [33,89,87], [17,89,87], [20,31,30], [17,31,30],
    [36,46,45], [25,46,45], [36,46,45], [25,46,45], [25,90,89], [36,90,89], [25,17,16], [18,31,30],
    [42,90,87], [29,90,87], [20,31,30], [29,31,30], [26,89,87], [25,89,87], [39,50,49], [52,70,69],
    [30,56,55], [47,110,109], [52,50,49], [72,70,69], [52,50,49], [72,70,69], [52,50,49], [72,70,69],
    [49,50,49], [44,50,49], [30,56,55], [39,50,49], [39,50,49], [39,50,49], [39,50,49], [39,50,49],
    [68,70,69], [60,70,69], [47,110,109], [52,70,69], [52,70,69], [52,70,69], [52,70,69], [52,70,69],
    [44,50,49], [60,70,69], [29,10,-27], [51,10,-28], [72,10,-28], [28,7,-29], [49,7,-30], [71,7,-30],
    [23,89,87], [12,89,87], [25,89,87], [15,89,87], [25,89,87], [15,89,87], [27,89,87], [27,89,87],
    [50,59,57], [50,89,87], [50,118,116], [50,148,146], [37,90,89], [37,32,31], [53,31,29], [26,31,30],
    [28,31,30], [28,31,30], [25,17,11], [25,17,11], [25,17,0], [25,17,0], [36,31,30], [36,31,30]
  ],
  cmbx10: [
    [32,34,0], [45,35,0], [41,36,1], [38,35,0], [36,34,0], [43,34,0], [38,34,0], [41,35,0],
    [38,34,0], [41,34,0], [39,35,0], [37,35,0], [30,35,0], [30,35,0], [46,35,0], [46,35,0],
    [15,23,0], [17,33,10], [17,11,-24], [23,11,-24], [22,7,-25], [23,10,-24], [25,3,-27], [28,9,-26],
    [22,11,10], [28,36,1], [40,24,1], [43,24,1], [27,34,6], [50,34,0], [56,36,1], [41,40,3],
    [16,7,-13], [13,35,0], [23,18,-16], [44,44,10], [25,40,3], [44,40,3], [41,36,1], [13,18,-16],
    [19,50,13], [17,50,13], [25,22,-15], [41,39,7], [13,18,10], [16,6,-8], [12,8,0], [25,50,13],
    [26,34,1], [25,33,0], [26,33,0], [26,34,1], [27,33,0], [26,34,1], [26,34,1], [28,35,1],
    [26,34,1], [26,34,1], [12,22,0], [12,32,10], [13,36,11], [41,15,-5], [24,35,10], [24,35,0],
    [41,36,1], [41,35,0], [37,34,0], [38,36,1], [41,34,0], [36,34,0], [34,34,0], [42,36,1],
    [43,34,0], [20,34,0], [26,35,1], [42,34,0], [32,34,0], [52,34,0], [43,34,0], [40,36,1],
    [36,34,0], [40,45,10], [43,35,1], [29,36,1], [38,34,0], [42,35,1], [42,35,1], [58,35,1],
    [41,34,0], [42,34,0], [32,34,0], [15,50,13], [28,18,-16], [10,50,13], [22,9,-25], [12,9,-26],
    [12,18,-16], [28,24,1], [30,35,1], [24,24,1], [30,35,1], [25,24,1], [22,35,0], [28,33,10],
    [31,34,0], [15,35,0], [17,45,10], [29,34,0], [15,34,0], [46,23,0], [31,23,0], [27,24,1],
    [30,33,10], [30,33,10], [22,23,0], [21,24,1], [19,33,1], [31,24,1], [29,23,1], [40,23,1],
    [29,22,0], [29,32,10], [23,22,0], [29,3,-12], [57,3,-12], [25,10,-25], [24,6,-28], [24,9,-26]
  ],
  cmti10: [
    [35,34,0], [37,36,0], [39,37,2], [32,36,0], [37,34,0], [42,34,0], [39,34,0], [41,35,0],
    [36,34,0], [41,34,0], [38,35,0], [40,46,11], [32,46,11], [34,46,11], [47,46,11], [49,46,11],
    [17,23,1], [18,33,11], [22,11,-24], [27,11,-24], [27,7,-24], [28,9,-25], [28,2,-27], [33,10,-26],
    [17,11,10], [30,46,11], [36,23,1], [36,23,1], [27,33,6], [47,34,0], [52,37,2], [41,40,3],
    [17,7,-13], [19,36,0], [26,15,-19], [41,44,10], [35,36,1], [42,40,3], [40,38,2], [19,15,-19],
    [26,50,13], [19,50,13], [29,22,-15], [37,31,3], [11,16,10], [17,3,-9], [11,6,0], [31,50,13],
    [28,35,2], [23,33,0], [27,35,2], [28,35,2], [24,43,10], [28,35,2], [28,35,2], [31,35,2],
    [28,35,2], [28,35,2], [15,22,0], [15,32,10], [16,36,11], [39,12,-6], [22,36,11], [27,36,0],
    [39,36,1], [34,36,0], [36,34,0], [40,37,2], [38,34,0], [37,34,0], [36,34,0], [40,37,2],
    [42,34,0], [25,34,0], [31,36,2], [43,34,0], [31,34,0], [50,34,0], [42,34,0], [39,37,2],
    [36,34,0], [39,45,10], [36,36,2], [31,37,2], [40,34,0], [42,36,2], [43,36,2], [56,36,2],
    [41,34,0], [43,34,0], [35,34,0], [22,50,13], [30,15,-19], [19,50,13], [26,8,-26], [18,6,-27],
    [18,15,-19], [27,23,1], [23,35,1], [24,23,1], [28,35,1], [23,23,1], [25,46,11], [24,33,11],
    [27,35,1], [17,34,1], [20,44,11], [25,35,1], [15,35,1], [42,23,1], [29,23,1], [25,23,1],
    [25,32,10], [25,32,10], [24,23,1], [21,23,1], [19,32,1], [28,23,1], [25,23,1], [35,23,1],
    [26,23,1], [26,33,11], [23,23,1], [27,2,-12], [51,2,-12], [29,11,-24], [29,6,-27], [27,6,-27]
  ]
});

jsMath.Img.AddFont(430,{
  cmr10: [
    [35,41,0], [47,43,0], [43,44,2], [39,43,0], [37,40,0], [43,41,0], [40,41,0], [43,42,0],
    [40,41,0], [43,41,0], [40,42,0], [38,42,0], [32,42,0], [32,42,0], [48,42,0], [48,42,0],
    [15,27,0], [16,40,13], [18,12,-30], [24,12,-30], [23,8,-30], [24,11,-30], [26,3,-32], [28,12,-31],
    [22,13,12], [28,43,1], [41,28,1], [45,28,1], [28,39,7], [52,41,0], [59,44,2], [43,48,4],
    [16,8,-16], [12,43,0], [21,18,-23], [46,53,12], [27,49,4], [46,49,4], [43,45,2], [13,18,-23],
    [20,60,15], [18,60,15], [26,27,-18], [43,40,5], [12,19,12], [17,4,-11], [12,7,0], [27,60,15],
    [28,42,2], [25,40,0], [27,40,0], [27,42,2], [28,40,0], [27,42,2], [27,42,2], [29,42,2],
    [27,42,2], [27,42,2], [12,26,0], [12,38,12], [12,43,13], [43,15,-7], [25,43,13], [25,42,0],
    [43,43,1], [43,43,0], [39,41,0], [40,44,2], [42,41,0], [39,41,0], [36,41,0], [44,44,2],
    [43,41,0], [20,41,0], [28,43,2], [44,41,0], [35,41,0], [52,41,0], [43,41,0], [43,44,2],
    [37,41,0], [43,54,12], [44,43,2], [30,44,2], [41,40,0], [43,43,2], [44,43,2], [60,43,2],
    [43,41,0], [44,41,0], [34,41,0], [16,60,15], [28,18,-23], [10,60,15], [23,10,-31], [12,7,-33],
    [12,18,-23], [30,28,1], [31,42,1], [25,28,1], [32,42,1], [25,28,1], [22,42,0], [29,40,13],
    [32,41,0], [15,40,0], [16,53,13], [31,41,0], [16,41,0], [48,27,0], [32,27,0], [28,28,1],
    [31,39,12], [32,39,12], [22,27,0], [22,28,1], [20,38,1], [32,28,1], [30,27,1], [42,27,1],
    [31,26,0], [30,39,13], [24,26,0], [30,2,-15], [59,2,-15], [25,12,-30], [25,7,-33], [24,7,-33]
  ],
  cmmi10: [
    [43,41,0], [47,43,0], [44,44,2], [40,43,0], [46,40,0], [52,41,0], [48,41,0], [42,42,0],
    [38,41,0], [41,41,0], [47,42,0], [36,28,1], [35,54,12], [33,40,13], [27,43,1], [23,27,1],
    [28,55,13], [30,40,13], [27,43,1], [20,28,1], [33,28,1], [33,42,1], [34,40,13], [31,27,0],
    [27,55,13], [34,27,1], [30,40,13], [34,27,1], [31,27,1], [31,28,1], [34,54,13], [36,40,13],
    [38,54,13], [36,28,1], [26,29,2], [34,43,1], [49,27,1], [30,39,12], [25,34,7], [37,40,13],
    [56,18,-13], [56,17,1], [56,18,-13], [56,17,1], [14,15,-13], [14,15,-13], [28,31,1], [28,31,1],
    [28,29,2], [25,27,0], [27,27,0], [27,40,13], [28,40,12], [27,40,13], [27,42,2], [29,41,13],
    [27,42,2], [27,40,13], [12,7,0], [12,19,12], [41,35,3], [27,60,15], [41,35,3], [30,29,0],
    [34,45,2], [43,43,0], [45,41,0], [45,44,2], [48,41,0], [46,41,0], [45,41,0], [45,44,2],
    [52,41,0], [30,41,0], [38,43,2], [53,41,0], [38,41,0], [62,41,0], [52,41,0], [44,44,2],
    [45,41,0], [44,54,12], [45,43,2], [39,44,2], [42,40,0], [45,43,2], [46,43,2], [62,43,2],
    [51,41,0], [45,41,0], [43,41,0], [20,47,2], [19,56,13], [20,56,13], [56,15,-7], [56,16,-7],
    [24,43,1], [30,28,1], [25,42,1], [26,28,1], [31,42,1], [26,28,1], [33,55,13], [28,40,13],
    [33,42,1], [18,40,1], [25,52,13], [30,42,1], [16,42,1], [51,28,1], [34,28,1], [28,28,1],
    [31,39,12], [27,39,12], [26,28,1], [25,28,1], [20,38,1], [33,28,1], [28,28,1], [41,28,1],
    [32,28,1], [29,40,13], [28,28,1], [18,28,1], [23,40,13], [37,40,13], [37,13,-30], [39,9,-31]
  ],
  cmsy10: [
    [41,3,-13], [12,7,-11], [38,29,0], [26,26,-2], [43,34,2], [29,29,0], [43,40,0], [43,40,10],
    [43,40,5], [43,40,5], [43,40,5], [43,40,5], [43,40,5], [56,56,13], [27,24,-3], [27,24,-3],
    [43,29,0], [43,26,-2], [41,47,9], [41,47,9], [41,47,9], [41,47,9], [41,47,9], [41,47,9],
    [43,15,-7], [43,26,-3], [41,35,3], [41,35,3], [56,38,4], [56,38,4], [41,35,3], [41,35,3],
    [56,22,-4], [56,22,-4], [26,53,12], [26,53,12], [56,22,-4], [56,54,12], [56,53,12], [43,26,-2],
    [56,33,2], [56,33,2], [35,53,12], [35,53,12], [57,33,2], [56,54,12], [56,53,12], [43,28,1],
    [16,31,-2], [56,28,1], [35,35,3], [35,35,3], [49,43,0], [49,43,13], [38,56,13], [8,23,-3],
    [33,43,2], [30,41,0], [36,16,-5], [27,51,5], [43,45,2], [41,43,1], [43,40,0], [43,40,0],
    [33,41,0], [48,46,3], [40,44,2], [32,44,2], [46,41,0], [34,44,2], [49,43,2], [36,50,8],
    [49,44,3], [40,41,0], [50,49,8], [44,44,2], [39,44,2], [66,45,3], [60,49,3], [46,44,2],
    [44,44,3], [47,50,8], [50,43,2], [38,44,2], [48,43,0], [42,43,2], [39,44,3], [62,44,3],
    [48,41,0], [43,49,8], [46,41,0], [36,38,2], [36,38,2], [36,38,2], [36,38,2], [36,38,2],
    [33,41,0], [33,41,0], [25,60,15], [16,60,15], [25,60,15], [16,60,15], [26,60,15], [26,60,15],
    [20,60,15], [17,60,15], [10,60,15], [22,60,15], [26,63,17], [35,63,17], [27,60,15], [14,40,5],
    [51,60,57], [43,41,0], [47,43,2], [28,56,13], [36,36,0], [36,36,0], [43,47,9], [41,47,9],
    [23,55,13], [23,55,13], [23,55,13], [35,53,12], [45,51,8], [43,53,10], [43,45,2], [43,51,8]
  ],
  cmex10: [
    [25,72,69], [18,72,69], [24,72,69], [13,72,69], [27,72,69], [16,72,69], [27,72,69], [16,72,69],
    [28,72,69], [28,72,69], [24,72,69], [22,72,69], [12,39,37], [25,39,37], [31,72,69], [31,72,69],
    [34,107,104], [25,107,104], [42,143,140], [32,143,140], [31,143,140], [17,143,140], [34,143,140], [20,143,140],
    [34,143,140], [20,143,140], [37,143,140], [37,143,140], [39,143,140], [37,143,140], [59,143,140], [59,143,140],
    [45,178,175], [33,178,175], [34,178,175], [19,178,175], [37,178,175], [22,178,175], [37,178,175], [22,178,175],
    [39,178,175], [39,178,175], [42,178,175], [40,178,175], [73,178,175], [73,178,175], [45,107,104], [45,107,104],
    [50,108,105], [35,108,105], [39,107,104], [21,107,104], [39,107,104], [21,107,104], [24,37,36], [21,37,36],
    [43,55,54], [30,55,54], [43,55,54], [30,55,54], [30,108,107], [43,108,107], [30,20,19], [21,37,36],
    [50,107,104], [35,107,104], [24,37,36], [35,37,36], [31,107,104], [30,107,104], [46,60,59], [63,84,83],
    [36,67,66], [56,133,132], [63,60,59], [86,84,83], [63,60,59], [86,84,83], [63,60,59], [86,84,83],
    [59,60,59], [53,60,59], [36,67,66], [46,60,59], [46,60,59], [46,60,59], [46,60,59], [46,60,59],
    [82,84,83], [73,84,83], [56,133,132], [63,84,83], [63,84,83], [63,84,83], [63,84,83], [63,84,83],
    [53,60,59], [73,84,83], [35,11,-33], [61,13,-33], [87,13,-33], [33,8,-35], [59,9,-36], [86,9,-36],
    [27,107,104], [15,107,104], [31,107,104], [18,107,104], [31,107,104], [18,107,104], [33,107,104], [33,107,104],
    [61,72,69], [61,107,104], [61,143,140], [61,178,175], [44,109,107], [44,39,37], [64,38,35], [31,37,36],
    [33,37,36], [33,37,36], [30,21,13], [29,21,13], [30,20,0], [29,20,0], [43,37,36], [43,37,36]
  ],
  cmbx10: [
    [38,41,0], [54,42,0], [49,43,1], [46,42,0], [43,40,0], [51,41,0], [46,41,0], [49,42,0],
    [46,41,0], [49,41,0], [46,42,0], [45,42,0], [36,42,0], [36,42,0], [55,42,0], [55,42,0],
    [17,27,0], [20,39,12], [20,12,-30], [27,12,-30], [27,9,-30], [28,12,-29], [30,4,-32], [33,11,-31],
    [26,13,12], [34,43,1], [48,28,1], [51,28,1], [32,40,7], [60,41,0], [68,43,1], [49,49,4],
    [19,8,-16], [15,42,0], [28,21,-20], [53,53,12], [31,49,4], [53,49,4], [50,43,1], [15,21,-20],
    [23,60,15], [20,60,15], [30,27,-18], [49,46,8], [15,22,12], [19,6,-10], [14,10,0], [31,60,15],
    [32,40,1], [30,39,0], [31,39,0], [32,40,1], [32,39,0], [31,40,1], [32,40,1], [33,41,1],
    [32,40,1], [32,40,1], [14,27,0], [15,39,12], [15,43,13], [49,18,-6], [29,42,12], [29,42,0],
    [49,43,1], [49,42,0], [45,41,0], [46,43,1], [49,41,0], [43,41,0], [40,41,0], [50,43,1],
    [51,41,0], [24,41,0], [32,42,1], [51,41,0], [38,41,0], [63,41,0], [51,41,0], [48,43,1],
    [43,41,0], [48,54,12], [51,42,1], [34,43,1], [45,40,0], [50,42,1], [50,42,1], [69,42,1],
    [50,41,0], [51,41,0], [39,41,0], [18,60,15], [34,21,-20], [12,60,15], [27,10,-31], [14,10,-31],
    [14,21,-20], [33,28,1], [36,42,1], [29,28,1], [36,42,1], [30,28,1], [26,42,0], [33,39,12],
    [37,41,0], [17,41,0], [20,53,12], [35,41,0], [18,41,0], [56,27,0], [37,27,0], [32,28,1],
    [36,39,12], [36,39,12], [27,27,0], [25,28,1], [23,39,1], [37,28,1], [35,28,1], [48,28,1],
    [35,27,0], [35,39,12], [28,27,0], [34,3,-15], [68,3,-15], [29,12,-30], [29,7,-34], [28,9,-32]
  ],
  cmti10: [
    [42,41,0], [45,43,0], [47,44,2], [38,43,0], [45,40,0], [51,41,0], [47,41,0], [50,42,0],
    [44,41,0], [49,41,0], [45,42,0], [47,55,13], [38,55,13], [40,55,13], [57,55,13], [58,55,13],
    [20,28,1], [22,40,13], [26,13,-29], [33,13,-29], [32,9,-29], [34,11,-30], [34,3,-32], [40,12,-31],
    [20,13,12], [37,55,13], [43,28,1], [43,28,1], [33,39,7], [57,41,0], [63,44,2], [49,48,4],
    [21,8,-16], [23,43,0], [31,18,-23], [49,53,12], [42,43,1], [50,49,4], [48,45,2], [22,18,-23],
    [31,60,15], [23,60,15], [35,27,-18], [45,37,4], [14,19,12], [20,4,-11], [14,7,0], [37,60,15],
    [33,42,2], [28,40,0], [33,42,2], [34,42,2], [28,52,12], [34,42,2], [34,42,2], [37,42,2],
    [33,42,2], [33,42,2], [18,26,0], [18,38,12], [19,43,13], [46,15,-7], [27,43,13], [33,43,0],
    [47,43,1], [41,43,0], [44,41,0], [48,44,2], [46,41,0], [44,41,0], [44,41,0], [48,44,2],
    [51,41,0], [30,41,0], [37,43,2], [51,41,0], [37,41,0], [60,41,0], [51,41,0], [47,44,2],
    [44,41,0], [47,54,12], [43,43,2], [38,44,2], [48,40,0], [51,43,2], [52,43,2], [67,43,2],
    [49,41,0], [52,41,0], [42,41,0], [27,60,15], [36,18,-23], [23,60,15], [31,10,-31], [22,7,-33],
    [22,18,-23], [32,28,1], [28,42,1], [28,28,1], [34,42,1], [28,28,1], [29,55,13], [29,40,13],
    [32,42,1], [20,40,1], [25,52,13], [30,42,1], [19,42,1], [50,28,1], [35,28,1], [31,28,1],
    [31,39,12], [30,39,12], [29,28,1], [25,28,1], [22,38,1], [34,28,1], [30,28,1], [42,28,1],
    [31,28,1], [31,40,13], [28,28,1], [33,2,-15], [62,2,-15], [34,13,-29], [34,7,-33], [33,7,-33]
  ]
});

Index: loncom/html/adm/jsMath/uncompressed/jsMath-fallback-mac.js
+++ loncom/html/adm/jsMath/uncompressed/jsMath-fallback-mac.js
/*
 *  jsMath-fallback-mac.js
 *  
 *  Part of the jsMath package for mathematics on the web.
 *
 *  This file makes changes needed for when the TeX fonts are not available
 *  with a browser on the Mac.
 *
 *  ---------------------------------------------------------------------
 *
 *  Copyright 2004-2006 by Davide P. Cervone
 * 
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */



/********************************************************************
 *
 *  Here we replace the TeX character mappings by equivalent unicode
 *  points when possible, and adjust the character dimensions
 *  based on the fonts we hope we get them from (the styles are set
 *  to try to use the best characters available in the standard
 *  fonts).
 */

jsMath.Script.Start();

jsMath.Add(jsMath.TeX,{

  cmr10: [
    // 00 - 0F
    {c: '&Gamma;', tclass: 'greek'},
    {c: '&Delta;', tclass: 'greek'},
    {c: '&Theta;', tclass: 'greek'},
    {c: '&Lambda;', tclass: 'greek'},
    {c: '&Xi;', tclass: 'greek'},
    {c: '&Pi;', tclass: 'greek'},
    {c: '&Sigma;', tclass: 'greek'},
    {c: '&Upsilon;', tclass: 'greek'},
    {c: '&Phi;', tclass: 'greek'},
    {c: '&Psi;', tclass: 'greek'},
    {c: '&Omega;', tclass: 'greek'},
    {c: 'ff', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 14, '108': 15}, tclass: 'normal'},
    {c: 'fi', tclass: 'normal'},
    {c: 'fl', tclass: 'normal'},
    {c: 'ffi', tclass: 'normal'},
    {c: 'ffl', tclass: 'normal'},
    // 10 - 1F
    {c: '&#x131;', a:0, tclass: 'normal'},
    {c: 'j', d:.2, tclass: 'normal'},
    {c: '&#x60;', tclass: 'accent'},
    {c: '&#xB4;', tclass: 'accent'},
    {c: '&#x2C7;', tclass: 'accent'},
    {c: '&#x2D8;', tclass: 'accent'},
    {c: '<span style="position:relative; top:.1em">&#x2C9;</span>', tclass: 'accent'},
    {c: '&#x2DA;', tclass: 'accent'},
    {c: '&#x0327;', tclass: 'normal'},
    {c: '&#xDF;', tclass: 'normal'},
    {c: '&#xE6;', a:0, tclass: 'normal'},
    {c: '&#x153;', a:0, tclass: 'normal'},
    {c: '&#xF8;', tclass: 'normal'},
    {c: '&#xC6;', tclass: 'normal'},
    {c: '&#x152;', tclass: 'normal'},
    {c: '&#xD8;', tclass: 'normal'},
    // 20 - 2F
    {c: '?', krn: {'108': -0.278, '76': -0.319}, tclass: 'normal'},
    {c: '!', lig: {'96': 60}, tclass: 'normal'},
    {c: '&#x201D;', tclass: 'normal'},
    {c: '#', tclass: 'normal'},
    {c: '$', tclass: 'normal'},
    {c: '%', tclass: 'normal'},
    {c: '&amp;', tclass: 'normal'},
    {c: '&#x2019;', krn: {'63': 0.111, '33': 0.111}, lig: {'39': 34}, tclass: 'normal'},
    {c: '(', d:.2, tclass: 'normal'},
    {c: ')', d:.2, tclass: 'normal'},
    {c: '*', tclass: 'normal'},
    {c: '+', a:.1, tclass: 'normal'},
    {c: ',', a:-.3, d:.2, w: 0.278, tclass: 'normal'},
    {c: '-', a:0, lig: {'45': 123}, tclass: 'normal'},
    {c: '.', a:-.25, tclass: 'normal'},
    {c: '/', tclass: 'normal'},
    // 30 - 3F
    {c: '0', tclass: 'normal'},
    {c: '1', tclass: 'normal'},
    {c: '2', tclass: 'normal'},
    {c: '3', tclass: 'normal'},
    {c: '4', tclass: 'normal'},
    {c: '5', tclass: 'normal'},
    {c: '6', tclass: 'normal'},
    {c: '7', tclass: 'normal'},
    {c: '8', tclass: 'normal'},
    {c: '9', tclass: 'normal'},
    {c: ':', tclass: 'normal'},
    {c: ';', tclass: 'normal'},
    {c: '&#xA1;', tclass: 'normal'},
    {c: '=', a:0, d:-.1, tclass: 'normal'},
    {c: '&#xBF;', tclass: 'normal'},
    {c: '?', lig: {'96': 62}, tclass: 'normal'},
    // 40 - 4F
    {c: '@', tclass: 'normal'},
    {c: 'A', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
    {c: 'B', tclass: 'normal'},
    {c: 'C', tclass: 'normal'},
    {c: 'D', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
    {c: 'E', tclass: 'normal'},
    {c: 'F', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
    {c: 'G', tclass: 'normal'},
    {c: 'H', tclass: 'normal'},
    {c: 'I', krn: {'73': 0.0278}, tclass: 'normal'},
    {c: 'J', tclass: 'normal'},
    {c: 'K', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
    {c: 'L', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
    {c: 'M', tclass: 'normal'},
    {c: 'N', tclass: 'normal'},
    {c: 'O', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
    // 50 - 5F
    {c: 'P', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
    {c: 'Q', d:.1, tclass: 'normal'},
    {c: 'R', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
    {c: 'S', tclass: 'normal'},
    {c: 'T', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
    {c: 'U', tclass: 'normal'},
    {c: 'V', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
    {c: 'W', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
    {c: 'X', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
    {c: 'Y', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
    {c: 'Z', tclass: 'normal'},
    {c: '[', d:.1, tclass: 'normal'},
    {c: '&#x201C;', tclass: 'normal'},
    {c: ']', d:.1, tclass: 'normal'},
    {c: '&#x2C6;', tclass: 'accent'},
    {c: '&#x2D9;', tclass: 'accent'},
    // 60 - 6F
    {c: '&#x2018;', lig: {'96': 92}, tclass: 'normal'},
    {c: 'a', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
    {c: 'b', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
    {c: 'c', a:0, krn: {'104': -0.0278, '107': -0.0278}, tclass: 'normal'},
    {c: 'd', tclass: 'normal'},
    {c: 'e', a:0, tclass: 'normal'},
    {c: 'f', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'normal'},
    {c: 'g', a:0, d:.2, ic: 0.0139, krn: {'106': 0.0278}, tclass: 'normal'},
    {c: 'h', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
    {c: 'i', tclass: 'normal'},
    {c: 'j', d:.2, tclass: 'normal'},
    {c: 'k', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
    {c: 'l', tclass: 'normal'},
    {c: 'm', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
    {c: 'n', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
    {c: 'o', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
    // 70 - 7F
    {c: 'p', a:0, d:.2, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
    {c: 'q', a:0, d:.2, tclass: 'normal'},
    {c: 'r', a:0, tclass: 'normal'},
    {c: 's', a:0, tclass: 'normal'},
    {c: 't', krn: {'121': -0.0278, '119': -0.0278}, tclass: 'normal'},
    {c: 'u', a:0, krn: {'119': -0.0278}, tclass: 'normal'},
    {c: 'v', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
    {c: 'w', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
    {c: 'x', a:0, tclass: 'normal'},
    {c: 'y', a:0, d:.2, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
    {c: 'z', a:0, tclass: 'normal'},
    {c: '&#x2013;', a:.1, ic: 0.0278, lig: {'45': 124}, tclass: 'normal'},
    {c: '&#x2014;', a:.1, ic: 0.0278, tclass: 'normal'},
    {c: '&#x2DD;', tclass: 'accent'},
    {c: '&#x2DC;', tclass: 'accent'},
    {c: '&#xA8;', tclass: 'accent'}
  ],
  
  cmmi10: [
    // 00 - 0F
    {c: '&Gamma;', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'igreek'},
    {c: '&Delta;', krn: {'127': 0.167}, tclass: 'igreek'},
    {c: '&Theta;', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'igreek'},
    {c: '&Lambda;', krn: {'127': 0.167}, tclass: 'igreek'},
    {c: '&Xi;', ic: 0.0757, krn: {'127': 0.0833}, tclass: 'igreek'},
    {c: '&Pi;', ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'igreek'},
    {c: '&Sigma;', ic: 0.0576, krn: {'127': 0.0833}, tclass: 'igreek'},
    {c: '&Upsilon;', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0556}, tclass: 'igreek'},
    {c: '&Phi;', krn: {'127': 0.0833}, tclass: 'igreek'},
    {c: '&Psi;', ic: 0.11, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'igreek'},
    {c: '&Omega;', ic: 0.0502, krn: {'127': 0.0833}, tclass: 'igreek'},
    {c: '&alpha;', a:0, ic: 0.0037, krn: {'127': 0.0278}, tclass: 'greek'},
    {c: '&beta;', d:.2, ic: 0.0528, krn: {'127': 0.0833}, tclass: 'greek'},
    {c: '&gamma;', a:0, d:.2, ic: 0.0556, tclass: 'greek'},
    {c: '&delta;', ic: 0.0378, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'greek'},
    {c: '&epsilon;', a:0, krn: {'127': 0.0556}, tclass: 'lucida'},
    // 10 - 1F
    {c: '&zeta;', d:.2, ic: 0.0738, krn: {'127': 0.0833}, tclass: 'greek'},
    {c: '&eta;', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0556}, tclass: 'greek'},
    {c: '&theta;', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'greek'},
    {c: '&iota;', a:0, krn: {'127': 0.0556}, tclass: 'greek'},
    {c: '&kappa;', a:0, tclass: 'greek'},
    {c: '&lambda;', tclass: 'greek'},
    {c: '&mu;', a:0, d:.2, krn: {'127': 0.0278}, tclass: 'greek'},
    {c: '&nu;', a:0, ic: 0.0637, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}, tclass: 'greek'},
    {c: '&xi;', d:.2, ic: 0.046, krn: {'127': 0.111}, tclass: 'greek'},
    {c: '&pi;', a:0, ic: 0.0359, tclass: 'greek'},
    {c: '&rho;', a:0, d:.2, krn: {'127': 0.0833}, tclass: 'greek'},
    {c: '&sigma;', a:0, ic: 0.0359, krn: {'59': -0.0556, '58': -0.0556}, tclass: 'greek'},
    {c: '&tau;', a:0, ic: 0.113, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}, tclass: 'greek'},
    {c: '&upsilon;', a:0, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'greek'},
    {c: '&phi;', a:.1, d:.2, krn: {'127': 0.0833}, tclass: 'greek'},
    {c: '&chi;', a:0, d:.2, krn: {'127': 0.0556}, tclass: 'greek'},
    // 20 - 2F
    {c: '&psi;', a:.1, d:.2, ic: 0.0359, krn: {'127': 0.111}, tclass: 'greek'},
    {c: '&omega;', a:0, ic: 0.0359, tclass: 'greek'},
    {c: '&epsilon;', a:0, krn: {'127': 0.0833}, tclass: 'greek'},
    {c: '&#x3D1;', krn: {'127': 0.0833}, tclass: 'normal'},
    {c: '&#x3D6;', a:0, ic: 0.0278, tclass: 'normal'},
    {c: '&#x3F1;', a:0, d:.2, krn: {'127': 0.0833}, tclass: 'normal'},
    {c: '&#x3C2;', a:0, d:.2, ic: 0.0799, krn: {'127': 0.0833}, tclass: 'normal'},
    {c: '&#x3D5;', a:.1, d:.2, krn: {'127': 0.0833}, tclass: 'normal'},
    {c: '&#x21BC;', a:0, d:-.2, tclass: 'harpoon'},
    {c: '&#x21BD;', a:0, d:-.1, tclass: 'harpoon'},
    {c: '&#x21C0;', a:0, d:-.2, tclass: 'harpoon'},
    {c: '&#x21C1;', a:0, d:-.1, tclass: 'harpoon'},
    {c: '<span style="font-size: 133%; position:relative; top:.1em; margin:-.2em; left:-.05em">&#x02D3;</span>', a:.1, tclass: 'lucida'},
    {c: '<span style="font-size: 133%; position:relative; top:.1em; margin:-.2em; left:-.05em">&#x02D2;</span>', a:.1, tclass: 'lucida'},
    {c: '<span style="font-size:50%">&#x25B7;</span>', tclass: 'symbol'},
    {c: '<span style="font-size:50%">&#x25C1;</span>', tclass: 'symbol'},
    // 30 - 3F
    {c: '0', tclass: 'normal'},
    {c: '1', tclass: 'normal'},
    {c: '2', tclass: 'normal'},
    {c: '3', tclass: 'normal'},
    {c: '4', tclass: 'normal'},
    {c: '5', tclass: 'normal'},
    {c: '6', tclass: 'normal'},
    {c: '7', tclass: 'normal'},
    {c: '8', tclass: 'normal'},
    {c: '9', tclass: 'normal'},
    {c: '.', a:-.3, tclass: 'normal'},
    {c: ',', a:-.3, d:.2, tclass: 'normal'},
    {c: '&lt;', a:.1, tclass: 'normal'},
    {c: '<span style="font-size:133%; position:relative; top:.1em">/</span>', d:.1, krn: {'1': -0.0556, '65': -0.0556, '77': -0.0556, '78': -0.0556, '89': 0.0556, '90': -0.0556}, tclass: 'normal'},
    {c: '&gt;', a:.1, tclass: 'normal'},
    {c: '<span style="font-size:50%">&#x2605;</span>', a:0, tclass: 'symbol'},
    // 40 - 4F
    {c: '&#x2202;', ic: 0.0556, krn: {'127': 0.0833}, tclass: 'normal'},
    {c: 'A', krn: {'127': 0.139}, tclass: 'italic'},
    {c: 'B', ic: 0.0502, krn: {'127': 0.0833}, tclass: 'italic'},
    {c: 'C', ic: 0.0715, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
    {c: 'D', ic: 0.0278, krn: {'127': 0.0556}, tclass: 'italic'},
    {c: 'E', ic: 0.0576, krn: {'127': 0.0833}, tclass: 'italic'},
    {c: 'F', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'italic'},
    {c: 'G', krn: {'127': 0.0833}, tclass: 'italic'},
    {c: 'H', ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'italic'},
    {c: 'I', ic: 0.0785, krn: {'127': 0.111}, tclass: 'italic'},
    {c: 'J', ic: 0.0962, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.167}, tclass: 'italic'},
    {c: 'K', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'italic'},
    {c: 'L', krn: {'127': 0.0278}, tclass: 'italic'},
    {c: 'M', ic: 0.109, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
    {c: 'N', ic: 0.109, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
    {c: 'O', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'italic'},
    // 50 - 5F
    {c: 'P', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'italic'},
    {c: 'Q', d:.2, krn: {'127': 0.0833}, tclass: 'italic'},
    {c: 'R', ic: 0.00773, krn: {'127': 0.0833}, tclass: 'italic'},
    {c: 'S', ic: 0.0576, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
    {c: 'T', ic: 0.139, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
    {c: 'U', ic: 0.109, krn: {'59': -0.111, '58': -0.111, '61': -0.0556, '127': 0.0278}, tclass: 'italic'},
    {c: 'V', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'italic'},
    {c: 'W', ic: 0.139, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'italic'},
    {c: 'X', ic: 0.0785, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
    {c: 'Y', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'italic'},
    {c: 'Z', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
    {c: '&#x266D;', tclass: 'symbol2'},
    {c: '&#x266E;', tclass: 'symbol2'},
    {c: '&#x266F;', tclass: 'symbol2'},
    {c: '<span style="position: relative; top:.5em">&#x2323;</span>', a:0, d:-.1, tclass: 'normal'},
    {c: '<span style="position: relative; top:-.3em">&#x2322;</span>', a:0, d:-.1, tclass: 'normal'},
    // 60 - 6F
    {c: '&#x2113;', krn: {'127': 0.111}, tclass: 'symbol'},
    {c: 'a', a:0, tclass: 'italic'},
    {c: 'b', tclass: 'italic'},
    {c: 'c', a:0, krn: {'127': 0.0556}, tclass: 'italic'},
    {c: 'd', krn: {'89': 0.0556, '90': -0.0556, '106': -0.111, '102': -0.167, '127': 0.167}, tclass: 'italic'},
    {c: 'e', a:0, krn: {'127': 0.0556}, tclass: 'italic'},
    {c: 'f', d:.2, ic: 0.108, krn: {'59': -0.0556, '58': -0.0556, '127': 0.167}, tclass: 'italic'},
    {c: 'g', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'italic'},
    {c: 'h', krn: {'127': -0.0278}, tclass: 'italic'},
    {c: 'i', tclass: 'italic'},
    {c: 'j', d:.2, ic: 0.0572, krn: {'59': -0.0556, '58': -0.0556}, tclass: 'italic'},
    {c: 'k', ic: 0.0315, tclass: 'italic'},
    {c: 'l', ic: 0.0197, krn: {'127': 0.0833}, tclass: 'italic'},
    {c: 'm', a:0, tclass: 'italic'},
    {c: 'n', a:0, tclass: 'italic'},
    {c: 'o', a:0, krn: {'127': 0.0556}, tclass: 'italic'},
    // 70 - 7F
    {c: 'p', a:0, d:.2, krn: {'127': 0.0833}, tclass: 'italic'},
    {c: 'q', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0833}, tclass: 'italic'},
    {c: 'r', a:0, ic: 0.0278, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'italic'},
    {c: 's', a:0, krn: {'127': 0.0556}, tclass: 'italic'},
    {c: 't', krn: {'127': 0.0833}, tclass: 'italic'},
    {c: 'u', a:0, krn: {'127': 0.0278}, tclass: 'italic'},
    {c: 'v', a:0, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'italic'},
    {c: 'w', a:0, ic: 0.0269, krn: {'127': 0.0833}, tclass: 'italic'},
    {c: 'x', a:0, krn: {'127': 0.0278}, tclass: 'italic'},
    {c: 'y', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0556}, tclass: 'italic'},
    {c: 'z', a:0, ic: 0.044, krn: {'127': 0.0556}, tclass: 'italic'},
    {c: '&#x131;', a:0, krn: {'127': 0.0278}, tclass: 'italic'},
    {c: 'j', d:.2, krn: {'127': 0.0833}, tclass: 'italic'},
    {c: '&#x2118;', a:0, d:.2, krn: {'127': 0.111}, tclass: 'normal'},
    {c: '<span style="position:relative; left: .4em; top: -.8em; font-size: 50%">&#x2192;</span>', ic: 0.154, tclass: 'symbol'},
    {c: '&#x0311;', ic: 0.399, tclass: 'normal'}
  ],

  cmsy10: [
    // 00 - 0F
    {c: '&#x2212;', a:.1, tclass: 'symbol'},
    {c: '&#xB7;', a:0, d:-.2, tclass: 'symbol'},
    {c: '&#xD7;', a:0, tclass: 'symbol'},
    {c: '<span style="position:relative; top:.3em">&#x2A;</span>', a:0, tclass: 'symbol'},
    {c: '&#xF7;', a:0, tclass: 'symbol'},
    {c: '&#x25CA;', tclass: 'lucida'},
    {c: '&#xB1;', a:.1, tclass: 'symbol'},
    {c: '&#x2213;', tclass: 'symbol'},
    {c: '&#x2295;', tclass: 'symbol'},
    {c: '&#x2296;', tclass: 'symbol'},
    {c: '&#x2297;', tclass: 'symbol'},
    {c: '&#x2298;', tclass: 'symbol'},
    {c: '&#x2299;', tclass: 'symbol3'},
    {c: '&#x25EF;', tclass: 'symbol'},
    {c: '<span style="position:relative; top:.25em;">&#xB0;</span>', a:0, d:-.1, tclass: 'symbol'},
    {c: '&#x2022;', a:0, d:-.2, tclass: 'symbol'},
    // 10 - 1F
    {c: '&#x224D;', a:.1, tclass: 'symbol'},
    {c: '&#x2261;', a:.1, tclass: 'symbol'},
    {c: '&#x2286;', tclass: 'symbol'},
    {c: '&#x2287;', tclass: 'symbol'},
    {c: '&#x2264;', tclass: 'symbol'},
    {c: '&#x2265;', tclass: 'symbol'},
    {c: '&#x227C;', tclass: 'symbol'},
    {c: '&#x227D;', tclass: 'symbol'},
    {c: '~', a:0, d: -.2, tclass: 'normal'},
    {c: '&#x2248;', a:.1, d:-.1, tclass: 'symbol'},
    {c: '&#x2282;', tclass: 'symbol'},
    {c: '&#x2283;', tclass: 'symbol'},
    {c: '&#x226A;', tclass: 'symbol'},
    {c: '&#x226B;', tclass: 'symbol'},
    {c: '&#x227A;', tclass: 'symbol'},
    {c: '&#x227B;', tclass: 'symbol'},
    // 20 - 2F
    {c: '&#x2190;', a:0, d:-.15, tclass: 'arrow1'},
    {c: '&#x2192;', a:0, d:-.15, tclass: 'arrow1'},
    {c: '&#x2191;', h:1, tclass: 'arrow1a'},
    {c: '&#x2193;', h:1, tclass: 'arrow1a'},
    {c: '&#x2194;', a:0, tclass: 'arrow1'},
    {c: '&#x2197;', h:1, tclass: 'arrows'},
    {c: '&#x2198;', h:1, tclass: 'arrows'},
    {c: '&#x2243;', a: .1, tclass: 'symbol'},
    {c: '&#x21D0;', a:.1, tclass: 'arrow2'},
    {c: '&#x21D2;', a:.1, tclass: 'arrow2'},
    {c: '&#x21D1;', h:.9, d:.1, tclass: 'arrow2a'},
    {c: '&#x21D3;', h:.9, d:.1, tclass: 'arrow2a'},
    {c: '&#x21D4;', a:.1, tclass: 'arrow2'},
    {c: '&#x2196;', h:1, tclass: 'arrows'},
    {c: '&#x2199;', h:1, tclass: 'arrows'},
    {c: '&#x221D;', a:.1, tclass: 'symbol'},
    // 30 - 3F
    {c: '<span style="font-size: 133%; margin-right: -.1em; position: relative; top:.4em">&#x2032;</span>', a: 0, tclass: 'lucida'},
    {c: '&#x221E;', a:.1, tclass: 'symbol'},
    {c: '&#x2208;', tclass: 'symbol'},
    {c: '&#x220B;', tclass: 'symbol'},
    {c: '&#x25B3;', tclass: 'symbol'},
    {c: '&#x25BD;', tclass: 'symbol'},
    {c: '/', tclass: 'symbol'},
    {c: '<span style="font-size:50%; position:relative; top:-.3em; margin-right:-.2em">|</span>', a:0, tclass: 'normal'},
    {c: '&#x2200;', tclass: 'symbol'},
    {c: '&#x2203;', tclass: 'symbol'},
    {c: '&#xAC;', a:0, d:-.1, tclass: 'symbol1'},
    {c: '&#x2205;', tclass: 'symbol'},
    {c: '&#x211C;', tclass: 'symbol'},
    {c: '&#x2111;', tclass: 'symbol'},
    {c: '&#x22A4;', tclass: 'symbol'},
    {c: '&#x22A5;', tclass: 'symbol'},
    // 40 - 4F
    {c: '&#x2135;', tclass: 'symbol'},
    {c: 'A', krn: {'48': 0.194}, tclass: 'cal'},
    {c: 'B', ic: 0.0304, krn: {'48': 0.139}, tclass: 'cal'},
    {c: 'C', ic: 0.0583, krn: {'48': 0.139}, tclass: 'cal'},
    {c: 'D', ic: 0.0278, krn: {'48': 0.0833}, tclass: 'cal'},
    {c: 'E', ic: 0.0894, krn: {'48': 0.111}, tclass: 'cal'},
    {c: 'F', ic: 0.0993, krn: {'48': 0.111}, tclass: 'cal'},
    {c: 'G', d:.2, ic: 0.0593, krn: {'48': 0.111}, tclass: 'cal'},
    {c: 'H', ic: 0.00965, krn: {'48': 0.111}, tclass: 'cal'},
    {c: 'I', ic: 0.0738, krn: {'48': 0.0278}, tclass: 'cal'},
    {c: 'J', d:.2, ic: 0.185, krn: {'48': 0.167}, tclass: 'cal'},
    {c: 'K', ic: 0.0144, krn: {'48': 0.0556}, tclass: 'cal'},
    {c: 'L', krn: {'48': 0.139}, tclass: 'cal'},
    {c: 'M', krn: {'48': 0.139}, tclass: 'cal'},
    {c: 'N', ic: 0.147, krn: {'48': 0.0833}, tclass: 'cal'},
    {c: 'O', ic: 0.0278, krn: {'48': 0.111}, tclass: 'cal'},
    // 50 - 5F
    {c: 'P', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
    {c: 'Q', d:.2, krn: {'48': 0.111}, tclass: 'cal'},
    {c: 'R', krn: {'48': 0.0833}, tclass: 'cal'},
    {c: 'S', ic: 0.075, krn: {'48': 0.139}, tclass: 'cal'},
    {c: 'T', ic: 0.254, krn: {'48': 0.0278}, tclass: 'cal'},
    {c: 'U', ic: 0.0993, krn: {'48': 0.0833}, tclass: 'cal'},
    {c: 'V', ic: 0.0822, krn: {'48': 0.0278}, tclass: 'cal'},
    {c: 'W', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
    {c: 'X', ic: 0.146, krn: {'48': 0.139}, tclass: 'cal'},
    {c: 'Y', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
    {c: 'Z', ic: 0.0794, krn: {'48': 0.139}, tclass: 'cal'},
    {c: '&#x22C3;', tclass: 'symbol'},
    {c: '&#x22C2;', tclass: 'symbol'},
    {c: '&#x228E;', tclass: 'symbol'},
    {c: '&#x22C0;', tclass: 'symbol'},
    {c: '&#x22C1;', tclass: 'symbol'},
    // 60 - 6F
    {c: '&#x22A2;', tclass: 'symbol'},
    {c: '&#x22A3;', tclass: 'symbol2'},
    {c: '&#xF8F0;', a:.3, d:.2, tclass: 'normal'},
    {c: '&#xF8FB;', a:.3, d:.2, tclass: 'normal'},
    {c: '&#xF8EE;', a:.3, d:.2, tclass: 'normal'},
    {c: '&#xF8F9;', a:.3, d:.2, tclass: 'normal'},
    {c: '{', d:.2, tclass: 'normal'},
    {c: '}', d:.2, tclass: 'normal'},
    {c: '&#x3008;', a:.3, d:.2, tclass: 'normal'},
    {c: '&#x3009;', a:.3, d:.2, tclass: 'normal'},
    {c: '|', d:.1, tclass: 'vertical'},
    {c: '||', d:.1, tclass: 'vertical'},
    {c: '&#x2195;', h:1, d:.15, tclass: 'arrow1a'},
    {c: '&#x21D5;', a:.2, d:.1, tclass: 'arrows'},
    {c: '<span style="margin:-.1em">&#x2216;</span>', a:.3, d:.1, tclass: 'lucida'},
    {c: '<span style="font-size: 75%; margin:-.3em">&#x2240;</span>', tclass: 'symbol'},
    // 70 - 7F
    {c: '<span style="position:relative; top: .86em">&#x221A;</span>', h:.04, d:.9, tclass: 'lucida'},
    {c: '&#x2210;', a:.4, tclass: 'symbol'},
    {c: '&#x2207;', tclass: 'symbol'},
    {c: '&#x222B;', h:1, d:.1, ic: 0.111, tclass: 'root'},
    {c: '&#x2294;', tclass: 'symbol'},
    {c: '&#x2293;', tclass: 'symbol'},
    {c: '&#x2291;', tclass: 'symbol'},
    {c: '&#x2292;', tclass: 'symbol'},
    {c: '&#xA7;', d:.1, tclass: 'normal'},
    {c: '&#x2020;', d:.1, tclass: 'normal'},
    {c: '&#x2021;', d:.1, tclass: 'normal'},
    {c: '&#xB6;', a:.3, d:.1, tclass: 'lucida'},
    {c: '&#x2663;', tclass: 'symbol'},
    {c: '&#x2666;', tclass: 'symbol'},
    {c: '&#x2665;', tclass: 'symbol'},
    {c: '&#x2660;', tclass: 'symbol'}
  ],

  cmex10: [
    // 00 - 0F
    {c: '(', h: 0.04, d: 1.16, n: 16, tclass: 'delim1'},
    {c: ')', h: 0.04, d: 1.16, n: 17, tclass: 'delim1'},
    {c: '[', h: 0.04, d: 1.16, n: 104, tclass: 'delim1'},
    {c: ']', h: 0.04, d: 1.16, n: 105, tclass: 'delim1'},
    {c: '&#xF8F0', h: 0.04, d: 1.16, n: 106, tclass: 'delim1'},
    {c: '&#xF8FB;', h: 0.04, d: 1.16, n: 107, tclass: 'delim1'},
    {c: '&#xF8EE;', h: 0.04, d: 1.16, n: 108, tclass: 'delim1'},
    {c: '&#xF8F9;', h: 0.04, d: 1.16, n: 109, tclass: 'delim1'},
    {c: '{', h: 0.04, d: 1.16, n: 110, tclass: 'delim1'},
    {c: '}', h: 0.04, d: 1.16, n: 111, tclass: 'delim1'},
    {c: '&#x3008;', h: 0.04, d: 1.16, n: 68, tclass: 'delim1c'},
    {c: '&#x3009;', h: 0.04, d: 1.16, n: 69, tclass: 'delim1c'},
    {c: '|', h:.7, d:.15, delim: {rep: 12}, tclass: 'vertical1'},
    {c: '||', h:.7, d:.15, delim: {rep: 13}, tclass: 'vertical1'},
    {c: '&#x2215;', h: 0.04, d: 1.16, n: 46, tclass: 'delim1b'},
    {c: '&#x2216;', h: 0.04, d: 1.16, n: 47, tclass: 'delim1b'},
    // 10 - 1F
    {c: '(', h: 0.04, d: 1.76, n: 18, tclass: 'delim2'},
    {c: ')', h: 0.04, d: 1.76, n: 19, tclass: 'delim2'},
    {c: '(', h: 0.04, d: 2.36, n: 32, tclass: 'delim3'},
    {c: ')', h: 0.04, d: 2.36, n: 33, tclass: 'delim3'},
    {c: '[', h: 0.04, d: 2.36, n: 34, tclass: 'delim3'},
    {c: ']', h: 0.04, d: 2.36, n: 35, tclass: 'delim3'},
    {c: '&#xF8F0;', h: 0.04, d: 2.36, n: 36, tclass: 'delim3'},
    {c: '&#xF8FB;', h: 0.04, d: 2.36, n: 37, tclass: 'delim3'},
    {c: '&#xF8EE;', h: 0.04, d: 2.36, n: 38, tclass: 'delim3'},
    {c: '&#xF8F9;', h: 0.04, d: 2.36, n: 39, tclass: 'delim3'},
    {c: '<span style="margin: -.1em">{</span>', h: 0.04, d: 2.36, n: 40, tclass: 'delim3'},
    {c: '<span style="margin: -.1em">}</span>', h: 0.04, d: 2.36, n: 41, tclass: 'delim3'},
    {c: '&#x3008;', h: 0.04, d: 2.36, n: 42, tclass: 'delim3c'},
    {c: '&#x3009;', h: 0.04, d: 2.36, n: 43, tclass: 'delim3c'},
    {c: '&#x2215;', h: 0.04, d: 2.36, n: 44, tclass: 'delim3b'},
    {c: '&#x2216;', h: 0.04, d: 2.36, n: 45, tclass: 'delim3b'},
    // 20 - 2F
    {c: '(', h: 0.04, d: 2.96, n: 48, tclass: 'delim4'},
    {c: ')', h: 0.04, d: 2.96, n: 49, tclass: 'delim4'},
    {c: '[', h: 0.04, d: 2.96, n: 50, tclass: 'delim4'},
    {c: ']', h: 0.04, d: 2.96, n: 51, tclass: 'delim4'},
    {c: '&#xF8F0;', h: 0.04, d: 2.96, n: 52, tclass: 'delim4'},
    {c: '&#xF8FB;', h: 0.04, d: 2.96, n: 53, tclass: 'delim4'},
    {c: '&#xF8EE;', h: 0.04, d: 2.96, n: 54, tclass: 'delim4'},
    {c: '&#xF8F9;', h: 0.04, d: 2.96, n: 55, tclass: 'delim4'},
    {c: '<span style="margin: -.1em">{</span>', h: 0.04, d: 2.96, n: 56, tclass: 'delim4'},
    {c: '<span style="margin: -.1em">}</span>', h: 0.04, d: 2.96, n: 57, tclass: 'delim4'},
    {c: '&#x3008;', h: 0.04, d: 2.96, tclass: 'delim4c'},
    {c: '&#x3009;', h: 0.04, d: 2.96, tclass: 'delim4c'},
    {c: '&#x2215;', h: 0.04, d: 2.96, tclass: 'delim4b'},
    {c: '&#x2216;', h: 0.04, d: 2.96, tclass: 'delim4b'},
    {c: '&#x2215;', h: 0.04, d: 1.76, n: 30, tclass: 'delim2b'},
    {c: '&#x2216;', h: 0.04, d: 1.76, n: 31, tclass: 'delim2b'},
    // 30 - 3F
    {c: '&#xF8EB;', h: .85, d: .2, delim: {top: 48, bot: 64, rep: 66}, tclass: 'normal'},
    {c: '&#xF8F6;', h: .85, d: .2, delim: {top: 49, bot: 65, rep: 67}, tclass: 'normal'},
    {c: '&#xF8EE;', h: .85, d: .2, delim: {top: 50, bot: 52, rep: 54}, tclass: 'normal'},
    {c: '&#xF8F9;', h: .85, d: .2, delim: {top: 51, bot: 53, rep: 55}, tclass: 'normal'},
    {c: '&#xF8F0;', h: .85, d: .2, delim: {bot: 52, rep: 54}, tclass: 'normal'},
    {c: '&#xF8FB;', h: .85, d: .2, delim: {bot: 53, rep: 55}, tclass: 'normal'},
    {c: '&#xF8EF;', h: .85, d: .2, delim: {top: 50, rep: 54}, tclass: 'normal'},
    {c: '&#xF8FA;', h: .85, d: .2, delim: {top: 51, rep: 55}, tclass: 'normal'},
    {c: '&#xF8F1;', h: .85, d: .2, delim: {top: 56, mid: 60, bot: 58, rep: 62}, tclass: 'normal'},
    {c: '&#xF8FC;', h: .85, d: .2, delim: {top: 57, mid: 61, bot: 59, rep: 62}, tclass: 'normal'},
    {c: '&#xF8F3;', h: .85, d: .2, delim: {top: 56, bot: 58, rep: 62}, tclass: 'normal'},
    {c: '&#xF8FE;', h: .85, d: .2, delim: {top: 57, bot: 59, rep: 62}, tclass: 'normal'},
    {c: '&#xF8F2;', h: .85, d: .2, delim: {rep: 63}, tclass: 'normal'},
    {c: '&#xF8FD;', h: .85, d: .2, delim: {rep: 119}, tclass: 'normal'},
    {c: '&#xF8F4;', h: .85, d: .2, delim: {rep: 62}, tclass: 'normal'},
    {c: '|', h: .7, d: .15, delim: {top: 120, bot: 121, rep: 63}, tclass: 'vertical2'},
    // 40 - 4F
    {c: '&#xF8ED;', h: .85, d: .2, delim: {top: 56, bot: 59, rep: 62}, tclass: 'normal'},
    {c: '&#xF8F8;', h: .85, d: .2, delim: {top: 57, bot: 58, rep: 62}, tclass: 'normal'},
    {c: '&#xF8EC;', h: .85, d: .2, delim: {rep: 66}, tclass: 'normal'},
    {c: '&#xF8F7;', h: .85, d: .2, delim: {rep: 67}, tclass: 'normal'},
    {c: '&#x3008;', h: 0.04, d: 1.76, n: 28, tclass: 'delim2c'},
    {c: '&#x3009;', h: 0.04, d: 1.76, n: 29, tclass: 'delim2c'},
    {c: '&#x2294;', h: 0, d: 1, n: 71, tclass: 'bigop1'},
    {c: '&#x2294;', h: 0.1, d: 1.5, tclass: 'bigop2'},
    {c: '&#x222E;', h: 0, d: 1.11, ic: 0.095, n: 73, tclass: 'bigop1c'},
    {c: '&#x222E;', h: 0, d: 2.22, ic: 0.222, tclass: 'bigop2c'},
    {c: '&#x2299;', h: 0, d: 1, n: 75, tclass: 'bigop1'},
    {c: '&#x2299;', h: 0.1, d: 1.5, tclass: 'bigop2'},
    {c: '&#x2295;', h: 0, d: 1, n: 77, tclass: 'bigop1'},
    {c: '&#x2295;', h: 0.1, d: 1.5, tclass: 'bigop2'},
    {c: '&#x2297;', h: 0, d: 1, n: 79, tclass: 'bigop1'},
    {c: '&#x2297;', h: 0.1, d: 1.5, tclass: 'bigop2'},
    // 50 - 5F
    {c: '&#x2211;', h: 0, d: 1, n: 88, tclass: 'bigop1a'},
    {c: '&#x220F;', h: 0, d: 1, n: 89, tclass: 'bigop1a'},
    {c: '&#x222B;', h: 0, d: 1.11, ic: 0.095, n: 90, tclass: 'bigop1c'},
    {c: '&#x222A;', h: 0, d: 1, n: 91, tclass: 'bigop1b'},
    {c: '&#x2229;', h: 0, d: 1, n: 92, tclass: 'bigop1b'},
    {c: '&#x228E;', h: 0, d: 1, n: 93, tclass: 'bigop1b'},
    {c: '&#x2227;', h: 0, d: 1, n: 94, tclass: 'bigop1'},
    {c: '&#x2228;', h: 0, d: 1, n: 95, tclass: 'bigop1'},
    {c: '&#x2211;', h: 0.1, d: 1.6, tclass: 'bigop2a'},
    {c: '&#x220F;', h: 0.1, d: 1.5, tclass: 'bigop2a'},
    {c: '&#x222B;', h: 0, d: 2.22, ic: 0.222, tclass: 'bigop2c'},
    {c: '&#x222A;', h: 0.1, d: 1.5, tclass: 'bigop2b'},
    {c: '&#x2229;', h: 0.1, d: 1.5, tclass: 'bigop2b'},
    {c: '&#x228E;', h: 0.1, d: 1.5, tclass: 'bigop2b'},
    {c: '&#x2227;', h: 0.1, d: 1.5, tclass: 'bigop2'},
    {c: '&#x2228;', h: 0.1, d: 1.5, tclass: 'bigop2'},
    // 60 - 6F
    {c: '&#x2210;', h: 0, d: 1, n: 97, tclass: 'bigop1a'},
    {c: '&#x2210;', h: 0.1, d: 1.5, tclass: 'bigop2a'},
    {c: '&#xFE3F;', h: 0.722, w: .65, n: 99, tclass: 'wide1'},
    {c: '&#xFE3F;', h: 0.85, w: 1.1, n: 100, tclass: 'wide2'},
    {c: '&#xFE3F;', h: 0.99, w: 1.65, tclass: 'wide3'},
    {c: '&#x2053;', h: 0.722, w: .75, n: 102, tclass: 'wide1a'},
    {c: '&#x2053;', h: 0.8, w: 1.35, n: 103, tclass: 'wide2a'},
    {c: '&#x2053;', h: 0.99, w: 2, tclass: 'wide3a'},
    {c: '[', h: 0.04, d: 1.76, n: 20, tclass: 'delim2'},
    {c: ']', h: 0.04, d: 1.76, n: 21, tclass: 'delim2'},
    {c: '&#xF8F0;', h: 0.04, d: 1.76, n: 22, tclass: 'delim2'},
    {c: '&#xF8FB;', h: 0.04, d: 1.76, n: 23, tclass: 'delim2'},
    {c: '&#xF8EE;', h: 0.04, d: 1.76, n: 24, tclass: 'delim2'},
    {c: '&#xF8F9', h: 0.04, d: 1.76, n: 25, tclass: 'delim2'},
    {c: '<span style="margin: -.1em">{</span>', h: 0.04, d: 1.76, n: 26, tclass: 'delim2'},
    {c: '<span style="margin: -.1em">}</span>', h: 0.04, d: 1.76, n: 27, tclass: 'delim2'},
    // 70 - 7F
    {c: '<span style="font-size: 125%; position:relative; top:.95em">&#x221A;</span>', h: 0.04, d: 1.16, n: 113, tclass: 'root'},
    {c: '<span style="font-size: 190%; position:relative; top:.925em">&#x221A;</span>', h: 0.04, d: 1.76, n: 114, tclass: 'root'},
    {c: '<span style="font-size: 250%; position:relative; top:.925em">&#x221A;</span>', h: 0.06, d: 2.36, n: 115, tclass: 'root'},
    {c: '<span style="font-size: 320%; position:relative; top:.92em">&#x221A;</span>', h: 0.08, d: 2.96, n: 116, tclass: 'root'},
    {c: '<span style="font-size: 400%; position:relative; top:.92em">&#x221A;</span>', h: 0.1, d: 3.75, n: 117, tclass: 'root'},
    {c: '<span style="font-size: 500%; position:relative; top:.9em">&#x221A;</span>', h: .12, d: 4.5, n: 118, tclass: 'root'},
    {c: '<span style="font-size: 625%; position:relative; top:.9em">&#x221A;</span>', h: .14, d: 5.7, tclass: 'root'},
    {c: '||', h:.65, d:.15, delim: {top: 126, bot: 127, rep: 119}, tclass: 'vertical2'},
    {c: '&#x25B5;', h:.4, delim: {top: 120, rep: 63}, tclass: 'arrow1b'},
    {c: '&#x25BF;', h:.38, delim: {bot: 121, rep: 63}, tclass: 'arrow1b'},
    {c: '<span style="font-size: 67%; position:relative; top:.35em; margin-left:-.5em">&#x256D;</span>', h:.1, tclass: 'symbol'},
    {c: '<span style="font-size: 67%; position:relative; top:.35em; margin-right:-.5em">&#x256E;</span>', h:.1, tclass: 'symbol'},
    {c: '<span style="font-size: 67%; position:relative; top:.35em; margin-left:-.5em">&#x2570;</span>', h:.1, tclass: 'symbol'},
    {c: '<span style="font-size: 67%; position:relative; top:.35em; margin-right:-.5em">&#x256F;</span>', h:.1, tclass: 'symbol'},
    {c: '&#x25B5;', h:.5, delim: {top: 126, rep: 119}, tclass: 'arrow2b'},
    {c: '&#x25BF;', h:.6, d:-.1, delim: {bot: 127, rep: 119}, tclass: 'arrow2b'}
  ],
  
  cmti10: [
    // 00 - 0F
    {c: '&Gamma;', ic: 0.133, tclass: 'igreek'},
    {c: '&Delta;', tclass: 'igreek'},
    {c: '&Theta;', ic: 0.094, tclass: 'igreek'},
    {c: '&Lambda;', tclass: 'igreek'},
    {c: '&Xi;', ic: 0.153, tclass: 'igreek'},
    {c: '&Pi;', ic: 0.164, tclass: 'igreek'},
    {c: '&Sigma;', ic: 0.12, tclass: 'igreek'},
    {c: '&Upsilon;', ic: 0.111, tclass: 'igreek'},
    {c: '&Phi;', ic: 0.0599, tclass: 'igreek'},
    {c: '&Psi;', ic: 0.111, tclass: 'igreek'},
    {c: '&Omega;', ic: 0.103, tclass: 'igreek'},
    {c: 'ff', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 14, '108': 15}, tclass: 'italic'},
    {c: 'fi', ic: 0.103, tclass: 'italic'},
    {c: 'fl', ic: 0.103, tclass: 'italic'},
    {c: 'ffi', ic: 0.103, tclass: 'italic'},
    {c: 'ffl', ic: 0.103, tclass: 'italic'},
    // 10 - 1F
    {c: '&#x131;', a:0, ic: 0.0767, tclass: 'italic'},
    {c: 'j', d:.2, ic: 0.0374, tclass: 'italic'},
    {c: '&#x60;', tclass: 'iaccent'},
    {c: '&#xB4;', ic: 0.0969, tclass: 'iaccent'},
    {c: '&#x2C7;', ic: 0.083, tclass: 'iaccent'},
    {c: '&#x2D8;', ic: 0.108, tclass: 'iaccent'},
    {c: '&#x2C9;', ic: 0.103, tclass: 'iaccent'},
    {c: '&#x2DA;', tclass: 'iaccent'},
    {c: '?', d: 0.17, w: 0.46, tclass: 'italic'},
    {c: '&#xDF;', ic: 0.105, tclass: 'italic'},
    {c: '&#xE6;', a:0, ic: 0.0751, tclass: 'italic'},
    {c: '&#x153;', a:0, ic: 0.0751, tclass: 'italic'},
    {c: '&#xF8;', ic: 0.0919, tclass: 'italic'},
    {c: '&#xC6;', ic: 0.12, tclass: 'italic'},
    {c: '&#x152;', ic: 0.12, tclass: 'italic'},
    {c: '&#xD8;', ic: 0.094, tclass: 'italic'},
    // 20 - 2F
    {c: '?', krn: {'108': -0.256, '76': -0.321}, tclass: 'italic'},
    {c: '!', ic: 0.124, lig: {'96': 60}, tclass: 'italic'},
    {c: '&#x201D;', ic: 0.0696, tclass: 'italic'},
    {c: '#', ic: 0.0662, tclass: 'italic'},
    {c: '$', tclass: 'italic'},
    {c: '%', ic: 0.136, tclass: 'italic'},
    {c: '&amp;', ic: 0.0969, tclass: 'italic'},
    {c: '&#x2019;', ic: 0.124, krn: {'63': 0.102, '33': 0.102}, lig: {'39': 34}, tclass: 'italic'},
    {c: '(', d:.2, ic: 0.162, tclass: 'italic'},
    {c: ')', d:.2, ic: 0.0369, tclass: 'italic'},
    {c: '*', ic: 0.149, tclass: 'italic'},
    {c: '+', a:.1, ic: 0.0369, tclass: 'italic'},
    {c: ',', a:-.3, d:.2, w: 0.278, tclass: 'italic'},
    {c: '-', a:0, ic: 0.0283, lig: {'45': 123}, tclass: 'italic'},
    {c: '.', a:-.25, tclass: 'italic'},
    {c: '/', ic: 0.162, tclass: 'italic'},
    // 30 - 3F
    {c: '0', ic: 0.136, tclass: 'italic'},
    {c: '1', ic: 0.136, tclass: 'italic'},
    {c: '2', ic: 0.136, tclass: 'italic'},
    {c: '3', ic: 0.136, tclass: 'italic'},
    {c: '4', ic: 0.136, tclass: 'italic'},
    {c: '5', ic: 0.136, tclass: 'italic'},
    {c: '6', ic: 0.136, tclass: 'italic'},
    {c: '7', ic: 0.136, tclass: 'italic'},
    {c: '8', ic: 0.136, tclass: 'italic'},
    {c: '9', ic: 0.136, tclass: 'italic'},
    {c: ':', ic: 0.0582, tclass: 'italic'},
    {c: ';', ic: 0.0582, tclass: 'italic'},
    {c: '&#xA1;', ic: 0.0756, tclass: 'italic'},
    {c: '=', a:0, d:-.1, ic: 0.0662, tclass: 'italic'},
    {c: '&#xBF;', tclass: 'italic'},
    {c: '?', ic: 0.122, lig: {'96': 62}, tclass: 'italic'},
    // 40 - 4F
    {c: '@', ic: 0.096, tclass: 'italic'},
    {c: 'A', krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
    {c: 'B', ic: 0.103, tclass: 'italic'},
    {c: 'C', ic: 0.145, tclass: 'italic'},
    {c: 'D', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}, tclass: 'italic'},
    {c: 'E', ic: 0.12, tclass: 'italic'},
    {c: 'F', ic: 0.133, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'italic'},
    {c: 'G', ic: 0.0872, tclass: 'italic'},
    {c: 'H', ic: 0.164, tclass: 'italic'},
    {c: 'I', ic: 0.158, tclass: 'italic'},
    {c: 'J', ic: 0.14, tclass: 'italic'},
    {c: 'K', ic: 0.145, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'italic'},
    {c: 'L', krn: {'84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
    {c: 'M', ic: 0.164, tclass: 'italic'},
    {c: 'N', ic: 0.164, tclass: 'italic'},
    {c: 'O', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}, tclass: 'italic'},
    // 50 - 5F
    {c: 'P', ic: 0.103, krn: {'65': -0.0767}, tclass: 'italic'},
    {c: 'Q', d:.1, ic: 0.094, tclass: 'italic'},
    {c: 'R', ic: 0.0387, krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
    {c: 'S', ic: 0.12, tclass: 'italic'},
    {c: 'T', ic: 0.133, krn: {'121': -0.0767, '101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}, tclass: 'italic'},
    {c: 'U', ic: 0.164, tclass: 'italic'},
    {c: 'V', ic: 0.184, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'italic'},
    {c: 'W', ic: 0.184, krn: {'65': -0.0767}, tclass: 'italic'},
    {c: 'X', ic: 0.158, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'italic'},
    {c: 'Y', ic: 0.194, krn: {'101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}, tclass: 'italic'},
    {c: 'Z', ic: 0.145, tclass: 'italic'},
    {c: '[', d:.1, ic: 0.188, tclass: 'italic'},
    {c: '&#x201C;', ic: 0.169, tclass: 'italic'},
    {c: ']', d:.1, ic: 0.105, tclass: 'italic'},
    {c: '&#x2C6;', ic: 0.0665, tclass: 'iaccent'},
    {c: '&#x2D9;', ic: 0.118, tclass: 'iaccent'},
    // 60 - 6F
    {c: '&#x2018;', ic: 0.124, lig: {'96': 92}, tclass: 'italic'},
    {c: 'a', a:0, ic: 0.0767, tclass: 'italic'},
    {c: 'b', ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
    {c: 'c', a:0, ic: 0.0565, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
    {c: 'd', ic: 0.103, krn: {'108': 0.0511}, tclass: 'italic'},
    {c: 'e', a:0, ic: 0.0751, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
    {c: 'f', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'italic'},
    {c: 'g', a:0, d:.2, ic: 0.0885, tclass: 'italic'},
    {c: 'h', ic: 0.0767, tclass: 'italic'},
    {c: 'i', ic: 0.102, tclass: 'italic'},
    {c: 'j', d:.2, ic: 0.145, tclass: 'italic'},
    {c: 'k', ic: 0.108, tclass: 'italic'},
    {c: 'l', ic: 0.103, krn: {'108': 0.0511}, tclass: 'italic'},
    {c: 'm', a:0, ic: 0.0767, tclass: 'italic'},
    {c: 'n', a:0, ic: 0.0767, krn: {'39': -0.102}, tclass: 'italic'},
    {c: 'o', a:0, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
    // 70 - 7F
    {c: 'p', a:0, d:.2, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
    {c: 'q', a:0, d:.2, ic: 0.0885, tclass: 'italic'},
    {c: 'r', a:0, ic: 0.108, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
    {c: 's', a:0, ic: 0.0821, tclass: 'italic'},
    {c: 't', ic: 0.0949, tclass: 'italic'},
    {c: 'u', a:0, ic: 0.0767, tclass: 'italic'},
    {c: 'v', a:0, ic: 0.108, tclass: 'italic'},
    {c: 'w', a:0, ic: 0.108, krn: {'108': 0.0511}, tclass: 'italic'},
    {c: 'x', a:0, ic: 0.12, tclass: 'italic'},
    {c: 'y', a:0, d:.2, ic: 0.0885, tclass: 'italic'},
    {c: 'z', a:0, ic: 0.123, tclass: 'italic'},
    {c: '&#x2013;', a:.1, ic: 0.0921, lig: {'45': 124}, tclass: 'italic'},
    {c: '&#x2014;', a:.1, ic: 0.0921, tclass: 'italic'},
    {c: '&#x2DD;', ic: 0.122, tclass: 'iaccent'},
    {c: '&#x2DC;', ic: 0.116, tclass: 'iaccent'},
    {c: '&#xA8;', tclass: 'iaccent'}
  ],
  
  cmbx10: [
    // 00 - 0F
    {c: '&Gamma;', tclass: 'bgreek'},
    {c: '&Delta;', tclass: 'bgreek'},
    {c: '&Theta;', tclass: 'bgreek'},
    {c: '&Lambda;', tclass: 'bgreek'},
    {c: '&Xi;', tclass: 'bgreek'},
    {c: '&Pi;', tclass: 'bgreek'},
    {c: '&Sigma;', tclass: 'bgreek'},
    {c: '&Upsilon;', tclass: 'bgreek'},
    {c: '&Phi;', tclass: 'bgreek'},
    {c: '&Psi;', tclass: 'bgreek'},
    {c: '&Omega;', tclass: 'bgreek'},
    {c: 'ff', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 14, '108': 15}, tclass: 'bold'},
    {c: 'fi', tclass: 'bold'},
    {c: 'fl', tclass: 'bold'},
    {c: 'ffi', tclass: 'bold'},
    {c: 'ffl', tclass: 'bold'},
    // 10 - 1F
    {c: '&#x131;', a:0, tclass: 'bold'},
    {c: 'j', d:.2, tclass: 'bold'},
    {c: '&#x60;', tclass: 'baccent'},
    {c: '&#xB4;', tclass: 'baccent'},
    {c: '&#x2C7;', tclass: 'baccent'},
    {c: '&#x2D8;', tclass: 'baccent'},
    {c: '&#x2C9;', tclass: 'baccent'},
    {c: '&#x2DA;', tclass: 'baccent'},
    {c: '?', tclass: 'bold'},
    {c: '&#xDF;', tclass: 'bold'},
    {c: '&#xE6;', a:0, tclass: 'bold'},
    {c: '&#x153;', a:0, tclass: 'bold'},
    {c: '&#xF8;', tclass: 'bold'},
    {c: '&#xC6;', tclass: 'bold'},
    {c: '&#x152;', tclass: 'bold'},
    {c: '&#xD8;', tclass: 'bold'},
    // 20 - 2F
    {c: '?', krn: {'108': -0.278, '76': -0.319}, tclass: 'bold'},
    {c: '!', lig: {'96': 60}, tclass: 'bold'},
    {c: '&#x201D;', tclass: 'bold'},
    {c: '#', tclass: 'bold'},
    {c: '$', tclass: 'bold'},
    {c: '%', tclass: 'bold'},
    {c: '&amp;', tclass: 'bold'},
    {c: '&#x2019;', krn: {'63': 0.111, '33': 0.111}, lig: {'39': 34}, tclass: 'bold'},
    {c: '(', d:.2, tclass: 'bold'},
    {c: ')', d:.2, tclass: 'bold'},
    {c: '*', tclass: 'bold'},
    {c: '+', a:.1, tclass: 'bold'},
    {c: ',', a:-.3, d:.2, w: 0.278, tclass: 'bold'},
    {c: '-', a:0, lig: {'45': 123}, tclass: 'bold'},
    {c: '.', a:-.25, tclass: 'bold'},
    {c: '/', tclass: 'bold'},
    // 30 - 3F
    {c: '0', tclass: 'bold'},
    {c: '1', tclass: 'bold'},
    {c: '2', tclass: 'bold'},
    {c: '3', tclass: 'bold'},
    {c: '4', tclass: 'bold'},
    {c: '5', tclass: 'bold'},
    {c: '6', tclass: 'bold'},
    {c: '7', tclass: 'bold'},
    {c: '8', tclass: 'bold'},
    {c: '9', tclass: 'bold'},
    {c: ':', tclass: 'bold'},
    {c: ';', tclass: 'bold'},
    {c: '&#xA1;', tclass: 'bold'},
    {c: '=', a:0, d:-.1, tclass: 'bold'},
    {c: '&#xBF;', tclass: 'bold'},
    {c: '?', lig: {'96': 62}, tclass: 'bold'},
    // 40 - 4F
    {c: '@', tclass: 'bold'},
    {c: 'A', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'bold'},
    {c: 'B', tclass: 'bold'},
    {c: 'C', tclass: 'bold'},
    {c: 'D', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'bold'},
    {c: 'E', tclass: 'bold'},
    {c: 'F', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'bold'},
    {c: 'G', tclass: 'bold'},
    {c: 'H', tclass: 'bold'},
    {c: 'I', krn: {'73': 0.0278}, tclass: 'bold'},
    {c: 'J', tclass: 'bold'},
    {c: 'K', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'bold'},
    {c: 'L', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'bold'},
    {c: 'M', tclass: 'bold'},
    {c: 'N', tclass: 'bold'},
    {c: 'O', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'bold'},
    // 50 - 5F
    {c: 'P', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'bold'},
    {c: 'Q', d:.1, tclass: 'bold'},
    {c: 'R', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'bold'},
    {c: 'S', tclass: 'bold'},
    {c: 'T', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'bold'},
    {c: 'U', tclass: 'bold'},
    {c: 'V', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'bold'},
    {c: 'W', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'bold'},
    {c: 'X', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'bold'},
    {c: 'Y', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'bold'},
    {c: 'Z', tclass: 'bold'},
    {c: '[', d:.1, tclass: 'bold'},
    {c: '&#x201C;', tclass: 'bold'},
    {c: ']', d:.1, tclass: 'bold'},
    {c: '&#x2C6;', tclass: 'baccent'},
    {c: '&#x2D9;', tclass: 'baccent'},
    // 60 - 6F
    {c: '&#x2018;', lig: {'96': 92}, tclass: 'bold'},
    {c: 'a', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'bold'},
    {c: 'b', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'bold'},
    {c: 'c', a:0, krn: {'104': -0.0278, '107': -0.0278}, tclass: 'bold'},
    {c: 'd', tclass: 'bold'},
    {c: 'e', a:0, tclass: 'bold'},
    {c: 'f', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'bold'},
    {c: 'g', a:0, d:.2, ic: 0.0139, krn: {'106': 0.0278}, tclass: 'bold'},
    {c: 'h', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'bold'},
    {c: 'i', tclass: 'bold'},
    {c: 'j', d:.2, tclass: 'bold'},
    {c: 'k', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'bold'},
    {c: 'l', tclass: 'bold'},
    {c: 'm', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'bold'},
    {c: 'n', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'bold'},
    {c: 'o', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'bold'},
    // 70 - 7F
    {c: 'p', a:0, d:.2, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'bold'},
    {c: 'q', a:0, d:.2, tclass: 'bold'},
    {c: 'r', a:0, tclass: 'bold'},
    {c: 's', a:0, tclass: 'bold'},
    {c: 't', krn: {'121': -0.0278, '119': -0.0278}, tclass: 'bold'},
    {c: 'u', a:0, krn: {'119': -0.0278}, tclass: 'bold'},
    {c: 'v', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'bold'},
    {c: 'w', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'bold'},
    {c: 'x', a:0, tclass: 'bold'},
    {c: 'y', a:0, d:.2, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'bold'},
    {c: 'z', a:0, tclass: 'bold'},
    {c: '&#x2013;', a:.1, ic: 0.0278, lig: {'45': 124}, tclass: 'bold'},
    {c: '&#x2014;', a:.1, ic: 0.0278, tclass: 'bold'},
    {c: '&#x2DD;', tclass: 'baccent'},
    {c: '&#x2DC;', tclass: 'baccent'},
    {c: '&#xA8;', tclass: 'baccent'}
  ]
});


jsMath.Setup.Styles({
    '.typeset .cmr10':          "font-family: serif",
    '.typeset .italic':         "font-style: italic",
    '.typeset .bold':           "font-weight: bold",
    '.typeset .lucida':         "font-family: 'Lucida Grande'",
    '.typeset .asymbol':        "font-family: 'Apple Symbols'; font-size: 115%",
    '.typeset .cal':            "font-family: 'Apple Chancery'",
    '.typeset .arrows':         "font-family: 'Hiragino Mincho Pro'",
    '.typeset .arrow1':         "font-family: 'Hiragino Mincho Pro'; position: relative; top: .075em; margin: -1px",
    '.typeset .arrow1a':        "font-family: 'Hiragino Mincho Pro'; margin:-.3em",
    '.typeset .arrow1b':        "font-family: AppleGothic; font-size: 50%",
    '.typeset .arrow2':         "font-family: Symbol; font-size: 140%; position: relative; top: .1em; margin:-1px",
    '.typeset .arrow2a':        "font-family: Symbol",
    '.typeset .arrow2b':        "font-family: AppleGothic; font-size: 67%",
    '.typeset .harpoon':        "font-family: AppleGothic; font-size: 90%",
    '.typeset .symbol':         "font-family: 'Hiragino Mincho Pro'",
    '.typeset .symbol2':        "font-family: 'Hiragino Mincho Pro'; margin:-.2em",
    '.typeset .symbol3':        "font-family: AppleGothic",
    '.typeset .delim1':         "font-family: Times; font-size: 133%; position:relative; top:.75em",
    '.typeset .delim1b':        "font-family: 'Hiragino Mincho Pro'; font-size: 133%; position:relative; top:.8em; margin: -.1em",
    '.typeset .delim1c':        "font-family: Symbol; font-size: 120%; position:relative; top:.8em;",
    '.typeset .delim2':         "font-family: Baskerville; font-size: 180%; position:relative; top:.75em",
    '.typeset .delim2b':        "font-family: 'Hiragino Mincho Pro'; font-size: 190%; position:relative; top:.8em; margin: -.1em",
    '.typeset .delim2c':        "font-family: Symbol; font-size: 167%; position:relative; top:.8em;",
    '.typeset .delim3':         "font-family: Baskerville; font-size: 250%; position:relative; top:.725em",
    '.typeset .delim3b':        "font-family: 'Hiragino Mincho Pro'; font-size: 250%; position:relative; top:.8em; margin: -.1em",
    '.typeset .delim3c':        "font-family: symbol; font-size: 240%; position:relative; top:.775em;",
    '.typeset .delim4':         "font-family: Baskerville; font-size: 325%; position:relative; top:.7em",
    '.typeset .delim4b':        "font-family: 'Hiragino Mincho Pro'; font-size: 325%; position:relative; top:.8em; margin: -.1em",
    '.typeset .delim4c':        "font-family: Symbol; font-size: 300%; position:relative; top:.8em;",
    '.typeset .vertical':       "font-family: Copperplate",
    '.typeset .vertical1':      "font-family: Copperplate; font-size: 85%; margin: .15em;",
    '.typeset .vertical2':      "font-family: Copperplate; font-size: 85%; margin: .17em;",
    '.typeset .greek':          "font-family: serif",
    '.typeset .igreek':         "font-family: serif; font-style:italic",
    '.typeset .bgreek':         "font-family: serif; font-weight:bold",
    '.typeset .bigop1':         "font-family: 'Hiragino Mincho Pro'; font-size: 133%; position: relative; top: .85em; margin:-.05em",
    '.typeset .bigop1a':        "font-family: Baskerville; font-size: 100%; position: relative; top: .775em;",
    '.typeset .bigop1b':        "font-family: 'Hiragino Mincho Pro'; font-size: 160%; position: relative; top: .7em; margin:-.1em",
    '.typeset .bigop1c':        "font-family: Apple Symbols; font-size: 125%; position: relative; top: .75em; margin:-.1em;",
    '.typeset .bigop2':         "font-family: 'Hiragino Mincho Pro'; font-size: 200%; position: relative; top: .8em; margin:-.07em",
    '.typeset .bigop2a':        "font-family: Baskerville; font-size: 175%; position: relative; top: .7em;",
    '.typeset .bigop2b':        "font-family: 'Hiragino Mincho Pro'; font-size: 270%; position: relative; top: .62em; margin:-.1em",
    '.typeset .bigop2c':        "font-family: 'Apple Symbols'; font-size: 250%; position: relative; top: .7em; margin:-.17em;",
    '.typeset .wide1':          "font-size: 67%; position: relative; top:-.8em",
    '.typeset .wide2':          "font-size: 110%; position: relative; top:-.5em",
    '.typeset .wide3':          "font-size: 175%; position: relative; top:-.32em",
    '.typeset .wide1a':         "font-size: 75%; position: relative; top:-.5em",
    '.typeset .wide2a':         "font-size: 133%; position: relative; top: -.15em",
    '.typeset .wide3a':         "font-size: 200%; position: relative; top: -.05em",
    '.typeset .root':           "font-family: Baskerville;",
    '.typeset .accent':         "position: relative; top: .02em",
    '.typeset .iaccent':        "position: relative; top: .02em; font-style:italic",
    '.typeset .baccent':        "position: relative; top: .02em; font-weight:bold"
});

/*
 *  Check for ability to access Apple Symbols font
 */

jsMath.noAppleSymbols =  (jsMath.BBoxFor('&#x2223;').w ==
    jsMath.BBoxFor('<span style="font-family: Apple Symbols">&#x2223;</span>').w);

if (jsMath.noAppleSymbols) {
  jsMath.Update.TeXfonts({
    cmsy10: {
      '16': {c: '<span style="position:relative;top:.25em; font-size: 67%">&#x2323;</span><span style="position:relative;top:-.15em;font-size:67%;margin-left:-1em">&#x2322;</span>', tclass: 'normal'},
      '22': {c: '&#x227A;<span style="position:relative;top:.3em; margin-left:-1em">&mdash;</span>', tclass: 'normal'},
      '23': {c: '&#x227B;<span style="position:relative;top:.3em; margin-left:-1em">&mdash;</span>', tclass: 'normal'},
      '91': {c: '&#x222A;'},
      '92': {c: '&#x2229;'},
      '93': {c: '&#x222A;<span style="font-size: 50%; margin-left:-1.1em; position: relative; top:-.3em; margin-right:.4em">+</span>'},
      '94': {c: '&#x2227;'},
      '95': {c: '&#x2228;'},
      '96': {c: '|<span style="position:relative; top:-.15em; margin-left:-.1em">&ndash;</span>', tclass: 'normal'},
      '109': {c: '&#x21D1;<span style="position:relative; top:.1em; margin-left:-.6em">&#x21D3;</span>', h:.9, d:.2, tclass: 'arrow2a'}
    },
    
    cmex10: {
      '85': {c: '&#x222A;<span style="font-size: 50%; margin-left:-1.1em; position: relative; top:-.3em; margin-right:.4em">+</span>'},
      '93': {c: '&#x222A;<span style="font-size: 50%; margin-left:-1.1em; position: relative; top:-.3em; margin-right:.4em">+</span>'}
    }
  });

  jsMath.Macro('rightleftharpoons','\\unicode{x21CC}');
} else {
  jsMath.Setup.Styles({
    '.typeset .harpoon':   'font-family: Apple Symbols; font-size: 125%'
  });
  
}


//
//  Adjust for OmniWeb
//
if (jsMath.browser == 'OmniWeb') {
  jsMath.Update.TeXfonts({
    cmsy10: {
      '55':  {c: '<span style="font-size: 75%; position:relative; left:.3em; top:-.15em; margin-left:-.3em">&#x02EB;</span>'},
      '104': {c: '<span style="position:relative; top:.2em; margin-left:-.55em">&#x3008;</span>'},
      '105': {c: '<span style="position:relative; top:.2em; margin-right:-.55em">&#x3009;</span>'}
    }
  });
  
  jsMath.Setup.Styles({
    '.typeset .arrow2':   'font-family: Symbol; font-size: 100%; position: relative; top: -.1em; margin:-1px'
  });
  
  if (jsMath.noAppleSymbols) {
    jsMath.Update.TeXfonts({
      cmsy10: {
        '22': {c: '&#x227A;<span style="position:relative;top:.25em; margin-left:-.8em; margin-right:.2em">&ndash;</span>', tclass: 'normal'},
        '23': {c: '&#x227B;<span style="position:relative;top:.25em; margin-left:-.7em; margin-right:.1em">&ndash;</span>', tclass: 'normal'},
        '96': {c: '<span style="font-size:80%; position:relative; top:-.15em">|</span><span style="position:relative; top:-.1em; margin-left:-.1em">&ndash;</span>', tclass: 'normal'}
      }
    });
  }
  
}

//
//  Adjust for Opera
//
if (jsMath.browser == 'Opera') {
  jsMath.Setup.Styles({
    '.typeset .bigop1c': "margin:0pt .12em 0pt 0pt;",
    '.typeset .bigop2c': "margin:0pt .12em 0pt 0pt;"
  });
}

if (jsMath.browser == 'Mozilla') {jsMath.Setup.Script('jsMath-fallback-mac-mozilla.js')}
if (jsMath.browser == 'MSIE') {jsMath.Setup.Script('jsMath-fallback-mac-msie.js')}


/*
 *  No access to TeX "not" character, so fake this
 */
jsMath.Macro('not','\\mathrel{\\rlap{\\kern 4mu/}}');

jsMath.Box.defaultH = 0.8;

jsMath.Script.End();


Index: loncom/html/adm/jsMath/uncompressed/jsMath-fallback-pc.js
+++ loncom/html/adm/jsMath/uncompressed/jsMath-fallback-pc.js
/*
 *  jsMath-fallback-pc.js
 *  
 *  Part of the jsMath package for mathematics on the web.
 *
 *  This file makes changes needed for when the TeX fonts are not available
 *  with a browser on the PC.
 *
 *  ---------------------------------------------------------------------
 *
 *  Copyright 2004-2006 by Davide P. Cervone
 * 
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */



/********************************************************************
 *
 *  Here we replace the TeX character mappings by equivalent unicode
 *  points when possible, and adjust the character dimensions
 *  based on the fonts we hope we get them from (the styles are set
 *  to try to use the best characters available in the standard
 *  fonts).
 */

jsMath.Script.Start();

jsMath.Add(jsMath.TeX,{

  cmr10: [
    // 00 - 0F
    {c: '&Gamma;', tclass: 'greek'},
    {c: '&Delta;', tclass: 'greek'},
    {c: '&Theta;', tclass: 'greek'},
    {c: '&Lambda;', tclass: 'greek'},
    {c: '&Xi;', tclass: 'greek'},
    {c: '&Pi;', tclass: 'greek'},
    {c: '&Sigma;', tclass: 'greek'},
    {c: '&Upsilon;', tclass: 'greek'},
    {c: '&Phi;', tclass: 'greek'},
    {c: '&Psi;', tclass: 'greek'},
    {c: '&Omega;', tclass: 'greek'},
    {c: 'ff', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 14, '108': 15}, tclass: 'normal'},
    {c: 'fi', tclass: 'normal'},
    {c: 'fl', tclass: 'normal'},
    {c: 'ffi', tclass: 'normal'},
    {c: 'ffl', tclass: 'normal'},
    // 10 - 1F
    {c: '&#x131;', a:0, tclass: 'normal'},
    {c: 'j', d:.2, tclass: 'normal'},
    {c: '&#x2CB;', tclass: 'accent'},
    {c: '&#x2CA;', tclass: 'accent'},
    {c: '&#x2C7;', tclass: 'accent'},
    {c: '&#x2D8;', tclass: 'accent'},
    {c: '&#x2C9;', tclass: 'accent'},
    {c: '&#x2DA;', tclass: 'accent'},
    {c: '&#x0327;', tclass: 'normal'},
    {c: '&#xDF;', tclass: 'normal'},
    {c: '&#xE6;', a:0, tclass: 'normal'},
    {c: '&#x153;', a:0, tclass: 'normal'},
    {c: '&#xF8;', tclass: 'normal'},
    {c: '&#xC6;', tclass: 'normal'},
    {c: '&#x152;', tclass: 'normal'},
    {c: '&#xD8;', tclass: 'normal'},
    // 20 - 2F
    {c: '?', krn: {'108': -0.278, '76': -0.319}, tclass: 'normal'},
    {c: '!', lig: {'96': 60}, tclass: 'normal'},
    {c: '&#x201D;', tclass: 'normal'},
    {c: '#', tclass: 'normal'},
    {c: '$', tclass: 'normal'},
    {c: '%', tclass: 'normal'},
    {c: '&amp;', tclass: 'normal'},
    {c: '&#x2019;', krn: {'63': 0.111, '33': 0.111}, lig: {'39': 34}, tclass: 'normal'},
    {c: '(', d:.2, tclass: 'normal'},
    {c: ')', d:.2, tclass: 'normal'},
    {c: '*', tclass: 'normal'},
    {c: '+', a:.1, tclass: 'normal'},
    {c: ',', a:-.3, d:.2, w: 0.278, tclass: 'normal'},
    {c: '-', a:0, lig: {'45': 123}, tclass: 'normal'},
    {c: '.', a:-.25, tclass: 'normal'},
    {c: '/', tclass: 'normal'},
    // 30 - 3F
    {c: '0', tclass: 'normal'},
    {c: '1', tclass: 'normal'},
    {c: '2', tclass: 'normal'},
    {c: '3', tclass: 'normal'},
    {c: '4', tclass: 'normal'},
    {c: '5', tclass: 'normal'},
    {c: '6', tclass: 'normal'},
    {c: '7', tclass: 'normal'},
    {c: '8', tclass: 'normal'},
    {c: '9', tclass: 'normal'},
    {c: ':', tclass: 'normal'},
    {c: ';', tclass: 'normal'},
    {c: '&#xA1;', tclass: 'normal'},
    {c: '=', a:0, d:-.1, tclass: 'normal'},
    {c: '&#xBF;', tclass: 'normal'},
    {c: '?', lig: {'96': 62}, tclass: 'normal'},
    // 40 - 4F
    {c: '@', tclass: 'normal'},
    {c: 'A', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
    {c: 'B', tclass: 'normal'},
    {c: 'C', tclass: 'normal'},
    {c: 'D', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
    {c: 'E', tclass: 'normal'},
    {c: 'F', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
    {c: 'G', tclass: 'normal'},
    {c: 'H', tclass: 'normal'},
    {c: 'I', krn: {'73': 0.0278}, tclass: 'normal'},
    {c: 'J', tclass: 'normal'},
    {c: 'K', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
    {c: 'L', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
    {c: 'M', tclass: 'normal'},
    {c: 'N', tclass: 'normal'},
    {c: 'O', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
    // 50 - 5F
    {c: 'P', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
    {c: 'Q', d:.2, tclass: 'normal'},
    {c: 'R', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
    {c: 'S', tclass: 'normal'},
    {c: 'T', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
    {c: 'U', tclass: 'normal'},
    {c: 'V', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
    {c: 'W', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
    {c: 'X', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
    {c: 'Y', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
    {c: 'Z', tclass: 'normal'},
    {c: '[', d:.1, tclass: 'normal'},
    {c: '&#x201C;', tclass: 'normal'},
    {c: ']', d:.1, tclass: 'normal'},
    {c: '&#x2C6;', tclass: 'accent'},
    {c: '&#x2D9;', tclass: 'accent'},
    // 60 - 6F
    {c: '&#x2018;', lig: {'96': 92}, tclass: 'normal'},
    {c: 'a', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
    {c: 'b', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
    {c: 'c', a:0, krn: {'104': -0.0278, '107': -0.0278}, tclass: 'normal'},
    {c: 'd', tclass: 'normal'},
    {c: 'e', a:0, tclass: 'normal'},
    {c: 'f', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'normal'},
    {c: 'g', a:0, d:.2, ic: 0.0139, krn: {'106': 0.0278}, tclass: 'normal'},
    {c: 'h', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
    {c: 'i', tclass: 'normal'},
    {c: 'j', d:.2, tclass: 'normal'},
    {c: 'k', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
    {c: 'l', tclass: 'normal'},
    {c: 'm', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
    {c: 'n', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
    {c: 'o', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
    // 70 - 7F
    {c: 'p', a:0, d:.2, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
    {c: 'q', a:0, d:.2, tclass: 'normal'},
    {c: 'r', a:0, tclass: 'normal'},
    {c: 's', a:0, tclass: 'normal'},
    {c: 't', krn: {'121': -0.0278, '119': -0.0278}, tclass: 'normal'},
    {c: 'u', a:0, krn: {'119': -0.0278}, tclass: 'normal'},
    {c: 'v', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
    {c: 'w', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
    {c: 'x', a:0, tclass: 'normal'},
    {c: 'y', a:0, d:.2, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
    {c: 'z', a:0, tclass: 'normal'},
    {c: '&#x2013;', a:.1, ic: 0.0278, lig: {'45': 124}, tclass: 'normal'},
    {c: '&#x2014;', a:.1, ic: 0.0278, tclass: 'normal'},
    {c: '&#x2DD;', tclass: 'accent'},
    {c: '&#x2DC;', tclass: 'accent'},
    {c: '&#xA8;', tclass: 'accent'}
  ],
  
  cmmi10: [
    // 00 - 0F
    {c: '&Gamma;', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'igreek'},
    {c: '&Delta;', krn: {'127': 0.167}, tclass: 'igreek'},
    {c: '&Theta;', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'igreek'},
    {c: '&Lambda;', krn: {'127': 0.167}, tclass: 'igreek'},
    {c: '&Xi;', ic: 0.0757, krn: {'127': 0.0833}, tclass: 'igreek'},
    {c: '&Pi;', ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'igreek'},
    {c: '&Sigma;', ic: 0.0576, krn: {'127': 0.0833}, tclass: 'igreek'},
    {c: '&Upsilon;', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0556}, tclass: 'igreek'},
    {c: '&Phi;', krn: {'127': 0.0833}, tclass: 'igreek'},
    {c: '&Psi;', ic: 0.11, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'igreek'},
    {c: '&Omega;', ic: 0.0502, krn: {'127': 0.0833}, tclass: 'igreek'},
    {c: '&alpha;', a:0, ic: 0.0037, krn: {'127': 0.0278}, tclass: 'greek'},
    {c: '&beta;', d:.2, ic: 0.0528, krn: {'127': 0.0833}, tclass: 'greek'},
    {c: '&gamma;', a:0, d:.2, ic: 0.0556, tclass: 'greek'},
    {c: '&delta;', ic: 0.0378, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'greek'},
    {c: '&epsilon;', a:0, krn: {'127': 0.0556}, tclass: 'lucida'},
    // 10 - 1F
    {c: '&zeta;', d:.2, ic: 0.0738, krn: {'127': 0.0833}, tclass: 'greek'},
    {c: '&eta;', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0556}, tclass: 'greek'},
    {c: '&theta;', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'greek'},
    {c: '&iota;', a:0, krn: {'127': 0.0556}, tclass: 'greek'},
    {c: '&kappa;', a:0, tclass: 'greek'},
    {c: '&lambda;', tclass: 'greek'},
    {c: '&mu;', a:0, d:.2, krn: {'127': 0.0278}, tclass: 'greek'},
    {c: '&nu;', a:0, ic: 0.0637, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}, tclass: 'greek'},
    {c: '&xi;', d:.2, ic: 0.046, krn: {'127': 0.111}, tclass: 'greek'},
    {c: '&pi;', a:0, ic: 0.0359, tclass: 'greek'},
    {c: '&rho;', a:0, d:.2, krn: {'127': 0.0833}, tclass: 'greek'},
    {c: '&sigma;', a:0, ic: 0.0359, krn: {'59': -0.0556, '58': -0.0556}, tclass: 'greek'},
    {c: '&tau;', a:0, ic: 0.113, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}, tclass: 'greek'},
    {c: '&upsilon;', a:0, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'greek'},
    {c: '&phi;', a:.1, d:.2, krn: {'127': 0.0833}, tclass: 'greek'},
    {c: '&chi;', a:0, d:.2, krn: {'127': 0.0556}, tclass: 'greek'},
    // 20 - 2F
    {c: '&psi;', a:.1, d:.2, ic: 0.0359, krn: {'127': 0.111}, tclass: 'greek'},
    {c: '&omega;', a:0, ic: 0.0359, tclass: 'greek'},
    {c: '&epsilon;', a:0, krn: {'127': 0.0833}, tclass: 'greek'},
    {c: '&#x3D1;', krn: {'127': 0.0833}, tclass: 'lucida'},
    {c: '&#x3D6;', a:0, ic: 0.0278, tclass: 'lucida'},
    {c: '&#x3F1;', a:0, d:.2, krn: {'127': 0.0833}, tclass: 'lucida'},
    {c: '&#x3C2;', a:0, d:.2, ic: 0.0799, krn: {'127': 0.0833}, tclass: 'lucida'},
    {c: '&#x3D5;', a:.1, d:.2, krn: {'127': 0.0833}, tclass: 'lucida'},
    {c: '&#x21BC;', a:0, d:-.2, tclass: 'arrows'},
    {c: '&#x21BD;', a:0, d:-.1, tclass: 'arrows'},
    {c: '&#x21C0;', a:0, d:-.2, tclass: 'arrows'},
    {c: '&#x21C1;', a:0, d:-.1, tclass: 'arrows'},
    {c: '<span style="position:relative; top:-.1em">&#x02D3;</span>', a:.1, tclass: 'symbol'},
    {c: '<span style="position:relative; top:-.1em">&#x02D2;</span>', a:.1, tclass: 'symbol'},
    {c: '&#x25B9;', tclass: 'symbol'},
    {c: '&#x25C3;', tclass: 'symbol'},
    // 30 - 3F
    {c: '0', tclass: 'normal'},
    {c: '1', tclass: 'normal'},
    {c: '2', tclass: 'normal'},
    {c: '3', tclass: 'normal'},
    {c: '4', tclass: 'normal'},
    {c: '5', tclass: 'normal'},
    {c: '6', tclass: 'normal'},
    {c: '7', tclass: 'normal'},
    {c: '8', tclass: 'normal'},
    {c: '9', tclass: 'normal'},
    {c: '.', a:-.3, tclass: 'normal'},
    {c: ',', a:-.3, d:.2, tclass: 'normal'},
    {c: '&lt;', a:.1, tclass: 'normal'},
    {c: '<span style="font-size:133%; position:relative; top:.1em">/</span>', d:.1, krn: {'1': -0.0556, '65': -0.0556, '77': -0.0556, '78': -0.0556, '89': 0.0556, '90': -0.0556}, tclass: 'normal'},
    {c: '&gt;', a:.1, tclass: 'normal'},
    {c: '&#x22C6;', a:0, tclass: 'arial'},
    // 40 - 4F
    {c: '&#x2202;', ic: 0.0556, krn: {'127': 0.0833}, tclass: 'normal'},
    {c: 'A', krn: {'127': 0.139}, tclass: 'italic'},
    {c: 'B', ic: 0.0502, krn: {'127': 0.0833}, tclass: 'italic'},
    {c: 'C', ic: 0.0715, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
    {c: 'D', ic: 0.0278, krn: {'127': 0.0556}, tclass: 'italic'},
    {c: 'E', ic: 0.0576, krn: {'127': 0.0833}, tclass: 'italic'},
    {c: 'F', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'italic'},
    {c: 'G', krn: {'127': 0.0833}, tclass: 'italic'},
    {c: 'H', ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'italic'},
    {c: 'I', ic: 0.0785, krn: {'127': 0.111}, tclass: 'italic'},
    {c: 'J', ic: 0.0962, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.167}, tclass: 'italic'},
    {c: 'K', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'italic'},
    {c: 'L', krn: {'127': 0.0278}, tclass: 'italic'},
    {c: 'M', ic: 0.109, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
    {c: 'N', ic: 0.109, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
    {c: 'O', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'italic'},
    // 50 - 5F
    {c: 'P', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'italic'},
    {c: 'Q', d:.2, krn: {'127': 0.0833}, tclass: 'italic'},
    {c: 'R', ic: 0.00773, krn: {'127': 0.0833}, tclass: 'italic'},
    {c: 'S', ic: 0.0576, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
    {c: 'T', ic: 0.139, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
    {c: 'U', ic: 0.109, krn: {'59': -0.111, '58': -0.111, '61': -0.0556, '127': 0.0278}, tclass: 'italic'},
    {c: 'V', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'italic'},
    {c: 'W', ic: 0.139, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'italic'},
    {c: 'X', ic: 0.0785, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
    {c: 'Y', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'italic'},
    {c: 'Z', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
    {c: '&#x266D;', tclass: 'symbol'},
    {c: '&#x266E;', tclass: 'symbol'},
    {c: '&#x266F;', tclass: 'symbol'},
    {c: '<span style="position: relative; top:-.3em; font-size:75%">&#x203F;</span>', a:0, d:-.1, tclass: 'arial'},
    {c: '<span style="position: relative; top:.4em; font-size:75%">&#x2040;</span>', a:0, d:-.1, tclass: 'arial'},
    // 60 - 6F
    {c: '&#x2113;', krn: {'127': 0.111}, tclass: 'italic'},
    {c: 'a', a:0, tclass: 'italic'},
    {c: 'b', tclass: 'italic'},
    {c: 'c', a:0, krn: {'127': 0.0556}, tclass: 'italic'},
    {c: 'd', krn: {'89': 0.0556, '90': -0.0556, '106': -0.111, '102': -0.167, '127': 0.167}, tclass: 'italic'},
    {c: 'e', a:0, krn: {'127': 0.0556}, tclass: 'italic'},
    {c: 'f', d:.2, ic: 0.108, krn: {'59': -0.0556, '58': -0.0556, '127': 0.167}, tclass: 'italic'},
    {c: 'g', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'italic'},
    {c: 'h', krn: {'127': -0.0278}, tclass: 'italic'},
    {c: 'i', tclass: 'italic'},
    {c: 'j', d:.2, ic: 0.0572, krn: {'59': -0.0556, '58': -0.0556}, tclass: 'italic'},
    {c: 'k', ic: 0.0315, tclass: 'italic'},
    {c: 'l', ic: 0.0197, krn: {'127': 0.0833}, tclass: 'italic'},
    {c: 'm', a:0, tclass: 'italic'},
    {c: 'n', a:0, tclass: 'italic'},
    {c: 'o', a:0, krn: {'127': 0.0556}, tclass: 'italic'},
    // 70 - 7F
    {c: 'p', a:0, d:.2, krn: {'127': 0.0833}, tclass: 'italic'},
    {c: 'q', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0833}, tclass: 'italic'},
    {c: 'r', a:0, ic: 0.0278, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'italic'},
    {c: 's', a:0, krn: {'127': 0.0556}, tclass: 'italic'},
    {c: 't', krn: {'127': 0.0833}, tclass: 'italic'},
    {c: 'u', a:0, krn: {'127': 0.0278}, tclass: 'italic'},
    {c: 'v', a:0, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'italic'},
    {c: 'w', a:0, ic: 0.0269, krn: {'127': 0.0833}, tclass: 'italic'},
    {c: 'x', a:0, krn: {'127': 0.0278}, tclass: 'italic'},
    {c: 'y', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0556}, tclass: 'italic'},
    {c: 'z', a:0, ic: 0.044, krn: {'127': 0.0556}, tclass: 'italic'},
    {c: '&#x131;', a:0, krn: {'127': 0.0278}, tclass: 'italic'},
    {c: 'j', d:.2, krn: {'127': 0.0833}, tclass: 'italic'},
    {c: '&#x2118;', a:0, d:.2, krn: {'127': 0.111}, tclass: 'arial'},
    {c: '<span style="position:relative; left: .3em; top: -.65em; font-size: 67%">&#x2192;</span>', ic: 0.154, tclass: 'symbol'},
    {c: '&#x0311;', ic: 0.399, tclass: 'normal'}
  ],

  cmsy10: [
    // 00 - 0F
    {c: '<span style="position:relative; top:.1em">&#x2212;</span>', a:.1, tclass: 'symbol'},
    {c: '&#xB7;', a:0, d:-.2, tclass: 'normal'},
    {c: '&#xD7;', a:0, tclass: 'normal'},
    {c: '<span style="position:relative; top:.3em">&#x2A;</span>', a:0, tclass: 'normal'},
    {c: '&#xF7;', a:0, tclass: 'normal'},
    {c: '&#x25CA;', tclass: 'symbol'},
    {c: '&#xB1;', a:.1, tclass: 'normal'},
    {c: '&#x2213;', tclass: 'symbol'},
    {c: '&#x2295;', tclass: 'symbol'},
    {c: '&#x2296;', tclass: 'symbol'},
    {c: '&#x2297;', tclass: 'symbol'},
    {c: '&#x2298;', tclass: 'symbol'},
    {c: '&#x2299;', tclass: 'symbol'},
    {c: '&#x25EF;', tclass: 'arial'},
    {c: '&#x2218;', a:0, d:-.1, tclass: 'symbol2'},
    {c: '&#x2022;', a:0, d:-.2, tclass: 'symbol'},
    // 10 - 1F
    {c: '&#x224D;', a:.1, tclass: 'symbol2'},
    {c: '&#x2261;', a:.1, tclass: 'symbol2'},
    {c: '&#x2286;', tclass: 'symbol'},
    {c: '&#x2287;', tclass: 'symbol'},
    {c: '&#x2264;', tclass: 'symbol'},
    {c: '&#x2265;', tclass: 'symbol'},
    {c: '&#x227C;', tclass: 'symbol'},
    {c: '&#x227D;', tclass: 'symbol'},
    {c: '~', a:0, d: -.2, tclass: 'normal'},
    {c: '&#x2248;', a:.1, d:-.1, tclass: 'symbol'},
    {c: '&#x2282;', tclass: 'symbol'},
    {c: '&#x2283;', tclass: 'symbol'},
    {c: '&#x226A;', tclass: 'symbol'},
    {c: '&#x226B;', tclass: 'symbol'},
    {c: '&#x227A;', tclass: 'symbol'},
    {c: '&#x227B;', tclass: 'symbol'},
    // 20 - 2F
    {c: '&#x2190;', a:-.1, tclass: 'arrow1'},
    {c: '&#x2192;', a:-.1, tclass: 'arrow1'},
    {c: '&#x2191;', a:.2, d:0, tclass: 'arrow1a'},
    {c: '&#x2193;', a:.2, d:0, tclass: 'arrow1a'},
    {c: '&#x2194;', a:-.1, tclass: 'arrow1'},
    {c: '&#x2197;', a:.1, tclass: 'arrows'},
    {c: '&#x2198;', a:.1, tclass: 'arrows'},
    {c: '&#x2243;', a: .1, tclass: 'symbol2'},
    {c: '&#x21D0;', a:-.1, tclass: 'arrow2'},
    {c: '&#x21D2;', a:-.1, tclass: 'arrow2'},
    {c: '&#x21D1;', a:.2, d:.1, tclass: 'arrow1a'},
    {c: '&#x21D3;', a:.2, d:.1, tclass: 'arrow1a'},
    {c: '&#x21D4;', a:-.1, tclass: 'arrow2'},
    {c: '&#x2196;', a:.1, tclass: 'arrows'},
    {c: '&#x2199;', a:.1, tclass: 'arrows'},
    {c: '&#x221D;', a:.1, tclass: 'normal'},
    // 30 - 3F
    {c: '<span style="font-size: 133%; margin-right: -.1em; position: relative; top:.4em">&#x2032;</span>', a: 0, tclass: 'lucida'},
    {c: '&#x221E;', a:.1, tclass: 'symbol'},
    {c: '&#x2208;', tclass: 'symbol'},
    {c: '&#x220B;', tclass: 'symbol'},
    {c: '<span style="font-size: 150%; position:relative; top:.2em">&#x25B3;</span>', tclass: 'symbol'},
    {c: '<span style="font-size: 150%; position:relative; top:.2em">&#x25BD;</span>', tclass: 'symbol'},
    {c: '<span style="font-size: 133%; position:relative; top:.2em">/</span>', d:.2, tclass: 'normal'},
    {c: '<span style="font-size: 67%; position: relative; top:-.15em; margin-right:-.3em">&#x22A2;</span>', tclass: 'symbol'},
    {c: '&#x2200;', tclass: 'symbol'},
    {c: '&#x2203;', tclass: 'symbol'},
    {c: '&#xAC;', a:0, d:-.1, tclass: 'symbol'},
    {c: '&#x2205;', tclass: 'symbol'},
    {c: '&#x211C;', tclass: 'symbol'},
    {c: '&#x2111;', tclass: 'symbol'},
    {c: '&#x22A4;', tclass: 'symbol'},
    {c: '&#x22A5;', tclass: 'symbol'},
    // 40 - 4F
    {c: '&#x2135;', tclass: 'symbol'},
    {c: 'A', krn: {'48': 0.194}, tclass: 'cal'},
    {c: 'B', ic: 0.0304, krn: {'48': 0.139}, tclass: 'cal'},
    {c: 'C', ic: 0.0583, krn: {'48': 0.139}, tclass: 'cal'},
    {c: 'D', ic: 0.0278, krn: {'48': 0.0833}, tclass: 'cal'},
    {c: 'E', ic: 0.0894, krn: {'48': 0.111}, tclass: 'cal'},
    {c: 'F', ic: 0.0993, krn: {'48': 0.111}, tclass: 'cal'},
    {c: 'G', d:.2, ic: 0.0593, krn: {'48': 0.111}, tclass: 'cal'},
    {c: 'H', ic: 0.00965, krn: {'48': 0.111}, tclass: 'cal'},
    {c: 'I', ic: 0.0738, krn: {'48': 0.0278}, tclass: 'cal'},
    {c: 'J', d:.2, ic: 0.185, krn: {'48': 0.167}, tclass: 'cal'},
    {c: 'K', ic: 0.0144, krn: {'48': 0.0556}, tclass: 'cal'},
    {c: 'L', krn: {'48': 0.139}, tclass: 'cal'},
    {c: 'M', krn: {'48': 0.139}, tclass: 'cal'},
    {c: 'N', ic: 0.147, krn: {'48': 0.0833}, tclass: 'cal'},
    {c: 'O', ic: 0.0278, krn: {'48': 0.111}, tclass: 'cal'},
    // 50 - 5F
    {c: 'P', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
    {c: 'Q', d:.2, krn: {'48': 0.111}, tclass: 'cal'},
    {c: 'R', krn: {'48': 0.0833}, tclass: 'cal'},
    {c: 'S', ic: 0.075, krn: {'48': 0.139}, tclass: 'cal'},
    {c: 'T', ic: 0.254, krn: {'48': 0.0278}, tclass: 'cal'},
    {c: 'U', ic: 0.0993, krn: {'48': 0.0833}, tclass: 'cal'},
    {c: 'V', ic: 0.0822, krn: {'48': 0.0278}, tclass: 'cal'},
    {c: 'W', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
    {c: 'X', ic: 0.146, krn: {'48': 0.139}, tclass: 'cal'},
    {c: 'Y', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
    {c: 'Z', ic: 0.0794, krn: {'48': 0.139}, tclass: 'cal'},
    {c: '&#x22C3;', tclass: 'symbol'},
    {c: '&#x22C2;', tclass: 'symbol'},
    {c: '&#x228E;', tclass: 'symbol'},
    {c: '&#x22C0;', tclass: 'symbol'},
    {c: '&#x22C1;', tclass: 'symbol'},
    // 60 - 6F
    {c: '&#x22A2;', tclass: 'symbol'},
    {c: '&#x22A3;', tclass: 'symbol'},
    {c: '&#x2308;', a:.3, d:.2, tclass: 'arial'},
    {c: '&#x2309;', a:.3, d:.2, tclass: 'arial'},
    {c: '&#x230A;', a:.3, d:.2, tclass: 'arial'},
    {c: '&#x230B;', a:.3, d:.2, tclass: 'arial'},
    {c: '{', d:.2, tclass: 'normal'},
    {c: '}', d:.2, tclass: 'normal'},
    {c: '&#x2329;', a:.3, d:.2, tclass: 'symbol'},
    {c: '&#x232A;', a:.3, d:.2, tclass: 'symbol'},
    {c: '&#x2223;', d:.1, tclass: 'symbol'},
    {c: '&#x2225;', d:.1, tclass: 'symbol'},
    {c: '&#x2195;', a:.2, d:0, tclass: 'arrow1a'},
    {c: '&#x21D5;', a:.3, d:0, tclass: 'arrow1a'},
    {c: '&#x2216;', a:.3, d:.1, tclass: 'symbol'},
    {c: '&#x2240;', tclass: 'symbol'},
    // 70 - 7F
    {c: '<span style="position:relative; top: .8em">&#x221A;</span>', h:.04, d:.8, tclass: 'symbol'},
    {c: '&#x2210;', a:.4, tclass: 'symbol'},
    {c: '&#x2207;', tclass: 'symbol'},
    {c: '<span style="font-size: 85%; left:-.1em; margin-right:-.2em">&#x222B;</span>', a:.4, d:.1, ic: 0.111, tclass: 'lucida'},
    {c: '&#x2294;', tclass: 'symbol'},
    {c: '&#x2293;', tclass: 'symbol'},
    {c: '&#x2291;', tclass: 'symbol'},
    {c: '&#x2292;', tclass: 'symbol'},
    {c: '&#xA7;', d:.1, tclass: 'normal'},
    {c: '&#x2020;', d:.1, tclass: 'normal'},
    {c: '&#x2021;', d:.1, tclass: 'normal'},
    {c: '&#xB6;', a:.3, d:.1, tclass: 'lucida'},
    {c: '&#x2663;', tclass: 'arial'},
    {c: '&#x2662;', tclass: 'arial'},
    {c: '&#x2661;', tclass: 'arial'},
    {c: '&#x2660;', tclass: 'arial'}
  ],

  cmex10: [
    // 00 - 0F
    {c: '(', h: 0.04, d: 1.16, n: 16, tclass: 'delim1'},
    {c: ')', h: 0.04, d: 1.16, n: 17, tclass: 'delim1'},
    {c: '[', h: 0.04, d: 1.16, n: 104, tclass: 'delim1'},
    {c: ']', h: 0.04, d: 1.16, n: 105, tclass: 'delim1'},
    {c: '&#x2308;', h: 0.04, d: 1.16, n: 106, tclass: 'delim1a'},
    {c: '&#x2309;', h: 0.04, d: 1.16, n: 107, tclass: 'delim1a'},
    {c: '&#x230A;', h: 0.04, d: 1.16, n: 108, tclass: 'delim1a'},
    {c: '&#x230B;', h: 0.04, d: 1.16, n: 109, tclass: 'delim1a'},
    {c: '<span style="margin-left:-.1em">{</span>', h: 0.04, d: 1.16, n: 110, tclass: 'delim1'},
    {c: '<span style="margin-right:-.1em">}</span>', h: 0.04, d: 1.16, n: 111, tclass: 'delim1'},
    {c: '&#x2329;', h: 0.04, d: 1.16, n: 68, tclass: 'delim1b'},
    {c: '&#x232A;', h: 0.04, d: 1.16, n: 69, tclass: 'delim1b'},
    {c: '&#x2223;', h:.7, d:.1, delim: {rep: 12}, tclass: 'symbol'},
    {c: '&#x2225;', h:.7, d:.1, delim: {rep: 13}, tclass: 'symbol'},
    {c: '/', h: 0.04, d: 1.16, n: 46, tclass: 'delim1a'},
    {c: '&#x2216;', h: 0.04, d: 1.16, n: 47, tclass: 'delim1a'},
    // 10 - 1F
    {c: '(', h: 0.04, d: 1.76, n: 18, tclass: 'delim2'},
    {c: ')', h: 0.04, d: 1.76, n: 19, tclass: 'delim2'},
    {c: '(', h: 0.04, d: 2.36, n: 32, tclass: 'delim3'},
    {c: ')', h: 0.04, d: 2.36, n: 33, tclass: 'delim3'},
    {c: '[', h: 0.04, d: 2.36, n: 34, tclass: 'delim3'},
    {c: ']', h: 0.04, d: 2.36, n: 35, tclass: 'delim3'},
    {c: '&#x2308;', h: 0.04, d: 2.36, n: 36, tclass: 'delim3a'},
    {c: '&#x2309;', h: 0.04, d: 2.36, n: 37, tclass: 'delim3a'},
    {c: '&#x230A;', h: 0.04, d: 2.36, n: 38, tclass: 'delim3a'},
    {c: '&#x230B;', h: 0.04, d: 2.36, n: 39, tclass: 'delim3a'},
    {c: '<span style="position:relative; left:-.1em; margin-right:-.1em">{</span>', h: 0.04, d: 2.36, n: 40, tclass: 'delim3'},
    {c: '<span style="position:relative; left:-.05em; margin-right:-.1em">}</span>', h: 0.04, d: 2.36, n: 41, tclass: 'delim3'},
    {c: '&#x2329;', h: 0.04, d: 2.36, n: 42, tclass: 'delim3b'},
    {c: '&#x232A;', h: 0.04, d: 2.36, n: 43, tclass: 'delim3b'},
    {c: '/', h: 0.04, d: 2.36, n: 44, tclass: 'delim3a'},
    {c: '&#x2216;', h: 0.04, d: 2.36, n: 45, tclass: 'delim3a'},
    // 20 - 2F
    {c: '(', h: 0.04, d: 2.96, n: 48, tclass: 'delim4'},
    {c: ')', h: 0.04, d: 2.96, n: 49, tclass: 'delim4'},
    {c: '[', h: 0.04, d: 2.96, n: 50, tclass: 'delim4'},
    {c: ']', h: 0.04, d: 2.96, n: 51, tclass: 'delim4'},
    {c: '&#x2308;', h: 0.04, d: 2.96, n: 52, tclass: 'delim4a'},
    {c: '&#x2309;', h: 0.04, d: 2.96, n: 53, tclass: 'delim4a'},
    {c: '&#x230A;', h: 0.04, d: 2.96, n: 54, tclass: 'delim4a'},
    {c: '&#x230B;', h: 0.04, d: 2.96, n: 55, tclass: 'delim4a'},
    {c: '<span style="position:relative; left:-.1em; margin-right:-.1em">{</span>', h: 0.04, d: 2.96, n: 56, tclass: 'delim4'},
    {c: '<span style="position:relative; left:-.1em; margin-right:-.1em">}</span>', h: 0.04, d: 2.96, n: 57, tclass: 'delim4'},
    {c: '&#x2329;', h: 0.04, d: 2.96, tclass: 'delim4b'},
    {c: '&#x232A;', h: 0.04, d: 2.96, tclass: 'delim4b'},
    {c: '/', h: 0.04, d: 2.96, tclass: 'delim4a'},
    {c: '&#x2216;', h: 0.04, d: 2.96, tclass: 'delim4a'},
    {c: '/', h: 0.04, d: 1.76, n: 30, tclass: 'delim2a'},
    {c: '&#x2216;', h: 0.04, d: 1.76, n: 31, tclass: 'delim2a'},
    // 30 - 3F
    {c: '&#xE6;', h: .8, d: .2, delim: {top: 48, bot: 64, rep: 66}, tclass: 'delimx'},
    {c: '&#xF6;', h: .8, d: .2, delim: {top: 49, bot: 65, rep: 67}, tclass: 'delimx'},
    {c: '&#xE9;', h: .8, d: .2, delim: {top: 50, bot: 52, rep: 54}, tclass: 'delimx'},
    {c: '&#xF9;', h: .8, d: .2, delim: {top: 51, bot: 53, rep: 55}, tclass: 'delimx'},
    {c: '&#xEB;', h: .8, d: .2, delim: {bot: 52, rep: 54}, tclass: 'delimx'},
    {c: '&#xFB;', h: .8, d: .2, delim: {bot: 53, rep: 55}, tclass: 'delimx'},
    {c: '&#xEA;', h: .8, d: .2, delim: {top: 50, rep: 54}, tclass: 'delimx'},
    {c: '&#xFA;', h: .8, d: .2, delim: {top: 51, rep: 55}, tclass: 'delimx'},
    {c: '&#xEC;', h: .8, d: .2, delim: {top: 56, mid: 60, bot: 58, rep: 62}, tclass: 'delimx'},
    {c: '&#xFC;', h: .8, d: .2, delim: {top: 57, mid: 61, bot: 59, rep: 62}, tclass: 'delimx'},
    {c: '&#xEE;', h: .8, d: .2, delim: {top: 56, bot: 58, rep: 62}, tclass: 'delimx'},
    {c: '&#xFE;', h: .8, d: .2, delim: {top: 57, bot: 59, rep: 62}, tclass: 'delimx'},
    {c: '&#xED;', h: .8, d: .2, delim: {rep: 63}, tclass: 'delimx'},
    {c: '&#xFD;', h: .8, d: .2, delim: {rep: 119}, tclass: 'delimx'},
    {c: '&#xEF;', h: .8, d: .2, delim: {rep: 62}, tclass: 'delimx'},
    {c: '<span style="margin:.125em">|</span>', h: .8, d: 0, delim: {top: 120, bot: 121, rep: 63}, tclass: 'normal'},
    // 40 - 4F
    {c: '&#xE8;', h: .8, d: .2, delim: {top: 56, bot: 59, rep: 62}, tclass: 'delimx'},
    {c: '&#xF8;', h: .8, d: .2, delim: {top: 57, bot: 58, rep: 62}, tclass: 'delimx'},
    {c: '&#xE7;', h: .8, d: .2, delim: {rep: 66}, tclass: 'delimx'},
    {c: '&#xF7;', h: .8, d: .2, delim: {rep: 67}, tclass: 'delimx'},
    {c: '&#x2329;', h: 0.04, d: 1.76, n: 28, tclass: 'delim2b'},
    {c: '&#x232A;', h: 0.04, d: 1.76, n: 29, tclass: 'delim2b'},
    {c: '&#x2294;', h: 0, d: 1, n: 71, tclass: 'bigop1'},
    {c: '&#x2294;', h: 0.1, d: 1.5, tclass: 'bigop2'},
    {c: '&#x222E;', h: 0, d: 1.11, ic: 0.095, n: 73, tclass: 'bigop1c'},
    {c: '&#x222E;', h: 0, d: 2.22, ic: 0.222, tclass: 'bigop2c'},
    {c: '&#x2299;', h: 0, d: 1, n: 75, tclass: 'bigop1'},
    {c: '&#x2299;', h: 0.1, d: 1.5, tclass: 'bigop2'},
    {c: '&#x2295;', h: 0, d: 1, n: 77, tclass: 'bigop1'},
    {c: '&#x2295;', h: 0.1, d: 1.5, tclass: 'bigop2'},
    {c: '&#x2297;', h: 0, d: 1, n: 79, tclass: 'bigop1'},
    {c: '&#x2297;', h: 0.1, d: 1.5, tclass: 'bigop2'},
    // 50 - 5F
    {c: '&#x2211;', h: 0, d: 1, n: 88, tclass: 'bigop1a'},
    {c: '&#x220F;', h: 0, d: 1, n: 89, tclass: 'bigop1a'},
    {c: '&#x222B;', h: 0, d: 1.11, ic: 0.095, n: 90, tclass: 'bigop1c'},
    {c: '&#x222A;', h: 0, d: 1, n: 91, tclass: 'bigop1b'},
    {c: '&#x2229;', h: 0, d: 1, n: 92, tclass: 'bigop1b'},
    {c: '&#x228E;', h: 0, d: 1, n: 93, tclass: 'bigop1b'},
    {c: '&#x22C0;', h: 0, d: 1, n: 94, tclass: 'bigop1'},
    {c: '&#x22C1;', h: 0, d: 1, n: 95, tclass: 'bigop1'},
    {c: '&#x2211;', h: 0.1, d: 1.6, tclass: 'bigop2a'},
    {c: '&#x220F;', h: 0.1, d: 1.5, tclass: 'bigop2a'},
    {c: '&#x222B;', h: 0, d: 2.22, ic: 0.222, tclass: 'bigop2c'},
    {c: '&#x222A;', h: 0.1, d: 1.5, tclass: 'bigop2b'},
    {c: '&#x2229;', h: 0.1, d: 1.5, tclass: 'bigop2b'},
    {c: '&#x228E;', h: 0.1, d: 1.5, tclass: 'bigop2b'},
    {c: '&#x22C0;', h: 0.1, d: 1.5, tclass: 'bigop2'},
    {c: '&#x22C1;', h: 0.1, d: 1.5, tclass: 'bigop2'},
    // 60 - 6F
    {c: '&#x2210;', h: 0, d: 1, n: 97, tclass: 'bigop1a'},
    {c: '&#x2210;', h: 0.1, d: 1.5, tclass: 'bigop2a'},
    {c: '&#xFE3F;', h: 0.722, w: .65, n: 99, tclass: 'wide1'},
    {c: '&#xFE3F;', h: 0.85, w: 1.1, n: 100, tclass: 'wide2'},
    {c: '&#xFE3F;', h: 0.99, w: 1.65, tclass: 'wide3'},
    {c: '~', h: 0.722, w: .5, n: 102, tclass: 'wide1a'},
    {c: '~', h: 0.8, w: .8, n: 103, tclass: 'wide2a'},
    {c: '~', h: 0.99, w: 1.3, tclass: 'wide3a'},
    {c: '[', h: 0.04, d: 1.76, n: 20, tclass: 'delim2'},
    {c: ']', h: 0.04, d: 1.76, n: 21, tclass: 'delim2'},
    {c: '&#x2308;', h: 0.04, d: 1.76, n: 22, tclass: 'delim2a'},
    {c: '&#x2309;', h: 0.04, d: 1.76, n: 23, tclass: 'delim2a'},
    {c: '&#x230A;', h: 0.04, d: 1.76, n: 24, tclass: 'delim2a'},
    {c: '&#x230B;', h: 0.04, d: 1.76, n: 25, tclass: 'delim2a'},
    {c: '<span style="position:relative; left:-.1em; margin-right:-.1em">{</span>', h: 0.04, d: 1.76, n: 26, tclass: 'delim2'},
    {c: '<span style="position:relative; margin-right:-.1em; left:-.05em">}</span>', h: 0.04, d: 1.76, n: 27, tclass: 'delim2'},
    // 70 - 7F
    {c: '<span style="font-size: 150%; position:relative; top:.8em">&#x221A;</span>', h: 0.04, d: 1.16, n: 113, tclass: 'root'},
    {c: '<span style="font-size: 220%; position:relative; top:.8em">&#x221A;</span>', h: 0.04, d: 1.76, n: 114, tclass: 'root'},
    {c: '<span style="font-size: 310%; position:relative; top:.8em; margin-right:-.01em">&#x221A;</span>', h: 0.06, d: 2.36, n: 115, tclass: 'root'},
    {c: '<span style="font-size: 400%; position:relative; top:.8em; margin-right:-.025em">&#x221A;</span>', h: 0.08, d: 2.96, n: 116, tclass: 'root'},
    {c: '<span style="font-size: 490%; position:relative; top:.8em; margin-right:-.03em">&#x221A;</span>', h: 0.1, d: 3.75, n: 117, tclass: 'root'},
    {c: '<span style="font-size: 580%; position:relative; top:.775em; margin-right:-.04em">&#x221A;</span>', h: .12, d: 4.5, n: 118, tclass: 'root'},
    {c: '<span style="font-size: 750%; position:relative; top:.775em;margin-right:-.04em">&#x221A;</span>', h: .14, d: 5.7, tclass: 'root'},
    {c: '<span style="margin-left:.02em">|</span><span style="margin-left:.08em; margin-right:.125em">|</span>', h:.8, d:0, delim: {top: 126, bot: 127, rep: 119}, tclass: 'normal'},
    {c: '&#x2191;', h:.7, d:0, delim: {top: 120, rep: 63}, tclass: 'arrow1a'},
    {c: '&#x2193;', h:.65, d:0, delim: {bot: 121, rep: 63}, tclass: 'arrow1a'},
    {c: '<span style="margin-left:-.1em"></span><span style="position:relative; top:.55em; margin-right:-.3em">&#x25DC;</span>', h: 0.05, tclass: 'symbol'},
    {c: '<span style="margin-left:-.3em"></span><span style="position:relative; top:.55em; margin-right:-.1em">&#x25DD;</span>', h: 0.05, tclass: 'symbol'},
    {c: '<span style="margin-left:-.1em"></span><span style="position:relative; top:.15em; margin-right:-.3em">&#x25DF;</span>', h: 0.05, tclass: 'symbol'},
    {c: '<span style="margin-left:-.3em"></span><span style="position:relative; top:.15em; margin-right:-.1em">&#x25DE;</span>', h: 0.05, tclass: 'symbol'},
    {c: '&#x21D1;', h: .7, d:0, delim: {top: 126, rep: 119}, tclass: 'arrow1a'},
    {c: '&#x21D3;', h: .7, d:0, delim: {bot: 127, rep: 119}, tclass: 'arrow1a'}
  ],
  
  cmti10: [
    // 00 - 0F
    {c: '&Gamma;', ic: 0.133, tclass: 'igreek'},
    {c: '&Delta;', tclass: 'igreek'},
    {c: '&Theta;', ic: 0.094, tclass: 'igreek'},
    {c: '&Lambda;', tclass: 'igreek'},
    {c: '&Xi;', ic: 0.153, tclass: 'igreek'},
    {c: '&Pi;', ic: 0.164, tclass: 'igreek'},
    {c: '&Sigma;', ic: 0.12, tclass: 'igreek'},
    {c: '&Upsilon;', ic: 0.111, tclass: 'igreek'},
    {c: '&Phi;', ic: 0.0599, tclass: 'igreek'},
    {c: '&Psi;', ic: 0.111, tclass: 'igreek'},
    {c: '&Omega;', ic: 0.103, tclass: 'igreek'},
    {c: 'ff', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 14, '108': 15}, tclass: 'italic'},
    {c: 'fi', ic: 0.103, tclass: 'italic'},
    {c: 'fl', ic: 0.103, tclass: 'italic'},
    {c: 'ffi', ic: 0.103, tclass: 'italic'},
    {c: 'ffl', ic: 0.103, tclass: 'italic'},
    // 10 - 1F
    {c: '&#x131;', a:0, ic: 0.0767, tclass: 'italic'},
    {c: 'j', d:.2, ic: 0.0374, tclass: 'italic'},
    {c: '&#x2CB;', tclass: 'iaccent'},
    {c: '&#x2CA;', ic: 0.0969, tclass: 'iaccent'},
    {c: '&#x2C7;', ic: 0.083, tclass: 'iaccent'},
    {c: '&#x2D8;', ic: 0.108, tclass: 'iaccent'},
    {c: '&#x2C9;', ic: 0.103, tclass: 'iaccent'},
    {c: '&#x2DA;', tclass: 'iaccent'},
    {c: '?', d: 0.17, w: 0.46, tclass: 'italic'},
    {c: '&#xDF;', ic: 0.105, tclass: 'italic'},
    {c: '&#xE6;', a:0, ic: 0.0751, tclass: 'italic'},
    {c: '&#x153;', a:0, ic: 0.0751, tclass: 'italic'},
    {c: '&#xF8;', ic: 0.0919, tclass: 'italic'},
    {c: '&#xC6;', ic: 0.12, tclass: 'italic'},
    {c: '&#x152;', ic: 0.12, tclass: 'italic'},
    {c: '&#xD8;', ic: 0.094, tclass: 'italic'},
    // 20 - 2F
    {c: '?', krn: {'108': -0.256, '76': -0.321}, tclass: 'italic'},
    {c: '!', ic: 0.124, lig: {'96': 60}, tclass: 'italic'},
    {c: '&#x201D;', ic: 0.0696, tclass: 'italic'},
    {c: '#', ic: 0.0662, tclass: 'italic'},
    {c: '$', tclass: 'italic'},
    {c: '%', ic: 0.136, tclass: 'italic'},
    {c: '&amp;', ic: 0.0969, tclass: 'italic'},
    {c: '&#x2019;', ic: 0.124, krn: {'63': 0.102, '33': 0.102}, lig: {'39': 34}, tclass: 'italic'},
    {c: '(', d:.2, ic: 0.162, tclass: 'italic'},
    {c: ')', d:.2, ic: 0.0369, tclass: 'italic'},
    {c: '*', ic: 0.149, tclass: 'italic'},
    {c: '+', a:.1, ic: 0.0369, tclass: 'italic'},
    {c: ',', a:-.3, d:.2, w: 0.278, tclass: 'italic'},
    {c: '-', a:0, ic: 0.0283, lig: {'45': 123}, tclass: 'italic'},
    {c: '.', a:-.25, tclass: 'italic'},
    {c: '/', ic: 0.162, tclass: 'italic'},
    // 30 - 3F
    {c: '0', ic: 0.136, tclass: 'italic'},
    {c: '1', ic: 0.136, tclass: 'italic'},
    {c: '2', ic: 0.136, tclass: 'italic'},
    {c: '3', ic: 0.136, tclass: 'italic'},
    {c: '4', ic: 0.136, tclass: 'italic'},
    {c: '5', ic: 0.136, tclass: 'italic'},
    {c: '6', ic: 0.136, tclass: 'italic'},
    {c: '7', ic: 0.136, tclass: 'italic'},
    {c: '8', ic: 0.136, tclass: 'italic'},
    {c: '9', ic: 0.136, tclass: 'italic'},
    {c: ':', ic: 0.0582, tclass: 'italic'},
    {c: ';', ic: 0.0582, tclass: 'italic'},
    {c: '&#xA1;', ic: 0.0756, tclass: 'italic'},
    {c: '=', a:0, d:-.1, ic: 0.0662, tclass: 'italic'},
    {c: '&#xBF;', tclass: 'italic'},
    {c: '?', ic: 0.122, lig: {'96': 62}, tclass: 'italic'},
    // 40 - 4F
    {c: '@', ic: 0.096, tclass: 'italic'},
    {c: 'A', krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
    {c: 'B', ic: 0.103, tclass: 'italic'},
    {c: 'C', ic: 0.145, tclass: 'italic'},
    {c: 'D', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}, tclass: 'italic'},
    {c: 'E', ic: 0.12, tclass: 'italic'},
    {c: 'F', ic: 0.133, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'italic'},
    {c: 'G', ic: 0.0872, tclass: 'italic'},
    {c: 'H', ic: 0.164, tclass: 'italic'},
    {c: 'I', ic: 0.158, tclass: 'italic'},
    {c: 'J', ic: 0.14, tclass: 'italic'},
    {c: 'K', ic: 0.145, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'italic'},
    {c: 'L', krn: {'84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
    {c: 'M', ic: 0.164, tclass: 'italic'},
    {c: 'N', ic: 0.164, tclass: 'italic'},
    {c: 'O', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}, tclass: 'italic'},
    // 50 - 5F
    {c: 'P', ic: 0.103, krn: {'65': -0.0767}, tclass: 'italic'},
    {c: 'Q', d:.2, ic: 0.094, tclass: 'italic'},
    {c: 'R', ic: 0.0387, krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
    {c: 'S', ic: 0.12, tclass: 'italic'},
    {c: 'T', ic: 0.133, krn: {'121': -0.0767, '101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}, tclass: 'italic'},
    {c: 'U', ic: 0.164, tclass: 'italic'},
    {c: 'V', ic: 0.184, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'italic'},
    {c: 'W', ic: 0.184, krn: {'65': -0.0767}, tclass: 'italic'},
    {c: 'X', ic: 0.158, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'italic'},
    {c: 'Y', ic: 0.194, krn: {'101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}, tclass: 'italic'},
    {c: 'Z', ic: 0.145, tclass: 'italic'},
    {c: '[', d:.1, ic: 0.188, tclass: 'italic'},
    {c: '&#x201C;', ic: 0.169, tclass: 'italic'},
    {c: ']', d:.1, ic: 0.105, tclass: 'italic'},
    {c: '&#x2C6;', ic: 0.0665, tclass: 'iaccent'},
    {c: '&#x2D9;', ic: 0.118, tclass: 'iaccent'},
    // 60 - 6F
    {c: '&#x2018;', ic: 0.124, lig: {'96': 92}, tclass: 'italic'},
    {c: 'a', a:0, ic: 0.0767, tclass: 'italic'},
    {c: 'b', ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
    {c: 'c', a:0, ic: 0.0565, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
    {c: 'd', ic: 0.103, krn: {'108': 0.0511}, tclass: 'italic'},
    {c: 'e', a:0, ic: 0.0751, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
    {c: 'f', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'italic'},
    {c: 'g', a:0, d:.2, ic: 0.0885, tclass: 'italic'},
    {c: 'h', ic: 0.0767, tclass: 'italic'},
    {c: 'i', ic: 0.102, tclass: 'italic'},
    {c: 'j', d:.2, ic: 0.145, tclass: 'italic'},
    {c: 'k', ic: 0.108, tclass: 'italic'},
    {c: 'l', ic: 0.103, krn: {'108': 0.0511}, tclass: 'italic'},
    {c: 'm', a:0, ic: 0.0767, tclass: 'italic'},
    {c: 'n', a:0, ic: 0.0767, krn: {'39': -0.102}, tclass: 'italic'},
    {c: 'o', a:0, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
    // 70 - 7F
    {c: 'p', a:0, d:.2, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
    {c: 'q', a:0, d:.2, ic: 0.0885, tclass: 'italic'},
    {c: 'r', a:0, ic: 0.108, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
    {c: 's', a:0, ic: 0.0821, tclass: 'italic'},
    {c: 't', ic: 0.0949, tclass: 'italic'},
    {c: 'u', a:0, ic: 0.0767, tclass: 'italic'},
    {c: 'v', a:0, ic: 0.108, tclass: 'italic'},
    {c: 'w', a:0, ic: 0.108, krn: {'108': 0.0511}, tclass: 'italic'},
    {c: 'x', a:0, ic: 0.12, tclass: 'italic'},
    {c: 'y', a:0, d:.2, ic: 0.0885, tclass: 'italic'},
    {c: 'z', a:0, ic: 0.123, tclass: 'italic'},
    {c: '&#x2013;', a:.1, ic: 0.0921, lig: {'45': 124}, tclass: 'italic'},
    {c: '&#x2014;', a:.1, ic: 0.0921, tclass: 'italic'},
    {c: '&#x2DD;', ic: 0.122, tclass: 'iaccent'},
    {c: '&#x2DC;', ic: 0.116, tclass: 'iaccent'},
    {c: '&#xA8;', tclass: 'iaccent'}
  ],
  
  cmbx10: [
    // 00 - 0F
    {c: '&Gamma;', tclass: 'bgreek'},
    {c: '&Delta;', tclass: 'bgreek'},
    {c: '&Theta;', tclass: 'bgreek'},
    {c: '&Lambda;', tclass: 'bgreek'},
    {c: '&Xi;', tclass: 'bgreek'},
    {c: '&Pi;', tclass: 'bgreek'},
    {c: '&Sigma;', tclass: 'bgreek'},
    {c: '&Upsilon;', tclass: 'bgreek'},
    {c: '&Phi;', tclass: 'bgreek'},
    {c: '&Psi;', tclass: 'bgreek'},
    {c: '&Omega;', tclass: 'bgreek'},
    {c: 'ff', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 14, '108': 15}, tclass: 'bold'},
    {c: 'fi', tclass: 'bold'},
    {c: 'fl', tclass: 'bold'},
    {c: 'ffi', tclass: 'bold'},
    {c: 'ffl', tclass: 'bold'},
    // 10 - 1F
    {c: '&#x131;', a:0, tclass: 'bold'},
    {c: 'j', d:.2, tclass: 'bold'},
    {c: '&#x2CB;', tclass: 'baccent'},
    {c: '&#x2CA;', tclass: 'baccent'},
    {c: '&#x2C7;', tclass: 'baccent'},
    {c: '&#x2D8;', tclass: 'baccent'},
    {c: '&#x2C9;', tclass: 'baccent'},
    {c: '&#x2DA;', tclass: 'baccent'},
    {c: '?', tclass: 'bold'},
    {c: '&#xDF;', tclass: 'bold'},
    {c: '&#xE6;', a:0, tclass: 'bold'},
    {c: '&#x153;', a:0, tclass: 'bold'},
    {c: '&#xF8;', tclass: 'bold'},
    {c: '&#xC6;', tclass: 'bold'},
    {c: '&#x152;', tclass: 'bold'},
    {c: '&#xD8;', tclass: 'bold'},
    // 20 - 2F
    {c: '?', krn: {'108': -0.278, '76': -0.319}, tclass: 'bold'},
    {c: '!', lig: {'96': 60}, tclass: 'bold'},
    {c: '&#x201D;', tclass: 'bold'},
    {c: '#', tclass: 'bold'},
    {c: '$', tclass: 'bold'},
    {c: '%', tclass: 'bold'},
    {c: '&amp;', tclass: 'bold'},
    {c: '&#x2019;', krn: {'63': 0.111, '33': 0.111}, lig: {'39': 34}, tclass: 'bold'},
    {c: '(', d:.2, tclass: 'bold'},
    {c: ')', d:.2, tclass: 'bold'},
    {c: '*', tclass: 'bold'},
    {c: '+', a:.1, tclass: 'bold'},
    {c: ',', a:-.3, d:.2, w: 0.278, tclass: 'bold'},
    {c: '-', a:0, lig: {'45': 123}, tclass: 'bold'},
    {c: '.', a:-.25, tclass: 'bold'},
    {c: '/', tclass: 'bold'},
    // 30 - 3F
    {c: '0', tclass: 'bold'},
    {c: '1', tclass: 'bold'},
    {c: '2', tclass: 'bold'},
    {c: '3', tclass: 'bold'},
    {c: '4', tclass: 'bold'},
    {c: '5', tclass: 'bold'},
    {c: '6', tclass: 'bold'},
    {c: '7', tclass: 'bold'},
    {c: '8', tclass: 'bold'},
    {c: '9', tclass: 'bold'},
    {c: ':', tclass: 'bold'},
    {c: ';', tclass: 'bold'},
    {c: '&#xA1;', tclass: 'bold'},
    {c: '=', a:0, d:-.1, tclass: 'bold'},
    {c: '&#xBF;', tclass: 'bold'},
    {c: '?', lig: {'96': 62}, tclass: 'bold'},
    // 40 - 4F
    {c: '@', tclass: 'bold'},
    {c: 'A', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'bold'},
    {c: 'B', tclass: 'bold'},
    {c: 'C', tclass: 'bold'},
    {c: 'D', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'bold'},
    {c: 'E', tclass: 'bold'},
    {c: 'F', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'bold'},
    {c: 'G', tclass: 'bold'},
    {c: 'H', tclass: 'bold'},
    {c: 'I', krn: {'73': 0.0278}, tclass: 'bold'},
    {c: 'J', tclass: 'bold'},
    {c: 'K', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'bold'},
    {c: 'L', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'bold'},
    {c: 'M', tclass: 'bold'},
    {c: 'N', tclass: 'bold'},
    {c: 'O', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'bold'},
    // 50 - 5F
    {c: 'P', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'bold'},
    {c: 'Q', d:.2, tclass: 'bold'},
    {c: 'R', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'bold'},
    {c: 'S', tclass: 'bold'},
    {c: 'T', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'bold'},
    {c: 'U', tclass: 'bold'},
    {c: 'V', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'bold'},
    {c: 'W', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'bold'},
    {c: 'X', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'bold'},
    {c: 'Y', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'bold'},
    {c: 'Z', tclass: 'bold'},
    {c: '[', d:.1, tclass: 'bold'},
    {c: '&#x201C;', tclass: 'bold'},
    {c: ']', d:.1, tclass: 'bold'},
    {c: '&#x2C6;', tclass: 'baccent'},
    {c: '&#x2D9;', tclass: 'baccent'},
    // 60 - 6F
    {c: '&#x2018;', lig: {'96': 92}, tclass: 'bold'},
    {c: 'a', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'bold'},
    {c: 'b', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'bold'},
    {c: 'c', a:0, krn: {'104': -0.0278, '107': -0.0278}, tclass: 'bold'},
    {c: 'd', tclass: 'bold'},
    {c: 'e', a:0, tclass: 'bold'},
    {c: 'f', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'bold'},
    {c: 'g', a:0, d:.2, ic: 0.0139, krn: {'106': 0.0278}, tclass: 'bold'},
    {c: 'h', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'bold'},
    {c: 'i', tclass: 'bold'},
    {c: 'j', d:.2, tclass: 'bold'},
    {c: 'k', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'bold'},
    {c: 'l', tclass: 'bold'},
    {c: 'm', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'bold'},
    {c: 'n', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'bold'},
    {c: 'o', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'bold'},
    // 70 - 7F
    {c: 'p', a:0, d:.2, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'bold'},
    {c: 'q', a:0, d:.2, tclass: 'bold'},
    {c: 'r', a:0, tclass: 'bold'},
    {c: 's', a:0, tclass: 'bold'},
    {c: 't', krn: {'121': -0.0278, '119': -0.0278}, tclass: 'bold'},
    {c: 'u', a:0, krn: {'119': -0.0278}, tclass: 'bold'},
    {c: 'v', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'bold'},
    {c: 'w', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'bold'},
    {c: 'x', a:0, tclass: 'bold'},
    {c: 'y', a:0, d:.2, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'bold'},
    {c: 'z', a:0, tclass: 'bold'},
    {c: '&#x2013;', a:.1, ic: 0.0278, lig: {'45': 124}, tclass: 'bold'},
    {c: '&#x2014;', a:.1, ic: 0.0278, tclass: 'bold'},
    {c: '&#x2DD;', tclass: 'baccent'},
    {c: '&#x2DC;', tclass: 'baccent'},
    {c: '&#xA8;', tclass: 'baccent'}
  ]
});


jsMath.Setup.Styles({
    '.typeset .cmr10':          "font-family: serif",
    '.typeset .italic':         "font-style: italic",
    '.typeset .bold':           "font-weight: bold",
    '.typeset .lucida':         "font-family: 'lucida sans unicode'",
    '.typeset .arial':          "font-family: 'arial unicode MS'",
    '.typeset .cal':            "font-family: 'Script MT', 'Script MT Bold', cursive",
    '.typeset .arrows':         "font-family: 'Arial unicode MS'",
    '.typeset .arrow1':         "font-family: 'Arial unicode MS'",
    '.typeset .arrow1a':        "font-family: 'Arial unicode MS'; position:relative; top:.05em;left:-.15em; margin-right:-.15em",
    '.typeset .arrow2':         "font-family: 'Arial unicode MS'; position:relative; top:-.1em;",
    '.typeset .arrow3':         "font-family: 'Arial unicode MS'; margin:.1em",
    '.typeset .symbol':         "font-family: 'Arial unicode MS'",
    '.typeset .symbol2':        "font-family: 'Arial unicode MS'",
    '.typeset .delim1':         "font-family: 'Times New Roman'; font-size: 133%; position:relative; top:.7em",
    '.typeset .delim1a':        "font-family: 'Lucida sans unicode'; font-size: 133%; position:relative; top:.8em",
    '.typeset .delim1b':        "font-family: 'Arial unicode MS'; font-size: 133%; position:relative; top:.8em",
    '.typeset .delim2':         "font-family: 'Times New Roman'; font-size: 180%; position:relative; top:.75em",
    '.typeset .delim2a':        "font-family: 'Lucida sans unicode'; font-size: 180%; position:relative; top:.8em",
    '.typeset .delim2b':        "font-family: 'Arial unicode MS'; font-size: 180%; position:relative; top:.8em",
    '.typeset .delim3':         "font-family: 'Times New Roman'; font-size: 250%; position:relative; top:.725em",
    '.typeset .delim3a':        "font-family: 'Lucida sans unicode'; font-size: 250%; position:relative; top:.775em",
    '.typeset .delim3b':        "font-family: 'Arial unicode MS'; font-size: 250%; position:relative; top:.8em",
    '.typeset .delim4':         "font-family: 'Times New Roman'; font-size: 325%; position:relative; top:.7em",
    '.typeset .delim4a':        "font-family: 'Lucida sans unicode'; font-size: 325%; position:relative; top:.775em",
    '.typeset .delim4b':        "font-family: 'Arial unicode MS'; font-size: 325%; position:relative; top:.8em",
    '.typeset .delimx':         "font-family: Symbol; position:relative; top:.2em",
    '.typeset .greek':          "font-family: 'Times New Roman'",
    '.typeset .igreek':         "font-family: 'Times New Roman'; font-style:italic",
    '.typeset .bgreek':         "font-family: 'Times New Roman'; font-weight:bold",
    '.typeset .bigop1':         "font-family: 'Arial unicode MS'; font-size: 130%; position: relative; top: .7em; margin:-.05em",
    '.typeset .bigop1a':        "font-family: 'Arial unicode MS'; font-size: 110%; position: relative; top: .85em;",
    '.typeset .bigop1b':        "font-family: 'Arial unicode MS'; font-size: 180%; position: relative; top: .6em",
    '.typeset .bigop1c':        "font-family: 'Arial unicode MS'; font-size: 85%; position: relative; top: 1em",
    '.typeset .bigop2':         "font-family: 'Arial unicode MS'; font-size: 230%; position: relative; top: .6em; margin:-.05em",
    '.typeset .bigop2a':        "font-family: 'Arial unicode MS'; font-size: 185%; position: relative; top: .75em",
    '.typeset .bigop2b':        "font-family: 'Arial unicode MS'; font-size: 275%; position: relative; top: .55em",
    '.typeset .bigop2c':        "font-family: 'Arial unicode MS'; font-size: 185%; position: relative; top: 1em; margin-right:-.1em",
    '.typeset .wide1':          "font-size: 67%; position: relative; top:-.5em;",
    '.typeset .wide2':          "font-size: 110%; position: relative; top:-.2em;",
    '.typeset .wide3':          "font-size: 175%;",
    '.typeset .wide1a':         "font-family: 'Times New Roman'; font-size: 75%; position: relative; top:-.5em",
    '.typeset .wide2a':         "font-family: 'Times New Roman'; font-size: 133%; position: relative; top:-.2em",
    '.typeset .wide3a':         "font-family: 'Times New Roman'; font-size: 200%; position: relative; top:-.1em",
    '.typeset .root':           "font-family: 'Arial unicode MS'; margin-right:-.075em",
    '.typeset .accent':         "font-family: 'Arial unicode MS'; position:relative; top:.05em; left:.15em",
    '.typeset .iaccent':        "font-family: 'Arial unicode MS'; position:relative; top:.05em; left:.15em; font-style:italic",
    '.typeset .baccent':        "font-family: 'Arial unicode MS'; position:relative; top:.05em; left:.15em; font-weight:bold"
});

//
// adjust for Mozilla
//
if (jsMath.browser == 'Mozilla') {
  jsMath.Update.TeXfonts({
    cmex10: {
      '48': {c: '&#xF8EB;'},
      '49': {c: '&#xF8F6;'},
      '50': {c: '&#xF8EE;'},
      '51': {c: '&#xF8F9;'},
      '52': {c: '&#xF8F0;'},
      '53': {c: '&#xF8FB;'},
      '54': {c: '&#xF8EF;'},
      '55': {c: '&#xF8FA;'},
      '56': {c: '&#xF8F1;'},
      '57': {c: '&#xF8FC;'},
      '58': {c: '&#xF8F3;'},
      '59': {c: '&#xF8FE;'},
      '60': {c: '&#xF8F2;'},
      '61': {c: '&#xF8FD;'},
      '62': {c: '&#xF8F4;'},
      '64': {c: '&#xF8ED;'},
      '65': {c: '&#xF8F8;'},
      '66': {c: '&#xF8EC;'},
      '67': {c: '&#xF8F7;'}
    }
  });
  jsMath.Setup.Styles({
      '.typeset .accent':  'font-family: Arial unicode MS; position:relative; top:.05em; left:.05em'
  });
}

//
// adjust for MSIE
//
if (jsMath.browser == "MSIE") {
  jsMath.Browser.msieFontBug = 1;
  jsMath.Update.TeXfonts({
    cmex10: {
      '63': {c: '<span style="position:relative; left:.125em; margin-right:.125em">|</span>'},
      '119': {c: '<span style="position:relative; left:.02em; margin-right=.08em">|</span><span style="margin-right:.125em">|</span>'}
    }
  });
}

/*
 *  No access to TeX "not" character, so fake this
 *  Also ajust the bowtie spacing
 */
jsMath.Macro('not','\\mathrel{\\rlap{\\kern 3mu/}}');
jsMath.Macro('bowtie','\\mathrel\\triangleright\\kern-6mu\\mathrel\\triangleleft');

jsMath.Box.defaultH = 0.8;

jsMath.Script.End();

Index: loncom/html/adm/jsMath/uncompressed/jsMath-fallback-symbols.js
+++ loncom/html/adm/jsMath/uncompressed/jsMath-fallback-symbols.js
/*
 *  jsMath-fallback-symbols.js
 *  
 *  Part of the jsMath package for mathematics on the web.
 *
 *  This file makes changes needed to use image fonts for symbols
 *  but standard native fonts for letters and numbers.
 *
 *  ---------------------------------------------------------------------
 *
 *  Copyright 2004-2006 by Davide P. Cervone
 * 
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

jsMath.Script.Start();

jsMath.Add(jsMath.Img,{
  UpdateTeXFonts: function (change) {
    for (var font in change) {
      for (var code in change[font]) {
        jsMath.TeX[font][code] = change[font][code];
        jsMath.TeX[font][code].tclass = 'i' + font;
      }
    }
  }
});


jsMath.Img.UpdateTeXFonts({
  cmr10:  {
    '33': {c: '!', lig: {'96': 60}},
    '35': {c: '#'},
    '36': {c: '$'},
    '37': {c: '%'},
    '38': {c: '&amp;'},
    '40': {c: '(', d:.2},
    '41': {c: ')', d:.2},
    '42': {c: '*', d:-.3},
    '43': {c: '+', a:.1},
    '44': {c: ',', a:-.3},
    '45': {c: '-', a:0, lig: {'45': 123}},
    '46': {c: '.', a:-.25},
    '47': {c: '/'},
    '48': {c: '0'},
    '49': {c: '1'},
    '50': {c: '2'},
    '51': {c: '3'},
    '52': {c: '4'},
    '53': {c: '5'},
    '54': {c: '6'},
    '55': {c: '7'},
    '56': {c: '8'},
    '57': {c: '9'},
    '58': {c: ':'},
    '59': {c: ';'},
    '61': {c: '=', a:0, d:-.1},
    '63': {c: '?', lig: {'96': 62}},
    '64': {c: '@'},
    '65': {c: 'A', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}},
    '66': {c: 'B'},
    '67': {c: 'C'},
    '68': {c: 'D', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}},
    '69': {c: 'E'},
    '70': {c: 'F', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
    '71': {c: 'G'},
    '72': {c: 'H'},
    '73': {c: 'I', krn: {'73': 0.0278}},
    '74': {c: 'J'},
    '75': {c: 'K', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
    '76': {c: 'L', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}},
    '77': {c: 'M'},
    '78': {c: 'N'},
    '79': {c: 'O', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}},
    '80': {c: 'P', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}},
    '81': {c: 'Q', d: 1},
    '82': {c: 'R', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}},
    '83': {c: 'S'},
    '84': {c: 'T', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}},
    '85': {c: 'U'},
    '86': {c: 'V', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
    '87': {c: 'W', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
    '88': {c: 'X', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
    '89': {c: 'Y', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}},
    '90': {c: 'Z'},
    '91': {c: '[', d:.1},
    '93': {c: ']', d:.1},
    '97': {c: 'a', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
    '98': {c: 'b', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
    '99': {c: 'c', a:0, krn: {'104': -0.0278, '107': -0.0278}},
    '100': {c: 'd'},
    '101': {c: 'e', a:0},
    '102': {c: 'f', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}},
    '103': {c: 'g', a:0, d:.2, ic: 0.0139, krn: {'106': 0.0278}},
    '104': {c: 'h', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}},
    '105': {c: 'i'},
    '106': {c: 'j', d:1},
    '107': {c: 'k', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}},
    '108': {c: 'l'},
    '109': {c: 'm', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}},
    '110': {c: 'n', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}},
    '111': {c: 'o', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
    '112': {c: 'p', a:0, d:.2, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
    '113': {c: 'q', a:0, d:1},
    '114': {c: 'r', a:0},
    '115': {c: 's', a:0},
    '116': {c: 't', krn: {'121': -0.0278, '119': -0.0278}},
    '117': {c: 'u', a:0, krn: {'119': -0.0278}},
    '118': {c: 'v', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}},
    '119': {c: 'w', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}},
    '120': {c: 'x', a:0},
    '121': {c: 'y', a:0, d:.2, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}},
    '122': {c: 'z', a:0}
  },
  cmmi10:  {
    '65': {c: 'A', krn: {'127': 0.139}},
    '66': {c: 'B', ic: 0.0502, krn: {'127': 0.0833}},
    '67': {c: 'C', ic: 0.0715, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
    '68': {c: 'D', ic: 0.0278, krn: {'127': 0.0556}},
    '69': {c: 'E', ic: 0.0576, krn: {'127': 0.0833}},
    '70': {c: 'F', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}},
    '71': {c: 'G', krn: {'127': 0.0833}},
    '72': {c: 'H', ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}},
    '73': {c: 'I', ic: 0.0785, krn: {'127': 0.111}},
    '74': {c: 'J', ic: 0.0962, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.167}},
    '75': {c: 'K', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}},
    '76': {c: 'L', krn: {'127': 0.0278}},
    '77': {c: 'M', ic: 0.109, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
    '78': {c: 'N', ic: 0.109, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
    '79': {c: 'O', ic: 0.0278, krn: {'127': 0.0833}},
    '80': {c: 'P', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}},
    '81': {c: 'Q', d:.2, krn: {'127': 0.0833}},
    '82': {c: 'R', ic: 0.00773, krn: {'127': 0.0833}},
    '83': {c: 'S', ic: 0.0576, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
    '84': {c: 'T', ic: 0.139, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
    '85': {c: 'U', ic: 0.109, krn: {'59': -0.111, '58': -0.111, '61': -0.0556, '127': 0.0278}},
    '86': {c: 'V', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}},
    '87': {c: 'W', ic: 0.139, krn: {'59': -0.167, '58': -0.167, '61': -0.111}},
    '88': {c: 'X', ic: 0.0785, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
    '89': {c: 'Y', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}},
    '90': {c: 'Z', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}},
    '97': {c: 'a', a:0},
    '98': {c: 'b'},
    '99': {c: 'c', a:0, krn: {'127': 0.0556}},
    '100': {c: 'd', krn: {'89': 0.0556, '90': -0.0556, '106': -0.111, '102': -0.167, '127': 0.167}},
    '101': {c: 'e', a:0, krn: {'127': 0.0556}},
    '102': {c: 'f', d:.2, ic: 0.108, krn: {'59': -0.0556, '58': -0.0556, '127': 0.167}},
    '103': {c: 'g', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0278}},
    '104': {c: 'h', krn: {'127': -0.0278}},
    '105': {c: 'i'},
    '106': {c: 'j', d:.2, ic: 0.0572, krn: {'59': -0.0556, '58': -0.0556}},
    '107': {c: 'k', ic: 0.0315},
    '108': {c: 'l', ic: 0.0197, krn: {'127': 0.0833}},
    '109': {c: 'm', a:0},
    '110': {c: 'n', a:0},
    '111': {c: 'o', a:0, krn: {'127': 0.0556}},
    '112': {c: 'p', a:0, d:.2, krn: {'127': 0.0833}},
    '113': {c: 'q', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0833}},
    '114': {c: 'r', a:0, ic: 0.0278, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}},
    '115': {c: 's', a:0, krn: {'127': 0.0556}},
    '116': {c: 't', krn: {'127': 0.0833}},
    '117': {c: 'u', a:0, krn: {'127': 0.0278}},
    '118': {c: 'v', a:0, ic: 0.0359, krn: {'127': 0.0278}},
    '119': {c: 'w', a:0, ic: 0.0269, krn: {'127': 0.0833}},
    '120': {c: 'x', a:0, krn: {'127': 0.0278}},
    '121': {c: 'y', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0556}},
    '122': {c: 'z', a:0, ic: 0.044, krn: {'127': 0.0556}}
  },
  cmsy10: {
    '0': {c:'&#8211;', a:.1}
  },
  cmti10: {
    '33': {c: '!', lig: {'96': 60}},
    '35': {c: '#', ic: 0.0662},
    '37': {c: '%', ic: 0.136},
    '38': {c: '&amp;', ic: 0.0969},
    '40': {c: '(', d:.2, ic: 0.162},
    '41': {c: ')', d:.2, ic: 0.0369},
    '42': {c: '*', ic: 0.149},
    '43': {c: '+', a:.1, ic: 0.0369},
    '44': {c: ',', a:-.3, d:.2, w: 0.278},
    '45': {c: '-', a:0, ic: 0.0283, lig: {'45': 123}},
    '46': {c: '.', a:-.25},
    '47': {c: '/', ic: 0.162},
    '48': {c: '0', ic: 0.136},
    '49': {c: '1', ic: 0.136},
    '50': {c: '2', ic: 0.136},
    '51': {c: '3', ic: 0.136},
    '52': {c: '4', ic: 0.136},
    '53': {c: '5', ic: 0.136},
    '54': {c: '6', ic: 0.136},
    '55': {c: '7', ic: 0.136},
    '56': {c: '8', ic: 0.136},
    '57': {c: '9', ic: 0.136},
    '58': {c: ':', ic: 0.0582},
    '59': {c: ';', ic: 0.0582},
    '61': {c: '=', a:0, d:-.1, ic: 0.0662},
    '63': {c: '?', ic: 0.122, lig: {'96': 62}},
    '64': {c: '@', ic: 0.096},
    '65': {c: 'A', krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
    '66': {c: 'B', ic: 0.103},
    '67': {c: 'C', ic: 0.145},
    '68': {c: 'D', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}},
    '69': {c: 'E', ic: 0.12},
    '70': {c: 'F', ic: 0.133, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}},
    '71': {c: 'G', ic: 0.0872},
    '72': {c: 'H', ic: 0.164},
    '73': {c: 'I', ic: 0.158},
    '74': {c: 'J', ic: 0.14},
    '75': {c: 'K', ic: 0.145, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}},
    '76': {c: 'L', krn: {'84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
    '77': {c: 'M', ic: 0.164},
    '78': {c: 'N', ic: 0.164},
    '79': {c: 'O', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}},
    '80': {c: 'P', ic: 0.103, krn: {'65': -0.0767}},
    '81': {c: 'Q', d:.2, ic: 0.094},
    '82': {c: 'R', ic: 0.0387, krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
    '83': {c: 'S', ic: 0.12},
    '84': {c: 'T', ic: 0.133, krn: {'121': -0.0767, '101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}},
    '85': {c: 'U', ic: 0.164},
    '86': {c: 'V', ic: 0.184, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}},
    '87': {c: 'W', ic: 0.184, krn: {'65': -0.0767}},
    '88': {c: 'X', ic: 0.158, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}},
    '89': {c: 'Y', ic: 0.194, krn: {'101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}},
    '90': {c: 'Z', ic: 0.145},
    '91': {c: '[', d:.1, ic: 0.188},
    '93': {c: ']', d:.1, ic: 0.105},
    '97': {c: 'a', a:0, ic: 0.0767},
    '98': {c: 'b', ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
    '99': {c: 'c', a:0, ic: 0.0565, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
    '100': {c: 'd', ic: 0.103, krn: {'108': 0.0511}},
    '101': {c: 'e', a:0, ic: 0.0751, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
    '102': {c: 'f', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 12, '102': 11, '108': 13}},
    '103': {c: 'g', a:0, d:.2, ic: 0.0885},
    '104': {c: 'h', ic: 0.0767},
    '105': {c: 'i', ic: 0.102},
    '106': {c: 'j', d:.2, ic: 0.145},
    '107': {c: 'k', ic: 0.108},
    '108': {c: 'l', ic: 0.103, krn: {'108': 0.0511}},
    '109': {c: 'm', a:0, ic: 0.0767},
    '110': {c: 'n', a:0, ic: 0.0767, krn: {'39': -0.102}},
    '111': {c: 'o', a:0, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
    '112': {c: 'p', a:0, d:.2, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
    '113': {c: 'q', a:0, d:.2, ic: 0.0885},
    '114': {c: 'r', a:0, ic: 0.108, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}},
    '115': {c: 's', a:0, ic: 0.0821},
    '116': {c: 't', ic: 0.0949},
    '117': {c: 'u', a:0, ic: 0.0767},
    '118': {c: 'v', a:0, ic: 0.108},
    '119': {c: 'w', a:0, ic: 0.108, krn: {'108': 0.0511}},
    '120': {c: 'x', a:0, ic: 0.12},
    '121': {c: 'y', a:0, d:.2, ic: 0.0885},
    '122': {c: 'z', a:0, ic: 0.123}
  },
  cmbx10: {
    '33': {c: '!', lig: {'96': 60}},
    '35': {c: '#'},
    '36': {c: '$'},
    '37': {c: '%'},
    '38': {c: '&amp;'},
    '40': {c: '(', d:.2},
    '41': {c: ')', d:.2},
    '42': {c: '*'},
    '43': {c: '+', a:.1},
    '44': {c: ',', a:-.3, d:.2, w: 0.278},
    '45': {c: '-', a:0, lig: {'45': 123}},
    '46': {c: '.', a:-.25},
    '47': {c: '/'},
    '48': {c: '0'},
    '49': {c: '1'},
    '50': {c: '2'},
    '51': {c: '3'},
    '52': {c: '4'},
    '53': {c: '5'},
    '54': {c: '6'},
    '55': {c: '7'},
    '56': {c: '8'},
    '57': {c: '9'},
    '58': {c: ':'},
    '59': {c: ';'},
    '61': {c: '=', a:0, d:-.1},
    '63': {c: '?', lig: {'96': 62}},
    '64': {c: '@'},
    '65': {c: 'A', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}},
    '66': {c: 'B'},
    '67': {c: 'C'},
    '68': {c: 'D', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}},
    '69': {c: 'E'},
    '70': {c: 'F', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
    '71': {c: 'G'},
    '72': {c: 'H'},
    '73': {c: 'I', krn: {'73': 0.0278}},
    '74': {c: 'J'},
    '75': {c: 'K', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
    '76': {c: 'L', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}},
    '77': {c: 'M'},
    '78': {c: 'N'},
    '79': {c: 'O', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}},
    '80': {c: 'P', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}},
    '81': {c: 'Q', d: 1},
    '82': {c: 'R', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}},
    '83': {c: 'S'},
    '84': {c: 'T', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}},
    '85': {c: 'U'},
    '86': {c: 'V', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
    '87': {c: 'W', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
    '88': {c: 'X', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}},
    '89': {c: 'Y', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}},
    '90': {c: 'Z'},
    '91': {c: '[', d:.1},
    '93': {c: ']', d:.1},
    '97': {c: 'a', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
    '98': {c: 'b', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
    '99': {c: 'c', a:0, krn: {'104': -0.0278, '107': -0.0278}},
    '100': {c: 'd'},
    '101': {c: 'e', a:0},
    '102': {c: 'f', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}},
    '103': {c: 'g', a:0, d:.2, ic: 0.0139, krn: {'106': 0.0278}},
    '104': {c: 'h', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}},
    '105': {c: 'i'},
    '106': {c: 'j', d:1},
    '107': {c: 'k', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}},
    '108': {c: 'l'},
    '109': {c: 'm', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}},
    '110': {c: 'n', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}},
    '111': {c: 'o', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
    '112': {c: 'p', a:0, d:.2, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}},
    '113': {c: 'q', a:0, d:1},
    '114': {c: 'r', a:0},
    '115': {c: 's', a:0},
    '116': {c: 't', krn: {'121': -0.0278, '119': -0.0278}},
    '117': {c: 'u', a:0, krn: {'119': -0.0278}},
    '118': {c: 'v', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}},
    '119': {c: 'w', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}},
    '120': {c: 'x', a:0},
    '121': {c: 'y', a:0, d:.2, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}},
    '122': {c: 'z', a:0}
  }
});


if (jsMath.browser == 'MSIE' && navigator.platform == 'MacPPC') {
  jsMath.Setup.Styles({
    '.typeset .math':       'font-style: normal',
    '.typeset .typeset':    'font-style: normal',
    '.typeset .icmr10':     'font-family: Times',
    '.typeset .icmmi10':    'font-family: Times; font-style: italic',
    '.typeset .icmbx10':    'font-family: Times; font-weight: bold',
    '.typeset .icmti10':    'font-family: Times; font-style: italic'
  });
} else {
  jsMath.Setup.Styles({
    '.typeset .math':       'font-style: normal',
    '.typeset .typeset':    'font-style: normal',
    '.typeset .icmr10':     'font-family: serif',
    '.typeset .icmmi10':    'font-family: serif; font-style: italic',
    '.typeset .icmbx10':    'font-family: serif; font-weight: bold',
    '.typeset .icmti10':    'font-family: serif; font-style: italic'
  });
}


jsMath.Add(jsMath.Img,{
  symbols: [
      0,  1,  2,  3,  4,  5,  6,  7,    8,  9, 10, 11, 12, 13, 14, 15,
     16, 17, 18, 19, 20, 21, 22, 23,   24, 25, 26, 27, 28, 29, 30, 31,
     32,     34,                 39,
                                                       60,     62,

                                                       92,     94, 95,
     96,
                                                  123,124,125,126,127
  ]
});

/*
 *  for now, use images for everything
 */
jsMath.Img.SetFont({
   cmr10:  jsMath.Img.symbols,
   cmmi10: [
      0,  1,  2,  3,  4,  5,  6,  7,    8,  9, 10, 11, 12, 13, 14, 15,
     16, 17, 18, 19, 20, 21, 22, 23,   24, 25, 26, 27, 28, 29, 30, 31,
     32, 33, 34, 35, 36, 37, 38, 39,   40, 41, 42, 43, 44, 45, 46, 47,
     48, 49, 50, 51, 52, 53, 54, 55,   56, 57, 58, 59, 60, 61, 62, 63,
     64, 
                                                   91, 92, 93, 94, 95,
     96,
                                                  123,124,125,126,127
   ],
   cmsy10: [
          1,  2,  3,  4,  5,  6,  7,    8,  9, 10, 11, 12, 13, 14, 15,
     16, 17, 18, 19, 20, 21, 22, 23,   24, 25, 26, 27, 28, 29, 30, 31,
     32, 33, 34, 35, 36, 37, 38, 39,   40, 41, 42, 43, 44, 45, 46, 47,
     48, 49, 50, 51, 52, 53, 54, 55,   56, 57, 58, 59, 60, 61, 62, 63,
     64, 65, 66, 67, 68, 69, 70, 71,   72, 73, 74, 75, 76, 77, 78, 79,
     80, 81, 82, 83, 84, 85, 86, 87,   88, 89, 90, 91, 92, 93, 94, 95,
     96, 97, 98, 99,100,101,102,103,  104,105,106,107,108,109,110,111,
    112,113,114,115,116,117,118,119,  120,121,122,123,124,125,126,127
   ],
   cmex10: ['all'],
   cmti10: jsMath.Img.symbols.concat(36),
   cmbx10: jsMath.Img.symbols
});

jsMath.Img.LoadFont('cm-fonts');

jsMath.Script.End();


Index: loncom/html/adm/jsMath/uncompressed/jsMath-fallback-unix.js
+++ loncom/html/adm/jsMath/uncompressed/jsMath-fallback-unix.js
/*
 *  jsMath-fallback-mac.js
 *  
 *  Part of the jsMath package for mathematics on the web.
 *
 *  This file makes changes needed for when the TeX fonts are not available
 *  with a browser on the Mac.
 *
 *  ---------------------------------------------------------------------
 *
 *  Copyright 2004-2006 by Davide P. Cervone
 * 
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */



/********************************************************************
 *
 *  Here we replace the TeX character mappings by equivalent unicode
 *  points when possible, and adjust the character dimensions
 *  based on the fonts we hope we get them from (the styles are set
 *  to try to use the best characters available in the standard
 *  fonts).
 */

jsMath.Script.Start();

jsMath.Add(jsMath.TeX,{

  cmr10: [
    // 00 - 0F
    {c: '&Gamma;', tclass: 'greek'},
    {c: '&Delta;', tclass: 'greek'},
    {c: '&Theta;', tclass: 'greek'},
    {c: '&Lambda;', tclass: 'greek'},
    {c: '&Xi;', tclass: 'greek'},
    {c: '&Pi;', tclass: 'greek'},
    {c: '&Sigma;', tclass: 'greek'},
    {c: '&Upsilon;', tclass: 'greek'},
    {c: '&Phi;', tclass: 'greek'},
    {c: '&Psi;', tclass: 'greek'},
    {c: '&Omega;', tclass: 'greek'},
    {c: 'ff', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 14, '108': 15}, tclass: 'normal'},
    {c: 'fi', tclass: 'normal'},
    {c: 'fl', tclass: 'normal'},
    {c: 'ffi', tclass: 'normal'},
    {c: 'ffl', tclass: 'normal'},
    // 10 - 1F
    {c: '&#x131;', a:0, tclass: 'normal'},
    {c: 'j', d:.2, tclass: 'normal'},
    {c: '&#x60;', tclass: 'accent'},
    {c: '&#xB4;', tclass: 'accent'},
    {c: '&#x2C7;', tclass: 'accent'},
    {c: '&#x2D8;', tclass: 'accent'},
    {c: '<span style="position:relative; top:.1em">&#x2C9;</span>', tclass: 'accent'},
    {c: '&#x2DA;', tclass: 'accent'},
    {c: '&#x0327;', tclass: 'normal'},
    {c: '&#xDF;', tclass: 'normal'},
    {c: '&#xE6;', a:0, tclass: 'normal'},
    {c: '&#x153;', a:0, tclass: 'normal'},
    {c: '&#xF8;', tclass: 'normal'},
    {c: '&#xC6;', tclass: 'normal'},
    {c: '&#x152;', tclass: 'normal'},
    {c: '&#xD8;', tclass: 'normal'},
    // 20 - 2F
    {c: '?', krn: {'108': -0.278, '76': -0.319}, tclass: 'normal'},
    {c: '!', lig: {'96': 60}, tclass: 'normal'},
    {c: '&#x201D;', tclass: 'normal'},
    {c: '#', tclass: 'normal'},
    {c: '$', tclass: 'normal'},
    {c: '%', tclass: 'normal'},
    {c: '&amp;', tclass: 'normal'},
    {c: '&#x2019;', krn: {'63': 0.111, '33': 0.111}, lig: {'39': 34}, tclass: 'normal'},
    {c: '(', d:.2, tclass: 'normal'},
    {c: ')', d:.2, tclass: 'normal'},
    {c: '*', tclass: 'normal'},
    {c: '+', a:.1, tclass: 'normal'},
    {c: ',', a:-.3, d:.2, w: 0.278, tclass: 'normal'},
    {c: '-', a:0, lig: {'45': 123}, tclass: 'normal'},
    {c: '.', a:-.25, tclass: 'normal'},
    {c: '/', tclass: 'normal'},
    // 30 - 3F
    {c: '0', tclass: 'normal'},
    {c: '1', tclass: 'normal'},
    {c: '2', tclass: 'normal'},
    {c: '3', tclass: 'normal'},
    {c: '4', tclass: 'normal'},
    {c: '5', tclass: 'normal'},
    {c: '6', tclass: 'normal'},
    {c: '7', tclass: 'normal'},
    {c: '8', tclass: 'normal'},
    {c: '9', tclass: 'normal'},
    {c: ':', tclass: 'normal'},
    {c: ';', tclass: 'normal'},
    {c: '&#xA1;', tclass: 'normal'},
    {c: '=', a:0, d:-.1, tclass: 'normal'},
    {c: '&#xBF;', tclass: 'normal'},
    {c: '?', lig: {'96': 62}, tclass: 'normal'},
    // 40 - 4F
    {c: '@', tclass: 'normal'},
    {c: 'A', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
    {c: 'B', tclass: 'normal'},
    {c: 'C', tclass: 'normal'},
    {c: 'D', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
    {c: 'E', tclass: 'normal'},
    {c: 'F', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
    {c: 'G', tclass: 'normal'},
    {c: 'H', tclass: 'normal'},
    {c: 'I', krn: {'73': 0.0278}, tclass: 'normal'},
    {c: 'J', tclass: 'normal'},
    {c: 'K', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
    {c: 'L', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
    {c: 'M', tclass: 'normal'},
    {c: 'N', tclass: 'normal'},
    {c: 'O', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'normal'},
    // 50 - 5F
    {c: 'P', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
    {c: 'Q', d: 1, tclass: 'normal'},
    {c: 'R', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'normal'},
    {c: 'S', tclass: 'normal'},
    {c: 'T', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
    {c: 'U', tclass: 'normal'},
    {c: 'V', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
    {c: 'W', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
    {c: 'X', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'normal'},
    {c: 'Y', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'normal'},
    {c: 'Z', tclass: 'normal'},
    {c: '[', d:.1, tclass: 'normal'},
    {c: '&#x201C;', tclass: 'normal'},
    {c: ']', d:.1, tclass: 'normal'},
    {c: '&#x2C6;', tclass: 'accent'},
    {c: '&#x2D9;', tclass: 'accent'},
    // 60 - 6F
    {c: '&#x2018;', lig: {'96': 92}, tclass: 'normal'},
    {c: 'a', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
    {c: 'b', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
    {c: 'c', a:0, krn: {'104': -0.0278, '107': -0.0278}, tclass: 'normal'},
    {c: 'd', tclass: 'normal'},
    {c: 'e', a:0, tclass: 'normal'},
    {c: 'f', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'normal'},
    {c: 'g', a:0, d:.2, ic: 0.0139, krn: {'106': 0.0278}, tclass: 'normal'},
    {c: 'h', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
    {c: 'i', tclass: 'normal'},
    {c: 'j', d:.2, tclass: 'normal'},
    {c: 'k', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
    {c: 'l', tclass: 'normal'},
    {c: 'm', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
    {c: 'n', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'normal'},
    {c: 'o', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
    // 70 - 7F
    {c: 'p', a:0, d:.2, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'normal'},
    {c: 'q', a:0, d:.2, tclass: 'normal'},
    {c: 'r', a:0, tclass: 'normal'},
    {c: 's', a:0, tclass: 'normal'},
    {c: 't', krn: {'121': -0.0278, '119': -0.0278}, tclass: 'normal'},
    {c: 'u', a:0, krn: {'119': -0.0278}, tclass: 'normal'},
    {c: 'v', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
    {c: 'w', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'normal'},
    {c: 'x', a:0, tclass: 'normal'},
    {c: 'y', a:0, d:.2, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'normal'},
    {c: 'z', a:0, tclass: 'normal'},
    {c: '&#x2013;', a:.1, ic: 0.0278, lig: {'45': 124}, tclass: 'normal'},
    {c: '&#x2014;', a:.1, ic: 0.0278, tclass: 'normal'},
    {c: '&#x2DD;', tclass: 'accent'},
    {c: '&#x2DC;', tclass: 'accent'},
    {c: '&#xA8;', tclass: 'accent'}
  ],
  
  cmmi10: [
    // 00 - 0F
    {c: '&Gamma;', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'igreek'},
    {c: '&Delta;', krn: {'127': 0.167}, tclass: 'igreek'},
    {c: '&Theta;', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'igreek'},
    {c: '&Lambda;', krn: {'127': 0.167}, tclass: 'igreek'},
    {c: '&Xi;', ic: 0.0757, krn: {'127': 0.0833}, tclass: 'igreek'},
    {c: '&Pi;', ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'igreek'},
    {c: '&Sigma;', ic: 0.0576, krn: {'127': 0.0833}, tclass: 'igreek'},
    {c: '&Upsilon;', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0556}, tclass: 'igreek'},
    {c: '&Phi;', krn: {'127': 0.0833}, tclass: 'igreek'},
    {c: '&Psi;', ic: 0.11, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'igreek'},
    {c: '&Omega;', ic: 0.0502, krn: {'127': 0.0833}, tclass: 'igreek'},
    {c: '&alpha;', a:0, ic: 0.0037, krn: {'127': 0.0278}, tclass: 'greek'},
    {c: '&beta;', d:.2, ic: 0.0528, krn: {'127': 0.0833}, tclass: 'greek'},
    {c: '&gamma;', a:0, d:.2, ic: 0.0556, tclass: 'greek'},
    {c: '&delta;', ic: 0.0378, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'greek'},
    {c: '&epsilon;', a:0, krn: {'127': 0.0556}, tclass: 'symbol'},
    // 10 - 1F
    {c: '&zeta;', d:.2, ic: 0.0738, krn: {'127': 0.0833}, tclass: 'greek'},
    {c: '&eta;', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0556}, tclass: 'greek'},
    {c: '&theta;', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'greek'},
    {c: '&iota;', a:0, krn: {'127': 0.0556}, tclass: 'greek'},
    {c: '&kappa;', a:0, tclass: 'greek'},
    {c: '&lambda;', tclass: 'greek'},
    {c: '&mu;', a:0, d:.2, krn: {'127': 0.0278}, tclass: 'greek'},
    {c: '&nu;', a:0, ic: 0.0637, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}, tclass: 'greek'},
    {c: '&xi;', d:.2, ic: 0.046, krn: {'127': 0.111}, tclass: 'greek'},
    {c: '&pi;', a:0, ic: 0.0359, tclass: 'greek'},
    {c: '&rho;', a:0, d:.2, krn: {'127': 0.0833}, tclass: 'greek'},
    {c: '&sigma;', a:0, ic: 0.0359, krn: {'59': -0.0556, '58': -0.0556}, tclass: 'greek'},
    {c: '&tau;', a:0, ic: 0.113, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}, tclass: 'greek'},
    {c: '&upsilon;', a:0, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'greek'},
    {c: '&phi;', a:.1, d:.2, krn: {'127': 0.0833}, tclass: 'greek'},
    {c: '&chi;', a:0, d:.2, krn: {'127': 0.0556}, tclass: 'greek'},
    // 20 - 2F
    {c: '&psi;', a:.1, d:.2, ic: 0.0359, krn: {'127': 0.111}, tclass: 'greek'},
    {c: '&omega;', a:0, ic: 0.0359, tclass: 'greek'},
    {c: '&epsilon;', a:0, krn: {'127': 0.0833}, tclass: 'greek'},
    {c: '&#x3D1;', krn: {'127': 0.0833}, tclass: 'normal'},
    {c: '&#x3D6;', a:0, ic: 0.0278, tclass: 'normal'},
    {c: '&#x3F1;', a:0, d:.2, krn: {'127': 0.0833}, tclass: 'normal'},
    {c: '&#x3C2;', a:0, d:.2, ic: 0.0799, krn: {'127': 0.0833}, tclass: 'normal'},
    {c: '&#x3D5;', a:.1, d:.2, krn: {'127': 0.0833}, tclass: 'normal'},
    {c: '&#x21BC;', a:0, d:-.2, tclass: 'harpoon'},
    {c: '&#x21BD;', a:0, d:-.1, tclass: 'harpoon'},
    {c: '&#x21C0;', a:0, d:-.2, tclass: 'harpoon'},
    {c: '&#x21C1;', a:0, d:-.1, tclass: 'harpoon'},
    {c: '<span style="font-size: 133%; position:relative; top:-.1em; margin:-.2em; left:-.05em">&#x02D3;</span>', a:.1, tclass: 'symbol'},
    {c: '<span style="font-size: 133%; position:relative; top:-.1em; margin:-.2em; left:-.05em">&#x02D2;</span>', a:.1, tclass: 'symbol'},
    {c: '<span style="font-size:50%">&#x25B7;</span>', tclass: 'symbol'},
    {c: '<span style="font-size:50%">&#x25C1;</span>', tclass: 'symbol'},
    // 30 - 3F
    {c: '0', tclass: 'normal'},
    {c: '1', tclass: 'normal'},
    {c: '2', tclass: 'normal'},
    {c: '3', tclass: 'normal'},
    {c: '4', tclass: 'normal'},
    {c: '5', tclass: 'normal'},
    {c: '6', tclass: 'normal'},
    {c: '7', tclass: 'normal'},
    {c: '8', tclass: 'normal'},
    {c: '9', tclass: 'normal'},
    {c: '.', a:-.3, tclass: 'normal'},
    {c: ',', a:-.3, d:.2, tclass: 'normal'},
    {c: '&lt;', a:.1, tclass: 'normal'},
    {c: '/', krn: {'1': -0.0556, '65': -0.0556, '77': -0.0556, '78': -0.0556, '89': 0.0556, '90': -0.0556}, tclass: 'normal'},
    {c: '&gt;', a:.1, tclass: 'normal'},
    {c: '<span style="font-size:50%">&#x2605;</span>', a:0, tclass: 'symbol'},
    // 40 - 4F
    {c: '&#x2202;', ic: 0.0556, krn: {'127': 0.0833}, tclass: 'normal'},
    {c: 'A', krn: {'127': 0.139}, tclass: 'italic'},
    {c: 'B', ic: 0.0502, krn: {'127': 0.0833}, tclass: 'italic'},
    {c: 'C', ic: 0.0715, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
    {c: 'D', ic: 0.0278, krn: {'127': 0.0556}, tclass: 'italic'},
    {c: 'E', ic: 0.0576, krn: {'127': 0.0833}, tclass: 'italic'},
    {c: 'F', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'italic'},
    {c: 'G', krn: {'127': 0.0833}, tclass: 'italic'},
    {c: 'H', ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'italic'},
    {c: 'I', ic: 0.0785, krn: {'127': 0.111}, tclass: 'italic'},
    {c: 'J', ic: 0.0962, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.167}, tclass: 'italic'},
    {c: 'K', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'italic'},
    {c: 'L', krn: {'127': 0.0278}, tclass: 'italic'},
    {c: 'M', ic: 0.109, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
    {c: 'N', ic: 0.109, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
    {c: 'O', ic: 0.0278, krn: {'127': 0.0833}, tclass: 'italic'},
    // 50 - 5F
    {c: 'P', ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}, tclass: 'italic'},
    {c: 'Q', d:.2, krn: {'127': 0.0833}, tclass: 'italic'},
    {c: 'R', ic: 0.00773, krn: {'127': 0.0833}, tclass: 'italic'},
    {c: 'S', ic: 0.0576, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
    {c: 'T', ic: 0.139, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
    {c: 'U', ic: 0.109, krn: {'59': -0.111, '58': -0.111, '61': -0.0556, '127': 0.0278}, tclass: 'italic'},
    {c: 'V', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'italic'},
    {c: 'W', ic: 0.139, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'italic'},
    {c: 'X', ic: 0.0785, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
    {c: 'Y', ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}, tclass: 'italic'},
    {c: 'Z', ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}, tclass: 'italic'},
    {c: '&#x266D;', tclass: 'symbol2'},
    {c: '&#x266E;', tclass: 'symbol2'},
    {c: '&#x266F;', tclass: 'symbol2'},
    {c: '&#x2323;', a:0, d:-.1, tclass: 'normal'},
    {c: '&#x2322;', a:0, d:-.1, tclass: 'normal'},
    // 60 - 6F
    {c: '&#x2113;', krn: {'127': 0.111}, tclass: 'symbol'},
    {c: 'a', a:0, tclass: 'italic'},
    {c: 'b', tclass: 'italic'},
    {c: 'c', a:0, krn: {'127': 0.0556}, tclass: 'italic'},
    {c: 'd', krn: {'89': 0.0556, '90': -0.0556, '106': -0.111, '102': -0.167, '127': 0.167}, tclass: 'italic'},
    {c: 'e', a:0, krn: {'127': 0.0556}, tclass: 'italic'},
    {c: 'f', d:.2, ic: 0.108, krn: {'59': -0.0556, '58': -0.0556, '127': 0.167}, tclass: 'italic'},
    {c: 'g', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'italic'},
    {c: 'h', krn: {'127': -0.0278}, tclass: 'italic'},
    {c: 'i', tclass: 'italic'},
    {c: 'j', d:.2, ic: 0.0572, krn: {'59': -0.0556, '58': -0.0556}, tclass: 'italic'},
    {c: 'k', ic: 0.0315, tclass: 'italic'},
    {c: 'l', ic: 0.0197, krn: {'127': 0.0833}, tclass: 'italic'},
    {c: 'm', a:0, tclass: 'italic'},
    {c: 'n', a:0, tclass: 'italic'},
    {c: 'o', a:0, krn: {'127': 0.0556}, tclass: 'italic'},
    // 70 - 7F
    {c: 'p', a:0, d:.2, krn: {'127': 0.0833}, tclass: 'italic'},
    {c: 'q', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0833}, tclass: 'italic'},
    {c: 'r', a:0, ic: 0.0278, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}, tclass: 'italic'},
    {c: 's', a:0, krn: {'127': 0.0556}, tclass: 'italic'},
    {c: 't', krn: {'127': 0.0833}, tclass: 'italic'},
    {c: 'u', a:0, krn: {'127': 0.0278}, tclass: 'italic'},
    {c: 'v', a:0, ic: 0.0359, krn: {'127': 0.0278}, tclass: 'italic'},
    {c: 'w', a:0, ic: 0.0269, krn: {'127': 0.0833}, tclass: 'italic'},
    {c: 'x', a:0, krn: {'127': 0.0278}, tclass: 'italic'},
    {c: 'y', a:0, d:.2, ic: 0.0359, krn: {'127': 0.0556}, tclass: 'italic'},
    {c: 'z', a:0, ic: 0.044, krn: {'127': 0.0556}, tclass: 'italic'},
    {c: '&#x131;', a:0, krn: {'127': 0.0278}, tclass: 'italic'},
    {c: 'j', d:.2, krn: {'127': 0.0833}, tclass: 'italic'},
    {c: '&#x2118;', a:0, d:.2, krn: {'127': 0.111}, tclass: 'normal'},
    {c: '<span style="position:relative; left: .4em; top: -.8em; font-size: 50%">&#x2192;</span>', ic: 0.154, tclass: 'symbol'},
    {c: '&#x0311;', ic: 0.399, tclass: 'normal'}
  ],

  cmsy10: [
    // 00 - 0F
    {c: '&#x2212;', a:.1, tclass: 'symbol'},
    {c: '&#xB7;', a:0, d:-.2, tclass: 'symbol'},
    {c: '&#xD7;', a:0, tclass: 'symbol'},
    {c: '<span style="position:relative; top:.2em">&#x2A;</span>', a:0, tclass: 'symbol'},
    {c: '&#xF7;', a:0, tclass: 'symbol'},
    {c: '&#x25CA;', tclass: 'symbol'},
    {c: '&#xB1;', a:.1, tclass: 'symbol'},
    {c: '&#x2213;', tclass: 'symbol'},
    {c: '&#x2295;', tclass: 'symbol'},
    {c: '&#x2296;', tclass: 'symbol'},
    {c: '&#x2297;', tclass: 'symbol'},
    {c: '&#x2298;', tclass: 'symbol'},
    {c: '&#x2299;', tclass: 'symbol'},
    {c: '&#x25EF;', tclass: 'symbol'},
    {c: '<span style="position:relative; top:.25em;">&#xB0;</span>', a:0, d:-.1, tclass: 'symbol'},
    {c: '&#x2022;', a:0, d:-.2, tclass: 'symbol'},
    // 10 - 1F
    {c: '&#x224D;', a:.1, tclass: 'symbol'},
    {c: '&#x2261;', a:.1, tclass: 'symbol'},
    {c: '&#x2286;', tclass: 'symbol'},
    {c: '&#x2287;', tclass: 'symbol'},
    {c: '&#x2264;', tclass: 'symbol'},
    {c: '&#x2265;', tclass: 'symbol'},
    {c: '&#x227C;', tclass: 'symbol'},
    {c: '&#x227D;', tclass: 'symbol'},
    {c: '~', a:0, d: -.2, tclass: 'normal'},
    {c: '&#x2248;', a:.1, d:-.1, tclass: 'symbol'},
    {c: '&#x2282;', tclass: 'symbol'},
    {c: '&#x2283;', tclass: 'symbol'},
    {c: '&#x226A;', tclass: 'symbol'},
    {c: '&#x226B;', tclass: 'symbol'},
    {c: '&#x227A;', tclass: 'symbol'},
    {c: '&#x227B;', tclass: 'symbol'},
    // 20 - 2F
    {c: '&#x2190;', a:0, d:-.15, tclass: 'arrows'},
    {c: '&#x2192;', a:0, d:-.15, tclass: 'arrows'},
    {c: '&#x2191;', h:1, tclass: 'arrows'},
    {c: '&#x2193;', h:1, tclass: 'arrows'},
    {c: '&#x2194;', a:0, tclass: 'arrows'},
    {c: '&#x2197;', h:1, tclass: 'arrows'},
    {c: '&#x2198;', h:1, tclass: 'arrows'},
    {c: '&#x2243;', a: .1, tclass: 'symbol'},
    {c: '&#x21D0;', a:.1, tclass: 'arrows'},
    {c: '&#x21D2;', a:.1, tclass: 'arrows'},
    {c: '&#x21D1;', h:.9, d:.1, tclass: 'arrows'},
    {c: '&#x21D3;', h:.9, d:.1, tclass: 'arrows'},
    {c: '&#x21D4;', a:.1, tclass: 'arrows'},
    {c: '&#x2196;', h:1, tclass: 'arrows'},
    {c: '&#x2199;', h:1, tclass: 'arrows'},
    {c: '&#x221D;', a:.1, tclass: 'symbol'},
    // 30 - 3F
    {c: '<span style="font-size: 133%; margin-right: -.1em; position: relative; top:.4em">&#x2032;</span>', a: 0, tclass: 'symbol'},
    {c: '&#x221E;', a:.1, tclass: 'symbol'},
    {c: '&#x2208;', tclass: 'symbol'},
    {c: '&#x220B;', tclass: 'symbol'},
    {c: '&#x25B3;', tclass: 'symbol'},
    {c: '&#x25BD;', tclass: 'symbol'},
    {c: '/', tclass: 'symbol'},
    {c: '<span style="font-size:50%; position:relative; top:-.3em; margin-right:-.2em">|</span>', a:0, tclass: 'normal'},
    {c: '&#x2200;', tclass: 'symbol'},
    {c: '&#x2203;', tclass: 'symbol'},
    {c: '&#xAC;', a:0, d:-.1, tclass: 'symbol1'},
    {c: '&#x2205;', tclass: 'symbol'},
    {c: '&#x211C;', tclass: 'symbol'},
    {c: '&#x2111;', tclass: 'symbol'},
    {c: '&#x22A4;', tclass: 'symbol'},
    {c: '&#x22A5;', tclass: 'symbol'},
    // 40 - 4F
    {c: '&#x2135;', tclass: 'symbol'},
    {c: 'A', krn: {'48': 0.194}, tclass: 'cal'},
    {c: 'B', ic: 0.0304, krn: {'48': 0.139}, tclass: 'cal'},
    {c: 'C', ic: 0.0583, krn: {'48': 0.139}, tclass: 'cal'},
    {c: 'D', ic: 0.0278, krn: {'48': 0.0833}, tclass: 'cal'},
    {c: 'E', ic: 0.0894, krn: {'48': 0.111}, tclass: 'cal'},
    {c: 'F', ic: 0.0993, krn: {'48': 0.111}, tclass: 'cal'},
    {c: 'G', d:.2, ic: 0.0593, krn: {'48': 0.111}, tclass: 'cal'},
    {c: 'H', ic: 0.00965, krn: {'48': 0.111}, tclass: 'cal'},
    {c: 'I', ic: 0.0738, krn: {'48': 0.0278}, tclass: 'cal'},
    {c: 'J', d:.2, ic: 0.185, krn: {'48': 0.167}, tclass: 'cal'},
    {c: 'K', ic: 0.0144, krn: {'48': 0.0556}, tclass: 'cal'},
    {c: 'L', krn: {'48': 0.139}, tclass: 'cal'},
    {c: 'M', krn: {'48': 0.139}, tclass: 'cal'},
    {c: 'N', ic: 0.147, krn: {'48': 0.0833}, tclass: 'cal'},
    {c: 'O', ic: 0.0278, krn: {'48': 0.111}, tclass: 'cal'},
    // 50 - 5F
    {c: 'P', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
    {c: 'Q', d:.2, krn: {'48': 0.111}, tclass: 'cal'},
    {c: 'R', krn: {'48': 0.0833}, tclass: 'cal'},
    {c: 'S', ic: 0.075, krn: {'48': 0.139}, tclass: 'cal'},
    {c: 'T', ic: 0.254, krn: {'48': 0.0278}, tclass: 'cal'},
    {c: 'U', ic: 0.0993, krn: {'48': 0.0833}, tclass: 'cal'},
    {c: 'V', ic: 0.0822, krn: {'48': 0.0278}, tclass: 'cal'},
    {c: 'W', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
    {c: 'X', ic: 0.146, krn: {'48': 0.139}, tclass: 'cal'},
    {c: 'Y', ic: 0.0822, krn: {'48': 0.0833}, tclass: 'cal'},
    {c: 'Z', ic: 0.0794, krn: {'48': 0.139}, tclass: 'cal'},
    {c: '&#x22C3;', tclass: 'symbol'},
    {c: '&#x22C2;', tclass: 'symbol'},
    {c: '&#x228E;', tclass: 'symbol'},
    {c: '&#x22C0;', tclass: 'symbol'},
    {c: '&#x22C1;', tclass: 'symbol'},
    // 60 - 6F
    {c: '&#x22A2;', tclass: 'symbol'},
    {c: '&#x22A3;', tclass: 'symbol2'},
    {c: '&#xF8F0;', a:.3, d:.2, tclass: 'normal'},
    {c: '&#xF8FB;', a:.3, d:.2, tclass: 'normal'},
    {c: '&#xF8EE;', a:.3, d:.2, tclass: 'normal'},
    {c: '&#xF8F9;', a:.3, d:.2, tclass: 'normal'},
    {c: '{', d:.2, tclass: 'normal'},
    {c: '}', d:.2, tclass: 'normal'},
    {c: '&#x3008;', a:.3, d:.2, tclass: 'normal'},
    {c: '&#x3009;', a:.3, d:.2, tclass: 'normal'},
    {c: '|', d:.1, tclass: 'vertical'},
    {c: '||', d:0, tclass: 'vertical'},
    {c: '&#x2195;', h:1, d:.15, tclass: 'arrows'},
    {c: '&#x21D5;', a:.2, d:.1, tclass: 'arrows'},
    {c: '&#x2216;', a:.3, d:.1, tclass: 'normal'},
    {c: '&#x2240;', tclass: 'symbol'},
    // 70 - 7F
    {c: '<span style="position:relative; top: .8em">&#x221A;</span>', h:.04, d:.9, tclass: 'normal'},
    {c: '&#x2210;', a:.4, tclass: 'symbol'},
    {c: '&#x2207;', tclass: 'symbol'},
    {c: '&#x222B;', h:1, d:.1, ic: 0.111, tclass: 'root'},
    {c: '&#x2294;', tclass: 'symbol'},
    {c: '&#x2293;', tclass: 'symbol'},
    {c: '&#x2291;', tclass: 'symbol'},
    {c: '&#x2292;', tclass: 'symbol'},
    {c: '&#xA7;', d:.1, tclass: 'normal'},
    {c: '&#x2020;', d:.1, tclass: 'normal'},
    {c: '&#x2021;', d:.1, tclass: 'normal'},
    {c: '&#xB6;', a:.3, d:.1, tclass: 'normal'},
    {c: '&#x2663;', tclass: 'symbol'},
    {c: '&#x2666;', tclass: 'symbol'},
    {c: '&#x2665;', tclass: 'symbol'},
    {c: '&#x2660;', tclass: 'symbol'}
  ],

  cmex10: [
    // 00 - 0F
    {c: '(', h: 0.04, d: 1.16, n: 16, tclass: 'delim1'},
    {c: ')', h: 0.04, d: 1.16, n: 17, tclass: 'delim1'},
    {c: '[', h: 0.04, d: 1.16, n: 104, tclass: 'delim1'},
    {c: ']', h: 0.04, d: 1.16, n: 105, tclass: 'delim1'},
    {c: '&#xF8F0', h: 0.04, d: 1.16, n: 106, tclass: 'delim1'},
    {c: '&#xF8FB;', h: 0.04, d: 1.16, n: 107, tclass: 'delim1'},
    {c: '&#xF8EE;', h: 0.04, d: 1.16, n: 108, tclass: 'delim1'},
    {c: '&#xF8F9;', h: 0.04, d: 1.16, n: 109, tclass: 'delim1'},
    {c: '{', h: 0.04, d: 1.16, n: 110, tclass: 'delim1'},
    {c: '}', h: 0.04, d: 1.16, n: 111, tclass: 'delim1'},
    {c: '&#x3008;', h: 0.04, d: 1.16, n: 68, tclass: 'delim1c'},
    {c: '&#x3009;', h: 0.04, d: 1.16, n: 69, tclass: 'delim1c'},
    {c: '|', h:.7, d:0, delim: {rep: 12}, tclass: 'vertical'},
    {c: '||', h:.7, d:0, delim: {rep: 13}, tclass: 'vertical'},
    {c: '/', h: 0.04, d: 1.16, n: 46, tclass: 'delim1b'},
    {c: '&#x2216;', h: 0.04, d: 1.16, n: 47, tclass: 'delim1b'},
    // 10 - 1F
    {c: '(', h: 0.04, d: 1.76, n: 18, tclass: 'delim2'},
    {c: ')', h: 0.04, d: 1.76, n: 19, tclass: 'delim2'},
    {c: '(', h: 0.04, d: 2.36, n: 32, tclass: 'delim3'},
    {c: ')', h: 0.04, d: 2.36, n: 33, tclass: 'delim3'},
    {c: '[', h: 0.04, d: 2.36, n: 34, tclass: 'delim3'},
    {c: ']', h: 0.04, d: 2.36, n: 35, tclass: 'delim3'},
    {c: '&#xF8F0;', h: 0.04, d: 2.36, n: 36, tclass: 'delim3'},
    {c: '&#xF8FB;', h: 0.04, d: 2.36, n: 37, tclass: 'delim3'},
    {c: '&#xF8EE;', h: 0.04, d: 2.36, n: 38, tclass: 'delim3'},
    {c: '&#xF8F9;', h: 0.04, d: 2.36, n: 39, tclass: 'delim3'},
    {c: '{', h: 0.04, d: 2.36, n: 40, tclass: 'delim3'},
    {c: '}', h: 0.04, d: 2.36, n: 41, tclass: 'delim3'},
    {c: '&#x3008;', h: 0.04, d: 2.36, n: 42, tclass: 'delim3c'},
    {c: '&#x3009;', h: 0.04, d: 2.36, n: 43, tclass: 'delim3c'},
    {c: '/', h: 0.04, d: 2.36, n: 44, tclass: 'delim3b'},
    {c: '&#x2216;', h: 0.04, d: 2.36, n: 45, tclass: 'delim3b'},
    // 20 - 2F
    {c: '(', h: 0.04, d: 2.96, n: 48, tclass: 'delim4'},
    {c: ')', h: 0.04, d: 2.96, n: 49, tclass: 'delim4'},
    {c: '[', h: 0.04, d: 2.96, n: 50, tclass: 'delim4'},
    {c: ']', h: 0.04, d: 2.96, n: 51, tclass: 'delim4'},
    {c: '&#xF8F0;', h: 0.04, d: 2.96, n: 52, tclass: 'delim4'},
    {c: '&#xF8FB;', h: 0.04, d: 2.96, n: 53, tclass: 'delim4'},
    {c: '&#xF8EE;', h: 0.04, d: 2.96, n: 54, tclass: 'delim4'},
    {c: '&#xF8F9;', h: 0.04, d: 2.96, n: 55, tclass: 'delim4'},
    {c: '{', h: 0.04, d: 2.96, n: 56, tclass: 'delim4'},
    {c: '}', h: 0.04, d: 2.96, n: 57, tclass: 'delim4'},
    {c: '&#x3008;', h: 0.04, d: 2.96, tclass: 'delim4c'},
    {c: '&#x3009;', h: 0.04, d: 2.96, tclass: 'delim4c'},
    {c: '/', h: 0.04, d: 2.96, tclass: 'delim4b'},
    {c: '&#x2216;', h: 0.04, d: 2.96, tclass: 'delim4b'},
    {c: '/', h: 0.04, d: 1.76, n: 30, tclass: 'delim2b'},
    {c: '&#x2216;', h: 0.04, d: 1.76, n: 31, tclass: 'delim2b'},
    // 30 - 3F
    {c: '&#xF8EB;', h: .8, d: .15, delim: {top: 48, bot: 64, rep: 66}, tclass: 'delim'},
    {c: '&#xF8F6;', h: .8, d: .15, delim: {top: 49, bot: 65, rep: 67}, tclass: 'delim'},
    {c: '&#xF8EE;', h: .8, d: .15, delim: {top: 50, bot: 52, rep: 54}, tclass: 'delim'},
    {c: '&#xF8F9;', h: .8, d: .15, delim: {top: 51, bot: 53, rep: 55}, tclass: 'delim'},
    {c: '&#xF8F0;', h: .8, d: .15, delim: {bot: 52, rep: 54}, tclass: 'delim'},
    {c: '&#xF8FB;', h: .8, d: .15, delim: {bot: 53, rep: 55}, tclass: 'delim'},
    {c: '&#xF8EF;', h: .8, d: .15, delim: {top: 50, rep: 54}, tclass: 'delim'},
    {c: '&#xF8FA;', h: .8, d: .15, delim: {top: 51, rep: 55}, tclass: 'delim'},
    {c: '&#xF8F1;', h: .8, d: .15, delim: {top: 56, mid: 60, bot: 58, rep: 62}, tclass: 'delim'},
    {c: '&#xF8FC;', h: .8, d: .15, delim: {top: 57, mid: 61, bot: 59, rep: 62}, tclass: 'delim'},
    {c: '&#xF8F3;', h: .8, d: .15, delim: {top: 56, bot: 58, rep: 62}, tclass: 'delim'},
    {c: '&#xF8FE;', h: .8, d: .15, delim: {top: 57, bot: 59, rep: 62}, tclass: 'delim'},
    {c: '&#xF8F2;', h: .8, d: .15, delim: {rep: 63}, tclass: 'delim'},
    {c: '&#xF8FD;', h: .8, d: .15, delim: {rep: 119}, tclass: 'delim'},
    {c: '&#xF8F4;', h: .8, d: .15, delim: {rep: 62}, tclass: 'delim'},
    {c: '|', h: .65, d: 0, delim: {top: 120, bot: 121, rep: 63}, tclass: 'vertical'},
    // 40 - 4F
    {c: '&#xF8ED;', h: .8, d: .15, delim: {top: 56, bot: 59, rep: 62}, tclass: 'delim'},
    {c: '&#xF8F8;', h: .8, d: .15, delim: {top: 57, bot: 58, rep: 62}, tclass: 'delim'},
    {c: '&#xF8EC;', h: .8, d: .15, delim: {rep: 66}, tclass: 'delim'},
    {c: '&#xF8F7;', h: .8, d: .15, delim: {rep: 67}, tclass: 'delim'},
    {c: '&#x3008;', h: 0.04, d: 1.76, n: 28, tclass: 'delim2c'},
    {c: '&#x3009;', h: 0.04, d: 1.76, n: 29, tclass: 'delim2c'},
    {c: '&#x2294;', h: 0, d: 1, n: 71, tclass: 'bigop1'},
    {c: '&#x2294;', h: 0.1, d: 1.5, tclass: 'bigop2'},
    {c: '&#x222E;', h: 0, d: 1.11, ic: 0.095, n: 73, tclass: 'bigop1c'},
    {c: '&#x222E;', h: 0, d: 2.22, ic: 0.222, tclass: 'bigop2c'},
    {c: '&#x2299;', h: 0, d: 1, n: 75, tclass: 'bigop1'},
    {c: '&#x2299;', h: 0.1, d: 1.5, tclass: 'bigop2'},
    {c: '&#x2295;', h: 0, d: 1, n: 77, tclass: 'bigop1'},
    {c: '&#x2295;', h: 0.1, d: 1.5, tclass: 'bigop2'},
    {c: '&#x2297;', h: 0, d: 1, n: 79, tclass: 'bigop1'},
    {c: '&#x2297;', h: 0.1, d: 1.5, tclass: 'bigop2'},
    // 50 - 5F
    {c: '&#x2211;', h: 0, d: 1, n: 88, tclass: 'bigop1a'},
    {c: '&#x220F;', h: 0, d: 1, n: 89, tclass: 'bigop1a'},
    {c: '&#x222B;', h: 0, d: 1.11, ic: 0.095, n: 90, tclass: 'bigop1c'},
    {c: '&#x222A;', h: 0, d: 1, n: 91, tclass: 'bigop1b'},
    {c: '&#x2229;', h: 0, d: 1, n: 92, tclass: 'bigop1b'},
    {c: '&#x228E;', h: 0, d: 1, n: 93, tclass: 'bigop1b'},
    {c: '&#x2227;', h: 0, d: 1, n: 94, tclass: 'bigop1'},
    {c: '&#x2228;', h: 0, d: 1, n: 95, tclass: 'bigop1'},
    {c: '&#x2211;', h: 0.1, d: 1.6, tclass: 'bigop2a'},
    {c: '&#x220F;', h: 0.1, d: 1.5, tclass: 'bigop2a'},
    {c: '&#x222B;', h: 0, d: 2.22, ic: 0.222, tclass: 'bigop2c'},
    {c: '&#x222A;', h: 0.1, d: 1.5, tclass: 'bigop2b'},
    {c: '&#x2229;', h: 0.1, d: 1.5, tclass: 'bigop2b'},
    {c: '&#x228E;', h: 0.1, d: 1.5, tclass: 'bigop2b'},
    {c: '&#x2227;', h: 0.1, d: 1.5, tclass: 'bigop2'},
    {c: '&#x2228;', h: 0.1, d: 1.5, tclass: 'bigop2'},
    // 60 - 6F
    {c: '&#x2210;', h: 0, d: 1, n: 97, tclass: 'bigop1a'},
    {c: '&#x2210;', h: 0.1, d: 1.5, tclass: 'bigop2a'},
    {c: '&#xFE3F;', h: 0.722, w: .65, n: 99, tclass: 'wide1'},
    {c: '&#xFE3F;', h: 0.85, w: 1.1, n: 100, tclass: 'wide2'},
    {c: '&#xFE3F;', h: 0.99, w: 1.65, tclass: 'wide3'},
    {c: '&#x2053;', h: 0.722, w: .75, n: 102, tclass: 'wide1a'},
    {c: '&#x2053;', h: 0.8, w: 1.35, n: 103, tclass: 'wide2a'},
    {c: '&#x2053;', h: 0.99, w: 2, tclass: 'wide3a'},
    {c: '[', h: 0.04, d: 1.76, n: 20, tclass: 'delim2'},
    {c: ']', h: 0.04, d: 1.76, n: 21, tclass: 'delim2'},
    {c: '&#xF8F0;', h: 0.04, d: 1.76, n: 22, tclass: 'delim2'},
    {c: '&#xF8FB;', h: 0.04, d: 1.76, n: 23, tclass: 'delim2'},
    {c: '&#xF8EE;', h: 0.04, d: 1.76, n: 24, tclass: 'delim2'},
    {c: '&#xF8F9', h: 0.04, d: 1.76, n: 25, tclass: 'delim2'},
    {c: '{', h: 0.04, d: 1.76, n: 26, tclass: 'delim2'},
    {c: '}', h: 0.04, d: 1.76, n: 27, tclass: 'delim2'},
    // 70 - 7F
    {c: '<span style="font-size: 125%; position:relative; top:.95em">&#x221A;</span>', h: 0.04, d: 1.16, n: 113, tclass: 'root'},
    {c: '<span style="font-size: 190%; position:relative; top:.925em">&#x221A;</span>', h: 0.04, d: 1.76, n: 114, tclass: 'root'},
    {c: '<span style="font-size: 250%; position:relative; top:.925em">&#x221A;</span>', h: 0.06, d: 2.36, n: 115, tclass: 'root'},
    {c: '<span style="font-size: 320%; position:relative; top:.92em">&#x221A;</span>', h: 0.08, d: 2.96, n: 116, tclass: 'root'},
    {c: '<span style="font-size: 400%; position:relative; top:.92em">&#x221A;</span>', h: 0.1, d: 3.75, n: 117, tclass: 'root'},
    {c: '<span style="font-size: 500%; position:relative; top:.9em">&#x221A;</span>', h: .12, d: 4.5, n: 118, tclass: 'root'},
    {c: '<span style="font-size: 625%; position:relative; top:.9em">&#x221A;</span>', h: .14, d: 5.7, tclass: 'root'},
    {c: '<span style="margin:.001em">||</span>', h:.65, d:0, delim: {top: 126, bot: 127, rep: 119}, tclass: 'vertical'},
    {c: '&#x25B5;', h:.45, delim: {top: 120, rep: 63}, tclass: 'arrow1'},
    {c: '&#x25BF;', h:.45, delim: {bot: 121, rep: 63}, tclass: 'arrow1'},
    {c: '<span style="font-size: 67%; position:relative; top:.35em; margin-left:-.5em">&#x256D;</span>', h:.1, tclass: 'symbol'},
    {c: '<span style="font-size: 67%; position:relative; top:.35em; margin-right:-.5em">&#x256E;</span>', h:.1, tclass: 'symbol'},
    {c: '<span style="font-size: 67%; position:relative; top:.35em; margin-left:-.5em">&#x2570;</span>', h:.1, tclass: 'symbol'},
    {c: '<span style="font-size: 67%; position:relative; top:.35em; margin-right:-.5em">&#x256F;</span>', h:.1, tclass: 'symbol'},
    {c: '&#x25B5;', h:.5, delim: {top: 126, rep: 119}, tclass: 'arrow2'},
    {c: '&#x25BF;', h:.5, delim: {bot: 127, rep: 119}, tclass: 'arrow2'}
  ],
  
  cmti10: [
    // 00 - 0F
    {c: '&Gamma;', ic: 0.133, tclass: 'igreek'},
    {c: '&Delta;', tclass: 'igreek'},
    {c: '&Theta;', ic: 0.094, tclass: 'igreek'},
    {c: '&Lambda;', tclass: 'igreek'},
    {c: '&Xi;', ic: 0.153, tclass: 'igreek'},
    {c: '&Pi;', ic: 0.164, tclass: 'igreek'},
    {c: '&Sigma;', ic: 0.12, tclass: 'igreek'},
    {c: '&Upsilon;', ic: 0.111, tclass: 'igreek'},
    {c: '&Phi;', ic: 0.0599, tclass: 'igreek'},
    {c: '&Psi;', ic: 0.111, tclass: 'igreek'},
    {c: '&Omega;', ic: 0.103, tclass: 'igreek'},
    {c: 'ff', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 14, '108': 15}, tclass: 'italic'},
    {c: 'fi', ic: 0.103, tclass: 'italic'},
    {c: 'fl', ic: 0.103, tclass: 'italic'},
    {c: 'ffi', ic: 0.103, tclass: 'italic'},
    {c: 'ffl', ic: 0.103, tclass: 'italic'},
    // 10 - 1F
    {c: '&#x131;', a:0, ic: 0.0767, tclass: 'italic'},
    {c: 'j', d:.2, ic: 0.0374, tclass: 'italic'},
    {c: '&#x60;', tclass: 'iaccent'},
    {c: '&#xB4;', ic: 0.0969, tclass: 'iaccent'},
    {c: '&#x2C7;', ic: 0.083, tclass: 'iaccent'},
    {c: '&#x2D8;', ic: 0.108, tclass: 'iaccent'},
    {c: '&#x2C9;', ic: 0.103, tclass: 'iaccent'},
    {c: '&#x2DA;', tclass: 'iaccent'},
    {c: '?', d: 0.17, w: 0.46, tclass: 'italic'},
    {c: '&#xDF;', ic: 0.105, tclass: 'italic'},
    {c: '&#xE6;', a:0, ic: 0.0751, tclass: 'italic'},
    {c: '&#x153;', a:0, ic: 0.0751, tclass: 'italic'},
    {c: '&#xF8;', ic: 0.0919, tclass: 'italic'},
    {c: '&#xC6;', ic: 0.12, tclass: 'italic'},
    {c: '&#x152;', ic: 0.12, tclass: 'italic'},
    {c: '&#xD8;', ic: 0.094, tclass: 'italic'},
    // 20 - 2F
    {c: '?', krn: {'108': -0.256, '76': -0.321}, tclass: 'italic'},
    {c: '!', ic: 0.124, lig: {'96': 60}, tclass: 'italic'},
    {c: '&#x201D;', ic: 0.0696, tclass: 'italic'},
    {c: '#', ic: 0.0662, tclass: 'italic'},
    {c: '$', tclass: 'italic'},
    {c: '%', ic: 0.136, tclass: 'italic'},
    {c: '&amp;', ic: 0.0969, tclass: 'italic'},
    {c: '&#x2019;', ic: 0.124, krn: {'63': 0.102, '33': 0.102}, lig: {'39': 34}, tclass: 'italic'},
    {c: '(', d:.2, ic: 0.162, tclass: 'italic'},
    {c: ')', d:.2, ic: 0.0369, tclass: 'italic'},
    {c: '*', ic: 0.149, tclass: 'italic'},
    {c: '+', a:.1, ic: 0.0369, tclass: 'italic'},
    {c: ',', a:-.3, d:.2, w: 0.278, tclass: 'italic'},
    {c: '-', a:0, ic: 0.0283, lig: {'45': 123}, tclass: 'italic'},
    {c: '.', a:-.25, tclass: 'italic'},
    {c: '/', ic: 0.162, tclass: 'italic'},
    // 30 - 3F
    {c: '0', ic: 0.136, tclass: 'italic'},
    {c: '1', ic: 0.136, tclass: 'italic'},
    {c: '2', ic: 0.136, tclass: 'italic'},
    {c: '3', ic: 0.136, tclass: 'italic'},
    {c: '4', ic: 0.136, tclass: 'italic'},
    {c: '5', ic: 0.136, tclass: 'italic'},
    {c: '6', ic: 0.136, tclass: 'italic'},
    {c: '7', ic: 0.136, tclass: 'italic'},
    {c: '8', ic: 0.136, tclass: 'italic'},
    {c: '9', ic: 0.136, tclass: 'italic'},
    {c: ':', ic: 0.0582, tclass: 'italic'},
    {c: ';', ic: 0.0582, tclass: 'italic'},
    {c: '&#xA1;', ic: 0.0756, tclass: 'italic'},
    {c: '=', a:0, d:-.1, ic: 0.0662, tclass: 'italic'},
    {c: '&#xBF;', tclass: 'italic'},
    {c: '?', ic: 0.122, lig: {'96': 62}, tclass: 'italic'},
    // 40 - 4F
    {c: '@', ic: 0.096, tclass: 'italic'},
    {c: 'A', krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
    {c: 'B', ic: 0.103, tclass: 'italic'},
    {c: 'C', ic: 0.145, tclass: 'italic'},
    {c: 'D', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}, tclass: 'italic'},
    {c: 'E', ic: 0.12, tclass: 'italic'},
    {c: 'F', ic: 0.133, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'italic'},
    {c: 'G', ic: 0.0872, tclass: 'italic'},
    {c: 'H', ic: 0.164, tclass: 'italic'},
    {c: 'I', ic: 0.158, tclass: 'italic'},
    {c: 'J', ic: 0.14, tclass: 'italic'},
    {c: 'K', ic: 0.145, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'italic'},
    {c: 'L', krn: {'84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
    {c: 'M', ic: 0.164, tclass: 'italic'},
    {c: 'N', ic: 0.164, tclass: 'italic'},
    {c: 'O', ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}, tclass: 'italic'},
    // 50 - 5F
    {c: 'P', ic: 0.103, krn: {'65': -0.0767}, tclass: 'italic'},
    {c: 'Q', d: 1, ic: 0.094, tclass: 'italic'},
    {c: 'R', ic: 0.0387, krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
    {c: 'S', ic: 0.12, tclass: 'italic'},
    {c: 'T', ic: 0.133, krn: {'121': -0.0767, '101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}, tclass: 'italic'},
    {c: 'U', ic: 0.164, tclass: 'italic'},
    {c: 'V', ic: 0.184, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'italic'},
    {c: 'W', ic: 0.184, krn: {'65': -0.0767}, tclass: 'italic'},
    {c: 'X', ic: 0.158, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}, tclass: 'italic'},
    {c: 'Y', ic: 0.194, krn: {'101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}, tclass: 'italic'},
    {c: 'Z', ic: 0.145, tclass: 'italic'},
    {c: '[', d:.1, ic: 0.188, tclass: 'italic'},
    {c: '&#x201C;', ic: 0.169, tclass: 'italic'},
    {c: ']', d:.1, ic: 0.105, tclass: 'italic'},
    {c: '&#x2C6;', ic: 0.0665, tclass: 'iaccent'},
    {c: '&#x2D9;', ic: 0.118, tclass: 'iaccent'},
    // 60 - 6F
    {c: '&#x2018;', ic: 0.124, lig: {'96': 92}, tclass: 'italic'},
    {c: 'a', a:0, ic: 0.0767, tclass: 'italic'},
    {c: 'b', ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
    {c: 'c', a:0, ic: 0.0565, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
    {c: 'd', ic: 0.103, krn: {'108': 0.0511}, tclass: 'italic'},
    {c: 'e', a:0, ic: 0.0751, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
    {c: 'f', ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'italic'},
    {c: 'g', a:0, d:.2, ic: 0.0885, tclass: 'italic'},
    {c: 'h', ic: 0.0767, tclass: 'italic'},
    {c: 'i', ic: 0.102, tclass: 'italic'},
    {c: 'j', d:.2, ic: 0.145, tclass: 'italic'},
    {c: 'k', ic: 0.108, tclass: 'italic'},
    {c: 'l', ic: 0.103, krn: {'108': 0.0511}, tclass: 'italic'},
    {c: 'm', a:0, ic: 0.0767, tclass: 'italic'},
    {c: 'n', a:0, ic: 0.0767, krn: {'39': -0.102}, tclass: 'italic'},
    {c: 'o', a:0, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
    // 70 - 7F
    {c: 'p', a:0, d:.2, ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
    {c: 'q', a:0, d:.2, ic: 0.0885, tclass: 'italic'},
    {c: 'r', a:0, ic: 0.108, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}, tclass: 'italic'},
    {c: 's', a:0, ic: 0.0821, tclass: 'italic'},
    {c: 't', ic: 0.0949, tclass: 'italic'},
    {c: 'u', a:0, ic: 0.0767, tclass: 'italic'},
    {c: 'v', a:0, ic: 0.108, tclass: 'italic'},
    {c: 'w', a:0, ic: 0.108, krn: {'108': 0.0511}, tclass: 'italic'},
    {c: 'x', a:0, ic: 0.12, tclass: 'italic'},
    {c: 'y', a:0, d:.2, ic: 0.0885, tclass: 'italic'},
    {c: 'z', a:0, ic: 0.123, tclass: 'italic'},
    {c: '&#x2013;', a:.1, ic: 0.0921, lig: {'45': 124}, tclass: 'italic'},
    {c: '&#x2014;', a:.1, ic: 0.0921, tclass: 'italic'},
    {c: '&#x2DD;', ic: 0.122, tclass: 'iaccent'},
    {c: '&#x2DC;', ic: 0.116, tclass: 'iaccent'},
    {c: '&#xA8;', tclass: 'iaccent'}
  ],
  
  cmbx10: [
    // 00 - 0F
    {c: '&Gamma;', tclass: 'bgreek'},
    {c: '&Delta;', tclass: 'bgreek'},
    {c: '&Theta;', tclass: 'bgreek'},
    {c: '&Lambda;', tclass: 'bgreek'},
    {c: '&Xi;', tclass: 'bgreek'},
    {c: '&Pi;', tclass: 'bgreek'},
    {c: '&Sigma;', tclass: 'bgreek'},
    {c: '&Upsilon;', tclass: 'bgreek'},
    {c: '&Phi;', tclass: 'bgreek'},
    {c: '&Psi;', tclass: 'bgreek'},
    {c: '&Omega;', tclass: 'bgreek'},
    {c: 'ff', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 14, '108': 15}, tclass: 'bold'},
    {c: 'fi', tclass: 'bold'},
    {c: 'fl', tclass: 'bold'},
    {c: 'ffi', tclass: 'bold'},
    {c: 'ffl', tclass: 'bold'},
    // 10 - 1F
    {c: '&#x131;', a:0, tclass: 'bold'},
    {c: 'j', d:.2, tclass: 'bold'},
    {c: '&#x60;', tclass: 'baccent'},
    {c: '&#xB4;', tclass: 'baccent'},
    {c: '&#x2C7;', tclass: 'baccent'},
    {c: '&#x2D8;', tclass: 'baccent'},
    {c: '&#x2C9;', tclass: 'baccent'},
    {c: '&#x2DA;', tclass: 'baccent'},
    {c: '?', tclass: 'bold'},
    {c: '&#xDF;', tclass: 'bold'},
    {c: '&#xE6;', a:0, tclass: 'bold'},
    {c: '&#x153;', a:0, tclass: 'bold'},
    {c: '&#xF8;', tclass: 'bold'},
    {c: '&#xC6;', tclass: 'bold'},
    {c: '&#x152;', tclass: 'bold'},
    {c: '&#xD8;', tclass: 'bold'},
    // 20 - 2F
    {c: '?', krn: {'108': -0.278, '76': -0.319}, tclass: 'bold'},
    {c: '!', lig: {'96': 60}, tclass: 'bold'},
    {c: '&#x201D;', tclass: 'bold'},
    {c: '#', tclass: 'bold'},
    {c: '$', tclass: 'bold'},
    {c: '%', tclass: 'bold'},
    {c: '&amp;', tclass: 'bold'},
    {c: '&#x2019;', krn: {'63': 0.111, '33': 0.111}, lig: {'39': 34}, tclass: 'bold'},
    {c: '(', d:.2, tclass: 'bold'},
    {c: ')', d:.2, tclass: 'bold'},
    {c: '*', tclass: 'bold'},
    {c: '+', a:.1, tclass: 'bold'},
    {c: ',', a:-.3, d:.2, w: 0.278, tclass: 'bold'},
    {c: '-', a:0, lig: {'45': 123}, tclass: 'bold'},
    {c: '.', a:-.25, tclass: 'bold'},
    {c: '/', tclass: 'bold'},
    // 30 - 3F
    {c: '0', tclass: 'bold'},
    {c: '1', tclass: 'bold'},
    {c: '2', tclass: 'bold'},
    {c: '3', tclass: 'bold'},
    {c: '4', tclass: 'bold'},
    {c: '5', tclass: 'bold'},
    {c: '6', tclass: 'bold'},
    {c: '7', tclass: 'bold'},
    {c: '8', tclass: 'bold'},
    {c: '9', tclass: 'bold'},
    {c: ':', tclass: 'bold'},
    {c: ';', tclass: 'bold'},
    {c: '&#xA1;', tclass: 'bold'},
    {c: '=', a:0, d:-.1, tclass: 'bold'},
    {c: '&#xBF;', tclass: 'bold'},
    {c: '?', lig: {'96': 62}, tclass: 'bold'},
    // 40 - 4F
    {c: '@', tclass: 'bold'},
    {c: 'A', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'bold'},
    {c: 'B', tclass: 'bold'},
    {c: 'C', tclass: 'bold'},
    {c: 'D', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'bold'},
    {c: 'E', tclass: 'bold'},
    {c: 'F', krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'bold'},
    {c: 'G', tclass: 'bold'},
    {c: 'H', tclass: 'bold'},
    {c: 'I', krn: {'73': 0.0278}, tclass: 'bold'},
    {c: 'J', tclass: 'bold'},
    {c: 'K', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'bold'},
    {c: 'L', krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'bold'},
    {c: 'M', tclass: 'bold'},
    {c: 'N', tclass: 'bold'},
    {c: 'O', krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}, tclass: 'bold'},
    // 50 - 5F
    {c: 'P', krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'bold'},
    {c: 'Q', d: 1, tclass: 'bold'},
    {c: 'R', krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}, tclass: 'bold'},
    {c: 'S', tclass: 'bold'},
    {c: 'T', krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'bold'},
    {c: 'U', tclass: 'bold'},
    {c: 'V', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'bold'},
    {c: 'W', ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'bold'},
    {c: 'X', krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}, tclass: 'bold'},
    {c: 'Y', ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}, tclass: 'bold'},
    {c: 'Z', tclass: 'bold'},
    {c: '[', d:.1, tclass: 'bold'},
    {c: '&#x201C;', tclass: 'bold'},
    {c: ']', d:.1, tclass: 'bold'},
    {c: '&#x2C6;', tclass: 'baccent'},
    {c: '&#x2D9;', tclass: 'baccent'},
    // 60 - 6F
    {c: '&#x2018;', lig: {'96': 92}, tclass: 'bold'},
    {c: 'a', a:0, krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'bold'},
    {c: 'b', krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'bold'},
    {c: 'c', a:0, krn: {'104': -0.0278, '107': -0.0278}, tclass: 'bold'},
    {c: 'd', tclass: 'bold'},
    {c: 'e', a:0, tclass: 'bold'},
    {c: 'f', ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}, tclass: 'bold'},
    {c: 'g', a:0, d:.2, ic: 0.0139, krn: {'106': 0.0278}, tclass: 'bold'},
    {c: 'h', krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'bold'},
    {c: 'i', tclass: 'bold'},
    {c: 'j', d:.2, tclass: 'bold'},
    {c: 'k', krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'bold'},
    {c: 'l', tclass: 'bold'},
    {c: 'm', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'bold'},
    {c: 'n', a:0, krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}, tclass: 'bold'},
    {c: 'o', a:0, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'bold'},
    // 70 - 7F
    {c: 'p', a:0, d:.2, krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}, tclass: 'bold'},
    {c: 'q', a:0, d:.2, tclass: 'bold'},
    {c: 'r', a:0, tclass: 'bold'},
    {c: 's', a:0, tclass: 'bold'},
    {c: 't', krn: {'121': -0.0278, '119': -0.0278}, tclass: 'bold'},
    {c: 'u', a:0, krn: {'119': -0.0278}, tclass: 'bold'},
    {c: 'v', a:0, ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'bold'},
    {c: 'w', a:0, ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}, tclass: 'bold'},
    {c: 'x', a:0, tclass: 'bold'},
    {c: 'y', a:0, d:.2, ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}, tclass: 'bold'},
    {c: 'z', a:0, tclass: 'bold'},
    {c: '&#x2013;', a:.1, ic: 0.0278, lig: {'45': 124}, tclass: 'bold'},
    {c: '&#x2014;', a:.1, ic: 0.0278, tclass: 'bold'},
    {c: '&#x2DD;', tclass: 'baccent'},
    {c: '&#x2DC;', tclass: 'baccent'},
    {c: '&#xA8;', tclass: 'baccent'}
  ]
});

jsMath.Setup.Styles({
    '.typeset .math':           'font-style: normal',
    '.typeset .italic':         'font-style: italic',
    '.typeset .bold':           'font-weight: bold',
    '.typeset .cmr10':          'font-family: serif',
    '.typeset .cal':            'font-family: cursive',
    '.typeset .arrows':         '',
    '.typeset .arrow1':         '',
    '.typeset .arrow2':         '',
    '.typeset .harpoon':        'font-size: 125%',
    '.typeset .symbol':         '',
    '.typeset .symbol2':        '',
    '.typeset .delim1':         'font-size: 133%; position:relative; top:.75em',
    '.typeset .delim1b':        'font-size: 133%; position:relative; top:.8em; margin: -.1em',
    '.typeset .delim1c':        'font-size: 120%; position:relative; top:.8em;',
    '.typeset .delim2':         'font-size: 180%; position:relative; top:.75em',
    '.typeset .delim2b':        'font-size: 190%; position:relative; top:.8em; margin: -.1em',
    '.typeset .delim2c':        'font-size: 167%; position:relative; top:.8em;',
    '.typeset .delim3':         'font-size: 250%; position:relative; top:.725em',
    '.typeset .delim3b':        'font-size: 250%; position:relative; top:.8em; margin: -.1em',
    '.typeset .delim3c':        'font-size: 240%; position:relative; top:.775em;',
    '.typeset .delim4':         'font-size: 325%; position:relative; top:.7em',
    '.typeset .delim4b':        'font-size: 325%; position:relative; top:.8em; margin: -.1em',
    '.typeset .delim4c':        'font-size: 300%; position:relative; top:.8em;',
    '.typeset .delim':          '',
    '.typeset .vertical':       '',
    '.typeset .greek':          '',
    '.typeset .igreek':         'font-style: italic',
    '.typeset .bgreek':         'font-weight: bold',
    '.typeset .bigop1':         'font-size: 133%; position: relative; top: .85em; margin:-.05em',
    '.typeset .bigop1a':        'font-size: 100%; position: relative; top: .775em;',
    '.typeset .bigop1b':        'font-size: 160%; position: relative; top: .7em; margin:-.1em',
    '.typeset .bigop1c':        'font-size: 125%; position: relative; top: .75em; margin:-.1em;',
    '.typeset .bigop2':         'font-size: 200%; position: relative; top: .8em; margin:-.07em',
    '.typeset .bigop2a':        'font-size: 175%; position: relative; top: .7em;',
    '.typeset .bigop2b':        'font-size: 270%; position: relative; top: .62em; margin:-.1em',
    '.typeset .bigop2c':        'font-size: 250%; position: relative; top: .7em; margin:-.17em;',
    '.typeset .wide1':          'font-size: 67%; position: relative; top:-.8em',
    '.typeset .wide2':          'font-size: 110%; position: relative; top:-.5em',
    '.typeset .wide3':          'font-size: 175%; position: relative; top:-.32em',
    '.typeset .wide1a':         'font-size: 75%; position: relative; top:-.5em',
    '.typeset .wide2a':         'font-size: 133%; position: relative; top: -.15em',
    '.typeset .wide3a':         'font-size: 200%; position: relative; top: -.05em',
    '.typeset .root':           '',
    '.typeset .accent':         'position: relative; top: .02em',
    '.typeset .iaccent':        'position: relative; top: .02em; font-style: italic',
    '.typeset .baccent':        'position: relative; top: .02em; font-weight: bold'
});


jsMath.Setup.Styles();

/*
 *  No access to TeX "not" character, so fake this
 */
jsMath.Macro('not','\\mathrel{\\rlap{\\kern 4mu/}}');
jsMath.Macro('joinrel','\\mathrel{\\kern-2mu}');


jsMath.Box.DelimExtend = jsMath.Box.DelimExtendRelative;

jsMath.Box.defaultH = 0.8;

jsMath.Script.End();

Index: loncom/html/adm/jsMath/uncompressed/jsMath.js
+++ loncom/html/adm/jsMath/uncompressed/jsMath.js
/*****************************************************************************
 * 
 *  jsMath: Mathematics on the Web
 *  
 *  This jsMath package makes it possible to display mathematics in HTML pages
 *  that are viewable by a wide range of browsers on both the Mac and the IBM PC,
 *  including browsers that don't process MathML.  See
 *  
 *            http://www.math.union.edu/locate/jsMath
 *
 *  for the latest version, and for documentation on how to use jsMath.
 *
 *  Copyright 2004-2006 by Davide P. Cervone
 * 
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 *  
 *****************************************************************************/

/*
 *  Prevent running everything again if this file is loaded twice
 */

if (!window.jsMath || !window.jsMath.loaded) {

// handle bug in MSIE/Mac in autoload
if (window.parent && window.parent.jsMath) {jsMath = window.parent.jsMath}

var jsMath_old = window.jsMath;  // save user customizations


//
// debugging routine
// 
/* 
 * function ShowObject (obj,spaces) {
 *   var s = ''; if (!spaces) {spaces = ""}
 *   for (var i in obj) {
 *     if (obj[i] != null) {
 *       if (typeof(obj[i]) == "object") {
 *         s += spaces + i + ": {\n"
 *           + ShowObject(obj[i],spaces + '  ')
 *           + spaces + "}\n";
 *       } else if (typeof(obj[i]) != "function") {
 *         s += spaces + i + ': ' + obj[i] + "\n";
 *       }
 *     }
 *   }
 *   return s;
 * }
 */

/***************************************************************************/
//
//  Check for DOM support
//
if (!document.getElementById || !document.childNodes || !document.createElement) {
  alert('The mathematics on this page requires W3C DOM support in its JavaScript. '
      + 'Unfortunately, your browser doesn\'t seem to have this.');
} else {

/***************************************************************************/

jsMath = {
  
  version: "3.2",  // change this if you edit the file
  
  document: document,  // the document loading jsMath
  window: window,      // the window of the of loading document
  
  // Font sizes for \tiny, \small, etc. (must match styles below)
  sizes: [50, 60, 70, 85, 100, 120, 144, 173, 207, 249],

  //
  //  The styles needed for the TeX fonts
  //
  styles: {
    '.math':              'font-family: serif; font-style: normal; font-weight: normal',

    '.typeset':           'font-family: serif; font-style: normal; font-weight: normal',
    'div.typeset':        'text-align: center; margin: 1em 0px;',
    'span.typeset':       'text-align: left',
    '.typeset span':      'text-align: left; border:0px; margin:0px; padding:0px',
    
    '.typeset .normal':   'font-family: serif; font-style: normal; font-weight: normal',

    '.typeset .size0':    'font-size: 50%',  // tiny (\scriptscriptsize)
    '.typeset .size1':    'font-size: 60%',  //       (50% of \large for consistency)
    '.typeset .size2':    'font-size: 70%',  // scriptsize
    '.typeset .size3':    'font-size: 85%',  // small (70% of \large for consistency)
    '.typeset .size4':    'font-size: 100%', // normalsize
    '.typeset .size5':    'font-size: 120%', // large
    '.typeset .size6':    'font-size: 144%', // Large
    '.typeset .size7':    'font-size: 173%', // LARGE
    '.typeset .size8':    'font-size: 207%', // huge
    '.typeset .size9':    'font-size: 249%', // Huge
  
    '.typeset .cmr10':    'font-family: jsMath-cmr10, serif',
    '.typeset .cmbx10':   'font-family: jsMath-cmbx10, jsMath-cmr10',
    '.typeset .cmti10':   'font-family: jsMath-cmti10, jsMath-cmr10',
    '.typeset .cmmi10':   'font-family: jsMath-cmmi10',
    '.typeset .cmsy10':   'font-family: jsMath-cmsy10',
    '.typeset .cmex10':   'font-family: jsMath-cmex10',
    
    '.typeset .textit':   'font-family: serif; font-style:italic',
    '.typeset .textbf':   'font-family: serif; font-weight:bold',
    
    '.typeset .link':     'text-decoration: none',
    '.typeset .error':    'font-size: 10pt; font-style: italic; '
                             + 'background-color: #FFFFCC; padding: 1px; '
                             + 'border: 1px solid #CC0000',

    '.typeset .blank':    'display:inline-block; overflow:hidden; border:0px none; width:0px; height:0px;',
    '.typeset .spacer':   'display:inline-block',

    '#jsMath_message':        'position:fixed; bottom:1px; left:2px; background-color:#E6E6E6; '
                                + 'border: solid 1px #959595; margin:0px; padding: 1px 8px; '
                                + 'z-index:102; color: black; font-size:small; width:auto;',
    '#jsMath_panel':          'position:fixed; bottom:1.5em; right:1.5em; padding: 10px 20px; '
                                + 'background-color:#DDDDDD; border: outset 2px; '
                                + 'z-index:103; width:auto;',
    '#jsMath_button':         'position:fixed; bottom:1px; right:2px; background-color:white; '
                                + 'border: solid 1px #959595; margin:0px; padding: 0px 3px 1px 3px; '
                                + 'z-index:102; color:black; text-decoration:none; font-size:x-small; '
                                + 'width:auto; cursor:pointer; cursor:hand;',
    '#jsMath_float':          'position:absolute; top:0px; left:0px; max-width:80%; '
                                + 'z-index:101; width:auto; height:auto;',
    '#jsMath_float .drag':    'background-color:#DDDDDD; border: outset 1px; height:12px; font-size: 1px;',
    '#jsMath_float .close':   'background-color:#E6E6E6; border: inset 1px; width:8px; height:8px; margin: 1px 2px;',
    '#jsMath_float .source':  'background-color:#E2E2E2; border: outset 1px; '
                                + 'width:auto; height:auto; padding: 8px 15px; '
                                + 'font-family: courier, fixed; font-size: 90%',
    '#jsMath_noFont':         'text-align: center; padding: 10px 20px; border: 3px solid #DD0000; '
                                + 'background-color: #FFF8F8; color: #AA0000; font-size:small; width:auto;',
    '#jsMath_noFont .link':   'padding: 0px 5px 2px 5px; border: 2px outset; background-color:#E8E8E8; '
                                + 'color:black; font-size:80%; width:auto; cursor:pointer; cursor:hand;',

    '@media print': '#jsMath_button {display:none}'

  },
  

  /***************************************************************************/

  /*
   *  Get a jsMath DOM element
   */
  Element: function (name) {return jsMath.document.getElementById('jsMath_'+name)},
  
  /*
   *  Get the width and height (in pixels) of an HTML string
   */
  BBoxFor: function (s) {
    this.hidden.innerHTML = 
      '<nobr><span class="typeset"><span class="scale">'+s+'</span></span></nobr>';
    var bbox = {w: this.hidden.offsetWidth, h: this.hidden.offsetHeight};
    this.hidden.innerHTML = '';
    return bbox;
  },

  /*
   *  Get the width and height (in ems) of an HTML string
   */
  EmBoxFor: function (s) {
    var bbox = this.BBoxFor(s);
    return {w: bbox.w/this.em, h: bbox.h/this.em};
  },

  /*
   *  For browsers that don't handle sizes of italics properly (MSIE)
   */
  EmBoxForItalics: function (s) {
    var bbox = this.BBoxFor(s);
    if (s.match(/<i>|class=\"(icm|italic|igreek|iaccent)/i)) {
      bbox.w = this.BBoxFor(s+jsMath.Browser.italicString).w
                - jsMath.Browser.italicCorrection;
    }
    return {w: bbox.w/this.em, h: bbox.h/this.em};
  },

  /*
   *  Initialize jsMath.  This determines the em size, and a variety
   *  of other parameters used throughout jsMath.
   */
  Init: function () {
    if (jsMath.Setup.inited != 1) {
      if (jsMath.Setup.inited) {
        alert("It looks like jsMath failed to set up properly (error code "
               + jsMath.Setup.inited + ").  "
               + "I'll will try to keep going, but it could get ugly.");
        jsMath.Setup.inited = 1;
      } else {
        alert("You must call jsMath.Setup.Body() explicitly when jsMath is" +
              "loaded as part of the <HEAD> section");
      }
      jsMath.Setup.Body(); // may fail to load fallback files properly
    }
    this.em = this.BBoxFor('<span style="'+jsMath.Browser.block+';width:10em;height:1em"></span>').w/10;
    if (this.em == 0) {
      // handle older browsers
      this.em = this.BBoxFor('<img src="'+jsMath.blank+'" style="width:10em;height:1em"/>').w/10;
    }
    if (jsMath.Browser.italicString) 
      jsMath.Browser.italicCorrection = jsMath.BBoxFor(jsMath.Browser.italicString).w;
    var bb = this.BBoxFor('x'); var h = bb.h;
    var d = this.BBoxFor('x'+jsMath.HTML.Rule(1,h/jsMath.em)).h - h;
    this.h = (h-d)/this.em; this.d = d/this.em;
    this.hd = this.h + this.d;
    this.xWidth = bb.w;  // used to tell if scale has changed

    this.Setup.TeXfonts();
    
    var x_height = this.EmBoxFor('<span class="cmr10">M</span>').w/2;
    this.TeX.M_height = x_height*(26/14);
    this.TeX.h = this.h; this.TeX.d = this.d; this.TeX.hd = this.hd;
    
    this.Img.Scale();
    if (!this.initialized) {
      this.Setup.Sizes();
      this.Img.UpdateFonts();
    }

    // factor for \big and its brethren
    this.p_height = (this.TeX.cmex10[0].h + this.TeX.cmex10[0].d) / .85;

    this.initialized = 1;
  },
  
  /*
   *  Get the xWidth size and if it has changed, reinitialize the sizes
   */
  ReInit: function () {
    var w = this.BBoxFor('x').w;
    if (w != this.xWidth) {this.Init()}
  },
  
  /*
   *  Mark jsMath as loaded and copy any user-provided overrides
   */
  Loaded: function () {
    if (jsMath_old) {
      var override = ['Process', 'ProcessBeforeShowing',
        'ConvertTeX','ConvertTeX2','ConvertLaTeX','ConvertCustom',
        'CustomSearch', 'Synchronize', 'Macro', 'document'];
      for (var i = 0; i < override.length; i++) {
        if (jsMath_old[override[i]]) {jsMath_old[override[i]] = null}
      }
    }
    if (jsMath_old) {this.Insert(jsMath,jsMath_old)}
    jsMath_old = null;
    jsMath.loaded = 1;
  },
  
  /*
   *  Manage JavaScript objects:
   *  
   *      Add:        add/replace items in an object
   *      Insert:     add items to an object
   *      Package:    add items to an object prototype
   */
  Add: function (dst,src) {for (var id in src) {dst[id] = src[id]}},
  Insert: function (dst,src) {
    for (var id in src) {
      if (dst[id] && typeof(src[id]) == 'object'
                  && (typeof(dst[id]) == 'object'
                  ||  typeof(dst[id]) == 'function')) {
        this.Insert(dst[id],src[id]);
      } else {
        dst[id] = src[id];
      }
    }
  },
  Package: function (obj,def) {this.Insert(obj.prototype,def)}

}

/***************************************************************************/

/*
 *
 *  Implement loading of remote scripts using XMLHttpRequest, if
 *  possible, otherwise use a hidden IFRAME and fake it.  That
 *  method runs asynchronously, which causes lots of headaches.
 *  Solve these using Push command, which queues actions
 *  until files have loaded.
 */

jsMath.Script = {

  request: null, // the XMLHttpRequest object

  /*
   *  Create the XMLHttpRequest object, if we can.
   *  Otherwise, use the iframe-based fallback method.
   */
  Init: function () {
    if (!(jsMath.Controls.cookie.asynch && jsMath.Controls.cookie.progress)) {
      if (window.XMLHttpRequest) {
        this.request = new XMLHttpRequest;
      } else if (window.ActiveXObject) {
        try {this.request = new ActiveXObject("Microsoft.XMLHTTP")} catch (err) {}
      }
    }
    //
    //  Use the delayed-script fallback for MSIE/Mac and old versions
    //  of several browsers (Opera 7.5, OmniWeb 4.5).
    //
    if (!this.request || jsMath.Setup.domainChanged)
      {this.Load = this.delayedLoad; this.needsBody = 1}
  },

  /*
   *  Load a script and evaluate it in the window's context
   */
  Load: function (url,show) {
    if (show) {
      jsMath.Message.Set("Loading "+url);
      jsMath.Script.Delay(1);
      jsMath.Script.Push(this,'xmlRequest',url);
      jsMath.Script.Push(jsMath.Message,'Clear');
    } else {
      jsMath.Script.Push(this,'xmlRequest',url);
    }
  },

  /*
   *  Load a URL and run the contents of the file
   */
  xmlRequest: function (url) {
    this.debug('xmlRequest: '+url);
    try {
      this.request.open("GET",url,false);
      this.request.send(null);
    } catch (err) {
      throw "jsMath can't load the file '"+url+"'\n"
          + "Message: "+err.message;
    }
    if (this.request.status && this.request.status >= 400) {
      // Do we need to deal with redirected links?
      throw "jsMath can't load the file '"+url+"'\n"
          + "Error status: "+this.request.status;
    }
    this.Start(); this.blocking = 1;
    jsMath.window.eval(this.request.responseText);
    this.End(); this.blocking = 0;
    this.Process();
  },

  /********************************************************************
   *
   *  Implement asynchronous loading and execution of scripts
   *  (via hidden IFRAME) interleved with other JavaScript commands
   *  that must be synchronized with the file loading.  (Basically, this
   *  is for MSIE/Mac and Opera 7.5, which don't have XMLHttpRequest.)
   */

  cancelTimeout: 30*1000,   // delay for canceling load (30 sec)

  iframe: null,      // the hidden iframe
  blocking: 0,       // true when an asynchronous action is being performed
  cancelTimer: null, // timer to cancel load if it takes too long
  needsBody: 0,      // true if loading files requires BODY to be present
  
  queue: [],         // the stack of pending actions
  queueAt: 0,

  /*
   *  Provide mechanism for synchronizing with the asynchronous jsMath
   *  file-loading mechanism.  'code' can be a string or a function.
   */
  Synchronize: function (code,data) {
    if (typeof(code) != 'string') {jsMath.Script.Push(null,code,data)}
      else {jsMath.Script.Push(jsMath.window,'eval',code)}
  },
  
  /*
   *  Queue a function to be processed.
   *  If nothing is being loaded, do the pending commands.
   */
  Push: function (object,method,data) {
    this.debug('Pushing: '+method+' at '+this.queueAt);
    this.queue = [].concat(this.queue.slice(0,this.queueAt),[[object,method,data]],this.queue.slice(this.queueAt));
    this.queueAt++;
    if (!(this.blocking || (this.needsBody && !jsMath.document.body))) this.Process();
  },

  /*
   *  Do any pending functions (stopping if a file load is started)
   */
  Process: function () {
    while (this.queue.length && !this.blocking) {
      this.Start();
      var call = this.queue[0]; this.queue = this.queue.slice(1);
      var object = call[0]; var method = call[1]; var data = call[2];
      this.debug('Calling: '+method);
      if (object) {object[method](data)} else if (method) {method(data)}
      this.debug('Done:    '+method);
    }
    this.End();
  },
  
  Start: function () {this.queueAt = 0},
  End:   function () {this.queueAt = this.queue.length},

  /*
   *  Handle loading of scripts that run asynchronously
   */
  delayedLoad: function (url) {
    this.debug('Loading: '+url);
    this.Push(this,'startLoad',url);
  },
  startLoad: function (url) {
    this.iframe = jsMath.document.createElement('iframe');
    this.iframe.style.visibility = 'hidden';
    this.iframe.style.position = 'absolute';
    this.iframe.style.width = '0px';
    this.iframe.style.height = '0px';
    if (jsMath.document.body.firstChild) {
      jsMath.document.body.insertBefore(this.iframe,jsMath.document.body.firstChild);
    } else {
      jsMath.document.body.appendChild(this.iframe);
    }
    this.blocking = 1; this.url = url;
    if (!url.match(/\.js$/)) {this.iframe.src = url}
                        else {this.iframe.src = jsMath.root+"jsMath-loader.html"}
    if (url.substr(0,jsMath.root.length) == jsMath.root)
      {url = url.substr(jsMath.root.length)}
    jsMath.Message.Set("Loading "+url);
    this.debug('Starting: '+url);
    this.cancelTimer = setTimeout('jsMath.Script.cancelLoad()',this.cancelTimeout);
  },
  endLoad: function (action) {
    this.debug('Ending: '+this.url);
    if (this.cancelTimer) {clearTimeout(this.cancelTimer); this.cancelTimer = null;}
    jsMath.Message.Clear();
    if (action != 'cancel') {this.blocking = 0; this.Process()}
  },

  /*
   *  If the loading takes too long, cancel it and end the load.
   */
  cancelLoad: function () {
    this.cancelTimer = null;
    jsMath.Message.Set("Can't load file");
    this.endLoad("cancel");
  },

  /*
   *  Perform a delay (to let the browser catch up)
   */
  Delay: function (time) {
    this.blocking = 1;
    setTimeout('jsMath.Script.endDelay()',time);
  },
  endDelay: function () {this.debug('endDelay'); this.blocking = 0; this.Process()},
  
  /*
   *  Load an image and wait for it
   *  (so MSIE won't load extra copies of it)
   */
  WaitForImage: function (file) {
    this.blocking = 1; if (this.img == null) {this.img = []}
    var img = new Image(); this.img[this.img.length] = img;
    img.onload = function () {jsMath.Script.endDelay()}
    img.onerror = img.onload; img.onabort = img.onload;
    img.src = file;
  },
  
  /*
   *  The code uncompressor
   */
  Uncompress: function (data) {
    for (var k = 0; k <  data.length; k++) {
      var d = data[k]; var n = d.length;
      for (var i = 0; i < n; i++) {if (typeof(d[i]) == 'number') {d[i] = d[d[i]]}}
      data[k] = d.join('');
    }
    window.eval(data.join(''));
  },
  
  /*
   *  for debugging the event queue
   */
  debug: function (message) {
//    if (jsMath.document.body && jsMath.window.debug) {jsMath.window.debug(message)}
//      else {alert(message)}
  }

};

/***************************************************************************/

/*
 *  Message and screen blanking facility
 */

jsMath.Message = {
  
  blank: null,    // the div to blank out the screen
  message: null,  // the div for the messages
  text: null,     // the text node for messages
  clear: null,    // timer for clearing message

  /*
   *  Create the elements needed for the message box
   */
  Init: function () {
    if (!jsMath.document.body || !jsMath.Controls.cookie.progress) return;
    if (jsMath.Setup.stylesReady) {
      this.message = jsMath.Setup.DIV('message',{visibility:'hidden'});
    } else {
      this.message = jsMath.Setup.DIV('message',{
        visibility:'hidden', position:'absolute', bottom:'1px', left:'2px',
        backgroundColor:'#E6E6E6', border:'solid 1px #959595',
        margin:'0px', padding:'1px 8px', zIndex:102,
        color:'black', fontSize:'small', width:'auto'
      });
    }
    this.text = jsMath.document.createTextNode('');
    this.message.appendChild(this.text);
    this.message.onmousedown = jsMath.Translate.Cancel;
  },
  
  /*
   *  Set the contents of the message box, or use the window status line
   */
  Set: function (text,canCancel) {
    if (this.clear) {clearTimeout(this.clear); this.clear = null}
    if (jsMath.Controls.cookie.progress) {
      if (!this.text) {this.Init(); if (!this.text) return}
      if (jsMath.Browser.textNodeBug) {this.message.innerHTML = text}
        else {this.text.nodeValue = text}
      this.message.style.visibility = 'visible';
      if (canCancel) {
        this.message.style.cursor = 'pointer';
        if (!this.message.style.cursor) {this.message.style.cursor = 'hand'}
        this.message.title = ' Cancel Processing of Math ';
      } else {
        this.message.style.cursor;
        this.message.title = '';
      }
    } else {
      if (text.substr(0,8) != "Loading ") {jsMath.window.status = text}
    }
  },
  
  /*
   *  Clear the message box or status line
   */
  Clear: function () {
    if (this.clear) {clearTimeout(this.clear)}
    this.clear = setTimeout("jsMath.Message.doClear()",1000);
  },
  doClear: function () {
    if (this.clear) {
      this.clear = null;
      jsMath.window.status = '';
      if (this.text) {this.text.nodeValue = ''}
      if (this.message) {this.message.style.visibility = 'hidden'}
    }
  },
  
  
  /*
   *  Put up a DIV that covers the window so that the
   *  "flicker" of processing the mathematics will not be visible
   */
  Blank: function () {
    if (this.blank || !jsMath.document.body) return;
    this.blank = jsMath.Setup.DIV("blank",{
      position:(jsMath.Browser.msiePositionFixedBug? 'absolute': 'fixed'),
      top:'0px', left:'0px', bottom:'0px', right:'0px',
      zIndex:101, backgroundColor:'white'
    });
    if (jsMath.Browser.msieBlankBug) {
      this.blank.innerHTML = '&nbsp;';
      this.blank.style.width = "110%";
      this.blank.style.height = "110%";
    }
  },
  
  UnBlank: function () {
    if (this.blank) {jsMath.document.body.removeChild(this.blank)}
    this.blank = null;
  }
};


/***************************************************************************/

/*
 *  Miscellaneous setup and initialization
 */
jsMath.Setup = {
  
  loaded: [],  // array of files already loaded
  
  /*
   *  Insert a DIV at the top of the page with given ID,
   *  attributes, and style settings
   */
  DIV: function (id,styles) {
    var div = jsMath.document.createElement('div');
    div.id = 'jsMath_'+id;
    for (var i in styles) {div.style[i]= styles[i]}
    if (!jsMath.document.body.hasChildNodes) {jsMath.document.body.appendChild(div)}
      else {jsMath.document.body.insertBefore(div,jsMath.document.body.firstChild)}
    return div;
  },
  
  /*
   *  Source a jsMath JavaScript file (only load any given file once)
   */
  Script: function (file,show) {
    if (this.loaded[file]) {return} else {this.loaded[file] = 1}
    if (!file.match('^([a-zA-Z]+:/)?/')) {file = jsMath.root + file}
    jsMath.Script.Load(file,show);
  },
  
  /*
   *  Use a hidden <DIV> for measuring the BBoxes of things
   */
  Hidden: function () {
    jsMath.hidden = this.DIV("Hidden",{
      visibility: 'hidden', position:"absolute",
      top:0, left:0, border:0, padding:0, margin:0
    });
    jsMath.hiddenTop = jsMath.hidden;
    return;
  },

  /*
   *  Find the root URL for the jsMath files (so we can load
   *  the other .js and .gif files)
   */
  Source: function () {
    if (jsMath.Autoload && jsMath.Autoload.root) {
      jsMath.root = jsMath.Autoload.root;
    } else {
      jsMath.root = '';
      var script = jsMath.document.getElementsByTagName('script');
      if (script) {
        for (var i = 0; i < script.length; i++) {
          var src = script[i].src;
          if (src && src.match('(^|/)jsMath.js$')) {
            jsMath.root = src.replace(/jsMath.js$/,'');
            if (jsMath.root.charAt(0) == '/') {
              jsMath.root = jsMath.document.location.protocol + '//'
                          + jsMath.document.location.host + jsMath.root;
            } else if (!jsMath.root.match(/^[a-z]+:/i)) {
	      src = new String(jsMath.document.location);
	      jsMath.root = src.replace(new RegExp('[^/]*$'),'') + jsMath.root;
	      while (jsMath.root.match('/[^/]*/\\.\\./')) {
	        jsMath.root = jsMath.root.replace(new RegExp('/[^/]*/\\.\\./'),'/');
	      }
	    }
            i = script.length;
          }
        }
      }
    }
    jsMath.Img.root = jsMath.root + "fonts/";
    jsMath.blank = jsMath.root + "blank.gif";
    this.Domain();
  },
  
  /*
   *  Find the most restricted common domain for the main
   *  page and jsMath.  Report an error if jsMath is outside
   *  the domain of the calling page.
   */
  Domain: function () {
    var jsDomain = ''; var pageDomain = jsMath.document.domain;
    if (jsMath.root.match('://([^/]*)/')) {jsDomain = RegExp.$1}
    jsDomain = jsDomain.replace(/:\d+$/,'');
    if (jsDomain == "" || jsDomain == pageDomain) return;
    //
    // MSIE on the Mac can't change jsMath.document.domain and 'try' won't
    //   catch the error (Grrr!), so exit for them.
    //
    if (navigator.appName == 'Microsoft Internet Explorer' &&
        navigator.platform == 'MacPPC' && navigator.onLine &&
        navigator.userProfile && jsMath.document.all) return;
    jsDomain = jsDomain.split(/\./); pageDomain = pageDomain.split(/\./);
    if (jsDomain.length < 2 || pageDomain.length < 2 ||
        jsDomain[jsDomain.length-1] != pageDomain[pageDomain.length-1] ||
        jsDomain[jsDomain.length-2] != pageDomain[pageDomain.length-2]) {
      this.DomainWarning();
      return;
    }
    var domain = jsDomain[jsDomain.length-2] + '.' + jsDomain[jsDomain.length-1];
    for (var i = 3; i <= jsDomain.length && i <= pageDomain.length; i++) {
      if (jsDomain[jsDomain.length-i] != pageDomain[pageDomain.length-i]) break;
      domain = jsDomain[jsDomain.length-i] + '.' + domain;
    }
    jsMath.document.domain = domain;
    this.domainChanged = 1;
  },

  DomainWarning: function () {
    alert("In order for jsMath to be able to load the additional "
        + "components that it may need, the jsMath.js file must be "
        + "loaded from a server in the same domain as the page that "
        + "contains it.  Because that is not the case for this page, "
        + "the mathematics displayed here may not appear correctly.");
  },
  
  /*
   *  Initialize a font's encoding array
   */
  EncodeFont: function (name) {
    var font = jsMath.TeX[name];
    if (font[0].c != null) return;
    for (var k = 0; k < 128; k++) {
      var data = font[k]; font[k] = data[3];
      if (font[k] == null) {font[k] = {}};
      font[k].w = data[0]; font[k].h = data[1];
      if (data[2] != null) {font[k].d = data[2]}
      font[k].c = jsMath.TeX.encoding[k];
    }
  },
  
  /*
   *  Initialize the encodings for all fonts
   */
  Fonts: function () {
    for (var i = 0; i < jsMath.TeX.fam.length; i++) {
      var name = jsMath.TeX.fam[i];
      if (name) {this.EncodeFont(name)}
    }
  },
  
  /*
   *  Look up the default height and depth for a TeX font
   *  and set the skewchar
   */
  TeXfont: function (name) {
    var font = jsMath.TeX[name]; if (font == null) return;
    var WH = jsMath.EmBoxFor('<span class="'+name+'">'+font[65].c+'</span>');
    font.hd = WH.h; font.dh = .05;
    font.d = jsMath.EmBoxFor('<span class="'+name+'">'+ font[65].c +
      jsMath.HTML.Rule(1,font.hd) + '</span>').h - font.hd;
    font.h = font.hd - font.d;
    if (name == 'cmmi10') {font.skewchar = 0177} 
    else if (name == 'cmsy10') {font.skewchar = 060}
  },

  /*
   *  Init all the TeX fonts
   */
  TeXfonts: function () {
    for (var i = 0; i < jsMath.TeX.fam.length; i++) 
      {if (jsMath.TeX.fam[i]) {this.TeXfont(jsMath.TeX.fam[i])}}
  },

  /*
   *  Compute font parameters for various sizes
   */
  Sizes: function () {
    jsMath.TeXparams = [];
    for (var j=0; j < jsMath.sizes.length; j++) {jsMath.TeXparams[j] = {}}
    for (var i in jsMath.TeX) {
      if (typeof(jsMath.TeX[i]) != 'object') {
        for (var j=0; j < jsMath.sizes.length; j++) {
          jsMath.TeXparams[j][i] = jsMath.sizes[j]*jsMath.TeX[i]/100;
        }
      }
    }
  },

  /*
   *  Send the style definitions to the browser (these may be adjusted
   *  by the browser-specific code)
   */
  Styles: function (styles) {
    if (!styles) {
      styles = jsMath.styles;
      styles['.typeset .scale'] = 'font-size:'+jsMath.Controls.cookie.scale+'%';
      this.stylesReady = 1;
    }
    jsMath.Script.Push(this,'AddStyleSheet',styles);
    if (jsMath.Browser.styleChangeDelay) {jsMath.Script.Push(jsMath.Script,'Delay',1)}
  },
  
  AddStyleSheet: function (styles) {
    var head = jsMath.document.getElementsByTagName('head')[0];
    var string = ''; for (var id in styles) {string += id + ' {'+styles[id]+"}\n"}
    if (jsMath.document.createStyleSheet) {// check for MSIE
      head.insertAdjacentHTML('beforeEnd',
          '<span style="display:none">x</span><style type="text/css">'+string+'</style>');
    } else {
      var style = jsMath.document.createElement('style'); style.type = "text/css";
      style.appendChild(jsMath.document.createTextNode(string));
      head.appendChild(style);
    }
  },

  /*
   *  Do the initialization that requires the <body> to be in place.
   */
  Body: function () {
    if (this.inited) return;

    this.inited = -1;

    jsMath.Setup.Hidden(); this.inited = -2;
    jsMath.Browser.Init(); this.inited = -3;

    // blank screen if necessary
    if (jsMath.Controls.cookie.blank) {jsMath.Message.Blank()}; this.inited = -4;

    jsMath.Setup.Styles(); this.inited = -5;
    jsMath.Controls.Init(); this.inited = -6;
    
    // do user-specific initialization
    jsMath.Script.Push(jsMath.Setup,'User','pre-font'); this.inited = -7;

    // make sure browser-specific loads are done before this
    jsMath.Script.Push(jsMath.Font,'Check');
    
    this.inited = 1;
  },
  
  /*
   *  Web page author can override this to do initialization
   *  that must be done before the font check is performed, or
   *  at other times (as indicated by the value of the parameter).
   */
  User: function (when) {}
  
};

jsMath.Update = {

  /*
   *  Update specific parameters for a limited number of font entries
   */
  TeXfonts: function (change) {
    for (var font in change) {
      for (var code in change[font]) {
        for (var id in change[font][code]) {
          jsMath.TeX[font][code][id] = change[font][code][id];
        }
      }
    }
  },
  
  /*
   *  Update the character code for every character in a list
   *  of fonts
   */
  TeXfontCodes: function (change) {
    for (var font in change) {
      for (var i = 0; i < change[font].length; i++) {
        jsMath.TeX[font][i].c = change[font][i];
      }
    }
  }
  
};

/***************************************************************************/

/*
 *  Implement browser-specific checks
 */

jsMath.Browser = {

  allowAbsolute: 1,           // tells if browser can nest absolutely positioned
                              //   SPANs inside relative SPANs
  allowAbsoluteDelim: 0,      // OK to use absolute placement for building delims?
  separateSkips: 0,           // MSIE doesn't do negative left margins, and
                              //   Netscape doesn't combine skips well

  valignBug: 0,               // Konqueror doesn't nest vertical-align
  operaHiddenFix: '',         // for Opera to fix bug with math in tables
  msieCenterBugFix: '',       // for MSIE centering bug with image fonts
  msieInlineBlockFix: '',     // for MSIE alignment bug in non-quirks mode
  imgScale: 1,                // MSI scales images for 120dpi screens, so compensate

  renameOK: 1,                // tells if brower will find a tag whose name
                              //   has been set via setAttributes
  styleChangeDelay: 0,        // true if style changes need a delay in order
                              //   for them to be available

  delay: 1,                   // delay for asynchronous math processing
  
  version: 0,                 // browser version number (when needed)

  /*
   *  Determine if the "top" of a <SPAN> is always at the same height
   *  or varies with the height of the rest of the line (MSIE).
   */
  TestSpanHeight: function () {
    jsMath.hidden.innerHTML = '<span><span style="'+this.block+';height:2em;width:1px"></span></span>';
    var span = jsMath.hidden.firstChild;
    var img  = span.firstChild;
    this.spanHeightVaries = (span.offsetHeight >= img.offsetHeight && span.offsetHeight > 0);
    this.spanHeightTooBig = (span.offsetHeight > img.offsetHeight);
    jsMath.hidden.innerHTML = '';
  },
  
  /*
   *  Determine if an inline-block with 0 width is OK or not
   *  and decide whether to use spans or images for spacing
   */
  TestInlineBlock: function () {
    this.block = "display:inline-block";
    this.hasInlineBlock = jsMath.BBoxFor('<span style="'+this.block+';width:10px;height:5px"></span>').w > 0;
    if (!this.hasInlineBlock) {
      this.block = "display:-moz-inline-box";
      this.hasInlineBlock = jsMath.BBoxFor('<span style="'+this.block+';width:10px;height:5px"></span>').w > 0;
      if (!this.hasInlineBlock) return;
      jsMath.styles['.typeset .blank']  = jsMath.styles['.typeset .blank'].replace(/display:inline-block/,this.block);
    }
    this.block += ';overflow:hidden';
    var h = jsMath.BBoxFor('x').h;
    this.mozInlineBlockBug = jsMath.BBoxFor(
       '<span style="'+this.block+';height:'+h+'px;width:1px"></span>x'+
       '<span style="'+this.block+';height:'+h+'px;width:1px;vertical-align:-'+h+'px"></span>').h > 2*h;
    this.widthAddsBorder = jsMath.BBoxFor('<span style="'+this.block+
        ';overflow:hidden;height:1px;width:10px;border-left:10px solid"></span>').w > 10;
    this.msieBorderBug =
      jsMath.BBoxFor('<span style="'+this.block+';height:'+h+'px;width:1px"></span>x').h !=
      jsMath.BBoxFor('<span style="'+this.block+';height:'+h+'px;width:1px;border-left:1px solid"></span>x').h;
    this.blankWidthBug = this.msieBorderBug ||
      jsMath.BBoxFor('<span style="'+this.block+';height:2em;width:0px"></span>').h == 0;
  },
  
  /*
   *  Determine if the NAME attribute of a tag can be changed
   *  using the setAttribute function, and then be properly
   *  returned by getElementByName.
   */
  TestRenameOK: function () {
    jsMath.hidden.innerHTML = '<span></span>';
    var test = jsMath.hidden.firstChild;
    test.setAttribute('name','jsMath_test');
    this.renameOK = (jsMath.document.getElementsByName('jsMath_test').length > 0);
    jsMath.hidden.innerHTML = '';
  },
  
  /*
   *  See if style changes occur immediately, or if we need to delay
   *  in order to let them take effect.
   */
  TestStyleChange: function () {
    jsMath.hidden.innerHTML = '<span ID="jsMath_test">x</span>';
    var span = jsMath.hidden.firstChild;
    var w = span.offsetWidth;
    jsMath.Setup.AddStyleSheet({'#jsMath_test': 'font-size:200%'});
    this.styleChangeDelay = (span.offsetWidth == w);
    jsMath.hidden.innerHTML = '';
  },
  
  /*
   *  Perform a version check on a standard version string
   */
  VersionAtLeast: function (v) {
    var bv = new String(this.version).split('.');
    v = new String(v).split('.'); if (v[1] == null) {v[1] = '0'}
    return bv[0] > v[0] || (bv[0] == v[0] && bv[1] >= v[1]);
  },

  /*
   *  Test for browser characteristics, and adjust things
   *  to overcome specific browser bugs
   */
  Init: function () {
    jsMath.browser = 'unknown';
    this.TestInlineBlock();
    this.TestSpanHeight();
    this.TestRenameOK();
    this.TestStyleChange();

    this.MSIE();
    this.Mozilla();
    this.Opera();
    this.OmniWeb();
    this.Safari();
    this.Konqueror();
    
    //
    // Change some routines depending on the browser
    // 
    if (this.allowAbsoluteDelim) {
      jsMath.Box.DelimExtend = jsMath.Box.DelimExtendAbsolute;
      jsMath.Box.Layout = jsMath.Box.LayoutAbsolute;
    } else {
      jsMath.Box.DelimExtend = jsMath.Box.DelimExtendRelative;
      jsMath.Box.Layout = jsMath.Box.LayoutRelative;
    }
    
    if (this.separateSkips) {
      jsMath.HTML.Place = jsMath.HTML.PlaceSeparateSkips;
      jsMath.Typeset.prototype.Place = jsMath.Typeset.prototype.PlaceSeparateSkips;
    }
  },
  
  //
  //  Handle bug-filled Internet Explorer
  //
  MSIE: function () {
    if (this.spanHeightVaries && !this.spanHeightTooBig) {
      jsMath.browser = 'MSIE';
      if (navigator.platform == 'Win32') {
        this.allowAbsoluteDelim = 1; this.separateSkips = 1;
        this.buttonCheck = 1; this.msieBlankBug = 1;
        this.msieDivWidthBug = 1; this.msiePositionFixedBug = 1;
        this.msieIntegralBug = 1; this.waitForImages = 1;
        this.msieAlphaBug = 1; this.alphaPrintBug = 1;
        this.msieCenterBugFix = 'position:relative; ';
        this.msieInlineBlockFix = ' display:inline-block;';
        jsMath.Macro('joinrel','\\mathrel{\\kern-5mu}'),
        jsMath.styles['.typeset .arial'] = "font-family: 'Arial unicode MS'";
        // MSIE doesn't implement fixed positioning, so use absolute
        jsMath.styles['#jsMath_message'] =
              jsMath.styles['#jsMath_message'].replace(/position:fixed/,"position:absolute").replace(/width:auto/,"");
        jsMath.styles['#jsMath_panel'] =
              jsMath.styles['#jsMath_panel'].replace(/position:fixed/,"position:absolute").replace(/width:auto/,"");
        jsMath.styles['#jsMath_button'] = 'width:1px; '
            + jsMath.styles['#jsMath_button'].replace(/position:fixed/,"position:absolute").replace(/width:auto/,"");
        jsMath.window.onscroll = jsMath.Controls.MoveButton;
        // MSIE needs this NOT to be inline-block
        jsMath.styles['.typeset .spacer'] =
              jsMath.styles['.typeset .spacer'].replace(/display:inline-block/,'');
        // MSIE will rescale images if the DPIs differ
        if (screen.deviceXDPI && screen.logicalXDPI 
             && screen.deviceXDPI != screen.logicalXDPI) {
          this.imgScale *= screen.logicalXDPI/screen.deviceXDPI;
          jsMath.Controls.cookie.alpha = 0;
        }
        // Handle bug with getting width of italic text
        this.italicString = '<i>x</i>';
        jsMath.EmBoxFor = jsMath.EmBoxForItalics;
      } else if (navigator.platform == 'MacPPC') {
        this.msieAbsoluteBug = 1; this.msieButtonBug = 1;
        this.msieDivWidthBug = 1; this.msieBlankBug = 1;
        jsMath.Setup.Script('jsMath-msie-mac.js');
        jsMath.Parser.prototype.macros.angle = ['Replace','ord','<font face="Symbol">&#x8B;</font>','normal'];
        jsMath.styles['#jsMath_panel']  = 'width:25em; ' + jsMath.styles['#jsMath_panel'].replace(/width:auto/,"");
        jsMath.styles['#jsMath_button'] = 'width:1px; ' + jsMath.styles['#jsMath_button'].replace(/width:auto/,"");
      }
      jsMath.Macro('not','\\mathrel{\\rlap{\\kern3mu/}}');
    }
  },

  //
  //  Handle Netscape/Mozilla (any flavor)
  //
  Mozilla: function () {
    if (jsMath.hidden.ATTRIBUTE_NODE) {
      jsMath.browser = 'Mozilla';
      if (navigator.platform == 'Win32') {this.alphaPrintBug = 1}
      this.allowAbsoluteDelim = 1; // this.separateSkips = 1; // no longer needed?
      jsMath.Macro('not','\\mathrel{\\rlap{\\kern3mu/}}');
      if (navigator.vendor == 'Firefox') {
        jsMath.Browser.version = navigator.vendorSub;
      } else if (navigator.userAgent.match(' Firefox/([0-9.]+)( |$)')) {
        jsMath.Browser.version = RegExp.$1;
      }
    }
  },
  
  //
  //  Handle OmniWeb
  //
  OmniWeb: function () {
    if (navigator.accentColorName) {
      jsMath.browser = 'OmniWeb';
      this.allowAbsolute = this.hasInlineBlock;
      this.allowAbsoluteDelim = this.allowAbsolute;
      this.valignBug = this.allowAbsolute;
      this.buttonCheck = 1; this.textNodeBug = 1;
      if (!this.hasInlineBlock) {jsMath.Setup.Script('jsMath-old-browsers.js')}
    }
  },
    
  //
  //  Handle Opera
  //
  Opera: function () {
    if (this.spanHeightTooBig) {
      jsMath.browser = 'Opera';
      var isOld = navigator.userAgent.match("Opera 7");
      this.allowAbsolute = 0;
      this.delay = 10;
      this.operaHiddenFix = '[Processing]';
      if (isOld) {jsMath.Setup.Script('jsMath-old-browsers.js')}
    }
  },

  //
  //  Handle Safari
  //
  Safari: function () {
    if (navigator.appVersion.match(/Safari\//)) {
      jsMath.browser = 'Safari';
      var version = navigator.userAgent.match("Safari/([0-9]+)");
      version = (version)? version[1] : 400;
      for (var i = 0; i < jsMath.TeX.fam.length; i++)
        {if (jsMath.TeX.fam[i]) {jsMath.TeX[jsMath.TeX.fam[i]].dh = .1}}
      jsMath.TeX.axis_height += .05;
      this.allowAbsoluteDelim = version >= 125;
      this.safariIFRAMEbug = version >= 312 && version < 412;
      this.safariImgBug = 1; this.textNodeBug = 1;
      this.buttonCheck = 1;
      this.styleChangeDelay = 1;
    }
  },
  
  //
  //  Handle Konqueror
  //
  Konqueror: function () {
    if (navigator.product && navigator.product.match("Konqueror")) {
      jsMath.browser = 'Konqueror';
      this.allowAbsolute = 0;
      this.allowAbsoluteDelim = 0;
      if (navigator.userAgent.match(/Konqueror\/(\d+)\.(\d+)/)) {
        if (RegExp.$1 < 3 || (RegExp.$1 == 3 && RegExp.$2 < 3)) {
          this.separateSkips = 1;
          this.valignBug = 1;
          jsMath.Setup.Script('jsMath-old-browsers.js');
        }
      }
    }
  }

};

/***************************************************************************/

/*
 *  Implement font check and messages
 */
jsMath.Font = {
  
  fallback: "symbol", // the default fallback method

  // the HTML for the missing font message
  message:    
    '<b>No jsMath TeX fonts found</b> -- using image fonts instead.<br/>\n'
      + 'These may be slow and might not print well.<br/>\n'
      + 'Use the jsMath control panel to get additional information.',
      
  extra_message:
    'Extra TeX fonts not found: <b><span id="jsMath_ExtraFonts"></span></b><br/>'
      + 'Using image fonts instead.  This may be slow and might not print well.<br/>\n'
      + 'Use the jsMath control panel to get additional information.',
  
  /*
   *  Look to see if a font is found.
   *  Check the character in a given position, and see if it is
   *  wider than the usual one in that position.
   */
  Test1: function (name,n,factor,prefix) {
    if (n == null) {n = 0x7C}; if (factor == null) {factor = 2}; if (prefix == null) {prefix = ''}
    var wh1 = jsMath.BBoxFor('<span style="font-family: '+prefix+name+', serif">'+jsMath.TeX[name][n].c+'</span>');
    var wh2 = jsMath.BBoxFor('<span style="font-family: serif">'+jsMath.TeX[name][n].c+'</span>');
    //alert([wh1.w,wh2.w,wh1.h,factor*wh2.w]);
    return (wh1.w > factor*wh2.w && wh1.h != 0);
  },

  Test2: function (name,n,factor,prefix) {
    if (n == null) {n = 0x7C}; if (factor == null) {factor = 2}; if (prefix == null) {prefix = ''}
    var wh1 = jsMath.BBoxFor('<span style="font-family: '+prefix+name+', serif">'+jsMath.TeX[name][n].c+'</span>');
    var wh2 = jsMath.BBoxFor('<span style="font-family: serif">'+jsMath.TeX[name][n].c+'</span>');
    //alert([wh2.w,wh1.w,wh1.h,factor*wh1.w]);
    return (wh2.w > factor*wh1.w && wh1.h != 0);
  },
  
  /*
   *  Check for the new jsMath versions of the fonts (blacker with
   *  different encoding) and if not found, look for old-style fonts.
   *  If they are found, load the BaKoMa encoding information.
   */
  CheckTeX: function () {
    var wh = jsMath.BBoxFor('<span style="font-family: jsMath-cmex10, serif">'+jsMath.TeX.cmex10[1].c+'</span>');
    jsMath.nofonts = ((wh.w*3 > wh.h || wh.h == 0) && !this.Test1('cmr10',null,null,'jsMath-'));
    if (jsMath.nofonts && (navigator.platform != "MacPPC" ||
        jsMath.browser != 'Mozilla' || !jsMath.Browser.VersionAtLeast(1.5))) {
      wh = jsMath.BBoxFor('<span style="font-family: cmex10, serif">'+jsMath.TeX.cmex10[1].c+'</span>');
      jsMath.nofonts = ((wh.w*3 > wh.h || wh.h == 0) && !this.Test1('cmr10'));
      if (!jsMath.nofonts) {jsMath.Setup.Script("jsMath-BaKoMa-fonts.js")}
    }
  },
  
  /*
   *  Check for the availability of TeX fonts.  We do this by looking at
   *  the width and height of a character in the cmex10 font.  The cmex10
   *  font has depth considerably greater than most characters' widths (the
   *  whole font has the depth of the character with greatest depth).  This
   *  is not the case for most fonts, so if we can access cmex10, the
   *  height of a character should be much bigger than the width.
   *  Otherwise, if we don't have cmex10, we'll get a character in another
   *  font with normal height and width.  In this case, we insert a message
   *  pointing the user to the jsMath site, and load one of the fallback
   *  definitions.
   *  
   */
  Check: function () {
    var cookie = jsMath.Controls.cookie;
    this.CheckTeX();
    if (jsMath.nofonts) {
      if (cookie.autofont || cookie.font == 'tex') {
        cookie.font = this.fallback;
        if (cookie.warn) {
          jsMath.nofontMessage = 1;
          cookie.warn = 0; jsMath.Controls.SetCookie(0);
          if (jsMath.window.NoFontMessage) {jsMath.window.NoFontMessage()}
                               else {this.Message(this.message)}
        }
      }
    } else {
      if (cookie.autofont) {cookie.font = 'tex'}
      if (cookie.font == 'tex') return;
    }
    if (jsMath.noImgFonts) {cookie.font = 'unicode'}
    if (cookie.font == 'unicode') {
      var platform = ({Win32: 'pc', MacPPC: 'mac'})[navigator.platform] || 'unix';
      jsMath.Setup.Script('jsMath-fallback-'+platform+'.js');
      jsMath.Box.TeXnonfallback = jsMath.Box.TeX;
      jsMath.Box.TeX = jsMath.Box.TeXfallback;
      return;
    }
    if (jsMath.Browser.waitForImages) {
      jsMath.Script.Push(jsMath.Script,"WaitForImage",jsMath.blank);
    }
    if (cookie.font == 'symbol') {
      jsMath.Setup.Script('jsMath-fallback-symbols.js');
      jsMath.Box.TeXnonfallback = jsMath.Box.TeX;
      jsMath.Box.TeX = jsMath.Box.TeXfallback;
      return;
    }
    jsMath.Img.SetFont({
      cmr10:  ['all'], cmmi10: ['all'], cmsy10: ['all'],
      cmex10: ['all'], cmbx10: ['all'], cmti10: ['all']
    });
    jsMath.Img.LoadFont('cm-fonts');
  },

  /*
   *  The message for when no TeX fonts.  You can eliminate this message
   *  by including
   *  
   *      <script>jsMath = {Font: {Message: function () {}}}</script>
   *
   *  in your HTML file, before loading jsMath.js, if you want.  But this
   *  means the user may not know that he or she can get a better version
   *  of your page.
   */
  Message: function (message) {
    if(jsMath.Element("Warning")) return;
    var div = jsMath.Setup.DIV("Warning",{});
    div.innerHTML = 
      '<center><table><tr><td>'
      + '<div id="jsMath_noFont">' + message
      + '<div style="text-align:left"><span style="float:left; margin: 8px 0px 0px 20px">'
      + '<span onclick="jsMath.Controls.Panel()" title=" Open the jsMath Control Panel " class="link">jsMath Control Panel</span>'
      + '</span><span style="margin: 8px 20px 0px 0px; float:right">'
      + '<span onclick="jsMath.Font.HideMessage()" title=" Remove this font warning message " class="link">Hide this Message</span>'
      + '</span></div><div style="height:6px"></div><br clear="all"/></div>'
      + '<div style="width:22em; height:1px"></div>'
      + '</td></tr></table></center><hr/>';
  },
  
  HideMessage: function () {
    var message = jsMath.Element("Warning");
    if (message) {message.style.display = "none"}
  },
  
  /*
   *  Register an extra font so jsMath knows about it
   */
  Register: function (data) {
    jsMath.Script.Start();
    if (typeof(data) == 'string') {data = {name: data}}
    var fontname = data.name; var name = fontname.replace(/10$/,'');
    var fontfam = jsMath.TeX.fam.length;
    if (data.prefix == null) {data.prefix = ""}
    if (!data.style) {data.style = "font-family: "+data.prefix+fontname+", serif"}
    if (!data.styles) {data.styles = {}}
    if (!data.macros) {data.macros = {}}
    /*
     *  Register font family
     */
    jsMath.TeX.fam[fontfam] = fontname;
    jsMath.TeX.famName[fontname] = fontfam;
    data.macros[name] = ['HandleFont',fontfam];
    jsMath.Add(jsMath.Parser.prototype.macros,data.macros);
    /*
     *  Set up styles
     */
    data.styles['.typeset .'+fontname] = data.style;
    jsMath.Setup.Styles(data.styles);
    jsMath.Script.Push(jsMath.Setup,'TeXfont',fontname);
    /*
     *  Check for font and give message if missing
     */
    var hasTeXfont = !jsMath.nofonts &&
                      data.test(fontname,data.testChar,data.testFactor,data.prefix);
    if (hasTeXfont && jsMath.Controls.cookie.font == 'tex') {
      if (data.tex) {data.tex(fontname,fontfam,data)}
      jsMath.Script.End();
      return;
    }
    if (!hasTeXfont && jsMath.Controls.cookie.warn &&
        jsMath.Controls.cookie.font == 'tex' && !jsMath.nofonts) {
      if (!jsMath.Element("Warning")) this.Message(this.extra_message);
      var extra = jsMath.Element("ExtraFonts");
      if (extra) {
        if (extra.innerHTML != "") {extra.innerHTML += ','}
        extra.innerHTML += " " + data.prefix+fontname;
      }
    }
    if (jsMath.Controls.cookie.font == 'unicode') {
      if (data.fallback) {data.fallback(fontname,fontfam,data)}
      jsMath.Script.End();
      return;
    }
    //  Image fonts
    var font = {}; font[fontname] = ['all'];
    jsMath.Img.SetFont(font);
    jsMath.Img.LoadFont(fontname);
    jsMath.Script.Push(jsMath.Img,'Scale');
    jsMath.Script.Push(jsMath.Img,'UpdateFonts');
    jsMath.Script.End();
  },

  /*
   *  Load a font
   */
  Load: function (name) {jsMath.Setup.Script(this.URL(name))},
  URL: function (name) {return jsMath.Img.root+name+'/def.js'}
  
};

/***************************************************************************/

/*
 *  Implements the jsMath control panel.
 *  Much of the code is in jsMath-controls.html, which is
 *  loaded into a hidden IFRAME on demand
 */
jsMath.Controls = {

  //  Data stored in the jsMath cookie
  cookie: {
    scale: 100,
    font: 'tex', autofont: 1, scaleImg: 0, alpha: 1,
    warn: 1, button: 1, progress: 1, asynch: 0, blank: 0,
    print: 0, keep: '0D'
  },
  
  cookiePath: '/',  // can also set cookieDomain
  
  
  /*
   *  Create the HTML needed for control panel
   */
  Init: function () {
    this.panel = jsMath.Setup.DIV("panel",{display:'none'});
    if (!jsMath.Browser.msieButtonBug) {this.Button()}
      else {setTimeout("jsMath.Controls.Button()",500)}
  },

  /*
   *  Load the control panel
   */
  Panel: function () {
    jsMath.Translate.Cancel();
    if (this.loaded) {this.Main()}
      else {jsMath.Script.delayedLoad(jsMath.root+"jsMath-controls.html")}
  },
  
  /*
   *  Create the control panel button
   */
  Button: function () {
    var button = jsMath.Setup.DIV("button",{});
    button.title = ' Open jsMath Control Panel ';
    button.innerHTML = 'jsMath';
    if (button.offsetWidth < 2*jsMath.em) {button.style.width = "auto"}
    button.onclick = new Function("jsMath.Controls.Panel()");
    if (!this.cookie.button) {button.style.display = "none"}
  },
  
 /*
  *  MSIE doesn't implement position:fixed, so redraw the button on scrolls.
  */
  MoveButton: function () {
    if (!this.button) {this.button = jsMath.Element("button")}
    this.button.style.visibility = "hidden";
    this.button.style.visibility = "visible";
  },

  /*
   *  Get the cookie data from the browser
   *  (for file: references, use url '?' syntax)
   */
  GetCookie: function () {
    var cookies = jsMath.document.cookie;
    if (jsMath.window.location.protocol == 'file:') 
      {cookies = unescape(jsMath.window.location.search.substr(1))}
    if (cookies.match(/jsMath=([^;]*)/)) {
      var data = RegExp.$1.split(/,/);
      for (var i = 0; i < data.length; i++) {
        var x = data[i].match(/(.*):(.*)/);
        if (x[2].match(/^\d+$/)) {x[2] = 1*x[2]} // convert from string
        this.cookie[x[1]] = x[2];
      }
    }
  },
  
  /*
   *  Save the cookie data in the browser
   *  (for file: urls, append data like CGI reference)
   */
  SetCookie: function (warn) {
    var cookie = [];
    for (var id in this.cookie) {cookie[cookie.length] = id + ':' + this.cookie[id]}
    cookie = cookie.join(',');
    if (jsMath.window.location.protocol == 'file:') {
      if (!warn) return;
      this.loaded = 0;
      var href = jsMath.window.location.href;
      href = href.replace(/\?.*/,"") + '?jsMath=' + escape(cookie);
      if (href != jsMath.window.location.href) {jsMath.window.location.replace(href)}
    } else {
      if (this.cookiePath) {cookie += '; path='+this.cookiePath}
      if (this.cookieDomain) {cookie += '; domain='+this.cookieDomain}
      if (this.cookie.keep != '0D') {
        var ms = {
          D: 1000*60*60*24,
          W: 1000*60*60*24*7,
          M: 1000*60*60*24*30,
          Y: 1000*60*60*24*365
        };
        var exp = new Date;
        exp.setTime(exp.getTime() +
            this.cookie.keep.substr(0,1) * ms[this.cookie.keep.substr(1,1)]);
        cookie += '; expires=' + exp.toGMTString();
      }
      jsMath.document.cookie = 'jsMath='+cookie;
      var cookies = jsMath.document.cookie;
      if (warn && !cookies.match(/jsMath=/))
        {alert("Cookies must be enabled in order to save jsMath options")}
    }
  }

};

/***************************************************************************/

/*
 *  Implements the actions for clicking and double-clicking
 *  on math formulas
 */
jsMath.Click = {
  
  /*
   *  Handle clicking on math to get control panel
   */
  CheckClick: function (event) {
    if (!event) {event = jsMath.window.event}
    if (event.altKey) jsMath.Controls.Panel();
  },
  
  /*
   *  Handle double-click for seeing TeX code
   */

  CheckDblClick: function (event) {
    if (!event) {event = jsMath.window.event}
    if (!jsMath.Click.DblClick) {
      jsMath.Extension.Require('double-click',1);
      // Firefox clears the event, so copy it
      var tmpEvent = event; event = {};
      for (var id in tmpEvent) {event[id] = tmpEvent[id]}
    }
    jsMath.Script.Push(jsMath.Click,'DblClick',[event,this.alt]);
  }
  
};

/***************************************************************************/

/*
 *  The TeX font information
 */
jsMath.TeX = {

  //
  //  The TeX font parameters
  //
  thinmuskip:   3/18,
  medmuskip:    4/18,
  thickmuskip:  5/18,

  x_height:    .430554,
  quad:        1,
  num1:        .676508,
  num2:        .393732,
  num3:        .44373,
  denom1:      .685951,
  denom2:      .344841,
  sup1:        .412892,
  sup2:        .362892,
  sup3:        .288888,
  sub1:        .15,
  sub2:        .247217,
  sup_drop:    .386108,
  sub_drop:    .05,
  delim1:     2.39,
  delim2:     1.0,
  axis_height: .25,
  default_rule_thickness: .04,
  big_op_spacing1:  .111111,
  big_op_spacing2:  .166666,
  big_op_spacing3:  .2,
  big_op_spacing4:  .6,
  big_op_spacing5:  .1,

  integer:          6553.6,     // conversion of em's to TeX internal integer
  scriptspace:         .05,
  nulldelimiterspace:  .12,
  delimiterfactor:     901,
  delimitershortfall:   .5,
  scale:                 1,     //  scaling factor for font dimensions
 
  //  The TeX math atom types (see Appendix G of the TeXbook)
  atom: ['ord', 'op', 'bin', 'rel', 'open', 'close', 'punct', 'ord'],

  //  The TeX font families
  fam: ['cmr10','cmmi10','cmsy10','cmex10','cmti10','','cmbx10',''],
  famName: {cmr10:0, cmmi10:1, cmsy10:2, cmex10:3, cmti10:4, cmbx10:6},

  //  Encoding used by jsMath fonts
  encoding: [
    '&#xC0;', '&#xC1;', '&#xC2;', '&#xC3;', '&#xC4;', '&#xC5;', '&#xC6;', '&#xC7;',
    '&#xC8;', '&#xC9;', '&#xCA;', '&#xCB;', '&#xCC;', '&#xCD;', '&#xCE;', '&#xCF;',

    '&#xB0;', '&#xD1;', '&#xD2;', '&#xD3;', '&#xD4;', '&#xD5;', '&#xD6;', '&#xB7;',
    '&#xD8;', '&#xD9;', '&#xDA;', '&#xDB;', '&#xDC;', '&#xB5;', '&#xB6;', '&#xDF;',

    '&#xEF;', '!', '&#x22;', '#', '$', '%', '&#x26;', '&#x27;',
    '(', ')', '*', '+', ',', '-', '.', '/',

    '0', '1', '2', '3', '4', '5', '6', '7',
    '8', '9', ':', ';', '&#x3C;', '=', '&#x3E;', '?',

    '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
    'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',

    'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
    'X', 'Y', 'Z', '[', '&#x5C;', ']', '^', '_',

    '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
    'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',

    'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
    'x', 'y', 'z', '{', '|', '}', '&#x7E;', '&#xFF;'
  ],

  /*
   *  The following are the TeX font mappings and metrics.  The metric
   *  information comes directly from the TeX .tfm files.  Browser-specific
   *  adjustments are made to these tables in the Browser.Init() routine
   */
  cmr10: [
    [0.625,0.683], [0.833,0.683], [0.778,0.683], [0.694,0.683],
    [0.667,0.683], [0.75,0.683], [0.722,0.683], [0.778,0.683],
    [0.722,0.683], [0.778,0.683], [0.722,0.683],
    [0.583,0.694,0,{ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 14, '108': 15}}],
    [0.556,0.694], [0.556,0.694], [0.833,0.694], [0.833,0.694],

    [0.278,0.431], [0.306,0.431,0.194], [0.5,0.694], [0.5,0.694],
    [0.5,0.628], [0.5,0.694], [0.5,0.568], [0.75,0.694],
    [0.444,0,0.17], [0.5,0.694], [0.722,0.431], [0.778,0.431],
    [0.5,0.528,0.0972], [0.903,0.683], [1.01,0.683], [0.778,0.732,0.0486],

    [0.278,0.431,0,{krn: {'108': -0.278, '76': -0.319}}],
    [0.278,0.694,0,{lig: {'96': 60}}],
    [0.5,0.694], [0.833,0.694,0.194], [0.5,0.75,0.0556],
    [0.833,0.75,0.0556], [0.778,0.694],
    [0.278,0.694,0,{krn: {'63': 0.111, '33': 0.111}, lig: {'39': 34}}],
    [0.389,0.75,0.25], [0.389,0.75,0.25], [0.5,0.75],
    [0.778,0.583,0.0833], [0.278,0.106,0.194],
    [0.333,0.431,0,{lig: {'45': 123}}],
    [0.278,0.106], [0.5,0.75,0.25],

    [0.5,0.644], [0.5,0.644], [0.5,0.644], [0.5,0.644],
    [0.5,0.644], [0.5,0.644], [0.5,0.644], [0.5,0.644],
    [0.5,0.644], [0.5,0.644], [0.278,0.431], [0.278,0.431,0.194],
    [0.278,0.5,0.194], [0.778,0.367,-0.133], [0.472,0.5,0.194],
    [0.472,0.694,0,{lig: {'96': 62}}],

    [0.778,0.694],
    [0.75,0.683,0,{krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}}],
    [0.708,0.683], [0.722,0.683],
    [0.764,0.683,0,{krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}}],
    [0.681,0.683],
    [0.653,0.683,0,{krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}}],
    [0.785,0.683], [0.75,0.683], [0.361,0.683,0,{krn: {'73': 0.0278}}],
    [0.514,0.683],
    [0.778,0.683,0,{krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}}],
    [0.625,0.683,0,{krn: {'84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}}],
    [0.917,0.683], [0.75,0.683],
    [0.778,0.683,0,{krn: {'88': -0.0278, '87': -0.0278, '65': -0.0278, '86': -0.0278, '89': -0.0278}}],

    [0.681,0.683,0,{krn: {'65': -0.0833, '111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}}],
    [0.778,0.683,0.194],
    [0.736,0.683,0,{krn: {'116': -0.0278, '67': -0.0278, '79': -0.0278, '71': -0.0278, '85': -0.0278, '81': -0.0278, '84': -0.0833, '89': -0.0833, '86': -0.111, '87': -0.111}}],
    [0.556,0.683],
    [0.722,0.683,0,{krn: {'121': -0.0278, '101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}}],
    [0.75,0.683],
    [0.75,0.683,0,{ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}}],
    [1.03,0.683,0,{ic: 0.0139, krn: {'111': -0.0833, '101': -0.0833, '117': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.111, '79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}}],
    [0.75,0.683,0,{krn: {'79': -0.0278, '67': -0.0278, '71': -0.0278, '81': -0.0278}}],
    [0.75,0.683,0,{ic: 0.025, krn: {'101': -0.0833, '111': -0.0833, '114': -0.0833, '97': -0.0833, '65': -0.0833, '117': -0.0833}}],
    [0.611,0.683], [0.278,0.75,0.25], [0.5,0.694],
    [0.278,0.75,0.25], [0.5,0.694], [0.278,0.668],

    [0.278,0.694,0,{lig: {'96': 92}}],
    [0.5,0.431,0,{krn: {'118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}}],
    [0.556,0.694,0,{krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}}],
    [0.444,0.431,0,{krn: {'104': -0.0278, '107': -0.0278}}],
    [0.556,0.694], [0.444,0.431],
    [0.306,0.694,0,{ic: 0.0778, krn: {'39': 0.0778, '63': 0.0778, '33': 0.0778, '41': 0.0778, '93': 0.0778}, lig: {'105': 12, '102': 11, '108': 13}}],
    [0.5,0.431,0.194,{ic: 0.0139, krn: {'106': 0.0278}}],
    [0.556,0.694,0,{krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}}],
    [0.278,0.668], [0.306,0.668,0.194],
    [0.528,0.694,0,{krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}}],
    [0.278,0.694],
    [0.833,0.431,0,{krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}}],
    [0.556,0.431,0,{krn: {'116': -0.0278, '117': -0.0278, '98': -0.0278, '121': -0.0278, '118': -0.0278, '119': -0.0278}}],
    [0.5,0.431,0,{krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}}],

    [0.556,0.431,0.194,{krn: {'101': 0.0278, '111': 0.0278, '120': -0.0278, '100': 0.0278, '99': 0.0278, '113': 0.0278, '118': -0.0278, '106': 0.0556, '121': -0.0278, '119': -0.0278}}],
    [0.528,0.431,0.194], [0.392,0.431], [0.394,0.431],
    [0.389,0.615,0,{krn: {'121': -0.0278, '119': -0.0278}}],
    [0.556,0.431,0,{krn: {'119': -0.0278}}],
    [0.528,0.431,0,{ic: 0.0139, krn: {'97': -0.0556, '101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}}],
    [0.722,0.431,0,{ic: 0.0139, krn: {'101': -0.0278, '97': -0.0278, '111': -0.0278, '99': -0.0278}}],
    [0.528,0.431],
    [0.528,0.431,0.194,{ic: 0.0139, krn: {'111': -0.0278, '101': -0.0278, '97': -0.0278, '46': -0.0833, '44': -0.0833}}],
    [0.444,0.431], [0.5,0.431,0,{ic: 0.0278, lig: {'45': 124}}],
    [1,0.431,0,{ic: 0.0278}], [0.5,0.694], [0.5,0.668], [0.5,0.668]
  ],
  
  cmmi10: [
    [0.615,0.683,0,{ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}}],
    [0.833,0.683,0,{krn: {'127': 0.167}}],
    [0.763,0.683,0,{ic: 0.0278, krn: {'127': 0.0833}}],
    [0.694,0.683,0,{krn: {'127': 0.167}}],
    [0.742,0.683,0,{ic: 0.0757, krn: {'127': 0.0833}}],
    [0.831,0.683,0,{ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}}],
    [0.78,0.683,0,{ic: 0.0576, krn: {'127': 0.0833}}],
    [0.583,0.683,0,{ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0556}}],
    [0.667,0.683,0,{krn: {'127': 0.0833}}],
    [0.612,0.683,0,{ic: 0.11, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}}],
    [0.772,0.683,0,{ic: 0.0502, krn: {'127': 0.0833}}],
    [0.64,0.431,0,{ic: 0.0037, krn: {'127': 0.0278}}],
    [0.566,0.694,0.194,{ic: 0.0528, krn: {'127': 0.0833}}],
    [0.518,0.431,0.194,{ic: 0.0556}],
    [0.444,0.694,0,{ic: 0.0378, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}}],
    [0.406,0.431,0,{krn: {'127': 0.0556}}],

    [0.438,0.694,0.194,{ic: 0.0738, krn: {'127': 0.0833}}],
    [0.497,0.431,0.194,{ic: 0.0359, krn: {'127': 0.0556}}],
    [0.469,0.694,0,{ic: 0.0278, krn: {'127': 0.0833}}],
    [0.354,0.431,0,{krn: {'127': 0.0556}}],
    [0.576,0.431], [0.583,0.694],
    [0.603,0.431,0.194,{krn: {'127': 0.0278}}],
    [0.494,0.431,0,{ic: 0.0637, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}}],
    [0.438,0.694,0.194,{ic: 0.046, krn: {'127': 0.111}}],
    [0.57,0.431,0,{ic: 0.0359}],
    [0.517,0.431,0.194,{krn: {'127': 0.0833}}],
    [0.571,0.431,0,{ic: 0.0359, krn: {'59': -0.0556, '58': -0.0556}}],
    [0.437,0.431,0,{ic: 0.113, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0278}}],
    [0.54,0.431,0,{ic: 0.0359, krn: {'127': 0.0278}}],
    [0.596,0.694,0.194,{krn: {'127': 0.0833}}],
    [0.626,0.431,0.194,{krn: {'127': 0.0556}}],

    [0.651,0.694,0.194,{ic: 0.0359, krn: {'127': 0.111}}],
    [0.622,0.431,0,{ic: 0.0359}],
    [0.466,0.431,0,{krn: {'127': 0.0833}}],
    [0.591,0.694,0,{krn: {'127': 0.0833}}],
    [0.828,0.431,0,{ic: 0.0278}],
    [0.517,0.431,0.194,{krn: {'127': 0.0833}}],
    [0.363,0.431,0.0972,{ic: 0.0799, krn: {'127': 0.0833}}],
    [0.654,0.431,0.194,{krn: {'127': 0.0833}}],
    [1,0.367,-0.133], [1,0.367,-0.133], [1,0.367,-0.133], [1,0.367,-0.133], 
    [0.278,0.464,-0.0363], [0.278,0.464,-0.0363], [0.5,0.465,-0.0347], [0.5,0.465,-0.0347],

    [0.5,0.431], [0.5,0.431], [0.5,0.431], [0.5,0.431,0.194],
    [0.5,0.431,0.194], [0.5,0.431,0.194], [0.5,0.644], [0.5,0.431,0.194],
    [0.5,0.644], [0.5,0.431,0.194], [0.278,0.106], [0.278,0.106,0.194],
    [0.778,0.539,0.0391],
    [0.5,0.75,0.25,{krn: {'1': -0.0556, '65': -0.0556, '77': -0.0556, '78': -0.0556, '89': 0.0556, '90': -0.0556}}],
    [0.778,0.539,0.0391], [0.5,0.465,-0.0347],

    [0.531,0.694,0,{ic: 0.0556, krn: {'127': 0.0833}}],
    [0.75,0.683,0,{krn: {'127': 0.139}}],
    [0.759,0.683,0,{ic: 0.0502, krn: {'127': 0.0833}}],
    [0.715,0.683,0,{ic: 0.0715, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}}],
    [0.828,0.683,0,{ic: 0.0278, krn: {'127': 0.0556}}],
    [0.738,0.683,0,{ic: 0.0576, krn: {'127': 0.0833}}],
    [0.643,0.683,0,{ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}}],
    [0.786,0.683,0,{krn: {'127': 0.0833}}],
    [0.831,0.683,0,{ic: 0.0812, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}}],
    [0.44,0.683,0,{ic: 0.0785, krn: {'127': 0.111}}],
    [0.555,0.683,0,{ic: 0.0962, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.167}}],
    [0.849,0.683,0,{ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0556}}],
    [0.681,0.683,0,{krn: {'127': 0.0278}}],
    [0.97,0.683,0,{ic: 0.109, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}}],
    [0.803,0.683,0,{ic: 0.109, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}}],
    [0.763,0.683,0,{ic: 0.0278, krn: {'127': 0.0833}}],

    [0.642,0.683,0,{ic: 0.139, krn: {'61': -0.0556, '59': -0.111, '58': -0.111, '127': 0.0833}}],
    [0.791,0.683,0.194,{krn: {'127': 0.0833}}],
    [0.759,0.683,0,{ic: 0.00773, krn: {'127': 0.0833}}],
    [0.613,0.683,0,{ic: 0.0576, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}}],
    [0.584,0.683,0,{ic: 0.139, krn: {'61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}}],
    [0.683,0.683,0,{ic: 0.109, krn: {'59': -0.111, '58': -0.111, '61': -0.0556, '127': 0.0278}}],
    [0.583,0.683,0,{ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}}],
    [0.944,0.683,0,{ic: 0.139, krn: {'59': -0.167, '58': -0.167, '61': -0.111}}],
    [0.828,0.683,0,{ic: 0.0785, krn: {'61': -0.0833, '61': -0.0278, '59': -0.0556, '58': -0.0556, '127': 0.0833}}],
    [0.581,0.683,0,{ic: 0.222, krn: {'59': -0.167, '58': -0.167, '61': -0.111}}],
    [0.683,0.683,0,{ic: 0.0715, krn: {'61': -0.0556, '59': -0.0556, '58': -0.0556, '127': 0.0833}}],
    [0.389,0.75], [0.389,0.694,0.194], [0.389,0.694,0.194],
    [1,0.358,-0.142], [1,0.358,-0.142],

    [0.417,0.694,0,{krn: {'127': 0.111}}],
    [0.529,0.431], [0.429,0.694], [0.433,0.431,0,{krn: {'127': 0.0556}}],
    [0.52,0.694,0,{krn: {'89': 0.0556, '90': -0.0556, '106': -0.111, '102': -0.167, '127': 0.167}}],
    [0.466,0.431,0,{krn: {'127': 0.0556}}],
    [0.49,0.694,0.194,{ic: 0.108, krn: {'59': -0.0556, '58': -0.0556, '127': 0.167}}],
    [0.477,0.431,0.194,{ic: 0.0359, krn: {'127': 0.0278}}],
    [0.576,0.694,0,{krn: {'127': -0.0278}}], [0.345,0.66],
    [0.412,0.66,0.194,{ic: 0.0572, krn: {'59': -0.0556, '58': -0.0556}}],
    [0.521,0.694,0,{ic: 0.0315}], [0.298,0.694,0,{ic: 0.0197, krn: {'127': 0.0833}}],
    [0.878,0.431], [0.6,0.431], [0.485,0.431,0,{krn: {'127': 0.0556}}],

    [0.503,0.431,0.194,{krn: {'127': 0.0833}}],
    [0.446,0.431,0.194,{ic: 0.0359, krn: {'127': 0.0833}}],
    [0.451,0.431,0,{ic: 0.0278, krn: {'59': -0.0556, '58': -0.0556, '127': 0.0556}}],
    [0.469,0.431,0,{krn: {'127': 0.0556}}], [0.361,0.615,0,{krn: {'127': 0.0833}}],
    [0.572,0.431,0,{krn: {'127': 0.0278}}],
    [0.485,0.431,0,{ic: 0.0359, krn: {'127': 0.0278}}],
    [0.716,0.431,0,{ic: 0.0269, krn: {'127': 0.0833}}],
    [0.572,0.431,0,{krn: {'127': 0.0278}}],
    [0.49,0.431,0.194,{ic: 0.0359, krn: {'127': 0.0556}}],
    [0.465,0.431,0,{ic: 0.044, krn: {'127': 0.0556}}],
    [0.322,0.431,0,{krn: {'127': 0.0278}}],
    [0.384,0.431,0.194,{krn: {'127': 0.0833}}],
    [0.636,0.431,0.194,{krn: {'127': 0.111}}],
    [0.5,0.714,0,{ic: 0.154}], [0.278,0.694,0,{ic: 0.399}]
  ],

  cmsy10: [
    [0.778,0.583,0.0833], [0.278,0.444,-0.0556], [0.778,0.583,0.0833],
    [0.5,0.465,-0.0347], [0.778,0.583,0.0833], [0.5,0.444,-0.0556],
    [0.778,0.583,0.0833], [0.778,0.583,0.0833], [0.778,0.583,0.0833],
    [0.778,0.583,0.0833], [0.778,0.583,0.0833], [0.778,0.583,0.0833],
    [0.778,0.583,0.0833], [1,0.694,0.194], [0.5,0.444,-0.0556], [0.5,0.444,-0.0556],

    [0.778,0.464,-0.0363], [0.778,0.464,-0.0363], [0.778,0.636,0.136],
    [0.778,0.636,0.136], [0.778,0.636,0.136], [0.778,0.636,0.136],
    [0.778,0.636,0.136], [0.778,0.636,0.136], [0.778,0.367,-0.133],
    [0.778,0.483,-0.0169], [0.778,0.539,0.0391], [0.778,0.539,0.0391],
    [1,0.539,0.0391], [1,0.539,0.0391], [0.778,0.539,0.0391], [0.778,0.539,0.0391],

    [1,0.367,-0.133], [1,0.367,-0.133], [0.5,0.694,0.194], [0.5,0.694,0.194],
    [1,0.367,-0.133], [1,0.694,0.194], [1,0.694,0.194], [0.778,0.464,-0.0363],
    [1,0.367,-0.133], [1,0.367,-0.133], [0.611,0.694,0.194], [0.611,0.694,0.194],
    [1,0.367,-0.133], [1,0.694,0.194], [1,0.694,0.194], [0.778,0.431],

    [0.275,0.556], [1,0.431], [0.667,0.539,0.0391], [0.667,0.539,0.0391],
    [0.889,0.694,0.194], [0.889,0.694,0.194], [0,0.694,0.194], [0,0.367,-0.133],
    [0.556,0.694], [0.556,0.694], [0.667,0.431], [0.5,0.75,0.0556],
    [0.722,0.694], [0.722,0.694], [0.778,0.694], [0.778,0.694],

    [0.611,0.694], [0.798,0.683,0,{krn: {'48': 0.194}}],
    [0.657,0.683,0,{ic: 0.0304, krn: {'48': 0.139}}],
    [0.527,0.683,0,{ic: 0.0583, krn: {'48': 0.139}}],
    [0.771,0.683,0,{ic: 0.0278, krn: {'48': 0.0833}}],
    [0.528,0.683,0,{ic: 0.0894, krn: {'48': 0.111}}],
    [0.719,0.683,0,{ic: 0.0993, krn: {'48': 0.111}}],
    [0.595,0.683,0.0972,{ic: 0.0593, krn: {'48': 0.111}}],
    [0.845,0.683,0,{ic: 0.00965, krn: {'48': 0.111}}],
    [0.545,0.683,0,{ic: 0.0738, krn: {'48': 0.0278}}],
    [0.678,0.683,0.0972,{ic: 0.185, krn: {'48': 0.167}}],
    [0.762,0.683,0,{ic: 0.0144, krn: {'48': 0.0556}}],
    [0.69,0.683,0,{krn: {'48': 0.139}}], [1.2,0.683,0,{krn: {'48': 0.139}}],
    [0.82,0.683,0,{ic: 0.147, krn: {'48': 0.0833}}],
    [0.796,0.683,0,{ic: 0.0278, krn: {'48': 0.111}}],

    [0.696,0.683,0,{ic: 0.0822, krn: {'48': 0.0833}}],
    [0.817,0.683,0.0972,{krn: {'48': 0.111}}],
    [0.848,0.683,0,{krn: {'48': 0.0833}}],
    [0.606,0.683,0,{ic: 0.075, krn: {'48': 0.139}}],
    [0.545,0.683,0,{ic: 0.254, krn: {'48': 0.0278}}],
    [0.626,0.683,0,{ic: 0.0993, krn: {'48': 0.0833}}],
    [0.613,0.683,0,{ic: 0.0822, krn: {'48': 0.0278}}],
    [0.988,0.683,0,{ic: 0.0822, krn: {'48': 0.0833}}],
    [0.713,0.683,0,{ic: 0.146, krn: {'48': 0.139}}],
    [0.668,0.683,0.0972,{ic: 0.0822, krn: {'48': 0.0833}}],
    [0.725,0.683,0,{ic: 0.0794, krn: {'48': 0.139}}],
    [0.667,0.556], [0.667,0.556], [0.667,0.556], [0.667,0.556], [0.667,0.556],

    [0.611,0.694], [0.611,0.694], [0.444,0.75,0.25], [0.444,0.75,0.25],
    [0.444,0.75,0.25], [0.444,0.75,0.25], [0.5,0.75,0.25], [0.5,0.75,0.25],
    [0.389,0.75,0.25], [0.389,0.75,0.25], [0.278,0.75,0.25], [0.5,0.75,0.25],
    [0.5,0.75,0.25], [0.611,0.75,0.25], [0.5,0.75,0.25], [0.278,0.694,0.194],

    [0.833,0.04,0.96], [0.75,0.683], [0.833,0.683], [0.417,0.694,0.194,{ic: 0.111}],
    [0.667,0.556], [0.667,0.556], [0.778,0.636,0.136], [0.778,0.636,0.136],
    [0.444,0.694,0.194], [0.444,0.694,0.194], [0.444,0.694,0.194],
    [0.611,0.694,0.194], [0.778,0.694,0.13], [0.778,0.694,0.13],
    [0.778,0.694,0.13], [0.778,0.694,0.13]
  ],

  cmex10: [
    [0.458,0.04,1.16,{n: 16}], [0.458,0.04,1.16,{n: 17}],
    [0.417,0.04,1.16,{n: 104}], [0.417,0.04,1.16,{n: 105}],
    [0.472,0.04,1.16,{n: 106}], [0.472,0.04,1.16,{n: 107}],
    [0.472,0.04,1.16,{n: 108}], [0.472,0.04,1.16,{n: 109}],
    [0.583,0.04,1.16,{n: 110}], [0.583,0.04,1.16,{n: 111}],
    [0.472,0.04,1.16,{n: 68}], [0.472,0.04,1.16,{n: 69}],
    [0.333,0,0.6,{delim: {rep: 12}}], [0.556,0,0.6,{delim: {rep: 13}}],
    [0.578,0.04,1.16,{n: 46}], [0.578,0.04,1.16,{n: 47}],

    [0.597,0.04,1.76,{n: 18}], [0.597,0.04,1.76,{n: 19}],
    [0.736,0.04,2.36,{n: 32}], [0.736,0.04,2.36,{n: 33}],
    [0.528,0.04,2.36,{n: 34}], [0.528,0.04,2.36,{n: 35}],
    [0.583,0.04,2.36,{n: 36}], [0.583,0.04,2.36,{n: 37}],
    [0.583,0.04,2.36,{n: 38}], [0.583,0.04,2.36,{n: 39}],
    [0.75,0.04,2.36,{n: 40}], [0.75,0.04,2.36,{n: 41}],
    [0.75,0.04,2.36,{n: 42}], [0.75,0.04,2.36,{n: 43}],
    [1.04,0.04,2.36,{n: 44}], [1.04,0.04,2.36,{n: 45}],

    [0.792,0.04,2.96,{n: 48}], [0.792,0.04,2.96,{n: 49}],
    [0.583,0.04,2.96,{n: 50}], [0.583,0.04,2.96,{n: 51}],
    [0.639,0.04,2.96,{n: 52}], [0.639,0.04,2.96,{n: 53}],
    [0.639,0.04,2.96,{n: 54}], [0.639,0.04,2.96,{n: 55}],
    [0.806,0.04,2.96,{n: 56}], [0.806,0.04,2.96,{n: 57}],
    [0.806,0.04,2.96], [0.806,0.04,2.96],
    [1.28,0.04,2.96], [1.28,0.04,2.96],
    [0.811,0.04,1.76,{n: 30}], [0.811,0.04,1.76,{n: 31}],

    [0.875,0.04,1.76,{delim: {top: 48, bot: 64, rep: 66}}],
    [0.875,0.04,1.76,{delim: {top: 49, bot: 65, rep: 67}}],
    [0.667,0.04,1.76,{delim: {top: 50, bot: 52, rep: 54}}],
    [0.667,0.04,1.76,{delim: {top: 51, bot: 53, rep: 55}}],
    [0.667,0.04,1.76,{delim: {bot: 52, rep: 54}}],
    [0.667,0.04,1.76,{delim: {bot: 53, rep: 55}}],
    [0.667,0,0.6,{delim: {top: 50, rep: 54}}],
    [0.667,0,0.6,{delim: {top: 51, rep: 55}}],
    [0.889,0,0.9,{delim: {top: 56, mid: 60, bot: 58, rep: 62}}],
    [0.889,0,0.9,{delim: {top: 57, mid: 61, bot: 59, rep: 62}}],
    [0.889,0,0.9,{delim: {top: 56, bot: 58, rep: 62}}],
    [0.889,0,0.9,{delim: {top: 57, bot: 59, rep: 62}}],
    [0.889,0,1.8,{delim: {rep: 63}}],
    [0.889,0,1.8,{delim: {rep: 119}}],
    [0.889,0,0.3,{delim: {rep: 62}}],
    [0.667,0,0.6,{delim: {top: 120, bot: 121, rep: 63}}],

    [0.875,0.04,1.76,{delim: {top: 56, bot: 59, rep: 62}}],
    [0.875,0.04,1.76,{delim: {top: 57, bot: 58, rep: 62}}],
    [0.875,0,0.6,{delim: {rep: 66}}], [0.875,0,0.6,{delim: {rep: 67}}],
    [0.611,0.04,1.76,{n: 28}], [0.611,0.04,1.76,{n: 29}],
    [0.833,0,1,{n: 71}], [1.11,0.1,1.5], [0.472,0,1.11,{ic: 0.194, n: 73}],
    [0.556,0,2.22,{ic: 0.444}], [1.11,0,1,{n: 75}], [1.51,0.1,1.5],
    [1.11,0,1,{n: 77}], [1.51,0.1,1.5], [1.11,0,1,{n: 79}], [1.51,0.1,1.5],

    [1.06,0,1,{n: 88}], [0.944,0,1,{n: 89}], [0.472,0,1.11,{ic: 0.194, n: 90}],
    [0.833,0,1,{n: 91}], [0.833,0,1,{n: 92}], [0.833,0,1,{n: 93}],
    [0.833,0,1,{n: 94}], [0.833,0,1,{n: 95}], [1.44,0.1,1.5],
    [1.28,0.1,1.5], [0.556,0,2.22,{ic: 0.444}], [1.11,0.1,1.5],
    [1.11,0.1,1.5], [1.11,0.1,1.5], [1.11,0.1,1.5], [1.11,0.1,1.5],

    [0.944,0,1,{n: 97}], [1.28,0.1,1.5], [0.556,0.722,0,{n: 99}],
    [1,0.75,0,{n: 100}], [1.44,0.75], [0.556,0.722,0,{n: 102}],
    [1,0.75,0,{n: 103}], [1.44,0.75], [0.472,0.04,1.76,{n: 20}],
    [0.472,0.04,1.76,{n: 21}], [0.528,0.04,1.76,{n: 22}],
    [0.528,0.04,1.76,{n: 23}], [0.528,0.04,1.76,{n: 24}],
    [0.528,0.04,1.76,{n: 25}], [0.667,0.04,1.76,{n: 26}],
    [0.667,0.04,1.76,{n: 27}],

    [1,0.04,1.16,{n: 113}], [1,0.04,1.76,{n: 114}], [1,0.04,2.36,{n: 115}],
    [1,0.04,2.96,{n: 116}], [1.06,0,1.8,{delim: {top: 118, bot: 116, rep: 117}}],
    [1.06,0,0.6], [1.06,0.04,0.56],
    [0.778,0,0.6,{delim: {top: 126, bot: 127, rep: 119}}],
    [0.667,0,0.6,{delim: {top: 120, rep: 63}}],
    [0.667,0,0.6,{delim: {bot: 121, rep: 63}}],
    [0.45,0.12], [0.45,0.12], [0.45,0.12], [0.45,0.12],
    [0.778,0,0.6,{delim: {top: 126, rep: 119}}],
    [0.778,0,0.6,{delim: {bot: 127, rep: 119}}]
  ],
  
  cmti10: [
    [0.627,0.683,0,{ic: 0.133}], [0.818,0.683], [0.767,0.683,0,{ic: 0.094}],
    [0.692,0.683], [0.664,0.683,0,{ic: 0.153}], [0.743,0.683,0,{ic: 0.164}],
    [0.716,0.683,0,{ic: 0.12}], [0.767,0.683,0,{ic: 0.111}],
    [0.716,0.683,0,{ic: 0.0599}], [0.767,0.683,0,{ic: 0.111}],
    [0.716,0.683,0,{ic: 0.103}],
    [0.613,0.694,0.194,{ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 14, '108': 15}}],
    [0.562,0.694,0.194,{ic: 0.103}], [0.588,0.694,0.194,{ic: 0.103}],
    [0.882,0.694,0.194,{ic: 0.103}], [0.894,0.694,0.194,{ic: 0.103}],

    [0.307,0.431,0,{ic: 0.0767}], [0.332,0.431,0.194,{ic: 0.0374}],
    [0.511,0.694], [0.511,0.694,0,{ic: 0.0969}], [0.511,0.628,0,{ic: 0.083}],
    [0.511,0.694,0,{ic: 0.108}], [0.511,0.562,0,{ic: 0.103}], [0.831,0.694],
    [0.46,0,0.17], [0.537,0.694,0.194,{ic: 0.105}], [0.716,0.431,0,{ic: 0.0751}],
    [0.716,0.431,0,{ic: 0.0751}], [0.511,0.528,0.0972,{ic: 0.0919}],
    [0.883,0.683,0,{ic: 0.12}], [0.985,0.683,0,{ic: 0.12}],
    [0.767,0.732,0.0486,{ic: 0.094}],

    [0.256,0.431,0,{krn: {'108': -0.256, '76': -0.321}}],
    [0.307,0.694,0,{ic: 0.124, lig: {'96': 60}}],
    [0.514,0.694,0,{ic: 0.0696}], [0.818,0.694,0.194,{ic: 0.0662}],
    [0.769,0.694], [0.818,0.75,0.0556,{ic: 0.136}],
    [0.767,0.694,0,{ic: 0.0969}],
    [0.307,0.694,0,{ic: 0.124, krn: {'63': 0.102, '33': 0.102}, lig: {'39': 34}}],
    [0.409,0.75,0.25,{ic: 0.162}], [0.409,0.75,0.25,{ic: 0.0369}],
    [0.511,0.75,0,{ic: 0.149}], [0.767,0.562,0.0567,{ic: 0.0369}],
    [0.307,0.106,0.194], [0.358,0.431,0,{ic: 0.0283, lig: {'45': 123}}],
    [0.307,0.106], [0.511,0.75,0.25,{ic: 0.162}],

    [0.511,0.644,0,{ic: 0.136}], [0.511,0.644,0,{ic: 0.136}],
    [0.511,0.644,0,{ic: 0.136}], [0.511,0.644,0,{ic: 0.136}],
    [0.511,0.644,0.194,{ic: 0.136}], [0.511,0.644,0,{ic: 0.136}],
    [0.511,0.644,0,{ic: 0.136}], [0.511,0.644,0.194,{ic: 0.136}],
    [0.511,0.644,0,{ic: 0.136}], [0.511,0.644,0,{ic: 0.136}],
    [0.307,0.431,0,{ic: 0.0582}], [0.307,0.431,0.194,{ic: 0.0582}],
    [0.307,0.5,0.194,{ic: 0.0756}], [0.767,0.367,-0.133,{ic: 0.0662}],
    [0.511,0.5,0.194], [0.511,0.694,0,{ic: 0.122, lig: {'96': 62}}],

    [0.767,0.694,0,{ic: 0.096}],
    [0.743,0.683,0,{krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}],
    [0.704,0.683,0,{ic: 0.103}], [0.716,0.683,0,{ic: 0.145}],
    [0.755,0.683,0,{ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}}],
    [0.678,0.683,0,{ic: 0.12}],
    [0.653,0.683,0,{ic: 0.133, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}}],
    [0.774,0.683,0,{ic: 0.0872}], [0.743,0.683,0,{ic: 0.164}],
    [0.386,0.683,0,{ic: 0.158}], [0.525,0.683,0,{ic: 0.14}],
    [0.769,0.683,0,{ic: 0.145, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}}],
    [0.627,0.683,0,{krn: {'84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}],
    [0.897,0.683,0,{ic: 0.164}], [0.743,0.683,0,{ic: 0.164}],
    [0.767,0.683,0,{ic: 0.094, krn: {'88': -0.0256, '87': -0.0256, '65': -0.0256, '86': -0.0256, '89': -0.0256}}],

    [0.678,0.683,0,{ic: 0.103, krn: {'65': -0.0767}}],
    [0.767,0.683,0.194,{ic: 0.094}],
    [0.729,0.683,0,{ic: 0.0387, krn: {'110': -0.0256, '108': -0.0256, '114': -0.0256, '117': -0.0256, '109': -0.0256, '116': -0.0256, '105': -0.0256, '67': -0.0256, '79': -0.0256, '71': -0.0256, '104': -0.0256, '98': -0.0256, '85': -0.0256, '107': -0.0256, '118': -0.0256, '119': -0.0256, '81': -0.0256, '84': -0.0767, '89': -0.0767, '86': -0.102, '87': -0.102, '101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}],
    [0.562,0.683,0,{ic: 0.12}],
    [0.716,0.683,0,{ic: 0.133, krn: {'121': -0.0767, '101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}}],
    [0.743,0.683,0,{ic: 0.164}],
    [0.743,0.683,0,{ic: 0.184, krn: {'111': -0.0767, '101': -0.0767, '117': -0.0767, '114': -0.0767, '97': -0.0767, '65': -0.102, '79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}}],
    [0.999,0.683,0,{ic: 0.184, krn: {'65': -0.0767}}],
    [0.743,0.683,0,{ic: 0.158, krn: {'79': -0.0256, '67': -0.0256, '71': -0.0256, '81': -0.0256}}],
    [0.743,0.683,0,{ic: 0.194, krn: {'101': -0.0767, '111': -0.0767, '114': -0.0767, '97': -0.0767, '117': -0.0767, '65': -0.0767}}],
    [0.613,0.683,0,{ic: 0.145}], [0.307,0.75,0.25,{ic: 0.188}],
    [0.514,0.694,0,{ic: 0.169}], [0.307,0.75,0.25,{ic: 0.105}],
    [0.511,0.694,0,{ic: 0.0665}], [0.307,0.668,0,{ic: 0.118}],

    [0.307,0.694,0,{ic: 0.124, lig: {'96': 92}}], [0.511,0.431,0,{ic: 0.0767}],
    [0.46,0.694,0,{ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}],
    [0.46,0.431,0,{ic: 0.0565, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}],
    [0.511,0.694,0,{ic: 0.103, krn: {'108': 0.0511}}],
    [0.46,0.431,0,{ic: 0.0751, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}],
    [0.307,0.694,0.194,{ic: 0.212, krn: {'39': 0.104, '63': 0.104, '33': 0.104, '41': 0.104, '93': 0.104}, lig: {'105': 12, '102': 11, '108': 13}}],
    [0.46,0.431,0.194,{ic: 0.0885}], [0.511,0.694,0,{ic: 0.0767}],
    [0.307,0.655,0,{ic: 0.102}], [0.307,0.655,0.194,{ic: 0.145}],
    [0.46,0.694,0,{ic: 0.108}], [0.256,0.694,0,{ic: 0.103, krn: {'108': 0.0511}}],
    [0.818,0.431,0,{ic: 0.0767}], [0.562,0.431,0,{ic: 0.0767, krn: {'39': -0.102}}],
    [0.511,0.431,0,{ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}],

    [0.511,0.431,0.194,{ic: 0.0631, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}],
    [0.46,0.431,0.194,{ic: 0.0885}],
    [0.422,0.431,0,{ic: 0.108, krn: {'101': -0.0511, '97': -0.0511, '111': -0.0511, '100': -0.0511, '99': -0.0511, '103': -0.0511, '113': -0.0511}}],
    [0.409,0.431,0,{ic: 0.0821}], [0.332,0.615,0,{ic: 0.0949}],
    [0.537,0.431,0,{ic: 0.0767}], [0.46,0.431,0,{ic: 0.108}],
    [0.664,0.431,0,{ic: 0.108, krn: {'108': 0.0511}}],
    [0.464,0.431,0,{ic: 0.12}], [0.486,0.431,0.194,{ic: 0.0885}],
    [0.409,0.431,0,{ic: 0.123}], [0.511,0.431,0,{ic: 0.0921, lig: {'45': 124}}],
    [1.02,0.431,0,{ic: 0.0921}], [0.511,0.694,0,{ic: 0.122}],
    [0.511,0.668,0,{ic: 0.116}], [0.511,0.668,0,{ic: 0.105}]
  ],
  
  cmbx10: [
    [0.692,0.686], [0.958,0.686], [0.894,0.686], [0.806,0.686],
    [0.767,0.686], [0.9,0.686], [0.831,0.686], [0.894,0.686],
    [0.831,0.686], [0.894,0.686], [0.831,0.686],
    [0.671,0.694,0,{ic: 0.109, krn: {'39': 0.109, '63': 0.109, '33': 0.109, '41': 0.109, '93': 0.109}, lig: {'105': 14, '108': 15}}],
    [0.639,0.694], [0.639,0.694], [0.958,0.694], [0.958,0.694],

    [0.319,0.444], [0.351,0.444,0.194], [0.575,0.694], [0.575,0.694],
    [0.575,0.632], [0.575,0.694], [0.575,0.596], [0.869,0.694],
    [0.511,0,0.17], [0.597,0.694], [0.831,0.444], [0.894,0.444],
    [0.575,0.542,0.0972], [1.04,0.686], [1.17,0.686], [0.894,0.735,0.0486],

    [0.319,0.444,0,{krn: {'108': -0.319, '76': -0.378}}],
    [0.35,0.694,0,{lig: {'96': 60}}], [0.603,0.694], [0.958,0.694,0.194],
    [0.575,0.75,0.0556], [0.958,0.75,0.0556], [0.894,0.694],
    [0.319,0.694,0,{krn: {'63': 0.128, '33': 0.128}, lig: {'39': 34}}],
    [0.447,0.75,0.25], [0.447,0.75,0.25], [0.575,0.75], [0.894,0.633,0.133],
    [0.319,0.156,0.194], [0.383,0.444,0,{lig: {'45': 123}}],
    [0.319,0.156], [0.575,0.75,0.25],

    [0.575,0.644], [0.575,0.644], [0.575,0.644], [0.575,0.644],
    [0.575,0.644], [0.575,0.644], [0.575,0.644], [0.575,0.644],
    [0.575,0.644], [0.575,0.644], [0.319,0.444], [0.319,0.444,0.194],
    [0.35,0.5,0.194], [0.894,0.391,-0.109], [0.543,0.5,0.194],
    [0.543,0.694,0,{lig: {'96': 62}}],

    [0.894,0.694],
    [0.869,0.686,0,{krn: {'116': -0.0319, '67': -0.0319, '79': -0.0319, '71': -0.0319, '85': -0.0319, '81': -0.0319, '84': -0.0958, '89': -0.0958, '86': -0.128, '87': -0.128}}],
    [0.818,0.686], [0.831,0.686],
    [0.882,0.686,0,{krn: {'88': -0.0319, '87': -0.0319, '65': -0.0319, '86': -0.0319, '89': -0.0319}}],
    [0.756,0.686],
    [0.724,0.686,0,{krn: {'111': -0.0958, '101': -0.0958, '117': -0.0958, '114': -0.0958, '97': -0.0958, '65': -0.128, '79': -0.0319, '67': -0.0319, '71': -0.0319, '81': -0.0319}}],
    [0.904,0.686], [0.9,0.686], [0.436,0.686,0,{krn: {'73': 0.0319}}],
    [0.594,0.686],
    [0.901,0.686,0,{krn: {'79': -0.0319, '67': -0.0319, '71': -0.0319, '81': -0.0319}}],
    [0.692,0.686,0,{krn: {'84': -0.0958, '89': -0.0958, '86': -0.128, '87': -0.128}}],
    [1.09,0.686], [0.9,0.686],
    [0.864,0.686,0,{krn: {'88': -0.0319, '87': -0.0319, '65': -0.0319, '86': -0.0319, '89': -0.0319}}],

    [0.786,0.686,0,{krn: {'65': -0.0958, '111': -0.0319, '101': -0.0319, '97': -0.0319, '46': -0.0958, '44': -0.0958}}],
    [0.864,0.686,0.194],
    [0.862,0.686,0,{krn: {'116': -0.0319, '67': -0.0319, '79': -0.0319, '71': -0.0319, '85': -0.0319, '81': -0.0319, '84': -0.0958, '89': -0.0958, '86': -0.128, '87': -0.128}}],
    [0.639,0.686],
    [0.8,0.686,0,{krn: {'121': -0.0319, '101': -0.0958, '111': -0.0958, '114': -0.0958, '97': -0.0958, '65': -0.0958, '117': -0.0958}}],
    [0.885,0.686],
    [0.869,0.686,0,{ic: 0.016, krn: {'111': -0.0958, '101': -0.0958, '117': -0.0958, '114': -0.0958, '97': -0.0958, '65': -0.128, '79': -0.0319, '67': -0.0319, '71': -0.0319, '81': -0.0319}}],
    [1.19,0.686,0,{ic: 0.016, krn: {'111': -0.0958, '101': -0.0958, '117': -0.0958, '114': -0.0958, '97': -0.0958, '65': -0.128, '79': -0.0319, '67': -0.0319, '71': -0.0319, '81': -0.0319}}],
    [0.869,0.686,0,{krn: {'79': -0.0319, '67': -0.0319, '71': -0.0319, '81': -0.0319}}],
    [0.869,0.686,0,{ic: 0.0287, krn: {'101': -0.0958, '111': -0.0958, '114': -0.0958, '97': -0.0958, '65': -0.0958, '117': -0.0958}}],
    [0.703,0.686], [0.319,0.75,0.25], [0.603,0.694], [0.319,0.75,0.25],
    [0.575,0.694], [0.319,0.694],

    [0.319,0.694,0,{lig: {'96': 92}}],
    [0.559,0.444,0,{krn: {'118': -0.0319, '106': 0.0639, '121': -0.0319, '119': -0.0319}}],
    [0.639,0.694,0,{krn: {'101': 0.0319, '111': 0.0319, '120': -0.0319, '100': 0.0319, '99': 0.0319, '113': 0.0319, '118': -0.0319, '106': 0.0639, '121': -0.0319, '119': -0.0319}}],
    [0.511,0.444,0,{krn: {'104': -0.0319, '107': -0.0319}}],
    [0.639,0.694], [0.527,0.444],
    [0.351,0.694,0,{ic: 0.109, krn: {'39': 0.109, '63': 0.109, '33': 0.109, '41': 0.109, '93': 0.109}, lig: {'105': 12, '102': 11, '108': 13}}],
    [0.575,0.444,0.194,{ic: 0.016, krn: {'106': 0.0319}}],
    [0.639,0.694,0,{krn: {'116': -0.0319, '117': -0.0319, '98': -0.0319, '121': -0.0319, '118': -0.0319, '119': -0.0319}}],
    [0.319,0.694], [0.351,0.694,0.194],
    [0.607,0.694,0,{krn: {'97': -0.0639, '101': -0.0319, '97': -0.0319, '111': -0.0319, '99': -0.0319}}],
    [0.319,0.694],
    [0.958,0.444,0,{krn: {'116': -0.0319, '117': -0.0319, '98': -0.0319, '121': -0.0319, '118': -0.0319, '119': -0.0319}}],
    [0.639,0.444,0,{krn: {'116': -0.0319, '117': -0.0319, '98': -0.0319, '121': -0.0319, '118': -0.0319, '119': -0.0319}}],
    [0.575,0.444,0,{krn: {'101': 0.0319, '111': 0.0319, '120': -0.0319, '100': 0.0319, '99': 0.0319, '113': 0.0319, '118': -0.0319, '106': 0.0639, '121': -0.0319, '119': -0.0319}}],

    [0.639,0.444,0.194,{krn: {'101': 0.0319, '111': 0.0319, '120': -0.0319, '100': 0.0319, '99': 0.0319, '113': 0.0319, '118': -0.0319, '106': 0.0639, '121': -0.0319, '119': -0.0319}}],
    [0.607,0.444,0.194], [0.474,0.444], [0.454,0.444],
    [0.447,0.635,0,{krn: {'121': -0.0319, '119': -0.0319}}],
    [0.639,0.444,0,{krn: {'119': -0.0319}}],
    [0.607,0.444,0,{ic: 0.016, krn: {'97': -0.0639, '101': -0.0319, '97': -0.0319, '111': -0.0319, '99': -0.0319}}],
    [0.831,0.444,0,{ic: 0.016, krn: {'101': -0.0319, '97': -0.0319, '111': -0.0319, '99': -0.0319}}],
    [0.607,0.444],
    [0.607,0.444,0.194,{ic: 0.016, krn: {'111': -0.0319, '101': -0.0319, '97': -0.0319, '46': -0.0958, '44': -0.0958}}],
    [0.511,0.444], [0.575,0.444,0,{ic: 0.0319, lig: {'45': 124}}],
    [1.15,0.444,0,{ic: 0.0319}], [0.575,0.694], [0.575,0.694], [0.575,0.694]
  ]
};

/***************************************************************************/

/*
 *  Implement image-based fonts for fallback method
 */
jsMath.Img = {
  
  // font sizes available
  fonts: [50, 60, 70, 85, 100, 120, 144, 173, 207, 249, 298, 358, 430],
    
  // em widths for the various font size directories
  w: {'50': 6.9, '60': 8.3, '70': 9.7, '85': 11.8, '100': 13.9,
      '120': 16.7, '144': 20.0, '173': 24.0, '207': 28.8, '249': 34.6,
      '298': 41.4, '358': 49.8, '430': 59.8},
        
  best: 4,     // index of best font size in the fonts list    
  update: {},  // fonts to update (see UpdateFonts below)
  factor: 1,   // factor by which to shrink images (for better printing)
  loaded: 0,   // image fonts are loaded

  // add characters to be drawn using images
  SetFont: function (change) {
    for (var font in change) {
      if (!this.update[font]) {this.update[font] = []}
      this.update[font] = this.update[font].concat(change[font]);
    }
  },

  /*
   *  Called by the exta-font definition files to add an image font
   *  into the mix
   */
  AddFont: function (size,def) {
    if (!jsMath.Img[size]) {jsMath.Img[size] = {}};
    jsMath.Add(jsMath.Img[size],def);
  },
    
  /*
   *  Update font(s) to use image data rather than native fonts
   *  It looks in the jsMath.Img.update array to find the names
   *  of the fonts to udpate, and the arrays of character codes
   *  to set (or 'all' to change every character);
   */
  UpdateFonts: function () {
    var change = this.update; if (!this.loaded) return;
    var best = this[jsMath.Img.fonts[this.best]];
    for (var font in change) {
      for (var i = 0; i < change[font].length; i++) {
        var c = change[font][i];
        if (c == 'all') {for (c in jsMath.TeX[font]) {jsMath.TeX[font][c].img = {}}}
          else {jsMath.TeX[font][c].img = {}}
      }
    }
    this.update = {};
  },
  
  /*
   *  Find the font size that best fits our current font
   *  (this is the directory name for the img files used
   *  in some fallback modes).
   */
  BestSize: function () {
    var w = jsMath.em * this.factor;
    var m = this.w[this.fonts[0]];
    for (var i = 1; i < this.fonts.length; i++) {
      if (w < (this.w[this.fonts[i]] + 2*m) / 3) {return i-1}
      m = this.w[this.fonts[i]];
    }
    return i-1;
  },

  /*
   *  Get the scaling factor for the image fonts
   */
  Scale: function () {
    if (!this.loaded) return;
    this.best = this.BestSize();
    this.em = jsMath.Img.w[this.fonts[this.best]];
    this.scale = (jsMath.em/this.em);
    if (Math.abs(this.scale - 1) < .12) {this.scale = 1}
  },

  /*
   *  Get URL to directory for given font and size, based on the
   *  user's alpha/plain setting
   */
  URL: function (name,size,C) {
    var type = (jsMath.Controls.cookie.alpha) ? '/alpha/': '/plain/';
    if (C == null) {C = "def.js"} else {C = 'char'+C+'.png'}
    if (size != "") {size += '/'}
    return this.root+name+type+size+C;
  },

  /*
   *  Laod the data for an image font
   */
  LoadFont: function (name) {
    if (!this.loaded) this.Init();
    jsMath.Setup.Script(this.URL(name,""));
  },
  
  /*
   *  Setup for print mode, and create the hex code table
   */
  Init: function () {
    if (jsMath.Controls.cookie.print) {
      jsMath.Controls.cookie.print = 0;
      this.factor *= 3;
      if (jsMath.window.location.protocol != 'file:') {jsMath.Controls.SetCookie(0)}
      if (jsMath.Browser.alphaPrintBug) {jsMath.Controls.cookie.alpha = 0}
    }
    var codes = '0123456789ABCDEF';
    this.HexCode = [];
    for (var i = 0; i < 128; i++) {
      var h = Math.floor(i/16); var l = i - 16*h;
      this.HexCode[i] = codes.charAt(h)+codes.charAt(l);
    }
    this.loaded = 1;
  }
  
};

/***************************************************************************/

/*
 *  jsMath.HTML handles creation of most of the HTML needed for
 *  presenting mathematics in HTML pages.
 */

jsMath.HTML = {
  
  /*
   *  Produce a string version of a measurement in ems,
   *  showing only a limited number of digits, and 
   *  using 0 when the value is near zero.
   */
  Em: function (m) {
    var n = 5; if (m < 0) {n++}
    if (Math.abs(m) < .000001) {m = 0}
    var s = String(m); s = s.replace(/(\.\d\d\d).+/,'$1');
    return s+'em'
  },

  /*
   *  Create a horizontal space of width w
   */
  Spacer: function (w) {
    if (w == 0) {return ''};
    return '<span class="spacer" style="margin-left:'+this.Em(w)+'"></span>';
  },
  
  /*
   *  Create a blank rectangle of the given size
   *  If the height is small, it is converted to pixels so that it
   *  will not disappear at small font sizes.
   */
  
  Blank: function (w,h,d,isRule) {
    var backspace = ''; var style = ''
    if (isRule) {
      style += 'border-left:'+this.Em(w)+' solid;';
      if (jsMath.Browser.widthAddsBorder) {w = 0};
    }
    if (w == 0) {
      if (jsMath.Browser.blankWidthBug) {
        style += 'width:1px;';
        backspace = '<span class="spacer" style="margin-right:-1px"></span>'
      }
    } else {style += 'width:'+this.Em(w)+';'}
    if (d == null) {d = 0}
    if (h) {
      var H = this.Em(h+d);
      if (isRule && h > 0 && h*jsMath.em < 1.5) {H = "1px"; h = 1/jsMath.em}
      style += 'height:'+H+';';
    }
    if (jsMath.Browser.mozInlineBlockBug) {d = -h}
    if (jsMath.Browser.msieBorderBug && !isRule) {d -= jsMath.d}
    if (d) {style += 'vertical-align:'+this.Em(-d)}
    return backspace+'<span class="blank" style="'+style+'"></span>';
  },

  /*
   *  Create a rule line for fractions, etc.
   */
  Rule: function (w,h) {
    if (h == null) {h = jsMath.TeX.default_rule_thickness}
    return this.Blank(w,h,0,1);
  },
  
  /*
   *  Add a <SPAN> tag to activate a specific CSS class
   */
  Class: function (tclass,html) {
    return '<span class="'+tclass+'">'+html+'</span>';
  },
  
  /*
   *  Use a <SPAN> to place some HTML at a specific position.
   *  (This can be replaced by the ones below to overcome
   *   some browser-specific bugs.)
   */
  Place: function (html,x,y) {
    if (Math.abs(x) < .0001) {x = 0}
    if (Math.abs(y) < .0001) {y = 0}
    if (x || y) {
      var span = '<span style="position: relative;';
      if (x) {span += ' margin-left:'+this.Em(x)+';'}
      if (y) {span += ' top:'+this.Em(-y)+';'}
      html = span + '">' + html + '</span>';
    }
    return html;
  },
  
  /*
   *  For MSIE on Windows, backspacing must be done in a separate
   *  <SPAN>, otherwise the contents will be clipped.  Netscape
   *  also doesn't combine vertical and horizontal spacing well.
   *  Here the x and y positioning are done in separate <SPAN> tags
   */
  PlaceSeparateSkips: function (html,x,y) {
    if (Math.abs(x) < .0001) {x = 0}
    if (Math.abs(y) < .0001) {y = 0}
    if (y) {html = '<span style="position: relative; top:'+this.Em(-y)+';'
                       + '">' + html + '</span>'}
    if (x) {html = this.Spacer(x) + html}
    return html;
  },
  
  /*
   *  Place a SPAN with absolute coordinates
   */
  PlaceAbsolute: function (html,x,y) {
    if (Math.abs(x) < .0001) {x = 0}
    if (Math.abs(y) < .0001) {y = 0}
    html = '<span style="position:absolute; left:'+this.Em(x)+'; '
              + 'top:'+this.Em(y)+';">' + html + '&nbsp;</span>';
              //  space normalizes line height in script styles
    return html;
  },

  Absolute: function(html,w,h,d,y,H) {
    if (y != "none") {
      if (Math.abs(y) < .0001) {y = 0}
      html = '<span style="position:absolute; '
               + 'top:'+jsMath.HTML.Em(y)+'; left:0em;">'
               + html + '&nbsp;' // space normalizes line height in script styles
             + '</span>';
    }
    if (d == "none") {d = 0}
    html += this.Blank(w,h-d,d);
    if (jsMath.Browser.msieAbsoluteBug) {           // for MSIE (Mac)
      html = '<span style="position:relative;">' + html + '</span>';
    }
    html =   '<span style="position:relative;'
           +     ' width: '+jsMath.HTML.Em(w)+';'   // for MSIE
           +     ' height: '+jsMath.HTML.Em(H)+';'  // for MSIE
           +     jsMath.Browser.msieInlineBlockFix  // for MSIE
           +     '">'
           +   html
           + '</span>';
    return html;
  }

};


/***************************************************************************/

/*
 *  jsMath.Box handles TeX's math boxes and jsMath's equivalent of hboxes.
 */

jsMath.Box = function (format,text,w,h,d) {
  if (d == null) {d = jsMath.d}
  this.type = 'typeset';
  this.w = w; this.h = h; this.d = d; this.bh = h; this.bd = d;
  this.x = 0; this.y = 0;
  this.html = text; this.format = format;
};


jsMath.Add(jsMath.Box,{
  
  defaultH: 0, // default height for characters with none specified

  /*
   *  An empty box
   */
  Null: new jsMath.Box('null','',0,0,0),

  /*
   *  A box containing only text whose class and style haven't been added
   *  yet (so that we can combine ones with the same styles).  It gets
   *  the text dimensions, if needed.  (In general, this has been
   *  replaced by TeX() below, but is still used in fallback mode.)
   */
  Text: function (text,tclass,style,size,a,d) {
    var html = jsMath.Typeset.AddClass(tclass,text);
        html = jsMath.Typeset.AddStyle(style,size,html);
    var BB = jsMath.EmBoxFor(html); var TeX = jsMath.Typeset.TeX(style,size);
    var bd = ((tclass == 'cmsy10' || tclass == 'cmex10')? BB.h-TeX.h: TeX.d*BB.h/TeX.hd);
    var box = new jsMath.Box('text',text,BB.w,BB.h-bd,bd);
    box.style = style; box.size = size; box.tclass = tclass;
    if (d != null) {box.d = d*TeX.scale} else {box.d = 0}
    if (a == null || a == 1) {box.h = .9*TeX.M_height}
      else {box.h = 1.1*TeX.x_height + TeX.scale*a}
    return box;
  },

  /*
   *  Produce a box containing a given TeX character from a given font.
   *  The box is a text box (like the ones above), so that characters from
   *  the same font can be combined.
   */
  TeX: function (C,font,style,size) {
    var c = jsMath.TeX[font][C];
    if (c.d == null) {c.d = 0}; if (c.h == null) {c.h = 0}
    if (c.img != null && c.c != '') this.TeXIMG(font,C,jsMath.Typeset.StyleSize(style,size));
    var scale = jsMath.Typeset.TeX(style,size).scale;
    var h = c.h + jsMath.TeX[font].dh
    var box = new jsMath.Box('text',c.c,c.w*scale,h*scale,c.d*scale);
    box.style = style; box.size = size;
    if (c.tclass) {
      box.tclass = c.tclass;
      if (c.img) {box.bh = c.img.bh; box.bd = c.img.bd}
            else {box.bh = scale*jsMath.h; box.bd = scale*jsMath.d}
    } else {
      box.tclass = font;
      box.bh = scale*jsMath.TeX[font].h;
      box.bd = scale*jsMath.TeX[font].d;
      if (jsMath.Browser.msieFontBug && box.html.match(/&#/)) {
        // hack to avoid font changing back to the default
        // font when a unicode reference is not followed
        // by a letter or number
        box.html += '<span style="display: none">x</span>';
      }
    }
    return box;
  },

  /*
   *  In fallback modes, handle the fact that we don't have the
   *  sizes of the characters precomputed
   */
  TeXfallback: function (C,font,style,size) {
    c = jsMath.TeX[font][C]; if (!c.tclass) {c.tclass = font}
    if (c.img != null) {return this.TeXnonfallback(C,font,style,size)}
    if (c.h != null && c.a == null) {c.a = c.h-1.1*jsMath.TeX.x_height}
    var box = this.Text(c.c,c.tclass,style,size,c.a,c.d);
    var scale = jsMath.Typeset.TeX(style,size).scale;
    if (c.bh != null) {
      box.bh = c.bh*scale;
      box.bd = c.bd*scale;
    } else {
      var h = box.bd+box.bh;
      var html = jsMath.Typeset.AddClass(box.tclass,box.html);
          html = jsMath.Typeset.AddStyle(style,size,html);
      box.bd = jsMath.EmBoxFor(html+jsMath.HTML.Blank(1,h)).h - h;
      box.bh = h - box.bd;
      if (scale == 1) {c.bh = box.bh; c.bd = box.bd}
    }
    if (jsMath.msieFontBug && box.html.match(/&#/))
      {box.html += '<span style="display:none">x</span>'}
    return box;
  },

  /*
   *  Set the character's string to the appropriate image file
   */
  TeXIMG: function (font,C,size) {
    var c = jsMath.TeX[font][C];
    if (c.img.size != null && c.img.size == size &&
        c.img.best != null && c.img.best == jsMath.Img.best) return;
    var mustScale = (jsMath.Img.scale != 1);
    var id = jsMath.Img.best + size - 4;
    if (id < 0) {id = 0; mustScale = 1} else
    if (id >= jsMath.Img.fonts.length) {id = jsMath.Img.fonts.length-1; mustScale = 1}
    var imgFont = jsMath.Img[jsMath.Img.fonts[id]];
    var img = imgFont[font][C];
    var scale = 1/jsMath.Img.w[jsMath.Img.fonts[id]];
    if (id != jsMath.Img.best + size - 4) {
      if (c.w != null) {scale = c.w/img[0]} else {
        scale *= jsMath.Img.fonts[size]/jsMath.Img.fonts[4]
              *  jsMath.Img.fonts[jsMath.Img.best]/jsMath.Img.fonts[id];
      }
    }
    var w = img[0]*scale; var h = img[1]*scale; var d = -img[2]*scale; var v;
    var wadjust = (c.w == null || Math.abs(c.w-w) < .01)? "" : " margin-right:"+jsMath.HTML.Em(c.w-w)+';';
    var resize = ""; C = jsMath.Img.HexCode[C];
    if (!mustScale && !jsMath.Controls.cookie.scaleImg) {
      if (2*w < h || (jsMath.Browser.msieAlphaBug && jsMath.Controls.cookie.alpha))
         {resize = "height:"+(img[1]*jsMath.Browser.imgScale)+'px;'}
      resize += " width:"+(img[0]*jsMath.Browser.imgScale)+'px;'
      v = -img[2]+'px';
    } else {
      if (2*w < h || (jsMath.Browser.msieAlphaBug && jsMath.Controls.cookie.alpha))
         {resize = "height:"+jsMath.HTML.Em(h*jsMath.Browser.imgScale)+';'}
      resize += " width:"+jsMath.HTML.Em(w*jsMath.Browser.imgScale)+';'
      v = jsMath.HTML.Em(d);
    }
    var vadjust = (Math.abs(d) < .01 && !jsMath.Browser.valignBug)?
                         "": " vertical-align:"+v+';';
    var URL = jsMath.Img.URL(font,jsMath.Img.fonts[id],C);
    if (jsMath.Browser.msieAlphaBug && jsMath.Controls.cookie.alpha) {
      c.c = '<img src="'+jsMath.blank+'" '
               + 'style="'+jsMath.Browser.msieCenterBugFix
               + resize + vadjust + wadjust
               + ' filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' + "'"
               + URL + "', sizingMethod='scale'" + ');" />';
    } else {
      c.c = '<img src="'+URL+'" style="'+jsMath.Browser.msieCenterBugFix
                  + resize + vadjust + wadjust + '" />';
    }
    c.tclass = "normal";
    c.img.bh = h+d; c.img.bd = -d;
    c.img.size = size; c.img.best = jsMath.Img.best;
  },
  
  /*
   *  A box containing a spacer of a specific width
   */
  Space: function (w) {
    return new jsMath.Box('html',jsMath.HTML.Spacer(w),w,0,0);
  },

  /*
   *  A box containing a horizontal rule
   */
  Rule: function (w,h) {
    if (h == null) {h = jsMath.TeX.default_rule_thickness}
    var html = jsMath.HTML.Rule(w,h);
    return new jsMath.Box('html',html,w,h,0);
  },

  /*
   *  Get a character from a TeX font, and make sure that it has
   *  its metrics specified.
   */
  GetChar: function (code,font) {
    var c = jsMath.TeX[font][code];
    if (c.img != null) {this.TeXIMG(font,code,4)}
    if (c.tclass == null) {c.tclass = font}
    if (!c.computedW) {
      c.w = jsMath.EmBoxFor(jsMath.Typeset.AddClass(c.tclass,c.c)).w;
      if (c.h == null) {c.h = jsMath.Box.defaultH}; if (c.d == null) {c.d = 0}
      c.computedW = 1;
    }
    return c;
  },
  
  /*
   *  Locate the TeX delimiter character that matches a given height.
   *  Return the character, font, style and actual height used.
   */
  DelimBestFit: function (H,c,font,style) {
    if (c == 0 && font == 0) return null;
    var C; var h; font = jsMath.TeX.fam[font];
    var isSS = (style.charAt(1) == 'S');
    var isS  = (style.charAt(0) == 'S');
    while (c != null) {
      C = jsMath.TeX[font][c];
      if (C.h == null) {C.h = jsMath.Box.defaultH}; if (C.d == null) {C.d = 0}
      h = C.h+C.d;
      if (C.delim) {return [c,font,'',H]}
      if (isSS && .5*h >= H) {return [c,font,'SS',.5*h]}
      if (isS  && .7*h >= H) {return [c,font,'S',.7*h]}
      if (h >= H || C.n == null) {return [c,font,'T',h]}
      c = C.n;
    }
    return null;
  },
  
  /*
   *  Create the HTML needed for a stretchable delimiter of a given height,
   *  either centered or not.  This version uses relative placement (i.e.,
   *  backspaces, not line-breaks).  This works with more browsers, but
   *  if the font size changes, the backspacing may not be right, so the
   *  delimiters may become jagged.
   */
  DelimExtendRelative: function (H,c,font,a,nocenter) {
    var C = jsMath.TeX[font][c];
    var top = this.GetChar(C.delim.top? C.delim.top: C.delim.rep,font);
    var rep = this.GetChar(C.delim.rep,font);
    var bot = this.GetChar(C.delim.bot? C.delim.bot: C.delim.rep,font);
    var ext = jsMath.Typeset.AddClass(rep.tclass,rep.c);
    var w = rep.w; var h = rep.h+rep.d
    var y; var dx;
    if (C.delim.mid) {// braces
      var mid = this.GetChar(C.delim.mid,font);
      var n = Math.ceil((H-(top.h+top.d)-(mid.h+mid.d)-(bot.h+bot.d))/(2*(rep.h+rep.d)));
      H = 2*n*(rep.h+rep.d) + (top.h+top.d) + (mid.h+mid.d) + (bot.h+bot.d);
      if (nocenter) {y = 0} else {y = H/2+a}; var Y = y;
      var html = jsMath.HTML.Place(jsMath.Typeset.AddClass(top.tclass,top.c),0,y-top.h)
               + jsMath.HTML.Place(jsMath.Typeset.AddClass(bot.tclass,bot.c),-(top.w+bot.w)/2,y-(H-bot.d))
               + jsMath.HTML.Place(jsMath.Typeset.AddClass(mid.tclass,mid.c),-(bot.w+mid.w)/2,y-(H+mid.h-mid.d)/2);
      dx = (w-mid.w)/2; if (Math.abs(dx) < .0001) {dx = 0}
      if (dx) {html += jsMath.HTML.Spacer(dx)}
      y -= top.h+top.d + rep.h;
      for (var i = 0; i < n; i++) {html += jsMath.HTML.Place(ext,-w,y-i*h)}
      y -= H/2 - rep.h/2;
      for (var i = 0; i < n; i++) {html += jsMath.HTML.Place(ext,-w,y-i*h)}
    } else {// everything else
      var n = Math.ceil((H - (top.h+top.d) - (bot.h+bot.d))/(rep.h+rep.d));
      // make sure two-headed arrows have an extender
      if (top.h+top.d < .9*(rep.h+rep.d)) {n = Math.max(1,n)}
      H = n*(rep.h+rep.d) + (top.h+top.d) + (bot.h+bot.d);
      if (nocenter) {y = 0} else {y = H/2+a}; var Y = y;
      var html = jsMath.HTML.Place(jsMath.Typeset.AddClass(top.tclass,top.c),0,y-top.h)
      dx = (w-top.w)/2; if (Math.abs(dx) < .0001) {dx = 0}
      if (dx) {html += jsMath.HTML.Spacer(dx)}
      y -= top.h+top.d + rep.h;
      for (var i = 0; i < n; i++) {html += jsMath.HTML.Place(ext,-w,y-i*h)}
      html += jsMath.HTML.Place(jsMath.Typeset.AddClass(bot.tclass,bot.c),-(w+bot.w)/2,Y-(H-bot.d));
    }
    if (nocenter) {h = top.h} else {h = H/2+a}
    var box = new jsMath.Box('html',html,rep.w,h,H-h);
    box.bh = jsMath.TeX[font].h; box.bd = jsMath.TeX[font].d;
    return box;
  },

  /*
   *  Create the HTML needed for a stretchable delimiter of a given height,
   *  either centered or not.  This version uses absolute placement (i.e.,
   *  line-breaks, not backspacing).  This gives more reliable results,
   *  but doesn't work with all browsers.
   */
  DelimExtendAbsolute: function (H,c,font,a,nocenter) {
    var Font = jsMath.TeX[font];
    var C = Font[c];
    var top = this.GetChar(C.delim.top? C.delim.top: C.delim.rep,font);
    var rep = this.GetChar(C.delim.rep,font);
    var bot = this.GetChar(C.delim.bot? C.delim.bot: C.delim.rep,font);
    
    if (C.delim.mid) {// braces
      var mid = this.GetChar(C.delim.mid,font);
      var n = Math.ceil((H-(top.h+top.d)-(mid.h+mid.d-.05)-(bot.h+bot.d-.05))/(2*(rep.h+rep.d-.05)));
      H = 2*n*(rep.h+rep.d-.05) + (top.h+top.d) + (mid.h+mid.d-.05) + (bot.h+bot.d-.05);
      
      html = jsMath.HTML.PlaceAbsolute(jsMath.Typeset.AddClass(top.tclass,top.c),0,0);
      var h = rep.h+rep.d - .05; var y = top.d-.05 + rep.h;
      var ext = jsMath.Typeset.AddClass(font,rep.c)
      for (var i = 0; i < n; i++) {html += jsMath.HTML.PlaceAbsolute(ext,0,y+i*h)}
      html += jsMath.HTML.PlaceAbsolute(jsMath.Typeset.AddClass(mid.tclass,mid.c),0,y+n*h-rep.h+mid.h);
      y += n*h + mid.h+mid.d - .05;
      for (var i = 0; i < n; i++) {html += jsMath.HTML.PlaceAbsolute(ext,0,y+i*h)}
      html += jsMath.HTML.PlaceAbsolute(jsMath.Typeset.AddClass(bot.tclass,bot.c),0,y+n*h-rep.h+bot.h);
    } else {// all others
      var n = Math.ceil((H - (top.h+top.d) - (bot.h+bot.d-.05))/(rep.h+rep.d-.05));
      H = n*(rep.h+rep.d-.05) + (top.h+top.d) + (bot.h+bot.d-.05);

      html = jsMath.HTML.PlaceAbsolute(jsMath.Typeset.AddClass(top.tclass,top.c),0,0);
      var h = rep.h+rep.d-.05; var y = top.d-.05 + rep.h;
      var ext = jsMath.Typeset.AddClass(rep.tclass,rep.c);
      for (var i = 0; i < n; i++) {html += jsMath.HTML.PlaceAbsolute(ext,0,y+i*h)}
      html += jsMath.HTML.PlaceAbsolute(jsMath.Typeset.AddClass(bot.tclass,bot.c),0,y+n*h-rep.h+bot.h);
    }
    
    var w = top.w;
    if (nocenter) {h = top.h; y = 0} else {h = H/2 + a; y = h - top.h}
    html = jsMath.HTML.Absolute(html,w,Font.h,"none",-y,top.h);
    var box = new jsMath.Box('html',html,rep.w,h,H-h);
    box.bh = jsMath.TeX[font].h; box.bd = jsMath.TeX[font].d;
    return box;
  },
  
  /*
   *  Get the HTML for a given delimiter of a given height.
   *  It will return either a single character, if one exists, or the
   *  more complex HTML needed for a stretchable delimiter.
   */
  Delimiter: function (H,delim,style,nocenter) {
    var size = 4;  //### pass this?
    var TeX = jsMath.Typeset.TeX(style,size);
    if (!delim) {return this.Space(TeX.nulldelimiterspace)}
    var CFSH = this.DelimBestFit(H,delim[2],delim[1],style);
    if (CFSH == null || CFSH[3] < H) 
      {CFSH = this.DelimBestFit(H,delim[4],delim[3],style)}
    if (CFSH == null) {return this.Space(TeX.nulldelimiterspace)}
    if (CFSH[2] == '')
      {return this.DelimExtend(H,CFSH[0],CFSH[1],TeX.axis_height,nocenter)}
    box = jsMath.Box.TeX(CFSH[0],CFSH[1],CFSH[2],size).Styled();
    if (nocenter) {box.y = -jsMath.TeX[CFSH[1]].dh*TeX.scale}
      else {box.y = -((box.h+box.d)/2 - box.d - TeX.axis_height)}
    if (Math.abs(box.y) < .0001) {box.y = 0}
    if (box.y) {box = jsMath.Box.SetList([box],CFSH[2],size)}
    return box;
  },
  
  /*
   *  Get a character by its TeX charcode, and make sure its width
   *  is specified.
   */
  GetCharCode: function (code) {
    var font = jsMath.TeX.fam[code[0]];
    var Font = jsMath.TeX[font];
    var c = Font[code[1]];
    if (c.img != null) {this.TeXIMG(font,code[1],4)}
    if (c.w == null) {c.w = jsMath.EmBoxFor(jsMath.Typeset.AddClass(c.tclass,c.c)).w}
    if (c.font == null) {c.font = font}
    return c;
  },

  /*
   * Add the class to the html, and use the font if there isn't one
   * specified already
   */

  AddClass: function (tclass,html,font) {
    if (tclass == null) {tclass = font}
    return jsMath.Typeset.AddClass(tclass,html);
  },
  
  /*
   *  Create the HTML for an alignment (e.g., array or matrix)
   *  Since the widths are not really accurate (they are based on pixel
   *  widths not the sub-pixel widths of the actual characters), there
   *  is some drift involved.  We lay out the table column by column
   *  to help reduce the problem.
   *  
   *  ###  still need to allow users to specify row and column attributes,
   *       and do things like \span and \multispan  ###
   */
  LayoutRelative: function (size,table,align,cspacing) {
    if (align == null) {align = []}
    if (cspacing == null) {cspacing = []}
    
    // get row and column maximum dimensions
    var scale = jsMath.sizes[size]/100;
    var W = []; var H = []; var D = [];
    var unset = -1000; var bh = unset; var bd = unset;
    var i; var j; var row;
    for (i = 0; i < table.length; i++) {
      row = table[i]; H[i] = jsMath.h*scale; D[i] = jsMath.d*scale;
      for (j = 0; j < row.length; j++) {
        row[j] = row[j].Remeasured();
        if (row[j].h > H[i]) {H[i] = row[j].h}
        if (row[j].d > D[i]) {D[i] = row[j].d}
        if (j >= W.length) {W[j] = row[j].w}
        else if (row[j].w > W[j]) {W[j] = row[j].w}
        if (row[j].bh > bh) {bh = row[j].bh}
        if (row[j].bd > bd) {bd = row[j].bd}
      }
    }
    if (bh == unset) {bh = 0}; if (bd == unset) {bd = 0}

    // lay out the columns
    var HD = (jsMath.hd-.01)*scale;
    var html = ''; var pW = 0; var cW = 0;
    var w; var h; var y;
    var box; var mlist; var entry;
    for (j = 0; j < W.length; j++) {
      mlist = []; y = -H[0]; pW = 0;
      for (i = 0; i < table.length; i++) {
        entry = table[i][j];
        if (entry && entry.format != 'null') {
          if (align[j] == 'l') {w = 0} else
          if (align[j] == 'r') {w = W[j] - entry.w} else
            {w = (W[j] - entry.w)/2}
          entry.x = w - pW; pW = entry.w + w; entry.y = y;
          mlist[mlist.length] = entry;
        }
        if (i == table.length-1) {y -= D[i]}
        else {y -= Math.max(HD,D[i]+H[i+1]) + scale/10}
      }
      if (cspacing[j] == null) cspacing[j] = scale;
      if (mlist.length > 0) {
        box = jsMath.Box.SetList(mlist,'T',size);
        html += jsMath.HTML.Place(box.html,cW,0);
        cW = W[j] - box.w + cspacing[j];
      } else {cW += cspacing[j]}
    }
    
    // get the full width and height
    w = -cspacing[W.length-1]; y = (H.length-1)*scale/10;
    for (i = 0; i < W.length; i++) {w += W[i] + cspacing[i]}
    for (i = 0; i < H.length; i++) {y += Math.max(HD,H[i]+D[i])}
    h = y/2 + jsMath.TeX.axis_height; var d = y-h;
    
    // adjust the final row width, and vcenter the table
    //   (add 1/6em at each side for the \,)
    html += jsMath.HTML.Spacer(cW-cspacing[W.length-1] + scale/6);
    html = jsMath.HTML.Place(html,scale/6,h);
    box = new jsMath.Box('html',html,w+scale/3,h,d);
    box.bh = bh; box.bd = bd;
    return box;
  },

  /*
   *  Create the HTML for an alignment (e.g., array or matrix)
   *  Use absolute position for elements in the array.
   *  
   *  ###  still need to allow users to specify row and column attributes,
   *       and do things like \span and \multispan  ###
   */
  LayoutAbsolute: function (size,table,align,cspacing) {
    if (align == null) {align = []}
    if (cspacing == null) {cspacing = []}
    
    // get row and column maximum dimensions
    var scale = jsMath.sizes[size]/100;
    var HD = (jsMath.hd-.01)*scale;
    var W = []; var H = []; var D = [];
    var w = 0; var h; var x; var y;
    var i; var j; var row;
    for (i = 0; i < table.length; i++) {
      row = table[i];
      H[i] = jsMath.h*scale; D[i] = jsMath.d*scale;
      for (j = 0; j < row.length; j++) {
        row[j] = row[j].Remeasured();
        if (row[j].h > H[i]) {H[i] = row[j].h}
        if (row[j].d > D[i]) {D[i] = row[j].d}
        if (j >= W.length) {W[j] = row[j].w}
        else if (row[j].w > W[j]) {W[j] = row[j].w}
      }
    }

    // get the height and depth of the centered table
    y = (H.length-1)*scale/6;
    for (i = 0; i < H.length; i++) {y += Math.max(HD,H[i]+D[i])}
    h = y/2 + jsMath.TeX.axis_height; var d = y - h;

    // lay out the columns
    var html = ''; var entry; w = scale/6;
    for (j = 0; j < W.length; j++) {
      y = H[0]-h;
      for (i = 0; i < table.length; i++) {
        entry = table[i][j];
        if (entry && entry.format != 'null') {
          if (align[j] == 'l') {x = 0} else
          if (align[j] == 'r') {x = W[j] - entry.w} else
            {x = (W[j] - entry.w)/2}
          html += jsMath.HTML.PlaceAbsolute(entry.html,w+x,
                    y-Math.max(0,entry.bh-jsMath.h*scale));
        }
        if (i == table.length-1) {y += D[i]}
        else {y += Math.max(HD,D[i]+H[i+1]) + scale/6}
      }
      if (cspacing[j] == null) cspacing[j] = scale;
      w += W[j] + cspacing[j];
    }
    
    // get the full width
    w = -cspacing[W.length-1]+scale/3;
    for (i = 0; i < W.length; i++) {w += W[i] + cspacing[i]}

    html = jsMath.HTML.Spacer(scale/6)+html+jsMath.HTML.Spacer(scale/6);
    if (jsMath.Browser.spanHeightVaries) {y = h-jsMath.h} else {y = 0}
    html = jsMath.HTML.Absolute(html,w,h+d,d,y,H[0]);
    var box = new jsMath.Box('html',html,w+scale/3,h,d);
    return box;
  },

  /*
   *  Look for math within \hbox and other non-math text
   */
  InternalMath: function (text,size) {
    if (!text.match(/\$|\\\(/)) {return this.Text(text,'normal','T',size).Styled()}
    
    var i = 0; var k = 0; var c; var match = '';
    var mlist = []; var parse; var html; var box;
    while (i < text.length) {
      c = text.charAt(i++);
      if (c == '$') {
        if (match == '$') {
          parse = jsMath.Parse(text.slice(k,i-1),null,size);
          if (parse.error) {
            mlist[mlist.length] = this.Text(parse.error,'error','T',size,1,.2);
          } else {
            parse.Atomize();
            mlist[mlist.length] = parse.mlist.Typeset('T',size).Styled();
          }
          match = ''; k = i;
        } else {
          mlist[mlist.length] = this.Text(text.slice(k,i-1),'normal','T',size,1,.2);
          match = '$'; k = i;
        }
      } else if (c == '\\') {
        c = text.charAt(i++);
        if (c == '(' && match == '') {
          mlist[mlist.length] = this.Text(text.slice(k,i-2),'normal','T',size,1,.2);
          match = ')'; k = i;
        } else if (c == ')' && match == ')') {
          parse = jsMath.Parse(text.slice(k,i-2),null,size);
          if (parse.error) {
            mlist[mlist.length] = this.Text(parse.error,'error','T',size,1,.2);
          } else {
            parse.Atomize();
            mlist[mlist.length] = parse.mlist.Typeset('T',size).Styled();
          }
          match = ''; k = i;
        }
      }
    }
    mlist[mlist.length] = this.Text(text.slice(k),'normal','T',size,1,.2);
    return this.SetList(mlist,'T',size);
  },
  
  /*
   *  Convert an abitrary box to a typeset box.  I.e., make an
   *  HTML version of the contents of the box, at its desired (x,y)
   *  position.
   */
  Set: function (box,style,size,addstyle) {
    if (box && box.type) {
      if (box.type == 'typeset') {return box}
      if (box.type == 'mlist') {
        box.mlist.Atomize(style,size);
        return box.mlist.Typeset(style,size);
      }
      if (box.type == 'text') {
        box = this.Text(box.text,box.tclass,style,size,box.ascend,box.descend);
        if (addstyle != 0) {box.Styled()}
        return box;
      }
      box = this.TeX(box.c,box.font,style,size);
      if (addstyle != 0) {box.Styled()}
      return box;
    }
    return jsMath.Box.Null;
  },

  /*
   *  Convert a list of boxes to a single typeset box.  I.e., finalize
   *  the HTML for the list of boxes, properly spaced and positioned.
   */
  SetList: function (boxes,style,size) {
    var mlist = []; var box;
    for (var i = 0; i < boxes.length; i++) {
      box = boxes[i];
      if (box.type == 'typeset') {box = jsMath.mItem.Typeset(box)}
      mlist[mlist.length] = box;
    }
    var typeset = new jsMath.Typeset(mlist);
    return typeset.Typeset(style,size);
  }

});


jsMath.Package(jsMath.Box,{

  /*
   *  Add the class and style to a text box (i.e., finalize the
   *  unpositioned HTML for the box).
   */
  Styled: function () {
    if (this.format == 'text') {
      this.html = jsMath.Typeset.AddClass(this.tclass,this.html);
      this.html = jsMath.Typeset.AddStyle(this.style,this.size,this.html);
      delete this.tclass; delete this.style;
      this.format = 'html';
    }
    return this;
  },
  
  /*
   *  Recompute the box width to make it more accurate.
   */
  Remeasured: function () {
    if (this.w > 0 && !this.html.match(/position: ?absolute/))
      {this.w = jsMath.EmBoxFor(this.html).w}
    return this;
  }

});


/***************************************************************************/

/*
 *  mItems are the building blocks of mLists (math lists) used to
 *  store the information about a mathematical expression.  These are
 *  basically the items listed in the TeXbook in Appendix G (plus some
 *  minor extensions).
 */
jsMath.mItem = function (type,def) {
  this.type = type;
  jsMath.Add(this,def);
}

jsMath.Add(jsMath.mItem,{

  /*
   *  A general atom (given a nucleus for the atom)
   */
  Atom: function (type,nucleus) {
    return new jsMath.mItem(type,{atom: 1, nuc: nucleus});
  },

  /*
   *  An atom whose nucleus is a piece of text, in a given
   *  class, with a given additional height and depth
   */
  TextAtom: function (type,text,tclass,a,d) {
    var atom = new jsMath.mItem(type,{
      atom: 1,
      nuc: {
        type: 'text',
        text: text,
        tclass: tclass
      }
    });
    if (a != null) {atom.nuc.ascend = a}
    if (d != null) {atom.nuc.descend = d}
    return atom;
  },
  
  /*
   *  An atom whose nucleus is a TeX character in a specific font
   */
  TeXAtom: function (type,c,font) {
    return new jsMath.mItem(type,{
      atom: 1,
      nuc: {
        type: 'TeX',
        c: c,
        font: font
      }
    });
  },

  /*
   *  A generalized fraction atom, with given delimiters, rule
   *  thickness, and a numerator and denominator.
   */
  Fraction: function (name,num,den,thickness,left,right) {
    return new jsMath.mItem('fraction',{
      from: name, num: num, den: den,
      thickness: thickness, left: left, right: right
    });
  },

  /*
   *  An atom that inserts some glue
   */
  Space: function (w) {return new jsMath.mItem('space',{w: w})},

  /*
   *  An atom that contains a typeset box (like an hbox or vbox)
   */
  Typeset: function (box) {return new jsMath.mItem('ord',{atom:1, nuc: box})},
  
  /*
   *  An atom that contains some finished HTML (acts like a typeset box)
   */
  HTML: function (html) {return new jsMath.mItem('html',{html: html})}

});

/***************************************************************************/

/*
 *  mLists are lists of mItems, and encode the contents of
 *  mathematical expressions and sub-expressions.  They act as
 *  the expression "stack" as the mathematics is parsed, and
 *  contain some state information, like the position of the
 *  most recent open paren and \over command, and the current font.
 */
jsMath.mList = function (list,font,size,style) {
  if (list) {this.mlist = list} else {this.mlist = []}
  if (style == null) {style = 'T'}; if (size == null) {size = 4}
  this.data = {openI: null, overI: null, overF: null,
               font: font, size: size, style: style};
  this.init = {size: size, style: style};
}

jsMath.Package(jsMath.mList,{

  /*
   *  Add an mItem to the list
   */
  Add: function (box) {return (this.mlist[this.mlist.length] = box)},
  
  /*
   *  Get the i-th mItem from the list
   */
  Get: function (i) {return this.mlist[i]},
  
  /*
   *  Get the length of the list
   */
  Length: function() {return this.mlist.length},

  /*
   *  Get the tail mItem of the list
   */
  Last: function () {
    if (this.mlist.length == 0) {return null}
    return this.mlist[this.mlist.length-1]
  },

  /*
   *  Get a sublist of an mList
   */
  Range: function (i,j) {
    if (j == null) {j = this.mlist.length}
    return new jsMath.mList(this.mlist.slice(i,j+1));
  },

  /*
   *  Remove a range of mItems from the list.
   */
  Delete: function (i,j) {
    if (j == null) {j = i}
    if (this.mlist.splice) {this.mlist.splice(i,j-i+1)} else {
      var mlist = [];
      for (var k = 0; k < this.mlist.length; k++)
        {if (k < i || k > j) {mlist[mlist.length] = this.mlist[k]}}
      this.mlist = mlist;
    }
  },

  /*
   *  Add an open brace and maintain the stack information
   *  about the previous open brace so we can recover it
   *  when this one os closed.
   */
  Open: function (left) {
    var box = this.Add(new jsMath.mItem('boundary',{data: this.data}));
    var olddata = this.data;
    this.data = {}; for (var i in olddata) {this.data[i] = olddata[i]}
    delete this.data.overI; delete this.data.overF;
    this.data.openI = this.mlist.length-1;
    if (left != null) {box.left = left}
    return box;
  },

  /*
   *  Attempt to close a brace.  Recover the stack information
   *  about previous open braces and \over commands.  If there was an
   *  \over (or \above, etc) in this set of braces, create a fraction
   *  atom from the two halves, otherwise create an inner or ord
   *  from the contents of the braces.
   *  Remove the braced material from the list and add the newly
   *  created atom (the fraction, inner or ord).
   */
  Close: function (right) {
    if (right != null) {right = new jsMath.mItem('boundary',{right: right})}
    var atom; var open = this.data.openI;
    var over = this.data.overI; var from = this.data.overF;
    this.data  = this.mlist[open].data;
    if (over) {
      atom = jsMath.mItem.Fraction(from.name,
        {type: 'mlist', mlist: this.Range(open+1,over-1)},
        {type: 'mlist', mlist: this.Range(over)},
        from.thickness,from.left,from.right);
      if (right) {
        var mlist = new jsMath.mList([this.mlist[open],atom,right]);
        atom = jsMath.mItem.Atom('inner',{type: 'mlist', mlist: mlist});
      }
    } else {
      var openI = open+1; if (right) {this.Add(right); openI--}
      atom = jsMath.mItem.Atom((right)?'inner':'ord',
                  {type: 'mlist', mlist: this.Range(openI)});
    }
    this.Delete(open,this.Length());
    return this.Add(atom);
  },

  /*
   *  Create a generalized fraction from an mlist that
   *  contains an \over (or \above, etc).
   */
  Over: function () {
    var over = this.data.overI; var from = this.data.overF;
    var atom = jsMath.mItem.Fraction(from.name,
      {type: 'mlist', mlist: this.Range(open+1,over-1)},
      {type: 'mlist', mlist: this.Range(over)},
      from.thickness,from.left,from.right);
    this.mlist = [atom];
  },

  /*
   *  Take a raw mList (that has been produced by parsing some TeX
   *  expression), and perform the modifications outlined in
   *  Appendix G of the TeXbook.  
   */
  Atomize: function (style,size) {
    var mitem; var prev = '';
    this.style = style; this.size = size;
    for (var i = 0; i < this.mlist.length; i++) {
      mitem = this.mlist[i]; mitem.delta = 0;
      if (mitem.type == 'choice') 
        {this.mlist = this.Atomize.choice(this.style,mitem,i,this.mlist); i--}
      else if (this.Atomize[mitem.type]) {
        var f = this.Atomize[mitem.type]; // Opera needs separate name
        f(this.style,this.size,mitem,prev,this,i);
      }
      prev = mitem;
    }
    if (mitem && mitem.type == 'bin') {mitem.type = 'ord'}
    if (this.mlist.length >= 2 && mitem.type == 'boundary' &&
        this.mlist[0].type == 'boundary') {this.AddDelimiters(style,size)}
  },

  /*
   *  For a list that has boundary delimiters as its first and last
   *  entries, we replace the boundary atoms by open and close
   *  atoms whose nuclii are the specified delimiters properly sized
   *  for the contents of the list.  (Rule 19)
   */
  AddDelimiters: function(style,size) {
    var unset = -10000; var h = unset; var d = unset;
    for (var i = 0; i < this.mlist.length; i++) {
      mitem = this.mlist[i];
      if (mitem.atom || mitem.type == 'box') {
        h = Math.max(h,mitem.nuc.h+mitem.nuc.y);
        d = Math.max(d,mitem.nuc.d-mitem.nuc.y);
      }
    }
    var TeX = jsMath.TeX; var a = jsMath.Typeset.TeX(style,size).axis_height;
    var delta = Math.max(h-a,d+a);
    var H =  Math.max(Math.floor(TeX.integer*delta/500)*TeX.delimiterfactor,
                      TeX.integer*(2*delta-TeX.delimitershortfall))/TeX.integer;
    var left = this.mlist[0]; var right = this.mlist[this.mlist.length-1];
    left.nuc = jsMath.Box.Delimiter(H,left.left,style);
    right.nuc = jsMath.Box.Delimiter(H,right.right,style);
    left.type = 'open'; left.atom = 1; delete left.left;
    right.type = 'close'; right.atom = 1; delete right.right;
  },
  
  /*
   *  Typeset a math list to produce final HTML for the list.
   */
  Typeset: function (style,size) {
    var typeset = new jsMath.Typeset(this.mlist);
    return typeset.Typeset(style,size);
  }

});


/*
 *  These routines implement the main rules given in Appendix G of the
 *  TeXbook
 */

jsMath.Add(jsMath.mList.prototype.Atomize,{

  /*
   *  Handle \displaystyle, \textstyle, etc.
   */
  style: function (style,size,mitem,prev,mlist) {
    mlist.style = mitem.style;
  },
  
  /*
   *  Handle \tiny, \small, etc.
   */
  size: function (style,size,mitem,prev,mlist) {
    mlist.size = mitem.size;
  },
  
  /*
   *  Create empty boxes of the proper sizes for the various
   *  phantom-type commands
   */
  phantom: function (style,size,mitem) {
    var box = mitem.nuc = jsMath.Box.Set(mitem.phantom,style,size);
    if (mitem.h) {box.Remeasured(); box.html = jsMath.HTML.Spacer(box.w)}
      else {box.html = '', box.w = 0}
    if (!mitem.v) {box.h = box.d = 0}
    box.bd = box.bh = 0;
    delete mitem.phantom;
    mitem.type = 'box';
  },
  
  /*
   *  Create a box of zero height and depth containing the
   *  contents of the atom
   */
  smash: function (style,size,mitem) {
    var box = mitem.nuc = jsMath.Box.Set(mitem.smash,style,size).Remeasured();
    box.h = box.d = box.bd = box.bh = 0;
    delete mitem.smash;
    mitem.type = 'box';
  },

  /*
   *  Move a box up or down vertically
   */
  raise: function (style,size,mitem) {
    mitem.nuc = jsMath.Box.Set(mitem.nuc,style,size);
    var y = mitem.raise;
    mitem.nuc.html = jsMath.HTML.Place(mitem.nuc.html,0,y);
    mitem.nuc.h += y; mitem.nuc.d -= y;
    mitem.type = 'ord'; mitem.atom = 1;
  },

  /*
   *  Hide the size of a box so that it laps to the left or right, or
   *  up or down.
   */
  lap: function (style,size,mitem) {
    var box = jsMath.Box.Set(mitem.nuc,style,size).Remeasured();
    var mlist = [box];
    if (mitem.lap == 'llap') {box.x = -box.w} else
    if (mitem.lap == 'rlap') {mlist[1] = jsMath.mItem.Space(-box.w)} else
    if (mitem.lap == 'ulap') {box.y = box.d; box.h = box.d = 0} else
    if (mitem.lap == 'dlap') {box.y = -box.h; box.h = box.d = 0}
    mitem.nuc = jsMath.Box.SetList(mlist,style,size);
    if (mitem.lap == 'ulap' || mitem.lap == 'dlap') {mitem.nuc.h = mitem.nuc.d = 0}
    mitem.type = 'box'; delete mitem.atom;
  },

  /*
   *  Handle a Bin atom. (Rule 5)
   */
  bin: function (style,size,mitem,prev) {
    if (prev) {
      var type  = prev.type;
      if (type == 'bin' || type == 'op' || type == 'rel' ||
          type == 'open' || type == 'punct' || type == '' ||
          (type == 'boundary' && prev.left != '')) {mitem.type = 'ord'}
    } else {mitem.type = 'ord'}
    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
  },

  /*
   *  Handle a Rel atom.  (Rule 6)
   */
  rel: function (style,size,mitem,prev) {
    if (prev.type == 'bin') {prev.type = 'ord'}
    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
  },

  /*
   *  Handle a Close atom.  (Rule 6)
   */
  close: function (style,size,mitem,prev) {
    if (prev.type == 'bin') {prev.type = 'ord'}
    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
  },

  /*
   *  Handle a Punct atom.  (Rule 6)
   */
  punct: function (style,size,mitem,prev) {
    if (prev.type == 'bin') {prev.type = 'ord'}
    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
  },

  /*
   *  Handle an Open atom.  (Rule 7)
   */
  open: function (style,size,mitem) {
    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
  },

  /*
   *  Handle an Inner atom.  (Rule 7)
   */
  inner: function (style,size,mitem) {
    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
  },

  /*
   *  Handle a Vcent atom.  (Rule 8)
   */
  vcenter: function (style,size,mitem) {
    var box = jsMath.Box.Set(mitem.nuc,style,size);
    var TeX = jsMath.Typeset.TeX(style,size);
    box.y = TeX.axis_height - (box.h-box.d)/2;
    mitem.nuc = box; mitem.type = 'ord';
    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
  },

  /*
   *  Handle an Over atom.  (Rule 9)
   */
  overline: function (style,size,mitem) {
    var TeX = jsMath.Typeset.TeX(style,size);
    var box = jsMath.Box.Set(mitem.nuc,jsMath.Typeset.PrimeStyle(style),size).Remeasured();
    var t = TeX.default_rule_thickness;
    var rule = jsMath.Box.Rule(box.w,t);
    rule.x = -rule.w; rule.y = box.h + 3*t;
    mitem.nuc = jsMath.Box.SetList([box,rule],style,size);
    mitem.nuc.h += t;
    mitem.type = 'ord';
    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
  },

  /*
   *  Handle an Under atom.  (Rule 10)
   */
  underline: function (style,size,mitem) {
    var TeX = jsMath.Typeset.TeX(style,size);
    var box = jsMath.Box.Set(mitem.nuc,jsMath.Typeset.PrimeStyle(style),size).Remeasured();
    var t = TeX.default_rule_thickness;
    var rule = jsMath.Box.Rule(box.w,t);
    rule.x = -rule.w; rule.y = -box.d - 3*t - t;
    mitem.nuc = jsMath.Box.SetList([box,rule],style,size);
    mitem.nuc.d += t;
    mitem.type = 'ord';
    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
  },

  /*
   *  Handle a Rad atom.  (Rule 11 plus stuff for \root..\of)
   */
  radical: function (style,size,mitem) {
    var TeX = jsMath.Typeset.TeX(style,size);
    var Cp = jsMath.Typeset.PrimeStyle(style);
    var box = jsMath.Box.Set(mitem.nuc,Cp,size).Remeasured();
    var t = TeX.default_rule_thickness;
    var p = t; if (style == 'D' || style == "D'") {p = TeX.x_height}
    var r = t + p/4; 
    var surd = jsMath.Box.Delimiter(box.h+box.d+r+t,[0,2,0x70,3,0x70],style,1);
    t = surd.h; // thickness of rule is height of surd character
    if (surd.d > box.h+box.d+r) {r = (r+surd.d-box.h-box.d)/2}
    surd.y = box.h+r;
    var rule = jsMath.Box.Rule(box.w,t);
    rule.y = surd.y-t/2; rule.h += 3*t/2; box.x = -box.w;
    var Cr = jsMath.Typeset.UpStyle(jsMath.Typeset.UpStyle(style));
    var root = jsMath.Box.Set(mitem.root,Cr,size).Remeasured();
    if (mitem.root) {
      root.y = .55*(box.h+box.d+3*t+r)-box.d;
      surd.x = Math.max(root.w-(11/18)*surd.w,0);
      rule.x = (7/18)*surd.w;
      root.x = -(root.w+rule.x);
    }
    mitem.nuc = jsMath.Box.SetList([surd,root,rule,box],style,size);
    mitem.type = 'ord';
    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
  },

  /*
   *  Handle an Acc atom.  (Rule 12)
   */
  accent: function (style,size,mitem) {
    var TeX = jsMath.Typeset.TeX(style,size);
    var Cp = jsMath.Typeset.PrimeStyle(style);
    var box = jsMath.Box.Set(mitem.nuc,Cp,size);
    var u = box.w; var s; var Font;
    if (mitem.nuc.type == 'TeX') {
      Font = jsMath.TeX[mitem.nuc.font];
      if (Font[mitem.nuc.c].krn && Font.skewchar)
        {s = Font[mitem.nuc.c].krn[Font.skewchar]}
    }
    if (s == null) {s = 0}
    
    var c = mitem.accent[2];
    var font = jsMath.TeX.fam[mitem.accent[1]]; Font = jsMath.TeX[font];
    while (Font[c].n && Font[Font[c].n].w <= u) {c = Font[c].n}
    
    var delta = Math.min(box.h,TeX.x_height);
    if (mitem.nuc.type == 'TeX') {
      var nitem = jsMath.mItem.Atom('ord',mitem.nuc);
      nitem.sup = mitem.sup; nitem.sub = mitem.sub; nitem.delta = 0;
      jsMath.mList.prototype.Atomize.SupSub(style,size,nitem);
      delta += (nitem.nuc.h - box.h);
      box = mitem.nuc = nitem.nuc;
      delete mitem.sup; delete mitem.sub;
    }
    var acc = jsMath.Box.TeX(c,font,style,size);
    acc.y = box.h - delta; acc.x = -box.w + s + (u-acc.w)/2;
    if (Font[c].ic) {acc.x -= Font[c].ic * TeX.scale}

    mitem.nuc = jsMath.Box.SetList([box,acc],style,size);
    if (mitem.nuc.w != box.w) {
      var space = jsMath.mItem.Space(box.w-mitem.nuc.w);
      mitem.nuc = jsMath.Box.SetList([mitem.nuc,space],style,size);
    }
    mitem.type = 'ord';
    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
  },

  /*
   *  Handle an Op atom.  (Rules 13 and 13a)
   */
  op: function (style,size,mitem) {
    var TeX = jsMath.Typeset.TeX(style,size); var box;
    mitem.delta = 0; var isD = (style.charAt(0) == 'D');
    if (mitem.limits == null && isD) {mitem.limits = 1}

    if (mitem.nuc.type == 'TeX') {
      var C = jsMath.TeX[mitem.nuc.font][mitem.nuc.c];
      if (isD && C.n) {mitem.nuc.c = C.n; C = jsMath.TeX[mitem.nuc.font][C.n]}
      box = jsMath.Box.Set(mitem.nuc,style,size);
      if (C.ic) {
        mitem.delta = C.ic * TeX.scale;
        if (mitem.limits || !mitem.sub || jsMath.Browser.msieIntegralBug) 
          {box = jsMath.Box.SetList([box,jsMath.mItem.Space(mitem.delta)],style,size)}
      }
      box.y = -((box.h+box.d)/2 - box.d - TeX.axis_height);
      if (Math.abs(box.y) < .0001) {box.y = 0}
    }

    if (!box) {box = jsMath.Box.Set(mitem.nuc,style,size).Remeasured()}
    if (mitem.limits) {
      var W = box.w; var x = box.w;
      var mlist = [box]; var dh = 0; var dd = 0;
      if (mitem.sup) {
        var sup = jsMath.Box.Set(mitem.sup,jsMath.Typeset.UpStyle(style),size).Remeasured();
        sup.x = ((box.w-sup.w)/2 + mitem.delta/2) - x; dh = TeX.big_op_spacing5;
        W = Math.max(W,sup.w); x += sup.x + sup.w;
        sup.y = box.h+sup.d + box.y +
                    Math.max(TeX.big_op_spacing1,TeX.big_op_spacing3-sup.d);
        mlist[mlist.length] = sup; delete mitem.sup;
      }
      if (mitem.sub) {
        var sub = jsMath.Box.Set(mitem.sub,jsMath.Typeset.DownStyle(style),size).Remeasured();
        sub.x = ((box.w-sub.w)/2 - mitem.delta/2) - x; dd = TeX.big_op_spacing5;
        W = Math.max(W,sub.w); x += sub.x + sub.w;
        sub.y = -box.d-sub.h + box.y -
                   Math.max(TeX.big_op_spacing2,TeX.big_op_spacing4-sub.h);
        mlist[mlist.length] = sub; delete mitem.sub;
      }
      if (W > box.w) {box.x = (W-box.w)/2; x += box.x}
      if (x < W) {mlist[mlist.length] = jsMath.mItem.Space(W-x)}
      mitem.nuc = jsMath.Box.SetList(mlist,style,size);
      mitem.nuc.h += dh; mitem.nuc.d += dd;
    } else {
      if (jsMath.Browser.msieIntegralBug && mitem.sub && C && C.ic) 
        {mitem.nuc = jsMath.Box.SetList([box,jsMath.Box.Space(-C.ic*TeX.scale)],style,size)}
      else if (box.y) {mitem.nuc = jsMath.Box.SetList([box],style,size)}
      jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
    }
  },

  /*
   *  Handle an Ord atom.  (Rule 14)
   */
  ord: function (style,size,mitem,prev,mList,i) {
    if (mitem.nuc.type == 'TeX' && !mitem.sup && !mitem.sub) {
      var nitem = mList.mlist[i+1];
      if (nitem && nitem.atom && nitem.type &&
          (nitem.type == 'ord' || nitem.type == 'op' || nitem.type == 'bin' ||
           nitem.type == 'rel' || nitem.type == 'open' ||
           nitem.type == 'close' || nitem.type == 'punct')) {
        if (nitem.nuc.type == 'TeX' && nitem.nuc.font == mitem.nuc.font) {
          mitem.textsymbol = 1;
          var krn = jsMath.TeX[mitem.nuc.font][mitem.nuc.c].krn;
          krn *= jsMath.Typeset.TeX(style,size).scale;
          if (krn && krn[nitem.nuc.c]) {
            for (var k = mList.mlist.length-1; k > i; k--)
              {mList.mlist[k+1] = mList.mlist[k]}
            mList.mlist[i+1] = jsMath.mItem.Space(krn[nitem.nuc.c]);
          }
        }
      }
    }
    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
  },

  /*
   *  Handle a generalized fraction.  (Rules 15 to 15e)
   */
  fraction: function (style,size,mitem) {
    var TeX = jsMath.Typeset.TeX(style,size); var t = 0;
    if (mitem.thickness != null) {t = mitem.thickness}
    else if (mitem.from.match(/over/)) {t = TeX.default_rule_thickness}
    var isD = (style.charAt(0) == 'D');
    var Cn = (style == 'D')? 'T': (style == "D'")? "T'": jsMath.Typeset.UpStyle(style);
    var Cd = (isD)? "T'": jsMath.Typeset.DownStyle(style);
    var num = jsMath.Box.Set(mitem.num,Cn,size).Remeasured();
    var den = jsMath.Box.Set(mitem.den,Cd,size).Remeasured();

    var u; var v; var w;
    var H = (isD)? TeX.delim1 : TeX.delim2;
    var mlist = [jsMath.Box.Delimiter(H,mitem.left,style)]
    var right = jsMath.Box.Delimiter(H,mitem.right,style);

    if (num.w < den.w) {
      num.x = (den.w-num.w)/2;
      den.x = -(num.w + num.x);
      w = den.w; mlist[1] = num; mlist[2] = den;
    } else {
      den.x = (num.w-den.w)/2;
      num.x = -(den.w + den.x);
      w = num.w; mlist[1] = den; mlist[2] = num;
    }
    if (isD) {u = TeX.num1; v = TeX.denom1} else {
      u = (t != 0)? TeX.num2: TeX.num3;
      v = TeX.denom2;
    }
    if (t == 0) {// atop
      var p = (isD)? 7*TeX.default_rule_thickness: 3*TeX.default_rule_thickness;
      var r = (u - num.d) - (den.h - v);
      if (r < p) {u += (p-r)/2; v += (p-r)/2}
    } else {// over
      var p = (isD)? 3*t: t; var a = TeX.axis_height;
      var r = (u-num.d)-(a+t/2); if (r < p) {u += p-r}
          r = (a-t/2)-(den.h-v); if (r < p) {v += p-r}
      var rule = jsMath.Box.Rule(w,t); rule.x = -w; rule.y = a - t/2;
      mlist[mlist.length] = rule;
    }
    num.y = u; den.y = -v;

    mlist[mlist.length] = right;
    mitem.nuc = jsMath.Box.SetList(mlist,style,size);
    mitem.type = 'ord'; mitem.atom = 1;
    delete mitem.num; delete mitem.den;
    jsMath.mList.prototype.Atomize.SupSub(style,size,mitem);
  },

  /*
   *  Add subscripts and superscripts.  (Rules 17-18f)
   */
  SupSub: function (style,size,mitem) {
    var TeX = jsMath.Typeset.TeX(style,size);
    var nuc = mitem.nuc;
    var box = mitem.nuc = jsMath.Box.Set(mitem.nuc,style,size,0);
    if (box.format == 'null') 
      {box = mitem.nuc = jsMath.Box.Text('','normal',style,size)}

    if (nuc.type == 'TeX') {
      if (!mitem.textsymbol) {
        var C = jsMath.TeX[nuc.font][nuc.c];
        if (C.ic) {
          mitem.delta = C.ic * TeX.scale;
          if (!mitem.sub) {
            box = mitem.nuc = jsMath.Box.SetList([box,jsMath.Box.Space(mitem.delta)],style,size);
            mitem.delta = 0;
          }
        }
      } else {mitem.delta = 0}
    }

    if (!mitem.sup && !mitem.sub) return;
    mitem.nuc.Styled();
    
    var Cd = jsMath.Typeset.DownStyle(style);
    var Cu = jsMath.Typeset.UpStyle(style);
    var q = jsMath.Typeset.TeX(Cu,size).sup_drop;
    var r = jsMath.Typeset.TeX(Cd,size).sub_drop;
    var u = 0; var v = 0; var p;
    if (nuc.type && nuc.type != 'text' && nuc.type != 'TeX' && nuc.type != 'null')
      {u = box.h - q; v = box.d + r}

    if (mitem.sub) {
      var sub = jsMath.Box.Set(mitem.sub,Cd,size);
      sub = jsMath.Box.SetList([sub,jsMath.mItem.Space(TeX.scriptspace)],style,size);
    }

    if (!mitem.sup) {
      sub.y = -Math.max(v,TeX.sub1,sub.h-(4/5)*jsMath.Typeset.TeX(Cd,size).x_height);
      mitem.nuc = jsMath.Box.SetList([box,sub],style,size).Styled(); delete mitem.sub;
      return;
    }

    var sup = jsMath.Box.Set(mitem.sup,Cu,size);
    sup = jsMath.Box.SetList([sup,jsMath.mItem.Space(TeX.scriptspace)],style,size);
    if (style == 'D') {p = TeX.sup1}
    else if (style.charAt(style.length-1) == "'") {p = TeX.sup3}
    else {p = TeX.sup2}
    u = Math.max(u,p,sup.d+jsMath.Typeset.TeX(Cu,size).x_height/4);

    if (!mitem.sub) {
      sup.y = u;
      mitem.nuc = jsMath.Box.SetList([box,sup],style,size); delete mitem.sup;
      return;
    }

    v = Math.max(v,jsMath.Typeset.TeX(Cd,size).sub2);
    var t = TeX.default_rule_thickness;
    if ((u-sup.d) - (sub.h -v) < 4*t) {
      v = 4*t + sub.h - (u-sup.d);
      p = (4/5)*TeX.x_height - (u-sup.d);
      if (p > 0) {u += p; v -= p}
    }
    sup.Remeasured(); sub.Remeasured();
    sup.y = u; sub.y = -v; sup.x = mitem.delta;
    if (sup.w+sup.x > sub.w)
      {sup.x -= sub.w; mitem.nuc = jsMath.Box.SetList([box,sub,sup],style,size)} else
      {sub.x -= (sup.w+sup.x); mitem.nuc = jsMath.Box.SetList([box,sup,sub],style,size)}

    delete mitem.sup; delete mitem.sub;
  }

});


/***************************************************************************/

/*
 *  The Typeset object handles most of the TeX-specific processing
 */

jsMath.Typeset = function (mlist) {
  this.type = 'typeset';
  this.mlist = mlist;
}

jsMath.Add(jsMath.Typeset,{

  /*
   *  The "C-uparrow" style table (TeXbook, p. 441)
   */
  upStyle: {
    D: "S", T: "S",  "D'": "S'", "T'": "S'",
    S: "SS",  SS: "SS",  "S'": "SS'", "SS'": "SS'"
  },

  /*
   *  The "C-downarrow" style table (TeXbook, p. 441)
   */
  downStyle: {
    D: "S'", T: "S'",  "D'": "S'", "T'": "S'",
    S: "SS'",  SS: "SS'",  "S'": "SS'", "SS'": "SS'"
  },

  /*
   *  Get the various styles given the current style
   *  (see TeXbook, p. 441)
   */
  UpStyle: function (style) {return this.upStyle[style]},
  DownStyle: function (style) {return this.downStyle[style]},
  PrimeStyle: function (style) {
    if (style.charAt(style.length-1) == "'") {return style}
    return style + "'"
  },

  /*
   *  A value scaled to the appropriate size for scripts
   */
  StyleValue: function (style,v) {
    if (style == "S" || style == "S'")   {return .7*v}
    if (style == "SS" || style == "SS'") {return .5*v}
    return v;
  },
  
  /*
   *  Return the size associated with a given style and size
   */
  StyleSize: function (style,size) {
    if      (style == "S" || style == "S'")   {size = Math.max(0,size-2)}
    else if (style == "SS" || style == "SS'") {size = Math.max(0,size-4)}
    return size;
  },

  /*
   *  Return the font parameter table for the given style
   */
  TeX: function (style,size) {
    if      (style == "S" || style == "S'")   {size = Math.max(0,size-2)}
    else if (style == "SS" || style == "SS'") {size = Math.max(0,size-4)}
    return jsMath.TeXparams[size];
  },


  /*
   *  Add the CSS class for the given TeX style
   */
  AddStyle: function (style,size,html) {
    if      (style == "S" || style == "S'")   {size = Math.max(0,size-2)}
    else if (style == "SS" || style == "SS'") {size = Math.max(0,size-4)}
    if (size != 4) {html = '<span class="size'+size+'">' + html + '</span>'}
    return html;
  },

  /*
   *  Add the font class, if needed
   */
  AddClass: function (tclass,html) {
    if (tclass != '' && tclass != 'normal') {html = jsMath.HTML.Class(tclass,html)}
    return html;
  }

});


jsMath.Package(jsMath.Typeset,{
  
  /*
   *  The spacing tables for inter-atom spacing
   *  (See rule 20, and Chapter 18, p 170)
   */
  DTsep: {
    ord: {op: 1, bin: 2, rel: 3, inner: 1},
    op:  {ord: 1, op: 1, rel: 3, inner: 1},
    bin: {ord: 2, op: 2, open: 2, inner: 2},
    rel: {ord: 3, op: 3, open: 3, inner: 3},
    open: {},
    close: {op: 1, bin:2, rel: 3, inner: 1},
    punct: {ord: 1, op: 1, rel: 1, open: 1, close: 1, punct: 1, inner: 1},
    inner: {ord: 1, op: 1, bin: 2, rel: 3, open: 1, punct: 1, inner: 1}
  },

  SSsep: {
    ord: {op: 1},
    op:  {ord: 1, op: 1},
    bin: {},
    rel: {},
    open: {},
    close: {op: 1},
    punct: {},
    inner: {op: 1}
  },

  /*
   *  The sizes used in the tables above
   */
  sepW: ['','thinmuskip','medmuskip','thickmuskip'],
  
  
  /*
   *  Find the amount of separation to use between two adjacent
   *  atoms in the given style
   */
  GetSeparation: function (l,r,style) {
    if (l && l.atom && r.atom) {
      var table = this.DTsep; if (style.charAt(0) == "S") {table = this.SSsep}
      var row = table[l.type];
      if (row && row[r.type] != null) {return jsMath.TeX[this.sepW[row[r.type]]]}
    }
    return 0;
  },

  /*
   *  Typeset an mlist (i.e., turn it into HTML).
   *  Here, text items of the same class and style are combined
   *  to reduce the number of <SPAN> tags used (though it is still
   *  huge).  Spaces are combined, when possible.
   *  ###  More needs to be done with that.  ###
   *  The width of the final box is recomputed at the end, since
   *  the final width is not necessarily the sum of the widths of
   *  the individual parts (widths are in pixels, but the browsers
   *  puts pieces together using sub-pixel accuracy).
   */
  Typeset: function (style,size) {
    this.style = style; this.size = size; var unset = -10000
    this.w = 0; this.h = unset; this.d = unset;
    this.bh = this.h; this.bd = this.d;
    this.tbuf = ''; this.tx = 0; this.tclass = '';
    this.cbuf = ''; this.hbuf = ''; this.hx = 0;
    var mitem = null; var prev; this.x = 0; this.dx = 0;

    for (var i = 0; i < this.mlist.length; i++) {
      prev = mitem; mitem = this.mlist[i];
      switch (mitem.type) {

        case 'size':
          this.FlushClassed();
          this.size = mitem.size;
          mitem = prev; // hide this from TeX
          break;

        case 'style':
          this.FlushClassed();
          if (this.style.charAt(this.style.length-1) == "'")
            {this.style = mitem.style + "'"} else {this.style = mitem.style}
          mitem = prev; // hide this from TeX
          break;

        case 'space':
          if (typeof(mitem.w) == 'object') {
            if (this.style.charAt(1) == 'S') {mitem.w = .5*mitem.w[0]/18}
            else if (this.style.charAt(0) == 'S') {mitem.w = .7*mitem.w[0]/18}
            else {mitem.w = mitem.w[0]/18}
          }
          this.dx += mitem.w-0; // mitem.w is sometimes a string?
          mitem = prev; // hide this from TeX
          break;
          
        case 'html':
          this.FlushClassed();
          if (this.hbuf == '') {this.hx = this.x}
          this.hbuf += mitem.html;
          mitem = prev; // hide this from TeX
          break;
          
        default:   // atom
          if (!mitem.atom && mitem.type != 'box') break;
          mitem.nuc.x += this.dx + this.GetSeparation(prev,mitem,this.style);
          if (mitem.nuc.y || mitem.nuc.x) mitem.nuc.Styled();
          this.dx = 0; this.x = this.x + this.w;
          this.w += mitem.nuc.w + mitem.nuc.x;
          if (mitem.nuc.format == 'text') {
            if (this.tclass != mitem.nuc.tclass && this.tclass != '') this.FlushText();
            if (this.tbuf == '' && this.cbuf == '') {this.tx = this.x}
            this.tbuf += mitem.nuc.html; this.tclass = mitem.nuc.tclass;
          } else  {
            this.FlushClassed();
            if (mitem.nuc.x || mitem.nuc.y) this.Place(mitem.nuc);
            if (this.hbuf == '') {this.hx = this.x}
            this.hbuf += mitem.nuc.html;
          }
          this.h = Math.max(this.h,mitem.nuc.h+mitem.nuc.y); this.bh = Math.max(this.bh,mitem.nuc.bh);
          this.d = Math.max(this.d,mitem.nuc.d-mitem.nuc.y); this.bd = Math.max(this.bd,mitem.nuc.bd);
          break;
      }
    }
    
    this.FlushClassed(); // make sure scaling is included
    if (this.dx) {this.hbuf += jsMath.HTML.Spacer(this.dx); this.w += this.dx}
    if (this.hbuf == '') {return jsMath.Box.Null}
    if (this.h == unset) {this.h = 0}
    if (this.d == unset) {this.d = 0}
    var box = new jsMath.Box('html',this.hbuf,this.w,this.h,this.d);
    box.bh = this.bh; box.bd = this.bd;
    return box;
  },

  /*
   *  Add the font to the buffered text and move it to the
   *  classed-text buffer.
   */
  FlushText: function () {
    if (this.tbuf == '') return;
    this.cbuf += jsMath.Typeset.AddClass(this.tclass,this.tbuf);
    this.tbuf = ''; this.tclass = '';
  },

  /*
   *  Add the script or scriptscript style to the text and
   *  move it to the HTML buffer
   */
  FlushClassed: function () {
    this.FlushText();
    if (this.cbuf == '') return;
    if (this.hbuf == '') {this.hx = this.tx}
    this.hbuf += jsMath.Typeset.AddStyle(this.style,this.size,this.cbuf);
    this.cbuf = '';
  },

  /*
   *  Add a <SPAN> to position an item's HTML, and
   *  adjust the item's height and depth.
   *  (This may be replaced buy one of the following browser-specific
   *   versions by Browser.Init().)
   */
  Place: function (item) {
    var html = '<span style="position: relative;';
    if (item.x) {html += ' margin-left:'+jsMath.HTML.Em(item.x)+';'}
    if (item.y) {html += ' top:'+jsMath.HTML.Em(-item.y)+';'}
    item.html = html + '">' + item.html + '</span>';
    item.h += item.y; item.d -= item.y;
    item.x = 0; item.y = 0;
  },
  
  /*
   *  For MSIE on Windows, backspacing must be done in a separate
   *  <SPAN>, otherwise the contents will be clipped.  Netscape
   *  also doesn't combine vertical and horizontal spacing well.
   *  Here, the horizontal and vertical spacing are done separately.
   */
  PlaceSeparateSkips: function (item) {
    if (item.y) {
      item.html = '<span style="position: relative; '
                     + 'top:'+jsMath.HTML.Em(-item.y)+';'
                     + '">' + item.html + '</span>'
    }
    if (item.x) {item.html = jsMath.HTML.Spacer(item.x) + item.html}
    item.h += item.y; item.d -= item.y;
    item.x = 0; item.y = 0;
  }
  
});



/***************************************************************************/

/*
 *  The Parse object handles the parsing of the TeX input string, and creates
 *  the mList to be typeset by the Typeset object above.
 */

jsMath.Parse = function (s,font,size,style) {
  var parse = new jsMath.Parser(s,font,size,style);
  parse.Parse();
  return parse;
}

jsMath.Parser = function (s,font,size,style) {
  this.string = s; this.i = 0;
  this.mlist = new jsMath.mList(null,font,size,style);
}

jsMath.Package(jsMath.Parser,{
  
  // special characters
  cmd:   '\\',
  open:  '{',
  close: '}',
  
  // patterns for letters and numbers
  letter:  /[a-z]/i,
  number:  /[0-9]/,
  //  pattern for macros to ^ and _ that should be read with arguments
  scriptargs: /^((math|text)..|mathcal)$/,
  
  //  the \mathchar definitions (see Appendix B of the TeXbook).
  mathchar: {
    '!': [5,0,0x21],
    '(': [4,0,0x28],
    ')': [5,0,0x29],
    '*': [2,2,0x03], // \ast
    '+': [2,0,0x2B],
    ',': [6,1,0x3B],
    '-': [2,2,0x00],
    '.': [0,1,0x3A],
    '/': [0,1,0x3D],
    ':': [3,0,0x3A],
    ';': [6,0,0x3B],
    '<': [3,1,0x3C],
    '=': [3,0,0x3D],
    '>': [3,1,0x3E],
    '?': [5,0,0x3F],
    '[': [4,0,0x5B],
    ']': [5,0,0x5D],
//  '{': [4,2,0x66],
//  '}': [5,2,0x67],
    '|': [0,2,0x6A]
  },

  //  handle special \catcode characters
  special: {
    '~':   'Tilde',
    '^':   'HandleSuperscript',
    '_':   'HandleSubscript',
    ' ':   'Space',
    '\01': 'Space',
    "\t":  'Space',
    "\r":  'Space',
    "\n":  'Space',
    "'":   'Prime',
    '%':   'HandleComment',
    '&':   'HandleEntry'
  },

  // the \mathchardef table (see Appendix B of the TeXbook).
  mathchardef: {
  // brace parts
    braceld:      [0,3,0x7A],
    bracerd:      [0,3,0x7B],
    bracelu:      [0,3,0x7C],
    braceru:      [0,3,0x7D],

  // Greek letters
    alpha:        [0,1,0x0B],
    beta:         [0,1,0x0C],
    gamma:        [0,1,0x0D],
    delta:        [0,1,0x0E],
    epsilon:      [0,1,0x0F],
    zeta:         [0,1,0x10],
    eta:          [0,1,0x11],
    theta:        [0,1,0x12],
    iota:         [0,1,0x13],
    kappa:        [0,1,0x14],
    lambda:       [0,1,0x15],
    mu:           [0,1,0x16],
    nu:           [0,1,0x17],
    xi:           [0,1,0x18],
    pi:           [0,1,0x19],
    rho:          [0,1,0x1A],
    sigma:        [0,1,0x1B],
    tau:          [0,1,0x1C],
    upsilon:      [0,1,0x1D],
    phi:          [0,1,0x1E],
    chi:          [0,1,0x1F],
    psi:          [0,1,0x20],
    omega:        [0,1,0x21],
    varepsilon:   [0,1,0x22],
    vartheta:     [0,1,0x23],
    varpi:        [0,1,0x24],
    varrho:       [0,1,0x25],
    varsigma:     [0,1,0x26],
    varphi:       [0,1,0x27],
    
    Gamma:        [7,0,0x00],
    Delta:        [7,0,0x01],
    Theta:        [7,0,0x02],
    Lambda:       [7,0,0x03],
    Xi:           [7,0,0x04],
    Pi:           [7,0,0x05],
    Sigma:        [7,0,0x06],
    Upsilon:      [7,0,0x07],
    Phi:          [7,0,0x08],
    Psi:          [7,0,0x09],
    Omega:        [7,0,0x0A],

  // Ord symbols
    aleph:        [0,2,0x40],
    imath:        [0,1,0x7B],
    jmath:        [0,1,0x7C],
    ell:          [0,1,0x60],
    wp:           [0,1,0x7D],
    Re:           [0,2,0x3C],
    Im:           [0,2,0x3D],
    partial:      [0,1,0x40],
    infty:        [0,2,0x31],
    prime:        [0,2,0x30],
    emptyset:     [0,2,0x3B],
    nabla:        [0,2,0x72],
    surd:         [1,2,0x70],
    top:          [0,2,0x3E],
    bot:          [0,2,0x3F],
    triangle:     [0,2,0x34],
    forall:       [0,2,0x38],
    exists:       [0,2,0x39],
    neg:          [0,2,0x3A],
    lnot:         [0,2,0x3A],
    flat:         [0,1,0x5B],
    natural:      [0,1,0x5C],
    sharp:        [0,1,0x5D],
    clubsuit:     [0,2,0x7C],
    diamondsuit:  [0,2,0x7D],
    heartsuit:    [0,2,0x7E],
    spadesuit:    [0,2,0x7F],

  // big ops
    coprod:      [1,3,0x60],
    bigvee:      [1,3,0x57],
    bigwedge:    [1,3,0x56],
    biguplus:    [1,3,0x55],
    bigcap:      [1,3,0x54],
    bigcup:      [1,3,0x53],
    intop:       [1,3,0x52], 
    prod:        [1,3,0x51],
    sum:         [1,3,0x50],
    bigotimes:   [1,3,0x4E],
    bigoplus:    [1,3,0x4C],
    bigodot:     [1,3,0x4A],
    ointop:      [1,3,0x48],
    bigsqcup:    [1,3,0x46],
    smallint:    [1,2,0x73],

  // binary operations
    triangleleft:      [2,1,0x2F],
    triangleright:     [2,1,0x2E],
    bigtriangleup:     [2,2,0x34],
    bigtriangledown:   [2,2,0x35],
    wedge:       [2,2,0x5E],
    land:        [2,2,0x5E],
    vee:         [2,2,0x5F],
    lor:         [2,2,0x5F],
    cap:         [2,2,0x5C],
    cup:         [2,2,0x5B],
    ddagger:     [2,2,0x7A],
    dagger:      [2,2,0x79],
    sqcap:       [2,2,0x75],
    sqcup:       [2,2,0x74],
    uplus:       [2,2,0x5D],
    amalg:       [2,2,0x71],
    diamond:     [2,2,0x05],
    bullet:      [2,2,0x0F],
    wr:          [2,2,0x6F],
    div:         [2,2,0x04],
    odot:        [2,2,0x0C],
    oslash:      [2,2,0x0B],
    otimes:      [2,2,0x0A],
    ominus:      [2,2,0x09],
    oplus:       [2,2,0x08],
    mp:          [2,2,0x07],
    pm:          [2,2,0x06],
    circ:        [2,2,0x0E],
    bigcirc:     [2,2,0x0D],
    setminus:    [2,2,0x6E], // for set difference A\setminus B
    cdot:        [2,2,0x01],
    ast:         [2,2,0x03],
    times:       [2,2,0x02],
    star:        [2,1,0x3F],

  // Relations
    propto:      [3,2,0x2F],
    sqsubseteq:  [3,2,0x76],
    sqsupseteq:  [3,2,0x77],
    parallel:    [3,2,0x6B],
    mid:         [3,2,0x6A],
    dashv:       [3,2,0x61],
    vdash:       [3,2,0x60],
    leq:         [3,2,0x14],
    le:          [3,2,0x14],
    geq:         [3,2,0x15],
    ge:          [3,2,0x15],
    succ:        [3,2,0x1F],
    prec:        [3,2,0x1E],
    approx:      [3,2,0x19],
    succeq:      [3,2,0x17],
    preceq:      [3,2,0x16],
    supset:      [3,2,0x1B],
    subset:      [3,2,0x1A],
    supseteq:    [3,2,0x13],
    subseteq:    [3,2,0x12],
    'in':        [3,2,0x32],
    ni:          [3,2,0x33],
    owns:        [3,2,0x33],
    gg:          [3,2,0x1D],
    ll:          [3,2,0x1C],
    not:         [3,2,0x36],
    sim:         [3,2,0x18],
    simeq:       [3,2,0x27],
    perp:        [3,2,0x3F],
    equiv:       [3,2,0x11],
    asymp:       [3,2,0x10],
    smile:       [3,1,0x5E],
    frown:       [3,1,0x5F],

  // Arrows
    Leftrightarrow:   [3,2,0x2C],
    Leftarrow:        [3,2,0x28],
    Rightarrow:       [3,2,0x29],
    leftrightarrow:   [3,2,0x24],
    leftarrow:        [3,2,0x20],
    gets:             [3,2,0x20],
    rightarrow:       [3,2,0x21],
    to:               [3,2,0x21],
    mapstochar:       [3,2,0x37],
    leftharpoonup:    [3,1,0x28],
    leftharpoondown:  [3,1,0x29],
    rightharpoonup:   [3,1,0x2A],
    rightharpoondown: [3,1,0x2B],
    nearrow:          [3,2,0x25],
    searrow:          [3,2,0x26],
    nwarrow:          [3,2,0x2D],
    swarrow:          [3,2,0x2E],

    hbarchar:   [0,0,0x16], // for \hbar
    lhook:      [3,1,0x2C],
    rhook:      [3,1,0x2D],

    ldotp:      [6,1,0x3A], // ldot as a punctuation mark
    cdotp:      [6,2,0x01], // cdot as a punctuation mark
    colon:      [6,0,0x3A], // colon as a punctuation mark

    '#':        [7,0,0x23],
    '$':        [7,0,0x24],
    '%':        [7,0,0x25],
    '&':        [7,0,0x26]
  },
  
  // The delimiter table (see Appendix B of the TeXbook)
  delimiter: {
    '(':                [0,0,0x28,3,0x00],
    ')':                [0,0,0x29,3,0x01],
    '[':                [0,0,0x5B,3,0x02],
    ']':                [0,0,0x5D,3,0x03],
    '<':                [0,2,0x68,3,0x0A],
    '>':                [0,2,0x69,3,0x0B],
    '/':                [0,0,0x2F,3,0x0E],
    '|':                [0,2,0x6A,3,0x0C],
    '.':                [0,0,0x00,0,0x00],
    '\\':               [0,2,0x6E,3,0x0F],
    '\\lmoustache':     [4,3,0x7A,3,0x40],  // top from (, bottom from )
    '\\rmoustache':     [5,3,0x7B,3,0x41],  // top from ), bottom from (
    '\\lgroup':         [4,6,0x28,3,0x3A],  // extensible ( with sharper tips
    '\\rgroup':         [5,6,0x29,3,0x3B],  // extensible ) with sharper tips
    '\\arrowvert':      [0,2,0x6A,3,0x3C],  // arrow without arrowheads
    '\\Arrowvert':      [0,2,0x6B,3,0x3D],  // double arrow without arrowheads
//  '\\bracevert':      [0,7,0x7C,3,0x3E],  // the vertical bar that extends braces
    '\\bracevert':      [0,2,0x6A,3,0x3E],  // we don't load tt, so use | instead
    '\\Vert':           [0,2,0x6B,3,0x0D],
    '\\|':              [0,2,0x6B,3,0x0D],
    '\\vert':           [0,2,0x6A,3,0x0C],
    '\\uparrow':        [3,2,0x22,3,0x78],
    '\\downarrow':      [3,2,0x23,3,0x79],
    '\\updownarrow':    [3,2,0x6C,3,0x3F],
    '\\Uparrow':        [3,2,0x2A,3,0x7E],
    '\\Downarrow':      [3,2,0x2B,3,0x7F],
    '\\Updownarrow':    [3,2,0x6D,3,0x77],
    '\\backslash':      [0,2,0x6E,3,0x0F],  // for double coset G\backslash H
    '\\rangle':         [5,2,0x69,3,0x0B],
    '\\langle':         [4,2,0x68,3,0x0A],
    '\\rbrace':         [5,2,0x67,3,0x09],
    '\\lbrace':         [4,2,0x66,3,0x08],
    '\\}':              [5,2,0x67,3,0x09],
    '\\{':              [4,2,0x66,3,0x08],
    '\\rceil':          [5,2,0x65,3,0x07],
    '\\lceil':          [4,2,0x64,3,0x06],
    '\\rfloor':         [5,2,0x63,3,0x05],
    '\\lfloor':         [4,2,0x62,3,0x04],
    '\\lbrack':         [0,0,0x5B,3,0x02],
    '\\rbrack':         [0,0,0x5D,3,0x03]
  },

  /*
   *  The basic macros for plain TeX.
   *
   *  When the control sequence on the left is called, the JavaScript
   *  funtion on the right is called, with the name of the control sequence
   *  as its first parameter (this way, the same function can be called by
   *  several different control sequences to do similar actions, and the
   *  function can still tell which TeX command was issued).  If the right
   *  is an array, the first entry is the routine to call, and the
   *  remaining entries in the array are parameters to pass to the function
   *  as the second parameter (they are in an array reference).
   *  
   *  Note:  TeX macros as defined by the user are discussed below.
   */
  macros: {
    displaystyle:      ['HandleStyle','D'],
    textstyle:         ['HandleStyle','T'],
    scriptstyle:       ['HandleStyle','S'],
    scriptscriptstyle: ['HandleStyle','SS'],
    
    rm:                ['HandleFont',0],
    mit:               ['HandleFont',1],
    oldstyle:          ['HandleFont',1],
    cal:               ['HandleFont',2],
    it:                ['HandleFont',4],
    bf:                ['HandleFont',6],
    
    left:              'HandleLeft',
    right:             'HandleRight',

    arcsin:       ['NamedOp',0],
    arccos:       ['NamedOp',0],
    arctan:       ['NamedOp',0],
    arg:          ['NamedOp',0],
    cos:          ['NamedOp',0],
    cosh:         ['NamedOp',0],
    cot:          ['NamedOp',0],
    coth:         ['NamedOp',0],
    csc:          ['NamedOp',0],
    deg:          ['NamedOp',0],
    det:           'NamedOp',
    dim:          ['NamedOp',0],
    exp:          ['NamedOp',0],
    gcd:           'NamedOp',
    hom:          ['NamedOp',0],
    inf:           'NamedOp',
    ker:          ['NamedOp',0],
    lg:           ['NamedOp',0],
    lim:           'NamedOp',
    liminf:       ['NamedOp',null,'lim<span style="margin-left: '+1/6+'em"></span>inf'],
    limsup:       ['NamedOp',null,'lim<span style="margin-left: '+1/6+'em"></span>sup'],
    ln:           ['NamedOp',0],
    log:          ['NamedOp',0],
    max:           'NamedOp',
    min:           'NamedOp',
    Pr:            'NamedOp',
    sec:          ['NamedOp',0],
    sin:          ['NamedOp',0],
    sinh:         ['NamedOp',0],
    sup:           'NamedOp',
    tan:          ['NamedOp',0],
    tanh:         ['NamedOp',0],

    vcenter:        ['HandleAtom','vcenter'],
    overline:       ['HandleAtom','overline'],
    underline:      ['HandleAtom','underline'],
    over:            'HandleOver',
    overwithdelims:  'HandleOver',
    atop:            'HandleOver',
    atopwithdelims:  'HandleOver',
    above:           'HandleOver',
    abovewithdelims: 'HandleOver',
    brace:           ['HandleOver','\\{','\\}'],
    brack:           ['HandleOver','[',']'],
    choose:          ['HandleOver','(',')'],
    
    overbrace:       ['Extension','leaders'],
    underbrace:      ['Extension','leaders'],
    overrightarrow:  ['Extension','leaders'],
    overleftarrow:   ['Extension','leaders'],
    overset:         ['Extension','underset-overset'],
    underset:        ['Extension','underset-overset'],

    llap:            'HandleLap',
    rlap:            'HandleLap',
    ulap:            'HandleLap',
    dlap:            'HandleLap',
    raise:           'RaiseLower',
    lower:           'RaiseLower',
    moveleft:        'MoveLeftRight',
    moveright:       'MoveLeftRight',

    frac:            'Frac',
    root:            'Root',
    sqrt:            'Sqrt',

    //  TeX substitution macros
    hbar:               ['Macro','\\hbarchar\\kern-.5em h'],
    ne:                 ['Macro','\\not='],
    neq:                ['Macro','\\not='],
    notin:              ['Macro','\\mathrel{\\rlap{\\kern2mu/}}\\in'],
    cong:               ['Macro','\\mathrel{\\lower2mu{\\mathrel{{\\rlap{=}\\raise6mu\\sim}}}}'],
    bmod:               ['Macro','\\mathbin{\\rm mod}'],
    pmod:               ['Macro','\\kern 18mu ({\\rm mod}\\,\\,#1)',1],
    'int':              ['Macro','\\intop\\nolimits'],
    oint:               ['Macro','\\ointop\\nolimits'],
    doteq:              ['Macro','\\buildrel\\textstyle.\\over='],
    ldots:              ['Macro','\\mathinner{\\ldotp\\ldotp\\ldotp}'],
    cdots:              ['Macro','\\mathinner{\\cdotp\\cdotp\\cdotp}'],
    vdots:              ['Macro','\\mathinner{\\rlap{\\raise8pt{.\\rule 0pt 6pt 0pt}}\\rlap{\\raise4pt{.}}.}'],
    ddots:              ['Macro','\\mathinner{\\kern1mu\\raise7pt{\\rule 0pt 7pt 0pt .}\\kern2mu\\raise4pt{.}\\kern2mu\\raise1pt{.}\\kern1mu}'],
    joinrel:            ['Macro','\\mathrel{\\kern-4mu}'],
    relbar:             ['Macro','\\mathrel{\\smash-}'], // \smash, because - has the same height as +
    Relbar:             ['Macro','\\mathrel='],
    bowtie:             ['Macro','\\mathrel\\triangleright\\joinrel\\mathrel\\triangleleft'],
    models:             ['Macro','\\mathrel|\\joinrel='],
    mapsto:             ['Macro','\\mapstochar\\rightarrow'],
    rightleftharpoons:  ['Macro','\\vcenter{\\mathrel{\\rlap{\\raise3mu{\\rightharpoonup}}}\\leftharpoondown}'],
    hookrightarrow:     ['Macro','\\lhook\\joinrel\\rightarrow'],
    hookleftarrow:      ['Macro','\\leftarrow\\joinrel\\rhook'],
    Longrightarrow:     ['Macro','\\Relbar\\joinrel\\Rightarrow'],
    longrightarrow:     ['Macro','\\relbar\\joinrel\\rightarrow'],
    longleftarrow:      ['Macro','\\leftarrow\\joinrel\\relbar'],
    Longleftarrow:      ['Macro','\\Leftarrow\\joinrel\\Relbar'],
    longmapsto:         ['Macro','\\mapstochar\\char{cmsy10}{0}\\joinrel\\rightarrow'],
    longleftrightarrow: ['Macro','\\leftarrow\\joinrel\\rightarrow'],
    Longleftrightarrow: ['Macro','\\Leftarrow\\joinrel\\Rightarrow'],
    iff:                ['Macro','\\;\\Longleftrightarrow\\;'],
    mathcal:            ['Macro','{\\cal #1}',1],
    mathrm:             ['Macro','{\\rm #1}',1],
    mathbf:             ['Macro','{\\bf #1}',1],
    mathbb:             ['Macro','{\\bf #1}',1],
    mathit:             ['Macro','{\\it #1}',1],
    textrm:             ['Macro','\\mathord{\\hbox{#1}}',1],
    textit:             ['Macro','\\mathord{\\class{textit}{\\hbox{#1}}}',1],
    textbf:             ['Macro','\\mathord{\\class{textbf}{\\hbox{#1}}}',1],

    TeX:                ['Macro','T\\kern-.1667em\\lower.5ex{E}\\kern-.125em X'],

    limits:       ['Limits',1],
    nolimits:     ['Limits',0],

    ',':          ['Spacer',1/6],
    ':':          ['Spacer',1/6],  // for LaTeX
    '>':          ['Spacer',2/9],
    ';':          ['Spacer',5/18],
    '!':          ['Spacer',-1/6],
    enspace:      ['Spacer',1/2],
    quad:         ['Spacer',1],
    qquad:        ['Spacer',2],
    thinspace:    ['Spacer',1/6],
    negthinspace: ['Spacer',-1/6],
    
    hskip:         'Hskip',
    kern:          'Hskip',
    rule:          ['Rule','colored'],
    space:         ['Rule','blank'],
    
    big:        ['MakeBig','ord',0.85],
    Big:        ['MakeBig','ord',1.15],
    bigg:       ['MakeBig','ord',1.45],
    Bigg:       ['MakeBig','ord',1.75],
    bigl:       ['MakeBig','open',0.85],
    Bigl:       ['MakeBig','open',1.15],
    biggl:      ['MakeBig','open',1.45],
    Biggl:      ['MakeBig','open',1.75],
    bigr:       ['MakeBig','close',0.85],
    Bigr:       ['MakeBig','close',1.15],
    biggr:      ['MakeBig','close',1.45],
    Biggr:      ['MakeBig','close',1.75],
    bigm:       ['MakeBig','rel',0.85],
    Bigm:       ['MakeBig','rel',1.15],
    biggm:      ['MakeBig','rel',1.45],
    Biggm:      ['MakeBig','rel',1.75],
    
    mathord:    ['HandleAtom','ord'],
    mathop:     ['HandleAtom','op'],
    mathopen:   ['HandleAtom','open'],
    mathclose:  ['HandleAtom','close'],
    mathbin:    ['HandleAtom','bin'],
    mathrel:    ['HandleAtom','rel'],
    mathpunct:  ['HandleAtom','punct'],
    mathinner:  ['HandleAtom','inner'],
    
    mathchoice: ['Extension','mathchoice'],
    buildrel:   'BuildRel',
    
    hbox:       'HBox',
    text:       'HBox',
    mbox:       'HBox',
    fbox:       ['Extension','fbox'],

    strut:      'Strut',
    mathstrut:  ['Macro','\\vphantom{(}'],
    phantom:    ['Phantom',1,1],
    vphantom:   ['Phantom',1,0],
    hphantom:   ['Phantom',0,1],
    smash:      'Smash',
    
    acute:      ['MathAccent', [7,0,0x13]],
    grave:      ['MathAccent', [7,0,0x12]],
    ddot:       ['MathAccent', [7,0,0x7F]],
    tilde:      ['MathAccent', [7,0,0x7E]],
    bar:        ['MathAccent', [7,0,0x16]],
    breve:      ['MathAccent', [7,0,0x15]],
    check:      ['MathAccent', [7,0,0x14]],
    hat:        ['MathAccent', [7,0,0x5E]],
    vec:        ['MathAccent', [0,1,0x7E]],
    dot:        ['MathAccent', [7,0,0x5F]],
    widetilde:  ['MathAccent', [0,3,0x65]],
    widehat:    ['MathAccent', [0,3,0x62]],

    '_':        ['Replace','ord','_','normal',-.4,.1],
    ' ':        ['Replace','ord','&nbsp;','normal'],
    angle:      ['Replace','ord','&#x2220;','normal'],
        
    matrix:     'Matrix',
    array:      'Matrix',  // ### still need to do alignment options ###
    pmatrix:    ['Matrix','(',')','c'],
    cases:      ['Matrix','\\{','.',['l','l']],
    cr:         'HandleRow',
    '\\':       'HandleRow',
    
    //  LaTeX
    begin:      'Begin',
    end:        'End',
    tiny:       ['HandleSize',0],
    Tiny:       ['HandleSize',1],  // non-standard
    scriptsize: ['HandleSize',2],
    small:      ['HandleSize',3],
    normalsize: ['HandleSize',4],
    large:      ['HandleSize',5],
    Large:      ['HandleSize',6],
    LARGE:      ['HandleSize',7],
    huge:       ['HandleSize',8],
    Huge:       ['HandleSize',9],
    dots:       ['Macro','\\ldots'],
    
    newcommand: ['Extension','newcommand'],
    def:        ['Extension','newcommand'],

    //  Extensions to TeX
    color:      ['Extension','HTML'],
    href:       ['Extension','HTML'],
    'class':    ['Extension','HTML'],
    style:      ['Extension','HTML'],
    cssId:      ['Extension','HTML'],
    unicode:    ['Extension','HTML'],
    
    require:    'Require',
    
    //  debugging and test routines
    'char':     'Char'
  },
  
  /*
   *  LaTeX environments
   */
  environments: {
    array:      'Array',
    matrix:     ['Array',null,null,'c'],
    pmatrix:    ['Array','(',')','c'],
    bmatrix:    ['Array','[',']','c'],
    Bmatrix:    ['Array','\\{','\\}','c'],
    vmatrix:    ['Array','\\vert','\\vert','c'],
    Vmatrix:    ['Array','\\Vert','\\Vert','c'],
    cases:      ['Array','\\{','.','ll'],
    eqnarray:   ['Array',null,null,'rcl',[5/18,5/18],'D']
  },


  /***************************************************************************/

  /*
   *  Add special characters to list above.  (This makes it possible
   *  to define them in a variable that the user can change.)
   */
  AddSpecial: function (obj) {
    for (var id in obj) {
      jsMath.Parser.prototype.special[jsMath.Parser.prototype[id]] = obj[id];
    }
  },

  /*
   *  Throw an error
   */
  Error: function (s) {
    this.i = this.string.length;
    if (s.error) {this.error = s.error} else {
      if (!this.error) {this.error = s}
    }
  },

  /***************************************************************************/

  /*
   *  Check if the next character is a space
   */
  nextIsSpace: function () {
    return this.string.charAt(this.i) == ' ';
  },
  
  /*
   *  Trim spaces from a string
   */
  trimSpaces: function (text) {
    if (typeof(text) != 'string') {return text}
    return text.replace(/^\s+|\s+/g,'');
  },

  /*
   *  Parse a substring to get its mList, and return it.
   *  Check that no errors occured
   */
  Process: function (arg) {
    var data = this.mlist.data;
    arg = jsMath.Parse(arg,data.font,data.size,data.style);
      if (arg.error) {this.Error(arg); return null}
    if (arg.mlist.Length() == 0) {return null}
    if (arg.mlist.Length() == 1) {
      var atom = arg.mlist.Last();
      if (atom.atom && atom.type == 'ord' && atom.nuc &&
         !atom.sub && !atom.sup && (atom.nuc.type == 'text' || atom.nuc.type == 'TeX'))
             {return atom.nuc}
    }
    return {type: 'mlist', mlist: arg.mlist};
  },

  /*
   *  Get and return a control-sequence name from the TeX string
   */
  GetCommand: function () {
    var letter = /^([a-z]+|.) ?/i;
    var cmd = letter.exec(this.string.slice(this.i));
    if (cmd) {this.i += cmd[1].length; return cmd[1]}
    this.Error("Missing control sequnece name at end of string or argument");
    return null;
  },

  /*
   *  Get and return a TeX argument (either a single character or control sequence,
   *  or the contents of the next set of braces).
   */
  GetArgument: function (name,noneOK) {
    while (this.nextIsSpace()) {this.i++}
    if (this.i >= this.string.length) {if (!noneOK) this.Error("Missing argument for "+name); return null}
    if (this.string.charAt(this.i) == this.close) {if (!noneOK) this.Error("Extra close brace"); return null}
    if (this.string.charAt(this.i) == this.cmd) {this.i++; return this.cmd+this.GetCommand()}
    if (this.string.charAt(this.i) != this.open) {return this.string.charAt(this.i++)}
    var j = ++this.i; var pcount = 1; var c = '';
    while (this.i < this.string.length) {
      c = this.string.charAt(this.i++);
      if (c == this.cmd) {this.i++}
      else if (c == this.open) {pcount++}
      else if (c == this.close) {
        if (pcount == 0) {this.Error("Extra close brace"); return null}
        if (--pcount == 0) {return this.string.slice(j,this.i-1)}
      }
    }
    this.Error("Missing close brace");
    return null;
  },

  /*
   *  Get an argument and process it into an mList
   */
  ProcessArg: function (name) {
    var arg = this.GetArgument(name); if (this.error) {return null}
    return this.Process(arg);
  },
  
  /*
   *  Get and process an argument for a super- or subscript.
   *  (read extra args for \frac, \sqrt, \mathrm, etc.)
   *  This handles these macros as special cases, so is really
   *  rather a hack.  A more general method for indicating
   *  how to handle macros in scripts needs to be developed.
   */
  ProcessScriptArg: function (name) {
    var arg = this.GetArgument(name); if (this.error) {return null}
    if (arg.charAt(0) == this.cmd) {
      csname = arg.substr(1);
      if (csname == "frac") {
        arg += '{'+this.GetArgument(csname)+'}'; if (this.error) {return null}
        arg += '{'+this.GetArgument(csname)+'}'; if (this.error) {return null}
      } else if (csname == "sqrt") {
        arg += '['+this.GetBrackets(csname)+']'; if (this.error) {return null}
        arg += '{'+this.GetArgument(csname)+'}'; if (this.error) {return null}
      } else if (csname.match(this.scriptargs)) {
        arg += '{'+this.GetArgument(csname)+'}'; if (this.error) {return null}
      }
    }
    return this.Process(arg);
  },

  /*
   *  Get the name of a delimiter (check it in the delimiter list).
   */
  GetDelimiter: function (name) {
    while (this.nextIsSpace()) {this.i++}
    var c = this.string.charAt(this.i);
    if (this.i < this.string.length) {
      this.i++;
      if (c == this.cmd) {c = '\\'+this.GetCommand(name); if (this.error) return null}
      if (this.delimiter[c] != null) {return this.delimiter[c]}
    }
    this.Error("Missing or unrecognized delimiter for "+name);
    return null;
  },
  
  /*
   *  Get a dimension (including its units).
   *  Convert the dimen to em's, except for mu's, which must be
   *  converted when typeset.
   */
  GetDimen: function (name,nomu) {
    var rest; var advance = 0;
    if (this.nextIsSpace()) {this.i++}
    if (this.string.charAt(this.i) == '{') {
      rest = this.GetArgument(name);
    } else {
      rest = this.string.slice(this.i);
      advance = 1;
    }
    var match = rest.match(/^\s*([-+]?(\.\d+|\d+(\.\d*)?))(pt|em|ex|mu|px)/);
    if (!match) {this.Error("Missing dimension or its units for "+name); return null}
    if (advance) {
      this.i += match[0].length;
      if (this.nextIsSpace()) {this.i++}
    }
    var d = match[1]-0;
    if (match[4] == 'px') {d /= jsMath.em}
    else if (match[4] == 'pt') {d /= 10}
    else if (match[4] == 'ex') {d *= jsMath.TeX.x_height}
    else if (match[4] == 'mu') {if (nomu) {d = d/18} else {d = [d,'mu']}}
    return d;
  },

  /*
   *  Get the next non-space character
   */
  GetNext: function () {
    while (this.nextIsSpace()) {this.i++}
    return this.string.charAt(this.i);
  },
  
  /*
   *  Get an optional LaTeX argument in brackets
   */
  GetBrackets: function (name) {
    var c = this.GetNext(); if (c != '[') return '';
    var start = ++this.i; var pcount = 0;
    while (this.i < this.string.length) {
      var c = this.string.charAt(this.i++);
      if (c == '{') {pcount++}
      else if (c == '}') {
        if (pcount == 0)
          {this.Error("Extra close brace while looking for ']'"); return null}
        pcount --;
      } else if (c == this.cmd) {
        this.i++;
      } else if (c == ']') {
        if (pcount == 0) {return this.string.slice(start,this.i-1)}
      }
    }
    this.Error("Couldn't find closing ']' for argument to "+this.cmd+name);
    return null;
  },
  
  /*
   *  Get everything up to the given control sequence name (token)
   */
  GetUpto: function (name,token) {
    while (this.nextIsSpace()) {this.i++}
    var start = this.i; var pcount = 0;
    while (this.i < this.string.length) {
      var c = this.string.charAt(this.i++);
      if (c == '{') {pcount++}
      else if (c == '}') {
        if (pcount == 0)
          {this.Error("Extra close brace while looking for "+this.cmd+token); return null}
        pcount --;
      } else if (c == this.cmd) {
        // really need separate counter for begin/end
        // and it should really be a stack (new pcount for each begin)
        if (this.string.slice(this.i,this.i+5) == "begin") {pcount++; this.i+=4}
        else if (this.string.slice(this.i,this.i+3) == "end") {
          if (pcount > 0) {pcount--; this.i += 2}
        }
        if (pcount == 0)  {
          if (this.string.slice(this.i,this.i+token.length) == token) {
            c = this.string.charAt(this.i+token.length);
            if (c.match(/[^a-z]/i) || !token.match(/[a-z]/i)) {
              var arg = this.string.slice(start,this.i-1);
              this.i += token.length;
              return arg;
            }
          }
        }
        this.i++;
      }
    }
    this.Error("Couldn't find "+this.cmd+token+" for "+name);
    return null;
  },

  /*
   *  Get a parameter delimited by a control sequence, and
   *  process it to get its mlist
   */
  ProcessUpto: function (name,token) {
    var arg = this.GetUpto(name,token); if (this.error) return null;
    return this.Process(arg);
  },

  /*
   *  Get everything up to \end{env}
   */
  GetEnd: function (env) {
    var body = ''; var name = '';
    while (name != env) {
      body += this.GetUpto('begin{'+env+'}','end'); if (this.error) return null;
      name = this.GetArgument(this.cmd+'end'); if (this.error) return null;
    }
    return body;
  },
  

  /***************************************************************************/


  /*
   *  Ignore spaces
   */
  Space: function () {},

  /*
   *  Collect together any primes and convert them to a superscript
   */
  Prime: function (c) {
    var base = this.mlist.Last();
    if (base == null || (!base.atom && base.type != 'box' && base.type != 'frac'))
       {base = this.mlist.Add(jsMath.mItem.Atom('ord',{type:null}))}
    if (base.sup) {this.Error("Prime causes double exponent: use braces to clarify"); return}
    var sup = '';
    while (c == "'") {sup += this.cmd+'prime'; c = this.GetNext(); if (c == "'") {this.i++}}
    base.sup = this.Process(sup);
    base.sup.isPrime = 1;
  },

  /*
   *  Raise or lower its parameter by a given amount
   *  @@@ Note that this is different from TeX, which requires an \hbox @@@
   *  ### make this work with mu's ###
   */
  RaiseLower: function (name) {
    var h = this.GetDimen(this.cmd+name,1); if (this.error) return;
    var box = this.ProcessArg(this.cmd+name); if (this.error) return;
    if (name == 'lower') {h = -h}
    this.mlist.Add(new jsMath.mItem('raise',{nuc: box, raise: h}));
  },
  
  /*
   *  Shift an expression to the right or left
   *  @@@ Note that this is different from TeX, which requires a \vbox @@@
   *  ### make this work with mu's ###
   */
  MoveLeftRight: function (name) {
    var x = this.GetDimen(this.cmd+name,1); if (this.error) return;
    var box = this.ProcessArg(this.cmd+name); if (this.error) return;
    if (name == 'moveleft') {x = -x}
    this.mlist.Add(jsMath.mItem.Space(x));
    this.mlist.Add(jsMath.mItem.Atom('ord',box));
    this.mlist.Add(jsMath.mItem.Space(-x));
  },

  /*
   *  Load an extension if it has not already been loaded
   */
  Require: function (name) {
    var file = this.GetArgument(this.cmd+name); if (this.error) return;
    file = jsMath.Extension.URL(file);
    if (jsMath.Setup.loaded[file]) return;
    this.Extension(null,[file]);
  },
  
  /*
   *  Load an extension file and restart processing the math
   */
  Extension: function (name,data) {
    jsMath.Translate.restart = 1;
    if (name != null) {delete jsMath.Parser.prototype[data[1]||'macros'][name]}
    jsMath.Script.Start();
    jsMath.Extension.Require(data[0],jsMath.Translate.asynchronous);
    throw "restart";
  },
  
  /*
   *  Implements \frac{num}{den}
   */
  Frac: function (name) {
    var num = this.ProcessArg(this.cmd+name); if (this.error) return;
    var den = this.ProcessArg(this.cmd+name); if (this.error) return;
    this.mlist.Add(jsMath.mItem.Fraction('over',num,den));
  },
  
  /*
   *  Implements \sqrt[n]{...}
   */
  Sqrt: function (name) {
    var n = this.GetBrackets(this.cmd+name); if (this.error) return;
    var arg = this.ProcessArg(this.cmd+name); if (this.error) return;
    box = jsMath.mItem.Atom('radical',arg);
    if (this.n != '') {box.root = this.Process(n); if (this.error) return}
    this.mlist.Add(box);
  },

  /*
   *  Implements \root...\of{...}
   */
  Root: function (name) {
    var n = this.ProcessUpto(this.cmd+name,'of'); if (this.error) return;
    var arg = this.ProcessArg(this.cmd+name); if (this.error) return;
    box = jsMath.mItem.Atom('radical',arg);
    box.root = n; this.mlist.Add(box);
  },
  

  /*
   *  Implements \buildrel...\over{...}
   */
  BuildRel: function (name) {
    var top = this.ProcessUpto(this.cmd+name,'over'); if (this.error) return;
    var bot = this.ProcessArg(this.cmd+name); if (this.error) return;
    var op = jsMath.mItem.Atom('op',bot);
    op.limits = 1; op.sup = top;
    this.mlist.Add(op);
  },

  /*
   *  Create a delimiter of the type and size specified in the parameters
   */
  MakeBig: function (name,data) {
    var type = data[0]; var h = data[1] * jsMath.p_height;
    var delim = this.GetDelimiter(this.cmd+name); if (this.error) return;
    this.mlist.Add(jsMath.mItem.Atom(type,jsMath.Box.Delimiter(h,delim,'T')));
  },
  
  /*
   *  Insert the specified character in the given font.
   *  (Try to load the font if it is not already available.)
   */
  Char: function (name) {
    var font = this.GetArgument(this.cmd+name); if (this.error) return;
    var n = this.GetArgument(this.cmd+name); if (this.error) return;
    if (!jsMath.TeX[font]) {
      jsMath.TeX[font] = [];
      this.Extension(null,[jsMath.Font.URL(font)]);
    } else {
      this.mlist.Add(jsMath.mItem.Typeset(jsMath.Box.TeX(n-0,font,'T',this.mlist.data.size)));
    }
  },
  
  /*
   *  Create an array or matrix.
   */
  Matrix: function (name,delim) {
    var data = this.mlist.data;
    var arg = this.GetArgument(this.cmd+name); if (this.error) return;
    var parse = new jsMath.Parser(arg+'\\\\',null,data.size);
    parse.matrix = name; parse.row = []; parse.table = [];
    parse.Parse(); if (parse.error) {this.Error(parse); return}
    parse.HandleRow(name,1);  // be sure the last row is recorded
    var box = jsMath.Box.Layout(data.size,parse.table,delim[2]);
    // Add parentheses, if needed
    if (delim[0] && delim[1]) {
      var left  = jsMath.Box.Delimiter(box.h+box.d,this.delimiter[delim[0]],'T');
      var right = jsMath.Box.Delimiter(box.h+box.d,this.delimiter[delim[1]],'T');
      box = jsMath.Box.SetList([left,box,right],data.style,data.size);
    }
    this.mlist.Add(jsMath.mItem.Atom((delim[0]? 'inner': 'ord'),box));
  },
  
  /*
   *  When we see an '&', try to add a matrix entry to the row data.
   *  (Use all the data in the current mList, and then clear it)
   */
  HandleEntry: function (name) {
    if (!this.matrix) 
      {this.Error(name+" can only appear in a matrix or array"); return}
    if (this.mlist.data.openI != null) {
      var open = this.mlist.Get(this.mlist.data.openI);
      if (open.left) {this.Error("Missing "+this.cmd+"right")}
        else {this.Error("Missing close brace")}
    }
    if (this.mlist.data.overI != null) {this.mlist.Over()}
    var data = this.mlist.data;
    this.mlist.Atomize(data.style,data.size);
    var box = this.mlist.Typeset(data.style,data.size);
    this.row[this.row.length] = box;
    this.mlist = new jsMath.mList(null,null,data.size,data.style); 
  },
  
  /*
   *  When we see a \cr or \\, try to add a row to the table
   */
  HandleRow: function (name,last) {
    if (!this.matrix)
      {this.Error(this.cmd+name+" can only appear in a matrix or array"); return}
    this.HandleEntry(name);
    if (!last || this.row.length > 1 || this.row[0].format != 'null')
      {this.table[this.table.length] = this.row}
    this.row = [];
  },
  
  /*
   *  LaTeX array environment
   */
  Array: function (name,delim) {
    var columns = delim[2]; var cspacing = delim[3];
    if (!columns) {
      columns = this.GetArgument(this.cmd+'begin{'+name+'}');
      if (this.error) return;
    }
    columns = columns.replace(/[^clr]/g,'');
    columns = columns.split('');
    var data = this.mlist.data; var style = delim[4] || 'T';
    var arg = this.GetEnd(name); if (this.error) return;
    var parse = new jsMath.Parser(arg+this.cmd+'\\',null,data.size,style);
    parse.matrix = name; parse.row = []; parse.table = [];
    parse.Parse(); if (parse.error) {this.Error(parse); return}
    parse.HandleRow(name,1);  // be sure the last row is recorded
    var box = jsMath.Box.Layout(data.size,parse.table,columns,cspacing);
    // Add parentheses, if needed
    if (delim[0] && delim[1]) {
      var left  = jsMath.Box.Delimiter(box.h+box.d,this.delimiter[delim[0]],'T');
      var right = jsMath.Box.Delimiter(box.h+box.d,this.delimiter[delim[1]],'T');
      box = jsMath.Box.SetList([left,box,right],data.style,data.size);
    }
    this.mlist.Add(jsMath.mItem.Atom((delim[0]? 'inner': 'ord'),box));
  },
  
  /*
   *  LaTeX \begin{env}
   */
  Begin: function (name) {
    var env = this.GetArgument(this.cmd+name); if (this.error) return;
    if (env.match(/[^a-z*]/i)) {this.Error('Invalid environment name "'+env+'"'); return}
    if (!this.environments[env]) {this.Error('Unknown environment "'+env+'"'); return}
    var cmd = this.environments[env];
    if (typeof(cmd) == "string") {cmd = [cmd]}
    this[cmd[0]](env,cmd.slice(1));
  },
  
  /*
   *  LaTeX \end{env}
   */
  End: function (name) {
    var env = this.GetArgument(this.cmd+name); if (this.error) return;
    this.Error(this.cmd+name+'{'+env+'} without matching '+this.cmd+'begin');
  },

  /*
   *  Add a fixed amount of horizontal space
   */
  Spacer: function (name,w) {
    this.mlist.Add(jsMath.mItem.Space(w-0));
  },
  
  /*
   *  Add horizontal space given by the argument
   */
  Hskip: function (name) {
    var w = this.GetDimen(this.cmd+name); if (this.error) return;
    this.mlist.Add(jsMath.mItem.Space(w));
  },

  /*
   *  Typeset the argument as plain text rather than math.
   */
  HBox: function (name) {
    var text = this.GetArgument(this.cmd+name); if (this.error) return;
    var box = jsMath.Box.InternalMath(text,this.mlist.data.size);
    this.mlist.Add(jsMath.mItem.Typeset(box));
  },
  
  /*
   *  Insert a rule of a particular width, height and depth
   *  This replaces \hrule and \vrule
   *  @@@ not a standard TeX command, and all three parameters must be given @@@
   */
  Rule: function (name,style) {
    var w = this.GetDimen(this.cmd+name,1); if (this.error) return;
    var h = this.GetDimen(this.cmd+name,1); if (this.error) return;
    var d = this.GetDimen(this.cmd+name,1); if (this.error) return;
    h += d; var html;
    if (h != 0) {h = Math.max(1.05/jsMath.em,h)}
    if (h == 0 || w == 0 || style == "blank")
      {html = jsMath.HTML.Blank(w,h)} else {html = jsMath.HTML.Rule(w,h)}
    if (d) {
      html = '<span style="vertical-align:'+jsMath.HTML.Em(-d)+'">'
           +  html + '</span>';
    }
    this.mlist.Add(jsMath.mItem.Typeset(new jsMath.Box('html',html,w,h-d,d)));
  },
  
  /*
   *  Inserts an empty box of a specific height and depth
   */
  Strut: function () {
    var size = this.mlist.data.size;
    var box = jsMath.Box.Text('','normal','T',size).Styled();
    box.bh = box.bd = 0; box.h = .8; box.d = .3; box.w = 0;
    this.mlist.Add(jsMath.mItem.Typeset(box));
  },
  
  /*
   *  Handles \phantom, \vphantom and \hphantom
   */
  Phantom: function (name,data) {
    var arg = this.ProcessArg(this.cmd+name); if (this.error) return;
    this.mlist.Add(new jsMath.mItem('phantom',{phantom: arg, v: data[0], h: data[1]}));
  },
  
  /*
   *  Implements \smash
   */
  Smash: function (name,data) {
    var arg = this.ProcessArg(this.cmd+name); if (this.error) return;
    this.mlist.Add(new jsMath.mItem('smash',{smash: arg}));
  },
  
  /*
   *  Puts an accent on the following argument
   */
  MathAccent: function (name,accent) {
    var c = this.ProcessArg(this.cmd+name); if (this.error) return;
    var atom = jsMath.mItem.Atom('accent',c); atom.accent = accent[0];
    this.mlist.Add(atom);
  },

  /*
   *  Handles functions and operators like sin, cos, sum, etc.
   */
  NamedOp: function (name,data) {
    var a = (name.match(/[^acegm-su-z]/)) ? 1: 0;
    var d = (name.match(/[gjpqy]/)) ? .2: 0;
    if (data[1]) {name = data[1]}
    var box = jsMath.mItem.TextAtom('op',name,'cmr10',a,d);
    if (data[0] != null) {box.limits = data[0]}
    this.mlist.Add(box);
  },

  /*
   *  Implements \limits
   */
  Limits: function (name,data) {
    var atom = this.mlist.Last();
    if (!atom || atom.type != 'op') 
      {this.Error(this.cmd+name+" is allowed only on operators"); return}
    atom.limits = data[0];
  },

  /*
   *  Implements macros like those created by \def.  The named control
   *  sequence is replaced by the string given as the first data value.
   *  If there is a second data value, this specifies how many arguments
   *  the macro uses, and in this case, those arguments are substituted
   *  for #1, #2, etc. within the replacement string.
   *  
   *  See the jsMath.Macro() command below for more details.
   *  The "newcommand" extension implements \newcommand and \def
   *  and are loaded automatically if needed.
   */
  Macro: function (name,data) {
    var text = data[0];
    if (data[1]) {
      var args = [];
      for (var i = 0; i < data[1]; i++)
        {args[args.length] = this.GetArgument(this.cmd+name); if (this.error) return}
      text = this.SubstituteArgs(args,text);
    }
    this.string = this.AddArgs(text,this.string.slice(this.i));
    this.i = 0;
  },
  
  /*
   *  Replace macro paramters with their values
   */
  SubstituteArgs: function (args,string) {
    var text = ''; var newstring = ''; var c; var i = 0;
    while (i < string.length) {
      c = string.charAt(i++);
      if (c == this.cmd) {text += c + string.charAt(i++)}
      else if (c == '#') {
        c = string.charAt(i++);
        if (c == "#") {text += c} else {
          if (!c.match(/[1-9]/) || c > args.length)
            {this.Error("Illegal macro parameter reference"); return}
          newstring = this.AddArgs(this.AddArgs(newstring,text),args[c-1]);
          text = '';
        }
      } else {text += c}
    }
    return this.AddArgs(newstring,text);
  },
  
  /*
   *  Make sure that macros are followed by a space if their names
   *  could accidentally be continued into the following text.
   */
  AddArgs: function (s1,s2) {
    if (s2.match(/^[a-z]/i) && s1.match(/(^|[^\\])(\\\\)*\\[a-z]+$/i)) {s1 += ' '}
    return s1+s2;
  },
  
  /*
   *  Replace the control sequence with the given text
   */
  Replace: function (name,data) {
    this.mlist.Add(jsMath.mItem.TextAtom(data[0],data[1],data[2],data[3]));
  },
  
  /*
   *  Insert space for ~
   */
  Tilde: function (name) {
    this.mlist.Add(jsMath.mItem.TextAtom('ord','&nbsp;','normal'));
  },

  /*
   *  Implements \llap, \rlap, etc.
   */
  HandleLap: function (name) {
    var box = this.ProcessArg(); if (this.error) return;
    box = this.mlist.Add(new jsMath.mItem('lap',{nuc: box, lap: name}));
  },

  /*
   *  Adds the argument as a specific type of atom (for commands like
   *  \overline, etc.)
   */
  HandleAtom: function (name,data) {
    var arg = this.ProcessArg(this.cmd+name); if (this.error) return;
    this.mlist.Add(jsMath.mItem.Atom(data,arg));
  },


  /*
   *  Process the character associated with a specific \mathcharcode
   */
  HandleMathCode: function (name,code) {
    this.HandleTeXchar(code[0],code[1],code[2]);
  },
  
  /*
   *  Add a specific character from a TeX font (use the current
   *  font if the type is 7 (variable) or the font is not specified)
   *  Load the font if it is not already loaded.
   */
  HandleTeXchar: function (type,font,code) {
    if (type == 7 && this.mlist.data.font != null) {font = this.mlist.data.font}
    font = jsMath.TeX.fam[font];
    if (!jsMath.TeX[font]) {
      jsMath.TeX[font] = [];
      this.Extension(null,[jsMath.Font.URL(font)]);
    } else {
      this.mlist.Add(jsMath.mItem.TeXAtom(jsMath.TeX.atom[type],code,font));
    }
  },

  /*
   *  Add a TeX variable character or number
   */
  HandleVariable: function (c) {this.HandleTeXchar(7,1,c.charCodeAt(0))},
  HandleNumber: function (c) {this.HandleTeXchar(7,0,c.charCodeAt(0))},

  /*
   *  For unmapped characters, just add them in as normal
   *  (non-TeX) characters
   */
  HandleOther: function (c) {
    this.mlist.Add(jsMath.mItem.TextAtom('ord',c,'normal'));
  },
  
  /*
   *  Ignore comments in TeX data
   *  ### Some browsers remove the newlines, so this might cause
   *      extra stuff to be ignored; look into this ###
   */
  HandleComment: function () {
    var c;
    while (this.i < this.string.length) {
      c = this.string.charAt(this.i++);
      if (c == "\r" || c == "\n") return;
    }
  },

  /*
   *  Add a style change (e.g., \displaystyle, etc)
   */
  HandleStyle: function (name,style) {
    this.mlist.data.style = style[0];
    this.mlist.Add(new jsMath.mItem('style',{style: style[0]}));
  },
  
  /*
   *  Implements \small, \large, etc.
   */
  HandleSize: function (name,size) {
    this.mlist.data.size = size[0];
    this.mlist.Add(new jsMath.mItem('size',{size: size[0]}));
  },

  /*
   *  Set the current font (e.g., \rm, etc)
   */
  HandleFont: function (name,font) {
    this.mlist.data.font = font[0];
  },

  /*
   *  Look for and process a control sequence
   */
  HandleCS: function () {
    var cmd = this.GetCommand(); if (this.error) return;
    if (this.macros[cmd]) {
      var macro = this.macros[cmd];
      if (typeof(macro) == "string") {macro = [macro]}
      this[macro[0]](cmd,macro.slice(1)); return;
    }
    if (this.mathchardef[cmd]) {
      this.HandleMathCode(cmd,this.mathchardef[cmd]);
      return;
    }
    if (this.delimiter[this.cmd+cmd]) {
      this.HandleMathCode(cmd,this.delimiter[this.cmd+cmd].slice(0,3))
      return;
    }
    this.Error("Unknown control sequence '"+this.cmd+cmd+"'");
  },

  /*
   *  Process open and close braces
   */
  HandleOpen: function () {this.mlist.Open()},
  HandleClose: function () {
    if (this.mlist.data.openI == null) {this.Error("Extra close brace"); return}
    var open = this.mlist.Get(this.mlist.data.openI);
    if (!open || open.left == null) {this.mlist.Close()}
      else {this.Error("Extra close brace or missing "+this.cmd+"right"); return}
  },

  /*
   *  Implements \left
   */
  HandleLeft: function (name) {
    var left = this.GetDelimiter(this.cmd+name); if (this.error) return;
    this.mlist.Open(left);
  },

  /*
   *  Implements \right
   */
  HandleRight: function (name) {
    var right = this.GetDelimiter(this.cmd+name); if (this.error) return;
    var open = this.mlist.Get(this.mlist.data.openI);
    if (open && open.left != null) {this.mlist.Close(right)}
      else {this.Error("Extra open brace or missing "+this.cmd+"left");}
  },

  /*
   *  Implements generalized fractions (\over, \above, etc.)
   */
  HandleOver: function (name,data) {
    if (this.mlist.data.overI != null) 
      {this.Error('Ambiguous use of '+this.cmd+name); return}
    this.mlist.data.overI = this.mlist.Length();
    this.mlist.data.overF = {name: name};
    if (data.length > 0) {
      this.mlist.data.overF.left  = this.delimiter[data[0]];
      this.mlist.data.overF.right = this.delimiter[data[1]];
    } else if (name.match(/withdelims$/)) {
      this.mlist.data.overF.left  = this.GetDelimiter(this.cmd+name); if (this.error) return;
      this.mlist.data.overF.right = this.GetDelimiter(this.cmd+name); if (this.error) return;
    } else {
      this.mlist.data.overF.left  = null;
      this.mlist.data.overF.right = null;
    }
    if (name.match(/^above/)) {
      this.mlist.data.overF.thickness = this.GetDimen(this.cmd.name,1);
      if (this.error) return;
    } else {
      this.mlist.data.overF.thickness = null; 
    }
  },

  /*
   *  Add a superscript to the preceeding atom
   */
  HandleSuperscript: function () {
    var base = this.mlist.Last();
    if (base == null || (!base.atom && base.type != 'box' && base.type != 'frac'))
       {base = this.mlist.Add(jsMath.mItem.Atom('ord',{type:null}))}
    if (base.sup) {
      if (base.sup.isPrime) {base = this.mlist.Add(jsMath.mItem.Atom('ord',{type:null}))}
        else {this.Error("Double exponent: use braces to clarify"); return}
    }
    base.sup = this.ProcessScriptArg('superscript'); if (this.error) return;
  },

  /*
   *  Add a subscript to the preceeding atom
   */
  HandleSubscript: function () {
    var base = this.mlist.Last();
    if (base == null || (!base.atom && base.type != 'box' && base.type != 'frac'))
       {base = this.mlist.Add(jsMath.mItem.Atom('ord',{type:null}))}
    if (base.sub) {this.Error("Double subscripts: use braces to clarify"); return}
    base.sub = this.ProcessScriptArg('subscript'); if (this.error) return;
  },

  /*
   *  Parse a TeX math string, handling macros, etc.
   */
  Parse: function () {
    var c;
    while (this.i < this.string.length) {
      c = this.string.charAt(this.i++);
      if (this.mathchar[c]) {this.HandleMathCode(c,this.mathchar[c])}
      else if (this.special[c]) {this[this.special[c]](c)}
      else if (this.letter.test(c)) {this.HandleVariable(c)}
      else if (this.number.test(c)) {this.HandleNumber(c)}
      else {this.HandleOther(c)}
    }
    if (this.mlist.data.openI != null) {
      var open = this.mlist.Get(this.mlist.data.openI);
      if (open.left) {this.Error("Missing "+this.cmd+"right")}
        else {this.Error("Missing close brace")}
    }
    if (this.mlist.data.overI != null) {this.mlist.Over()}
  },

  /*
   *  Perform the processing of Appendix G
   */
  Atomize: function () {
    var data = this.mlist.init;
    if (!this.error) this.mlist.Atomize(data.style,data.size)
  },

  /*
   *  Produce the final HTML.
   *  
   *  We have to wrap the HTML it appropriate <SPAN> tags to hide its
   *  actual dimensions when these don't match the TeX dimensions of the
   *  results.  We also include an image to force the results to take up
   *  the right amount of space.  The results may need to be vertically
   *  adjusted to make the baseline appear in the correct place.
   */
  Typeset: function () {
    var data = this.mlist.init;
    var box = this.typeset = this.mlist.Typeset(data.style,data.size);
    if (this.error) {return '<span class="error">'+this.error+'</span>'}
    if (box.format == 'null') {return ''};

    box.Styled().Remeasured(); var isSmall = 0; var isBig = 0;
    if (box.bh > box.h && box.bh > jsMath.h+.001) {isSmall = 1}
    if (box.bd > box.d && box.bd > jsMath.d+.001) {isSmall = 1}
    if (box.h > jsMath.h || box.d > jsMath.d) {isBig = 1}

    var html = box.html;
    if (isSmall) {// hide the extra size
      if (jsMath.Browser.allowAbsolute) {
        var y = 0;
        if (box.bh > jsMath.h+.001) {y = jsMath.h - box.bh}
        html = jsMath.HTML.Absolute(html,box.w,jsMath.h,0,y,jsMath.h);
      } else if (!jsMath.Browser.valignBug) {
        // remove line height and try to hide the depth
        var dy = jsMath.HTML.Em(Math.max(0,box.bd-jsMath.hd)/3);
        html = '<span style="line-height: 0px;'
               + ' position:relative; top:'+dy+'; vertical-align:'+dy
               + '">' + html + '</span>';
      }
      isBig = 1;
    }
    if (isBig) {
      // add height and depth to the line
      //   (force a little extra to separate lines if needed)
      html += jsMath.HTML.Blank(0,box.h+.05,box.d+.05);
    }
    return '<nobr><span class="scale">'+html+'</span></nobr>';
  }

});

/*
 *  Make these characters special (and call the given routines)
 */
jsMath.Parser.prototype.AddSpecial({
  cmd:   'HandleCS',
  open:  'HandleOpen',
  close: 'HandleClose'
});


/*
 *  The web-page author can call jsMath.Macro to create additional
 *  TeX macros for use within his or her mathematics.  See the
 *  author's documentation for more details.
 */

jsMath.Add(jsMath,{
  Macro: function (name) {
    var macro = jsMath.Parser.prototype.macros;
    macro[name] = ['Macro'];
    for (var i = 1; i < arguments.length; i++) 
      {macro[name][macro[name].length] = arguments[i]}
  }
});

/*
 *  Use these commands to create macros that load
 *  JavaScript files and reprocess the mathematics when
 *  the file is loaded.  This lets you to have macros or
 *  LaTeX environments that autoload their own definitions
 *  only when they are needed, saving initial download time
 *  on pages where they are not used.  See the author's
 *  documentation for more details.
 *
 */

jsMath.Extension = {

  safeRequire: 1,   // disables access to files outside of jsMath/extensions
  
  Macro: function (name,file) {
    var macro = jsMath.Parser.prototype.macros;
    if (file == null) {file = name}
    macro[name] = ['Extension',file];
  },

  LaTeX: function (env,file) {
    var latex = jsMath.Parser.prototype.environments;
    latex[env] = ['Extension',file,'environments'];
  },

  Font: function (name,font) {
    if (font == null) {font = name + "10"}
    var macro = jsMath.Parser.prototype.macros;
    macro[name] = ['Extension',jsMath.Font.URL(font)];
  },
  
  MathChar: function (font,defs) {
    var fam = jsMath.TeX.famName[font];
    if (fam == null) {
      fam = jsMath.TeX.fam.length;
      jsMath.TeX.fam[fam] = font;
      jsMath.TeX.famName[font] = fam;
    }
    var mathchardef = jsMath.Parser.prototype.mathchardef;
    for (var c in defs) {mathchardef[c] = [defs[c][0],fam,defs[c][1]]}
  },

  Require: function (file,show) {
    if (this.safeRequire && (file.match(/\.\.\/|[^-a-z0-9.\/:_+=%~]/i) ||
         (file.match(/:/) && file.substr(0,jsMath.root.length) != jsMath.root))) {
      jsMath.Setup.loaded[file] = 1;
      return;
    }
    jsMath.Setup.Script(this.URL(file),show);
  },
  
  URL: function (file) {
    file = file.replace(/^\s+|\s+$/g,'');
    if (!file.match(/^([a-z]+:|\/|fonts|extensions\/)/i)) {file = 'extensions/'+file}
    if (!file.match(/\.js$/)) {file += '.js'}
    return file;
  }
}


/***************************************************************************/

/*
 *  These routines look through the web page for math elements to process.
 *  There are two main entry points you can call:
 *  
 *      <script> jsMath.Process() </script>
 *  or
 *      <script> jsMath.ProcessBeforeShowing() </script>
 *
 *  The first will process the page asynchronously (so the user can start
 *  reading the top of the file while jsMath is still processing the bottom)
 *  while the second does not update until all the mathematics is typeset.
 */

jsMath.Add(jsMath,{
  /*
   *  Call this at the bottom of your HTML page to have the
   *  mathematics typeset asynchronously.  This lets the user
   *  start reading the mathematics while the rest of the page
   *  is being processed.
   */
  Process: function (obj) {
    jsMath.Setup.Body();
    jsMath.Script.Push(jsMath.Translate,'Asynchronous',obj);
  },
  
  /*
   *  Call this at the bottom of your HTML page to have the
   *  mathematics typeset before the page is displayed.
   *  This can take a long time, so the user could cancel the
   *  page before it is complete; use it with caution, and only
   *  when there is a relatively small amount of math on the page.
   */
  ProcessBeforeShowing: function (obj) {
    jsMath.Setup.Body();
    var method = (jsMath.Controls.cookie.asynch ? "Asynchronous": "Synchronous");
    jsMath.Script.Push(jsMath.Translate,method,obj);
  }
  
});

jsMath.Translate = {

  element: [],  // the list of math elements on the page
  cancel: 0,    // set to 1 to cancel asynchronous processing

  /*
   *  Typeset a string in \textstyle and return the HTML for it
   */
  TextMode: function (s) {
    var parse = jsMath.Parse(s,null,null,'T');
    parse.Atomize();
    var html = parse.Typeset();
    return html;
  },

  /*
   *  Typeset a string in \displaystyle and return the HTML for it
   */
  DisplayMode: function (s) {
    var parse = jsMath.Parse(s,null,null,'D');
    parse.Atomize();
    var html = parse.Typeset();
    return html;
  },
  
  /*
   *  Return the text of a given DOM element
   */
  GetElementText: function (element) {
    var text = this.recursiveElementText(element);
    element.alt = text;
    if (text.search('&') >= 0) {
      text = text.replace(/&lt;/g,'<');
      text = text.replace(/&gt;/g,'>');
      text = text.replace(/&quot;/g,'"');
      text = text.replace(/&amp;/g,'&');
    }
    return text;
  },
  recursiveElementText: function (element) {
    if (element.nodeValue != null) {return element.nodeValue}
    if (element.childNodes.length == 0) {return " "}
    var text = '';
    for (var i = 0; i < element.childNodes.length; i++) 
      {text += this.recursiveElementText(element.childNodes[i])}
    return text;
  },
  
  /*
   *  Move hidden to the location of the math element to be
   *  processed and reinitialize sizes for that location.
   */
  ResetHidden: function (element) {
    element.innerHTML =
      '<span style="visibility: hidden; position:absolute; top:0px;left:0px;"></span>'
        + jsMath.Browser.operaHiddenFix; // needed by Opera in tables
    element.className='';
    jsMath.hidden = element.firstChild;
    if (!jsMath.BBoxFor("x").w) {jsMath.hidden = jsMath.hiddenTop}
    jsMath.ReInit();
  },

  
  /*
   *  Typeset the contents of an element in \textstyle
   */
  ConvertText: function (element) {
    var text = this.GetElementText(element);
    this.ResetHidden(element);
    text = this.TextMode(text);
    element.className = 'typeset';
    element.innerHTML = text;
  },
  
  /*
   *  Typeset the contents of an element in \displaystyle
   */
  ConvertDisplay: function (element) {
    var text = this.GetElementText(element);
    this.ResetHidden(element);
    text = this.DisplayMode(text);
    element.className = 'typeset';
    element.innerHTML = text;
  },
  
  /*
   *  Process a math element
   */
  ProcessElement: function (element) {
    this.restart = 0;
    try {
      if (element.tagName.toLowerCase() == 'div') {
        this.ConvertDisplay(element);
        element.onclick = jsMath.Click.CheckClick;
        element.ondblclick = jsMath.Click.CheckDblClick;
      } else if (element.tagName.toLowerCase() == 'span') {
        this.ConvertText(element);
        element.onclick = jsMath.Click.CheckClick;
        element.ondblclick = jsMath.Click.CheckDblClick;
      }
    } catch (err) {
      if (element.alt) {
        var tex = element.alt;
        tex = tex.replace(/&/g,'&amp;');
        tex = tex.replace(/</g,'&lt;');
        tex = tex.replace(/>/g,'&gt;');
        element.innerHTML = tex;
      }
      jsMath.hidden = jsMath.hiddenTop;
    }
  },

  /*
   *  Asynchronously process all the math elements starting with
   *  the k-th one
   */
  ProcessElements: function (k) {
    jsMath.Script.blocking = 1;
    if (k >= this.element.length || this.cancel) {
      this.ProcessComplete();
      if (this.cancel) {
        jsMath.Message.Set("Process Math: Canceled");
        jsMath.Message.Clear()
      }
      jsMath.Script.blocking = 0;
      jsMath.Script.Process();
    } else {
      this.ProcessElement(this.element[k]);
      if (this.restart) {
        jsMath.Script.Push(this,'ProcessElements',k);
        jsMath.Script.blocking = 0;
        setTimeout('jsMath.Script.Process()',jsMath.Browser.delay);
      } else {
        k++; var p = Math.floor(100 * k / this.element.length);
        jsMath.Message.Set('Processing Math: '+p+'%');
        setTimeout('jsMath.Translate.ProcessElements('+k+')',jsMath.Browser.delay);
      }
    }
  },

  /*
   *  Start the asynchronous processing of mathematics
   */
  Asynchronous: function (obj) {
    if (!jsMath.initialized) {jsMath.Init()}
    this.element = this.GetMathElements(obj);
    this.cancel = 0; this.asynchronous = 1;
    jsMath.Script.blocking = 1;
    jsMath.Message.Set('Processing Math: 0%',1);
    setTimeout('jsMath.Translate.ProcessElements(0)',jsMath.Browser.delay);
  },
  
  /*
   *  Do synchronous processing of mathematics
   */
  Synchronous: function (obj,i) {
    if (i == null) {
      if (!jsMath.initialized) {jsMath.Init()}
      this.element = this.GetMathElements(obj);
      i = 0;
    }
    this.asynchronous = 0;
    while (i < this.element.length) {
      this.ProcessElement(this.element[i]);
      if (this.restart) {
        jsMath.Synchronize('jsMath.Translate.Synchronous(null,'+i+')');
        jsMath.Script.Process();
        return;
      }
      i++;
    }
    this.ProcessComplete(1);
  },
  
  /*
   *  Look up all the math elements on the page and
   *  put them in a list sorted from top to bottom of the page
   */
  GetMathElements: function (obj) {
    var element = [];
    if (!obj) {obj = jsMath.document}
    if (typeof(obj) == 'string') {obj = jsMath.document.getElementById(obj)}
    if (!obj.getElementsByTagName) return null;
    var math = obj.getElementsByTagName('div');
    for (var k = 0; k < math.length; k++) {
      if (math[k].className == 'math') {
        if (jsMath.Browser.renameOK && obj.getElementsByName) 
               {math[k].setAttribute('name','_jsMath_')}
          else {element[element.length] = math[k]}
      }
    }
    math = obj.getElementsByTagName('span');
    for (var k = 0; k < math.length; k++) {
      if (math[k].className == 'math') {
        if (jsMath.Browser.renameOK && obj.getElementsByName) 
               {math[k].setAttribute('name','_jsMath_')}
          else {element[element.length] = math[k]}
      }
    }
    // this gets the SPAN and DIV elements interleaved in order
    if (jsMath.Browser.renameOK && obj.getElementsByName) {
      element = obj.getElementsByName('_jsMath_');
    } else if (jsMath.hidden.sourceIndex) {
      element.sort(function (a,b) {return a.sourceIndex - b.sourceIndex});
    }
    return element;
  },

  /*
   *  Remove the window message about processing math
   *  and clean up any marked <SPAN> or <DIV> tags
   */
  ProcessComplete: function (noMessage) {
    if (jsMath.Browser.renameOK) {
      var element = jsMath.document.getElementsByName('_jsMath_');
      for (var i = element.length-1; i >= 0; i--) {
        element[i].removeAttribute('name');
      }
    }
    jsMath.hidden = jsMath.hiddenTop;
    this.element = [];
    if (!noMessage) {
      jsMath.Message.Set('Processing Math: Done');
      jsMath.Message.Clear();
    }
    jsMath.Message.UnBlank();
    if (jsMath.Browser.safariImgBug &&
        (jsMath.Controls.cookie.font == 'symbol' ||
         jsMath.Controls.cookie.font == 'image')) {
      //
      //  For Safari, the images don't always finish
      //  updating, so nudge the window to cause a
      //  redraw.  (Hack!)
      //
      if (this.timeout) {clearTimeout(this.timeout)}
      this.timeout = setTimeout("jsMath.window.resizeBy(-1,0); "
                              + "jsMath.window.resizeBy(1,0); "
                              + "jsMath.Translate.timeout = null",2000);
    }
  },
  
  /*
   *  Cancel procesing elements
   */
  Cancel: function () {
    jsMath.Translate.cancel = 1;
    if (jsMath.Script.cancelTimer) {jsMath.Script.cancelLoad()}
  }
  
};

jsMath.Add(jsMath,{
  //
  //  Synchronize these with the loading of the tex2math plugin.
  //
  ConvertTeX: function (element) {jsMath.Script.Push(jsMath.tex2math,'ConvertTeX',element)},
  ConvertTeX2: function (element) {jsMath.Script.Push(jsMath.tex2math,'ConvertTeX2',element)},
  ConvertLaTeX: function (element) {jsMath.Script.Push(jsMath.tex2math,'ConvertLaTeX',element)},
  ConvertCustom: function (element) {jsMath.Script.Push(jsMath.tex2math,'ConvertCustom',element)},
  CustomSearch: function (om,cm,od,cd) {jsMath.Script.Push(null,function () {jsMath.tex2math.CustomSearch(om,cm,od,cd)})},
  tex2math: {
    ConvertTeX: function () {},
    ConvertTeX2: function () {},
    ConvertLaTeX: function () {},
    ConvertCustom: function () {},
    CustomSearch: function () {}
  }
});
jsMath.Synchronize = jsMath.Script.Synchronize;

/***************************************************************************/

/*
 *  Initialize things
 */
if (window.parent != window) {
  window.parent.jsMath = jsMath;
  jsMath.document = window.parent.document;
  jsMath.window = window.parent;
}
jsMath.Loaded();
jsMath.Controls.GetCookie();
jsMath.Setup.Source();
jsMath.Script.Init();
jsMath.Setup.Fonts();
if (jsMath.document.body) {jsMath.Setup.Body()}

}}

--albertel1143487957--