Version Description
Download this release
Release Info
Developer | adamsilverstein |
Plugin | MathML Block |
Version | 1.1.2 |
Comparing to | |
See all releases |
Version 1.1.2
- .dist-ignore +38 -0
- .eslintrc.json +40 -0
- LICENSE +339 -0
- README.md +20 -0
- assets/banner-1544x500.png +0 -0
- assets/banner-772x250.png +0 -0
- assets/icon-128x128.png +0 -0
- assets/icon-256x256.png +0 -0
- assets/screencast.gif +0 -0
- assets/screenshot-1.png +0 -0
- dist/mathml-block.js +274 -0
- dist/mathml-block.js.map +1 -0
- mathml-block.php +75 -0
- package-lock.json +7412 -0
- package.json +35 -0
- readme.txt +61 -0
- src/mathml-block.css +3 -0
- src/mathml-block.js +71 -0
- src/mathml-inline.js +46 -0
- vendor/MathJax/.gitignore +2 -0
- vendor/MathJax/.npmignore +7 -0
- vendor/MathJax/.travis.yml +17 -0
- vendor/MathJax/MathJax.js +3324 -0
- vendor/MathJax/config/AM_CHTML-full.js +21 -0
- vendor/MathJax/config/AM_CHTML.js +21 -0
- vendor/MathJax/config/AM_HTMLorMML-full.js +22 -0
- vendor/MathJax/config/AM_HTMLorMML.js +22 -0
- vendor/MathJax/config/AM_SVG-full.js +21 -0
- vendor/MathJax/config/AM_SVG.js +21 -0
- vendor/MathJax/config/Accessible-full.js +30 -0
- vendor/MathJax/config/Accessible.js +30 -0
- vendor/MathJax/config/MML_CHTML-full.js +21 -0
- vendor/MathJax/config/MML_CHTML.js +21 -0
- vendor/MathJax/config/MML_HTMLorMML-full.js +22 -0
- vendor/MathJax/config/MML_HTMLorMML.js +22 -0
- vendor/MathJax/config/MML_SVG-full.js +21 -0
- vendor/MathJax/config/MML_SVG.js +21 -0
- vendor/MathJax/config/MMLorHTML.js +111 -0
- vendor/MathJax/config/Safe.js +37 -0
- vendor/MathJax/config/TeX-AMS-MML_HTMLorMML-full.js +22 -0
- vendor/MathJax/config/TeX-AMS-MML_HTMLorMML.js +22 -0
- vendor/MathJax/config/TeX-AMS-MML_SVG-full.js +21 -0
- vendor/MathJax/config/TeX-AMS-MML_SVG.js +21 -0
- vendor/MathJax/config/TeX-AMS_CHTML-full.js +21 -0
- vendor/MathJax/config/TeX-AMS_CHTML.js +21 -0
- vendor/MathJax/config/TeX-AMS_HTML-full.js +21 -0
- vendor/MathJax/config/TeX-AMS_HTML.js +21 -0
- vendor/MathJax/config/TeX-AMS_SVG-full.js +21 -0
- vendor/MathJax/config/TeX-AMS_SVG.js +21 -0
- vendor/MathJax/config/TeX-MML-AM_CHTML-full.js +21 -0
- vendor/MathJax/config/TeX-MML-AM_CHTML.js +21 -0
- vendor/MathJax/config/TeX-MML-AM_HTMLorMML-full.js +22 -0
- vendor/MathJax/config/TeX-MML-AM_HTMLorMML.js +22 -0
- vendor/MathJax/config/TeX-MML-AM_SVG-full.js +21 -0
- vendor/MathJax/config/TeX-MML-AM_SVG.js +21 -0
- vendor/MathJax/config/default.js +1104 -0
- vendor/MathJax/config/local/local.js +40 -0
- vendor/MathJax/extensions/AssistiveMML.js +161 -0
- vendor/MathJax/extensions/CHTML-preview.js +30 -0
- vendor/MathJax/extensions/FontWarnings.js +313 -0
- vendor/MathJax/extensions/HTML-CSS/handle-floats.js +49 -0
- vendor/MathJax/extensions/HelpDialog.js +203 -0
- vendor/MathJax/extensions/MatchWebFonts.js +309 -0
- vendor/MathJax/extensions/MathEvents.js +619 -0
- vendor/MathJax/extensions/MathML/content-mathml.js +1743 -0
- vendor/MathJax/extensions/MathML/mml3.js +784 -0
- vendor/MathJax/extensions/MathMenu.js +1664 -0
- vendor/MathJax/extensions/MathZoom.js +366 -0
- vendor/MathJax/extensions/Safe.js +428 -0
- vendor/MathJax/extensions/TeX/AMScd.js +158 -0
- vendor/MathJax/extensions/TeX/AMSmath.js +658 -0
- vendor/MathJax/extensions/TeX/AMSsymbols.js +349 -0
- vendor/MathJax/extensions/TeX/HTML.js +106 -0
- vendor/MathJax/extensions/TeX/action.js +83 -0
- vendor/MathJax/extensions/TeX/autobold.js +50 -0
- vendor/MathJax/extensions/TeX/autoload-all.js +83 -0
- vendor/MathJax/extensions/TeX/bbox.js +102 -0
- vendor/MathJax/extensions/TeX/begingroup.js +292 -0
- vendor/MathJax/extensions/TeX/boldsymbol.js +75 -0
- vendor/MathJax/extensions/TeX/cancel.js +110 -0
- vendor/MathJax/extensions/TeX/color.js +281 -0
- vendor/MathJax/extensions/TeX/enclose.js +91 -0
- vendor/MathJax/extensions/TeX/extpfeil.js +102 -0
- vendor/MathJax/extensions/TeX/mathchoice.js +107 -0
- vendor/MathJax/extensions/TeX/mediawiki-texvc.js +137 -0
- vendor/MathJax/extensions/TeX/mhchem.js +362 -0
.dist-ignore
ADDED
@@ -0,0 +1,38 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/.wordpress-org
|
2 |
+
/.git
|
3 |
+
/.github
|
4 |
+
/.babelrc
|
5 |
+
/.eslintignore
|
6 |
+
/phpcs.xml
|
7 |
+
/node_modules
|
8 |
+
/tests
|
9 |
+
/bin
|
10 |
+
/phpunit.xml
|
11 |
+
|
12 |
+
# Exclude vendor folder, except required dependencies.
|
13 |
+
/vendor
|
14 |
+
!/vendor/composer
|
15 |
+
!/vendor/autoload.php
|
16 |
+
!/vendor/abraham
|
17 |
+
!/vendor/symfony
|
18 |
+
!/vendor/myclabs
|
19 |
+
|
20 |
+
.babelrc
|
21 |
+
.distignore
|
22 |
+
.eslintignore
|
23 |
+
.eslintrc.json
|
24 |
+
.gitignore
|
25 |
+
CHANGELOG.md
|
26 |
+
CODE_OF_CONDUCT.md
|
27 |
+
CONTRIBUTING.md
|
28 |
+
composer.json
|
29 |
+
composer.lock
|
30 |
+
CREDITS.md
|
31 |
+
LICENSE.md
|
32 |
+
package-lock.json
|
33 |
+
package.json
|
34 |
+
phpcs.xml
|
35 |
+
phpunit.xml
|
36 |
+
README.md
|
37 |
+
webpack.config.js
|
38 |
+
webpack.gutenberg.config.js
|
.eslintrc.json
ADDED
@@ -0,0 +1,40 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
{
|
2 |
+
"extends": [
|
3 |
+
"eslint:recommended",
|
4 |
+
"plugin:react/recommended",
|
5 |
+
"wordpress"
|
6 |
+
],
|
7 |
+
"parser": "babel-eslint",
|
8 |
+
"env": {
|
9 |
+
"browser": true,
|
10 |
+
"es6": true
|
11 |
+
},
|
12 |
+
"rules": {
|
13 |
+
"yoda": [ 1 ],
|
14 |
+
"comma-dangle": [ 0 ],
|
15 |
+
"indent": [ 1, "tab", { "SwitchCase": 2 } ],
|
16 |
+
"linebreak-style": [ 1, "unix" ],
|
17 |
+
"quotes": [ 1, "single" ],
|
18 |
+
"space-in-parens": [ 1, "always" ],
|
19 |
+
"object-curly-spacing": [ 1, "always" ],
|
20 |
+
"no-console": [ 1 ],
|
21 |
+
"no-alert": [ 1 ],
|
22 |
+
"camelcase": [ 1 ],
|
23 |
+
"no-debugger": [ 1 ],
|
24 |
+
"no-extra-boolean-cast": [ 1 ],
|
25 |
+
"react/react-in-jsx-scope": [ 0 ],
|
26 |
+
"react/jsx-curly-spacing": [ 2, { "when": "always", "children": true } ],
|
27 |
+
"no-unused-vars": [ "error", { "varsIgnorePattern": "React" } ],
|
28 |
+
"react/prop-types": [ 0 ],
|
29 |
+
"function-paren-newline": [ "error", "consistent" ]
|
30 |
+
},
|
31 |
+
"settings": {
|
32 |
+
"react": {
|
33 |
+
"version": "16.2.0"
|
34 |
+
}
|
35 |
+
},
|
36 |
+
"globals": {
|
37 |
+
"React": true,
|
38 |
+
"MathJax": true
|
39 |
+
}
|
40 |
+
}
|
LICENSE
ADDED
@@ -0,0 +1,339 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
GNU GENERAL PUBLIC LICENSE
|
2 |
+
Version 2, June 1991
|
3 |
+
|
4 |
+
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
5 |
+
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
6 |
+
Everyone is permitted to copy and distribute verbatim copies
|
7 |
+
of this license document, but changing it is not allowed.
|
8 |
+
|
9 |
+
Preamble
|
10 |
+
|
11 |
+
The licenses for most software are designed to take away your
|
12 |
+
freedom to share and change it. By contrast, the GNU General Public
|
13 |
+
License is intended to guarantee your freedom to share and change free
|
14 |
+
software--to make sure the software is free for all its users. This
|
15 |
+
General Public License applies to most of the Free Software
|
16 |
+
Foundation's software and to any other program whose authors commit to
|
17 |
+
using it. (Some other Free Software Foundation software is covered by
|
18 |
+
the GNU Lesser General Public License instead.) You can apply it to
|
19 |
+
your programs, too.
|
20 |
+
|
21 |
+
When we speak of free software, we are referring to freedom, not
|
22 |
+
price. Our General Public Licenses are designed to make sure that you
|
23 |
+
have the freedom to distribute copies of free software (and charge for
|
24 |
+
this service if you wish), that you receive source code or can get it
|
25 |
+
if you want it, that you can change the software or use pieces of it
|
26 |
+
in new free programs; and that you know you can do these things.
|
27 |
+
|
28 |
+
To protect your rights, we need to make restrictions that forbid
|
29 |
+
anyone to deny you these rights or to ask you to surrender the rights.
|
30 |
+
These restrictions translate to certain responsibilities for you if you
|
31 |
+
distribute copies of the software, or if you modify it.
|
32 |
+
|
33 |
+
For example, if you distribute copies of such a program, whether
|
34 |
+
gratis or for a fee, you must give the recipients all the rights that
|
35 |
+
you have. You must make sure that they, too, receive or can get the
|
36 |
+
source code. And you must show them these terms so they know their
|
37 |
+
rights.
|
38 |
+
|
39 |
+
We protect your rights with two steps: (1) copyright the software, and
|
40 |
+
(2) offer you this license which gives you legal permission to copy,
|
41 |
+
distribute and/or modify the software.
|
42 |
+
|
43 |
+
Also, for each author's protection and ours, we want to make certain
|
44 |
+
that everyone understands that there is no warranty for this free
|
45 |
+
software. If the software is modified by someone else and passed on, we
|
46 |
+
want its recipients to know that what they have is not the original, so
|
47 |
+
that any problems introduced by others will not reflect on the original
|
48 |
+
authors' reputations.
|
49 |
+
|
50 |
+
Finally, any free program is threatened constantly by software
|
51 |
+
patents. We wish to avoid the danger that redistributors of a free
|
52 |
+
program will individually obtain patent licenses, in effect making the
|
53 |
+
program proprietary. To prevent this, we have made it clear that any
|
54 |
+
patent must be licensed for everyone's free use or not licensed at all.
|
55 |
+
|
56 |
+
The precise terms and conditions for copying, distribution and
|
57 |
+
modification follow.
|
58 |
+
|
59 |
+
GNU GENERAL PUBLIC LICENSE
|
60 |
+
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
61 |
+
|
62 |
+
0. This License applies to any program or other work which contains
|
63 |
+
a notice placed by the copyright holder saying it may be distributed
|
64 |
+
under the terms of this General Public License. The "Program", below,
|
65 |
+
refers to any such program or work, and a "work based on the Program"
|
66 |
+
means either the Program or any derivative work under copyright law:
|
67 |
+
that is to say, a work containing the Program or a portion of it,
|
68 |
+
either verbatim or with modifications and/or translated into another
|
69 |
+
language. (Hereinafter, translation is included without limitation in
|
70 |
+
the term "modification".) Each licensee is addressed as "you".
|
71 |
+
|
72 |
+
Activities other than copying, distribution and modification are not
|
73 |
+
covered by this License; they are outside its scope. The act of
|
74 |
+
running the Program is not restricted, and the output from the Program
|
75 |
+
is covered only if its contents constitute a work based on the
|
76 |
+
Program (independent of having been made by running the Program).
|
77 |
+
Whether that is true depends on what the Program does.
|
78 |
+
|
79 |
+
1. You may copy and distribute verbatim copies of the Program's
|
80 |
+
source code as you receive it, in any medium, provided that you
|
81 |
+
conspicuously and appropriately publish on each copy an appropriate
|
82 |
+
copyright notice and disclaimer of warranty; keep intact all the
|
83 |
+
notices that refer to this License and to the absence of any warranty;
|
84 |
+
and give any other recipients of the Program a copy of this License
|
85 |
+
along with the Program.
|
86 |
+
|
87 |
+
You may charge a fee for the physical act of transferring a copy, and
|
88 |
+
you may at your option offer warranty protection in exchange for a fee.
|
89 |
+
|
90 |
+
2. You may modify your copy or copies of the Program or any portion
|
91 |
+
of it, thus forming a work based on the Program, and copy and
|
92 |
+
distribute such modifications or work under the terms of Section 1
|
93 |
+
above, provided that you also meet all of these conditions:
|
94 |
+
|
95 |
+
a) You must cause the modified files to carry prominent notices
|
96 |
+
stating that you changed the files and the date of any change.
|
97 |
+
|
98 |
+
b) You must cause any work that you distribute or publish, that in
|
99 |
+
whole or in part contains or is derived from the Program or any
|
100 |
+
part thereof, to be licensed as a whole at no charge to all third
|
101 |
+
parties under the terms of this License.
|
102 |
+
|
103 |
+
c) If the modified program normally reads commands interactively
|
104 |
+
when run, you must cause it, when started running for such
|
105 |
+
interactive use in the most ordinary way, to print or display an
|
106 |
+
announcement including an appropriate copyright notice and a
|
107 |
+
notice that there is no warranty (or else, saying that you provide
|
108 |
+
a warranty) and that users may redistribute the program under
|
109 |
+
these conditions, and telling the user how to view a copy of this
|
110 |
+
License. (Exception: if the Program itself is interactive but
|
111 |
+
does not normally print such an announcement, your work based on
|
112 |
+
the Program is not required to print an announcement.)
|
113 |
+
|
114 |
+
These requirements apply to the modified work as a whole. If
|
115 |
+
identifiable sections of that work are not derived from the Program,
|
116 |
+
and can be reasonably considered independent and separate works in
|
117 |
+
themselves, then this License, and its terms, do not apply to those
|
118 |
+
sections when you distribute them as separate works. But when you
|
119 |
+
distribute the same sections as part of a whole which is a work based
|
120 |
+
on the Program, the distribution of the whole must be on the terms of
|
121 |
+
this License, whose permissions for other licensees extend to the
|
122 |
+
entire whole, and thus to each and every part regardless of who wrote it.
|
123 |
+
|
124 |
+
Thus, it is not the intent of this section to claim rights or contest
|
125 |
+
your rights to work written entirely by you; rather, the intent is to
|
126 |
+
exercise the right to control the distribution of derivative or
|
127 |
+
collective works based on the Program.
|
128 |
+
|
129 |
+
In addition, mere aggregation of another work not based on the Program
|
130 |
+
with the Program (or with a work based on the Program) on a volume of
|
131 |
+
a storage or distribution medium does not bring the other work under
|
132 |
+
the scope of this License.
|
133 |
+
|
134 |
+
3. You may copy and distribute the Program (or a work based on it,
|
135 |
+
under Section 2) in object code or executable form under the terms of
|
136 |
+
Sections 1 and 2 above provided that you also do one of the following:
|
137 |
+
|
138 |
+
a) Accompany it with the complete corresponding machine-readable
|
139 |
+
source code, which must be distributed under the terms of Sections
|
140 |
+
1 and 2 above on a medium customarily used for software interchange; or,
|
141 |
+
|
142 |
+
b) Accompany it with a written offer, valid for at least three
|
143 |
+
years, to give any third party, for a charge no more than your
|
144 |
+
cost of physically performing source distribution, a complete
|
145 |
+
machine-readable copy of the corresponding source code, to be
|
146 |
+
distributed under the terms of Sections 1 and 2 above on a medium
|
147 |
+
customarily used for software interchange; or,
|
148 |
+
|
149 |
+
c) Accompany it with the information you received as to the offer
|
150 |
+
to distribute corresponding source code. (This alternative is
|
151 |
+
allowed only for noncommercial distribution and only if you
|
152 |
+
received the program in object code or executable form with such
|
153 |
+
an offer, in accord with Subsection b above.)
|
154 |
+
|
155 |
+
The source code for a work means the preferred form of the work for
|
156 |
+
making modifications to it. For an executable work, complete source
|
157 |
+
code means all the source code for all modules it contains, plus any
|
158 |
+
associated interface definition files, plus the scripts used to
|
159 |
+
control compilation and installation of the executable. However, as a
|
160 |
+
special exception, the source code distributed need not include
|
161 |
+
anything that is normally distributed (in either source or binary
|
162 |
+
form) with the major components (compiler, kernel, and so on) of the
|
163 |
+
operating system on which the executable runs, unless that component
|
164 |
+
itself accompanies the executable.
|
165 |
+
|
166 |
+
If distribution of executable or object code is made by offering
|
167 |
+
access to copy from a designated place, then offering equivalent
|
168 |
+
access to copy the source code from the same place counts as
|
169 |
+
distribution of the source code, even though third parties are not
|
170 |
+
compelled to copy the source along with the object code.
|
171 |
+
|
172 |
+
4. You may not copy, modify, sublicense, or distribute the Program
|
173 |
+
except as expressly provided under this License. Any attempt
|
174 |
+
otherwise to copy, modify, sublicense or distribute the Program is
|
175 |
+
void, and will automatically terminate your rights under this License.
|
176 |
+
However, parties who have received copies, or rights, from you under
|
177 |
+
this License will not have their licenses terminated so long as such
|
178 |
+
parties remain in full compliance.
|
179 |
+
|
180 |
+
5. You are not required to accept this License, since you have not
|
181 |
+
signed it. However, nothing else grants you permission to modify or
|
182 |
+
distribute the Program or its derivative works. These actions are
|
183 |
+
prohibited by law if you do not accept this License. Therefore, by
|
184 |
+
modifying or distributing the Program (or any work based on the
|
185 |
+
Program), you indicate your acceptance of this License to do so, and
|
186 |
+
all its terms and conditions for copying, distributing or modifying
|
187 |
+
the Program or works based on it.
|
188 |
+
|
189 |
+
6. Each time you redistribute the Program (or any work based on the
|
190 |
+
Program), the recipient automatically receives a license from the
|
191 |
+
original licensor to copy, distribute or modify the Program subject to
|
192 |
+
these terms and conditions. You may not impose any further
|
193 |
+
restrictions on the recipients' exercise of the rights granted herein.
|
194 |
+
You are not responsible for enforcing compliance by third parties to
|
195 |
+
this License.
|
196 |
+
|
197 |
+
7. If, as a consequence of a court judgment or allegation of patent
|
198 |
+
infringement or for any other reason (not limited to patent issues),
|
199 |
+
conditions are imposed on you (whether by court order, agreement or
|
200 |
+
otherwise) that contradict the conditions of this License, they do not
|
201 |
+
excuse you from the conditions of this License. If you cannot
|
202 |
+
distribute so as to satisfy simultaneously your obligations under this
|
203 |
+
License and any other pertinent obligations, then as a consequence you
|
204 |
+
may not distribute the Program at all. For example, if a patent
|
205 |
+
license would not permit royalty-free redistribution of the Program by
|
206 |
+
all those who receive copies directly or indirectly through you, then
|
207 |
+
the only way you could satisfy both it and this License would be to
|
208 |
+
refrain entirely from distribution of the Program.
|
209 |
+
|
210 |
+
If any portion of this section is held invalid or unenforceable under
|
211 |
+
any particular circumstance, the balance of the section is intended to
|
212 |
+
apply and the section as a whole is intended to apply in other
|
213 |
+
circumstances.
|
214 |
+
|
215 |
+
It is not the purpose of this section to induce you to infringe any
|
216 |
+
patents or other property right claims or to contest validity of any
|
217 |
+
such claims; this section has the sole purpose of protecting the
|
218 |
+
integrity of the free software distribution system, which is
|
219 |
+
implemented by public license practices. Many people have made
|
220 |
+
generous contributions to the wide range of software distributed
|
221 |
+
through that system in reliance on consistent application of that
|
222 |
+
system; it is up to the author/donor to decide if he or she is willing
|
223 |
+
to distribute software through any other system and a licensee cannot
|
224 |
+
impose that choice.
|
225 |
+
|
226 |
+
This section is intended to make thoroughly clear what is believed to
|
227 |
+
be a consequence of the rest of this License.
|
228 |
+
|
229 |
+
8. If the distribution and/or use of the Program is restricted in
|
230 |
+
certain countries either by patents or by copyrighted interfaces, the
|
231 |
+
original copyright holder who places the Program under this License
|
232 |
+
may add an explicit geographical distribution limitation excluding
|
233 |
+
those countries, so that distribution is permitted only in or among
|
234 |
+
countries not thus excluded. In such case, this License incorporates
|
235 |
+
the limitation as if written in the body of this License.
|
236 |
+
|
237 |
+
9. The Free Software Foundation may publish revised and/or new versions
|
238 |
+
of the General Public License from time to time. Such new versions will
|
239 |
+
be similar in spirit to the present version, but may differ in detail to
|
240 |
+
address new problems or concerns.
|
241 |
+
|
242 |
+
Each version is given a distinguishing version number. If the Program
|
243 |
+
specifies a version number of this License which applies to it and "any
|
244 |
+
later version", you have the option of following the terms and conditions
|
245 |
+
either of that version or of any later version published by the Free
|
246 |
+
Software Foundation. If the Program does not specify a version number of
|
247 |
+
this License, you may choose any version ever published by the Free Software
|
248 |
+
Foundation.
|
249 |
+
|
250 |
+
10. If you wish to incorporate parts of the Program into other free
|
251 |
+
programs whose distribution conditions are different, write to the author
|
252 |
+
to ask for permission. For software which is copyrighted by the Free
|
253 |
+
Software Foundation, write to the Free Software Foundation; we sometimes
|
254 |
+
make exceptions for this. Our decision will be guided by the two goals
|
255 |
+
of preserving the free status of all derivatives of our free software and
|
256 |
+
of promoting the sharing and reuse of software generally.
|
257 |
+
|
258 |
+
NO WARRANTY
|
259 |
+
|
260 |
+
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
261 |
+
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
262 |
+
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
263 |
+
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
264 |
+
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
265 |
+
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
266 |
+
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
267 |
+
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
268 |
+
REPAIR OR CORRECTION.
|
269 |
+
|
270 |
+
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
271 |
+
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
272 |
+
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
273 |
+
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
274 |
+
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
275 |
+
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
276 |
+
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
277 |
+
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
278 |
+
POSSIBILITY OF SUCH DAMAGES.
|
279 |
+
|
280 |
+
END OF TERMS AND CONDITIONS
|
281 |
+
|
282 |
+
How to Apply These Terms to Your New Programs
|
283 |
+
|
284 |
+
If you develop a new program, and you want it to be of the greatest
|
285 |
+
possible use to the public, the best way to achieve this is to make it
|
286 |
+
free software which everyone can redistribute and change under these terms.
|
287 |
+
|
288 |
+
To do so, attach the following notices to the program. It is safest
|
289 |
+
to attach them to the start of each source file to most effectively
|
290 |
+
convey the exclusion of warranty; and each file should have at least
|
291 |
+
the "copyright" line and a pointer to where the full notice is found.
|
292 |
+
|
293 |
+
<one line to give the program's name and a brief idea of what it does.>
|
294 |
+
Copyright (C) <year> <name of author>
|
295 |
+
|
296 |
+
This program is free software; you can redistribute it and/or modify
|
297 |
+
it under the terms of the GNU General Public License as published by
|
298 |
+
the Free Software Foundation; either version 2 of the License, or
|
299 |
+
(at your option) any later version.
|
300 |
+
|
301 |
+
This program is distributed in the hope that it will be useful,
|
302 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
303 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
304 |
+
GNU General Public License for more details.
|
305 |
+
|
306 |
+
You should have received a copy of the GNU General Public License along
|
307 |
+
with this program; if not, write to the Free Software Foundation, Inc.,
|
308 |
+
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
309 |
+
|
310 |
+
Also add information on how to contact you by electronic and paper mail.
|
311 |
+
|
312 |
+
If the program is interactive, make it output a short notice like this
|
313 |
+
when it starts in an interactive mode:
|
314 |
+
|
315 |
+
Gnomovision version 69, Copyright (C) year name of author
|
316 |
+
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
317 |
+
This is free software, and you are welcome to redistribute it
|
318 |
+
under certain conditions; type `show c' for details.
|
319 |
+
|
320 |
+
The hypothetical commands `show w' and `show c' should show the appropriate
|
321 |
+
parts of the General Public License. Of course, the commands you use may
|
322 |
+
be called something other than `show w' and `show c'; they could even be
|
323 |
+
mouse-clicks or menu items--whatever suits your program.
|
324 |
+
|
325 |
+
You should also get your employer (if you work as a programmer) or your
|
326 |
+
school, if any, to sign a "copyright disclaimer" for the program, if
|
327 |
+
necessary. Here is a sample; alter the names:
|
328 |
+
|
329 |
+
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
330 |
+
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
331 |
+
|
332 |
+
<signature of Ty Coon>, 1 April 1989
|
333 |
+
Ty Coon, President of Vice
|
334 |
+
|
335 |
+
This General Public License does not permit incorporating your program into
|
336 |
+
proprietary programs. If your program is a subroutine library, you may
|
337 |
+
consider it more useful to permit linking proprietary applications with the
|
338 |
+
library. If this is what you want to do, use the GNU Lesser General
|
339 |
+
Public License instead of this License.
|
README.md
ADDED
@@ -0,0 +1,20 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
# A MathML block for the WordPress block editor (Gutenberg).
|
2 |
+
|
3 |
+
## Description
|
4 |
+
|
5 |
+
* Enables MathML math formulas blocks in the editor.
|
6 |
+
* Uses the MathJax library to render the formulas: https://www.mathjax.org
|
7 |
+
|
8 |
+
### What is MathML?
|
9 |
+
|
10 |
+
Mathematical Markup Language is a mathematical markup language, an application of XML for describing mathematical notations and capturing both its structure and content. It aims at integrating mathematical formulae into World Wide Web pages and other documents.
|
11 |
+
|
12 |
+
The MathML block uses MathJax to render MathML formulas in the editor and on the front end of a website. MathJax (https://www.mathjax.org/) is _A JavaScript display engine for mathematics that works in all browsers._
|
13 |
+
|
14 |
+
To test a MathML block and enter a formula, for example: `\[x = {-b \pm \sqrt{b^2-4ac} \over 2a}\]`.
|
15 |
+
|
16 |
+
To test using math formulas inline, type an formula into a block of text, select it and hit the 'M' icon in the control bar. For example: `\( \cos(θ+φ)=\cos(θ)\cos(φ)−\sin(θ)\sin(φ) \)`. _Note: if you are copying and pasting formulas into the rich text editor, switching to HTML/code editor mode is less likely to reformat your pasted formula._
|
17 |
+
|
18 |
+
## Screencast
|
19 |
+
|
20 |
+
![](https://cl.ly/c0f6bbfbc3b1/Screen%252520Recording%2525202018-12-25%252520at%25252008.12%252520AM.gif)
|
assets/banner-1544x500.png
ADDED
Binary file
|
assets/banner-772x250.png
ADDED
Binary file
|
assets/icon-128x128.png
ADDED
Binary file
|
assets/icon-256x256.png
ADDED
Binary file
|
assets/screencast.gif
ADDED
Binary file
|
assets/screenshot-1.png
ADDED
Binary file
|
dist/mathml-block.js
ADDED
@@ -0,0 +1,274 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/******/ (function(modules) { // webpackBootstrap
|
2 |
+
/******/ // The module cache
|
3 |
+
/******/ var installedModules = {};
|
4 |
+
/******/
|
5 |
+
/******/ // The require function
|
6 |
+
/******/ function __webpack_require__(moduleId) {
|
7 |
+
/******/
|
8 |
+
/******/ // Check if module is in cache
|
9 |
+
/******/ if(installedModules[moduleId]) {
|
10 |
+
/******/ return installedModules[moduleId].exports;
|
11 |
+
/******/ }
|
12 |
+
/******/ // Create a new module (and put it into the cache)
|
13 |
+
/******/ var module = installedModules[moduleId] = {
|
14 |
+
/******/ i: moduleId,
|
15 |
+
/******/ l: false,
|
16 |
+
/******/ exports: {}
|
17 |
+
/******/ };
|
18 |
+
/******/
|
19 |
+
/******/ // Execute the module function
|
20 |
+
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
21 |
+
/******/
|
22 |
+
/******/ // Flag the module as loaded
|
23 |
+
/******/ module.l = true;
|
24 |
+
/******/
|
25 |
+
/******/ // Return the exports of the module
|
26 |
+
/******/ return module.exports;
|
27 |
+
/******/ }
|
28 |
+
/******/
|
29 |
+
/******/
|
30 |
+
/******/ // expose the modules object (__webpack_modules__)
|
31 |
+
/******/ __webpack_require__.m = modules;
|
32 |
+
/******/
|
33 |
+
/******/ // expose the module cache
|
34 |
+
/******/ __webpack_require__.c = installedModules;
|
35 |
+
/******/
|
36 |
+
/******/ // define getter function for harmony exports
|
37 |
+
/******/ __webpack_require__.d = function(exports, name, getter) {
|
38 |
+
/******/ if(!__webpack_require__.o(exports, name)) {
|
39 |
+
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
|
40 |
+
/******/ }
|
41 |
+
/******/ };
|
42 |
+
/******/
|
43 |
+
/******/ // define __esModule on exports
|
44 |
+
/******/ __webpack_require__.r = function(exports) {
|
45 |
+
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
46 |
+
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
47 |
+
/******/ }
|
48 |
+
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
49 |
+
/******/ };
|
50 |
+
/******/
|
51 |
+
/******/ // create a fake namespace object
|
52 |
+
/******/ // mode & 1: value is a module id, require it
|
53 |
+
/******/ // mode & 2: merge all properties of value into the ns
|
54 |
+
/******/ // mode & 4: return value when already ns object
|
55 |
+
/******/ // mode & 8|1: behave like require
|
56 |
+
/******/ __webpack_require__.t = function(value, mode) {
|
57 |
+
/******/ if(mode & 1) value = __webpack_require__(value);
|
58 |
+
/******/ if(mode & 8) return value;
|
59 |
+
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
|
60 |
+
/******/ var ns = Object.create(null);
|
61 |
+
/******/ __webpack_require__.r(ns);
|
62 |
+
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
|
63 |
+
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
|
64 |
+
/******/ return ns;
|
65 |
+
/******/ };
|
66 |
+
/******/
|
67 |
+
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
68 |
+
/******/ __webpack_require__.n = function(module) {
|
69 |
+
/******/ var getter = module && module.__esModule ?
|
70 |
+
/******/ function getDefault() { return module['default']; } :
|
71 |
+
/******/ function getModuleExports() { return module; };
|
72 |
+
/******/ __webpack_require__.d(getter, 'a', getter);
|
73 |
+
/******/ return getter;
|
74 |
+
/******/ };
|
75 |
+
/******/
|
76 |
+
/******/ // Object.prototype.hasOwnProperty.call
|
77 |
+
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
78 |
+
/******/
|
79 |
+
/******/ // __webpack_public_path__
|
80 |
+
/******/ __webpack_require__.p = "";
|
81 |
+
/******/
|
82 |
+
/******/
|
83 |
+
/******/ // Load entry module and return exports
|
84 |
+
/******/ return __webpack_require__(__webpack_require__.s = 0);
|
85 |
+
/******/ })
|
86 |
+
/************************************************************************/
|
87 |
+
/******/ ({
|
88 |
+
|
89 |
+
/***/ "./node_modules/css-loader/dist/cjs.js!./src/mathml-block.css":
|
90 |
+
/*!********************************************************************!*\
|
91 |
+
!*** ./node_modules/css-loader/dist/cjs.js!./src/mathml-block.css ***!
|
92 |
+
\********************************************************************/
|
93 |
+
/*! no static exports found */
|
94 |
+
/***/ (function(module, exports, __webpack_require__) {
|
95 |
+
|
96 |
+
eval("// Imports\nvar ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.i, \".toolbar-button__advanced-mathml:before {\\n\\tcontent: 'M';\\n}\", \"\"]);\n// Exports\nmodule.exports = exports;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3NyYy9tYXRobWwtYmxvY2suY3NzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21hdGhtbC1ibG9jay5jc3M/NmY4MyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBJbXBvcnRzXG52YXIgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fID0gcmVxdWlyZShcIi4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIik7XG5leHBvcnRzID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKGZhbHNlKTtcbi8vIE1vZHVsZVxuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiLnRvb2xiYXItYnV0dG9uX19hZHZhbmNlZC1tYXRobWw6YmVmb3JlIHtcXG5cXHRjb250ZW50OiAnTSc7XFxufVwiLCBcIlwiXSk7XG4vLyBFeHBvcnRzXG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHM7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/cjs.js!./src/mathml-block.css\n");
|
97 |
+
|
98 |
+
/***/ }),
|
99 |
+
|
100 |
+
/***/ "./node_modules/css-loader/dist/runtime/api.js":
|
101 |
+
/*!*****************************************************!*\
|
102 |
+
!*** ./node_modules/css-loader/dist/runtime/api.js ***!
|
103 |
+
\*****************************************************/
|
104 |
+
/*! no static exports found */
|
105 |
+
/***/ (function(module, exports, __webpack_require__) {
|
106 |
+
|
107 |
+
"use strict";
|
108 |
+
eval("\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\n\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join('');\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === 'string') {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || '').concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n return \"/*# \".concat(data, \" */\");\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qcz8yNGZiIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG4vKlxuICBNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuICBBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4qL1xuLy8gY3NzIGJhc2UgY29kZSwgaW5qZWN0ZWQgYnkgdGhlIGNzcy1sb2FkZXJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh1c2VTb3VyY2VNYXApIHtcbiAgdmFyIGxpc3QgPSBbXTsgLy8gcmV0dXJuIHRoZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xuXG4gIGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBjb250ZW50ID0gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtLCB1c2VTb3VyY2VNYXApO1xuXG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICByZXR1cm4gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIikuY29uY2F0KGNvbnRlbnQsIFwifVwiKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfSkuam9pbignJyk7XG4gIH07IC8vIGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5cblxuICBsaXN0LmkgPSBmdW5jdGlvbiAobW9kdWxlcywgbWVkaWFRdWVyeSwgZGVkdXBlKSB7XG4gICAgaWYgKHR5cGVvZiBtb2R1bGVzID09PSAnc3RyaW5nJykge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICBtb2R1bGVzID0gW1tudWxsLCBtb2R1bGVzLCAnJ11dO1xuICAgIH1cblxuICAgIHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG5cbiAgICBpZiAoZGVkdXBlKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1kZXN0cnVjdHVyaW5nXG4gICAgICAgIHZhciBpZCA9IHRoaXNbaV1bMF07XG5cbiAgICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgICBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbW9kdWxlcy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBpdGVtID0gW10uY29uY2F0KG1vZHVsZXNbX2ldKTtcblxuICAgICAgaWYgKGRlZHVwZSAmJiBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2l0ZW1bMF1dKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb250aW51ZVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1lZGlhUXVlcnkpIHtcbiAgICAgICAgaWYgKCFpdGVtWzJdKSB7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhUXVlcnk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsyXSA9IFwiXCIuY29uY2F0KG1lZGlhUXVlcnksIFwiIGFuZCBcIikuY29uY2F0KGl0ZW1bMl0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxpc3QucHVzaChpdGVtKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIGxpc3Q7XG59O1xuXG5mdW5jdGlvbiBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0sIHVzZVNvdXJjZU1hcCkge1xuICB2YXIgY29udGVudCA9IGl0ZW1bMV0gfHwgJyc7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItZGVzdHJ1Y3R1cmluZ1xuXG4gIHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcblxuICBpZiAoIWNzc01hcHBpbmcpIHtcbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuXG4gIGlmICh1c2VTb3VyY2VNYXAgJiYgdHlwZW9mIGJ0b2EgPT09ICdmdW5jdGlvbicpIHtcbiAgICB2YXIgc291cmNlTWFwcGluZyA9IHRvQ29tbWVudChjc3NNYXBwaW5nKTtcbiAgICB2YXIgc291cmNlVVJMcyA9IGNzc01hcHBpbmcuc291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgcmV0dXJuIFwiLyojIHNvdXJjZVVSTD1cIi5jb25jYXQoY3NzTWFwcGluZy5zb3VyY2VSb290IHx8ICcnKS5jb25jYXQoc291cmNlLCBcIiAqL1wiKTtcbiAgICB9KTtcbiAgICByZXR1cm4gW2NvbnRlbnRdLmNvbmNhdChzb3VyY2VVUkxzKS5jb25jYXQoW3NvdXJjZU1hcHBpbmddKS5qb2luKCdcXG4nKTtcbiAgfVxuXG4gIHJldHVybiBbY29udGVudF0uam9pbignXFxuJyk7XG59IC8vIEFkYXB0ZWQgZnJvbSBjb252ZXJ0LXNvdXJjZS1tYXAgKE1JVClcblxuXG5mdW5jdGlvbiB0b0NvbW1lbnQoc291cmNlTWFwKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICB2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKTtcbiAgdmFyIGRhdGEgPSBcInNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFwiLmNvbmNhdChiYXNlNjQpO1xuICByZXR1cm4gXCIvKiMgXCIuY29uY2F0KGRhdGEsIFwiICovXCIpO1xufSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFFQTs7OztBQUlBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/css-loader/dist/runtime/api.js\n");
|
109 |
+
|
110 |
+
/***/ }),
|
111 |
+
|
112 |
+
/***/ "./node_modules/process/browser.js":
|
113 |
+
/*!*****************************************!*\
|
114 |
+
!*** ./node_modules/process/browser.js ***!
|
115 |
+
\*****************************************/
|
116 |
+
/*! no static exports found */
|
117 |
+
/***/ (function(module, exports) {
|
118 |
+
|
119 |
+
eval("// shim for using process in browser\nvar process = module.exports = {}; // cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\n\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n } // if setTimeout wasn't available but was latter defined\n\n\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\n\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n } // if clearTimeout wasn't available but was latter defined\n\n\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\n\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n\n draining = false;\n\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n\n while (len) {\n currentQueue = queue;\n queue = [];\n\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n\n queueIndex = -1;\n len = queue.length;\n }\n\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n\n queue.push(new Item(fun, args));\n\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}; // v8 likes predictible objects\n\n\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\n\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\n\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\n\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) {\n return [];\n};\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n return '/';\n};\n\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\n\nprocess.umask = function () {\n return 0;\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvcHJvY2Vzcy9icm93c2VyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Byb2Nlc3MvYnJvd3Nlci5qcz9mMjhjIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHNoaW0gZm9yIHVzaW5nIHByb2Nlc3MgaW4gYnJvd3NlclxudmFyIHByb2Nlc3MgPSBtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG4vLyBjYWNoZWQgZnJvbSB3aGF0ZXZlciBnbG9iYWwgaXMgcHJlc2VudCBzbyB0aGF0IHRlc3QgcnVubmVycyB0aGF0IHN0dWIgaXRcbi8vIGRvbid0IGJyZWFrIHRoaW5ncy4gIEJ1dCB3ZSBuZWVkIHRvIHdyYXAgaXQgaW4gYSB0cnkgY2F0Y2ggaW4gY2FzZSBpdCBpc1xuLy8gd3JhcHBlZCBpbiBzdHJpY3QgbW9kZSBjb2RlIHdoaWNoIGRvZXNuJ3QgZGVmaW5lIGFueSBnbG9iYWxzLiAgSXQncyBpbnNpZGUgYVxuLy8gZnVuY3Rpb24gYmVjYXVzZSB0cnkvY2F0Y2hlcyBkZW9wdGltaXplIGluIGNlcnRhaW4gZW5naW5lcy5cblxudmFyIGNhY2hlZFNldFRpbWVvdXQ7XG52YXIgY2FjaGVkQ2xlYXJUaW1lb3V0O1xuXG5mdW5jdGlvbiBkZWZhdWx0U2V0VGltb3V0KCkge1xuICAgIHRocm93IG5ldyBFcnJvcignc2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuZnVuY3Rpb24gZGVmYXVsdENsZWFyVGltZW91dCAoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbihmdW5jdGlvbiAoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBzZXRUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjbGVhclRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgfVxufSAoKSlcbmZ1bmN0aW9uIHJ1blRpbWVvdXQoZnVuKSB7XG4gICAgaWYgKGNhY2hlZFNldFRpbWVvdXQgPT09IHNldFRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIC8vIGlmIHNldFRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRTZXRUaW1lb3V0ID09PSBkZWZhdWx0U2V0VGltb3V0IHx8ICFjYWNoZWRTZXRUaW1lb3V0KSAmJiBzZXRUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfSBjYXRjaChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbChudWxsLCBmdW4sIDApO1xuICAgICAgICB9IGNhdGNoKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3JcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwodGhpcywgZnVuLCAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG59XG5mdW5jdGlvbiBydW5DbGVhclRpbWVvdXQobWFya2VyKSB7XG4gICAgaWYgKGNhY2hlZENsZWFyVGltZW91dCA9PT0gY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIC8vIGlmIGNsZWFyVGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZENsZWFyVGltZW91dCA9PT0gZGVmYXVsdENsZWFyVGltZW91dCB8fCAhY2FjaGVkQ2xlYXJUaW1lb3V0KSAmJiBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0ICB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKG51bGwsIG1hcmtlcik7XG4gICAgICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3IuXG4gICAgICAgICAgICAvLyBTb21lIHZlcnNpb25zIG9mIEkuRS4gaGF2ZSBkaWZmZXJlbnQgcnVsZXMgZm9yIGNsZWFyVGltZW91dCB2cyBzZXRUaW1lb3V0XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwodGhpcywgbWFya2VyKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG5cbn1cbnZhciBxdWV1ZSA9IFtdO1xudmFyIGRyYWluaW5nID0gZmFsc2U7XG52YXIgY3VycmVudFF1ZXVlO1xudmFyIHF1ZXVlSW5kZXggPSAtMTtcblxuZnVuY3Rpb24gY2xlYW5VcE5leHRUaWNrKCkge1xuICAgIGlmICghZHJhaW5pbmcgfHwgIWN1cnJlbnRRdWV1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgaWYgKGN1cnJlbnRRdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgcXVldWUgPSBjdXJyZW50UXVldWUuY29uY2F0KHF1ZXVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgfVxuICAgIGlmIChxdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgZHJhaW5RdWV1ZSgpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZHJhaW5RdWV1ZSgpIHtcbiAgICBpZiAoZHJhaW5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgdGltZW91dCA9IHJ1blRpbWVvdXQoY2xlYW5VcE5leHRUaWNrKTtcbiAgICBkcmFpbmluZyA9IHRydWU7XG5cbiAgICB2YXIgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIHdoaWxlKGxlbikge1xuICAgICAgICBjdXJyZW50UXVldWUgPSBxdWV1ZTtcbiAgICAgICAgcXVldWUgPSBbXTtcbiAgICAgICAgd2hpbGUgKCsrcXVldWVJbmRleCA8IGxlbikge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRRdWV1ZSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRRdWV1ZVtxdWV1ZUluZGV4XS5ydW4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgICAgIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB9XG4gICAgY3VycmVudFF1ZXVlID0gbnVsbDtcbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIHJ1bkNsZWFyVGltZW91dCh0aW1lb3V0KTtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IGZ1bmN0aW9uIChmdW4pIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBxdWV1ZS5wdXNoKG5ldyBJdGVtKGZ1biwgYXJncykpO1xuICAgIGlmIChxdWV1ZS5sZW5ndGggPT09IDEgJiYgIWRyYWluaW5nKSB7XG4gICAgICAgIHJ1blRpbWVvdXQoZHJhaW5RdWV1ZSk7XG4gICAgfVxufTtcblxuLy8gdjggbGlrZXMgcHJlZGljdGlibGUgb2JqZWN0c1xuZnVuY3Rpb24gSXRlbShmdW4sIGFycmF5KSB7XG4gICAgdGhpcy5mdW4gPSBmdW47XG4gICAgdGhpcy5hcnJheSA9IGFycmF5O1xufVxuSXRlbS5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZnVuLmFwcGx5KG51bGwsIHRoaXMuYXJyYXkpO1xufTtcbnByb2Nlc3MudGl0bGUgPSAnYnJvd3Nlcic7XG5wcm9jZXNzLmJyb3dzZXIgPSB0cnVlO1xucHJvY2Vzcy5lbnYgPSB7fTtcbnByb2Nlc3MuYXJndiA9IFtdO1xucHJvY2Vzcy52ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzXG5wcm9jZXNzLnZlcnNpb25zID0ge307XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5wcm9jZXNzLm9uID0gbm9vcDtcbnByb2Nlc3MuYWRkTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5vbmNlID0gbm9vcDtcbnByb2Nlc3Mub2ZmID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29wO1xucHJvY2Vzcy5lbWl0ID0gbm9vcDtcbnByb2Nlc3MucHJlcGVuZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucHJlcGVuZE9uY2VMaXN0ZW5lciA9IG5vb3A7XG5cbnByb2Nlc3MubGlzdGVuZXJzID0gZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIFtdIH1cblxucHJvY2Vzcy5iaW5kaW5nID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xuXG5wcm9jZXNzLmN3ZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICcvJyB9O1xucHJvY2Vzcy5jaGRpciA9IGZ1bmN0aW9uIChkaXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcbnByb2Nlc3MudW1hc2sgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDA7IH07XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/process/browser.js\n");
|
120 |
+
|
121 |
+
/***/ }),
|
122 |
+
|
123 |
+
/***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":
|
124 |
+
/*!****************************************************************************!*\
|
125 |
+
!*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!
|
126 |
+
\****************************************************************************/
|
127 |
+
/*! no static exports found */
|
128 |
+
/***/ (function(module, exports, __webpack_require__) {
|
129 |
+
|
130 |
+
"use strict";
|
131 |
+
eval("\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = true ? __webpack_require__.nc : undefined;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && btoa) {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\n return;\n }\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanM/MmRiYSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxudmFyIGlzT2xkSUUgPSBmdW5jdGlvbiBpc09sZElFKCkge1xuICB2YXIgbWVtbztcbiAgcmV0dXJuIGZ1bmN0aW9uIG1lbW9yaXplKCkge1xuICAgIGlmICh0eXBlb2YgbWVtbyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIFRlc3QgZm9yIElFIDw9IDkgYXMgcHJvcG9zZWQgYnkgQnJvd3NlcmhhY2tzXG4gICAgICAvLyBAc2VlIGh0dHA6Ly9icm93c2VyaGFja3MuY29tLyNoYWNrLWU3MWQ4NjkyZjY1MzM0MTczZmVlNzE1YzIyMmNiODA1XG4gICAgICAvLyBUZXN0cyBmb3IgZXhpc3RlbmNlIG9mIHN0YW5kYXJkIGdsb2JhbHMgaXMgdG8gYWxsb3cgc3R5bGUtbG9hZGVyXG4gICAgICAvLyB0byBvcGVyYXRlIGNvcnJlY3RseSBpbnRvIG5vbi1zdGFuZGFyZCBlbnZpcm9ubWVudHNcbiAgICAgIC8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3dlYnBhY2stY29udHJpYi9zdHlsZS1sb2FkZXIvaXNzdWVzLzE3N1xuICAgICAgbWVtbyA9IEJvb2xlYW4od2luZG93ICYmIGRvY3VtZW50ICYmIGRvY3VtZW50LmFsbCAmJiAhd2luZG93LmF0b2IpO1xuICAgIH1cblxuICAgIHJldHVybiBtZW1vO1xuICB9O1xufSgpO1xuXG52YXIgZ2V0VGFyZ2V0ID0gZnVuY3Rpb24gZ2V0VGFyZ2V0KCkge1xuICB2YXIgbWVtbyA9IHt9O1xuICByZXR1cm4gZnVuY3Rpb24gbWVtb3JpemUodGFyZ2V0KSB7XG4gICAgaWYgKHR5cGVvZiBtZW1vW3RhcmdldF0gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB2YXIgc3R5bGVUYXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHRhcmdldCk7IC8vIFNwZWNpYWwgY2FzZSB0byByZXR1cm4gaGVhZCBvZiBpZnJhbWUgaW5zdGVhZCBvZiBpZnJhbWUgaXRzZWxmXG5cbiAgICAgIGlmICh3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQgJiYgc3R5bGVUYXJnZXQgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuICAgICAgICAgIC8vIGR1ZSB0byBjcm9zcy1vcmlnaW4gcmVzdHJpY3Rpb25zXG4gICAgICAgICAgc3R5bGVUYXJnZXQgPSBzdHlsZVRhcmdldC5jb250ZW50RG9jdW1lbnQuaGVhZDtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgICAgc3R5bGVUYXJnZXQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuICAgIH1cblxuICAgIHJldHVybiBtZW1vW3RhcmdldF07XG4gIH07XG59KCk7XG5cbnZhciBzdHlsZXNJbkRvbSA9IFtdO1xuXG5mdW5jdGlvbiBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKSB7XG4gIHZhciByZXN1bHQgPSAtMTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlc0luRG9tLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0eWxlc0luRG9tW2ldLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpIHtcbiAgICAgIHJlc3VsdCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucykge1xuICB2YXIgaWRDb3VudE1hcCA9IHt9O1xuICB2YXIgaWRlbnRpZmllcnMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV07XG4gICAgdmFyIGlkID0gb3B0aW9ucy5iYXNlID8gaXRlbVswXSArIG9wdGlvbnMuYmFzZSA6IGl0ZW1bMF07XG4gICAgdmFyIGNvdW50ID0gaWRDb3VudE1hcFtpZF0gfHwgMDtcbiAgICB2YXIgaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGlkLCBcIiBcIikuY29uY2F0KGNvdW50KTtcbiAgICBpZENvdW50TWFwW2lkXSA9IGNvdW50ICsgMTtcbiAgICB2YXIgaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICB2YXIgb2JqID0ge1xuICAgICAgY3NzOiBpdGVtWzFdLFxuICAgICAgbWVkaWE6IGl0ZW1bMl0sXG4gICAgICBzb3VyY2VNYXA6IGl0ZW1bM11cbiAgICB9O1xuXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgc3R5bGVzSW5Eb21baW5kZXhdLnJlZmVyZW5jZXMrKztcbiAgICAgIHN0eWxlc0luRG9tW2luZGV4XS51cGRhdGVyKG9iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlc0luRG9tLnB1c2goe1xuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB1cGRhdGVyOiBhZGRTdHlsZShvYmosIG9wdGlvbnMpLFxuICAgICAgICByZWZlcmVuY2VzOiAxXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZGVudGlmaWVycy5wdXNoKGlkZW50aWZpZXIpO1xuICB9XG5cbiAgcmV0dXJuIGlkZW50aWZpZXJzO1xufVxuXG5mdW5jdGlvbiBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucykge1xuICB2YXIgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICB2YXIgYXR0cmlidXRlcyA9IG9wdGlvbnMuYXR0cmlidXRlcyB8fCB7fTtcblxuICBpZiAodHlwZW9mIGF0dHJpYnV0ZXMubm9uY2UgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgdmFyIG5vbmNlID0gdHlwZW9mIF9fd2VicGFja19ub25jZV9fICE9PSAndW5kZWZpbmVkJyA/IF9fd2VicGFja19ub25jZV9fIDogbnVsbDtcblxuICAgIGlmIChub25jZSkge1xuICAgICAgYXR0cmlidXRlcy5ub25jZSA9IG5vbmNlO1xuICAgIH1cbiAgfVxuXG4gIE9iamVjdC5rZXlzKGF0dHJpYnV0ZXMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHN0eWxlLnNldEF0dHJpYnV0ZShrZXksIGF0dHJpYnV0ZXNba2V5XSk7XG4gIH0pO1xuXG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5pbnNlcnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICBvcHRpb25zLmluc2VydChzdHlsZSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHRhcmdldCA9IGdldFRhcmdldChvcHRpb25zLmluc2VydCB8fCAnaGVhZCcpO1xuXG4gICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkbid0IGZpbmQgYSBzdHlsZSB0YXJnZXQuIFRoaXMgcHJvYmFibHkgbWVhbnMgdGhhdCB0aGUgdmFsdWUgZm9yIHRoZSAnaW5zZXJ0JyBwYXJhbWV0ZXIgaXMgaW52YWxpZC5cIik7XG4gICAgfVxuXG4gICAgdGFyZ2V0LmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgfVxuXG4gIHJldHVybiBzdHlsZTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlKSB7XG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBpZlxuICBpZiAoc3R5bGUucGFyZW50Tm9kZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0eWxlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGUpO1xufVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5cblxudmFyIHJlcGxhY2VUZXh0ID0gZnVuY3Rpb24gcmVwbGFjZVRleHQoKSB7XG4gIHZhciB0ZXh0U3RvcmUgPSBbXTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHJlcGxhY2UoaW5kZXgsIHJlcGxhY2VtZW50KSB7XG4gICAgdGV4dFN0b3JlW2luZGV4XSA9IHJlcGxhY2VtZW50O1xuICAgIHJldHVybiB0ZXh0U3RvcmUuZmlsdGVyKEJvb2xlYW4pLmpvaW4oJ1xcbicpO1xuICB9O1xufSgpO1xuXG5mdW5jdGlvbiBhcHBseVRvU2luZ2xldG9uVGFnKHN0eWxlLCBpbmRleCwgcmVtb3ZlLCBvYmopIHtcbiAgdmFyIGNzcyA9IHJlbW92ZSA/ICcnIDogb2JqLm1lZGlhID8gXCJAbWVkaWEgXCIuY29uY2F0KG9iai5tZWRpYSwgXCIge1wiKS5jb25jYXQob2JqLmNzcywgXCJ9XCIpIDogb2JqLmNzczsgLy8gRm9yIG9sZCBJRVxuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAgKi9cblxuICBpZiAoc3R5bGUuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlLnN0eWxlU2hlZXQuY3NzVGV4dCA9IHJlcGxhY2VUZXh0KGluZGV4LCBjc3MpO1xuICB9IGVsc2Uge1xuICAgIHZhciBjc3NOb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKTtcbiAgICB2YXIgY2hpbGROb2RlcyA9IHN0eWxlLmNoaWxkTm9kZXM7XG5cbiAgICBpZiAoY2hpbGROb2Rlc1tpbmRleF0pIHtcbiAgICAgIHN0eWxlLnJlbW92ZUNoaWxkKGNoaWxkTm9kZXNbaW5kZXhdKTtcbiAgICB9XG5cbiAgICBpZiAoY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgIHN0eWxlLmluc2VydEJlZm9yZShjc3NOb2RlLCBjaGlsZE5vZGVzW2luZGV4XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlLmFwcGVuZENoaWxkKGNzc05vZGUpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhcHBseVRvVGFnKHN0eWxlLCBvcHRpb25zLCBvYmopIHtcbiAgdmFyIGNzcyA9IG9iai5jc3M7XG4gIHZhciBtZWRpYSA9IG9iai5tZWRpYTtcbiAgdmFyIHNvdXJjZU1hcCA9IG9iai5zb3VyY2VNYXA7XG5cbiAgaWYgKG1lZGlhKSB7XG4gICAgc3R5bGUuc2V0QXR0cmlidXRlKCdtZWRpYScsIG1lZGlhKTtcbiAgfSBlbHNlIHtcbiAgICBzdHlsZS5yZW1vdmVBdHRyaWJ1dGUoJ21lZGlhJyk7XG4gIH1cblxuICBpZiAoc291cmNlTWFwICYmIGJ0b2EpIHtcbiAgICBjc3MgKz0gXCJcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LFwiLmNvbmNhdChidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpLCBcIiAqL1wiKTtcbiAgfSAvLyBGb3Igb2xkIElFXG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICAqL1xuXG5cbiAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlLmZpcnN0Q2hpbGQpIHtcbiAgICAgIHN0eWxlLnJlbW92ZUNoaWxkKHN0eWxlLmZpcnN0Q2hpbGQpO1xuICAgIH1cblxuICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICB9XG59XG5cbnZhciBzaW5nbGV0b24gPSBudWxsO1xudmFyIHNpbmdsZXRvbkNvdW50ZXIgPSAwO1xuXG5mdW5jdGlvbiBhZGRTdHlsZShvYmosIG9wdGlvbnMpIHtcbiAgdmFyIHN0eWxlO1xuICB2YXIgdXBkYXRlO1xuICB2YXIgcmVtb3ZlO1xuXG4gIGlmIChvcHRpb25zLnNpbmdsZXRvbikge1xuICAgIHZhciBzdHlsZUluZGV4ID0gc2luZ2xldG9uQ291bnRlcisrO1xuICAgIHN0eWxlID0gc2luZ2xldG9uIHx8IChzaW5nbGV0b24gPSBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucykpO1xuICAgIHVwZGF0ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZSwgc3R5bGVJbmRleCwgZmFsc2UpO1xuICAgIHJlbW92ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZSwgc3R5bGVJbmRleCwgdHJ1ZSk7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUgPSBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG4gICAgdXBkYXRlID0gYXBwbHlUb1RhZy5iaW5kKG51bGwsIHN0eWxlLCBvcHRpb25zKTtcblxuICAgIHJlbW92ZSA9IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZSk7XG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZShvYmopO1xuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlU3R5bGUobmV3T2JqKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiYgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiYgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZShvYmogPSBuZXdPYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICByZW1vdmUoKTtcbiAgICB9XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGxpc3QsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307IC8vIEZvcmNlIHNpbmdsZS10YWcgc29sdXRpb24gb24gSUU2LTksIHdoaWNoIGhhcyBhIGhhcmQgbGltaXQgb24gdGhlICMgb2YgPHN0eWxlPlxuICAvLyB0YWdzIGl0IHdpbGwgYWxsb3cgb24gYSBwYWdlXG5cbiAgaWYgKCFvcHRpb25zLnNpbmdsZXRvbiAmJiB0eXBlb2Ygb3B0aW9ucy5zaW5nbGV0b24gIT09ICdib29sZWFuJykge1xuICAgIG9wdGlvbnMuc2luZ2xldG9uID0gaXNPbGRJRSgpO1xuICB9XG5cbiAgbGlzdCA9IGxpc3QgfHwgW107XG4gIHZhciBsYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuICAgIG5ld0xpc3QgPSBuZXdMaXN0IHx8IFtdO1xuXG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXdMaXN0KSAhPT0gJ1tvYmplY3QgQXJyYXldJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tpXTtcbiAgICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgICAgc3R5bGVzSW5Eb21baW5kZXhdLnJlZmVyZW5jZXMtLTtcbiAgICB9XG5cbiAgICB2YXIgbmV3TGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKG5ld0xpc3QsIG9wdGlvbnMpO1xuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tfaV07XG5cbiAgICAgIHZhciBfaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihfaWRlbnRpZmllcik7XG5cbiAgICAgIGlmIChzdHlsZXNJbkRvbVtfaW5kZXhdLnJlZmVyZW5jZXMgPT09IDApIHtcbiAgICAgICAgc3R5bGVzSW5Eb21bX2luZGV4XS51cGRhdGVyKCk7XG5cbiAgICAgICAgc3R5bGVzSW5Eb20uc3BsaWNlKF9pbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGFzdElkZW50aWZpZXJzID0gbmV3TGFzdElkZW50aWZpZXJzO1xuICB9O1xufTsiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\n");
|
132 |
+
|
133 |
+
/***/ }),
|
134 |
+
|
135 |
+
/***/ "./node_modules/util/node_modules/inherits/inherits_browser.js":
|
136 |
+
/*!*********************************************************************!*\
|
137 |
+
!*** ./node_modules/util/node_modules/inherits/inherits_browser.js ***!
|
138 |
+
\*********************************************************************/
|
139 |
+
/*! no static exports found */
|
140 |
+
/***/ (function(module, exports) {
|
141 |
+
|
142 |
+
eval("if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n\n var TempCtor = function TempCtor() {};\n\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n };\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdXRpbC9ub2RlX21vZHVsZXMvaW5oZXJpdHMvaW5oZXJpdHNfYnJvd3Nlci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy91dGlsL25vZGVfbW9kdWxlcy9pbmhlcml0cy9pbmhlcml0c19icm93c2VyLmpzPzI4YTAiXSwic291cmNlc0NvbnRlbnQiOlsiaWYgKHR5cGVvZiBPYmplY3QuY3JlYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gIC8vIGltcGxlbWVudGF0aW9uIGZyb20gc3RhbmRhcmQgbm9kZS5qcyAndXRpbCcgbW9kdWxlXG4gIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5oZXJpdHMoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3JcbiAgICBjdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDdG9yLnByb3RvdHlwZSwge1xuICAgICAgY29uc3RydWN0b3I6IHtcbiAgICAgICAgdmFsdWU6IGN0b3IsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICB9XG4gICAgfSk7XG4gIH07XG59IGVsc2Uge1xuICAvLyBvbGQgc2Nob29sIHNoaW0gZm9yIG9sZCBicm93c2Vyc1xuICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGluaGVyaXRzKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yXG4gICAgdmFyIFRlbXBDdG9yID0gZnVuY3Rpb24gKCkge31cbiAgICBUZW1wQ3Rvci5wcm90b3R5cGUgPSBzdXBlckN0b3IucHJvdG90eXBlXG4gICAgY3Rvci5wcm90b3R5cGUgPSBuZXcgVGVtcEN0b3IoKVxuICAgIGN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY3RvclxuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSkE7QUFEQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/util/node_modules/inherits/inherits_browser.js\n");
|
143 |
+
|
144 |
+
/***/ }),
|
145 |
+
|
146 |
+
/***/ "./node_modules/util/support/isBufferBrowser.js":
|
147 |
+
/*!******************************************************!*\
|
148 |
+
!*** ./node_modules/util/support/isBufferBrowser.js ***!
|
149 |
+
\******************************************************/
|
150 |
+
/*! no static exports found */
|
151 |
+
/***/ (function(module, exports) {
|
152 |
+
|
153 |
+
eval("function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nmodule.exports = function isBuffer(arg) {\n return arg && _typeof(arg) === 'object' && typeof arg.copy === 'function' && typeof arg.fill === 'function' && typeof arg.readUInt8 === 'function';\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdXRpbC9zdXBwb3J0L2lzQnVmZmVyQnJvd3Nlci5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy91dGlsL3N1cHBvcnQvaXNCdWZmZXJCcm93c2VyLmpzP2Q2MGEiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0J1ZmZlcihhcmcpIHtcbiAgcmV0dXJuIGFyZyAmJiB0eXBlb2YgYXJnID09PSAnb2JqZWN0J1xuICAgICYmIHR5cGVvZiBhcmcuY29weSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICYmIHR5cGVvZiBhcmcuZmlsbCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICYmIHR5cGVvZiBhcmcucmVhZFVJbnQ4ID09PSAnZnVuY3Rpb24nO1xufSJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBO0FBSUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/util/support/isBufferBrowser.js\n");
|
154 |
+
|
155 |
+
/***/ }),
|
156 |
+
|
157 |
+
/***/ "./node_modules/util/util.js":
|
158 |
+
/*!***********************************!*\
|
159 |
+
!*** ./node_modules/util/util.js ***!
|
160 |
+
\***********************************/
|
161 |
+
/*! no static exports found */
|
162 |
+
/***/ (function(module, exports, __webpack_require__) {
|
163 |
+
|
164 |
+
eval("/* WEBPACK VAR INJECTION */(function(process) {function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors || function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n\n return descriptors;\n};\n\nvar formatRegExp = /%[sdj%]/g;\n\nexports.format = function (f) {\n if (!isString(f)) {\n var objects = [];\n\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function (x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n\n switch (x) {\n case '%s':\n return String(args[i++]);\n\n case '%d':\n return Number(args[i++]);\n\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n\n default:\n return x;\n }\n });\n\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n\n return str;\n}; // Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\n\n\nexports.deprecate = function (fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n } // Allow for deprecating things in the process of starting up.\n\n\n if (typeof process === 'undefined') {\n return function () {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n\n warned = true;\n }\n\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\nvar debugs = {};\nvar debugEnviron;\n\nexports.debuglog = function (set) {\n if (isUndefined(debugEnviron)) debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n\n debugs[set] = function () {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function () {};\n }\n }\n\n return debugs[set];\n};\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n\n/* legacy: obj, showHidden, depth, colors*/\n\n\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n }; // legacy...\n\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n } // set default options\n\n\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\n\nexports.inspect = inspect; // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\n\ninspect.colors = {\n 'bold': [1, 22],\n 'italic': [3, 23],\n 'underline': [4, 24],\n 'inverse': [7, 27],\n 'white': [37, 39],\n 'grey': [90, 39],\n 'black': [30, 39],\n 'blue': [34, 39],\n 'cyan': [36, 39],\n 'green': [32, 39],\n 'magenta': [35, 39],\n 'red': [31, 39],\n 'yellow': [33, 39]\n}; // Don't use 'blue' not visible on cmd.exe\n\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return \"\\x1B[\" + inspect.colors[style][0] + 'm' + str + \"\\x1B[\" + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\nfunction arrayToHash(array) {\n var hash = {};\n array.forEach(function (val, idx) {\n hash[val] = true;\n });\n return hash;\n}\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect && value && isFunction(value.inspect) && // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect && // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n\n return ret;\n } // Primitive types cannot have properties\n\n\n var primitive = formatPrimitive(ctx, value);\n\n if (primitive) {\n return primitive;\n } // Look up the keys of the object.\n\n\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n } // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n\n\n if (isError(value) && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n } // Some type of object without properties can be shortcutted.\n\n\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '',\n array = false,\n braces = ['{', '}']; // Make Array say that they are Array\n\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n } // Make functions say that they are functions\n\n\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n } // Make RegExps say that they are RegExps\n\n\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n } // Make dates with properties first say the date\n\n\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n } // Make error with message first say the error\n\n\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n var output;\n\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function (key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n return reduceToSingleString(output, base, braces);\n}\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value)) return ctx.stylize('undefined', 'undefined');\n\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '').replace(/'/g, \"\\\\'\").replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n\n if (isNumber(value)) return ctx.stylize('' + value, 'number');\n if (isBoolean(value)) return ctx.stylize('' + value, 'boolean'); // For some reason typeof null is \"object\", so special case here.\n\n if (isNull(value)) return ctx.stylize('null', 'null');\n}\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, String(i), true));\n } else {\n output.push('');\n }\n }\n\n keys.forEach(function (key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, key, true));\n }\n });\n return output;\n}\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || {\n value: value[key]\n };\n\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function (line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function (line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n\n name = JSON.stringify('' + key);\n\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\").replace(/\\\\\"/g, '\"').replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function (prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] + (base === '' ? '' : base + '\\n ') + ' ' + output.join(',\\n ') + ' ' + braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n} // NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\n\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\n\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\n\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\n\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\n\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return _typeof(arg) === 'symbol';\n}\n\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\n\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return _typeof(arg) === 'object' && arg !== null;\n}\n\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\n\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) && (objectToString(e) === '[object Error]' || e instanceof Error);\n}\n\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null || typeof arg === 'boolean' || typeof arg === 'number' || typeof arg === 'string' || _typeof(arg) === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\n\nexports.isPrimitive = isPrimitive;\nexports.isBuffer = __webpack_require__(/*! ./support/isBuffer */ \"./node_modules/util/support/isBufferBrowser.js\");\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; // 26 Feb 16:19:34\n\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()), pad(d.getMinutes()), pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n} // log is just a thin wrapper to console.log that prepends a timestamp\n\n\nexports.log = function () {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\n\n\nexports.inherits = __webpack_require__(/*! inherits */ \"./node_modules/util/node_modules/inherits/inherits_browser.js\");\n\nexports._extend = function (origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n var keys = Object.keys(add);\n var i = keys.length;\n\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function') throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn,\n enumerable: false,\n writable: false,\n configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n var args = [];\n\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn,\n enumerable: false,\n writable: false,\n configurable: true\n });\n return Object.defineProperties(fn, getOwnPropertyDescriptors(original));\n};\n\nexports.promisify.custom = kCustomPromisifiedSymbol;\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n } // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n\n\n function callbackified() {\n var args = [];\n\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n\n var self = this;\n\n var cb = function cb() {\n return maybeCb.apply(self, arguments);\n }; // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n\n\n original.apply(this, args).then(function (ret) {\n process.nextTick(cb, null, ret);\n }, function (rej) {\n process.nextTick(callbackifyOnRejected, rej, cb);\n });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified, getOwnPropertyDescriptors(original));\n return callbackified;\n}\n\nexports.callbackify = callbackify;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../process/browser.js */ \"./node_modules/process/browser.js\")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdXRpbC91dGlsLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3V0aWwvdXRpbC5qcz8zMDIyIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIHx8XG4gIGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcnMob2JqKSB7XG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgIHZhciBkZXNjcmlwdG9ycyA9IHt9O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgZGVzY3JpcHRvcnNba2V5c1tpXV0gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5c1tpXSk7XG4gICAgfVxuICAgIHJldHVybiBkZXNjcmlwdG9ycztcbiAgfTtcblxudmFyIGZvcm1hdFJlZ0V4cCA9IC8lW3NkaiVdL2c7XG5leHBvcnRzLmZvcm1hdCA9IGZ1bmN0aW9uKGYpIHtcbiAgaWYgKCFpc1N0cmluZyhmKSkge1xuICAgIHZhciBvYmplY3RzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIG9iamVjdHMucHVzaChpbnNwZWN0KGFyZ3VtZW50c1tpXSkpO1xuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0cy5qb2luKCcgJyk7XG4gIH1cblxuICB2YXIgaSA9IDE7XG4gIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICB2YXIgbGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBzdHIgPSBTdHJpbmcoZikucmVwbGFjZShmb3JtYXRSZWdFeHAsIGZ1bmN0aW9uKHgpIHtcbiAgICBpZiAoeCA9PT0gJyUlJykgcmV0dXJuICclJztcbiAgICBpZiAoaSA+PSBsZW4pIHJldHVybiB4O1xuICAgIHN3aXRjaCAoeCkge1xuICAgICAgY2FzZSAnJXMnOiByZXR1cm4gU3RyaW5nKGFyZ3NbaSsrXSk7XG4gICAgICBjYXNlICclZCc6IHJldHVybiBOdW1iZXIoYXJnc1tpKytdKTtcbiAgICAgIGNhc2UgJyVqJzpcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYXJnc1tpKytdKTtcbiAgICAgICAgfSBjYXRjaCAoXykge1xuICAgICAgICAgIHJldHVybiAnW0NpcmN1bGFyXSc7XG4gICAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB4O1xuICAgIH1cbiAgfSk7XG4gIGZvciAodmFyIHggPSBhcmdzW2ldOyBpIDwgbGVuOyB4ID0gYXJnc1srK2ldKSB7XG4gICAgaWYgKGlzTnVsbCh4KSB8fCAhaXNPYmplY3QoeCkpIHtcbiAgICAgIHN0ciArPSAnICcgKyB4O1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHIgKz0gJyAnICsgaW5zcGVjdCh4KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN0cjtcbn07XG5cblxuLy8gTWFyayB0aGF0IGEgbWV0aG9kIHNob3VsZCBub3QgYmUgdXNlZC5cbi8vIFJldHVybnMgYSBtb2RpZmllZCBmdW5jdGlvbiB3aGljaCB3YXJucyBvbmNlIGJ5IGRlZmF1bHQuXG4vLyBJZiAtLW5vLWRlcHJlY2F0aW9uIGlzIHNldCwgdGhlbiBpdCBpcyBhIG5vLW9wLlxuZXhwb3J0cy5kZXByZWNhdGUgPSBmdW5jdGlvbihmbiwgbXNnKSB7XG4gIGlmICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy5ub0RlcHJlY2F0aW9uID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIGZuO1xuICB9XG5cbiAgLy8gQWxsb3cgZm9yIGRlcHJlY2F0aW5nIHRoaW5ncyBpbiB0aGUgcHJvY2VzcyBvZiBzdGFydGluZyB1cC5cbiAgaWYgKHR5cGVvZiBwcm9jZXNzID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBleHBvcnRzLmRlcHJlY2F0ZShmbiwgbXNnKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH1cblxuICB2YXIgd2FybmVkID0gZmFsc2U7XG4gIGZ1bmN0aW9uIGRlcHJlY2F0ZWQoKSB7XG4gICAgaWYgKCF3YXJuZWQpIHtcbiAgICAgIGlmIChwcm9jZXNzLnRocm93RGVwcmVjYXRpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gICAgICB9IGVsc2UgaWYgKHByb2Nlc3MudHJhY2VEZXByZWNhdGlvbikge1xuICAgICAgICBjb25zb2xlLnRyYWNlKG1zZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKG1zZyk7XG4gICAgICB9XG4gICAgICB3YXJuZWQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIHJldHVybiBkZXByZWNhdGVkO1xufTtcblxuXG52YXIgZGVidWdzID0ge307XG52YXIgZGVidWdFbnZpcm9uO1xuZXhwb3J0cy5kZWJ1Z2xvZyA9IGZ1bmN0aW9uKHNldCkge1xuICBpZiAoaXNVbmRlZmluZWQoZGVidWdFbnZpcm9uKSlcbiAgICBkZWJ1Z0Vudmlyb24gPSBwcm9jZXNzLmVudi5OT0RFX0RFQlVHIHx8ICcnO1xuICBzZXQgPSBzZXQudG9VcHBlckNhc2UoKTtcbiAgaWYgKCFkZWJ1Z3Nbc2V0XSkge1xuICAgIGlmIChuZXcgUmVnRXhwKCdcXFxcYicgKyBzZXQgKyAnXFxcXGInLCAnaScpLnRlc3QoZGVidWdFbnZpcm9uKSkge1xuICAgICAgdmFyIHBpZCA9IHByb2Nlc3MucGlkO1xuICAgICAgZGVidWdzW3NldF0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIG1zZyA9IGV4cG9ydHMuZm9ybWF0LmFwcGx5KGV4cG9ydHMsIGFyZ3VtZW50cyk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJyVzICVkOiAlcycsIHNldCwgcGlkLCBtc2cpO1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVidWdzW3NldF0gPSBmdW5jdGlvbigpIHt9O1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGVidWdzW3NldF07XG59O1xuXG5cbi8qKlxuICogRWNob3MgdGhlIHZhbHVlIG9mIGEgdmFsdWUuIFRyeXMgdG8gcHJpbnQgdGhlIHZhbHVlIG91dFxuICogaW4gdGhlIGJlc3Qgd2F5IHBvc3NpYmxlIGdpdmVuIHRoZSBkaWZmZXJlbnQgdHlwZXMuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9iaiBUaGUgb2JqZWN0IHRvIHByaW50IG91dC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIE9wdGlvbmFsIG9wdGlvbnMgb2JqZWN0IHRoYXQgYWx0ZXJzIHRoZSBvdXRwdXQuXG4gKi9cbi8qIGxlZ2FjeTogb2JqLCBzaG93SGlkZGVuLCBkZXB0aCwgY29sb3JzKi9cbmZ1bmN0aW9uIGluc3BlY3Qob2JqLCBvcHRzKSB7XG4gIC8vIGRlZmF1bHQgb3B0aW9uc1xuICB2YXIgY3R4ID0ge1xuICAgIHNlZW46IFtdLFxuICAgIHN0eWxpemU6IHN0eWxpemVOb0NvbG9yXG4gIH07XG4gIC8vIGxlZ2FjeS4uLlxuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+PSAzKSBjdHguZGVwdGggPSBhcmd1bWVudHNbMl07XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID49IDQpIGN0eC5jb2xvcnMgPSBhcmd1bWVudHNbM107XG4gIGlmIChpc0Jvb2xlYW4ob3B0cykpIHtcbiAgICAvLyBsZWdhY3kuLi5cbiAgICBjdHguc2hvd0hpZGRlbiA9IG9wdHM7XG4gIH0gZWxzZSBpZiAob3B0cykge1xuICAgIC8vIGdvdCBhbiBcIm9wdGlvbnNcIiBvYmplY3RcbiAgICBleHBvcnRzLl9leHRlbmQoY3R4LCBvcHRzKTtcbiAgfVxuICAvLyBzZXQgZGVmYXVsdCBvcHRpb25zXG4gIGlmIChpc1VuZGVmaW5lZChjdHguc2hvd0hpZGRlbikpIGN0eC5zaG93SGlkZGVuID0gZmFsc2U7XG4gIGlmIChpc1VuZGVmaW5lZChjdHguZGVwdGgpKSBjdHguZGVwdGggPSAyO1xuICBpZiAoaXNVbmRlZmluZWQoY3R4LmNvbG9ycykpIGN0eC5jb2xvcnMgPSBmYWxzZTtcbiAgaWYgKGlzVW5kZWZpbmVkKGN0eC5jdXN0b21JbnNwZWN0KSkgY3R4LmN1c3RvbUluc3BlY3QgPSB0cnVlO1xuICBpZiAoY3R4LmNvbG9ycykgY3R4LnN0eWxpemUgPSBzdHlsaXplV2l0aENvbG9yO1xuICByZXR1cm4gZm9ybWF0VmFsdWUoY3R4LCBvYmosIGN0eC5kZXB0aCk7XG59XG5leHBvcnRzLmluc3BlY3QgPSBpbnNwZWN0O1xuXG5cbi8vIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQU5TSV9lc2NhcGVfY29kZSNncmFwaGljc1xuaW5zcGVjdC5jb2xvcnMgPSB7XG4gICdib2xkJyA6IFsxLCAyMl0sXG4gICdpdGFsaWMnIDogWzMsIDIzXSxcbiAgJ3VuZGVybGluZScgOiBbNCwgMjRdLFxuICAnaW52ZXJzZScgOiBbNywgMjddLFxuICAnd2hpdGUnIDogWzM3LCAzOV0sXG4gICdncmV5JyA6IFs5MCwgMzldLFxuICAnYmxhY2snIDogWzMwLCAzOV0sXG4gICdibHVlJyA6IFszNCwgMzldLFxuICAnY3lhbicgOiBbMzYsIDM5XSxcbiAgJ2dyZWVuJyA6IFszMiwgMzldLFxuICAnbWFnZW50YScgOiBbMzUsIDM5XSxcbiAgJ3JlZCcgOiBbMzEsIDM5XSxcbiAgJ3llbGxvdycgOiBbMzMsIDM5XVxufTtcblxuLy8gRG9uJ3QgdXNlICdibHVlJyBub3QgdmlzaWJsZSBvbiBjbWQuZXhlXG5pbnNwZWN0LnN0eWxlcyA9IHtcbiAgJ3NwZWNpYWwnOiAnY3lhbicsXG4gICdudW1iZXInOiAneWVsbG93JyxcbiAgJ2Jvb2xlYW4nOiAneWVsbG93JyxcbiAgJ3VuZGVmaW5lZCc6ICdncmV5JyxcbiAgJ251bGwnOiAnYm9sZCcsXG4gICdzdHJpbmcnOiAnZ3JlZW4nLFxuICAnZGF0ZSc6ICdtYWdlbnRhJyxcbiAgLy8gXCJuYW1lXCI6IGludGVudGlvbmFsbHkgbm90IHN0eWxpbmdcbiAgJ3JlZ2V4cCc6ICdyZWQnXG59O1xuXG5cbmZ1bmN0aW9uIHN0eWxpemVXaXRoQ29sb3Ioc3RyLCBzdHlsZVR5cGUpIHtcbiAgdmFyIHN0eWxlID0gaW5zcGVjdC5zdHlsZXNbc3R5bGVUeXBlXTtcblxuICBpZiAoc3R5bGUpIHtcbiAgICByZXR1cm4gJ1xcdTAwMWJbJyArIGluc3BlY3QuY29sb3JzW3N0eWxlXVswXSArICdtJyArIHN0ciArXG4gICAgICAgICAgICdcXHUwMDFiWycgKyBpbnNwZWN0LmNvbG9yc1tzdHlsZV1bMV0gKyAnbSc7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIHN0eWxpemVOb0NvbG9yKHN0ciwgc3R5bGVUeXBlKSB7XG4gIHJldHVybiBzdHI7XG59XG5cblxuZnVuY3Rpb24gYXJyYXlUb0hhc2goYXJyYXkpIHtcbiAgdmFyIGhhc2ggPSB7fTtcblxuICBhcnJheS5mb3JFYWNoKGZ1bmN0aW9uKHZhbCwgaWR4KSB7XG4gICAgaGFzaFt2YWxdID0gdHJ1ZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGhhc2g7XG59XG5cblxuZnVuY3Rpb24gZm9ybWF0VmFsdWUoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzKSB7XG4gIC8vIFByb3ZpZGUgYSBob29rIGZvciB1c2VyLXNwZWNpZmllZCBpbnNwZWN0IGZ1bmN0aW9ucy5cbiAgLy8gQ2hlY2sgdGhhdCB2YWx1ZSBpcyBhbiBvYmplY3Qgd2l0aCBhbiBpbnNwZWN0IGZ1bmN0aW9uIG9uIGl0XG4gIGlmIChjdHguY3VzdG9tSW5zcGVjdCAmJlxuICAgICAgdmFsdWUgJiZcbiAgICAgIGlzRnVuY3Rpb24odmFsdWUuaW5zcGVjdCkgJiZcbiAgICAgIC8vIEZpbHRlciBvdXQgdGhlIHV0aWwgbW9kdWxlLCBpdCdzIGluc3BlY3QgZnVuY3Rpb24gaXMgc3BlY2lhbFxuICAgICAgdmFsdWUuaW5zcGVjdCAhPT0gZXhwb3J0cy5pbnNwZWN0ICYmXG4gICAgICAvLyBBbHNvIGZpbHRlciBvdXQgYW55IHByb3RvdHlwZSBvYmplY3RzIHVzaW5nIHRoZSBjaXJjdWxhciBjaGVjay5cbiAgICAgICEodmFsdWUuY29uc3RydWN0b3IgJiYgdmFsdWUuY29uc3RydWN0b3IucHJvdG90eXBlID09PSB2YWx1ZSkpIHtcbiAgICB2YXIgcmV0ID0gdmFsdWUuaW5zcGVjdChyZWN1cnNlVGltZXMsIGN0eCk7XG4gICAgaWYgKCFpc1N0cmluZyhyZXQpKSB7XG4gICAgICByZXQgPSBmb3JtYXRWYWx1ZShjdHgsIHJldCwgcmVjdXJzZVRpbWVzKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIC8vIFByaW1pdGl2ZSB0eXBlcyBjYW5ub3QgaGF2ZSBwcm9wZXJ0aWVzXG4gIHZhciBwcmltaXRpdmUgPSBmb3JtYXRQcmltaXRpdmUoY3R4LCB2YWx1ZSk7XG4gIGlmIChwcmltaXRpdmUpIHtcbiAgICByZXR1cm4gcHJpbWl0aXZlO1xuICB9XG5cbiAgLy8gTG9vayB1cCB0aGUga2V5cyBvZiB0aGUgb2JqZWN0LlxuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHZhbHVlKTtcbiAgdmFyIHZpc2libGVLZXlzID0gYXJyYXlUb0hhc2goa2V5cyk7XG5cbiAgaWYgKGN0eC5zaG93SGlkZGVuKSB7XG4gICAga2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHZhbHVlKTtcbiAgfVxuXG4gIC8vIElFIGRvZXNuJ3QgbWFrZSBlcnJvciBmaWVsZHMgbm9uLWVudW1lcmFibGVcbiAgLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2llL2R3dzUyc2J0KHY9dnMuOTQpLmFzcHhcbiAgaWYgKGlzRXJyb3IodmFsdWUpXG4gICAgICAmJiAoa2V5cy5pbmRleE9mKCdtZXNzYWdlJykgPj0gMCB8fCBrZXlzLmluZGV4T2YoJ2Rlc2NyaXB0aW9uJykgPj0gMCkpIHtcbiAgICByZXR1cm4gZm9ybWF0RXJyb3IodmFsdWUpO1xuICB9XG5cbiAgLy8gU29tZSB0eXBlIG9mIG9iamVjdCB3aXRob3V0IHByb3BlcnRpZXMgY2FuIGJlIHNob3J0Y3V0dGVkLlxuICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHtcbiAgICBpZiAoaXNGdW5jdGlvbih2YWx1ZSkpIHtcbiAgICAgIHZhciBuYW1lID0gdmFsdWUubmFtZSA/ICc6ICcgKyB2YWx1ZS5uYW1lIDogJyc7XG4gICAgICByZXR1cm4gY3R4LnN0eWxpemUoJ1tGdW5jdGlvbicgKyBuYW1lICsgJ10nLCAnc3BlY2lhbCcpO1xuICAgIH1cbiAgICBpZiAoaXNSZWdFeHAodmFsdWUpKSB7XG4gICAgICByZXR1cm4gY3R4LnN0eWxpemUoUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSwgJ3JlZ2V4cCcpO1xuICAgIH1cbiAgICBpZiAoaXNEYXRlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLCAnZGF0ZScpO1xuICAgIH1cbiAgICBpZiAoaXNFcnJvcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBmb3JtYXRFcnJvcih2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGJhc2UgPSAnJywgYXJyYXkgPSBmYWxzZSwgYnJhY2VzID0gWyd7JywgJ30nXTtcblxuICAvLyBNYWtlIEFycmF5IHNheSB0aGF0IHRoZXkgYXJlIEFycmF5XG4gIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgIGFycmF5ID0gdHJ1ZTtcbiAgICBicmFjZXMgPSBbJ1snLCAnXSddO1xuICB9XG5cbiAgLy8gTWFrZSBmdW5jdGlvbnMgc2F5IHRoYXQgdGhleSBhcmUgZnVuY3Rpb25zXG4gIGlmIChpc0Z1bmN0aW9uKHZhbHVlKSkge1xuICAgIHZhciBuID0gdmFsdWUubmFtZSA/ICc6ICcgKyB2YWx1ZS5uYW1lIDogJyc7XG4gICAgYmFzZSA9ICcgW0Z1bmN0aW9uJyArIG4gKyAnXSc7XG4gIH1cblxuICAvLyBNYWtlIFJlZ0V4cHMgc2F5IHRoYXQgdGhleSBhcmUgUmVnRXhwc1xuICBpZiAoaXNSZWdFeHAodmFsdWUpKSB7XG4gICAgYmFzZSA9ICcgJyArIFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gIH1cblxuICAvLyBNYWtlIGRhdGVzIHdpdGggcHJvcGVydGllcyBmaXJzdCBzYXkgdGhlIGRhdGVcbiAgaWYgKGlzRGF0ZSh2YWx1ZSkpIHtcbiAgICBiYXNlID0gJyAnICsgRGF0ZS5wcm90b3R5cGUudG9VVENTdHJpbmcuY2FsbCh2YWx1ZSk7XG4gIH1cblxuICAvLyBNYWtlIGVycm9yIHdpdGggbWVzc2FnZSBmaXJzdCBzYXkgdGhlIGVycm9yXG4gIGlmIChpc0Vycm9yKHZhbHVlKSkge1xuICAgIGJhc2UgPSAnICcgKyBmb3JtYXRFcnJvcih2YWx1ZSk7XG4gIH1cblxuICBpZiAoa2V5cy5sZW5ndGggPT09IDAgJiYgKCFhcnJheSB8fCB2YWx1ZS5sZW5ndGggPT0gMCkpIHtcbiAgICByZXR1cm4gYnJhY2VzWzBdICsgYmFzZSArIGJyYWNlc1sxXTtcbiAgfVxuXG4gIGlmIChyZWN1cnNlVGltZXMgPCAwKSB7XG4gICAgaWYgKGlzUmVnRXhwKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSksICdyZWdleHAnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKCdbT2JqZWN0XScsICdzcGVjaWFsJyk7XG4gICAgfVxuICB9XG5cbiAgY3R4LnNlZW4ucHVzaCh2YWx1ZSk7XG5cbiAgdmFyIG91dHB1dDtcbiAgaWYgKGFycmF5KSB7XG4gICAgb3V0cHV0ID0gZm9ybWF0QXJyYXkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cywga2V5cyk7XG4gIH0gZWxzZSB7XG4gICAgb3V0cHV0ID0ga2V5cy5tYXAoZnVuY3Rpb24oa2V5KSB7XG4gICAgICByZXR1cm4gZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cywga2V5LCBhcnJheSk7XG4gICAgfSk7XG4gIH1cblxuICBjdHguc2Vlbi5wb3AoKTtcblxuICByZXR1cm4gcmVkdWNlVG9TaW5nbGVTdHJpbmcob3V0cHV0LCBiYXNlLCBicmFjZXMpO1xufVxuXG5cbmZ1bmN0aW9uIGZvcm1hdFByaW1pdGl2ZShjdHgsIHZhbHVlKSB7XG4gIGlmIChpc1VuZGVmaW5lZCh2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCd1bmRlZmluZWQnLCAndW5kZWZpbmVkJyk7XG4gIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICB2YXIgc2ltcGxlID0gJ1xcJycgKyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkucmVwbGFjZSgvXlwifFwiJC9nLCAnJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8nL2csIFwiXFxcXCdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFxcXCIvZywgJ1wiJykgKyAnXFwnJztcbiAgICByZXR1cm4gY3R4LnN0eWxpemUoc2ltcGxlLCAnc3RyaW5nJyk7XG4gIH1cbiAgaWYgKGlzTnVtYmVyKHZhbHVlKSlcbiAgICByZXR1cm4gY3R4LnN0eWxpemUoJycgKyB2YWx1ZSwgJ251bWJlcicpO1xuICBpZiAoaXNCb29sZWFuKHZhbHVlKSlcbiAgICByZXR1cm4gY3R4LnN0eWxpemUoJycgKyB2YWx1ZSwgJ2Jvb2xlYW4nKTtcbiAgLy8gRm9yIHNvbWUgcmVhc29uIHR5cGVvZiBudWxsIGlzIFwib2JqZWN0XCIsIHNvIHNwZWNpYWwgY2FzZSBoZXJlLlxuICBpZiAoaXNOdWxsKHZhbHVlKSlcbiAgICByZXR1cm4gY3R4LnN0eWxpemUoJ251bGwnLCAnbnVsbCcpO1xufVxuXG5cbmZ1bmN0aW9uIGZvcm1hdEVycm9yKHZhbHVlKSB7XG4gIHJldHVybiAnWycgKyBFcnJvci5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkgKyAnXSc7XG59XG5cblxuZnVuY3Rpb24gZm9ybWF0QXJyYXkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cywga2V5cykge1xuICB2YXIgb3V0cHV0ID0gW107XG4gIGZvciAodmFyIGkgPSAwLCBsID0gdmFsdWUubGVuZ3RoOyBpIDwgbDsgKytpKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5KHZhbHVlLCBTdHJpbmcoaSkpKSB7XG4gICAgICBvdXRwdXQucHVzaChmb3JtYXRQcm9wZXJ0eShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLFxuICAgICAgICAgIFN0cmluZyhpKSwgdHJ1ZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXRwdXQucHVzaCgnJyk7XG4gICAgfVxuICB9XG4gIGtleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgICBpZiAoIWtleS5tYXRjaCgvXlxcZCskLykpIHtcbiAgICAgIG91dHB1dC5wdXNoKGZvcm1hdFByb3BlcnR5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsXG4gICAgICAgICAga2V5LCB0cnVlKSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIG91dHB1dDtcbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRQcm9wZXJ0eShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLCBrZXksIGFycmF5KSB7XG4gIHZhciBuYW1lLCBzdHIsIGRlc2M7XG4gIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHZhbHVlLCBrZXkpIHx8IHsgdmFsdWU6IHZhbHVlW2tleV0gfTtcbiAgaWYgKGRlc2MuZ2V0KSB7XG4gICAgaWYgKGRlc2Muc2V0KSB7XG4gICAgICBzdHIgPSBjdHguc3R5bGl6ZSgnW0dldHRlci9TZXR0ZXJdJywgJ3NwZWNpYWwnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tHZXR0ZXJdJywgJ3NwZWNpYWwnKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKGRlc2Muc2V0KSB7XG4gICAgICBzdHIgPSBjdHguc3R5bGl6ZSgnW1NldHRlcl0nLCAnc3BlY2lhbCcpO1xuICAgIH1cbiAgfVxuICBpZiAoIWhhc093blByb3BlcnR5KHZpc2libGVLZXlzLCBrZXkpKSB7XG4gICAgbmFtZSA9ICdbJyArIGtleSArICddJztcbiAgfVxuICBpZiAoIXN0cikge1xuICAgIGlmIChjdHguc2Vlbi5pbmRleE9mKGRlc2MudmFsdWUpIDwgMCkge1xuICAgICAgaWYgKGlzTnVsbChyZWN1cnNlVGltZXMpKSB7XG4gICAgICAgIHN0ciA9IGZvcm1hdFZhbHVlKGN0eCwgZGVzYy52YWx1ZSwgbnVsbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdHIgPSBmb3JtYXRWYWx1ZShjdHgsIGRlc2MudmFsdWUsIHJlY3Vyc2VUaW1lcyAtIDEpO1xuICAgICAgfVxuICAgICAgaWYgKHN0ci5pbmRleE9mKCdcXG4nKSA+IC0xKSB7XG4gICAgICAgIGlmIChhcnJheSkge1xuICAgICAgICAgIHN0ciA9IHN0ci5zcGxpdCgnXFxuJykubWFwKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgICAgICAgIHJldHVybiAnICAnICsgbGluZTtcbiAgICAgICAgICB9KS5qb2luKCdcXG4nKS5zdWJzdHIoMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RyID0gJ1xcbicgKyBzdHIuc3BsaXQoJ1xcbicpLm1hcChmdW5jdGlvbihsaW5lKSB7XG4gICAgICAgICAgICByZXR1cm4gJyAgICcgKyBsaW5lO1xuICAgICAgICAgIH0pLmpvaW4oJ1xcbicpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0ciA9IGN0eC5zdHlsaXplKCdbQ2lyY3VsYXJdJywgJ3NwZWNpYWwnKTtcbiAgICB9XG4gIH1cbiAgaWYgKGlzVW5kZWZpbmVkKG5hbWUpKSB7XG4gICAgaWYgKGFycmF5ICYmIGtleS5tYXRjaCgvXlxcZCskLykpIHtcbiAgICAgIHJldHVybiBzdHI7XG4gICAgfVxuICAgIG5hbWUgPSBKU09OLnN0cmluZ2lmeSgnJyArIGtleSk7XG4gICAgaWYgKG5hbWUubWF0Y2goL15cIihbYS16QS1aX11bYS16QS1aXzAtOV0qKVwiJC8pKSB7XG4gICAgICBuYW1lID0gbmFtZS5zdWJzdHIoMSwgbmFtZS5sZW5ndGggLSAyKTtcbiAgICAgIG5hbWUgPSBjdHguc3R5bGl6ZShuYW1lLCAnbmFtZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICBuYW1lID0gbmFtZS5yZXBsYWNlKC8nL2csIFwiXFxcXCdcIilcbiAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcXFxcIi9nLCAnXCInKVxuICAgICAgICAgICAgICAgICAucmVwbGFjZSgvKF5cInxcIiQpL2csIFwiJ1wiKTtcbiAgICAgIG5hbWUgPSBjdHguc3R5bGl6ZShuYW1lLCAnc3RyaW5nJyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5hbWUgKyAnOiAnICsgc3RyO1xufVxuXG5cbmZ1bmN0aW9uIHJlZHVjZVRvU2luZ2xlU3RyaW5nKG91dHB1dCwgYmFzZSwgYnJhY2VzKSB7XG4gIHZhciBudW1MaW5lc0VzdCA9IDA7XG4gIHZhciBsZW5ndGggPSBvdXRwdXQucmVkdWNlKGZ1bmN0aW9uKHByZXYsIGN1cikge1xuICAgIG51bUxpbmVzRXN0Kys7XG4gICAgaWYgKGN1ci5pbmRleE9mKCdcXG4nKSA+PSAwKSBudW1MaW5lc0VzdCsrO1xuICAgIHJldHVybiBwcmV2ICsgY3VyLnJlcGxhY2UoL1xcdTAwMWJcXFtcXGRcXGQ/bS9nLCAnJykubGVuZ3RoICsgMTtcbiAgfSwgMCk7XG5cbiAgaWYgKGxlbmd0aCA+IDYwKSB7XG4gICAgcmV0dXJuIGJyYWNlc1swXSArXG4gICAgICAgICAgIChiYXNlID09PSAnJyA/ICcnIDogYmFzZSArICdcXG4gJykgK1xuICAgICAgICAgICAnICcgK1xuICAgICAgICAgICBvdXRwdXQuam9pbignLFxcbiAgJykgK1xuICAgICAgICAgICAnICcgK1xuICAgICAgICAgICBicmFjZXNbMV07XG4gIH1cblxuICByZXR1cm4gYnJhY2VzWzBdICsgYmFzZSArICcgJyArIG91dHB1dC5qb2luKCcsICcpICsgJyAnICsgYnJhY2VzWzFdO1xufVxuXG5cbi8vIE5PVEU6IFRoZXNlIHR5cGUgY2hlY2tpbmcgZnVuY3Rpb25zIGludGVudGlvbmFsbHkgZG9uJ3QgdXNlIGBpbnN0YW5jZW9mYFxuLy8gYmVjYXVzZSBpdCBpcyBmcmFnaWxlIGFuZCBjYW4gYmUgZWFzaWx5IGZha2VkIHdpdGggYE9iamVjdC5jcmVhdGUoKWAuXG5mdW5jdGlvbiBpc0FycmF5KGFyKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KGFyKTtcbn1cbmV4cG9ydHMuaXNBcnJheSA9IGlzQXJyYXk7XG5cbmZ1bmN0aW9uIGlzQm9vbGVhbihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdib29sZWFuJztcbn1cbmV4cG9ydHMuaXNCb29sZWFuID0gaXNCb29sZWFuO1xuXG5mdW5jdGlvbiBpc051bGwoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IG51bGw7XG59XG5leHBvcnRzLmlzTnVsbCA9IGlzTnVsbDtcblxuZnVuY3Rpb24gaXNOdWxsT3JVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNOdWxsT3JVbmRlZmluZWQgPSBpc051bGxPclVuZGVmaW5lZDtcblxuZnVuY3Rpb24gaXNOdW1iZXIoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnbnVtYmVyJztcbn1cbmV4cG9ydHMuaXNOdW1iZXIgPSBpc051bWJlcjtcblxuZnVuY3Rpb24gaXNTdHJpbmcoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3RyaW5nJztcbn1cbmV4cG9ydHMuaXNTdHJpbmcgPSBpc1N0cmluZztcblxuZnVuY3Rpb24gaXNTeW1ib2woYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3ltYm9sJztcbn1cbmV4cG9ydHMuaXNTeW1ib2wgPSBpc1N5bWJvbDtcblxuZnVuY3Rpb24gaXNVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IHZvaWQgMDtcbn1cbmV4cG9ydHMuaXNVbmRlZmluZWQgPSBpc1VuZGVmaW5lZDtcblxuZnVuY3Rpb24gaXNSZWdFeHAocmUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KHJlKSAmJiBvYmplY3RUb1N0cmluZyhyZSkgPT09ICdbb2JqZWN0IFJlZ0V4cF0nO1xufVxuZXhwb3J0cy5pc1JlZ0V4cCA9IGlzUmVnRXhwO1xuXG5mdW5jdGlvbiBpc09iamVjdChhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnICYmIGFyZyAhPT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNPYmplY3QgPSBpc09iamVjdDtcblxuZnVuY3Rpb24gaXNEYXRlKGQpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KGQpICYmIG9iamVjdFRvU3RyaW5nKGQpID09PSAnW29iamVjdCBEYXRlXSc7XG59XG5leHBvcnRzLmlzRGF0ZSA9IGlzRGF0ZTtcblxuZnVuY3Rpb24gaXNFcnJvcihlKSB7XG4gIHJldHVybiBpc09iamVjdChlKSAmJlxuICAgICAgKG9iamVjdFRvU3RyaW5nKGUpID09PSAnW29iamVjdCBFcnJvcl0nIHx8IGUgaW5zdGFuY2VvZiBFcnJvcik7XG59XG5leHBvcnRzLmlzRXJyb3IgPSBpc0Vycm9yO1xuXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJztcbn1cbmV4cG9ydHMuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb247XG5cbmZ1bmN0aW9uIGlzUHJpbWl0aXZlKGFyZykge1xuICByZXR1cm4gYXJnID09PSBudWxsIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnYm9vbGVhbicgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdudW1iZXInIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3N5bWJvbCcgfHwgIC8vIEVTNiBzeW1ib2xcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICd1bmRlZmluZWQnO1xufVxuZXhwb3J0cy5pc1ByaW1pdGl2ZSA9IGlzUHJpbWl0aXZlO1xuXG5leHBvcnRzLmlzQnVmZmVyID0gcmVxdWlyZSgnLi9zdXBwb3J0L2lzQnVmZmVyJyk7XG5cbmZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKG8pIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKTtcbn1cblxuXG5mdW5jdGlvbiBwYWQobikge1xuICByZXR1cm4gbiA8IDEwID8gJzAnICsgbi50b1N0cmluZygxMCkgOiBuLnRvU3RyaW5nKDEwKTtcbn1cblxuXG52YXIgbW9udGhzID0gWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsXG4gICAgICAgICAgICAgICdPY3QnLCAnTm92JywgJ0RlYyddO1xuXG4vLyAyNiBGZWIgMTY6MTk6MzRcbmZ1bmN0aW9uIHRpbWVzdGFtcCgpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSgpO1xuICB2YXIgdGltZSA9IFtwYWQoZC5nZXRIb3VycygpKSxcbiAgICAgICAgICAgICAgcGFkKGQuZ2V0TWludXRlcygpKSxcbiAgICAgICAgICAgICAgcGFkKGQuZ2V0U2Vjb25kcygpKV0uam9pbignOicpO1xuICByZXR1cm4gW2QuZ2V0RGF0ZSgpLCBtb250aHNbZC5nZXRNb250aCgpXSwgdGltZV0uam9pbignICcpO1xufVxuXG5cbi8vIGxvZyBpcyBqdXN0IGEgdGhpbiB3cmFwcGVyIHRvIGNvbnNvbGUubG9nIHRoYXQgcHJlcGVuZHMgYSB0aW1lc3RhbXBcbmV4cG9ydHMubG9nID0gZnVuY3Rpb24oKSB7XG4gIGNvbnNvbGUubG9nKCclcyAtICVzJywgdGltZXN0YW1wKCksIGV4cG9ydHMuZm9ybWF0LmFwcGx5KGV4cG9ydHMsIGFyZ3VtZW50cykpO1xufTtcblxuXG4vKipcbiAqIEluaGVyaXQgdGhlIHByb3RvdHlwZSBtZXRob2RzIGZyb20gb25lIGNvbnN0cnVjdG9yIGludG8gYW5vdGhlci5cbiAqXG4gKiBUaGUgRnVuY3Rpb24ucHJvdG90eXBlLmluaGVyaXRzIGZyb20gbGFuZy5qcyByZXdyaXR0ZW4gYXMgYSBzdGFuZGFsb25lXG4gKiBmdW5jdGlvbiAobm90IG9uIEZ1bmN0aW9uLnByb3RvdHlwZSkuIE5PVEU6IElmIHRoaXMgZmlsZSBpcyB0byBiZSBsb2FkZWRcbiAqIGR1cmluZyBib290c3RyYXBwaW5nIHRoaXMgZnVuY3Rpb24gbmVlZHMgdG8gYmUgcmV3cml0dGVuIHVzaW5nIHNvbWUgbmF0aXZlXG4gKiBmdW5jdGlvbnMgYXMgcHJvdG90eXBlIHNldHVwIHVzaW5nIG5vcm1hbCBKYXZhU2NyaXB0IGRvZXMgbm90IHdvcmsgYXNcbiAqIGV4cGVjdGVkIGR1cmluZyBib290c3RyYXBwaW5nIChzZWUgbWlycm9yLmpzIGluIHIxMTQ5MDMpLlxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGN0b3IgQ29uc3RydWN0b3IgZnVuY3Rpb24gd2hpY2ggbmVlZHMgdG8gaW5oZXJpdCB0aGVcbiAqICAgICBwcm90b3R5cGUuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBzdXBlckN0b3IgQ29uc3RydWN0b3IgZnVuY3Rpb24gdG8gaW5oZXJpdCBwcm90b3R5cGUgZnJvbS5cbiAqL1xuZXhwb3J0cy5pbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbmV4cG9ydHMuX2V4dGVuZCA9IGZ1bmN0aW9uKG9yaWdpbiwgYWRkKSB7XG4gIC8vIERvbid0IGRvIGFueXRoaW5nIGlmIGFkZCBpc24ndCBhbiBvYmplY3RcbiAgaWYgKCFhZGQgfHwgIWlzT2JqZWN0KGFkZCkpIHJldHVybiBvcmlnaW47XG5cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhhZGQpO1xuICB2YXIgaSA9IGtleXMubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgb3JpZ2luW2tleXNbaV1dID0gYWRkW2tleXNbaV1dO1xuICB9XG4gIHJldHVybiBvcmlnaW47XG59O1xuXG5mdW5jdGlvbiBoYXNPd25Qcm9wZXJ0eShvYmosIHByb3ApIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApO1xufVxuXG52YXIga0N1c3RvbVByb21pc2lmaWVkU3ltYm9sID0gdHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgPyBTeW1ib2woJ3V0aWwucHJvbWlzaWZ5LmN1c3RvbScpIDogdW5kZWZpbmVkO1xuXG5leHBvcnRzLnByb21pc2lmeSA9IGZ1bmN0aW9uIHByb21pc2lmeShvcmlnaW5hbCkge1xuICBpZiAodHlwZW9mIG9yaWdpbmFsICE9PSAnZnVuY3Rpb24nKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcIm9yaWdpbmFsXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEZ1bmN0aW9uJyk7XG5cbiAgaWYgKGtDdXN0b21Qcm9taXNpZmllZFN5bWJvbCAmJiBvcmlnaW5hbFtrQ3VzdG9tUHJvbWlzaWZpZWRTeW1ib2xdKSB7XG4gICAgdmFyIGZuID0gb3JpZ2luYWxba0N1c3RvbVByb21pc2lmaWVkU3ltYm9sXTtcbiAgICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJ1dGlsLnByb21pc2lmeS5jdXN0b21cIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24nKTtcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZuLCBrQ3VzdG9tUHJvbWlzaWZpZWRTeW1ib2wsIHtcbiAgICAgIHZhbHVlOiBmbiwgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiBmYWxzZSwgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIGZuO1xuICB9XG5cbiAgZnVuY3Rpb24gZm4oKSB7XG4gICAgdmFyIHByb21pc2VSZXNvbHZlLCBwcm9taXNlUmVqZWN0O1xuICAgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgcHJvbWlzZVJlc29sdmUgPSByZXNvbHZlO1xuICAgICAgcHJvbWlzZVJlamVjdCA9IHJlamVjdDtcbiAgICB9KTtcblxuICAgIHZhciBhcmdzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFyZ3MucHVzaChhcmd1bWVudHNbaV0pO1xuICAgIH1cbiAgICBhcmdzLnB1c2goZnVuY3Rpb24gKGVyciwgdmFsdWUpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcHJvbWlzZVJlamVjdChlcnIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvbWlzZVJlc29sdmUodmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcHJvbWlzZVJlamVjdChlcnIpO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9taXNlO1xuICB9XG5cbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGZuLCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob3JpZ2luYWwpKTtcblxuICBpZiAoa0N1c3RvbVByb21pc2lmaWVkU3ltYm9sKSBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm4sIGtDdXN0b21Qcm9taXNpZmllZFN5bWJvbCwge1xuICAgIHZhbHVlOiBmbiwgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiBmYWxzZSwgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pO1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoXG4gICAgZm4sXG4gICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhvcmlnaW5hbClcbiAgKTtcbn1cblxuZXhwb3J0cy5wcm9taXNpZnkuY3VzdG9tID0ga0N1c3RvbVByb21pc2lmaWVkU3ltYm9sXG5cbmZ1bmN0aW9uIGNhbGxiYWNraWZ5T25SZWplY3RlZChyZWFzb24sIGNiKSB7XG4gIC8vIGAhcmVhc29uYCBndWFyZCBpbnNwaXJlZCBieSBibHVlYmlyZCAoUmVmOiBodHRwczovL2dvby5nbC90NUlTNk0pLlxuICAvLyBCZWNhdXNlIGBudWxsYCBpcyBhIHNwZWNpYWwgZXJyb3IgdmFsdWUgaW4gY2FsbGJhY2tzIHdoaWNoIG1lYW5zIFwibm8gZXJyb3JcbiAgLy8gb2NjdXJyZWRcIiwgd2UgZXJyb3Itd3JhcCBzbyB0aGUgY2FsbGJhY2sgY29uc3VtZXIgY2FuIGRpc3Rpbmd1aXNoIGJldHdlZW5cbiAgLy8gXCJ0aGUgcHJvbWlzZSByZWplY3RlZCB3aXRoIG51bGxcIiBvciBcInRoZSBwcm9taXNlIGZ1bGZpbGxlZCB3aXRoIHVuZGVmaW5lZFwiLlxuICBpZiAoIXJlYXNvbikge1xuICAgIHZhciBuZXdSZWFzb24gPSBuZXcgRXJyb3IoJ1Byb21pc2Ugd2FzIHJlamVjdGVkIHdpdGggYSBmYWxzeSB2YWx1ZScpO1xuICAgIG5ld1JlYXNvbi5yZWFzb24gPSByZWFzb247XG4gICAgcmVhc29uID0gbmV3UmVhc29uO1xuICB9XG4gIHJldHVybiBjYihyZWFzb24pO1xufVxuXG5mdW5jdGlvbiBjYWxsYmFja2lmeShvcmlnaW5hbCkge1xuICBpZiAodHlwZW9mIG9yaWdpbmFsICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwib3JpZ2luYWxcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24nKTtcbiAgfVxuXG4gIC8vIFdlIERPIE5PVCByZXR1cm4gdGhlIHByb21pc2UgYXMgaXQgZ2l2ZXMgdGhlIHVzZXIgYSBmYWxzZSBzZW5zZSB0aGF0XG4gIC8vIHRoZSBwcm9taXNlIGlzIGFjdHVhbGx5IHNvbWVob3cgcmVsYXRlZCB0byB0aGUgY2FsbGJhY2sncyBleGVjdXRpb25cbiAgLy8gYW5kIHRoYXQgdGhlIGNhbGxiYWNrIHRocm93aW5nIHdpbGwgcmVqZWN0IHRoZSBwcm9taXNlLlxuICBmdW5jdGlvbiBjYWxsYmFja2lmaWVkKCkge1xuICAgIHZhciBhcmdzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFyZ3MucHVzaChhcmd1bWVudHNbaV0pO1xuICAgIH1cblxuICAgIHZhciBtYXliZUNiID0gYXJncy5wb3AoKTtcbiAgICBpZiAodHlwZW9mIG1heWJlQ2IgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBsYXN0IGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbicpO1xuICAgIH1cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGNiID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gbWF5YmVDYi5hcHBseShzZWxmLCBhcmd1bWVudHMpO1xuICAgIH07XG4gICAgLy8gSW4gdHJ1ZSBub2RlIHN0eWxlIHdlIHByb2Nlc3MgdGhlIGNhbGxiYWNrIG9uIGBuZXh0VGlja2Agd2l0aCBhbGwgdGhlXG4gICAgLy8gaW1wbGljYXRpb25zIChzdGFjaywgYHVuY2F1Z2h0RXhjZXB0aW9uYCwgYGFzeW5jX2hvb2tzYClcbiAgICBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKVxuICAgICAgLnRoZW4oZnVuY3Rpb24ocmV0KSB7IHByb2Nlc3MubmV4dFRpY2soY2IsIG51bGwsIHJldCkgfSxcbiAgICAgICAgICAgIGZ1bmN0aW9uKHJlaikgeyBwcm9jZXNzLm5leHRUaWNrKGNhbGxiYWNraWZ5T25SZWplY3RlZCwgcmVqLCBjYikgfSk7XG4gIH1cblxuICBPYmplY3Quc2V0UHJvdG90eXBlT2YoY2FsbGJhY2tpZmllZCwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG9yaWdpbmFsKSk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGNhbGxiYWNraWZpZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcnMob3JpZ2luYWwpKTtcbiAgcmV0dXJuIGNhbGxiYWNraWZpZWQ7XG59XG5leHBvcnRzLmNhbGxiYWNraWZ5ID0gY2FsbGJhY2tpZnk7XG4iXSwibWFwcGluZ3MiOiI7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFWQTtBQVlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFHQTs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRkE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQWJBO0FBQ0E7QUFnQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFUQTtBQUNBO0FBWUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBREE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQURBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFLQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBR0E7Ozs7Ozs7Ozs7Ozs7OztBQWFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQURBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQURBO0FBR0E7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBREE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQUE7QSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/util/util.js\n");
|
165 |
+
|
166 |
+
/***/ }),
|
167 |
+
|
168 |
+
/***/ "./node_modules/uuid/deprecate.js":
|
169 |
+
/*!****************************************!*\
|
170 |
+
!*** ./node_modules/uuid/deprecate.js ***!
|
171 |
+
\****************************************/
|
172 |
+
/*! no static exports found */
|
173 |
+
/***/ (function(module, exports, __webpack_require__) {
|
174 |
+
|
175 |
+
eval("// Extracted from: https://github.com/TooTallNate/util-deprecate\nvar deprecate;\n\ntry {\n var util = __webpack_require__(/*! util */ \"./node_modules/util/util.js\");\n\n deprecate = util.deprecate;\n} catch (err) {\n deprecate = function deprecate(fn, msg) {\n var warned = false;\n\n function deprecated() {\n if (!warned) {\n console.warn(msg);\n warned = true;\n }\n\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n };\n}\n\nmodule.exports = deprecate;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdXVpZC9kZXByZWNhdGUuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdXVpZC9kZXByZWNhdGUuanM/MTI2NCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBFeHRyYWN0ZWQgZnJvbTogaHR0cHM6Ly9naXRodWIuY29tL1Rvb1RhbGxOYXRlL3V0aWwtZGVwcmVjYXRlXG5sZXQgZGVwcmVjYXRlO1xudHJ5IHtcbiAgY29uc3QgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcbiAgZGVwcmVjYXRlID0gdXRpbC5kZXByZWNhdGU7XG59IGNhdGNoIChlcnIpIHtcbiAgZGVwcmVjYXRlID0gZnVuY3Rpb24gZGVwcmVjYXRlKGZuLCBtc2cpIHtcbiAgICB2YXIgd2FybmVkID0gZmFsc2U7XG4gICAgZnVuY3Rpb24gZGVwcmVjYXRlZCgpIHtcbiAgICAgIGlmICghd2FybmVkKSB7XG4gICAgICAgIGNvbnNvbGUud2Fybihtc2cpO1xuICAgICAgICB3YXJuZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlcHJlY2F0ZWQ7XG4gIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IGRlcHJlY2F0ZTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/uuid/deprecate.js\n");
|
176 |
+
|
177 |
+
/***/ }),
|
178 |
+
|
179 |
+
/***/ "./node_modules/uuid/dist/bytesToUuid.js":
|
180 |
+
/*!***********************************************!*\
|
181 |
+
!*** ./node_modules/uuid/dist/bytesToUuid.js ***!
|
182 |
+
\***********************************************/
|
183 |
+
/*! no static exports found */
|
184 |
+
/***/ (function(module, exports, __webpack_require__) {
|
185 |
+
|
186 |
+
"use strict";
|
187 |
+
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex; // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n\n return [bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]]].join('');\n}\n\nvar _default = bytesToUuid;\nexports[\"default\"] = _default;\nmodule.exports = exports[\"default\"];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L2J5dGVzVG9VdWlkLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9ieXRlc1RvVXVpZC5qcz8wODM4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG4vKipcbiAqIENvbnZlcnQgYXJyYXkgb2YgMTYgYnl0ZSB2YWx1ZXMgdG8gVVVJRCBzdHJpbmcgZm9ybWF0IG9mIHRoZSBmb3JtOlxuICogWFhYWFhYWFgtWFhYWC1YWFhYLVhYWFgtWFhYWFhYWFhYWFhYXG4gKi9cbnZhciBieXRlVG9IZXggPSBbXTtcblxuZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7ICsraSkge1xuICBieXRlVG9IZXhbaV0gPSAoaSArIDB4MTAwKS50b1N0cmluZygxNikuc3Vic3RyKDEpO1xufVxuXG5mdW5jdGlvbiBieXRlc1RvVXVpZChidWYsIG9mZnNldCkge1xuICB2YXIgaSA9IG9mZnNldCB8fCAwO1xuICB2YXIgYnRoID0gYnl0ZVRvSGV4OyAvLyBqb2luIHVzZWQgdG8gZml4IG1lbW9yeSBpc3N1ZSBjYXVzZWQgYnkgY29uY2F0ZW5hdGlvbjogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzE3NSNjNFxuXG4gIHJldHVybiBbYnRoW2J1ZltpKytdXSwgYnRoW2J1ZltpKytdXSwgYnRoW2J1ZltpKytdXSwgYnRoW2J1ZltpKytdXSwgJy0nLCBidGhbYnVmW2krK11dLCBidGhbYnVmW2krK11dLCAnLScsIGJ0aFtidWZbaSsrXV0sIGJ0aFtidWZbaSsrXV0sICctJywgYnRoW2J1ZltpKytdXSwgYnRoW2J1ZltpKytdXSwgJy0nLCBidGhbYnVmW2krK11dLCBidGhbYnVmW2krK11dLCBidGhbYnVmW2krK11dLCBidGhbYnVmW2krK11dLCBidGhbYnVmW2krK11dLCBidGhbYnVmW2krK11dXS5qb2luKCcnKTtcbn1cblxudmFyIF9kZWZhdWx0ID0gYnl0ZXNUb1V1aWQ7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0OyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBRUE7Ozs7O0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/uuid/dist/bytesToUuid.js\n");
|
188 |
+
|
189 |
+
/***/ }),
|
190 |
+
|
191 |
+
/***/ "./node_modules/uuid/dist/rng-browser.js":
|
192 |
+
/*!***********************************************!*\
|
193 |
+
!*** ./node_modules/uuid/dist/rng-browser.js ***!
|
194 |
+
\***********************************************/
|
195 |
+
/*! no static exports found */
|
196 |
+
/***/ (function(module, exports, __webpack_require__) {
|
197 |
+
|
198 |
+
"use strict";
|
199 |
+
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = rng; // Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n// find the complete implementation of crypto (msCrypto) on IE11.\n\nvar getRandomValues = typeof crypto != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto != 'undefined' && typeof msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto);\nvar rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\nfunction rng() {\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n\n return getRandomValues(rnds8);\n}\n\nmodule.exports = exports[\"default\"];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L3JuZy1icm93c2VyLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9ybmctYnJvd3Nlci5qcz85YzJhIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gcm5nO1xuLy8gVW5pcXVlIElEIGNyZWF0aW9uIHJlcXVpcmVzIGEgaGlnaCBxdWFsaXR5IHJhbmRvbSAjIGdlbmVyYXRvci4gSW4gdGhlIGJyb3dzZXIgd2UgdGhlcmVmb3JlXG4vLyByZXF1aXJlIHRoZSBjcnlwdG8gQVBJIGFuZCBkbyBub3Qgc3VwcG9ydCBidWlsdC1pbiBmYWxsYmFjayB0byBsb3dlciBxdWFsaXR5IHJhbmRvbSBudW1iZXJcbi8vIGdlbmVyYXRvcnMgKGxpa2UgTWF0aC5yYW5kb20oKSkuXG4vLyBnZXRSYW5kb21WYWx1ZXMgbmVlZHMgdG8gYmUgaW52b2tlZCBpbiBhIGNvbnRleHQgd2hlcmUgXCJ0aGlzXCIgaXMgYSBDcnlwdG8gaW1wbGVtZW50YXRpb24uIEFsc28sXG4vLyBmaW5kIHRoZSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBjcnlwdG8gKG1zQ3J5cHRvKSBvbiBJRTExLlxudmFyIGdldFJhbmRvbVZhbHVlcyA9IHR5cGVvZiBjcnlwdG8gIT0gJ3VuZGVmaW5lZCcgJiYgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyAmJiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzLmJpbmQoY3J5cHRvKSB8fCB0eXBlb2YgbXNDcnlwdG8gIT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIG1zQ3J5cHRvLmdldFJhbmRvbVZhbHVlcyA9PSAnZnVuY3Rpb24nICYmIG1zQ3J5cHRvLmdldFJhbmRvbVZhbHVlcy5iaW5kKG1zQ3J5cHRvKTtcbnZhciBybmRzOCA9IG5ldyBVaW50OEFycmF5KDE2KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuXG5mdW5jdGlvbiBybmcoKSB7XG4gIGlmICghZ2V0UmFuZG9tVmFsdWVzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKCkgbm90IHN1cHBvcnRlZC4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS91dWlkanMvdXVpZCNnZXRyYW5kb212YWx1ZXMtbm90LXN1cHBvcnRlZCcpO1xuICB9XG5cbiAgcmV0dXJuIGdldFJhbmRvbVZhbHVlcyhybmRzOCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0OyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/uuid/dist/rng-browser.js\n");
|
200 |
+
|
201 |
+
/***/ }),
|
202 |
+
|
203 |
+
/***/ "./node_modules/uuid/dist/v4.js":
|
204 |
+
/*!**************************************!*\
|
205 |
+
!*** ./node_modules/uuid/dist/v4.js ***!
|
206 |
+
\**************************************/
|
207 |
+
/*! no static exports found */
|
208 |
+
/***/ (function(module, exports, __webpack_require__) {
|
209 |
+
|
210 |
+
"use strict";
|
211 |
+
eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _rng = _interopRequireDefault(__webpack_require__(/*! ./rng.js */ \"./node_modules/uuid/dist/rng-browser.js\"));\n\nvar _bytesToUuid = _interopRequireDefault(__webpack_require__(/*! ./bytesToUuid.js */ \"./node_modules/uuid/dist/bytesToUuid.js\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof options == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n\n options = options || {};\n\n var rnds = options.random || (options.rng || _rng[\"default\"])(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || (0, _bytesToUuid[\"default\"])(rnds);\n}\n\nvar _default = v4;\nexports[\"default\"] = _default;\nmodule.exports = exports[\"default\"];//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdXVpZC9kaXN0L3Y0LmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3V1aWQvZGlzdC92NC5qcz9lYjdhIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX3JuZyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vcm5nLmpzXCIpKTtcblxudmFyIF9ieXRlc1RvVXVpZCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vYnl0ZXNUb1V1aWQuanNcIikpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiB2NChvcHRpb25zLCBidWYsIG9mZnNldCkge1xuICB2YXIgaSA9IGJ1ZiAmJiBvZmZzZXQgfHwgMDtcblxuICBpZiAodHlwZW9mIG9wdGlvbnMgPT0gJ3N0cmluZycpIHtcbiAgICBidWYgPSBvcHRpb25zID09PSAnYmluYXJ5JyA/IG5ldyBBcnJheSgxNikgOiBudWxsO1xuICAgIG9wdGlvbnMgPSBudWxsO1xuICB9XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgdmFyIHJuZHMgPSBvcHRpb25zLnJhbmRvbSB8fCAob3B0aW9ucy5ybmcgfHwgX3JuZy5kZWZhdWx0KSgpOyAvLyBQZXIgNC40LCBzZXQgYml0cyBmb3IgdmVyc2lvbiBhbmQgYGNsb2NrX3NlcV9oaV9hbmRfcmVzZXJ2ZWRgXG5cblxuICBybmRzWzZdID0gcm5kc1s2XSAmIDB4MGYgfCAweDQwO1xuICBybmRzWzhdID0gcm5kc1s4XSAmIDB4M2YgfCAweDgwOyAvLyBDb3B5IGJ5dGVzIHRvIGJ1ZmZlciwgaWYgcHJvdmlkZWRcblxuICBpZiAoYnVmKSB7XG4gICAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IDE2OyArK2lpKSB7XG4gICAgICBidWZbaSArIGlpXSA9IHJuZHNbaWldO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBidWYgfHwgKDAsIF9ieXRlc1RvVXVpZC5kZWZhdWx0KShybmRzKTtcbn1cblxudmFyIF9kZWZhdWx0ID0gdjQ7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0OyJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFEQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/uuid/dist/v4.js\n");
|
212 |
+
|
213 |
+
/***/ }),
|
214 |
+
|
215 |
+
/***/ "./node_modules/uuid/v4.js":
|
216 |
+
/*!*********************************!*\
|
217 |
+
!*** ./node_modules/uuid/v4.js ***!
|
218 |
+
\*********************************/
|
219 |
+
/*! no static exports found */
|
220 |
+
/***/ (function(module, exports, __webpack_require__) {
|
221 |
+
|
222 |
+
eval("var deprecate = __webpack_require__(/*! ./deprecate.js */ \"./node_modules/uuid/deprecate.js\");\n\nvar v4 = __webpack_require__(/*! ./dist/v4.js */ \"./node_modules/uuid/dist/v4.js\");\n\nmodule.exports = deprecate(v4, \"Deep requiring like `const uuidv4 = require('uuid/v4');` is deprecated as of uuid@7.x. Please require the top-level module when using the Node.js CommonJS module or use ECMAScript Modules when bundling for the browser. See https://github.com/uuidjs/uuid#deep-requires-now-deprecated for more information.\");//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvdXVpZC92NC5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy91dWlkL3Y0LmpzP2M2NGUiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZGVwcmVjYXRlID0gcmVxdWlyZSgnLi9kZXByZWNhdGUuanMnKTtcblxuY29uc3QgdjQgPSByZXF1aXJlKCcuL2Rpc3QvdjQuanMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZXByZWNhdGUoXG4gIHY0LFxuICBcIkRlZXAgcmVxdWlyaW5nIGxpa2UgYGNvbnN0IHV1aWR2NCA9IHJlcXVpcmUoJ3V1aWQvdjQnKTtgIGlzIGRlcHJlY2F0ZWQgYXMgb2YgdXVpZEA3LnguIFBsZWFzZSByZXF1aXJlIHRoZSB0b3AtbGV2ZWwgbW9kdWxlIHdoZW4gdXNpbmcgdGhlIE5vZGUuanMgQ29tbW9uSlMgbW9kdWxlIG9yIHVzZSBFQ01BU2NyaXB0IE1vZHVsZXMgd2hlbiBidW5kbGluZyBmb3IgdGhlIGJyb3dzZXIuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdXVpZGpzL3V1aWQjZGVlcC1yZXF1aXJlcy1ub3ctZGVwcmVjYXRlZCBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cIixcbik7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/uuid/v4.js\n");
|
223 |
+
|
224 |
+
/***/ }),
|
225 |
+
|
226 |
+
/***/ "./src/mathml-block.css":
|
227 |
+
/*!******************************!*\
|
228 |
+
!*** ./src/mathml-block.css ***!
|
229 |
+
\******************************/
|
230 |
+
/*! no static exports found */
|
231 |
+
/***/ (function(module, exports, __webpack_require__) {
|
232 |
+
|
233 |
+
eval("var api = __webpack_require__(/*! ../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = __webpack_require__(/*! !../node_modules/css-loader/dist/cjs.js!./mathml-block.css */ \"./node_modules/css-loader/dist/cjs.js!./src/mathml-block.css\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.i, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\nvar exported = content.locals ? content.locals : {};\n\n\n\nmodule.exports = exported;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWF0aG1sLWJsb2NrLmNzcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tYXRobWwtYmxvY2suY3NzP2I1NTkiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGFwaSA9IHJlcXVpcmUoXCIhLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCIpO1xuICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSByZXF1aXJlKFwiISEuLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL21hdGhtbC1ibG9jay5jc3NcIik7XG5cbiAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50Ll9fZXNNb2R1bGUgPyBjb250ZW50LmRlZmF1bHQgOiBjb250ZW50O1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgIGNvbnRlbnQgPSBbW21vZHVsZS5pZCwgY29udGVudCwgJyddXTtcbiAgICAgICAgICAgIH1cblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5pbnNlcnQgPSBcImhlYWRcIjtcbm9wdGlvbnMuc2luZ2xldG9uID0gZmFsc2U7XG5cbnZhciB1cGRhdGUgPSBhcGkoY29udGVudCwgb3B0aW9ucyk7XG5cbnZhciBleHBvcnRlZCA9IGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB7fTtcblxuXG5cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0ZWQ7Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/mathml-block.css\n");
|
234 |
+
|
235 |
+
/***/ }),
|
236 |
+
|
237 |
+
/***/ "./src/mathml-block.js":
|
238 |
+
/*!*****************************!*\
|
239 |
+
!*** ./src/mathml-block.js ***!
|
240 |
+
\*****************************/
|
241 |
+
/*! no exports provided */
|
242 |
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
243 |
+
|
244 |
+
"use strict";
|
245 |
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var uuid_v4__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uuid/v4 */ \"./node_modules/uuid/v4.js\");\n/* harmony import */ var uuid_v4__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(uuid_v4__WEBPACK_IMPORTED_MODULE_0__);\n\nvar __ = wp.i18n.__;\nvar registerBlockType = wp.blocks.registerBlockType;\n\nvar renderMathML = function renderMathML(id) {\n setTimeout(function () {\n MathJax.Hub.Queue(['Typeset', MathJax.Hub, document.getElementById(id)]);\n }, 100);\n};\n\nregisterBlockType('mathml/mathmlblock', {\n title: 'MathML',\n icon: 'list-view',\n category: 'common',\n attributes: {\n formula: {\n source: 'html',\n selector: 'div',\n type: 'string'\n }\n },\n edit: function edit(props) {\n var isSelected = props.isSelected,\n attributes = props.attributes,\n setAttributes = props.setAttributes,\n className = props.className;\n var formula = attributes.formula;\n var id = uuid_v4__WEBPACK_IMPORTED_MODULE_0___default()();\n renderMathML(id);\n\n if (isSelected) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className\n }, /*#__PURE__*/React.createElement(\"label\", {\n htmlFor: id\n }, __('MathML formula:', 'mathml-block')), /*#__PURE__*/React.createElement(\"textarea\", {\n id: id,\n className: \"mathml-formula\",\n tagname: \"div\",\n onChange: function onChange(event) {\n setAttributes({\n formula: event.target.value\n });\n },\n value: formula,\n style: {\n width: '100%'\n }\n }));\n } else {\n return /*#__PURE__*/React.createElement(\"div\", {\n id: id,\n className: \"mathml-block\"\n }, formula);\n }\n },\n save: function save(_ref) {\n var attributes = _ref.attributes,\n className = _ref.className;\n var formula = attributes.formula;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: className\n }, formula);\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWF0aG1sLWJsb2NrLmpzLmpzIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vc3JjL21hdGhtbC1ibG9jay5qcz8xZmJhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB1dWlkIGZyb20gJ3V1aWQvdjQnO1xuXG5jb25zdCB7IF9fIH0gICAgICAgICAgICAgICAgPSB3cC5pMThuO1xuY29uc3QgeyByZWdpc3RlckJsb2NrVHlwZSB9ID0gd3AuYmxvY2tzO1xuXG5jb25zdCByZW5kZXJNYXRoTUwgPSAoIGlkICkgPT4ge1xuXHRzZXRUaW1lb3V0KCAoKSA9PiB7XG5cdFx0TWF0aEpheC5IdWIuUXVldWUoIFsgJ1R5cGVzZXQnLCBNYXRoSmF4Lkh1YiwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIGlkICkgXSApO1xuXHR9LCAxMDAgKTtcbn07XG5cbnJlZ2lzdGVyQmxvY2tUeXBlKCAnbWF0aG1sL21hdGhtbGJsb2NrJywge1xuXHR0aXRsZTogJ01hdGhNTCcsXG5cdGljb246ICdsaXN0LXZpZXcnLFxuXHRjYXRlZ29yeTogJ2NvbW1vbicsXG5cdGF0dHJpYnV0ZXM6IHtcblx0XHRmb3JtdWxhOiB7XG5cdFx0XHRzb3VyY2U6ICdodG1sJyxcblx0XHRcdHNlbGVjdG9yOiAnZGl2Jyxcblx0XHRcdHR5cGU6ICdzdHJpbmcnLFxuXHRcdH0sXG5cdH0sXG5cblx0ZWRpdDogKCBwcm9wcyApID0+IHtcblxuXHRcdGNvbnN0IHsgaXNTZWxlY3RlZCwgYXR0cmlidXRlcywgc2V0QXR0cmlidXRlcywgY2xhc3NOYW1lIH0gPSBwcm9wcztcblx0XHRjb25zdCB7IGZvcm11bGEgfSA9IGF0dHJpYnV0ZXM7XG5cdFx0Y29uc3QgaWQgPSB1dWlkKCk7XG5cblx0XHRyZW5kZXJNYXRoTUwoIGlkICk7XG5cblx0XHRpZiAoIGlzU2VsZWN0ZWQgKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT17IGNsYXNzTmFtZSB9PlxuXHRcdFx0XHRcdDxsYWJlbCBodG1sRm9yPXsgaWQgfT57IF9fKCAnTWF0aE1MIGZvcm11bGE6JywgJ21hdGhtbC1ibG9jaycgKSB9PC9sYWJlbD5cblx0XHRcdFx0XHQ8dGV4dGFyZWFcblx0XHRcdFx0XHRcdGlkPXsgaWQgfVxuXHRcdFx0XHRcdFx0Y2xhc3NOYW1lPVwibWF0aG1sLWZvcm11bGFcIlxuXHRcdFx0XHRcdFx0dGFnbmFtZT1cImRpdlwiXG5cdFx0XHRcdFx0XHRvbkNoYW5nZT17ICggZXZlbnQgKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHNldEF0dHJpYnV0ZXMoIHsgZm9ybXVsYTogZXZlbnQudGFyZ2V0LnZhbHVlIH0gKTtcblx0XHRcdFx0XHRcdH0gfVxuXHRcdFx0XHRcdFx0dmFsdWU9eyBmb3JtdWxhIH1cblx0XHRcdFx0XHRcdHN0eWxlPXsgeyB3aWR0aDogJzEwMCUnIH0gfVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PGRpdlxuXHRcdFx0XHRcdGlkPXsgaWQgfVxuXHRcdFx0XHRcdGNsYXNzTmFtZT1cIm1hdGhtbC1ibG9ja1wiXG5cdFx0XHRcdD5cblx0XHRcdFx0XHR7IGZvcm11bGEgfVxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdCk7XG5cdFx0fVxuXHR9LFxuXG5cdHNhdmU6IGZ1bmN0aW9uIHNhdmUoIHsgYXR0cmlidXRlcywgY2xhc3NOYW1lIH0gKSB7XG5cdFx0Y29uc3QgeyBmb3JtdWxhIH0gPSBhdHRyaWJ1dGVzO1xuXG5cdFx0cmV0dXJuIChcblx0XHRcdDxkaXYgY2xhc3NOYW1lPXsgY2xhc3NOYW1lIH0+XG5cdFx0XHRcdHsgZm9ybXVsYSB9XG5cdFx0XHQ8L2Rpdj5cblx0XHQpO1xuXHR9LFxufSApO1xuXG5cbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQURBO0FBUUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBUkE7QUFZQTtBQUNBO0FBRUE7QUFDQTtBQUZBO0FBT0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUFBO0FBSUE7QUF4REEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/mathml-block.js\n");
|
246 |
+
|
247 |
+
/***/ }),
|
248 |
+
|
249 |
+
/***/ "./src/mathml-inline.js":
|
250 |
+
/*!******************************!*\
|
251 |
+
!*** ./src/mathml-inline.js ***!
|
252 |
+
\******************************/
|
253 |
+
/*! no exports provided */
|
254 |
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
255 |
+
|
256 |
+
"use strict";
|
257 |
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _mathml_block_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mathml-block.css */ \"./src/mathml-block.css\");\n/* harmony import */ var _mathml_block_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_mathml_block_css__WEBPACK_IMPORTED_MODULE_0__);\nvar _window$wp$element = window.wp.element,\n createElement = _window$wp$element.createElement,\n Fragment = _window$wp$element.Fragment;\nvar _window$wp$richText = window.wp.richText,\n registerFormatType = _window$wp$richText.registerFormatType,\n toggleFormat = _window$wp$richText.toggleFormat;\nvar _window$wp$blockEdito = window.wp.blockEditor,\n RichTextToolbarButton = _window$wp$blockEdito.RichTextToolbarButton,\n RichTextShortcut = _window$wp$blockEdito.RichTextShortcut;\nvar __ = window.wp.i18n.__;\n\n[{\n name: 'mathml',\n title: __('MathML', 'mathml-block'),\n character: 'm'\n}].forEach(function (_ref) {\n var name = _ref.name,\n title = _ref.title,\n character = _ref.character;\n var type = \"mathml-block/\".concat(name);\n registerFormatType(type, {\n title: title,\n tagName: name,\n className: null,\n edit: function edit(_ref2) {\n var isActive = _ref2.isActive,\n value = _ref2.value,\n onChange = _ref2.onChange;\n\n var onToggle = function onToggle() {\n onChange(toggleFormat(value, {\n type: type\n }));\n setTimeout(function () {\n MathJax.Hub.Queue(['Typeset', MathJax.Hub, document.getElementsByTagName('mathml')]);\n }, 100);\n };\n\n return createElement(Fragment, null, createElement(RichTextShortcut, {\n type: 'primary',\n character: character,\n onUse: onToggle\n }), createElement(RichTextToolbarButton, {\n title: title,\n onClick: onToggle,\n isActive: isActive,\n shortcutType: 'primary',\n shortcutCharacter: character,\n className: \"toolbar-button-with-text toolbar-button__advanced-\".concat(name)\n }));\n }\n });\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvbWF0aG1sLWlubGluZS5qcy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL3NyYy9tYXRobWwtaW5saW5lLmpzPzRmNWQiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgeyBjcmVhdGVFbGVtZW50LCBGcmFnbWVudCB9ID0gd2luZG93LndwLmVsZW1lbnQ7XG5jb25zdCB7IHJlZ2lzdGVyRm9ybWF0VHlwZSwgdG9nZ2xlRm9ybWF0IH0gPSB3aW5kb3cud3AucmljaFRleHQ7XG5jb25zdCB7IFJpY2hUZXh0VG9vbGJhckJ1dHRvbiwgUmljaFRleHRTaG9ydGN1dCB9ID0gd2luZG93LndwLmJsb2NrRWRpdG9yO1xuY29uc3QgeyBfXyB9ID0gd2luZG93LndwLmkxOG47XG5pbXBvcnQgJy4vbWF0aG1sLWJsb2NrLmNzcyc7XG5cbltcblx0e1xuXHRcdG5hbWU6ICdtYXRobWwnLFxuXHRcdHRpdGxlOiBfXyggJ01hdGhNTCcsICdtYXRobWwtYmxvY2snICksXG5cdFx0Y2hhcmFjdGVyOiAnbSdcblx0fSxcblxuXS5mb3JFYWNoKCAoIHsgbmFtZSwgdGl0bGUsIGNoYXJhY3RlciB9ICkgPT4ge1xuXHRjb25zdCB0eXBlID0gYG1hdGhtbC1ibG9jay8keyBuYW1lIH1gO1xuXHRyZWdpc3RlckZvcm1hdFR5cGUoIHR5cGUsIHtcblx0XHR0aXRsZSxcblx0XHR0YWdOYW1lOiBuYW1lLFxuXHRcdGNsYXNzTmFtZTogbnVsbCxcblx0XHRlZGl0KCB7IGlzQWN0aXZlLCB2YWx1ZSwgb25DaGFuZ2UgfSApIHtcblx0XHRcdGNvbnN0IG9uVG9nZ2xlID0gKCkgPT4ge1xuXHRcdFx0XHRvbkNoYW5nZSggdG9nZ2xlRm9ybWF0KCB2YWx1ZSwgeyB0eXBlIH0gKSApO1xuXHRcdFx0XHRzZXRUaW1lb3V0KCAoKSA9PiB7XG5cdFx0XHRcdFx0TWF0aEpheC5IdWIuUXVldWUoIFsgJ1R5cGVzZXQnLCBNYXRoSmF4Lkh1YiwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoICdtYXRobWwnICkgXSApO1xuXHRcdFx0XHR9LCAxMDAgKTtcblx0XHRcdH07XG5cblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdGNyZWF0ZUVsZW1lbnQoIEZyYWdtZW50LCBudWxsLFxuXHRcdFx0XHRcdGNyZWF0ZUVsZW1lbnQoIFJpY2hUZXh0U2hvcnRjdXQsIHtcblx0XHRcdFx0XHRcdHR5cGU6ICdwcmltYXJ5Jyxcblx0XHRcdFx0XHRcdGNoYXJhY3Rlcixcblx0XHRcdFx0XHRcdG9uVXNlOiBvblRvZ2dsZVxuXHRcdFx0XHRcdH0gKSxcblx0XHRcdFx0XHRjcmVhdGVFbGVtZW50KCBSaWNoVGV4dFRvb2xiYXJCdXR0b24sIHtcblx0XHRcdFx0XHRcdHRpdGxlLFxuXHRcdFx0XHRcdFx0b25DbGljazogb25Ub2dnbGUsXG5cdFx0XHRcdFx0XHRpc0FjdGl2ZSxcblx0XHRcdFx0XHRcdHNob3J0Y3V0VHlwZTogJ3ByaW1hcnknLFxuXHRcdFx0XHRcdFx0c2hvcnRjdXRDaGFyYWN0ZXI6IGNoYXJhY3Rlcixcblx0XHRcdFx0XHRcdGNsYXNzTmFtZTogYHRvb2xiYXItYnV0dG9uLXdpdGgtdGV4dCB0b29sYmFyLWJ1dHRvbl9fYWR2YW5jZWQtJHsgbmFtZSB9YFxuXHRcdFx0XHRcdH0gKSApXG5cdFx0XHQpO1xuXHRcdH1cblx0fSApO1xufSApO1xuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBQ0E7QUFIQTtBQU1BO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFIQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBU0E7QUE1QkE7QUE4QkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/mathml-inline.js\n");
|
258 |
+
|
259 |
+
/***/ }),
|
260 |
+
|
261 |
+
/***/ 0:
|
262 |
+
/*!**********************************************************!*\
|
263 |
+
!*** multi ./src/mathml-block.js ./src/mathml-inline.js ***!
|
264 |
+
\**********************************************************/
|
265 |
+
/*! no static exports found */
|
266 |
+
/***/ (function(module, exports, __webpack_require__) {
|
267 |
+
|
268 |
+
__webpack_require__(/*! ./src/mathml-block.js */"./src/mathml-block.js");
|
269 |
+
module.exports = __webpack_require__(/*! ./src/mathml-inline.js */"./src/mathml-inline.js");
|
270 |
+
|
271 |
+
|
272 |
+
/***/ })
|
273 |
+
|
274 |
+
/******/ });
|
dist/mathml-block.js.map
ADDED
@@ -0,0 +1 @@
|
|
Â
|
1 |
+
{"version":3,"file":"mathml-block.js","sources":["webpack:///webpack/bootstrap"],"sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./mathml-block.js\");\n"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;A","sourceRoot":""}
|
mathml-block.php
ADDED
@@ -0,0 +1,75 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Plugin Name: MathML block
|
4 |
+
* Description: Display MathML formulas.
|
5 |
+
* Version: 1.1.2
|
6 |
+
* Requires at least: 5.0
|
7 |
+
* Tested up to: 5.4
|
8 |
+
* Requires PHP: 5.4
|
9 |
+
* Stable tag: trunk
|
10 |
+
* Author: adamsilverstein
|
11 |
+
* Author URI: http://tunedin.net
|
12 |
+
* License: GPLv2 or later
|
13 |
+
* GitHub Plugin URI: https://github.com/adamsilverstein
|
14 |
+
*
|
15 |
+
* @package mathml-block
|
16 |
+
*/
|
17 |
+
namespace MathMLBlock;
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Enqueue the admin JavaScript assets.
|
21 |
+
*/
|
22 |
+
function mathml_block_enqueue_scripts() {
|
23 |
+
|
24 |
+
wp_enqueue_script(
|
25 |
+
'mathml-block',
|
26 |
+
plugin_dir_url( __FILE__ ) . 'dist/mathml-block.js',
|
27 |
+
array( 'wp-blocks', 'wp-i18n', 'wp-editor' ),
|
28 |
+
'',
|
29 |
+
true
|
30 |
+
);
|
31 |
+
|
32 |
+
// Filter the MathJax config string.
|
33 |
+
$config_string = apply_filters( 'mathml_block_mathjax_config', 'TeX-MML-AM_CHTML' );
|
34 |
+
|
35 |
+
wp_enqueue_script(
|
36 |
+
'mathjax',
|
37 |
+
'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=' . $config_string
|
38 |
+
);
|
39 |
+
|
40 |
+
}
|
41 |
+
add_action( 'enqueue_block_editor_assets', __NAMESPACE__ . '\mathml_block_enqueue_scripts' );
|
42 |
+
|
43 |
+
// Maka JavaScript translatable.
|
44 |
+
function mathml_set_up_js_translations() {
|
45 |
+
wp_set_script_translations( 'mathml-block', 'mathml-block' );
|
46 |
+
}
|
47 |
+
add_action( 'init', __NAMESPACE__ . '\mathml_set_up_js_translations' );
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Potentially enqueue the front end mathjax script, if any mathml blocks are detected in the content.
|
51 |
+
*/
|
52 |
+
function potentially_add_front_end_mathjax_script() {
|
53 |
+
global $post;
|
54 |
+
|
55 |
+
// Only apply on singular pages.
|
56 |
+
if ( ! is_singular() ) {
|
57 |
+
return;
|
58 |
+
}
|
59 |
+
|
60 |
+
// Check the content for mathml blocks.
|
61 |
+
$has_mathml_block = strpos( $post->post_content, 'wp:mathml/mathmlblock' );
|
62 |
+
$has_mathml_inline = strpos( $post->post_content, '<mathml>' );
|
63 |
+
if ( false === $has_mathml_block && false === $has_mathml_inline ) {
|
64 |
+
return;
|
65 |
+
}
|
66 |
+
|
67 |
+
// Filter the MathJax config string.
|
68 |
+
$config_string = apply_filters( 'mathml_block_mathjax_config', 'TeX-MML-AM_CHTML' );
|
69 |
+
|
70 |
+
// Enqueue the MathJax script for front end formula display.
|
71 |
+
wp_register_script( 'mathjax', 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=' . $config_string );
|
72 |
+
wp_enqueue_script( 'mathjax' );
|
73 |
+
|
74 |
+
}
|
75 |
+
add_action( 'wp_enqueue_scripts', __NAMESPACE__ . '\potentially_add_front_end_mathjax_script' );
|
package-lock.json
ADDED
@@ -0,0 +1,7412 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
{
|
2 |
+
"name": "mathml-block",
|
3 |
+
"requires": true,
|
4 |
+
"lockfileVersion": 1,
|
5 |
+
"dependencies": {
|
6 |
+
"@babel/code-frame": {
|
7 |
+
"version": "7.8.3",
|
8 |
+
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
|
9 |
+
"integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
|
10 |
+
"dev": true,
|
11 |
+
"requires": {
|
12 |
+
"@babel/highlight": "^7.8.3"
|
13 |
+
}
|
14 |
+
},
|
15 |
+
"@babel/compat-data": {
|
16 |
+
"version": "7.9.0",
|
17 |
+
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.9.0.tgz",
|
18 |
+
"integrity": "sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g==",
|
19 |
+
"dev": true,
|
20 |
+
"requires": {
|
21 |
+
"browserslist": "^4.9.1",
|
22 |
+
"invariant": "^2.2.4",
|
23 |
+
"semver": "^5.5.0"
|
24 |
+
}
|
25 |
+
},
|
26 |
+
"@babel/core": {
|
27 |
+
"version": "7.9.0",
|
28 |
+
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz",
|
29 |
+
"integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==",
|
30 |
+
"dev": true,
|
31 |
+
"requires": {
|
32 |
+
"@babel/code-frame": "^7.8.3",
|
33 |
+
"@babel/generator": "^7.9.0",
|
34 |
+
"@babel/helper-module-transforms": "^7.9.0",
|
35 |
+
"@babel/helpers": "^7.9.0",
|
36 |
+
"@babel/parser": "^7.9.0",
|
37 |
+
"@babel/template": "^7.8.6",
|
38 |
+
"@babel/traverse": "^7.9.0",
|
39 |
+
"@babel/types": "^7.9.0",
|
40 |
+
"convert-source-map": "^1.7.0",
|
41 |
+
"debug": "^4.1.0",
|
42 |
+
"gensync": "^1.0.0-beta.1",
|
43 |
+
"json5": "^2.1.2",
|
44 |
+
"lodash": "^4.17.13",
|
45 |
+
"resolve": "^1.3.2",
|
46 |
+
"semver": "^5.4.1",
|
47 |
+
"source-map": "^0.5.0"
|
48 |
+
},
|
49 |
+
"dependencies": {
|
50 |
+
"@babel/generator": {
|
51 |
+
"version": "7.9.4",
|
52 |
+
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.4.tgz",
|
53 |
+
"integrity": "sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA==",
|
54 |
+
"dev": true,
|
55 |
+
"requires": {
|
56 |
+
"@babel/types": "^7.9.0",
|
57 |
+
"jsesc": "^2.5.1",
|
58 |
+
"lodash": "^4.17.13",
|
59 |
+
"source-map": "^0.5.0"
|
60 |
+
}
|
61 |
+
},
|
62 |
+
"@babel/parser": {
|
63 |
+
"version": "7.9.4",
|
64 |
+
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz",
|
65 |
+
"integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==",
|
66 |
+
"dev": true
|
67 |
+
},
|
68 |
+
"@babel/traverse": {
|
69 |
+
"version": "7.9.0",
|
70 |
+
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.0.tgz",
|
71 |
+
"integrity": "sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w==",
|
72 |
+
"dev": true,
|
73 |
+
"requires": {
|
74 |
+
"@babel/code-frame": "^7.8.3",
|
75 |
+
"@babel/generator": "^7.9.0",
|
76 |
+
"@babel/helper-function-name": "^7.8.3",
|
77 |
+
"@babel/helper-split-export-declaration": "^7.8.3",
|
78 |
+
"@babel/parser": "^7.9.0",
|
79 |
+
"@babel/types": "^7.9.0",
|
80 |
+
"debug": "^4.1.0",
|
81 |
+
"globals": "^11.1.0",
|
82 |
+
"lodash": "^4.17.13"
|
83 |
+
}
|
84 |
+
},
|
85 |
+
"@babel/types": {
|
86 |
+
"version": "7.9.0",
|
87 |
+
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz",
|
88 |
+
"integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==",
|
89 |
+
"dev": true,
|
90 |
+
"requires": {
|
91 |
+
"@babel/helper-validator-identifier": "^7.9.0",
|
92 |
+
"lodash": "^4.17.13",
|
93 |
+
"to-fast-properties": "^2.0.0"
|
94 |
+
}
|
95 |
+
}
|
96 |
+
}
|
97 |
+
},
|
98 |
+
"@babel/generator": {
|
99 |
+
"version": "7.8.8",
|
100 |
+
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.8.8.tgz",
|
101 |
+
"integrity": "sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg==",
|
102 |
+
"dev": true,
|
103 |
+
"requires": {
|
104 |
+
"@babel/types": "^7.8.7",
|
105 |
+
"jsesc": "^2.5.1",
|
106 |
+
"lodash": "^4.17.13",
|
107 |
+
"source-map": "^0.5.0"
|
108 |
+
}
|
109 |
+
},
|
110 |
+
"@babel/helper-annotate-as-pure": {
|
111 |
+
"version": "7.8.3",
|
112 |
+
"resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz",
|
113 |
+
"integrity": "sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw==",
|
114 |
+
"dev": true,
|
115 |
+
"requires": {
|
116 |
+
"@babel/types": "^7.8.3"
|
117 |
+
}
|
118 |
+
},
|
119 |
+
"@babel/helper-builder-binary-assignment-operator-visitor": {
|
120 |
+
"version": "7.8.3",
|
121 |
+
"resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz",
|
122 |
+
"integrity": "sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw==",
|
123 |
+
"dev": true,
|
124 |
+
"requires": {
|
125 |
+
"@babel/helper-explode-assignable-expression": "^7.8.3",
|
126 |
+
"@babel/types": "^7.8.3"
|
127 |
+
}
|
128 |
+
},
|
129 |
+
"@babel/helper-builder-react-jsx": {
|
130 |
+
"version": "7.9.0",
|
131 |
+
"resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.9.0.tgz",
|
132 |
+
"integrity": "sha512-weiIo4gaoGgnhff54GQ3P5wsUQmnSwpkvU0r6ZHq6TzoSzKy4JxHEgnxNytaKbov2a9z/CVNyzliuCOUPEX3Jw==",
|
133 |
+
"dev": true,
|
134 |
+
"requires": {
|
135 |
+
"@babel/helper-annotate-as-pure": "^7.8.3",
|
136 |
+
"@babel/types": "^7.9.0"
|
137 |
+
},
|
138 |
+
"dependencies": {
|
139 |
+
"@babel/types": {
|
140 |
+
"version": "7.9.0",
|
141 |
+
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz",
|
142 |
+
"integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==",
|
143 |
+
"dev": true,
|
144 |
+
"requires": {
|
145 |
+
"@babel/helper-validator-identifier": "^7.9.0",
|
146 |
+
"lodash": "^4.17.13",
|
147 |
+
"to-fast-properties": "^2.0.0"
|
148 |
+
}
|
149 |
+
}
|
150 |
+
}
|
151 |
+
},
|
152 |
+
"@babel/helper-builder-react-jsx-experimental": {
|
153 |
+
"version": "7.9.0",
|
154 |
+
"resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.9.0.tgz",
|
155 |
+
"integrity": "sha512-3xJEiyuYU4Q/Ar9BsHisgdxZsRlsShMe90URZ0e6przL26CCs8NJbDoxH94kKT17PcxlMhsCAwZd90evCo26VQ==",
|
156 |
+
"dev": true,
|
157 |
+
"requires": {
|
158 |
+
"@babel/helper-annotate-as-pure": "^7.8.3",
|
159 |
+
"@babel/helper-module-imports": "^7.8.3",
|
160 |
+
"@babel/types": "^7.9.0"
|
161 |
+
},
|
162 |
+
"dependencies": {
|
163 |
+
"@babel/types": {
|
164 |
+
"version": "7.9.0",
|
165 |
+
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz",
|
166 |
+
"integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==",
|
167 |
+
"dev": true,
|
168 |
+
"requires": {
|
169 |
+
"@babel/helper-validator-identifier": "^7.9.0",
|
170 |
+
"lodash": "^4.17.13",
|
171 |
+
"to-fast-properties": "^2.0.0"
|
172 |
+
}
|
173 |
+
}
|
174 |
+
}
|
175 |
+
},
|
176 |
+
"@babel/helper-compilation-targets": {
|
177 |
+
"version": "7.8.7",
|
178 |
+
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz",
|
179 |
+
"integrity": "sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw==",
|
180 |
+
"dev": true,
|
181 |
+
"requires": {
|
182 |
+
"@babel/compat-data": "^7.8.6",
|
183 |
+
"browserslist": "^4.9.1",
|
184 |
+
"invariant": "^2.2.4",
|
185 |
+
"levenary": "^1.1.1",
|
186 |
+
"semver": "^5.5.0"
|
187 |
+
}
|
188 |
+
},
|
189 |
+
"@babel/helper-create-regexp-features-plugin": {
|
190 |
+
"version": "7.8.8",
|
191 |
+
"resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz",
|
192 |
+
"integrity": "sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg==",
|
193 |
+
"dev": true,
|
194 |
+
"requires": {
|
195 |
+
"@babel/helper-annotate-as-pure": "^7.8.3",
|
196 |
+
"@babel/helper-regex": "^7.8.3",
|
197 |
+
"regexpu-core": "^4.7.0"
|
198 |
+
}
|
199 |
+
},
|
200 |
+
"@babel/helper-define-map": {
|
201 |
+
"version": "7.8.3",
|
202 |
+
"resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz",
|
203 |
+
"integrity": "sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g==",
|
204 |
+
"dev": true,
|
205 |
+
"requires": {
|
206 |
+
"@babel/helper-function-name": "^7.8.3",
|
207 |
+
"@babel/types": "^7.8.3",
|
208 |
+
"lodash": "^4.17.13"
|
209 |
+
}
|
210 |
+
},
|
211 |
+
"@babel/helper-explode-assignable-expression": {
|
212 |
+
"version": "7.8.3",
|
213 |
+
"resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz",
|
214 |
+
"integrity": "sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw==",
|
215 |
+
"dev": true,
|
216 |
+
"requires": {
|
217 |
+
"@babel/traverse": "^7.8.3",
|
218 |
+
"@babel/types": "^7.8.3"
|
219 |
+
}
|
220 |
+
},
|
221 |
+
"@babel/helper-function-name": {
|
222 |
+
"version": "7.8.3",
|
223 |
+
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz",
|
224 |
+
"integrity": "sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA==",
|
225 |
+
"dev": true,
|
226 |
+
"requires": {
|
227 |
+
"@babel/helper-get-function-arity": "^7.8.3",
|
228 |
+
"@babel/template": "^7.8.3",
|
229 |
+
"@babel/types": "^7.8.3"
|
230 |
+
}
|
231 |
+
},
|
232 |
+
"@babel/helper-get-function-arity": {
|
233 |
+
"version": "7.8.3",
|
234 |
+
"resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz",
|
235 |
+
"integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==",
|
236 |
+
"dev": true,
|
237 |
+
"requires": {
|
238 |
+
"@babel/types": "^7.8.3"
|
239 |
+
}
|
240 |
+
},
|
241 |
+
"@babel/helper-hoist-variables": {
|
242 |
+
"version": "7.8.3",
|
243 |
+
"resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz",
|
244 |
+
"integrity": "sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg==",
|
245 |
+
"dev": true,
|
246 |
+
"requires": {
|
247 |
+
"@babel/types": "^7.8.3"
|
248 |
+
}
|
249 |
+
},
|
250 |
+
"@babel/helper-member-expression-to-functions": {
|
251 |
+
"version": "7.8.3",
|
252 |
+
"resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz",
|
253 |
+
"integrity": "sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA==",
|
254 |
+
"dev": true,
|
255 |
+
"requires": {
|
256 |
+
"@babel/types": "^7.8.3"
|
257 |
+
}
|
258 |
+
},
|
259 |
+
"@babel/helper-module-imports": {
|
260 |
+
"version": "7.8.3",
|
261 |
+
"resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz",
|
262 |
+
"integrity": "sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg==",
|
263 |
+
"dev": true,
|
264 |
+
"requires": {
|
265 |
+
"@babel/types": "^7.8.3"
|
266 |
+
}
|
267 |
+
},
|
268 |
+
"@babel/helper-module-transforms": {
|
269 |
+
"version": "7.9.0",
|
270 |
+
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz",
|
271 |
+
"integrity": "sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA==",
|
272 |
+
"dev": true,
|
273 |
+
"requires": {
|
274 |
+
"@babel/helper-module-imports": "^7.8.3",
|
275 |
+
"@babel/helper-replace-supers": "^7.8.6",
|
276 |
+
"@babel/helper-simple-access": "^7.8.3",
|
277 |
+
"@babel/helper-split-export-declaration": "^7.8.3",
|
278 |
+
"@babel/template": "^7.8.6",
|
279 |
+
"@babel/types": "^7.9.0",
|
280 |
+
"lodash": "^4.17.13"
|
281 |
+
},
|
282 |
+
"dependencies": {
|
283 |
+
"@babel/types": {
|
284 |
+
"version": "7.9.0",
|
285 |
+
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz",
|
286 |
+
"integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==",
|
287 |
+
"dev": true,
|
288 |
+
"requires": {
|
289 |
+
"@babel/helper-validator-identifier": "^7.9.0",
|
290 |
+
"lodash": "^4.17.13",
|
291 |
+
"to-fast-properties": "^2.0.0"
|
292 |
+
}
|
293 |
+
}
|
294 |
+
}
|
295 |
+
},
|
296 |
+
"@babel/helper-optimise-call-expression": {
|
297 |
+
"version": "7.8.3",
|
298 |
+
"resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz",
|
299 |
+
"integrity": "sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ==",
|
300 |
+
"dev": true,
|
301 |
+
"requires": {
|
302 |
+
"@babel/types": "^7.8.3"
|
303 |
+
}
|
304 |
+
},
|
305 |
+
"@babel/helper-plugin-utils": {
|
306 |
+
"version": "7.8.3",
|
307 |
+
"resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz",
|
308 |
+
"integrity": "sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ==",
|
309 |
+
"dev": true
|
310 |
+
},
|
311 |
+
"@babel/helper-regex": {
|
312 |
+
"version": "7.8.3",
|
313 |
+
"resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.8.3.tgz",
|
314 |
+
"integrity": "sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ==",
|
315 |
+
"dev": true,
|
316 |
+
"requires": {
|
317 |
+
"lodash": "^4.17.13"
|
318 |
+
}
|
319 |
+
},
|
320 |
+
"@babel/helper-remap-async-to-generator": {
|
321 |
+
"version": "7.8.3",
|
322 |
+
"resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz",
|
323 |
+
"integrity": "sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA==",
|
324 |
+
"dev": true,
|
325 |
+
"requires": {
|
326 |
+
"@babel/helper-annotate-as-pure": "^7.8.3",
|
327 |
+
"@babel/helper-wrap-function": "^7.8.3",
|
328 |
+
"@babel/template": "^7.8.3",
|
329 |
+
"@babel/traverse": "^7.8.3",
|
330 |
+
"@babel/types": "^7.8.3"
|
331 |
+
}
|
332 |
+
},
|
333 |
+
"@babel/helper-replace-supers": {
|
334 |
+
"version": "7.8.6",
|
335 |
+
"resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz",
|
336 |
+
"integrity": "sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA==",
|
337 |
+
"dev": true,
|
338 |
+
"requires": {
|
339 |
+
"@babel/helper-member-expression-to-functions": "^7.8.3",
|
340 |
+
"@babel/helper-optimise-call-expression": "^7.8.3",
|
341 |
+
"@babel/traverse": "^7.8.6",
|
342 |
+
"@babel/types": "^7.8.6"
|
343 |
+
}
|
344 |
+
},
|
345 |
+
"@babel/helper-simple-access": {
|
346 |
+
"version": "7.8.3",
|
347 |
+
"resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz",
|
348 |
+
"integrity": "sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw==",
|
349 |
+
"dev": true,
|
350 |
+
"requires": {
|
351 |
+
"@babel/template": "^7.8.3",
|
352 |
+
"@babel/types": "^7.8.3"
|
353 |
+
}
|
354 |
+
},
|
355 |
+
"@babel/helper-split-export-declaration": {
|
356 |
+
"version": "7.8.3",
|
357 |
+
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz",
|
358 |
+
"integrity": "sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA==",
|
359 |
+
"dev": true,
|
360 |
+
"requires": {
|
361 |
+
"@babel/types": "^7.8.3"
|
362 |
+
}
|
363 |
+
},
|
364 |
+
"@babel/helper-validator-identifier": {
|
365 |
+
"version": "7.9.0",
|
366 |
+
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz",
|
367 |
+
"integrity": "sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw==",
|
368 |
+
"dev": true
|
369 |
+
},
|
370 |
+
"@babel/helper-wrap-function": {
|
371 |
+
"version": "7.8.3",
|
372 |
+
"resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz",
|
373 |
+
"integrity": "sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ==",
|
374 |
+
"dev": true,
|
375 |
+
"requires": {
|
376 |
+
"@babel/helper-function-name": "^7.8.3",
|
377 |
+
"@babel/template": "^7.8.3",
|
378 |
+
"@babel/traverse": "^7.8.3",
|
379 |
+
"@babel/types": "^7.8.3"
|
380 |
+
}
|
381 |
+
},
|
382 |
+
"@babel/helpers": {
|
383 |
+
"version": "7.9.2",
|
384 |
+
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.9.2.tgz",
|
385 |
+
"integrity": "sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==",
|
386 |
+
"dev": true,
|
387 |
+
"requires": {
|
388 |
+
"@babel/template": "^7.8.3",
|
389 |
+
"@babel/traverse": "^7.9.0",
|
390 |
+
"@babel/types": "^7.9.0"
|
391 |
+
},
|
392 |
+
"dependencies": {
|
393 |
+
"@babel/generator": {
|
394 |
+
"version": "7.9.4",
|
395 |
+
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.9.4.tgz",
|
396 |
+
"integrity": "sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA==",
|
397 |
+
"dev": true,
|
398 |
+
"requires": {
|
399 |
+
"@babel/types": "^7.9.0",
|
400 |
+
"jsesc": "^2.5.1",
|
401 |
+
"lodash": "^4.17.13",
|
402 |
+
"source-map": "^0.5.0"
|
403 |
+
}
|
404 |
+
},
|
405 |
+
"@babel/parser": {
|
406 |
+
"version": "7.9.4",
|
407 |
+
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.4.tgz",
|
408 |
+
"integrity": "sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA==",
|
409 |
+
"dev": true
|
410 |
+
},
|
411 |
+
"@babel/traverse": {
|
412 |
+
"version": "7.9.0",
|
413 |
+
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.9.0.tgz",
|
414 |
+
"integrity": "sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w==",
|
415 |
+
"dev": true,
|
416 |
+
"requires": {
|
417 |
+
"@babel/code-frame": "^7.8.3",
|
418 |
+
"@babel/generator": "^7.9.0",
|
419 |
+
"@babel/helper-function-name": "^7.8.3",
|
420 |
+
"@babel/helper-split-export-declaration": "^7.8.3",
|
421 |
+
"@babel/parser": "^7.9.0",
|
422 |
+
"@babel/types": "^7.9.0",
|
423 |
+
"debug": "^4.1.0",
|
424 |
+
"globals": "^11.1.0",
|
425 |
+
"lodash": "^4.17.13"
|
426 |
+
}
|
427 |
+
},
|
428 |
+
"@babel/types": {
|
429 |
+
"version": "7.9.0",
|
430 |
+
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz",
|
431 |
+
"integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==",
|
432 |
+
"dev": true,
|
433 |
+
"requires": {
|
434 |
+
"@babel/helper-validator-identifier": "^7.9.0",
|
435 |
+
"lodash": "^4.17.13",
|
436 |
+
"to-fast-properties": "^2.0.0"
|
437 |
+
}
|
438 |
+
}
|
439 |
+
}
|
440 |
+
},
|
441 |
+
"@babel/highlight": {
|
442 |
+
"version": "7.8.3",
|
443 |
+
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz",
|
444 |
+
"integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==",
|
445 |
+
"dev": true,
|
446 |
+
"requires": {
|
447 |
+
"chalk": "^2.0.0",
|
448 |
+
"esutils": "^2.0.2",
|
449 |
+
"js-tokens": "^4.0.0"
|
450 |
+
}
|
451 |
+
},
|
452 |
+
"@babel/parser": {
|
453 |
+
"version": "7.8.8",
|
454 |
+
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.8.8.tgz",
|
455 |
+
"integrity": "sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA==",
|
456 |
+
"dev": true
|
457 |
+
},
|
458 |
+
"@babel/plugin-proposal-async-generator-functions": {
|
459 |
+
"version": "7.8.3",
|
460 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz",
|
461 |
+
"integrity": "sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw==",
|
462 |
+
"dev": true,
|
463 |
+
"requires": {
|
464 |
+
"@babel/helper-plugin-utils": "^7.8.3",
|
465 |
+
"@babel/helper-remap-async-to-generator": "^7.8.3",
|
466 |
+
"@babel/plugin-syntax-async-generators": "^7.8.0"
|
467 |
+
}
|
468 |
+
},
|
469 |
+
"@babel/plugin-proposal-dynamic-import": {
|
470 |
+
"version": "7.8.3",
|
471 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz",
|
472 |
+
"integrity": "sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w==",
|
473 |
+
"dev": true,
|
474 |
+
"requires": {
|
475 |
+
"@babel/helper-plugin-utils": "^7.8.3",
|
476 |
+
"@babel/plugin-syntax-dynamic-import": "^7.8.0"
|
477 |
+
}
|
478 |
+
},
|
479 |
+
"@babel/plugin-proposal-json-strings": {
|
480 |
+
"version": "7.8.3",
|
481 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz",
|
482 |
+
"integrity": "sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q==",
|
483 |
+
"dev": true,
|
484 |
+
"requires": {
|
485 |
+
"@babel/helper-plugin-utils": "^7.8.3",
|
486 |
+
"@babel/plugin-syntax-json-strings": "^7.8.0"
|
487 |
+
}
|
488 |
+
},
|
489 |
+
"@babel/plugin-proposal-nullish-coalescing-operator": {
|
490 |
+
"version": "7.8.3",
|
491 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz",
|
492 |
+
"integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==",
|
493 |
+
"dev": true,
|
494 |
+
"requires": {
|
495 |
+
"@babel/helper-plugin-utils": "^7.8.3",
|
496 |
+
"@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0"
|
497 |
+
}
|
498 |
+
},
|
499 |
+
"@babel/plugin-proposal-numeric-separator": {
|
500 |
+
"version": "7.8.3",
|
501 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz",
|
502 |
+
"integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==",
|
503 |
+
"dev": true,
|
504 |
+
"requires": {
|
505 |
+
"@babel/helper-plugin-utils": "^7.8.3",
|
506 |
+
"@babel/plugin-syntax-numeric-separator": "^7.8.3"
|
507 |
+
}
|
508 |
+
},
|
509 |
+
"@babel/plugin-proposal-object-rest-spread": {
|
510 |
+
"version": "7.9.0",
|
511 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.0.tgz",
|
512 |
+
"integrity": "sha512-UgqBv6bjq4fDb8uku9f+wcm1J7YxJ5nT7WO/jBr0cl0PLKb7t1O6RNR1kZbjgx2LQtsDI9hwoQVmn0yhXeQyow==",
|
513 |
+
"dev": true,
|
514 |
+
"requires": {
|
515 |
+
"@babel/helper-plugin-utils": "^7.8.3",
|
516 |
+
"@babel/plugin-syntax-object-rest-spread": "^7.8.0"
|
517 |
+
}
|
518 |
+
},
|
519 |
+
"@babel/plugin-proposal-optional-catch-binding": {
|
520 |
+
"version": "7.8.3",
|
521 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz",
|
522 |
+
"integrity": "sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw==",
|
523 |
+
"dev": true,
|
524 |
+
"requires": {
|
525 |
+
"@babel/helper-plugin-utils": "^7.8.3",
|
526 |
+
"@babel/plugin-syntax-optional-catch-binding": "^7.8.0"
|
527 |
+
}
|
528 |
+
},
|
529 |
+
"@babel/plugin-proposal-optional-chaining": {
|
530 |
+
"version": "7.9.0",
|
531 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz",
|
532 |
+
"integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==",
|
533 |
+
"dev": true,
|
534 |
+
"requires": {
|
535 |
+
"@babel/helper-plugin-utils": "^7.8.3",
|
536 |
+
"@babel/plugin-syntax-optional-chaining": "^7.8.0"
|
537 |
+
}
|
538 |
+
},
|
539 |
+
"@babel/plugin-proposal-unicode-property-regex": {
|
540 |
+
"version": "7.8.8",
|
541 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz",
|
542 |
+
"integrity": "sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A==",
|
543 |
+
"dev": true,
|
544 |
+
"requires": {
|
545 |
+
"@babel/helper-create-regexp-features-plugin": "^7.8.8",
|
546 |
+
"@babel/helper-plugin-utils": "^7.8.3"
|
547 |
+
}
|
548 |
+
},
|
549 |
+
"@babel/plugin-syntax-async-generators": {
|
550 |
+
"version": "7.8.4",
|
551 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
|
552 |
+
"integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
|
553 |
+
"dev": true,
|
554 |
+
"requires": {
|
555 |
+
"@babel/helper-plugin-utils": "^7.8.0"
|
556 |
+
}
|
557 |
+
},
|
558 |
+
"@babel/plugin-syntax-dynamic-import": {
|
559 |
+
"version": "7.8.3",
|
560 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
|
561 |
+
"integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
|
562 |
+
"dev": true,
|
563 |
+
"requires": {
|
564 |
+
"@babel/helper-plugin-utils": "^7.8.0"
|
565 |
+
}
|
566 |
+
},
|
567 |
+
"@babel/plugin-syntax-json-strings": {
|
568 |
+
"version": "7.8.3",
|
569 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
|
570 |
+
"integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
|
571 |
+
"dev": true,
|
572 |
+
"requires": {
|
573 |
+
"@babel/helper-plugin-utils": "^7.8.0"
|
574 |
+
}
|
575 |
+
},
|
576 |
+
"@babel/plugin-syntax-jsx": {
|
577 |
+
"version": "7.8.3",
|
578 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz",
|
579 |
+
"integrity": "sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A==",
|
580 |
+
"dev": true,
|
581 |
+
"requires": {
|
582 |
+
"@babel/helper-plugin-utils": "^7.8.3"
|
583 |
+
}
|
584 |
+
},
|
585 |
+
"@babel/plugin-syntax-nullish-coalescing-operator": {
|
586 |
+
"version": "7.8.3",
|
587 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
|
588 |
+
"integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
|
589 |
+
"dev": true,
|
590 |
+
"requires": {
|
591 |
+
"@babel/helper-plugin-utils": "^7.8.0"
|
592 |
+
}
|
593 |
+
},
|
594 |
+
"@babel/plugin-syntax-numeric-separator": {
|
595 |
+
"version": "7.8.3",
|
596 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz",
|
597 |
+
"integrity": "sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw==",
|
598 |
+
"dev": true,
|
599 |
+
"requires": {
|
600 |
+
"@babel/helper-plugin-utils": "^7.8.3"
|
601 |
+
}
|
602 |
+
},
|
603 |
+
"@babel/plugin-syntax-object-rest-spread": {
|
604 |
+
"version": "7.8.3",
|
605 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
|
606 |
+
"integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
|
607 |
+
"dev": true,
|
608 |
+
"requires": {
|
609 |
+
"@babel/helper-plugin-utils": "^7.8.0"
|
610 |
+
}
|
611 |
+
},
|
612 |
+
"@babel/plugin-syntax-optional-catch-binding": {
|
613 |
+
"version": "7.8.3",
|
614 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
|
615 |
+
"integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
|
616 |
+
"dev": true,
|
617 |
+
"requires": {
|
618 |
+
"@babel/helper-plugin-utils": "^7.8.0"
|
619 |
+
}
|
620 |
+
},
|
621 |
+
"@babel/plugin-syntax-optional-chaining": {
|
622 |
+
"version": "7.8.3",
|
623 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
|
624 |
+
"integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
|
625 |
+
"dev": true,
|
626 |
+
"requires": {
|
627 |
+
"@babel/helper-plugin-utils": "^7.8.0"
|
628 |
+
}
|
629 |
+
},
|
630 |
+
"@babel/plugin-syntax-top-level-await": {
|
631 |
+
"version": "7.8.3",
|
632 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz",
|
633 |
+
"integrity": "sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g==",
|
634 |
+
"dev": true,
|
635 |
+
"requires": {
|
636 |
+
"@babel/helper-plugin-utils": "^7.8.3"
|
637 |
+
}
|
638 |
+
},
|
639 |
+
"@babel/plugin-transform-arrow-functions": {
|
640 |
+
"version": "7.8.3",
|
641 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz",
|
642 |
+
"integrity": "sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg==",
|
643 |
+
"dev": true,
|
644 |
+
"requires": {
|
645 |
+
"@babel/helper-plugin-utils": "^7.8.3"
|
646 |
+
}
|
647 |
+
},
|
648 |
+
"@babel/plugin-transform-async-to-generator": {
|
649 |
+
"version": "7.8.3",
|
650 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz",
|
651 |
+
"integrity": "sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ==",
|
652 |
+
"dev": true,
|
653 |
+
"requires": {
|
654 |
+
"@babel/helper-module-imports": "^7.8.3",
|
655 |
+
"@babel/helper-plugin-utils": "^7.8.3",
|
656 |
+
"@babel/helper-remap-async-to-generator": "^7.8.3"
|
657 |
+
}
|
658 |
+
},
|
659 |
+
"@babel/plugin-transform-block-scoped-functions": {
|
660 |
+
"version": "7.8.3",
|
661 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz",
|
662 |
+
"integrity": "sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg==",
|
663 |
+
"dev": true,
|
664 |
+
"requires": {
|
665 |
+
"@babel/helper-plugin-utils": "^7.8.3"
|
666 |
+
}
|
667 |
+
},
|
668 |
+
"@babel/plugin-transform-block-scoping": {
|
669 |
+
"version": "7.8.3",
|
670 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz",
|
671 |
+
"integrity": "sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w==",
|
672 |
+
"dev": true,
|
673 |
+
"requires": {
|
674 |
+
"@babel/helper-plugin-utils": "^7.8.3",
|
675 |
+
"lodash": "^4.17.13"
|
676 |
+
}
|
677 |
+
},
|
678 |
+
"@babel/plugin-transform-classes": {
|
679 |
+
"version": "7.9.2",
|
680 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.2.tgz",
|
681 |
+
"integrity": "sha512-TC2p3bPzsfvSsqBZo0kJnuelnoK9O3welkUpqSqBQuBF6R5MN2rysopri8kNvtlGIb2jmUO7i15IooAZJjZuMQ==",
|
682 |
+
"dev": true,
|
683 |
+
"requires": {
|
684 |
+
"@babel/helper-annotate-as-pure": "^7.8.3",
|
685 |
+
"@babel/helper-define-map": "^7.8.3",
|
686 |
+
"@babel/helper-function-name": "^7.8.3",
|
687 |
+
"@babel/helper-optimise-call-expression": "^7.8.3",
|
688 |
+
"@babel/helper-plugin-utils": "^7.8.3",
|
689 |
+
"@babel/helper-replace-supers": "^7.8.6",
|
690 |
+
"@babel/helper-split-export-declaration": "^7.8.3",
|
691 |
+
"globals": "^11.1.0"
|
692 |
+
}
|
693 |
+
},
|
694 |
+
"@babel/plugin-transform-computed-properties": {
|
695 |
+
"version": "7.8.3",
|
696 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz",
|
697 |
+
"integrity": "sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA==",
|
698 |
+
"dev": true,
|
699 |
+
"requires": {
|
700 |
+
"@babel/helper-plugin-utils": "^7.8.3"
|
701 |
+
}
|
702 |
+
},
|
703 |
+
"@babel/plugin-transform-destructuring": {
|
704 |
+
"version": "7.8.8",
|
705 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz",
|
706 |
+
"integrity": "sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ==",
|
707 |
+
"dev": true,
|
708 |
+
"requires": {
|
709 |
+
"@babel/helper-plugin-utils": "^7.8.3"
|
710 |
+
}
|
711 |
+
},
|
712 |
+
"@babel/plugin-transform-dotall-regex": {
|
713 |
+
"version": "7.8.3",
|
714 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz",
|
715 |
+
"integrity": "sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw==",
|
716 |
+
"dev": true,
|
717 |
+
"requires": {
|
718 |
+
"@babel/helper-create-regexp-features-plugin": "^7.8.3",
|
719 |
+
"@babel/helper-plugin-utils": "^7.8.3"
|
720 |
+
}
|
721 |
+
},
|
722 |
+
"@babel/plugin-transform-duplicate-keys": {
|
723 |
+
"version": "7.8.3",
|
724 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz",
|
725 |
+
"integrity": "sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ==",
|
726 |
+
"dev": true,
|
727 |
+
"requires": {
|
728 |
+
"@babel/helper-plugin-utils": "^7.8.3"
|
729 |
+
}
|
730 |
+
},
|
731 |
+
"@babel/plugin-transform-exponentiation-operator": {
|
732 |
+
"version": "7.8.3",
|
733 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz",
|
734 |
+
"integrity": "sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ==",
|
735 |
+
"dev": true,
|
736 |
+
"requires": {
|
737 |
+
"@babel/helper-builder-binary-assignment-operator-visitor": "^7.8.3",
|
738 |
+
"@babel/helper-plugin-utils": "^7.8.3"
|
739 |
+
}
|
740 |
+
},
|
741 |
+
"@babel/plugin-transform-for-of": {
|
742 |
+
"version": "7.9.0",
|
743 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz",
|
744 |
+
"integrity": "sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ==",
|
745 |
+
"dev": true,
|
746 |
+
"requires": {
|
747 |
+
"@babel/helper-plugin-utils": "^7.8.3"
|
748 |
+
}
|
749 |
+
},
|
750 |
+
"@babel/plugin-transform-function-name": {
|
751 |
+
"version": "7.8.3",
|
752 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz",
|
753 |
+
"integrity": "sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ==",
|
754 |
+
"dev": true,
|
755 |
+
"requires": {
|
756 |
+
"@babel/helper-function-name": "^7.8.3",
|
757 |
+
"@babel/helper-plugin-utils": "^7.8.3"
|
758 |
+
}
|
759 |
+
},
|
760 |
+
"@babel/plugin-transform-literals": {
|
761 |
+
"version": "7.8.3",
|
762 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz",
|
763 |
+
"integrity": "sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A==",
|
764 |
+
"dev": true,
|
765 |
+
"requires": {
|
766 |
+
"@babel/helper-plugin-utils": "^7.8.3"
|
767 |
+
}
|
768 |
+
},
|
769 |
+
"@babel/plugin-transform-member-expression-literals": {
|
770 |
+
"version": "7.8.3",
|
771 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz",
|
772 |
+
"integrity": "sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA==",
|
773 |
+
"dev": true,
|
774 |
+
"requires": {
|
775 |
+
"@babel/helper-plugin-utils": "^7.8.3"
|
776 |
+
}
|
777 |
+
},
|
778 |
+
"@babel/plugin-transform-modules-amd": {
|
779 |
+
"version": "7.9.0",
|
780 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz",
|
781 |
+
"integrity": "sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q==",
|
782 |
+
"dev": true,
|
783 |
+
"requires": {
|
784 |
+
"@babel/helper-module-transforms": "^7.9.0",
|
785 |
+
"@babel/helper-plugin-utils": "^7.8.3",
|
786 |
+
"babel-plugin-dynamic-import-node": "^2.3.0"
|
787 |
+
}
|
788 |
+
},
|
789 |
+
"@babel/plugin-transform-modules-commonjs": {
|
790 |
+
"version": "7.9.0",
|
791 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz",
|
792 |
+
"integrity": "sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g==",
|
793 |
+
"dev": true,
|
794 |
+
"requires": {
|
795 |
+
"@babel/helper-module-transforms": "^7.9.0",
|
796 |
+
"@babel/helper-plugin-utils": "^7.8.3",
|
797 |
+
"@babel/helper-simple-access": "^7.8.3",
|
798 |
+
"babel-plugin-dynamic-import-node": "^2.3.0"
|
799 |
+
}
|
800 |
+
},
|
801 |
+
"@babel/plugin-transform-modules-systemjs": {
|
802 |
+
"version": "7.9.0",
|
803 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz",
|
804 |
+
"integrity": "sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ==",
|
805 |
+
"dev": true,
|
806 |
+
"requires": {
|
807 |
+
"@babel/helper-hoist-variables": "^7.8.3",
|
808 |
+
"@babel/helper-module-transforms": "^7.9.0",
|
809 |
+
"@babel/helper-plugin-utils": "^7.8.3",
|
810 |
+
"babel-plugin-dynamic-import-node": "^2.3.0"
|
811 |
+
}
|
812 |
+
},
|
813 |
+
"@babel/plugin-transform-modules-umd": {
|
814 |
+
"version": "7.9.0",
|
815 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz",
|
816 |
+
"integrity": "sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ==",
|
817 |
+
"dev": true,
|
818 |
+
"requires": {
|
819 |
+
"@babel/helper-module-transforms": "^7.9.0",
|
820 |
+
"@babel/helper-plugin-utils": "^7.8.3"
|
821 |
+
}
|
822 |
+
},
|
823 |
+
"@babel/plugin-transform-named-capturing-groups-regex": {
|
824 |
+
"version": "7.8.3",
|
825 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz",
|
826 |
+
"integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==",
|
827 |
+
"dev": true,
|
828 |
+
"requires": {
|
829 |
+
"@babel/helper-create-regexp-features-plugin": "^7.8.3"
|
830 |
+
}
|
831 |
+
},
|
832 |
+
"@babel/plugin-transform-new-target": {
|
833 |
+
"version": "7.8.3",
|
834 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz",
|
835 |
+
"integrity": "sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw==",
|
836 |
+
"dev": true,
|
837 |
+
"requires": {
|
838 |
+
"@babel/helper-plugin-utils": "^7.8.3"
|
839 |
+
}
|
840 |
+
},
|
841 |
+
"@babel/plugin-transform-object-super": {
|
842 |
+
"version": "7.8.3",
|
843 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz",
|
844 |
+
"integrity": "sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ==",
|
845 |
+
"dev": true,
|
846 |
+
"requires": {
|
847 |
+
"@babel/helper-plugin-utils": "^7.8.3",
|
848 |
+
"@babel/helper-replace-supers": "^7.8.3"
|
849 |
+
}
|
850 |
+
},
|
851 |
+
"@babel/plugin-transform-parameters": {
|
852 |
+
"version": "7.9.3",
|
853 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.3.tgz",
|
854 |
+
"integrity": "sha512-fzrQFQhp7mIhOzmOtPiKffvCYQSK10NR8t6BBz2yPbeUHb9OLW8RZGtgDRBn8z2hGcwvKDL3vC7ojPTLNxmqEg==",
|
855 |
+
"dev": true,
|
856 |
+
"requires": {
|
857 |
+
"@babel/helper-get-function-arity": "^7.8.3",
|
858 |
+
"@babel/helper-plugin-utils": "^7.8.3"
|
859 |
+
}
|
860 |
+
},
|
861 |
+
"@babel/plugin-transform-property-literals": {
|
862 |
+
"version": "7.8.3",
|
863 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz",
|
864 |
+
"integrity": "sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg==",
|
865 |
+
"dev": true,
|
866 |
+
"requires": {
|
867 |
+
"@babel/helper-plugin-utils": "^7.8.3"
|
868 |
+
}
|
869 |
+
},
|
870 |
+
"@babel/plugin-transform-react-display-name": {
|
871 |
+
"version": "7.8.3",
|
872 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz",
|
873 |
+
"integrity": "sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A==",
|
874 |
+
"dev": true,
|
875 |
+
"requires": {
|
876 |
+
"@babel/helper-plugin-utils": "^7.8.3"
|
877 |
+
}
|
878 |
+
},
|
879 |
+
"@babel/plugin-transform-react-jsx": {
|
880 |
+
"version": "7.9.4",
|
881 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.9.4.tgz",
|
882 |
+
"integrity": "sha512-Mjqf3pZBNLt854CK0C/kRuXAnE6H/bo7xYojP+WGtX8glDGSibcwnsWwhwoSuRg0+EBnxPC1ouVnuetUIlPSAw==",
|
883 |
+
"dev": true,
|
884 |
+
"requires": {
|
885 |
+
"@babel/helper-builder-react-jsx": "^7.9.0",
|
886 |
+
"@babel/helper-builder-react-jsx-experimental": "^7.9.0",
|
887 |
+
"@babel/helper-plugin-utils": "^7.8.3",
|
888 |
+
"@babel/plugin-syntax-jsx": "^7.8.3"
|
889 |
+
}
|
890 |
+
},
|
891 |
+
"@babel/plugin-transform-react-jsx-development": {
|
892 |
+
"version": "7.9.0",
|
893 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.9.0.tgz",
|
894 |
+
"integrity": "sha512-tK8hWKrQncVvrhvtOiPpKrQjfNX3DtkNLSX4ObuGcpS9p0QrGetKmlySIGR07y48Zft8WVgPakqd/bk46JrMSw==",
|
895 |
+
"dev": true,
|
896 |
+
"requires": {
|
897 |
+
"@babel/helper-builder-react-jsx-experimental": "^7.9.0",
|
898 |
+
"@babel/helper-plugin-utils": "^7.8.3",
|
899 |
+
"@babel/plugin-syntax-jsx": "^7.8.3"
|
900 |
+
}
|
901 |
+
},
|
902 |
+
"@babel/plugin-transform-react-jsx-self": {
|
903 |
+
"version": "7.9.0",
|
904 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.9.0.tgz",
|
905 |
+
"integrity": "sha512-K2ObbWPKT7KUTAoyjCsFilOkEgMvFG+y0FqOl6Lezd0/13kMkkjHskVsZvblRPj1PHA44PrToaZANrryppzTvQ==",
|
906 |
+
"dev": true,
|
907 |
+
"requires": {
|
908 |
+
"@babel/helper-plugin-utils": "^7.8.3",
|
909 |
+
"@babel/plugin-syntax-jsx": "^7.8.3"
|
910 |
+
}
|
911 |
+
},
|
912 |
+
"@babel/plugin-transform-react-jsx-source": {
|
913 |
+
"version": "7.9.0",
|
914 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.9.0.tgz",
|
915 |
+
"integrity": "sha512-K6m3LlSnTSfRkM6FcRk8saNEeaeyG5k7AVkBU2bZK3+1zdkSED3qNdsWrUgQBeTVD2Tp3VMmerxVO2yM5iITmw==",
|
916 |
+
"dev": true,
|
917 |
+
"requires": {
|
918 |
+
"@babel/helper-plugin-utils": "^7.8.3",
|
919 |
+
"@babel/plugin-syntax-jsx": "^7.8.3"
|
920 |
+
}
|
921 |
+
},
|
922 |
+
"@babel/plugin-transform-regenerator": {
|
923 |
+
"version": "7.8.7",
|
924 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz",
|
925 |
+
"integrity": "sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA==",
|
926 |
+
"dev": true,
|
927 |
+
"requires": {
|
928 |
+
"regenerator-transform": "^0.14.2"
|
929 |
+
}
|
930 |
+
},
|
931 |
+
"@babel/plugin-transform-reserved-words": {
|
932 |
+
"version": "7.8.3",
|
933 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz",
|
934 |
+
"integrity": "sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A==",
|
935 |
+
"dev": true,
|
936 |
+
"requires": {
|
937 |
+
"@babel/helper-plugin-utils": "^7.8.3"
|
938 |
+
}
|
939 |
+
},
|
940 |
+
"@babel/plugin-transform-shorthand-properties": {
|
941 |
+
"version": "7.8.3",
|
942 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz",
|
943 |
+
"integrity": "sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w==",
|
944 |
+
"dev": true,
|
945 |
+
"requires": {
|
946 |
+
"@babel/helper-plugin-utils": "^7.8.3"
|
947 |
+
}
|
948 |
+
},
|
949 |
+
"@babel/plugin-transform-spread": {
|
950 |
+
"version": "7.8.3",
|
951 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz",
|
952 |
+
"integrity": "sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g==",
|
953 |
+
"dev": true,
|
954 |
+
"requires": {
|
955 |
+
"@babel/helper-plugin-utils": "^7.8.3"
|
956 |
+
}
|
957 |
+
},
|
958 |
+
"@babel/plugin-transform-sticky-regex": {
|
959 |
+
"version": "7.8.3",
|
960 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz",
|
961 |
+
"integrity": "sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw==",
|
962 |
+
"dev": true,
|
963 |
+
"requires": {
|
964 |
+
"@babel/helper-plugin-utils": "^7.8.3",
|
965 |
+
"@babel/helper-regex": "^7.8.3"
|
966 |
+
}
|
967 |
+
},
|
968 |
+
"@babel/plugin-transform-template-literals": {
|
969 |
+
"version": "7.8.3",
|
970 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz",
|
971 |
+
"integrity": "sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ==",
|
972 |
+
"dev": true,
|
973 |
+
"requires": {
|
974 |
+
"@babel/helper-annotate-as-pure": "^7.8.3",
|
975 |
+
"@babel/helper-plugin-utils": "^7.8.3"
|
976 |
+
}
|
977 |
+
},
|
978 |
+
"@babel/plugin-transform-typeof-symbol": {
|
979 |
+
"version": "7.8.4",
|
980 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz",
|
981 |
+
"integrity": "sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg==",
|
982 |
+
"dev": true,
|
983 |
+
"requires": {
|
984 |
+
"@babel/helper-plugin-utils": "^7.8.3"
|
985 |
+
}
|
986 |
+
},
|
987 |
+
"@babel/plugin-transform-unicode-regex": {
|
988 |
+
"version": "7.8.3",
|
989 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz",
|
990 |
+
"integrity": "sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw==",
|
991 |
+
"dev": true,
|
992 |
+
"requires": {
|
993 |
+
"@babel/helper-create-regexp-features-plugin": "^7.8.3",
|
994 |
+
"@babel/helper-plugin-utils": "^7.8.3"
|
995 |
+
}
|
996 |
+
},
|
997 |
+
"@babel/preset-env": {
|
998 |
+
"version": "7.9.0",
|
999 |
+
"resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.0.tgz",
|
1000 |
+
"integrity": "sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ==",
|
1001 |
+
"dev": true,
|
1002 |
+
"requires": {
|
1003 |
+
"@babel/compat-data": "^7.9.0",
|
1004 |
+
"@babel/helper-compilation-targets": "^7.8.7",
|
1005 |
+
"@babel/helper-module-imports": "^7.8.3",
|
1006 |
+
"@babel/helper-plugin-utils": "^7.8.3",
|
1007 |
+
"@babel/plugin-proposal-async-generator-functions": "^7.8.3",
|
1008 |
+
"@babel/plugin-proposal-dynamic-import": "^7.8.3",
|
1009 |
+
"@babel/plugin-proposal-json-strings": "^7.8.3",
|
1010 |
+
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3",
|
1011 |
+
"@babel/plugin-proposal-numeric-separator": "^7.8.3",
|
1012 |
+
"@babel/plugin-proposal-object-rest-spread": "^7.9.0",
|
1013 |
+
"@babel/plugin-proposal-optional-catch-binding": "^7.8.3",
|
1014 |
+
"@babel/plugin-proposal-optional-chaining": "^7.9.0",
|
1015 |
+
"@babel/plugin-proposal-unicode-property-regex": "^7.8.3",
|
1016 |
+
"@babel/plugin-syntax-async-generators": "^7.8.0",
|
1017 |
+
"@babel/plugin-syntax-dynamic-import": "^7.8.0",
|
1018 |
+
"@babel/plugin-syntax-json-strings": "^7.8.0",
|
1019 |
+
"@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0",
|
1020 |
+
"@babel/plugin-syntax-numeric-separator": "^7.8.0",
|
1021 |
+
"@babel/plugin-syntax-object-rest-spread": "^7.8.0",
|
1022 |
+
"@babel/plugin-syntax-optional-catch-binding": "^7.8.0",
|
1023 |
+
"@babel/plugin-syntax-optional-chaining": "^7.8.0",
|
1024 |
+
"@babel/plugin-syntax-top-level-await": "^7.8.3",
|
1025 |
+
"@babel/plugin-transform-arrow-functions": "^7.8.3",
|
1026 |
+
"@babel/plugin-transform-async-to-generator": "^7.8.3",
|
1027 |
+
"@babel/plugin-transform-block-scoped-functions": "^7.8.3",
|
1028 |
+
"@babel/plugin-transform-block-scoping": "^7.8.3",
|
1029 |
+
"@babel/plugin-transform-classes": "^7.9.0",
|
1030 |
+
"@babel/plugin-transform-computed-properties": "^7.8.3",
|
1031 |
+
"@babel/plugin-transform-destructuring": "^7.8.3",
|
1032 |
+
"@babel/plugin-transform-dotall-regex": "^7.8.3",
|
1033 |
+
"@babel/plugin-transform-duplicate-keys": "^7.8.3",
|
1034 |
+
"@babel/plugin-transform-exponentiation-operator": "^7.8.3",
|
1035 |
+
"@babel/plugin-transform-for-of": "^7.9.0",
|
1036 |
+
"@babel/plugin-transform-function-name": "^7.8.3",
|
1037 |
+
"@babel/plugin-transform-literals": "^7.8.3",
|
1038 |
+
"@babel/plugin-transform-member-expression-literals": "^7.8.3",
|
1039 |
+
"@babel/plugin-transform-modules-amd": "^7.9.0",
|
1040 |
+
"@babel/plugin-transform-modules-commonjs": "^7.9.0",
|
1041 |
+
"@babel/plugin-transform-modules-systemjs": "^7.9.0",
|
1042 |
+
"@babel/plugin-transform-modules-umd": "^7.9.0",
|
1043 |
+
"@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3",
|
1044 |
+
"@babel/plugin-transform-new-target": "^7.8.3",
|
1045 |
+
"@babel/plugin-transform-object-super": "^7.8.3",
|
1046 |
+
"@babel/plugin-transform-parameters": "^7.8.7",
|
1047 |
+
"@babel/plugin-transform-property-literals": "^7.8.3",
|
1048 |
+
"@babel/plugin-transform-regenerator": "^7.8.7",
|
1049 |
+
"@babel/plugin-transform-reserved-words": "^7.8.3",
|
1050 |
+
"@babel/plugin-transform-shorthand-properties": "^7.8.3",
|
1051 |
+
"@babel/plugin-transform-spread": "^7.8.3",
|
1052 |
+
"@babel/plugin-transform-sticky-regex": "^7.8.3",
|
1053 |
+
"@babel/plugin-transform-template-literals": "^7.8.3",
|
1054 |
+
"@babel/plugin-transform-typeof-symbol": "^7.8.4",
|
1055 |
+
"@babel/plugin-transform-unicode-regex": "^7.8.3",
|
1056 |
+
"@babel/preset-modules": "^0.1.3",
|
1057 |
+
"@babel/types": "^7.9.0",
|
1058 |
+
"browserslist": "^4.9.1",
|
1059 |
+
"core-js-compat": "^3.6.2",
|
1060 |
+
"invariant": "^2.2.2",
|
1061 |
+
"levenary": "^1.1.1",
|
1062 |
+
"semver": "^5.5.0"
|
1063 |
+
},
|
1064 |
+
"dependencies": {
|
1065 |
+
"@babel/types": {
|
1066 |
+
"version": "7.9.0",
|
1067 |
+
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.0.tgz",
|
1068 |
+
"integrity": "sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng==",
|
1069 |
+
"dev": true,
|
1070 |
+
"requires": {
|
1071 |
+
"@babel/helper-validator-identifier": "^7.9.0",
|
1072 |
+
"lodash": "^4.17.13",
|
1073 |
+
"to-fast-properties": "^2.0.0"
|
1074 |
+
}
|
1075 |
+
}
|
1076 |
+
}
|
1077 |
+
},
|
1078 |
+
"@babel/preset-modules": {
|
1079 |
+
"version": "0.1.3",
|
1080 |
+
"resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz",
|
1081 |
+
"integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==",
|
1082 |
+
"dev": true,
|
1083 |
+
"requires": {
|
1084 |
+
"@babel/helper-plugin-utils": "^7.0.0",
|
1085 |
+
"@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
|
1086 |
+
"@babel/plugin-transform-dotall-regex": "^7.4.4",
|
1087 |
+
"@babel/types": "^7.4.4",
|
1088 |
+
"esutils": "^2.0.2"
|
1089 |
+
}
|
1090 |
+
},
|
1091 |
+
"@babel/preset-react": {
|
1092 |
+
"version": "7.9.4",
|
1093 |
+
"resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.9.4.tgz",
|
1094 |
+
"integrity": "sha512-AxylVB3FXeOTQXNXyiuAQJSvss62FEotbX2Pzx3K/7c+MKJMdSg6Ose6QYllkdCFA8EInCJVw7M/o5QbLuA4ZQ==",
|
1095 |
+
"dev": true,
|
1096 |
+
"requires": {
|
1097 |
+
"@babel/helper-plugin-utils": "^7.8.3",
|
1098 |
+
"@babel/plugin-transform-react-display-name": "^7.8.3",
|
1099 |
+
"@babel/plugin-transform-react-jsx": "^7.9.4",
|
1100 |
+
"@babel/plugin-transform-react-jsx-development": "^7.9.0",
|
1101 |
+
"@babel/plugin-transform-react-jsx-self": "^7.9.0",
|
1102 |
+
"@babel/plugin-transform-react-jsx-source": "^7.9.0"
|
1103 |
+
}
|
1104 |
+
},
|
1105 |
+
"@babel/runtime": {
|
1106 |
+
"version": "7.9.2",
|
1107 |
+
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.2.tgz",
|
1108 |
+
"integrity": "sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==",
|
1109 |
+
"requires": {
|
1110 |
+
"regenerator-runtime": "^0.13.4"
|
1111 |
+
}
|
1112 |
+
},
|
1113 |
+
"@babel/runtime-corejs3": {
|
1114 |
+
"version": "7.8.7",
|
1115 |
+
"resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.8.7.tgz",
|
1116 |
+
"integrity": "sha512-sc7A+H4I8kTd7S61dgB9RomXu/C+F4IrRr4Ytze4dnfx7AXEpCrejSNpjx7vq6y/Bak9S6Kbk65a/WgMLtg43Q==",
|
1117 |
+
"dev": true,
|
1118 |
+
"requires": {
|
1119 |
+
"core-js-pure": "^3.0.0",
|
1120 |
+
"regenerator-runtime": "^0.13.4"
|
1121 |
+
}
|
1122 |
+
},
|
1123 |
+
"@babel/template": {
|
1124 |
+
"version": "7.8.6",
|
1125 |
+
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz",
|
1126 |
+
"integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==",
|
1127 |
+
"dev": true,
|
1128 |
+
"requires": {
|
1129 |
+
"@babel/code-frame": "^7.8.3",
|
1130 |
+
"@babel/parser": "^7.8.6",
|
1131 |
+
"@babel/types": "^7.8.6"
|
1132 |
+
}
|
1133 |
+
},
|
1134 |
+
"@babel/traverse": {
|
1135 |
+
"version": "7.8.6",
|
1136 |
+
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.8.6.tgz",
|
1137 |
+
"integrity": "sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A==",
|
1138 |
+
"dev": true,
|
1139 |
+
"requires": {
|
1140 |
+
"@babel/code-frame": "^7.8.3",
|
1141 |
+
"@babel/generator": "^7.8.6",
|
1142 |
+
"@babel/helper-function-name": "^7.8.3",
|
1143 |
+
"@babel/helper-split-export-declaration": "^7.8.3",
|
1144 |
+
"@babel/parser": "^7.8.6",
|
1145 |
+
"@babel/types": "^7.8.6",
|
1146 |
+
"debug": "^4.1.0",
|
1147 |
+
"globals": "^11.1.0",
|
1148 |
+
"lodash": "^4.17.13"
|
1149 |
+
}
|
1150 |
+
},
|
1151 |
+
"@babel/types": {
|
1152 |
+
"version": "7.8.7",
|
1153 |
+
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.8.7.tgz",
|
1154 |
+
"integrity": "sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw==",
|
1155 |
+
"dev": true,
|
1156 |
+
"requires": {
|
1157 |
+
"esutils": "^2.0.2",
|
1158 |
+
"lodash": "^4.17.13",
|
1159 |
+
"to-fast-properties": "^2.0.0"
|
1160 |
+
}
|
1161 |
+
},
|
1162 |
+
"@tannin/compile": {
|
1163 |
+
"version": "1.1.0",
|
1164 |
+
"resolved": "https://registry.npmjs.org/@tannin/compile/-/compile-1.1.0.tgz",
|
1165 |
+
"integrity": "sha512-n8m9eNDfoNZoxdvWiTfW/hSPhehzLJ3zW7f8E7oT6mCROoMNWCB4TYtv041+2FMAxweiE0j7i1jubQU4MEC/Gg==",
|
1166 |
+
"requires": {
|
1167 |
+
"@tannin/evaluate": "^1.2.0",
|
1168 |
+
"@tannin/postfix": "^1.1.0"
|
1169 |
+
}
|
1170 |
+
},
|
1171 |
+
"@tannin/evaluate": {
|
1172 |
+
"version": "1.2.0",
|
1173 |
+
"resolved": "https://registry.npmjs.org/@tannin/evaluate/-/evaluate-1.2.0.tgz",
|
1174 |
+
"integrity": "sha512-3ioXvNowbO/wSrxsDG5DKIMxC81P0QrQTYai8zFNY+umuoHWRPbQ/TuuDEOju9E+jQDXmj6yI5GyejNuh8I+eg=="
|
1175 |
+
},
|
1176 |
+
"@tannin/plural-forms": {
|
1177 |
+
"version": "1.1.0",
|
1178 |
+
"resolved": "https://registry.npmjs.org/@tannin/plural-forms/-/plural-forms-1.1.0.tgz",
|
1179 |
+
"integrity": "sha512-xl9R2mDZO/qiHam1AgMnAES6IKIg7OBhcXqy6eDsRCdXuxAFPcjrej9HMjyCLE0DJ/8cHf0i5OQTstuBRhpbHw==",
|
1180 |
+
"requires": {
|
1181 |
+
"@tannin/compile": "^1.1.0"
|
1182 |
+
}
|
1183 |
+
},
|
1184 |
+
"@tannin/postfix": {
|
1185 |
+
"version": "1.1.0",
|
1186 |
+
"resolved": "https://registry.npmjs.org/@tannin/postfix/-/postfix-1.1.0.tgz",
|
1187 |
+
"integrity": "sha512-oocsqY7g0cR+Gur5jRQLSrX2OtpMLMse1I10JQBm8CdGMrDkh1Mg2gjsiquMHRtBs4Qwu5wgEp5GgIYHk4SNPw=="
|
1188 |
+
},
|
1189 |
+
"@types/color-name": {
|
1190 |
+
"version": "1.1.1",
|
1191 |
+
"resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
|
1192 |
+
"integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==",
|
1193 |
+
"dev": true
|
1194 |
+
},
|
1195 |
+
"@webassemblyjs/ast": {
|
1196 |
+
"version": "1.9.0",
|
1197 |
+
"resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz",
|
1198 |
+
"integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==",
|
1199 |
+
"dev": true,
|
1200 |
+
"requires": {
|
1201 |
+
"@webassemblyjs/helper-module-context": "1.9.0",
|
1202 |
+
"@webassemblyjs/helper-wasm-bytecode": "1.9.0",
|
1203 |
+
"@webassemblyjs/wast-parser": "1.9.0"
|
1204 |
+
}
|
1205 |
+
},
|
1206 |
+
"@webassemblyjs/floating-point-hex-parser": {
|
1207 |
+
"version": "1.9.0",
|
1208 |
+
"resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz",
|
1209 |
+
"integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==",
|
1210 |
+
"dev": true
|
1211 |
+
},
|
1212 |
+
"@webassemblyjs/helper-api-error": {
|
1213 |
+
"version": "1.9.0",
|
1214 |
+
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz",
|
1215 |
+
"integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==",
|
1216 |
+
"dev": true
|
1217 |
+
},
|
1218 |
+
"@webassemblyjs/helper-buffer": {
|
1219 |
+
"version": "1.9.0",
|
1220 |
+
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz",
|
1221 |
+
"integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==",
|
1222 |
+
"dev": true
|
1223 |
+
},
|
1224 |
+
"@webassemblyjs/helper-code-frame": {
|
1225 |
+
"version": "1.9.0",
|
1226 |
+
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz",
|
1227 |
+
"integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==",
|
1228 |
+
"dev": true,
|
1229 |
+
"requires": {
|
1230 |
+
"@webassemblyjs/wast-printer": "1.9.0"
|
1231 |
+
}
|
1232 |
+
},
|
1233 |
+
"@webassemblyjs/helper-fsm": {
|
1234 |
+
"version": "1.9.0",
|
1235 |
+
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz",
|
1236 |
+
"integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==",
|
1237 |
+
"dev": true
|
1238 |
+
},
|
1239 |
+
"@webassemblyjs/helper-module-context": {
|
1240 |
+
"version": "1.9.0",
|
1241 |
+
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz",
|
1242 |
+
"integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==",
|
1243 |
+
"dev": true,
|
1244 |
+
"requires": {
|
1245 |
+
"@webassemblyjs/ast": "1.9.0"
|
1246 |
+
}
|
1247 |
+
},
|
1248 |
+
"@webassemblyjs/helper-wasm-bytecode": {
|
1249 |
+
"version": "1.9.0",
|
1250 |
+
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz",
|
1251 |
+
"integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==",
|
1252 |
+
"dev": true
|
1253 |
+
},
|
1254 |
+
"@webassemblyjs/helper-wasm-section": {
|
1255 |
+
"version": "1.9.0",
|
1256 |
+
"resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz",
|
1257 |
+
"integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==",
|
1258 |
+
"dev": true,
|
1259 |
+
"requires": {
|
1260 |
+
"@webassemblyjs/ast": "1.9.0",
|
1261 |
+
"@webassemblyjs/helper-buffer": "1.9.0",
|
1262 |
+
"@webassemblyjs/helper-wasm-bytecode": "1.9.0",
|
1263 |
+
"@webassemblyjs/wasm-gen": "1.9.0"
|
1264 |
+
}
|
1265 |
+
},
|
1266 |
+
"@webassemblyjs/ieee754": {
|
1267 |
+
"version": "1.9.0",
|
1268 |
+
"resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz",
|
1269 |
+
"integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==",
|
1270 |
+
"dev": true,
|
1271 |
+
"requires": {
|
1272 |
+
"@xtuc/ieee754": "^1.2.0"
|
1273 |
+
}
|
1274 |
+
},
|
1275 |
+
"@webassemblyjs/leb128": {
|
1276 |
+
"version": "1.9.0",
|
1277 |
+
"resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz",
|
1278 |
+
"integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==",
|
1279 |
+
"dev": true,
|
1280 |
+
"requires": {
|
1281 |
+
"@xtuc/long": "4.2.2"
|
1282 |
+
}
|
1283 |
+
},
|
1284 |
+
"@webassemblyjs/utf8": {
|
1285 |
+
"version": "1.9.0",
|
1286 |
+
"resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz",
|
1287 |
+
"integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==",
|
1288 |
+
"dev": true
|
1289 |
+
},
|
1290 |
+
"@webassemblyjs/wasm-edit": {
|
1291 |
+
"version": "1.9.0",
|
1292 |
+
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz",
|
1293 |
+
"integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==",
|
1294 |
+
"dev": true,
|
1295 |
+
"requires": {
|
1296 |
+
"@webassemblyjs/ast": "1.9.0",
|
1297 |
+
"@webassemblyjs/helper-buffer": "1.9.0",
|
1298 |
+
"@webassemblyjs/helper-wasm-bytecode": "1.9.0",
|
1299 |
+
"@webassemblyjs/helper-wasm-section": "1.9.0",
|
1300 |
+
"@webassemblyjs/wasm-gen": "1.9.0",
|
1301 |
+
"@webassemblyjs/wasm-opt": "1.9.0",
|
1302 |
+
"@webassemblyjs/wasm-parser": "1.9.0",
|
1303 |
+
"@webassemblyjs/wast-printer": "1.9.0"
|
1304 |
+
}
|
1305 |
+
},
|
1306 |
+
"@webassemblyjs/wasm-gen": {
|
1307 |
+
"version": "1.9.0",
|
1308 |
+
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz",
|
1309 |
+
"integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==",
|
1310 |
+
"dev": true,
|
1311 |
+
"requires": {
|
1312 |
+
"@webassemblyjs/ast": "1.9.0",
|
1313 |
+
"@webassemblyjs/helper-wasm-bytecode": "1.9.0",
|
1314 |
+
"@webassemblyjs/ieee754": "1.9.0",
|
1315 |
+
"@webassemblyjs/leb128": "1.9.0",
|
1316 |
+
"@webassemblyjs/utf8": "1.9.0"
|
1317 |
+
}
|
1318 |
+
},
|
1319 |
+
"@webassemblyjs/wasm-opt": {
|
1320 |
+
"version": "1.9.0",
|
1321 |
+
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz",
|
1322 |
+
"integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==",
|
1323 |
+
"dev": true,
|
1324 |
+
"requires": {
|
1325 |
+
"@webassemblyjs/ast": "1.9.0",
|
1326 |
+
"@webassemblyjs/helper-buffer": "1.9.0",
|
1327 |
+
"@webassemblyjs/wasm-gen": "1.9.0",
|
1328 |
+
"@webassemblyjs/wasm-parser": "1.9.0"
|
1329 |
+
}
|
1330 |
+
},
|
1331 |
+
"@webassemblyjs/wasm-parser": {
|
1332 |
+
"version": "1.9.0",
|
1333 |
+
"resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz",
|
1334 |
+
"integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==",
|
1335 |
+
"dev": true,
|
1336 |
+
"requires": {
|
1337 |
+
"@webassemblyjs/ast": "1.9.0",
|
1338 |
+
"@webassemblyjs/helper-api-error": "1.9.0",
|
1339 |
+
"@webassemblyjs/helper-wasm-bytecode": "1.9.0",
|
1340 |
+
"@webassemblyjs/ieee754": "1.9.0",
|
1341 |
+
"@webassemblyjs/leb128": "1.9.0",
|
1342 |
+
"@webassemblyjs/utf8": "1.9.0"
|
1343 |
+
}
|
1344 |
+
},
|
1345 |
+
"@webassemblyjs/wast-parser": {
|
1346 |
+
"version": "1.9.0",
|
1347 |
+
"resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz",
|
1348 |
+
"integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==",
|
1349 |
+
"dev": true,
|
1350 |
+
"requires": {
|
1351 |
+
"@webassemblyjs/ast": "1.9.0",
|
1352 |
+
"@webassemblyjs/floating-point-hex-parser": "1.9.0",
|
1353 |
+
"@webassemblyjs/helper-api-error": "1.9.0",
|
1354 |
+
"@webassemblyjs/helper-code-frame": "1.9.0",
|
1355 |
+
"@webassemblyjs/helper-fsm": "1.9.0",
|
1356 |
+
"@xtuc/long": "4.2.2"
|
1357 |
+
}
|
1358 |
+
},
|
1359 |
+
"@webassemblyjs/wast-printer": {
|
1360 |
+
"version": "1.9.0",
|
1361 |
+
"resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz",
|
1362 |
+
"integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==",
|
1363 |
+
"dev": true,
|
1364 |
+
"requires": {
|
1365 |
+
"@webassemblyjs/ast": "1.9.0",
|
1366 |
+
"@webassemblyjs/wast-parser": "1.9.0",
|
1367 |
+
"@xtuc/long": "4.2.2"
|
1368 |
+
}
|
1369 |
+
},
|
1370 |
+
"@wordpress/i18n": {
|
1371 |
+
"version": "3.10.0",
|
1372 |
+
"resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-3.10.0.tgz",
|
1373 |
+
"integrity": "sha512-f1+ITy2ImcfV6695QTNnlLxs5oHNXslbqVtJuK4Ug9r6nPPt2EwnKkK+rhdDgaRLeWrF9C1vwBxJCOOU2B1aKw==",
|
1374 |
+
"requires": {
|
1375 |
+
"@babel/runtime": "^7.8.3",
|
1376 |
+
"gettext-parser": "^1.3.1",
|
1377 |
+
"lodash": "^4.17.15",
|
1378 |
+
"memize": "^1.0.5",
|
1379 |
+
"sprintf-js": "^1.1.1",
|
1380 |
+
"tannin": "^1.1.0"
|
1381 |
+
},
|
1382 |
+
"dependencies": {
|
1383 |
+
"sprintf-js": {
|
1384 |
+
"version": "1.1.2",
|
1385 |
+
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
|
1386 |
+
"integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug=="
|
1387 |
+
}
|
1388 |
+
}
|
1389 |
+
},
|
1390 |
+
"@xtuc/ieee754": {
|
1391 |
+
"version": "1.2.0",
|
1392 |
+
"resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
|
1393 |
+
"integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
|
1394 |
+
"dev": true
|
1395 |
+
},
|
1396 |
+
"@xtuc/long": {
|
1397 |
+
"version": "4.2.2",
|
1398 |
+
"resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
|
1399 |
+
"integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
|
1400 |
+
"dev": true
|
1401 |
+
},
|
1402 |
+
"acorn": {
|
1403 |
+
"version": "7.1.1",
|
1404 |
+
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz",
|
1405 |
+
"integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==",
|
1406 |
+
"dev": true
|
1407 |
+
},
|
1408 |
+
"acorn-jsx": {
|
1409 |
+
"version": "5.2.0",
|
1410 |
+
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz",
|
1411 |
+
"integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==",
|
1412 |
+
"dev": true
|
1413 |
+
},
|
1414 |
+
"ajv": {
|
1415 |
+
"version": "6.12.0",
|
1416 |
+
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz",
|
1417 |
+
"integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==",
|
1418 |
+
"dev": true,
|
1419 |
+
"requires": {
|
1420 |
+
"fast-deep-equal": "^3.1.1",
|
1421 |
+
"fast-json-stable-stringify": "^2.0.0",
|
1422 |
+
"json-schema-traverse": "^0.4.1",
|
1423 |
+
"uri-js": "^4.2.2"
|
1424 |
+
}
|
1425 |
+
},
|
1426 |
+
"ajv-errors": {
|
1427 |
+
"version": "1.0.1",
|
1428 |
+
"resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
|
1429 |
+
"integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
|
1430 |
+
"dev": true
|
1431 |
+
},
|
1432 |
+
"ajv-keywords": {
|
1433 |
+
"version": "3.4.1",
|
1434 |
+
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz",
|
1435 |
+
"integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==",
|
1436 |
+
"dev": true
|
1437 |
+
},
|
1438 |
+
"ansi-escapes": {
|
1439 |
+
"version": "4.3.1",
|
1440 |
+
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz",
|
1441 |
+
"integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==",
|
1442 |
+
"dev": true,
|
1443 |
+
"requires": {
|
1444 |
+
"type-fest": "^0.11.0"
|
1445 |
+
},
|
1446 |
+
"dependencies": {
|
1447 |
+
"type-fest": {
|
1448 |
+
"version": "0.11.0",
|
1449 |
+
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz",
|
1450 |
+
"integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==",
|
1451 |
+
"dev": true
|
1452 |
+
}
|
1453 |
+
}
|
1454 |
+
},
|
1455 |
+
"ansi-regex": {
|
1456 |
+
"version": "5.0.0",
|
1457 |
+
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
|
1458 |
+
"integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
|
1459 |
+
"dev": true
|
1460 |
+
},
|
1461 |
+
"ansi-styles": {
|
1462 |
+
"version": "3.2.1",
|
1463 |
+
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
1464 |
+
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
|
1465 |
+
"dev": true,
|
1466 |
+
"requires": {
|
1467 |
+
"color-convert": "^1.9.0"
|
1468 |
+
}
|
1469 |
+
},
|
1470 |
+
"anymatch": {
|
1471 |
+
"version": "2.0.0",
|
1472 |
+
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
|
1473 |
+
"integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
|
1474 |
+
"dev": true,
|
1475 |
+
"requires": {
|
1476 |
+
"micromatch": "^3.1.4",
|
1477 |
+
"normalize-path": "^2.1.1"
|
1478 |
+
},
|
1479 |
+
"dependencies": {
|
1480 |
+
"normalize-path": {
|
1481 |
+
"version": "2.1.1",
|
1482 |
+
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
|
1483 |
+
"integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
|
1484 |
+
"dev": true,
|
1485 |
+
"requires": {
|
1486 |
+
"remove-trailing-separator": "^1.0.1"
|
1487 |
+
}
|
1488 |
+
}
|
1489 |
+
}
|
1490 |
+
},
|
1491 |
+
"aproba": {
|
1492 |
+
"version": "1.2.0",
|
1493 |
+
"resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
|
1494 |
+
"integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
|
1495 |
+
"dev": true
|
1496 |
+
},
|
1497 |
+
"argparse": {
|
1498 |
+
"version": "1.0.10",
|
1499 |
+
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
|
1500 |
+
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
|
1501 |
+
"dev": true,
|
1502 |
+
"requires": {
|
1503 |
+
"sprintf-js": "~1.0.2"
|
1504 |
+
}
|
1505 |
+
},
|
1506 |
+
"arr-diff": {
|
1507 |
+
"version": "4.0.0",
|
1508 |
+
"resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
|
1509 |
+
"integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
|
1510 |
+
"dev": true
|
1511 |
+
},
|
1512 |
+
"arr-flatten": {
|
1513 |
+
"version": "1.1.0",
|
1514 |
+
"resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
|
1515 |
+
"integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
|
1516 |
+
"dev": true
|
1517 |
+
},
|
1518 |
+
"arr-union": {
|
1519 |
+
"version": "3.1.0",
|
1520 |
+
"resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
|
1521 |
+
"integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
|
1522 |
+
"dev": true
|
1523 |
+
},
|
1524 |
+
"array-includes": {
|
1525 |
+
"version": "3.1.1",
|
1526 |
+
"resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz",
|
1527 |
+
"integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==",
|
1528 |
+
"dev": true,
|
1529 |
+
"requires": {
|
1530 |
+
"define-properties": "^1.1.3",
|
1531 |
+
"es-abstract": "^1.17.0",
|
1532 |
+
"is-string": "^1.0.5"
|
1533 |
+
}
|
1534 |
+
},
|
1535 |
+
"array-unique": {
|
1536 |
+
"version": "0.3.2",
|
1537 |
+
"resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
|
1538 |
+
"integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
|
1539 |
+
"dev": true
|
1540 |
+
},
|
1541 |
+
"asn1.js": {
|
1542 |
+
"version": "4.10.1",
|
1543 |
+
"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
|
1544 |
+
"integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
|
1545 |
+
"dev": true,
|
1546 |
+
"requires": {
|
1547 |
+
"bn.js": "^4.0.0",
|
1548 |
+
"inherits": "^2.0.1",
|
1549 |
+
"minimalistic-assert": "^1.0.0"
|
1550 |
+
}
|
1551 |
+
},
|
1552 |
+
"assert": {
|
1553 |
+
"version": "1.5.0",
|
1554 |
+
"resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz",
|
1555 |
+
"integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
|
1556 |
+
"dev": true,
|
1557 |
+
"requires": {
|
1558 |
+
"object-assign": "^4.1.1",
|
1559 |
+
"util": "0.10.3"
|
1560 |
+
},
|
1561 |
+
"dependencies": {
|
1562 |
+
"inherits": {
|
1563 |
+
"version": "2.0.1",
|
1564 |
+
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
|
1565 |
+
"integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
|
1566 |
+
"dev": true
|
1567 |
+
},
|
1568 |
+
"util": {
|
1569 |
+
"version": "0.10.3",
|
1570 |
+
"resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
|
1571 |
+
"integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
|
1572 |
+
"dev": true,
|
1573 |
+
"requires": {
|
1574 |
+
"inherits": "2.0.1"
|
1575 |
+
}
|
1576 |
+
}
|
1577 |
+
}
|
1578 |
+
},
|
1579 |
+
"assign-symbols": {
|
1580 |
+
"version": "1.0.0",
|
1581 |
+
"resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
|
1582 |
+
"integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
|
1583 |
+
"dev": true
|
1584 |
+
},
|
1585 |
+
"astral-regex": {
|
1586 |
+
"version": "1.0.0",
|
1587 |
+
"resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
|
1588 |
+
"integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
|
1589 |
+
"dev": true
|
1590 |
+
},
|
1591 |
+
"async-each": {
|
1592 |
+
"version": "1.0.3",
|
1593 |
+
"resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
|
1594 |
+
"integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
|
1595 |
+
"dev": true
|
1596 |
+
},
|
1597 |
+
"at-least-node": {
|
1598 |
+
"version": "1.0.0",
|
1599 |
+
"resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
|
1600 |
+
"integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
|
1601 |
+
"dev": true
|
1602 |
+
},
|
1603 |
+
"atob": {
|
1604 |
+
"version": "2.1.2",
|
1605 |
+
"resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
|
1606 |
+
"integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
|
1607 |
+
"dev": true
|
1608 |
+
},
|
1609 |
+
"babel": {
|
1610 |
+
"version": "6.23.0",
|
1611 |
+
"resolved": "https://registry.npmjs.org/babel/-/babel-6.23.0.tgz",
|
1612 |
+
"integrity": "sha1-0NHn2APpdHZb7qMjLU4VPA77kPQ=",
|
1613 |
+
"dev": true
|
1614 |
+
},
|
1615 |
+
"babel-eslint": {
|
1616 |
+
"version": "10.1.0",
|
1617 |
+
"resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz",
|
1618 |
+
"integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==",
|
1619 |
+
"dev": true,
|
1620 |
+
"requires": {
|
1621 |
+
"@babel/code-frame": "^7.0.0",
|
1622 |
+
"@babel/parser": "^7.7.0",
|
1623 |
+
"@babel/traverse": "^7.7.0",
|
1624 |
+
"@babel/types": "^7.7.0",
|
1625 |
+
"eslint-visitor-keys": "^1.0.0",
|
1626 |
+
"resolve": "^1.12.0"
|
1627 |
+
}
|
1628 |
+
},
|
1629 |
+
"babel-loader": {
|
1630 |
+
"version": "8.1.0",
|
1631 |
+
"resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz",
|
1632 |
+
"integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==",
|
1633 |
+
"dev": true,
|
1634 |
+
"requires": {
|
1635 |
+
"find-cache-dir": "^2.1.0",
|
1636 |
+
"loader-utils": "^1.4.0",
|
1637 |
+
"mkdirp": "^0.5.3",
|
1638 |
+
"pify": "^4.0.1",
|
1639 |
+
"schema-utils": "^2.6.5"
|
1640 |
+
},
|
1641 |
+
"dependencies": {
|
1642 |
+
"minimist": {
|
1643 |
+
"version": "1.2.5",
|
1644 |
+
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
|
1645 |
+
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
|
1646 |
+
"dev": true
|
1647 |
+
},
|
1648 |
+
"mkdirp": {
|
1649 |
+
"version": "0.5.5",
|
1650 |
+
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
|
1651 |
+
"integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
|
1652 |
+
"dev": true,
|
1653 |
+
"requires": {
|
1654 |
+
"minimist": "^1.2.5"
|
1655 |
+
}
|
1656 |
+
}
|
1657 |
+
}
|
1658 |
+
},
|
1659 |
+
"babel-plugin-dynamic-import-node": {
|
1660 |
+
"version": "2.3.0",
|
1661 |
+
"resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz",
|
1662 |
+
"integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==",
|
1663 |
+
"dev": true,
|
1664 |
+
"requires": {
|
1665 |
+
"object.assign": "^4.1.0"
|
1666 |
+
}
|
1667 |
+
},
|
1668 |
+
"balanced-match": {
|
1669 |
+
"version": "1.0.0",
|
1670 |
+
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
1671 |
+
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
|
1672 |
+
"dev": true
|
1673 |
+
},
|
1674 |
+
"base": {
|
1675 |
+
"version": "0.11.2",
|
1676 |
+
"resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
|
1677 |
+
"integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
|
1678 |
+
"dev": true,
|
1679 |
+
"requires": {
|
1680 |
+
"cache-base": "^1.0.1",
|
1681 |
+
"class-utils": "^0.3.5",
|
1682 |
+
"component-emitter": "^1.2.1",
|
1683 |
+
"define-property": "^1.0.0",
|
1684 |
+
"isobject": "^3.0.1",
|
1685 |
+
"mixin-deep": "^1.2.0",
|
1686 |
+
"pascalcase": "^0.1.1"
|
1687 |
+
},
|
1688 |
+
"dependencies": {
|
1689 |
+
"define-property": {
|
1690 |
+
"version": "1.0.0",
|
1691 |
+
"resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
|
1692 |
+
"integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
|
1693 |
+
"dev": true,
|
1694 |
+
"requires": {
|
1695 |
+
"is-descriptor": "^1.0.0"
|
1696 |
+
}
|
1697 |
+
},
|
1698 |
+
"is-accessor-descriptor": {
|
1699 |
+
"version": "1.0.0",
|
1700 |
+
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
|
1701 |
+
"integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
|
1702 |
+
"dev": true,
|
1703 |
+
"requires": {
|
1704 |
+
"kind-of": "^6.0.0"
|
1705 |
+
}
|
1706 |
+
},
|
1707 |
+
"is-data-descriptor": {
|
1708 |
+
"version": "1.0.0",
|
1709 |
+
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
|
1710 |
+
"integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
|
1711 |
+
"dev": true,
|
1712 |
+
"requires": {
|
1713 |
+
"kind-of": "^6.0.0"
|
1714 |
+
}
|
1715 |
+
},
|
1716 |
+
"is-descriptor": {
|
1717 |
+
"version": "1.0.2",
|
1718 |
+
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
|
1719 |
+
"integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
|
1720 |
+
"dev": true,
|
1721 |
+
"requires": {
|
1722 |
+
"is-accessor-descriptor": "^1.0.0",
|
1723 |
+
"is-data-descriptor": "^1.0.0",
|
1724 |
+
"kind-of": "^6.0.2"
|
1725 |
+
}
|
1726 |
+
}
|
1727 |
+
}
|
1728 |
+
},
|
1729 |
+
"base64-js": {
|
1730 |
+
"version": "1.3.1",
|
1731 |
+
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
|
1732 |
+
"integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==",
|
1733 |
+
"dev": true
|
1734 |
+
},
|
1735 |
+
"big.js": {
|
1736 |
+
"version": "5.2.2",
|
1737 |
+
"resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
|
1738 |
+
"integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
|
1739 |
+
"dev": true
|
1740 |
+
},
|
1741 |
+
"binary-extensions": {
|
1742 |
+
"version": "1.13.1",
|
1743 |
+
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
|
1744 |
+
"integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
|
1745 |
+
"dev": true
|
1746 |
+
},
|
1747 |
+
"bindings": {
|
1748 |
+
"version": "1.5.0",
|
1749 |
+
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
|
1750 |
+
"integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
|
1751 |
+
"dev": true,
|
1752 |
+
"optional": true,
|
1753 |
+
"requires": {
|
1754 |
+
"file-uri-to-path": "1.0.0"
|
1755 |
+
}
|
1756 |
+
},
|
1757 |
+
"bluebird": {
|
1758 |
+
"version": "3.7.2",
|
1759 |
+
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
|
1760 |
+
"integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
|
1761 |
+
"dev": true
|
1762 |
+
},
|
1763 |
+
"bn.js": {
|
1764 |
+
"version": "4.11.8",
|
1765 |
+
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
|
1766 |
+
"integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
|
1767 |
+
"dev": true
|
1768 |
+
},
|
1769 |
+
"brace-expansion": {
|
1770 |
+
"version": "1.1.11",
|
1771 |
+
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
1772 |
+
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
1773 |
+
"dev": true,
|
1774 |
+
"requires": {
|
1775 |
+
"balanced-match": "^1.0.0",
|
1776 |
+
"concat-map": "0.0.1"
|
1777 |
+
}
|
1778 |
+
},
|
1779 |
+
"braces": {
|
1780 |
+
"version": "2.3.2",
|
1781 |
+
"resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
|
1782 |
+
"integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
|
1783 |
+
"dev": true,
|
1784 |
+
"requires": {
|
1785 |
+
"arr-flatten": "^1.1.0",
|
1786 |
+
"array-unique": "^0.3.2",
|
1787 |
+
"extend-shallow": "^2.0.1",
|
1788 |
+
"fill-range": "^4.0.0",
|
1789 |
+
"isobject": "^3.0.1",
|
1790 |
+
"repeat-element": "^1.1.2",
|
1791 |
+
"snapdragon": "^0.8.1",
|
1792 |
+
"snapdragon-node": "^2.0.1",
|
1793 |
+
"split-string": "^3.0.2",
|
1794 |
+
"to-regex": "^3.0.1"
|
1795 |
+
},
|
1796 |
+
"dependencies": {
|
1797 |
+
"extend-shallow": {
|
1798 |
+
"version": "2.0.1",
|
1799 |
+
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
|
1800 |
+
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
|
1801 |
+
"dev": true,
|
1802 |
+
"requires": {
|
1803 |
+
"is-extendable": "^0.1.0"
|
1804 |
+
}
|
1805 |
+
}
|
1806 |
+
}
|
1807 |
+
},
|
1808 |
+
"brorand": {
|
1809 |
+
"version": "1.1.0",
|
1810 |
+
"resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
|
1811 |
+
"integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
|
1812 |
+
"dev": true
|
1813 |
+
},
|
1814 |
+
"browserify-aes": {
|
1815 |
+
"version": "1.2.0",
|
1816 |
+
"resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
|
1817 |
+
"integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
|
1818 |
+
"dev": true,
|
1819 |
+
"requires": {
|
1820 |
+
"buffer-xor": "^1.0.3",
|
1821 |
+
"cipher-base": "^1.0.0",
|
1822 |
+
"create-hash": "^1.1.0",
|
1823 |
+
"evp_bytestokey": "^1.0.3",
|
1824 |
+
"inherits": "^2.0.1",
|
1825 |
+
"safe-buffer": "^5.0.1"
|
1826 |
+
}
|
1827 |
+
},
|
1828 |
+
"browserify-cipher": {
|
1829 |
+
"version": "1.0.1",
|
1830 |
+
"resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
|
1831 |
+
"integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
|
1832 |
+
"dev": true,
|
1833 |
+
"requires": {
|
1834 |
+
"browserify-aes": "^1.0.4",
|
1835 |
+
"browserify-des": "^1.0.0",
|
1836 |
+
"evp_bytestokey": "^1.0.0"
|
1837 |
+
}
|
1838 |
+
},
|
1839 |
+
"browserify-des": {
|
1840 |
+
"version": "1.0.2",
|
1841 |
+
"resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
|
1842 |
+
"integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
|
1843 |
+
"dev": true,
|
1844 |
+
"requires": {
|
1845 |
+
"cipher-base": "^1.0.1",
|
1846 |
+
"des.js": "^1.0.0",
|
1847 |
+
"inherits": "^2.0.1",
|
1848 |
+
"safe-buffer": "^5.1.2"
|
1849 |
+
}
|
1850 |
+
},
|
1851 |
+
"browserify-rsa": {
|
1852 |
+
"version": "4.0.1",
|
1853 |
+
"resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
|
1854 |
+
"integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
|
1855 |
+
"dev": true,
|
1856 |
+
"requires": {
|
1857 |
+
"bn.js": "^4.1.0",
|
1858 |
+
"randombytes": "^2.0.1"
|
1859 |
+
}
|
1860 |
+
},
|
1861 |
+
"browserify-sign": {
|
1862 |
+
"version": "4.0.4",
|
1863 |
+
"resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
|
1864 |
+
"integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
|
1865 |
+
"dev": true,
|
1866 |
+
"requires": {
|
1867 |
+
"bn.js": "^4.1.1",
|
1868 |
+
"browserify-rsa": "^4.0.0",
|
1869 |
+
"create-hash": "^1.1.0",
|
1870 |
+
"create-hmac": "^1.1.2",
|
1871 |
+
"elliptic": "^6.0.0",
|
1872 |
+
"inherits": "^2.0.1",
|
1873 |
+
"parse-asn1": "^5.0.0"
|
1874 |
+
}
|
1875 |
+
},
|
1876 |
+
"browserify-zlib": {
|
1877 |
+
"version": "0.2.0",
|
1878 |
+
"resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
|
1879 |
+
"integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
|
1880 |
+
"dev": true,
|
1881 |
+
"requires": {
|
1882 |
+
"pako": "~1.0.5"
|
1883 |
+
}
|
1884 |
+
},
|
1885 |
+
"browserslist": {
|
1886 |
+
"version": "4.11.1",
|
1887 |
+
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.11.1.tgz",
|
1888 |
+
"integrity": "sha512-DCTr3kDrKEYNw6Jb9HFxVLQNaue8z+0ZfRBRjmCunKDEXEBajKDj2Y+Uelg+Pi29OnvaSGwjOsnRyNEkXzHg5g==",
|
1889 |
+
"dev": true,
|
1890 |
+
"requires": {
|
1891 |
+
"caniuse-lite": "^1.0.30001038",
|
1892 |
+
"electron-to-chromium": "^1.3.390",
|
1893 |
+
"node-releases": "^1.1.53",
|
1894 |
+
"pkg-up": "^2.0.0"
|
1895 |
+
}
|
1896 |
+
},
|
1897 |
+
"buffer": {
|
1898 |
+
"version": "4.9.2",
|
1899 |
+
"resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz",
|
1900 |
+
"integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==",
|
1901 |
+
"dev": true,
|
1902 |
+
"requires": {
|
1903 |
+
"base64-js": "^1.0.2",
|
1904 |
+
"ieee754": "^1.1.4",
|
1905 |
+
"isarray": "^1.0.0"
|
1906 |
+
}
|
1907 |
+
},
|
1908 |
+
"buffer-from": {
|
1909 |
+
"version": "1.1.1",
|
1910 |
+
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
|
1911 |
+
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
|
1912 |
+
"dev": true
|
1913 |
+
},
|
1914 |
+
"buffer-xor": {
|
1915 |
+
"version": "1.0.3",
|
1916 |
+
"resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
|
1917 |
+
"integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
|
1918 |
+
"dev": true
|
1919 |
+
},
|
1920 |
+
"builtin-status-codes": {
|
1921 |
+
"version": "3.0.0",
|
1922 |
+
"resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
|
1923 |
+
"integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
|
1924 |
+
"dev": true
|
1925 |
+
},
|
1926 |
+
"cacache": {
|
1927 |
+
"version": "12.0.4",
|
1928 |
+
"resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
|
1929 |
+
"integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
|
1930 |
+
"dev": true,
|
1931 |
+
"requires": {
|
1932 |
+
"bluebird": "^3.5.5",
|
1933 |
+
"chownr": "^1.1.1",
|
1934 |
+
"figgy-pudding": "^3.5.1",
|
1935 |
+
"glob": "^7.1.4",
|
1936 |
+
"graceful-fs": "^4.1.15",
|
1937 |
+
"infer-owner": "^1.0.3",
|
1938 |
+
"lru-cache": "^5.1.1",
|
1939 |
+
"mississippi": "^3.0.0",
|
1940 |
+
"mkdirp": "^0.5.1",
|
1941 |
+
"move-concurrently": "^1.0.1",
|
1942 |
+
"promise-inflight": "^1.0.1",
|
1943 |
+
"rimraf": "^2.6.3",
|
1944 |
+
"ssri": "^6.0.1",
|
1945 |
+
"unique-filename": "^1.1.1",
|
1946 |
+
"y18n": "^4.0.0"
|
1947 |
+
}
|
1948 |
+
},
|
1949 |
+
"cache-base": {
|
1950 |
+
"version": "1.0.1",
|
1951 |
+
"resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
|
1952 |
+
"integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
|
1953 |
+
"dev": true,
|
1954 |
+
"requires": {
|
1955 |
+
"collection-visit": "^1.0.0",
|
1956 |
+
"component-emitter": "^1.2.1",
|
1957 |
+
"get-value": "^2.0.6",
|
1958 |
+
"has-value": "^1.0.0",
|
1959 |
+
"isobject": "^3.0.1",
|
1960 |
+
"set-value": "^2.0.0",
|
1961 |
+
"to-object-path": "^0.3.0",
|
1962 |
+
"union-value": "^1.0.0",
|
1963 |
+
"unset-value": "^1.0.0"
|
1964 |
+
}
|
1965 |
+
},
|
1966 |
+
"callsites": {
|
1967 |
+
"version": "3.1.0",
|
1968 |
+
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
|
1969 |
+
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
|
1970 |
+
"dev": true
|
1971 |
+
},
|
1972 |
+
"camelcase": {
|
1973 |
+
"version": "5.3.1",
|
1974 |
+
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
|
1975 |
+
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
|
1976 |
+
"dev": true
|
1977 |
+
},
|
1978 |
+
"caniuse-lite": {
|
1979 |
+
"version": "1.0.30001039",
|
1980 |
+
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001039.tgz",
|
1981 |
+
"integrity": "sha512-SezbWCTT34eyFoWHgx8UWso7YtvtM7oosmFoXbCkdC6qJzRfBTeTgE9REtKtiuKXuMwWTZEvdnFNGAyVMorv8Q==",
|
1982 |
+
"dev": true
|
1983 |
+
},
|
1984 |
+
"chalk": {
|
1985 |
+
"version": "2.4.2",
|
1986 |
+
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
|
1987 |
+
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
|
1988 |
+
"dev": true,
|
1989 |
+
"requires": {
|
1990 |
+
"ansi-styles": "^3.2.1",
|
1991 |
+
"escape-string-regexp": "^1.0.5",
|
1992 |
+
"supports-color": "^5.3.0"
|
1993 |
+
}
|
1994 |
+
},
|
1995 |
+
"chardet": {
|
1996 |
+
"version": "0.7.0",
|
1997 |
+
"resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
|
1998 |
+
"integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
|
1999 |
+
"dev": true
|
2000 |
+
},
|
2001 |
+
"chokidar": {
|
2002 |
+
"version": "2.1.8",
|
2003 |
+
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
|
2004 |
+
"integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
|
2005 |
+
"dev": true,
|
2006 |
+
"requires": {
|
2007 |
+
"anymatch": "^2.0.0",
|
2008 |
+
"async-each": "^1.0.1",
|
2009 |
+
"braces": "^2.3.2",
|
2010 |
+
"fsevents": "^1.2.7",
|
2011 |
+
"glob-parent": "^3.1.0",
|
2012 |
+
"inherits": "^2.0.3",
|
2013 |
+
"is-binary-path": "^1.0.0",
|
2014 |
+
"is-glob": "^4.0.0",
|
2015 |
+
"normalize-path": "^3.0.0",
|
2016 |
+
"path-is-absolute": "^1.0.0",
|
2017 |
+
"readdirp": "^2.2.1",
|
2018 |
+
"upath": "^1.1.1"
|
2019 |
+
},
|
2020 |
+
"dependencies": {
|
2021 |
+
"glob-parent": {
|
2022 |
+
"version": "3.1.0",
|
2023 |
+
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
|
2024 |
+
"integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
|
2025 |
+
"dev": true,
|
2026 |
+
"requires": {
|
2027 |
+
"is-glob": "^3.1.0",
|
2028 |
+
"path-dirname": "^1.0.0"
|
2029 |
+
},
|
2030 |
+
"dependencies": {
|
2031 |
+
"is-glob": {
|
2032 |
+
"version": "3.1.0",
|
2033 |
+
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
|
2034 |
+
"integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
|
2035 |
+
"dev": true,
|
2036 |
+
"requires": {
|
2037 |
+
"is-extglob": "^2.1.0"
|
2038 |
+
}
|
2039 |
+
}
|
2040 |
+
}
|
2041 |
+
}
|
2042 |
+
}
|
2043 |
+
},
|
2044 |
+
"chownr": {
|
2045 |
+
"version": "1.1.4",
|
2046 |
+
"resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
|
2047 |
+
"integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
|
2048 |
+
"dev": true
|
2049 |
+
},
|
2050 |
+
"chrome-trace-event": {
|
2051 |
+
"version": "1.0.2",
|
2052 |
+
"resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz",
|
2053 |
+
"integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==",
|
2054 |
+
"dev": true,
|
2055 |
+
"requires": {
|
2056 |
+
"tslib": "^1.9.0"
|
2057 |
+
}
|
2058 |
+
},
|
2059 |
+
"ci-info": {
|
2060 |
+
"version": "1.6.0",
|
2061 |
+
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz",
|
2062 |
+
"integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==",
|
2063 |
+
"dev": true
|
2064 |
+
},
|
2065 |
+
"cipher-base": {
|
2066 |
+
"version": "1.0.4",
|
2067 |
+
"resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
|
2068 |
+
"integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
|
2069 |
+
"dev": true,
|
2070 |
+
"requires": {
|
2071 |
+
"inherits": "^2.0.1",
|
2072 |
+
"safe-buffer": "^5.0.1"
|
2073 |
+
}
|
2074 |
+
},
|
2075 |
+
"class-utils": {
|
2076 |
+
"version": "0.3.6",
|
2077 |
+
"resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
|
2078 |
+
"integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
|
2079 |
+
"dev": true,
|
2080 |
+
"requires": {
|
2081 |
+
"arr-union": "^3.1.0",
|
2082 |
+
"define-property": "^0.2.5",
|
2083 |
+
"isobject": "^3.0.0",
|
2084 |
+
"static-extend": "^0.1.1"
|
2085 |
+
},
|
2086 |
+
"dependencies": {
|
2087 |
+
"define-property": {
|
2088 |
+
"version": "0.2.5",
|
2089 |
+
"resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
|
2090 |
+
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
|
2091 |
+
"dev": true,
|
2092 |
+
"requires": {
|
2093 |
+
"is-descriptor": "^0.1.0"
|
2094 |
+
}
|
2095 |
+
}
|
2096 |
+
}
|
2097 |
+
},
|
2098 |
+
"cli-cursor": {
|
2099 |
+
"version": "3.1.0",
|
2100 |
+
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
|
2101 |
+
"integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
|
2102 |
+
"dev": true,
|
2103 |
+
"requires": {
|
2104 |
+
"restore-cursor": "^3.1.0"
|
2105 |
+
}
|
2106 |
+
},
|
2107 |
+
"cli-width": {
|
2108 |
+
"version": "2.2.0",
|
2109 |
+
"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
|
2110 |
+
"integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
|
2111 |
+
"dev": true
|
2112 |
+
},
|
2113 |
+
"cliui": {
|
2114 |
+
"version": "5.0.0",
|
2115 |
+
"resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
|
2116 |
+
"integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
|
2117 |
+
"dev": true,
|
2118 |
+
"requires": {
|
2119 |
+
"string-width": "^3.1.0",
|
2120 |
+
"strip-ansi": "^5.2.0",
|
2121 |
+
"wrap-ansi": "^5.1.0"
|
2122 |
+
},
|
2123 |
+
"dependencies": {
|
2124 |
+
"emoji-regex": {
|
2125 |
+
"version": "7.0.3",
|
2126 |
+
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
|
2127 |
+
"integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
|
2128 |
+
"dev": true
|
2129 |
+
},
|
2130 |
+
"is-fullwidth-code-point": {
|
2131 |
+
"version": "2.0.0",
|
2132 |
+
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
|
2133 |
+
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
|
2134 |
+
"dev": true
|
2135 |
+
},
|
2136 |
+
"string-width": {
|
2137 |
+
"version": "3.1.0",
|
2138 |
+
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
|
2139 |
+
"integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
|
2140 |
+
"dev": true,
|
2141 |
+
"requires": {
|
2142 |
+
"emoji-regex": "^7.0.1",
|
2143 |
+
"is-fullwidth-code-point": "^2.0.0",
|
2144 |
+
"strip-ansi": "^5.1.0"
|
2145 |
+
}
|
2146 |
+
}
|
2147 |
+
}
|
2148 |
+
},
|
2149 |
+
"collection-visit": {
|
2150 |
+
"version": "1.0.0",
|
2151 |
+
"resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
|
2152 |
+
"integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
|
2153 |
+
"dev": true,
|
2154 |
+
"requires": {
|
2155 |
+
"map-visit": "^1.0.0",
|
2156 |
+
"object-visit": "^1.0.0"
|
2157 |
+
}
|
2158 |
+
},
|
2159 |
+
"color-convert": {
|
2160 |
+
"version": "1.9.3",
|
2161 |
+
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
|
2162 |
+
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
|
2163 |
+
"dev": true,
|
2164 |
+
"requires": {
|
2165 |
+
"color-name": "1.1.3"
|
2166 |
+
}
|
2167 |
+
},
|
2168 |
+
"color-name": {
|
2169 |
+
"version": "1.1.3",
|
2170 |
+
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
2171 |
+
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
|
2172 |
+
"dev": true
|
2173 |
+
},
|
2174 |
+
"commander": {
|
2175 |
+
"version": "2.20.3",
|
2176 |
+
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
|
2177 |
+
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
|
2178 |
+
"dev": true
|
2179 |
+
},
|
2180 |
+
"commondir": {
|
2181 |
+
"version": "1.0.1",
|
2182 |
+
"resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
|
2183 |
+
"integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
|
2184 |
+
"dev": true
|
2185 |
+
},
|
2186 |
+
"component-emitter": {
|
2187 |
+
"version": "1.3.0",
|
2188 |
+
"resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
|
2189 |
+
"integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
|
2190 |
+
"dev": true
|
2191 |
+
},
|
2192 |
+
"concat-map": {
|
2193 |
+
"version": "0.0.1",
|
2194 |
+
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
2195 |
+
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
2196 |
+
"dev": true
|
2197 |
+
},
|
2198 |
+
"concat-stream": {
|
2199 |
+
"version": "1.6.2",
|
2200 |
+
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
|
2201 |
+
"integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
|
2202 |
+
"dev": true,
|
2203 |
+
"requires": {
|
2204 |
+
"buffer-from": "^1.0.0",
|
2205 |
+
"inherits": "^2.0.3",
|
2206 |
+
"readable-stream": "^2.2.2",
|
2207 |
+
"typedarray": "^0.0.6"
|
2208 |
+
}
|
2209 |
+
},
|
2210 |
+
"consola": {
|
2211 |
+
"version": "2.10.1",
|
2212 |
+
"resolved": "https://registry.npmjs.org/consola/-/consola-2.10.1.tgz",
|
2213 |
+
"integrity": "sha512-4sxpH6SGFYLADfUip4vuY65f/gEogrzJoniVhNUYkJHtng0l8ZjnDCqxxrSVRHOHwKxsy8Vm5ONZh1wOR3/l/w==",
|
2214 |
+
"dev": true
|
2215 |
+
},
|
2216 |
+
"console-browserify": {
|
2217 |
+
"version": "1.2.0",
|
2218 |
+
"resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
|
2219 |
+
"integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
|
2220 |
+
"dev": true
|
2221 |
+
},
|
2222 |
+
"constants-browserify": {
|
2223 |
+
"version": "1.0.0",
|
2224 |
+
"resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
|
2225 |
+
"integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
|
2226 |
+
"dev": true
|
2227 |
+
},
|
2228 |
+
"convert-source-map": {
|
2229 |
+
"version": "1.7.0",
|
2230 |
+
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz",
|
2231 |
+
"integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==",
|
2232 |
+
"dev": true,
|
2233 |
+
"requires": {
|
2234 |
+
"safe-buffer": "~5.1.1"
|
2235 |
+
},
|
2236 |
+
"dependencies": {
|
2237 |
+
"safe-buffer": {
|
2238 |
+
"version": "5.1.2",
|
2239 |
+
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
2240 |
+
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
|
2241 |
+
"dev": true
|
2242 |
+
}
|
2243 |
+
}
|
2244 |
+
},
|
2245 |
+
"copy-concurrently": {
|
2246 |
+
"version": "1.0.5",
|
2247 |
+
"resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
|
2248 |
+
"integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
|
2249 |
+
"dev": true,
|
2250 |
+
"requires": {
|
2251 |
+
"aproba": "^1.1.1",
|
2252 |
+
"fs-write-stream-atomic": "^1.0.8",
|
2253 |
+
"iferr": "^0.1.5",
|
2254 |
+
"mkdirp": "^0.5.1",
|
2255 |
+
"rimraf": "^2.5.4",
|
2256 |
+
"run-queue": "^1.0.0"
|
2257 |
+
}
|
2258 |
+
},
|
2259 |
+
"copy-descriptor": {
|
2260 |
+
"version": "0.1.1",
|
2261 |
+
"resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
|
2262 |
+
"integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
|
2263 |
+
"dev": true
|
2264 |
+
},
|
2265 |
+
"core-js-compat": {
|
2266 |
+
"version": "3.6.4",
|
2267 |
+
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.4.tgz",
|
2268 |
+
"integrity": "sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA==",
|
2269 |
+
"dev": true,
|
2270 |
+
"requires": {
|
2271 |
+
"browserslist": "^4.8.3",
|
2272 |
+
"semver": "7.0.0"
|
2273 |
+
},
|
2274 |
+
"dependencies": {
|
2275 |
+
"semver": {
|
2276 |
+
"version": "7.0.0",
|
2277 |
+
"resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
|
2278 |
+
"integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
|
2279 |
+
"dev": true
|
2280 |
+
}
|
2281 |
+
}
|
2282 |
+
},
|
2283 |
+
"core-js-pure": {
|
2284 |
+
"version": "3.6.4",
|
2285 |
+
"resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.4.tgz",
|
2286 |
+
"integrity": "sha512-epIhRLkXdgv32xIUFaaAry2wdxZYBi6bgM7cB136dzzXXa+dFyRLTZeLUJxnd8ShrmyVXBub63n2NHo2JAt8Cw==",
|
2287 |
+
"dev": true
|
2288 |
+
},
|
2289 |
+
"core-util-is": {
|
2290 |
+
"version": "1.0.2",
|
2291 |
+
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
|
2292 |
+
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
|
2293 |
+
"dev": true
|
2294 |
+
},
|
2295 |
+
"create-ecdh": {
|
2296 |
+
"version": "4.0.3",
|
2297 |
+
"resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
|
2298 |
+
"integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
|
2299 |
+
"dev": true,
|
2300 |
+
"requires": {
|
2301 |
+
"bn.js": "^4.1.0",
|
2302 |
+
"elliptic": "^6.0.0"
|
2303 |
+
}
|
2304 |
+
},
|
2305 |
+
"create-hash": {
|
2306 |
+
"version": "1.2.0",
|
2307 |
+
"resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
|
2308 |
+
"integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
|
2309 |
+
"dev": true,
|
2310 |
+
"requires": {
|
2311 |
+
"cipher-base": "^1.0.1",
|
2312 |
+
"inherits": "^2.0.1",
|
2313 |
+
"md5.js": "^1.3.4",
|
2314 |
+
"ripemd160": "^2.0.1",
|
2315 |
+
"sha.js": "^2.4.0"
|
2316 |
+
}
|
2317 |
+
},
|
2318 |
+
"create-hmac": {
|
2319 |
+
"version": "1.1.7",
|
2320 |
+
"resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
|
2321 |
+
"integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
|
2322 |
+
"dev": true,
|
2323 |
+
"requires": {
|
2324 |
+
"cipher-base": "^1.0.3",
|
2325 |
+
"create-hash": "^1.1.0",
|
2326 |
+
"inherits": "^2.0.1",
|
2327 |
+
"ripemd160": "^2.0.0",
|
2328 |
+
"safe-buffer": "^5.0.1",
|
2329 |
+
"sha.js": "^2.4.8"
|
2330 |
+
}
|
2331 |
+
},
|
2332 |
+
"cross-spawn": {
|
2333 |
+
"version": "6.0.5",
|
2334 |
+
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
|
2335 |
+
"integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
|
2336 |
+
"dev": true,
|
2337 |
+
"requires": {
|
2338 |
+
"nice-try": "^1.0.4",
|
2339 |
+
"path-key": "^2.0.1",
|
2340 |
+
"semver": "^5.5.0",
|
2341 |
+
"shebang-command": "^1.2.0",
|
2342 |
+
"which": "^1.2.9"
|
2343 |
+
}
|
2344 |
+
},
|
2345 |
+
"crypto-browserify": {
|
2346 |
+
"version": "3.12.0",
|
2347 |
+
"resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
|
2348 |
+
"integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
|
2349 |
+
"dev": true,
|
2350 |
+
"requires": {
|
2351 |
+
"browserify-cipher": "^1.0.0",
|
2352 |
+
"browserify-sign": "^4.0.0",
|
2353 |
+
"create-ecdh": "^4.0.0",
|
2354 |
+
"create-hash": "^1.1.0",
|
2355 |
+
"create-hmac": "^1.1.0",
|
2356 |
+
"diffie-hellman": "^5.0.0",
|
2357 |
+
"inherits": "^2.0.1",
|
2358 |
+
"pbkdf2": "^3.0.3",
|
2359 |
+
"public-encrypt": "^4.0.0",
|
2360 |
+
"randombytes": "^2.0.0",
|
2361 |
+
"randomfill": "^1.0.3"
|
2362 |
+
}
|
2363 |
+
},
|
2364 |
+
"css-loader": {
|
2365 |
+
"version": "3.4.2",
|
2366 |
+
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.4.2.tgz",
|
2367 |
+
"integrity": "sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA==",
|
2368 |
+
"dev": true,
|
2369 |
+
"requires": {
|
2370 |
+
"camelcase": "^5.3.1",
|
2371 |
+
"cssesc": "^3.0.0",
|
2372 |
+
"icss-utils": "^4.1.1",
|
2373 |
+
"loader-utils": "^1.2.3",
|
2374 |
+
"normalize-path": "^3.0.0",
|
2375 |
+
"postcss": "^7.0.23",
|
2376 |
+
"postcss-modules-extract-imports": "^2.0.0",
|
2377 |
+
"postcss-modules-local-by-default": "^3.0.2",
|
2378 |
+
"postcss-modules-scope": "^2.1.1",
|
2379 |
+
"postcss-modules-values": "^3.0.0",
|
2380 |
+
"postcss-value-parser": "^4.0.2",
|
2381 |
+
"schema-utils": "^2.6.0"
|
2382 |
+
},
|
2383 |
+
"dependencies": {
|
2384 |
+
"big.js": {
|
2385 |
+
"version": "5.2.2",
|
2386 |
+
"resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
|
2387 |
+
"integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
|
2388 |
+
"dev": true
|
2389 |
+
},
|
2390 |
+
"emojis-list": {
|
2391 |
+
"version": "3.0.0",
|
2392 |
+
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
|
2393 |
+
"integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
|
2394 |
+
"dev": true
|
2395 |
+
},
|
2396 |
+
"json5": {
|
2397 |
+
"version": "1.0.1",
|
2398 |
+
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
|
2399 |
+
"integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
|
2400 |
+
"dev": true,
|
2401 |
+
"requires": {
|
2402 |
+
"minimist": "^1.2.0"
|
2403 |
+
}
|
2404 |
+
},
|
2405 |
+
"loader-utils": {
|
2406 |
+
"version": "1.4.0",
|
2407 |
+
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
|
2408 |
+
"integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
|
2409 |
+
"dev": true,
|
2410 |
+
"requires": {
|
2411 |
+
"big.js": "^5.2.2",
|
2412 |
+
"emojis-list": "^3.0.0",
|
2413 |
+
"json5": "^1.0.1"
|
2414 |
+
}
|
2415 |
+
},
|
2416 |
+
"minimist": {
|
2417 |
+
"version": "1.2.5",
|
2418 |
+
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
|
2419 |
+
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
|
2420 |
+
"dev": true
|
2421 |
+
}
|
2422 |
+
}
|
2423 |
+
},
|
2424 |
+
"cssesc": {
|
2425 |
+
"version": "3.0.0",
|
2426 |
+
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
|
2427 |
+
"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
|
2428 |
+
"dev": true
|
2429 |
+
},
|
2430 |
+
"cyclist": {
|
2431 |
+
"version": "1.0.1",
|
2432 |
+
"resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
|
2433 |
+
"integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=",
|
2434 |
+
"dev": true
|
2435 |
+
},
|
2436 |
+
"debug": {
|
2437 |
+
"version": "4.1.1",
|
2438 |
+
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
|
2439 |
+
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
|
2440 |
+
"dev": true,
|
2441 |
+
"requires": {
|
2442 |
+
"ms": "^2.1.1"
|
2443 |
+
}
|
2444 |
+
},
|
2445 |
+
"decamelize": {
|
2446 |
+
"version": "1.2.0",
|
2447 |
+
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
|
2448 |
+
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
|
2449 |
+
"dev": true
|
2450 |
+
},
|
2451 |
+
"decode-uri-component": {
|
2452 |
+
"version": "0.2.0",
|
2453 |
+
"resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
|
2454 |
+
"integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
|
2455 |
+
"dev": true
|
2456 |
+
},
|
2457 |
+
"deep-is": {
|
2458 |
+
"version": "0.1.3",
|
2459 |
+
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
|
2460 |
+
"integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
|
2461 |
+
"dev": true
|
2462 |
+
},
|
2463 |
+
"define-properties": {
|
2464 |
+
"version": "1.1.3",
|
2465 |
+
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
|
2466 |
+
"integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
|
2467 |
+
"dev": true,
|
2468 |
+
"requires": {
|
2469 |
+
"object-keys": "^1.0.12"
|
2470 |
+
}
|
2471 |
+
},
|
2472 |
+
"define-property": {
|
2473 |
+
"version": "2.0.2",
|
2474 |
+
"resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
|
2475 |
+
"integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
|
2476 |
+
"dev": true,
|
2477 |
+
"requires": {
|
2478 |
+
"is-descriptor": "^1.0.2",
|
2479 |
+
"isobject": "^3.0.1"
|
2480 |
+
},
|
2481 |
+
"dependencies": {
|
2482 |
+
"is-accessor-descriptor": {
|
2483 |
+
"version": "1.0.0",
|
2484 |
+
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
|
2485 |
+
"integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
|
2486 |
+
"dev": true,
|
2487 |
+
"requires": {
|
2488 |
+
"kind-of": "^6.0.0"
|
2489 |
+
}
|
2490 |
+
},
|
2491 |
+
"is-data-descriptor": {
|
2492 |
+
"version": "1.0.0",
|
2493 |
+
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
|
2494 |
+
"integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
|
2495 |
+
"dev": true,
|
2496 |
+
"requires": {
|
2497 |
+
"kind-of": "^6.0.0"
|
2498 |
+
}
|
2499 |
+
},
|
2500 |
+
"is-descriptor": {
|
2501 |
+
"version": "1.0.2",
|
2502 |
+
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
|
2503 |
+
"integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
|
2504 |
+
"dev": true,
|
2505 |
+
"requires": {
|
2506 |
+
"is-accessor-descriptor": "^1.0.0",
|
2507 |
+
"is-data-descriptor": "^1.0.0",
|
2508 |
+
"kind-of": "^6.0.2"
|
2509 |
+
}
|
2510 |
+
}
|
2511 |
+
}
|
2512 |
+
},
|
2513 |
+
"des.js": {
|
2514 |
+
"version": "1.0.1",
|
2515 |
+
"resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz",
|
2516 |
+
"integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==",
|
2517 |
+
"dev": true,
|
2518 |
+
"requires": {
|
2519 |
+
"inherits": "^2.0.1",
|
2520 |
+
"minimalistic-assert": "^1.0.0"
|
2521 |
+
}
|
2522 |
+
},
|
2523 |
+
"detect-file": {
|
2524 |
+
"version": "1.0.0",
|
2525 |
+
"resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
|
2526 |
+
"integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
|
2527 |
+
"dev": true
|
2528 |
+
},
|
2529 |
+
"diffie-hellman": {
|
2530 |
+
"version": "5.0.3",
|
2531 |
+
"resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
|
2532 |
+
"integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
|
2533 |
+
"dev": true,
|
2534 |
+
"requires": {
|
2535 |
+
"bn.js": "^4.1.0",
|
2536 |
+
"miller-rabin": "^4.0.0",
|
2537 |
+
"randombytes": "^2.0.0"
|
2538 |
+
}
|
2539 |
+
},
|
2540 |
+
"doctrine": {
|
2541 |
+
"version": "3.0.0",
|
2542 |
+
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
|
2543 |
+
"integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
|
2544 |
+
"dev": true,
|
2545 |
+
"requires": {
|
2546 |
+
"esutils": "^2.0.2"
|
2547 |
+
}
|
2548 |
+
},
|
2549 |
+
"domain-browser": {
|
2550 |
+
"version": "1.2.0",
|
2551 |
+
"resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
|
2552 |
+
"integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
|
2553 |
+
"dev": true
|
2554 |
+
},
|
2555 |
+
"duplexify": {
|
2556 |
+
"version": "3.7.1",
|
2557 |
+
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
|
2558 |
+
"integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
|
2559 |
+
"dev": true,
|
2560 |
+
"requires": {
|
2561 |
+
"end-of-stream": "^1.0.0",
|
2562 |
+
"inherits": "^2.0.1",
|
2563 |
+
"readable-stream": "^2.0.0",
|
2564 |
+
"stream-shift": "^1.0.0"
|
2565 |
+
}
|
2566 |
+
},
|
2567 |
+
"electron-to-chromium": {
|
2568 |
+
"version": "1.3.397",
|
2569 |
+
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.397.tgz",
|
2570 |
+
"integrity": "sha512-zcUd1p/7yzTSdWkCTrqGvbnEOASy96d0RJL/lc5BDJoO23Z3G/VHd0yIPbguDU9n8QNUTCigLO7oEdtOb7fp2A==",
|
2571 |
+
"dev": true
|
2572 |
+
},
|
2573 |
+
"elliptic": {
|
2574 |
+
"version": "6.5.2",
|
2575 |
+
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz",
|
2576 |
+
"integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==",
|
2577 |
+
"dev": true,
|
2578 |
+
"requires": {
|
2579 |
+
"bn.js": "^4.4.0",
|
2580 |
+
"brorand": "^1.0.1",
|
2581 |
+
"hash.js": "^1.0.0",
|
2582 |
+
"hmac-drbg": "^1.0.0",
|
2583 |
+
"inherits": "^2.0.1",
|
2584 |
+
"minimalistic-assert": "^1.0.0",
|
2585 |
+
"minimalistic-crypto-utils": "^1.0.0"
|
2586 |
+
}
|
2587 |
+
},
|
2588 |
+
"emoji-regex": {
|
2589 |
+
"version": "8.0.0",
|
2590 |
+
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
2591 |
+
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
|
2592 |
+
"dev": true
|
2593 |
+
},
|
2594 |
+
"emojis-list": {
|
2595 |
+
"version": "2.1.0",
|
2596 |
+
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
|
2597 |
+
"integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
|
2598 |
+
"dev": true
|
2599 |
+
},
|
2600 |
+
"encoding": {
|
2601 |
+
"version": "0.1.12",
|
2602 |
+
"resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
|
2603 |
+
"integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
|
2604 |
+
"requires": {
|
2605 |
+
"iconv-lite": "~0.4.13"
|
2606 |
+
}
|
2607 |
+
},
|
2608 |
+
"end-of-stream": {
|
2609 |
+
"version": "1.4.4",
|
2610 |
+
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
|
2611 |
+
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
|
2612 |
+
"dev": true,
|
2613 |
+
"requires": {
|
2614 |
+
"once": "^1.4.0"
|
2615 |
+
}
|
2616 |
+
},
|
2617 |
+
"enhanced-resolve": {
|
2618 |
+
"version": "4.1.1",
|
2619 |
+
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz",
|
2620 |
+
"integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==",
|
2621 |
+
"dev": true,
|
2622 |
+
"requires": {
|
2623 |
+
"graceful-fs": "^4.1.2",
|
2624 |
+
"memory-fs": "^0.5.0",
|
2625 |
+
"tapable": "^1.0.0"
|
2626 |
+
},
|
2627 |
+
"dependencies": {
|
2628 |
+
"memory-fs": {
|
2629 |
+
"version": "0.5.0",
|
2630 |
+
"resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
|
2631 |
+
"integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
|
2632 |
+
"dev": true,
|
2633 |
+
"requires": {
|
2634 |
+
"errno": "^0.1.3",
|
2635 |
+
"readable-stream": "^2.0.1"
|
2636 |
+
}
|
2637 |
+
}
|
2638 |
+
}
|
2639 |
+
},
|
2640 |
+
"errno": {
|
2641 |
+
"version": "0.1.7",
|
2642 |
+
"resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
|
2643 |
+
"integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
|
2644 |
+
"dev": true,
|
2645 |
+
"requires": {
|
2646 |
+
"prr": "~1.0.1"
|
2647 |
+
}
|
2648 |
+
},
|
2649 |
+
"es-abstract": {
|
2650 |
+
"version": "1.17.4",
|
2651 |
+
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz",
|
2652 |
+
"integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==",
|
2653 |
+
"dev": true,
|
2654 |
+
"requires": {
|
2655 |
+
"es-to-primitive": "^1.2.1",
|
2656 |
+
"function-bind": "^1.1.1",
|
2657 |
+
"has": "^1.0.3",
|
2658 |
+
"has-symbols": "^1.0.1",
|
2659 |
+
"is-callable": "^1.1.5",
|
2660 |
+
"is-regex": "^1.0.5",
|
2661 |
+
"object-inspect": "^1.7.0",
|
2662 |
+
"object-keys": "^1.1.1",
|
2663 |
+
"object.assign": "^4.1.0",
|
2664 |
+
"string.prototype.trimleft": "^2.1.1",
|
2665 |
+
"string.prototype.trimright": "^2.1.1"
|
2666 |
+
}
|
2667 |
+
},
|
2668 |
+
"es-to-primitive": {
|
2669 |
+
"version": "1.2.1",
|
2670 |
+
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
|
2671 |
+
"integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
|
2672 |
+
"dev": true,
|
2673 |
+
"requires": {
|
2674 |
+
"is-callable": "^1.1.4",
|
2675 |
+
"is-date-object": "^1.0.1",
|
2676 |
+
"is-symbol": "^1.0.2"
|
2677 |
+
}
|
2678 |
+
},
|
2679 |
+
"escape-string-regexp": {
|
2680 |
+
"version": "1.0.5",
|
2681 |
+
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
2682 |
+
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
|
2683 |
+
"dev": true
|
2684 |
+
},
|
2685 |
+
"eslint": {
|
2686 |
+
"version": "6.8.0",
|
2687 |
+
"resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz",
|
2688 |
+
"integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==",
|
2689 |
+
"dev": true,
|
2690 |
+
"requires": {
|
2691 |
+
"@babel/code-frame": "^7.0.0",
|
2692 |
+
"ajv": "^6.10.0",
|
2693 |
+
"chalk": "^2.1.0",
|
2694 |
+
"cross-spawn": "^6.0.5",
|
2695 |
+
"debug": "^4.0.1",
|
2696 |
+
"doctrine": "^3.0.0",
|
2697 |
+
"eslint-scope": "^5.0.0",
|
2698 |
+
"eslint-utils": "^1.4.3",
|
2699 |
+
"eslint-visitor-keys": "^1.1.0",
|
2700 |
+
"espree": "^6.1.2",
|
2701 |
+
"esquery": "^1.0.1",
|
2702 |
+
"esutils": "^2.0.2",
|
2703 |
+
"file-entry-cache": "^5.0.1",
|
2704 |
+
"functional-red-black-tree": "^1.0.1",
|
2705 |
+
"glob-parent": "^5.0.0",
|
2706 |
+
"globals": "^12.1.0",
|
2707 |
+
"ignore": "^4.0.6",
|
2708 |
+
"import-fresh": "^3.0.0",
|
2709 |
+
"imurmurhash": "^0.1.4",
|
2710 |
+
"inquirer": "^7.0.0",
|
2711 |
+
"is-glob": "^4.0.0",
|
2712 |
+
"js-yaml": "^3.13.1",
|
2713 |
+
"json-stable-stringify-without-jsonify": "^1.0.1",
|
2714 |
+
"levn": "^0.3.0",
|
2715 |
+
"lodash": "^4.17.14",
|
2716 |
+
"minimatch": "^3.0.4",
|
2717 |
+
"mkdirp": "^0.5.1",
|
2718 |
+
"natural-compare": "^1.4.0",
|
2719 |
+
"optionator": "^0.8.3",
|
2720 |
+
"progress": "^2.0.0",
|
2721 |
+
"regexpp": "^2.0.1",
|
2722 |
+
"semver": "^6.1.2",
|
2723 |
+
"strip-ansi": "^5.2.0",
|
2724 |
+
"strip-json-comments": "^3.0.1",
|
2725 |
+
"table": "^5.2.3",
|
2726 |
+
"text-table": "^0.2.0",
|
2727 |
+
"v8-compile-cache": "^2.0.3"
|
2728 |
+
},
|
2729 |
+
"dependencies": {
|
2730 |
+
"globals": {
|
2731 |
+
"version": "12.4.0",
|
2732 |
+
"resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz",
|
2733 |
+
"integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
|
2734 |
+
"dev": true,
|
2735 |
+
"requires": {
|
2736 |
+
"type-fest": "^0.8.1"
|
2737 |
+
}
|
2738 |
+
},
|
2739 |
+
"semver": {
|
2740 |
+
"version": "6.3.0",
|
2741 |
+
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
2742 |
+
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
|
2743 |
+
"dev": true
|
2744 |
+
},
|
2745 |
+
"type-fest": {
|
2746 |
+
"version": "0.8.1",
|
2747 |
+
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
|
2748 |
+
"integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
|
2749 |
+
"dev": true
|
2750 |
+
}
|
2751 |
+
}
|
2752 |
+
},
|
2753 |
+
"eslint-config-wordpress": {
|
2754 |
+
"version": "2.0.0",
|
2755 |
+
"resolved": "https://registry.npmjs.org/eslint-config-wordpress/-/eslint-config-wordpress-2.0.0.tgz",
|
2756 |
+
"integrity": "sha1-UgEgbGlk1kgxUjLt9t+9LpJeTNY=",
|
2757 |
+
"dev": true
|
2758 |
+
},
|
2759 |
+
"eslint-loader": {
|
2760 |
+
"version": "4.0.0",
|
2761 |
+
"resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-4.0.0.tgz",
|
2762 |
+
"integrity": "sha512-QoaFRdh3oXt5i2uonSjO8dDnncsG05w7qvA7yYMvGDne8zAEk9R+R1rsfunp3OKVdO5mAJelf1x2Z1kYp664kA==",
|
2763 |
+
"dev": true,
|
2764 |
+
"requires": {
|
2765 |
+
"fs-extra": "^9.0.0",
|
2766 |
+
"loader-fs-cache": "^1.0.3",
|
2767 |
+
"loader-utils": "^2.0.0",
|
2768 |
+
"object-hash": "^2.0.3",
|
2769 |
+
"schema-utils": "^2.6.5"
|
2770 |
+
},
|
2771 |
+
"dependencies": {
|
2772 |
+
"emojis-list": {
|
2773 |
+
"version": "3.0.0",
|
2774 |
+
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
|
2775 |
+
"integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
|
2776 |
+
"dev": true
|
2777 |
+
},
|
2778 |
+
"loader-utils": {
|
2779 |
+
"version": "2.0.0",
|
2780 |
+
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
|
2781 |
+
"integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
|
2782 |
+
"dev": true,
|
2783 |
+
"requires": {
|
2784 |
+
"big.js": "^5.2.2",
|
2785 |
+
"emojis-list": "^3.0.0",
|
2786 |
+
"json5": "^2.1.2"
|
2787 |
+
}
|
2788 |
+
}
|
2789 |
+
}
|
2790 |
+
},
|
2791 |
+
"eslint-plugin-react": {
|
2792 |
+
"version": "7.19.0",
|
2793 |
+
"resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz",
|
2794 |
+
"integrity": "sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ==",
|
2795 |
+
"dev": true,
|
2796 |
+
"requires": {
|
2797 |
+
"array-includes": "^3.1.1",
|
2798 |
+
"doctrine": "^2.1.0",
|
2799 |
+
"has": "^1.0.3",
|
2800 |
+
"jsx-ast-utils": "^2.2.3",
|
2801 |
+
"object.entries": "^1.1.1",
|
2802 |
+
"object.fromentries": "^2.0.2",
|
2803 |
+
"object.values": "^1.1.1",
|
2804 |
+
"prop-types": "^15.7.2",
|
2805 |
+
"resolve": "^1.15.1",
|
2806 |
+
"semver": "^6.3.0",
|
2807 |
+
"string.prototype.matchall": "^4.0.2",
|
2808 |
+
"xregexp": "^4.3.0"
|
2809 |
+
},
|
2810 |
+
"dependencies": {
|
2811 |
+
"doctrine": {
|
2812 |
+
"version": "2.1.0",
|
2813 |
+
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
|
2814 |
+
"integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
|
2815 |
+
"dev": true,
|
2816 |
+
"requires": {
|
2817 |
+
"esutils": "^2.0.2"
|
2818 |
+
}
|
2819 |
+
},
|
2820 |
+
"semver": {
|
2821 |
+
"version": "6.3.0",
|
2822 |
+
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
2823 |
+
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
|
2824 |
+
"dev": true
|
2825 |
+
}
|
2826 |
+
}
|
2827 |
+
},
|
2828 |
+
"eslint-scope": {
|
2829 |
+
"version": "5.0.0",
|
2830 |
+
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz",
|
2831 |
+
"integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==",
|
2832 |
+
"dev": true,
|
2833 |
+
"requires": {
|
2834 |
+
"esrecurse": "^4.1.0",
|
2835 |
+
"estraverse": "^4.1.1"
|
2836 |
+
}
|
2837 |
+
},
|
2838 |
+
"eslint-utils": {
|
2839 |
+
"version": "1.4.3",
|
2840 |
+
"resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
|
2841 |
+
"integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
|
2842 |
+
"dev": true,
|
2843 |
+
"requires": {
|
2844 |
+
"eslint-visitor-keys": "^1.1.0"
|
2845 |
+
}
|
2846 |
+
},
|
2847 |
+
"eslint-visitor-keys": {
|
2848 |
+
"version": "1.1.0",
|
2849 |
+
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz",
|
2850 |
+
"integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==",
|
2851 |
+
"dev": true
|
2852 |
+
},
|
2853 |
+
"espree": {
|
2854 |
+
"version": "6.2.1",
|
2855 |
+
"resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz",
|
2856 |
+
"integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==",
|
2857 |
+
"dev": true,
|
2858 |
+
"requires": {
|
2859 |
+
"acorn": "^7.1.1",
|
2860 |
+
"acorn-jsx": "^5.2.0",
|
2861 |
+
"eslint-visitor-keys": "^1.1.0"
|
2862 |
+
}
|
2863 |
+
},
|
2864 |
+
"esprima": {
|
2865 |
+
"version": "4.0.1",
|
2866 |
+
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
|
2867 |
+
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
|
2868 |
+
"dev": true
|
2869 |
+
},
|
2870 |
+
"esquery": {
|
2871 |
+
"version": "1.1.0",
|
2872 |
+
"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.1.0.tgz",
|
2873 |
+
"integrity": "sha512-MxYW9xKmROWF672KqjO75sszsA8Mxhw06YFeS5VHlB98KDHbOSurm3ArsjO60Eaf3QmGMCP1yn+0JQkNLo/97Q==",
|
2874 |
+
"dev": true,
|
2875 |
+
"requires": {
|
2876 |
+
"estraverse": "^4.0.0"
|
2877 |
+
}
|
2878 |
+
},
|
2879 |
+
"esrecurse": {
|
2880 |
+
"version": "4.2.1",
|
2881 |
+
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
|
2882 |
+
"integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
|
2883 |
+
"dev": true,
|
2884 |
+
"requires": {
|
2885 |
+
"estraverse": "^4.1.0"
|
2886 |
+
}
|
2887 |
+
},
|
2888 |
+
"estraverse": {
|
2889 |
+
"version": "4.3.0",
|
2890 |
+
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
|
2891 |
+
"integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
|
2892 |
+
"dev": true
|
2893 |
+
},
|
2894 |
+
"esutils": {
|
2895 |
+
"version": "2.0.3",
|
2896 |
+
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
|
2897 |
+
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
|
2898 |
+
"dev": true
|
2899 |
+
},
|
2900 |
+
"events": {
|
2901 |
+
"version": "3.1.0",
|
2902 |
+
"resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz",
|
2903 |
+
"integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==",
|
2904 |
+
"dev": true
|
2905 |
+
},
|
2906 |
+
"evp_bytestokey": {
|
2907 |
+
"version": "1.0.3",
|
2908 |
+
"resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
|
2909 |
+
"integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
|
2910 |
+
"dev": true,
|
2911 |
+
"requires": {
|
2912 |
+
"md5.js": "^1.3.4",
|
2913 |
+
"safe-buffer": "^5.1.1"
|
2914 |
+
}
|
2915 |
+
},
|
2916 |
+
"execa": {
|
2917 |
+
"version": "1.0.0",
|
2918 |
+
"resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
|
2919 |
+
"integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
|
2920 |
+
"dev": true,
|
2921 |
+
"requires": {
|
2922 |
+
"cross-spawn": "^6.0.0",
|
2923 |
+
"get-stream": "^4.0.0",
|
2924 |
+
"is-stream": "^1.1.0",
|
2925 |
+
"npm-run-path": "^2.0.0",
|
2926 |
+
"p-finally": "^1.0.0",
|
2927 |
+
"signal-exit": "^3.0.0",
|
2928 |
+
"strip-eof": "^1.0.0"
|
2929 |
+
}
|
2930 |
+
},
|
2931 |
+
"expand-brackets": {
|
2932 |
+
"version": "2.1.4",
|
2933 |
+
"resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
|
2934 |
+
"integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
|
2935 |
+
"dev": true,
|
2936 |
+
"requires": {
|
2937 |
+
"debug": "^2.3.3",
|
2938 |
+
"define-property": "^0.2.5",
|
2939 |
+
"extend-shallow": "^2.0.1",
|
2940 |
+
"posix-character-classes": "^0.1.0",
|
2941 |
+
"regex-not": "^1.0.0",
|
2942 |
+
"snapdragon": "^0.8.1",
|
2943 |
+
"to-regex": "^3.0.1"
|
2944 |
+
},
|
2945 |
+
"dependencies": {
|
2946 |
+
"debug": {
|
2947 |
+
"version": "2.6.9",
|
2948 |
+
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
2949 |
+
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
2950 |
+
"dev": true,
|
2951 |
+
"requires": {
|
2952 |
+
"ms": "2.0.0"
|
2953 |
+
}
|
2954 |
+
},
|
2955 |
+
"define-property": {
|
2956 |
+
"version": "0.2.5",
|
2957 |
+
"resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
|
2958 |
+
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
|
2959 |
+
"dev": true,
|
2960 |
+
"requires": {
|
2961 |
+
"is-descriptor": "^0.1.0"
|
2962 |
+
}
|
2963 |
+
},
|
2964 |
+
"extend-shallow": {
|
2965 |
+
"version": "2.0.1",
|
2966 |
+
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
|
2967 |
+
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
|
2968 |
+
"dev": true,
|
2969 |
+
"requires": {
|
2970 |
+
"is-extendable": "^0.1.0"
|
2971 |
+
}
|
2972 |
+
},
|
2973 |
+
"ms": {
|
2974 |
+
"version": "2.0.0",
|
2975 |
+
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
2976 |
+
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
|
2977 |
+
"dev": true
|
2978 |
+
}
|
2979 |
+
}
|
2980 |
+
},
|
2981 |
+
"expand-tilde": {
|
2982 |
+
"version": "2.0.2",
|
2983 |
+
"resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
|
2984 |
+
"integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
|
2985 |
+
"dev": true,
|
2986 |
+
"requires": {
|
2987 |
+
"homedir-polyfill": "^1.0.1"
|
2988 |
+
}
|
2989 |
+
},
|
2990 |
+
"extend-shallow": {
|
2991 |
+
"version": "3.0.2",
|
2992 |
+
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
|
2993 |
+
"integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
|
2994 |
+
"dev": true,
|
2995 |
+
"requires": {
|
2996 |
+
"assign-symbols": "^1.0.0",
|
2997 |
+
"is-extendable": "^1.0.1"
|
2998 |
+
},
|
2999 |
+
"dependencies": {
|
3000 |
+
"is-extendable": {
|
3001 |
+
"version": "1.0.1",
|
3002 |
+
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
|
3003 |
+
"integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
|
3004 |
+
"dev": true,
|
3005 |
+
"requires": {
|
3006 |
+
"is-plain-object": "^2.0.4"
|
3007 |
+
}
|
3008 |
+
}
|
3009 |
+
}
|
3010 |
+
},
|
3011 |
+
"external-editor": {
|
3012 |
+
"version": "3.1.0",
|
3013 |
+
"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
|
3014 |
+
"integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
|
3015 |
+
"dev": true,
|
3016 |
+
"requires": {
|
3017 |
+
"chardet": "^0.7.0",
|
3018 |
+
"iconv-lite": "^0.4.24",
|
3019 |
+
"tmp": "^0.0.33"
|
3020 |
+
}
|
3021 |
+
},
|
3022 |
+
"extglob": {
|
3023 |
+
"version": "2.0.4",
|
3024 |
+
"resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
|
3025 |
+
"integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
|
3026 |
+
"dev": true,
|
3027 |
+
"requires": {
|
3028 |
+
"array-unique": "^0.3.2",
|
3029 |
+
"define-property": "^1.0.0",
|
3030 |
+
"expand-brackets": "^2.1.4",
|
3031 |
+
"extend-shallow": "^2.0.1",
|
3032 |
+
"fragment-cache": "^0.2.1",
|
3033 |
+
"regex-not": "^1.0.0",
|
3034 |
+
"snapdragon": "^0.8.1",
|
3035 |
+
"to-regex": "^3.0.1"
|
3036 |
+
},
|
3037 |
+
"dependencies": {
|
3038 |
+
"define-property": {
|
3039 |
+
"version": "1.0.0",
|
3040 |
+
"resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
|
3041 |
+
"integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
|
3042 |
+
"dev": true,
|
3043 |
+
"requires": {
|
3044 |
+
"is-descriptor": "^1.0.0"
|
3045 |
+
}
|
3046 |
+
},
|
3047 |
+
"extend-shallow": {
|
3048 |
+
"version": "2.0.1",
|
3049 |
+
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
|
3050 |
+
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
|
3051 |
+
"dev": true,
|
3052 |
+
"requires": {
|
3053 |
+
"is-extendable": "^0.1.0"
|
3054 |
+
}
|
3055 |
+
},
|
3056 |
+
"is-accessor-descriptor": {
|
3057 |
+
"version": "1.0.0",
|
3058 |
+
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
|
3059 |
+
"integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
|
3060 |
+
"dev": true,
|
3061 |
+
"requires": {
|
3062 |
+
"kind-of": "^6.0.0"
|
3063 |
+
}
|
3064 |
+
},
|
3065 |
+
"is-data-descriptor": {
|
3066 |
+
"version": "1.0.0",
|
3067 |
+
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
|
3068 |
+
"integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
|
3069 |
+
"dev": true,
|
3070 |
+
"requires": {
|
3071 |
+
"kind-of": "^6.0.0"
|
3072 |
+
}
|
3073 |
+
},
|
3074 |
+
"is-descriptor": {
|
3075 |
+
"version": "1.0.2",
|
3076 |
+
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
|
3077 |
+
"integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
|
3078 |
+
"dev": true,
|
3079 |
+
"requires": {
|
3080 |
+
"is-accessor-descriptor": "^1.0.0",
|
3081 |
+
"is-data-descriptor": "^1.0.0",
|
3082 |
+
"kind-of": "^6.0.2"
|
3083 |
+
}
|
3084 |
+
}
|
3085 |
+
}
|
3086 |
+
},
|
3087 |
+
"fast-deep-equal": {
|
3088 |
+
"version": "3.1.1",
|
3089 |
+
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz",
|
3090 |
+
"integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==",
|
3091 |
+
"dev": true
|
3092 |
+
},
|
3093 |
+
"fast-json-stable-stringify": {
|
3094 |
+
"version": "2.1.0",
|
3095 |
+
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
|
3096 |
+
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
|
3097 |
+
"dev": true
|
3098 |
+
},
|
3099 |
+
"fast-levenshtein": {
|
3100 |
+
"version": "2.0.6",
|
3101 |
+
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
|
3102 |
+
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
|
3103 |
+
"dev": true
|
3104 |
+
},
|
3105 |
+
"figgy-pudding": {
|
3106 |
+
"version": "3.5.2",
|
3107 |
+
"resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
|
3108 |
+
"integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==",
|
3109 |
+
"dev": true
|
3110 |
+
},
|
3111 |
+
"figures": {
|
3112 |
+
"version": "3.2.0",
|
3113 |
+
"resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
|
3114 |
+
"integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
|
3115 |
+
"dev": true,
|
3116 |
+
"requires": {
|
3117 |
+
"escape-string-regexp": "^1.0.5"
|
3118 |
+
}
|
3119 |
+
},
|
3120 |
+
"file-entry-cache": {
|
3121 |
+
"version": "5.0.1",
|
3122 |
+
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
|
3123 |
+
"integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
|
3124 |
+
"dev": true,
|
3125 |
+
"requires": {
|
3126 |
+
"flat-cache": "^2.0.1"
|
3127 |
+
}
|
3128 |
+
},
|
3129 |
+
"file-uri-to-path": {
|
3130 |
+
"version": "1.0.0",
|
3131 |
+
"resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
|
3132 |
+
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
|
3133 |
+
"dev": true,
|
3134 |
+
"optional": true
|
3135 |
+
},
|
3136 |
+
"fill-range": {
|
3137 |
+
"version": "4.0.0",
|
3138 |
+
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
|
3139 |
+
"integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
|
3140 |
+
"dev": true,
|
3141 |
+
"requires": {
|
3142 |
+
"extend-shallow": "^2.0.1",
|
3143 |
+
"is-number": "^3.0.0",
|
3144 |
+
"repeat-string": "^1.6.1",
|
3145 |
+
"to-regex-range": "^2.1.0"
|
3146 |
+
},
|
3147 |
+
"dependencies": {
|
3148 |
+
"extend-shallow": {
|
3149 |
+
"version": "2.0.1",
|
3150 |
+
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
|
3151 |
+
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
|
3152 |
+
"dev": true,
|
3153 |
+
"requires": {
|
3154 |
+
"is-extendable": "^0.1.0"
|
3155 |
+
}
|
3156 |
+
}
|
3157 |
+
}
|
3158 |
+
},
|
3159 |
+
"find-cache-dir": {
|
3160 |
+
"version": "2.1.0",
|
3161 |
+
"resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
|
3162 |
+
"integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
|
3163 |
+
"dev": true,
|
3164 |
+
"requires": {
|
3165 |
+
"commondir": "^1.0.1",
|
3166 |
+
"make-dir": "^2.0.0",
|
3167 |
+
"pkg-dir": "^3.0.0"
|
3168 |
+
}
|
3169 |
+
},
|
3170 |
+
"find-up": {
|
3171 |
+
"version": "3.0.0",
|
3172 |
+
"resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
|
3173 |
+
"integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
|
3174 |
+
"dev": true,
|
3175 |
+
"requires": {
|
3176 |
+
"locate-path": "^3.0.0"
|
3177 |
+
}
|
3178 |
+
},
|
3179 |
+
"findup-sync": {
|
3180 |
+
"version": "3.0.0",
|
3181 |
+
"resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz",
|
3182 |
+
"integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==",
|
3183 |
+
"dev": true,
|
3184 |
+
"requires": {
|
3185 |
+
"detect-file": "^1.0.0",
|
3186 |
+
"is-glob": "^4.0.0",
|
3187 |
+
"micromatch": "^3.0.4",
|
3188 |
+
"resolve-dir": "^1.0.1"
|
3189 |
+
}
|
3190 |
+
},
|
3191 |
+
"flat-cache": {
|
3192 |
+
"version": "2.0.1",
|
3193 |
+
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
|
3194 |
+
"integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
|
3195 |
+
"dev": true,
|
3196 |
+
"requires": {
|
3197 |
+
"flatted": "^2.0.0",
|
3198 |
+
"rimraf": "2.6.3",
|
3199 |
+
"write": "1.0.3"
|
3200 |
+
}
|
3201 |
+
},
|
3202 |
+
"flatted": {
|
3203 |
+
"version": "2.0.1",
|
3204 |
+
"resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz",
|
3205 |
+
"integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==",
|
3206 |
+
"dev": true
|
3207 |
+
},
|
3208 |
+
"flush-write-stream": {
|
3209 |
+
"version": "1.1.1",
|
3210 |
+
"resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
|
3211 |
+
"integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
|
3212 |
+
"dev": true,
|
3213 |
+
"requires": {
|
3214 |
+
"inherits": "^2.0.3",
|
3215 |
+
"readable-stream": "^2.3.6"
|
3216 |
+
}
|
3217 |
+
},
|
3218 |
+
"for-in": {
|
3219 |
+
"version": "1.0.2",
|
3220 |
+
"resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
|
3221 |
+
"integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
|
3222 |
+
"dev": true
|
3223 |
+
},
|
3224 |
+
"fragment-cache": {
|
3225 |
+
"version": "0.2.1",
|
3226 |
+
"resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
|
3227 |
+
"integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
|
3228 |
+
"dev": true,
|
3229 |
+
"requires": {
|
3230 |
+
"map-cache": "^0.2.2"
|
3231 |
+
}
|
3232 |
+
},
|
3233 |
+
"from2": {
|
3234 |
+
"version": "2.3.0",
|
3235 |
+
"resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
|
3236 |
+
"integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
|
3237 |
+
"dev": true,
|
3238 |
+
"requires": {
|
3239 |
+
"inherits": "^2.0.1",
|
3240 |
+
"readable-stream": "^2.0.0"
|
3241 |
+
}
|
3242 |
+
},
|
3243 |
+
"fs-extra": {
|
3244 |
+
"version": "9.0.0",
|
3245 |
+
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz",
|
3246 |
+
"integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==",
|
3247 |
+
"dev": true,
|
3248 |
+
"requires": {
|
3249 |
+
"at-least-node": "^1.0.0",
|
3250 |
+
"graceful-fs": "^4.2.0",
|
3251 |
+
"jsonfile": "^6.0.1",
|
3252 |
+
"universalify": "^1.0.0"
|
3253 |
+
}
|
3254 |
+
},
|
3255 |
+
"fs-write-stream-atomic": {
|
3256 |
+
"version": "1.0.10",
|
3257 |
+
"resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
|
3258 |
+
"integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
|
3259 |
+
"dev": true,
|
3260 |
+
"requires": {
|
3261 |
+
"graceful-fs": "^4.1.2",
|
3262 |
+
"iferr": "^0.1.5",
|
3263 |
+
"imurmurhash": "^0.1.4",
|
3264 |
+
"readable-stream": "1 || 2"
|
3265 |
+
}
|
3266 |
+
},
|
3267 |
+
"fs.realpath": {
|
3268 |
+
"version": "1.0.0",
|
3269 |
+
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
3270 |
+
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
|
3271 |
+
"dev": true
|
3272 |
+
},
|
3273 |
+
"fsevents": {
|
3274 |
+
"version": "1.2.12",
|
3275 |
+
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz",
|
3276 |
+
"integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==",
|
3277 |
+
"dev": true,
|
3278 |
+
"optional": true,
|
3279 |
+
"requires": {
|
3280 |
+
"bindings": "^1.5.0",
|
3281 |
+
"nan": "^2.12.1",
|
3282 |
+
"node-pre-gyp": "*"
|
3283 |
+
},
|
3284 |
+
"dependencies": {
|
3285 |
+
"abbrev": {
|
3286 |
+
"version": "1.1.1",
|
3287 |
+
"bundled": true,
|
3288 |
+
"dev": true,
|
3289 |
+
"optional": true
|
3290 |
+
},
|
3291 |
+
"ansi-regex": {
|
3292 |
+
"version": "2.1.1",
|
3293 |
+
"bundled": true,
|
3294 |
+
"dev": true,
|
3295 |
+
"optional": true
|
3296 |
+
},
|
3297 |
+
"aproba": {
|
3298 |
+
"version": "1.2.0",
|
3299 |
+
"bundled": true,
|
3300 |
+
"dev": true,
|
3301 |
+
"optional": true
|
3302 |
+
},
|
3303 |
+
"are-we-there-yet": {
|
3304 |
+
"version": "1.1.5",
|
3305 |
+
"bundled": true,
|
3306 |
+
"dev": true,
|
3307 |
+
"optional": true,
|
3308 |
+
"requires": {
|
3309 |
+
"delegates": "^1.0.0",
|
3310 |
+
"readable-stream": "^2.0.6"
|
3311 |
+
}
|
3312 |
+
},
|
3313 |
+
"balanced-match": {
|
3314 |
+
"version": "1.0.0",
|
3315 |
+
"bundled": true,
|
3316 |
+
"dev": true,
|
3317 |
+
"optional": true
|
3318 |
+
},
|
3319 |
+
"brace-expansion": {
|
3320 |
+
"version": "1.1.11",
|
3321 |
+
"bundled": true,
|
3322 |
+
"dev": true,
|
3323 |
+
"optional": true,
|
3324 |
+
"requires": {
|
3325 |
+
"balanced-match": "^1.0.0",
|
3326 |
+
"concat-map": "0.0.1"
|
3327 |
+
}
|
3328 |
+
},
|
3329 |
+
"chownr": {
|
3330 |
+
"version": "1.1.4",
|
3331 |
+
"bundled": true,
|
3332 |
+
"dev": true,
|
3333 |
+
"optional": true
|
3334 |
+
},
|
3335 |
+
"code-point-at": {
|
3336 |
+
"version": "1.1.0",
|
3337 |
+
"bundled": true,
|
3338 |
+
"dev": true,
|
3339 |
+
"optional": true
|
3340 |
+
},
|
3341 |
+
"concat-map": {
|
3342 |
+
"version": "0.0.1",
|
3343 |
+
"bundled": true,
|
3344 |
+
"dev": true,
|
3345 |
+
"optional": true
|
3346 |
+
},
|
3347 |
+
"console-control-strings": {
|
3348 |
+
"version": "1.1.0",
|
3349 |
+
"bundled": true,
|
3350 |
+
"dev": true,
|
3351 |
+
"optional": true
|
3352 |
+
},
|
3353 |
+
"core-util-is": {
|
3354 |
+
"version": "1.0.2",
|
3355 |
+
"bundled": true,
|
3356 |
+
"dev": true,
|
3357 |
+
"optional": true
|
3358 |
+
},
|
3359 |
+
"debug": {
|
3360 |
+
"version": "3.2.6",
|
3361 |
+
"bundled": true,
|
3362 |
+
"dev": true,
|
3363 |
+
"optional": true,
|
3364 |
+
"requires": {
|
3365 |
+
"ms": "^2.1.1"
|
3366 |
+
}
|
3367 |
+
},
|
3368 |
+
"deep-extend": {
|
3369 |
+
"version": "0.6.0",
|
3370 |
+
"bundled": true,
|
3371 |
+
"dev": true,
|
3372 |
+
"optional": true
|
3373 |
+
},
|
3374 |
+
"delegates": {
|
3375 |
+
"version": "1.0.0",
|
3376 |
+
"bundled": true,
|
3377 |
+
"dev": true,
|
3378 |
+
"optional": true
|
3379 |
+
},
|
3380 |
+
"detect-libc": {
|
3381 |
+
"version": "1.0.3",
|
3382 |
+
"bundled": true,
|
3383 |
+
"dev": true,
|
3384 |
+
"optional": true
|
3385 |
+
},
|
3386 |
+
"fs-minipass": {
|
3387 |
+
"version": "1.2.7",
|
3388 |
+
"bundled": true,
|
3389 |
+
"dev": true,
|
3390 |
+
"optional": true,
|
3391 |
+
"requires": {
|
3392 |
+
"minipass": "^2.6.0"
|
3393 |
+
}
|
3394 |
+
},
|
3395 |
+
"fs.realpath": {
|
3396 |
+
"version": "1.0.0",
|
3397 |
+
"bundled": true,
|
3398 |
+
"dev": true,
|
3399 |
+
"optional": true
|
3400 |
+
},
|
3401 |
+
"gauge": {
|
3402 |
+
"version": "2.7.4",
|
3403 |
+
"bundled": true,
|
3404 |
+
"dev": true,
|
3405 |
+
"optional": true,
|
3406 |
+
"requires": {
|
3407 |
+
"aproba": "^1.0.3",
|
3408 |
+
"console-control-strings": "^1.0.0",
|
3409 |
+
"has-unicode": "^2.0.0",
|
3410 |
+
"object-assign": "^4.1.0",
|
3411 |
+
"signal-exit": "^3.0.0",
|
3412 |
+
"string-width": "^1.0.1",
|
3413 |
+
"strip-ansi": "^3.0.1",
|
3414 |
+
"wide-align": "^1.1.0"
|
3415 |
+
}
|
3416 |
+
},
|
3417 |
+
"glob": {
|
3418 |
+
"version": "7.1.6",
|
3419 |
+
"bundled": true,
|
3420 |
+
"dev": true,
|
3421 |
+
"optional": true,
|
3422 |
+
"requires": {
|
3423 |
+
"fs.realpath": "^1.0.0",
|
3424 |
+
"inflight": "^1.0.4",
|
3425 |
+
"inherits": "2",
|
3426 |
+
"minimatch": "^3.0.4",
|
3427 |
+
"once": "^1.3.0",
|
3428 |
+
"path-is-absolute": "^1.0.0"
|
3429 |
+
}
|
3430 |
+
},
|
3431 |
+
"has-unicode": {
|
3432 |
+
"version": "2.0.1",
|
3433 |
+
"bundled": true,
|
3434 |
+
"dev": true,
|
3435 |
+
"optional": true
|
3436 |
+
},
|
3437 |
+
"iconv-lite": {
|
3438 |
+
"version": "0.4.24",
|
3439 |
+
"bundled": true,
|
3440 |
+
"dev": true,
|
3441 |
+
"optional": true,
|
3442 |
+
"requires": {
|
3443 |
+
"safer-buffer": ">= 2.1.2 < 3"
|
3444 |
+
}
|
3445 |
+
},
|
3446 |
+
"ignore-walk": {
|
3447 |
+
"version": "3.0.3",
|
3448 |
+
"bundled": true,
|
3449 |
+
"dev": true,
|
3450 |
+
"optional": true,
|
3451 |
+
"requires": {
|
3452 |
+
"minimatch": "^3.0.4"
|
3453 |
+
}
|
3454 |
+
},
|
3455 |
+
"inflight": {
|
3456 |
+
"version": "1.0.6",
|
3457 |
+
"bundled": true,
|
3458 |
+
"dev": true,
|
3459 |
+
"optional": true,
|
3460 |
+
"requires": {
|
3461 |
+
"once": "^1.3.0",
|
3462 |
+
"wrappy": "1"
|
3463 |
+
}
|
3464 |
+
},
|
3465 |
+
"inherits": {
|
3466 |
+
"version": "2.0.4",
|
3467 |
+
"bundled": true,
|
3468 |
+
"dev": true,
|
3469 |
+
"optional": true
|
3470 |
+
},
|
3471 |
+
"ini": {
|
3472 |
+
"version": "1.3.5",
|
3473 |
+
"bundled": true,
|
3474 |
+
"dev": true,
|
3475 |
+
"optional": true
|
3476 |
+
},
|
3477 |
+
"is-fullwidth-code-point": {
|
3478 |
+
"version": "1.0.0",
|
3479 |
+
"bundled": true,
|
3480 |
+
"dev": true,
|
3481 |
+
"optional": true,
|
3482 |
+
"requires": {
|
3483 |
+
"number-is-nan": "^1.0.0"
|
3484 |
+
}
|
3485 |
+
},
|
3486 |
+
"isarray": {
|
3487 |
+
"version": "1.0.0",
|
3488 |
+
"bundled": true,
|
3489 |
+
"dev": true,
|
3490 |
+
"optional": true
|
3491 |
+
},
|
3492 |
+
"minimatch": {
|
3493 |
+
"version": "3.0.4",
|
3494 |
+
"bundled": true,
|
3495 |
+
"dev": true,
|
3496 |
+
"optional": true,
|
3497 |
+
"requires": {
|
3498 |
+
"brace-expansion": "^1.1.7"
|
3499 |
+
}
|
3500 |
+
},
|
3501 |
+
"minimist": {
|
3502 |
+
"version": "1.2.5",
|
3503 |
+
"bundled": true,
|
3504 |
+
"dev": true,
|
3505 |
+
"optional": true
|
3506 |
+
},
|
3507 |
+
"minipass": {
|
3508 |
+
"version": "2.9.0",
|
3509 |
+
"bundled": true,
|
3510 |
+
"dev": true,
|
3511 |
+
"optional": true,
|
3512 |
+
"requires": {
|
3513 |
+
"safe-buffer": "^5.1.2",
|
3514 |
+
"yallist": "^3.0.0"
|
3515 |
+
}
|
3516 |
+
},
|
3517 |
+
"minizlib": {
|
3518 |
+
"version": "1.3.3",
|
3519 |
+
"bundled": true,
|
3520 |
+
"dev": true,
|
3521 |
+
"optional": true,
|
3522 |
+
"requires": {
|
3523 |
+
"minipass": "^2.9.0"
|
3524 |
+
}
|
3525 |
+
},
|
3526 |
+
"mkdirp": {
|
3527 |
+
"version": "0.5.3",
|
3528 |
+
"bundled": true,
|
3529 |
+
"dev": true,
|
3530 |
+
"optional": true,
|
3531 |
+
"requires": {
|
3532 |
+
"minimist": "^1.2.5"
|
3533 |
+
}
|
3534 |
+
},
|
3535 |
+
"ms": {
|
3536 |
+
"version": "2.1.2",
|
3537 |
+
"bundled": true,
|
3538 |
+
"dev": true,
|
3539 |
+
"optional": true
|
3540 |
+
},
|
3541 |
+
"needle": {
|
3542 |
+
"version": "2.3.3",
|
3543 |
+
"bundled": true,
|
3544 |
+
"dev": true,
|
3545 |
+
"optional": true,
|
3546 |
+
"requires": {
|
3547 |
+
"debug": "^3.2.6",
|
3548 |
+
"iconv-lite": "^0.4.4",
|
3549 |
+
"sax": "^1.2.4"
|
3550 |
+
}
|
3551 |
+
},
|
3552 |
+
"node-pre-gyp": {
|
3553 |
+
"version": "0.14.0",
|
3554 |
+
"bundled": true,
|
3555 |
+
"dev": true,
|
3556 |
+
"optional": true,
|
3557 |
+
"requires": {
|
3558 |
+
"detect-libc": "^1.0.2",
|
3559 |
+
"mkdirp": "^0.5.1",
|
3560 |
+
"needle": "^2.2.1",
|
3561 |
+
"nopt": "^4.0.1",
|
3562 |
+
"npm-packlist": "^1.1.6",
|
3563 |
+
"npmlog": "^4.0.2",
|
3564 |
+
"rc": "^1.2.7",
|
3565 |
+
"rimraf": "^2.6.1",
|
3566 |
+
"semver": "^5.3.0",
|
3567 |
+
"tar": "^4.4.2"
|
3568 |
+
}
|
3569 |
+
},
|
3570 |
+
"nopt": {
|
3571 |
+
"version": "4.0.3",
|
3572 |
+
"bundled": true,
|
3573 |
+
"dev": true,
|
3574 |
+
"optional": true,
|
3575 |
+
"requires": {
|
3576 |
+
"abbrev": "1",
|
3577 |
+
"osenv": "^0.1.4"
|
3578 |
+
}
|
3579 |
+
},
|
3580 |
+
"npm-bundled": {
|
3581 |
+
"version": "1.1.1",
|
3582 |
+
"bundled": true,
|
3583 |
+
"dev": true,
|
3584 |
+
"optional": true,
|
3585 |
+
"requires": {
|
3586 |
+
"npm-normalize-package-bin": "^1.0.1"
|
3587 |
+
}
|
3588 |
+
},
|
3589 |
+
"npm-normalize-package-bin": {
|
3590 |
+
"version": "1.0.1",
|
3591 |
+
"bundled": true,
|
3592 |
+
"dev": true,
|
3593 |
+
"optional": true
|
3594 |
+
},
|
3595 |
+
"npm-packlist": {
|
3596 |
+
"version": "1.4.8",
|
3597 |
+
"bundled": true,
|
3598 |
+
"dev": true,
|
3599 |
+
"optional": true,
|
3600 |
+
"requires": {
|
3601 |
+
"ignore-walk": "^3.0.1",
|
3602 |
+
"npm-bundled": "^1.0.1",
|
3603 |
+
"npm-normalize-package-bin": "^1.0.1"
|
3604 |
+
}
|
3605 |
+
},
|
3606 |
+
"npmlog": {
|
3607 |
+
"version": "4.1.2",
|
3608 |
+
"bundled": true,
|
3609 |
+
"dev": true,
|
3610 |
+
"optional": true,
|
3611 |
+
"requires": {
|
3612 |
+
"are-we-there-yet": "~1.1.2",
|
3613 |
+
"console-control-strings": "~1.1.0",
|
3614 |
+
"gauge": "~2.7.3",
|
3615 |
+
"set-blocking": "~2.0.0"
|
3616 |
+
}
|
3617 |
+
},
|
3618 |
+
"number-is-nan": {
|
3619 |
+
"version": "1.0.1",
|
3620 |
+
"bundled": true,
|
3621 |
+
"dev": true,
|
3622 |
+
"optional": true
|
3623 |
+
},
|
3624 |
+
"object-assign": {
|
3625 |
+
"version": "4.1.1",
|
3626 |
+
"bundled": true,
|
3627 |
+
"dev": true,
|
3628 |
+
"optional": true
|
3629 |
+
},
|
3630 |
+
"once": {
|
3631 |
+
"version": "1.4.0",
|
3632 |
+
"bundled": true,
|
3633 |
+
"dev": true,
|
3634 |
+
"optional": true,
|
3635 |
+
"requires": {
|
3636 |
+
"wrappy": "1"
|
3637 |
+
}
|
3638 |
+
},
|
3639 |
+
"os-homedir": {
|
3640 |
+
"version": "1.0.2",
|
3641 |
+
"bundled": true,
|
3642 |
+
"dev": true,
|
3643 |
+
"optional": true
|
3644 |
+
},
|
3645 |
+
"os-tmpdir": {
|
3646 |
+
"version": "1.0.2",
|
3647 |
+
"bundled": true,
|
3648 |
+
"dev": true,
|
3649 |
+
"optional": true
|
3650 |
+
},
|
3651 |
+
"osenv": {
|
3652 |
+
"version": "0.1.5",
|
3653 |
+
"bundled": true,
|
3654 |
+
"dev": true,
|
3655 |
+
"optional": true,
|
3656 |
+
"requires": {
|
3657 |
+
"os-homedir": "^1.0.0",
|
3658 |
+
"os-tmpdir": "^1.0.0"
|
3659 |
+
}
|
3660 |
+
},
|
3661 |
+
"path-is-absolute": {
|
3662 |
+
"version": "1.0.1",
|
3663 |
+
"bundled": true,
|
3664 |
+
"dev": true,
|
3665 |
+
"optional": true
|
3666 |
+
},
|
3667 |
+
"process-nextick-args": {
|
3668 |
+
"version": "2.0.1",
|
3669 |
+
"bundled": true,
|
3670 |
+
"dev": true,
|
3671 |
+
"optional": true
|
3672 |
+
},
|
3673 |
+
"rc": {
|
3674 |
+
"version": "1.2.8",
|
3675 |
+
"bundled": true,
|
3676 |
+
"dev": true,
|
3677 |
+
"optional": true,
|
3678 |
+
"requires": {
|
3679 |
+
"deep-extend": "^0.6.0",
|
3680 |
+
"ini": "~1.3.0",
|
3681 |
+
"minimist": "^1.2.0",
|
3682 |
+
"strip-json-comments": "~2.0.1"
|
3683 |
+
}
|
3684 |
+
},
|
3685 |
+
"readable-stream": {
|
3686 |
+
"version": "2.3.7",
|
3687 |
+
"bundled": true,
|
3688 |
+
"dev": true,
|
3689 |
+
"optional": true,
|
3690 |
+
"requires": {
|
3691 |
+
"core-util-is": "~1.0.0",
|
3692 |
+
"inherits": "~2.0.3",
|
3693 |
+
"isarray": "~1.0.0",
|
3694 |
+
"process-nextick-args": "~2.0.0",
|
3695 |
+
"safe-buffer": "~5.1.1",
|
3696 |
+
"string_decoder": "~1.1.1",
|
3697 |
+
"util-deprecate": "~1.0.1"
|
3698 |
+
}
|
3699 |
+
},
|
3700 |
+
"rimraf": {
|
3701 |
+
"version": "2.7.1",
|
3702 |
+
"bundled": true,
|
3703 |
+
"dev": true,
|
3704 |
+
"optional": true,
|
3705 |
+
"requires": {
|
3706 |
+
"glob": "^7.1.3"
|
3707 |
+
}
|
3708 |
+
},
|
3709 |
+
"safe-buffer": {
|
3710 |
+
"version": "5.1.2",
|
3711 |
+
"bundled": true,
|
3712 |
+
"dev": true,
|
3713 |
+
"optional": true
|
3714 |
+
},
|
3715 |
+
"safer-buffer": {
|
3716 |
+
"version": "2.1.2",
|
3717 |
+
"bundled": true,
|
3718 |
+
"dev": true,
|
3719 |
+
"optional": true
|
3720 |
+
},
|
3721 |
+
"sax": {
|
3722 |
+
"version": "1.2.4",
|
3723 |
+
"bundled": true,
|
3724 |
+
"dev": true,
|
3725 |
+
"optional": true
|
3726 |
+
},
|
3727 |
+
"semver": {
|
3728 |
+
"version": "5.7.1",
|
3729 |
+
"bundled": true,
|
3730 |
+
"dev": true,
|
3731 |
+
"optional": true
|
3732 |
+
},
|
3733 |
+
"set-blocking": {
|
3734 |
+
"version": "2.0.0",
|
3735 |
+
"bundled": true,
|
3736 |
+
"dev": true,
|
3737 |
+
"optional": true
|
3738 |
+
},
|
3739 |
+
"signal-exit": {
|
3740 |
+
"version": "3.0.2",
|
3741 |
+
"bundled": true,
|
3742 |
+
"dev": true,
|
3743 |
+
"optional": true
|
3744 |
+
},
|
3745 |
+
"string-width": {
|
3746 |
+
"version": "1.0.2",
|
3747 |
+
"bundled": true,
|
3748 |
+
"dev": true,
|
3749 |
+
"optional": true,
|
3750 |
+
"requires": {
|
3751 |
+
"code-point-at": "^1.0.0",
|
3752 |
+
"is-fullwidth-code-point": "^1.0.0",
|
3753 |
+
"strip-ansi": "^3.0.0"
|
3754 |
+
}
|
3755 |
+
},
|
3756 |
+
"string_decoder": {
|
3757 |
+
"version": "1.1.1",
|
3758 |
+
"bundled": true,
|
3759 |
+
"dev": true,
|
3760 |
+
"optional": true,
|
3761 |
+
"requires": {
|
3762 |
+
"safe-buffer": "~5.1.0"
|
3763 |
+
}
|
3764 |
+
},
|
3765 |
+
"strip-ansi": {
|
3766 |
+
"version": "3.0.1",
|
3767 |
+
"bundled": true,
|
3768 |
+
"dev": true,
|
3769 |
+
"optional": true,
|
3770 |
+
"requires": {
|
3771 |
+
"ansi-regex": "^2.0.0"
|
3772 |
+
}
|
3773 |
+
},
|
3774 |
+
"strip-json-comments": {
|
3775 |
+
"version": "2.0.1",
|
3776 |
+
"bundled": true,
|
3777 |
+
"dev": true,
|
3778 |
+
"optional": true
|
3779 |
+
},
|
3780 |
+
"tar": {
|
3781 |
+
"version": "4.4.13",
|
3782 |
+
"bundled": true,
|
3783 |
+
"dev": true,
|
3784 |
+
"optional": true,
|
3785 |
+
"requires": {
|
3786 |
+
"chownr": "^1.1.1",
|
3787 |
+
"fs-minipass": "^1.2.5",
|
3788 |
+
"minipass": "^2.8.6",
|
3789 |
+
"minizlib": "^1.2.1",
|
3790 |
+
"mkdirp": "^0.5.0",
|
3791 |
+
"safe-buffer": "^5.1.2",
|
3792 |
+
"yallist": "^3.0.3"
|
3793 |
+
}
|
3794 |
+
},
|
3795 |
+
"util-deprecate": {
|
3796 |
+
"version": "1.0.2",
|
3797 |
+
"bundled": true,
|
3798 |
+
"dev": true,
|
3799 |
+
"optional": true
|
3800 |
+
},
|
3801 |
+
"wide-align": {
|
3802 |
+
"version": "1.1.3",
|
3803 |
+
"bundled": true,
|
3804 |
+
"dev": true,
|
3805 |
+
"optional": true,
|
3806 |
+
"requires": {
|
3807 |
+
"string-width": "^1.0.2 || 2"
|
3808 |
+
}
|
3809 |
+
},
|
3810 |
+
"wrappy": {
|
3811 |
+
"version": "1.0.2",
|
3812 |
+
"bundled": true,
|
3813 |
+
"dev": true,
|
3814 |
+
"optional": true
|
3815 |
+
},
|
3816 |
+
"yallist": {
|
3817 |
+
"version": "3.1.1",
|
3818 |
+
"bundled": true,
|
3819 |
+
"dev": true,
|
3820 |
+
"optional": true
|
3821 |
+
}
|
3822 |
+
}
|
3823 |
+
},
|
3824 |
+
"function-bind": {
|
3825 |
+
"version": "1.1.1",
|
3826 |
+
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
|
3827 |
+
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
|
3828 |
+
"dev": true
|
3829 |
+
},
|
3830 |
+
"functional-red-black-tree": {
|
3831 |
+
"version": "1.0.1",
|
3832 |
+
"resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
|
3833 |
+
"integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
|
3834 |
+
"dev": true
|
3835 |
+
},
|
3836 |
+
"gensync": {
|
3837 |
+
"version": "1.0.0-beta.1",
|
3838 |
+
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz",
|
3839 |
+
"integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==",
|
3840 |
+
"dev": true
|
3841 |
+
},
|
3842 |
+
"get-caller-file": {
|
3843 |
+
"version": "2.0.5",
|
3844 |
+
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
|
3845 |
+
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
|
3846 |
+
"dev": true
|
3847 |
+
},
|
3848 |
+
"get-stream": {
|
3849 |
+
"version": "4.1.0",
|
3850 |
+
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
|
3851 |
+
"integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
|
3852 |
+
"dev": true,
|
3853 |
+
"requires": {
|
3854 |
+
"pump": "^3.0.0"
|
3855 |
+
}
|
3856 |
+
},
|
3857 |
+
"get-value": {
|
3858 |
+
"version": "2.0.6",
|
3859 |
+
"resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
|
3860 |
+
"integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
|
3861 |
+
"dev": true
|
3862 |
+
},
|
3863 |
+
"gettext-parser": {
|
3864 |
+
"version": "1.4.0",
|
3865 |
+
"resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-1.4.0.tgz",
|
3866 |
+
"integrity": "sha512-sedZYLHlHeBop/gZ1jdg59hlUEcpcZJofLq2JFwJT1zTqAU3l2wFv6IsuwFHGqbiT9DWzMUW4/em2+hspnmMMA==",
|
3867 |
+
"requires": {
|
3868 |
+
"encoding": "^0.1.12",
|
3869 |
+
"safe-buffer": "^5.1.1"
|
3870 |
+
}
|
3871 |
+
},
|
3872 |
+
"glob": {
|
3873 |
+
"version": "7.1.6",
|
3874 |
+
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
|
3875 |
+
"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
|
3876 |
+
"dev": true,
|
3877 |
+
"requires": {
|
3878 |
+
"fs.realpath": "^1.0.0",
|
3879 |
+
"inflight": "^1.0.4",
|
3880 |
+
"inherits": "2",
|
3881 |
+
"minimatch": "^3.0.4",
|
3882 |
+
"once": "^1.3.0",
|
3883 |
+
"path-is-absolute": "^1.0.0"
|
3884 |
+
}
|
3885 |
+
},
|
3886 |
+
"glob-parent": {
|
3887 |
+
"version": "5.1.0",
|
3888 |
+
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz",
|
3889 |
+
"integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==",
|
3890 |
+
"dev": true,
|
3891 |
+
"requires": {
|
3892 |
+
"is-glob": "^4.0.1"
|
3893 |
+
}
|
3894 |
+
},
|
3895 |
+
"global-modules": {
|
3896 |
+
"version": "2.0.0",
|
3897 |
+
"resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
|
3898 |
+
"integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
|
3899 |
+
"dev": true,
|
3900 |
+
"requires": {
|
3901 |
+
"global-prefix": "^3.0.0"
|
3902 |
+
},
|
3903 |
+
"dependencies": {
|
3904 |
+
"global-prefix": {
|
3905 |
+
"version": "3.0.0",
|
3906 |
+
"resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
|
3907 |
+
"integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
|
3908 |
+
"dev": true,
|
3909 |
+
"requires": {
|
3910 |
+
"ini": "^1.3.5",
|
3911 |
+
"kind-of": "^6.0.2",
|
3912 |
+
"which": "^1.3.1"
|
3913 |
+
}
|
3914 |
+
}
|
3915 |
+
}
|
3916 |
+
},
|
3917 |
+
"global-prefix": {
|
3918 |
+
"version": "1.0.2",
|
3919 |
+
"resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
|
3920 |
+
"integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
|
3921 |
+
"dev": true,
|
3922 |
+
"requires": {
|
3923 |
+
"expand-tilde": "^2.0.2",
|
3924 |
+
"homedir-polyfill": "^1.0.1",
|
3925 |
+
"ini": "^1.3.4",
|
3926 |
+
"is-windows": "^1.0.1",
|
3927 |
+
"which": "^1.2.14"
|
3928 |
+
}
|
3929 |
+
},
|
3930 |
+
"globals": {
|
3931 |
+
"version": "11.12.0",
|
3932 |
+
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
|
3933 |
+
"integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
|
3934 |
+
"dev": true
|
3935 |
+
},
|
3936 |
+
"graceful-fs": {
|
3937 |
+
"version": "4.2.3",
|
3938 |
+
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
|
3939 |
+
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
|
3940 |
+
"dev": true
|
3941 |
+
},
|
3942 |
+
"has": {
|
3943 |
+
"version": "1.0.3",
|
3944 |
+
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
|
3945 |
+
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
|
3946 |
+
"dev": true,
|
3947 |
+
"requires": {
|
3948 |
+
"function-bind": "^1.1.1"
|
3949 |
+
}
|
3950 |
+
},
|
3951 |
+
"has-flag": {
|
3952 |
+
"version": "3.0.0",
|
3953 |
+
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
3954 |
+
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
|
3955 |
+
"dev": true
|
3956 |
+
},
|
3957 |
+
"has-symbols": {
|
3958 |
+
"version": "1.0.1",
|
3959 |
+
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
|
3960 |
+
"integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
|
3961 |
+
"dev": true
|
3962 |
+
},
|
3963 |
+
"has-value": {
|
3964 |
+
"version": "1.0.0",
|
3965 |
+
"resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
|
3966 |
+
"integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
|
3967 |
+
"dev": true,
|
3968 |
+
"requires": {
|
3969 |
+
"get-value": "^2.0.6",
|
3970 |
+
"has-values": "^1.0.0",
|
3971 |
+
"isobject": "^3.0.0"
|
3972 |
+
}
|
3973 |
+
},
|
3974 |
+
"has-values": {
|
3975 |
+
"version": "1.0.0",
|
3976 |
+
"resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
|
3977 |
+
"integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
|
3978 |
+
"dev": true,
|
3979 |
+
"requires": {
|
3980 |
+
"is-number": "^3.0.0",
|
3981 |
+
"kind-of": "^4.0.0"
|
3982 |
+
},
|
3983 |
+
"dependencies": {
|
3984 |
+
"kind-of": {
|
3985 |
+
"version": "4.0.0",
|
3986 |
+
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
|
3987 |
+
"integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
|
3988 |
+
"dev": true,
|
3989 |
+
"requires": {
|
3990 |
+
"is-buffer": "^1.1.5"
|
3991 |
+
}
|
3992 |
+
}
|
3993 |
+
}
|
3994 |
+
},
|
3995 |
+
"hash-base": {
|
3996 |
+
"version": "3.0.4",
|
3997 |
+
"resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
|
3998 |
+
"integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
|
3999 |
+
"dev": true,
|
4000 |
+
"requires": {
|
4001 |
+
"inherits": "^2.0.1",
|
4002 |
+
"safe-buffer": "^5.0.1"
|
4003 |
+
}
|
4004 |
+
},
|
4005 |
+
"hash.js": {
|
4006 |
+
"version": "1.1.7",
|
4007 |
+
"resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
|
4008 |
+
"integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
|
4009 |
+
"dev": true,
|
4010 |
+
"requires": {
|
4011 |
+
"inherits": "^2.0.3",
|
4012 |
+
"minimalistic-assert": "^1.0.1"
|
4013 |
+
}
|
4014 |
+
},
|
4015 |
+
"hmac-drbg": {
|
4016 |
+
"version": "1.0.1",
|
4017 |
+
"resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
|
4018 |
+
"integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
|
4019 |
+
"dev": true,
|
4020 |
+
"requires": {
|
4021 |
+
"hash.js": "^1.0.3",
|
4022 |
+
"minimalistic-assert": "^1.0.0",
|
4023 |
+
"minimalistic-crypto-utils": "^1.0.1"
|
4024 |
+
}
|
4025 |
+
},
|
4026 |
+
"homedir-polyfill": {
|
4027 |
+
"version": "1.0.3",
|
4028 |
+
"resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
|
4029 |
+
"integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
|
4030 |
+
"dev": true,
|
4031 |
+
"requires": {
|
4032 |
+
"parse-passwd": "^1.0.0"
|
4033 |
+
}
|
4034 |
+
},
|
4035 |
+
"https-browserify": {
|
4036 |
+
"version": "1.0.0",
|
4037 |
+
"resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
|
4038 |
+
"integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
|
4039 |
+
"dev": true
|
4040 |
+
},
|
4041 |
+
"iconv-lite": {
|
4042 |
+
"version": "0.4.24",
|
4043 |
+
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
|
4044 |
+
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
|
4045 |
+
"requires": {
|
4046 |
+
"safer-buffer": ">= 2.1.2 < 3"
|
4047 |
+
}
|
4048 |
+
},
|
4049 |
+
"icss-utils": {
|
4050 |
+
"version": "4.1.1",
|
4051 |
+
"resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz",
|
4052 |
+
"integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==",
|
4053 |
+
"dev": true,
|
4054 |
+
"requires": {
|
4055 |
+
"postcss": "^7.0.14"
|
4056 |
+
}
|
4057 |
+
},
|
4058 |
+
"ieee754": {
|
4059 |
+
"version": "1.1.13",
|
4060 |
+
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
|
4061 |
+
"integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==",
|
4062 |
+
"dev": true
|
4063 |
+
},
|
4064 |
+
"iferr": {
|
4065 |
+
"version": "0.1.5",
|
4066 |
+
"resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
|
4067 |
+
"integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
|
4068 |
+
"dev": true
|
4069 |
+
},
|
4070 |
+
"ignore": {
|
4071 |
+
"version": "4.0.6",
|
4072 |
+
"resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
|
4073 |
+
"integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
|
4074 |
+
"dev": true
|
4075 |
+
},
|
4076 |
+
"import-fresh": {
|
4077 |
+
"version": "3.2.1",
|
4078 |
+
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz",
|
4079 |
+
"integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==",
|
4080 |
+
"dev": true,
|
4081 |
+
"requires": {
|
4082 |
+
"parent-module": "^1.0.0",
|
4083 |
+
"resolve-from": "^4.0.0"
|
4084 |
+
}
|
4085 |
+
},
|
4086 |
+
"import-local": {
|
4087 |
+
"version": "2.0.0",
|
4088 |
+
"resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
|
4089 |
+
"integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
|
4090 |
+
"dev": true,
|
4091 |
+
"requires": {
|
4092 |
+
"pkg-dir": "^3.0.0",
|
4093 |
+
"resolve-cwd": "^2.0.0"
|
4094 |
+
}
|
4095 |
+
},
|
4096 |
+
"imurmurhash": {
|
4097 |
+
"version": "0.1.4",
|
4098 |
+
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
|
4099 |
+
"integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
|
4100 |
+
"dev": true
|
4101 |
+
},
|
4102 |
+
"indexes-of": {
|
4103 |
+
"version": "1.0.1",
|
4104 |
+
"resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
|
4105 |
+
"integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
|
4106 |
+
"dev": true
|
4107 |
+
},
|
4108 |
+
"infer-owner": {
|
4109 |
+
"version": "1.0.4",
|
4110 |
+
"resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
|
4111 |
+
"integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
|
4112 |
+
"dev": true
|
4113 |
+
},
|
4114 |
+
"inflight": {
|
4115 |
+
"version": "1.0.6",
|
4116 |
+
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
4117 |
+
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
|
4118 |
+
"dev": true,
|
4119 |
+
"requires": {
|
4120 |
+
"once": "^1.3.0",
|
4121 |
+
"wrappy": "1"
|
4122 |
+
}
|
4123 |
+
},
|
4124 |
+
"inherits": {
|
4125 |
+
"version": "2.0.4",
|
4126 |
+
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
4127 |
+
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
4128 |
+
"dev": true
|
4129 |
+
},
|
4130 |
+
"ini": {
|
4131 |
+
"version": "1.3.5",
|
4132 |
+
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
|
4133 |
+
"integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
|
4134 |
+
"dev": true
|
4135 |
+
},
|
4136 |
+
"inquirer": {
|
4137 |
+
"version": "7.1.0",
|
4138 |
+
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz",
|
4139 |
+
"integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==",
|
4140 |
+
"dev": true,
|
4141 |
+
"requires": {
|
4142 |
+
"ansi-escapes": "^4.2.1",
|
4143 |
+
"chalk": "^3.0.0",
|
4144 |
+
"cli-cursor": "^3.1.0",
|
4145 |
+
"cli-width": "^2.0.0",
|
4146 |
+
"external-editor": "^3.0.3",
|
4147 |
+
"figures": "^3.0.0",
|
4148 |
+
"lodash": "^4.17.15",
|
4149 |
+
"mute-stream": "0.0.8",
|
4150 |
+
"run-async": "^2.4.0",
|
4151 |
+
"rxjs": "^6.5.3",
|
4152 |
+
"string-width": "^4.1.0",
|
4153 |
+
"strip-ansi": "^6.0.0",
|
4154 |
+
"through": "^2.3.6"
|
4155 |
+
},
|
4156 |
+
"dependencies": {
|
4157 |
+
"ansi-styles": {
|
4158 |
+
"version": "4.2.1",
|
4159 |
+
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
|
4160 |
+
"integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
|
4161 |
+
"dev": true,
|
4162 |
+
"requires": {
|
4163 |
+
"@types/color-name": "^1.1.1",
|
4164 |
+
"color-convert": "^2.0.1"
|
4165 |
+
}
|
4166 |
+
},
|
4167 |
+
"chalk": {
|
4168 |
+
"version": "3.0.0",
|
4169 |
+
"resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
|
4170 |
+
"integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
|
4171 |
+
"dev": true,
|
4172 |
+
"requires": {
|
4173 |
+
"ansi-styles": "^4.1.0",
|
4174 |
+
"supports-color": "^7.1.0"
|
4175 |
+
}
|
4176 |
+
},
|
4177 |
+
"color-convert": {
|
4178 |
+
"version": "2.0.1",
|
4179 |
+
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
4180 |
+
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
4181 |
+
"dev": true,
|
4182 |
+
"requires": {
|
4183 |
+
"color-name": "~1.1.4"
|
4184 |
+
}
|
4185 |
+
},
|
4186 |
+
"color-name": {
|
4187 |
+
"version": "1.1.4",
|
4188 |
+
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
4189 |
+
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
|
4190 |
+
"dev": true
|
4191 |
+
},
|
4192 |
+
"has-flag": {
|
4193 |
+
"version": "4.0.0",
|
4194 |
+
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
4195 |
+
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
|
4196 |
+
"dev": true
|
4197 |
+
},
|
4198 |
+
"strip-ansi": {
|
4199 |
+
"version": "6.0.0",
|
4200 |
+
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
|
4201 |
+
"integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
|
4202 |
+
"dev": true,
|
4203 |
+
"requires": {
|
4204 |
+
"ansi-regex": "^5.0.0"
|
4205 |
+
}
|
4206 |
+
},
|
4207 |
+
"supports-color": {
|
4208 |
+
"version": "7.1.0",
|
4209 |
+
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
|
4210 |
+
"integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
|
4211 |
+
"dev": true,
|
4212 |
+
"requires": {
|
4213 |
+
"has-flag": "^4.0.0"
|
4214 |
+
}
|
4215 |
+
}
|
4216 |
+
}
|
4217 |
+
},
|
4218 |
+
"internal-slot": {
|
4219 |
+
"version": "1.0.2",
|
4220 |
+
"resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz",
|
4221 |
+
"integrity": "sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g==",
|
4222 |
+
"dev": true,
|
4223 |
+
"requires": {
|
4224 |
+
"es-abstract": "^1.17.0-next.1",
|
4225 |
+
"has": "^1.0.3",
|
4226 |
+
"side-channel": "^1.0.2"
|
4227 |
+
}
|
4228 |
+
},
|
4229 |
+
"interpret": {
|
4230 |
+
"version": "1.2.0",
|
4231 |
+
"resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz",
|
4232 |
+
"integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==",
|
4233 |
+
"dev": true
|
4234 |
+
},
|
4235 |
+
"invariant": {
|
4236 |
+
"version": "2.2.4",
|
4237 |
+
"resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
|
4238 |
+
"integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
|
4239 |
+
"dev": true,
|
4240 |
+
"requires": {
|
4241 |
+
"loose-envify": "^1.0.0"
|
4242 |
+
}
|
4243 |
+
},
|
4244 |
+
"invert-kv": {
|
4245 |
+
"version": "2.0.0",
|
4246 |
+
"resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
|
4247 |
+
"integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
|
4248 |
+
"dev": true
|
4249 |
+
},
|
4250 |
+
"is-accessor-descriptor": {
|
4251 |
+
"version": "0.1.6",
|
4252 |
+
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
|
4253 |
+
"integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
|
4254 |
+
"dev": true,
|
4255 |
+
"requires": {
|
4256 |
+
"kind-of": "^3.0.2"
|
4257 |
+
},
|
4258 |
+
"dependencies": {
|
4259 |
+
"kind-of": {
|
4260 |
+
"version": "3.2.2",
|
4261 |
+
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
|
4262 |
+
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
|
4263 |
+
"dev": true,
|
4264 |
+
"requires": {
|
4265 |
+
"is-buffer": "^1.1.5"
|
4266 |
+
}
|
4267 |
+
}
|
4268 |
+
}
|
4269 |
+
},
|
4270 |
+
"is-binary-path": {
|
4271 |
+
"version": "1.0.1",
|
4272 |
+
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
|
4273 |
+
"integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
|
4274 |
+
"dev": true,
|
4275 |
+
"requires": {
|
4276 |
+
"binary-extensions": "^1.0.0"
|
4277 |
+
}
|
4278 |
+
},
|
4279 |
+
"is-buffer": {
|
4280 |
+
"version": "1.1.6",
|
4281 |
+
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
|
4282 |
+
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
|
4283 |
+
"dev": true
|
4284 |
+
},
|
4285 |
+
"is-callable": {
|
4286 |
+
"version": "1.1.5",
|
4287 |
+
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz",
|
4288 |
+
"integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==",
|
4289 |
+
"dev": true
|
4290 |
+
},
|
4291 |
+
"is-data-descriptor": {
|
4292 |
+
"version": "0.1.4",
|
4293 |
+
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
|
4294 |
+
"integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
|
4295 |
+
"dev": true,
|
4296 |
+
"requires": {
|
4297 |
+
"kind-of": "^3.0.2"
|
4298 |
+
},
|
4299 |
+
"dependencies": {
|
4300 |
+
"kind-of": {
|
4301 |
+
"version": "3.2.2",
|
4302 |
+
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
|
4303 |
+
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
|
4304 |
+
"dev": true,
|
4305 |
+
"requires": {
|
4306 |
+
"is-buffer": "^1.1.5"
|
4307 |
+
}
|
4308 |
+
}
|
4309 |
+
}
|
4310 |
+
},
|
4311 |
+
"is-date-object": {
|
4312 |
+
"version": "1.0.2",
|
4313 |
+
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
|
4314 |
+
"integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==",
|
4315 |
+
"dev": true
|
4316 |
+
},
|
4317 |
+
"is-descriptor": {
|
4318 |
+
"version": "0.1.6",
|
4319 |
+
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
|
4320 |
+
"integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
|
4321 |
+
"dev": true,
|
4322 |
+
"requires": {
|
4323 |
+
"is-accessor-descriptor": "^0.1.6",
|
4324 |
+
"is-data-descriptor": "^0.1.4",
|
4325 |
+
"kind-of": "^5.0.0"
|
4326 |
+
},
|
4327 |
+
"dependencies": {
|
4328 |
+
"kind-of": {
|
4329 |
+
"version": "5.1.0",
|
4330 |
+
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
|
4331 |
+
"integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
|
4332 |
+
"dev": true
|
4333 |
+
}
|
4334 |
+
}
|
4335 |
+
},
|
4336 |
+
"is-extendable": {
|
4337 |
+
"version": "0.1.1",
|
4338 |
+
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
|
4339 |
+
"integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
|
4340 |
+
"dev": true
|
4341 |
+
},
|
4342 |
+
"is-extglob": {
|
4343 |
+
"version": "2.1.1",
|
4344 |
+
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
|
4345 |
+
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
|
4346 |
+
"dev": true
|
4347 |
+
},
|
4348 |
+
"is-fullwidth-code-point": {
|
4349 |
+
"version": "3.0.0",
|
4350 |
+
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
4351 |
+
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
|
4352 |
+
"dev": true
|
4353 |
+
},
|
4354 |
+
"is-glob": {
|
4355 |
+
"version": "4.0.1",
|
4356 |
+
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
|
4357 |
+
"integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
|
4358 |
+
"dev": true,
|
4359 |
+
"requires": {
|
4360 |
+
"is-extglob": "^2.1.1"
|
4361 |
+
}
|
4362 |
+
},
|
4363 |
+
"is-number": {
|
4364 |
+
"version": "3.0.0",
|
4365 |
+
"resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
|
4366 |
+
"integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
|
4367 |
+
"dev": true,
|
4368 |
+
"requires": {
|
4369 |
+
"kind-of": "^3.0.2"
|
4370 |
+
},
|
4371 |
+
"dependencies": {
|
4372 |
+
"kind-of": {
|
4373 |
+
"version": "3.2.2",
|
4374 |
+
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
|
4375 |
+
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
|
4376 |
+
"dev": true,
|
4377 |
+
"requires": {
|
4378 |
+
"is-buffer": "^1.1.5"
|
4379 |
+
}
|
4380 |
+
}
|
4381 |
+
}
|
4382 |
+
},
|
4383 |
+
"is-plain-object": {
|
4384 |
+
"version": "2.0.4",
|
4385 |
+
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
|
4386 |
+
"integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
|
4387 |
+
"dev": true,
|
4388 |
+
"requires": {
|
4389 |
+
"isobject": "^3.0.1"
|
4390 |
+
}
|
4391 |
+
},
|
4392 |
+
"is-promise": {
|
4393 |
+
"version": "2.1.0",
|
4394 |
+
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
|
4395 |
+
"integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
|
4396 |
+
"dev": true
|
4397 |
+
},
|
4398 |
+
"is-regex": {
|
4399 |
+
"version": "1.0.5",
|
4400 |
+
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz",
|
4401 |
+
"integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==",
|
4402 |
+
"dev": true,
|
4403 |
+
"requires": {
|
4404 |
+
"has": "^1.0.3"
|
4405 |
+
}
|
4406 |
+
},
|
4407 |
+
"is-stream": {
|
4408 |
+
"version": "1.1.0",
|
4409 |
+
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
|
4410 |
+
"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
|
4411 |
+
"dev": true
|
4412 |
+
},
|
4413 |
+
"is-string": {
|
4414 |
+
"version": "1.0.5",
|
4415 |
+
"resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz",
|
4416 |
+
"integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==",
|
4417 |
+
"dev": true
|
4418 |
+
},
|
4419 |
+
"is-symbol": {
|
4420 |
+
"version": "1.0.3",
|
4421 |
+
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
|
4422 |
+
"integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
|
4423 |
+
"dev": true,
|
4424 |
+
"requires": {
|
4425 |
+
"has-symbols": "^1.0.1"
|
4426 |
+
}
|
4427 |
+
},
|
4428 |
+
"is-windows": {
|
4429 |
+
"version": "1.0.2",
|
4430 |
+
"resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
|
4431 |
+
"integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
|
4432 |
+
"dev": true
|
4433 |
+
},
|
4434 |
+
"is-wsl": {
|
4435 |
+
"version": "1.1.0",
|
4436 |
+
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
|
4437 |
+
"integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
|
4438 |
+
"dev": true
|
4439 |
+
},
|
4440 |
+
"isarray": {
|
4441 |
+
"version": "1.0.0",
|
4442 |
+
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
|
4443 |
+
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
|
4444 |
+
"dev": true
|
4445 |
+
},
|
4446 |
+
"isexe": {
|
4447 |
+
"version": "2.0.0",
|
4448 |
+
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
4449 |
+
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
|
4450 |
+
"dev": true
|
4451 |
+
},
|
4452 |
+
"isobject": {
|
4453 |
+
"version": "3.0.1",
|
4454 |
+
"resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
|
4455 |
+
"integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
|
4456 |
+
"dev": true
|
4457 |
+
},
|
4458 |
+
"js-tokens": {
|
4459 |
+
"version": "4.0.0",
|
4460 |
+
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
|
4461 |
+
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
|
4462 |
+
"dev": true
|
4463 |
+
},
|
4464 |
+
"js-yaml": {
|
4465 |
+
"version": "3.13.1",
|
4466 |
+
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
|
4467 |
+
"integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
|
4468 |
+
"dev": true,
|
4469 |
+
"requires": {
|
4470 |
+
"argparse": "^1.0.7",
|
4471 |
+
"esprima": "^4.0.0"
|
4472 |
+
}
|
4473 |
+
},
|
4474 |
+
"jsesc": {
|
4475 |
+
"version": "2.5.2",
|
4476 |
+
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
|
4477 |
+
"integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
|
4478 |
+
"dev": true
|
4479 |
+
},
|
4480 |
+
"json-parse-better-errors": {
|
4481 |
+
"version": "1.0.2",
|
4482 |
+
"resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
|
4483 |
+
"integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
|
4484 |
+
"dev": true
|
4485 |
+
},
|
4486 |
+
"json-schema-traverse": {
|
4487 |
+
"version": "0.4.1",
|
4488 |
+
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
|
4489 |
+
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
|
4490 |
+
"dev": true
|
4491 |
+
},
|
4492 |
+
"json-stable-stringify-without-jsonify": {
|
4493 |
+
"version": "1.0.1",
|
4494 |
+
"resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
|
4495 |
+
"integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
|
4496 |
+
"dev": true
|
4497 |
+
},
|
4498 |
+
"json5": {
|
4499 |
+
"version": "2.1.3",
|
4500 |
+
"resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
|
4501 |
+
"integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
|
4502 |
+
"dev": true,
|
4503 |
+
"requires": {
|
4504 |
+
"minimist": "^1.2.5"
|
4505 |
+
},
|
4506 |
+
"dependencies": {
|
4507 |
+
"minimist": {
|
4508 |
+
"version": "1.2.5",
|
4509 |
+
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
|
4510 |
+
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
|
4511 |
+
"dev": true
|
4512 |
+
}
|
4513 |
+
}
|
4514 |
+
},
|
4515 |
+
"jsonfile": {
|
4516 |
+
"version": "6.0.1",
|
4517 |
+
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz",
|
4518 |
+
"integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==",
|
4519 |
+
"dev": true,
|
4520 |
+
"requires": {
|
4521 |
+
"graceful-fs": "^4.1.6",
|
4522 |
+
"universalify": "^1.0.0"
|
4523 |
+
}
|
4524 |
+
},
|
4525 |
+
"jsx-ast-utils": {
|
4526 |
+
"version": "2.2.3",
|
4527 |
+
"resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz",
|
4528 |
+
"integrity": "sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA==",
|
4529 |
+
"dev": true,
|
4530 |
+
"requires": {
|
4531 |
+
"array-includes": "^3.0.3",
|
4532 |
+
"object.assign": "^4.1.0"
|
4533 |
+
}
|
4534 |
+
},
|
4535 |
+
"kind-of": {
|
4536 |
+
"version": "6.0.3",
|
4537 |
+
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
|
4538 |
+
"integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
|
4539 |
+
"dev": true
|
4540 |
+
},
|
4541 |
+
"lcid": {
|
4542 |
+
"version": "2.0.0",
|
4543 |
+
"resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
|
4544 |
+
"integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
|
4545 |
+
"dev": true,
|
4546 |
+
"requires": {
|
4547 |
+
"invert-kv": "^2.0.0"
|
4548 |
+
}
|
4549 |
+
},
|
4550 |
+
"leven": {
|
4551 |
+
"version": "3.1.0",
|
4552 |
+
"resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
|
4553 |
+
"integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
|
4554 |
+
"dev": true
|
4555 |
+
},
|
4556 |
+
"levenary": {
|
4557 |
+
"version": "1.1.1",
|
4558 |
+
"resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz",
|
4559 |
+
"integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==",
|
4560 |
+
"dev": true,
|
4561 |
+
"requires": {
|
4562 |
+
"leven": "^3.1.0"
|
4563 |
+
}
|
4564 |
+
},
|
4565 |
+
"levn": {
|
4566 |
+
"version": "0.3.0",
|
4567 |
+
"resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
|
4568 |
+
"integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
|
4569 |
+
"dev": true,
|
4570 |
+
"requires": {
|
4571 |
+
"prelude-ls": "~1.1.2",
|
4572 |
+
"type-check": "~0.3.2"
|
4573 |
+
}
|
4574 |
+
},
|
4575 |
+
"loader-fs-cache": {
|
4576 |
+
"version": "1.0.3",
|
4577 |
+
"resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz",
|
4578 |
+
"integrity": "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==",
|
4579 |
+
"dev": true,
|
4580 |
+
"requires": {
|
4581 |
+
"find-cache-dir": "^0.1.1",
|
4582 |
+
"mkdirp": "^0.5.1"
|
4583 |
+
},
|
4584 |
+
"dependencies": {
|
4585 |
+
"find-cache-dir": {
|
4586 |
+
"version": "0.1.1",
|
4587 |
+
"resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz",
|
4588 |
+
"integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=",
|
4589 |
+
"dev": true,
|
4590 |
+
"requires": {
|
4591 |
+
"commondir": "^1.0.1",
|
4592 |
+
"mkdirp": "^0.5.1",
|
4593 |
+
"pkg-dir": "^1.0.0"
|
4594 |
+
}
|
4595 |
+
},
|
4596 |
+
"find-up": {
|
4597 |
+
"version": "1.1.2",
|
4598 |
+
"resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
|
4599 |
+
"integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
|
4600 |
+
"dev": true,
|
4601 |
+
"requires": {
|
4602 |
+
"path-exists": "^2.0.0",
|
4603 |
+
"pinkie-promise": "^2.0.0"
|
4604 |
+
}
|
4605 |
+
},
|
4606 |
+
"path-exists": {
|
4607 |
+
"version": "2.1.0",
|
4608 |
+
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
|
4609 |
+
"integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
|
4610 |
+
"dev": true,
|
4611 |
+
"requires": {
|
4612 |
+
"pinkie-promise": "^2.0.0"
|
4613 |
+
}
|
4614 |
+
},
|
4615 |
+
"pkg-dir": {
|
4616 |
+
"version": "1.0.0",
|
4617 |
+
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz",
|
4618 |
+
"integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
|
4619 |
+
"dev": true,
|
4620 |
+
"requires": {
|
4621 |
+
"find-up": "^1.0.0"
|
4622 |
+
}
|
4623 |
+
}
|
4624 |
+
}
|
4625 |
+
},
|
4626 |
+
"loader-runner": {
|
4627 |
+
"version": "2.4.0",
|
4628 |
+
"resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz",
|
4629 |
+
"integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==",
|
4630 |
+
"dev": true
|
4631 |
+
},
|
4632 |
+
"loader-utils": {
|
4633 |
+
"version": "1.4.0",
|
4634 |
+
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
|
4635 |
+
"integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
|
4636 |
+
"dev": true,
|
4637 |
+
"requires": {
|
4638 |
+
"big.js": "^5.2.2",
|
4639 |
+
"emojis-list": "^3.0.0",
|
4640 |
+
"json5": "^1.0.1"
|
4641 |
+
},
|
4642 |
+
"dependencies": {
|
4643 |
+
"emojis-list": {
|
4644 |
+
"version": "3.0.0",
|
4645 |
+
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
|
4646 |
+
"integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
|
4647 |
+
"dev": true
|
4648 |
+
},
|
4649 |
+
"json5": {
|
4650 |
+
"version": "1.0.1",
|
4651 |
+
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
|
4652 |
+
"integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
|
4653 |
+
"dev": true,
|
4654 |
+
"requires": {
|
4655 |
+
"minimist": "^1.2.0"
|
4656 |
+
}
|
4657 |
+
},
|
4658 |
+
"minimist": {
|
4659 |
+
"version": "1.2.5",
|
4660 |
+
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
|
4661 |
+
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
|
4662 |
+
"dev": true
|
4663 |
+
}
|
4664 |
+
}
|
4665 |
+
},
|
4666 |
+
"locate-path": {
|
4667 |
+
"version": "3.0.0",
|
4668 |
+
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
|
4669 |
+
"integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
|
4670 |
+
"dev": true,
|
4671 |
+
"requires": {
|
4672 |
+
"p-locate": "^3.0.0",
|
4673 |
+
"path-exists": "^3.0.0"
|
4674 |
+
}
|
4675 |
+
},
|
4676 |
+
"lodash": {
|
4677 |
+
"version": "4.17.15",
|
4678 |
+
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
|
4679 |
+
"integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
|
4680 |
+
},
|
4681 |
+
"loose-envify": {
|
4682 |
+
"version": "1.4.0",
|
4683 |
+
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
|
4684 |
+
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
|
4685 |
+
"dev": true,
|
4686 |
+
"requires": {
|
4687 |
+
"js-tokens": "^3.0.0 || ^4.0.0"
|
4688 |
+
}
|
4689 |
+
},
|
4690 |
+
"lru-cache": {
|
4691 |
+
"version": "5.1.1",
|
4692 |
+
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
|
4693 |
+
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
|
4694 |
+
"dev": true,
|
4695 |
+
"requires": {
|
4696 |
+
"yallist": "^3.0.2"
|
4697 |
+
}
|
4698 |
+
},
|
4699 |
+
"make-dir": {
|
4700 |
+
"version": "2.1.0",
|
4701 |
+
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
|
4702 |
+
"integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
|
4703 |
+
"dev": true,
|
4704 |
+
"requires": {
|
4705 |
+
"pify": "^4.0.1",
|
4706 |
+
"semver": "^5.6.0"
|
4707 |
+
}
|
4708 |
+
},
|
4709 |
+
"map-age-cleaner": {
|
4710 |
+
"version": "0.1.3",
|
4711 |
+
"resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
|
4712 |
+
"integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
|
4713 |
+
"dev": true,
|
4714 |
+
"requires": {
|
4715 |
+
"p-defer": "^1.0.0"
|
4716 |
+
}
|
4717 |
+
},
|
4718 |
+
"map-cache": {
|
4719 |
+
"version": "0.2.2",
|
4720 |
+
"resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
|
4721 |
+
"integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
|
4722 |
+
"dev": true
|
4723 |
+
},
|
4724 |
+
"map-visit": {
|
4725 |
+
"version": "1.0.0",
|
4726 |
+
"resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
|
4727 |
+
"integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
|
4728 |
+
"dev": true,
|
4729 |
+
"requires": {
|
4730 |
+
"object-visit": "^1.0.0"
|
4731 |
+
}
|
4732 |
+
},
|
4733 |
+
"md5.js": {
|
4734 |
+
"version": "1.3.5",
|
4735 |
+
"resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
|
4736 |
+
"integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
|
4737 |
+
"dev": true,
|
4738 |
+
"requires": {
|
4739 |
+
"hash-base": "^3.0.0",
|
4740 |
+
"inherits": "^2.0.1",
|
4741 |
+
"safe-buffer": "^5.1.2"
|
4742 |
+
}
|
4743 |
+
},
|
4744 |
+
"mem": {
|
4745 |
+
"version": "4.3.0",
|
4746 |
+
"resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
|
4747 |
+
"integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
|
4748 |
+
"dev": true,
|
4749 |
+
"requires": {
|
4750 |
+
"map-age-cleaner": "^0.1.1",
|
4751 |
+
"mimic-fn": "^2.0.0",
|
4752 |
+
"p-is-promise": "^2.0.0"
|
4753 |
+
}
|
4754 |
+
},
|
4755 |
+
"memize": {
|
4756 |
+
"version": "1.1.0",
|
4757 |
+
"resolved": "https://registry.npmjs.org/memize/-/memize-1.1.0.tgz",
|
4758 |
+
"integrity": "sha512-K4FcPETOMTwe7KL2LK0orMhpOmWD2wRGwWWpbZy0fyArwsyIKR8YJVz8+efBAh3BO4zPqlSICu4vsLTRRqtFAg=="
|
4759 |
+
},
|
4760 |
+
"memory-fs": {
|
4761 |
+
"version": "0.4.1",
|
4762 |
+
"resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
|
4763 |
+
"integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
|
4764 |
+
"dev": true,
|
4765 |
+
"requires": {
|
4766 |
+
"errno": "^0.1.3",
|
4767 |
+
"readable-stream": "^2.0.1"
|
4768 |
+
}
|
4769 |
+
},
|
4770 |
+
"micromatch": {
|
4771 |
+
"version": "3.1.10",
|
4772 |
+
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
|
4773 |
+
"integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
|
4774 |
+
"dev": true,
|
4775 |
+
"requires": {
|
4776 |
+
"arr-diff": "^4.0.0",
|
4777 |
+
"array-unique": "^0.3.2",
|
4778 |
+
"braces": "^2.3.1",
|
4779 |
+
"define-property": "^2.0.2",
|
4780 |
+
"extend-shallow": "^3.0.2",
|
4781 |
+
"extglob": "^2.0.4",
|
4782 |
+
"fragment-cache": "^0.2.1",
|
4783 |
+
"kind-of": "^6.0.2",
|
4784 |
+
"nanomatch": "^1.2.9",
|
4785 |
+
"object.pick": "^1.3.0",
|
4786 |
+
"regex-not": "^1.0.0",
|
4787 |
+
"snapdragon": "^0.8.1",
|
4788 |
+
"to-regex": "^3.0.2"
|
4789 |
+
}
|
4790 |
+
},
|
4791 |
+
"miller-rabin": {
|
4792 |
+
"version": "4.0.1",
|
4793 |
+
"resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
|
4794 |
+
"integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
|
4795 |
+
"dev": true,
|
4796 |
+
"requires": {
|
4797 |
+
"bn.js": "^4.0.0",
|
4798 |
+
"brorand": "^1.0.1"
|
4799 |
+
}
|
4800 |
+
},
|
4801 |
+
"mimic-fn": {
|
4802 |
+
"version": "2.1.0",
|
4803 |
+
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
|
4804 |
+
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
|
4805 |
+
"dev": true
|
4806 |
+
},
|
4807 |
+
"minimalistic-assert": {
|
4808 |
+
"version": "1.0.1",
|
4809 |
+
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
|
4810 |
+
"integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
|
4811 |
+
"dev": true
|
4812 |
+
},
|
4813 |
+
"minimalistic-crypto-utils": {
|
4814 |
+
"version": "1.0.1",
|
4815 |
+
"resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
|
4816 |
+
"integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
|
4817 |
+
"dev": true
|
4818 |
+
},
|
4819 |
+
"minimatch": {
|
4820 |
+
"version": "3.0.4",
|
4821 |
+
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
4822 |
+
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
4823 |
+
"dev": true,
|
4824 |
+
"requires": {
|
4825 |
+
"brace-expansion": "^1.1.7"
|
4826 |
+
}
|
4827 |
+
},
|
4828 |
+
"minimist": {
|
4829 |
+
"version": "1.2.5",
|
4830 |
+
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
|
4831 |
+
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
|
4832 |
+
"dev": true
|
4833 |
+
},
|
4834 |
+
"mississippi": {
|
4835 |
+
"version": "3.0.0",
|
4836 |
+
"resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
|
4837 |
+
"integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
|
4838 |
+
"dev": true,
|
4839 |
+
"requires": {
|
4840 |
+
"concat-stream": "^1.5.0",
|
4841 |
+
"duplexify": "^3.4.2",
|
4842 |
+
"end-of-stream": "^1.1.0",
|
4843 |
+
"flush-write-stream": "^1.0.0",
|
4844 |
+
"from2": "^2.1.0",
|
4845 |
+
"parallel-transform": "^1.1.0",
|
4846 |
+
"pump": "^3.0.0",
|
4847 |
+
"pumpify": "^1.3.3",
|
4848 |
+
"stream-each": "^1.1.0",
|
4849 |
+
"through2": "^2.0.0"
|
4850 |
+
}
|
4851 |
+
},
|
4852 |
+
"mixin-deep": {
|
4853 |
+
"version": "1.3.2",
|
4854 |
+
"resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
|
4855 |
+
"integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
|
4856 |
+
"dev": true,
|
4857 |
+
"requires": {
|
4858 |
+
"for-in": "^1.0.2",
|
4859 |
+
"is-extendable": "^1.0.1"
|
4860 |
+
},
|
4861 |
+
"dependencies": {
|
4862 |
+
"is-extendable": {
|
4863 |
+
"version": "1.0.1",
|
4864 |
+
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
|
4865 |
+
"integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
|
4866 |
+
"dev": true,
|
4867 |
+
"requires": {
|
4868 |
+
"is-plain-object": "^2.0.4"
|
4869 |
+
}
|
4870 |
+
}
|
4871 |
+
}
|
4872 |
+
},
|
4873 |
+
"mkdirp": {
|
4874 |
+
"version": "0.5.5",
|
4875 |
+
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
|
4876 |
+
"integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
|
4877 |
+
"dev": true,
|
4878 |
+
"requires": {
|
4879 |
+
"minimist": "^1.2.5"
|
4880 |
+
}
|
4881 |
+
},
|
4882 |
+
"move-concurrently": {
|
4883 |
+
"version": "1.0.1",
|
4884 |
+
"resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
|
4885 |
+
"integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
|
4886 |
+
"dev": true,
|
4887 |
+
"requires": {
|
4888 |
+
"aproba": "^1.1.1",
|
4889 |
+
"copy-concurrently": "^1.0.0",
|
4890 |
+
"fs-write-stream-atomic": "^1.0.8",
|
4891 |
+
"mkdirp": "^0.5.1",
|
4892 |
+
"rimraf": "^2.5.4",
|
4893 |
+
"run-queue": "^1.0.3"
|
4894 |
+
}
|
4895 |
+
},
|
4896 |
+
"ms": {
|
4897 |
+
"version": "2.1.2",
|
4898 |
+
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
4899 |
+
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
|
4900 |
+
"dev": true
|
4901 |
+
},
|
4902 |
+
"mute-stream": {
|
4903 |
+
"version": "0.0.8",
|
4904 |
+
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
|
4905 |
+
"integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
|
4906 |
+
"dev": true
|
4907 |
+
},
|
4908 |
+
"nan": {
|
4909 |
+
"version": "2.14.0",
|
4910 |
+
"resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
|
4911 |
+
"integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
|
4912 |
+
"dev": true,
|
4913 |
+
"optional": true
|
4914 |
+
},
|
4915 |
+
"nanomatch": {
|
4916 |
+
"version": "1.2.13",
|
4917 |
+
"resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
|
4918 |
+
"integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
|
4919 |
+
"dev": true,
|
4920 |
+
"requires": {
|
4921 |
+
"arr-diff": "^4.0.0",
|
4922 |
+
"array-unique": "^0.3.2",
|
4923 |
+
"define-property": "^2.0.2",
|
4924 |
+
"extend-shallow": "^3.0.2",
|
4925 |
+
"fragment-cache": "^0.2.1",
|
4926 |
+
"is-windows": "^1.0.2",
|
4927 |
+
"kind-of": "^6.0.2",
|
4928 |
+
"object.pick": "^1.3.0",
|
4929 |
+
"regex-not": "^1.0.0",
|
4930 |
+
"snapdragon": "^0.8.1",
|
4931 |
+
"to-regex": "^3.0.1"
|
4932 |
+
}
|
4933 |
+
},
|
4934 |
+
"natural-compare": {
|
4935 |
+
"version": "1.4.0",
|
4936 |
+
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
|
4937 |
+
"integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
|
4938 |
+
"dev": true
|
4939 |
+
},
|
4940 |
+
"neo-async": {
|
4941 |
+
"version": "2.6.1",
|
4942 |
+
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz",
|
4943 |
+
"integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==",
|
4944 |
+
"dev": true
|
4945 |
+
},
|
4946 |
+
"nice-try": {
|
4947 |
+
"version": "1.0.5",
|
4948 |
+
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
|
4949 |
+
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
|
4950 |
+
"dev": true
|
4951 |
+
},
|
4952 |
+
"node-libs-browser": {
|
4953 |
+
"version": "2.2.1",
|
4954 |
+
"resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
|
4955 |
+
"integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
|
4956 |
+
"dev": true,
|
4957 |
+
"requires": {
|
4958 |
+
"assert": "^1.1.1",
|
4959 |
+
"browserify-zlib": "^0.2.0",
|
4960 |
+
"buffer": "^4.3.0",
|
4961 |
+
"console-browserify": "^1.1.0",
|
4962 |
+
"constants-browserify": "^1.0.0",
|
4963 |
+
"crypto-browserify": "^3.11.0",
|
4964 |
+
"domain-browser": "^1.1.1",
|
4965 |
+
"events": "^3.0.0",
|
4966 |
+
"https-browserify": "^1.0.0",
|
4967 |
+
"os-browserify": "^0.3.0",
|
4968 |
+
"path-browserify": "0.0.1",
|
4969 |
+
"process": "^0.11.10",
|
4970 |
+
"punycode": "^1.2.4",
|
4971 |
+
"querystring-es3": "^0.2.0",
|
4972 |
+
"readable-stream": "^2.3.3",
|
4973 |
+
"stream-browserify": "^2.0.1",
|
4974 |
+
"stream-http": "^2.7.2",
|
4975 |
+
"string_decoder": "^1.0.0",
|
4976 |
+
"timers-browserify": "^2.0.4",
|
4977 |
+
"tty-browserify": "0.0.0",
|
4978 |
+
"url": "^0.11.0",
|
4979 |
+
"util": "^0.11.0",
|
4980 |
+
"vm-browserify": "^1.0.1"
|
4981 |
+
},
|
4982 |
+
"dependencies": {
|
4983 |
+
"punycode": {
|
4984 |
+
"version": "1.4.1",
|
4985 |
+
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
|
4986 |
+
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
|
4987 |
+
"dev": true
|
4988 |
+
}
|
4989 |
+
}
|
4990 |
+
},
|
4991 |
+
"node-releases": {
|
4992 |
+
"version": "1.1.53",
|
4993 |
+
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz",
|
4994 |
+
"integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ==",
|
4995 |
+
"dev": true
|
4996 |
+
},
|
4997 |
+
"normalize-path": {
|
4998 |
+
"version": "3.0.0",
|
4999 |
+
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
|
5000 |
+
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
|
5001 |
+
"dev": true
|
5002 |
+
},
|
5003 |
+
"npm-run-path": {
|
5004 |
+
"version": "2.0.2",
|
5005 |
+
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
|
5006 |
+
"integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
|
5007 |
+
"dev": true,
|
5008 |
+
"requires": {
|
5009 |
+
"path-key": "^2.0.0"
|
5010 |
+
}
|
5011 |
+
},
|
5012 |
+
"object-assign": {
|
5013 |
+
"version": "4.1.1",
|
5014 |
+
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
5015 |
+
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
|
5016 |
+
"dev": true
|
5017 |
+
},
|
5018 |
+
"object-copy": {
|
5019 |
+
"version": "0.1.0",
|
5020 |
+
"resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
|
5021 |
+
"integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
|
5022 |
+
"dev": true,
|
5023 |
+
"requires": {
|
5024 |
+
"copy-descriptor": "^0.1.0",
|
5025 |
+
"define-property": "^0.2.5",
|
5026 |
+
"kind-of": "^3.0.3"
|
5027 |
+
},
|
5028 |
+
"dependencies": {
|
5029 |
+
"define-property": {
|
5030 |
+
"version": "0.2.5",
|
5031 |
+
"resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
|
5032 |
+
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
|
5033 |
+
"dev": true,
|
5034 |
+
"requires": {
|
5035 |
+
"is-descriptor": "^0.1.0"
|
5036 |
+
}
|
5037 |
+
},
|
5038 |
+
"kind-of": {
|
5039 |
+
"version": "3.2.2",
|
5040 |
+
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
|
5041 |
+
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
|
5042 |
+
"dev": true,
|
5043 |
+
"requires": {
|
5044 |
+
"is-buffer": "^1.1.5"
|
5045 |
+
}
|
5046 |
+
}
|
5047 |
+
}
|
5048 |
+
},
|
5049 |
+
"object-hash": {
|
5050 |
+
"version": "2.0.3",
|
5051 |
+
"resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.0.3.tgz",
|
5052 |
+
"integrity": "sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg==",
|
5053 |
+
"dev": true
|
5054 |
+
},
|
5055 |
+
"object-inspect": {
|
5056 |
+
"version": "1.7.0",
|
5057 |
+
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz",
|
5058 |
+
"integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==",
|
5059 |
+
"dev": true
|
5060 |
+
},
|
5061 |
+
"object-keys": {
|
5062 |
+
"version": "1.1.1",
|
5063 |
+
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
|
5064 |
+
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
|
5065 |
+
"dev": true
|
5066 |
+
},
|
5067 |
+
"object-visit": {
|
5068 |
+
"version": "1.0.1",
|
5069 |
+
"resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
|
5070 |
+
"integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
|
5071 |
+
"dev": true,
|
5072 |
+
"requires": {
|
5073 |
+
"isobject": "^3.0.0"
|
5074 |
+
}
|
5075 |
+
},
|
5076 |
+
"object.assign": {
|
5077 |
+
"version": "4.1.0",
|
5078 |
+
"resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
|
5079 |
+
"integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
|
5080 |
+
"dev": true,
|
5081 |
+
"requires": {
|
5082 |
+
"define-properties": "^1.1.2",
|
5083 |
+
"function-bind": "^1.1.1",
|
5084 |
+
"has-symbols": "^1.0.0",
|
5085 |
+
"object-keys": "^1.0.11"
|
5086 |
+
}
|
5087 |
+
},
|
5088 |
+
"object.entries": {
|
5089 |
+
"version": "1.1.1",
|
5090 |
+
"resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz",
|
5091 |
+
"integrity": "sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ==",
|
5092 |
+
"dev": true,
|
5093 |
+
"requires": {
|
5094 |
+
"define-properties": "^1.1.3",
|
5095 |
+
"es-abstract": "^1.17.0-next.1",
|
5096 |
+
"function-bind": "^1.1.1",
|
5097 |
+
"has": "^1.0.3"
|
5098 |
+
}
|
5099 |
+
},
|
5100 |
+
"object.fromentries": {
|
5101 |
+
"version": "2.0.2",
|
5102 |
+
"resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz",
|
5103 |
+
"integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==",
|
5104 |
+
"dev": true,
|
5105 |
+
"requires": {
|
5106 |
+
"define-properties": "^1.1.3",
|
5107 |
+
"es-abstract": "^1.17.0-next.1",
|
5108 |
+
"function-bind": "^1.1.1",
|
5109 |
+
"has": "^1.0.3"
|
5110 |
+
}
|
5111 |
+
},
|
5112 |
+
"object.pick": {
|
5113 |
+
"version": "1.3.0",
|
5114 |
+
"resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
|
5115 |
+
"integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
|
5116 |
+
"dev": true,
|
5117 |
+
"requires": {
|
5118 |
+
"isobject": "^3.0.1"
|
5119 |
+
}
|
5120 |
+
},
|
5121 |
+
"object.values": {
|
5122 |
+
"version": "1.1.1",
|
5123 |
+
"resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz",
|
5124 |
+
"integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==",
|
5125 |
+
"dev": true,
|
5126 |
+
"requires": {
|
5127 |
+
"define-properties": "^1.1.3",
|
5128 |
+
"es-abstract": "^1.17.0-next.1",
|
5129 |
+
"function-bind": "^1.1.1",
|
5130 |
+
"has": "^1.0.3"
|
5131 |
+
}
|
5132 |
+
},
|
5133 |
+
"once": {
|
5134 |
+
"version": "1.4.0",
|
5135 |
+
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
5136 |
+
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
5137 |
+
"dev": true,
|
5138 |
+
"requires": {
|
5139 |
+
"wrappy": "1"
|
5140 |
+
}
|
5141 |
+
},
|
5142 |
+
"onetime": {
|
5143 |
+
"version": "5.1.0",
|
5144 |
+
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
|
5145 |
+
"integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
|
5146 |
+
"dev": true,
|
5147 |
+
"requires": {
|
5148 |
+
"mimic-fn": "^2.1.0"
|
5149 |
+
}
|
5150 |
+
},
|
5151 |
+
"optionator": {
|
5152 |
+
"version": "0.8.3",
|
5153 |
+
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
|
5154 |
+
"integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
|
5155 |
+
"dev": true,
|
5156 |
+
"requires": {
|
5157 |
+
"deep-is": "~0.1.3",
|
5158 |
+
"fast-levenshtein": "~2.0.6",
|
5159 |
+
"levn": "~0.3.0",
|
5160 |
+
"prelude-ls": "~1.1.2",
|
5161 |
+
"type-check": "~0.3.2",
|
5162 |
+
"word-wrap": "~1.2.3"
|
5163 |
+
}
|
5164 |
+
},
|
5165 |
+
"os-browserify": {
|
5166 |
+
"version": "0.3.0",
|
5167 |
+
"resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
|
5168 |
+
"integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
|
5169 |
+
"dev": true
|
5170 |
+
},
|
5171 |
+
"os-locale": {
|
5172 |
+
"version": "3.1.0",
|
5173 |
+
"resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
|
5174 |
+
"integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
|
5175 |
+
"dev": true,
|
5176 |
+
"requires": {
|
5177 |
+
"execa": "^1.0.0",
|
5178 |
+
"lcid": "^2.0.0",
|
5179 |
+
"mem": "^4.0.0"
|
5180 |
+
}
|
5181 |
+
},
|
5182 |
+
"os-tmpdir": {
|
5183 |
+
"version": "1.0.2",
|
5184 |
+
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
|
5185 |
+
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
|
5186 |
+
"dev": true
|
5187 |
+
},
|
5188 |
+
"p-defer": {
|
5189 |
+
"version": "1.0.0",
|
5190 |
+
"resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
|
5191 |
+
"integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
|
5192 |
+
"dev": true
|
5193 |
+
},
|
5194 |
+
"p-finally": {
|
5195 |
+
"version": "1.0.0",
|
5196 |
+
"resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
|
5197 |
+
"integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
|
5198 |
+
"dev": true
|
5199 |
+
},
|
5200 |
+
"p-is-promise": {
|
5201 |
+
"version": "2.1.0",
|
5202 |
+
"resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
|
5203 |
+
"integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==",
|
5204 |
+
"dev": true
|
5205 |
+
},
|
5206 |
+
"p-limit": {
|
5207 |
+
"version": "2.0.0",
|
5208 |
+
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz",
|
5209 |
+
"integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==",
|
5210 |
+
"dev": true,
|
5211 |
+
"requires": {
|
5212 |
+
"p-try": "^2.0.0"
|
5213 |
+
}
|
5214 |
+
},
|
5215 |
+
"p-locate": {
|
5216 |
+
"version": "3.0.0",
|
5217 |
+
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
|
5218 |
+
"integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
|
5219 |
+
"dev": true,
|
5220 |
+
"requires": {
|
5221 |
+
"p-limit": "^2.0.0"
|
5222 |
+
}
|
5223 |
+
},
|
5224 |
+
"p-try": {
|
5225 |
+
"version": "2.0.0",
|
5226 |
+
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
|
5227 |
+
"integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
|
5228 |
+
"dev": true
|
5229 |
+
},
|
5230 |
+
"pako": {
|
5231 |
+
"version": "1.0.11",
|
5232 |
+
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
|
5233 |
+
"integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
|
5234 |
+
"dev": true
|
5235 |
+
},
|
5236 |
+
"parallel-transform": {
|
5237 |
+
"version": "1.2.0",
|
5238 |
+
"resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz",
|
5239 |
+
"integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==",
|
5240 |
+
"dev": true,
|
5241 |
+
"requires": {
|
5242 |
+
"cyclist": "^1.0.1",
|
5243 |
+
"inherits": "^2.0.3",
|
5244 |
+
"readable-stream": "^2.1.5"
|
5245 |
+
}
|
5246 |
+
},
|
5247 |
+
"parent-module": {
|
5248 |
+
"version": "1.0.1",
|
5249 |
+
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
|
5250 |
+
"integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
|
5251 |
+
"dev": true,
|
5252 |
+
"requires": {
|
5253 |
+
"callsites": "^3.0.0"
|
5254 |
+
}
|
5255 |
+
},
|
5256 |
+
"parse-asn1": {
|
5257 |
+
"version": "5.1.5",
|
5258 |
+
"resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz",
|
5259 |
+
"integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==",
|
5260 |
+
"dev": true,
|
5261 |
+
"requires": {
|
5262 |
+
"asn1.js": "^4.0.0",
|
5263 |
+
"browserify-aes": "^1.0.0",
|
5264 |
+
"create-hash": "^1.1.0",
|
5265 |
+
"evp_bytestokey": "^1.0.0",
|
5266 |
+
"pbkdf2": "^3.0.3",
|
5267 |
+
"safe-buffer": "^5.1.1"
|
5268 |
+
}
|
5269 |
+
},
|
5270 |
+
"parse-passwd": {
|
5271 |
+
"version": "1.0.0",
|
5272 |
+
"resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
|
5273 |
+
"integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
|
5274 |
+
"dev": true
|
5275 |
+
},
|
5276 |
+
"pascalcase": {
|
5277 |
+
"version": "0.1.1",
|
5278 |
+
"resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
|
5279 |
+
"integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
|
5280 |
+
"dev": true
|
5281 |
+
},
|
5282 |
+
"path-browserify": {
|
5283 |
+
"version": "0.0.1",
|
5284 |
+
"resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
|
5285 |
+
"integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
|
5286 |
+
"dev": true
|
5287 |
+
},
|
5288 |
+
"path-dirname": {
|
5289 |
+
"version": "1.0.2",
|
5290 |
+
"resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
|
5291 |
+
"integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
|
5292 |
+
"dev": true
|
5293 |
+
},
|
5294 |
+
"path-exists": {
|
5295 |
+
"version": "3.0.0",
|
5296 |
+
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
|
5297 |
+
"integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
|
5298 |
+
"dev": true
|
5299 |
+
},
|
5300 |
+
"path-is-absolute": {
|
5301 |
+
"version": "1.0.1",
|
5302 |
+
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
5303 |
+
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
|
5304 |
+
"dev": true
|
5305 |
+
},
|
5306 |
+
"path-key": {
|
5307 |
+
"version": "2.0.1",
|
5308 |
+
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
|
5309 |
+
"integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
|
5310 |
+
"dev": true
|
5311 |
+
},
|
5312 |
+
"path-parse": {
|
5313 |
+
"version": "1.0.6",
|
5314 |
+
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
|
5315 |
+
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
|
5316 |
+
"dev": true
|
5317 |
+
},
|
5318 |
+
"pbkdf2": {
|
5319 |
+
"version": "3.0.17",
|
5320 |
+
"resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
|
5321 |
+
"integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
|
5322 |
+
"dev": true,
|
5323 |
+
"requires": {
|
5324 |
+
"create-hash": "^1.1.2",
|
5325 |
+
"create-hmac": "^1.1.4",
|
5326 |
+
"ripemd160": "^2.0.1",
|
5327 |
+
"safe-buffer": "^5.0.1",
|
5328 |
+
"sha.js": "^2.4.8"
|
5329 |
+
}
|
5330 |
+
},
|
5331 |
+
"pify": {
|
5332 |
+
"version": "4.0.1",
|
5333 |
+
"resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
|
5334 |
+
"integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
|
5335 |
+
"dev": true
|
5336 |
+
},
|
5337 |
+
"pinkie": {
|
5338 |
+
"version": "2.0.4",
|
5339 |
+
"resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
|
5340 |
+
"integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
|
5341 |
+
"dev": true
|
5342 |
+
},
|
5343 |
+
"pinkie-promise": {
|
5344 |
+
"version": "2.0.1",
|
5345 |
+
"resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
|
5346 |
+
"integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
|
5347 |
+
"dev": true,
|
5348 |
+
"requires": {
|
5349 |
+
"pinkie": "^2.0.0"
|
5350 |
+
}
|
5351 |
+
},
|
5352 |
+
"pkg-dir": {
|
5353 |
+
"version": "3.0.0",
|
5354 |
+
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
|
5355 |
+
"integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
|
5356 |
+
"dev": true,
|
5357 |
+
"requires": {
|
5358 |
+
"find-up": "^3.0.0"
|
5359 |
+
}
|
5360 |
+
},
|
5361 |
+
"pkg-up": {
|
5362 |
+
"version": "2.0.0",
|
5363 |
+
"resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz",
|
5364 |
+
"integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=",
|
5365 |
+
"dev": true,
|
5366 |
+
"requires": {
|
5367 |
+
"find-up": "^2.1.0"
|
5368 |
+
},
|
5369 |
+
"dependencies": {
|
5370 |
+
"find-up": {
|
5371 |
+
"version": "2.1.0",
|
5372 |
+
"resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
|
5373 |
+
"integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
|
5374 |
+
"dev": true,
|
5375 |
+
"requires": {
|
5376 |
+
"locate-path": "^2.0.0"
|
5377 |
+
}
|
5378 |
+
},
|
5379 |
+
"locate-path": {
|
5380 |
+
"version": "2.0.0",
|
5381 |
+
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
|
5382 |
+
"integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
|
5383 |
+
"dev": true,
|
5384 |
+
"requires": {
|
5385 |
+
"p-locate": "^2.0.0",
|
5386 |
+
"path-exists": "^3.0.0"
|
5387 |
+
}
|
5388 |
+
},
|
5389 |
+
"p-limit": {
|
5390 |
+
"version": "1.3.0",
|
5391 |
+
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
|
5392 |
+
"integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
|
5393 |
+
"dev": true,
|
5394 |
+
"requires": {
|
5395 |
+
"p-try": "^1.0.0"
|
5396 |
+
}
|
5397 |
+
},
|
5398 |
+
"p-locate": {
|
5399 |
+
"version": "2.0.0",
|
5400 |
+
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
|
5401 |
+
"integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
|
5402 |
+
"dev": true,
|
5403 |
+
"requires": {
|
5404 |
+
"p-limit": "^1.1.0"
|
5405 |
+
}
|
5406 |
+
},
|
5407 |
+
"p-try": {
|
5408 |
+
"version": "1.0.0",
|
5409 |
+
"resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
|
5410 |
+
"integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
|
5411 |
+
"dev": true
|
5412 |
+
}
|
5413 |
+
}
|
5414 |
+
},
|
5415 |
+
"posix-character-classes": {
|
5416 |
+
"version": "0.1.1",
|
5417 |
+
"resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
|
5418 |
+
"integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
|
5419 |
+
"dev": true
|
5420 |
+
},
|
5421 |
+
"postcss": {
|
5422 |
+
"version": "7.0.27",
|
5423 |
+
"resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz",
|
5424 |
+
"integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==",
|
5425 |
+
"dev": true,
|
5426 |
+
"requires": {
|
5427 |
+
"chalk": "^2.4.2",
|
5428 |
+
"source-map": "^0.6.1",
|
5429 |
+
"supports-color": "^6.1.0"
|
5430 |
+
},
|
5431 |
+
"dependencies": {
|
5432 |
+
"source-map": {
|
5433 |
+
"version": "0.6.1",
|
5434 |
+
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
5435 |
+
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
5436 |
+
"dev": true
|
5437 |
+
},
|
5438 |
+
"supports-color": {
|
5439 |
+
"version": "6.1.0",
|
5440 |
+
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
|
5441 |
+
"integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
|
5442 |
+
"dev": true,
|
5443 |
+
"requires": {
|
5444 |
+
"has-flag": "^3.0.0"
|
5445 |
+
}
|
5446 |
+
}
|
5447 |
+
}
|
5448 |
+
},
|
5449 |
+
"postcss-modules-extract-imports": {
|
5450 |
+
"version": "2.0.0",
|
5451 |
+
"resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz",
|
5452 |
+
"integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==",
|
5453 |
+
"dev": true,
|
5454 |
+
"requires": {
|
5455 |
+
"postcss": "^7.0.5"
|
5456 |
+
}
|
5457 |
+
},
|
5458 |
+
"postcss-modules-local-by-default": {
|
5459 |
+
"version": "3.0.2",
|
5460 |
+
"resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz",
|
5461 |
+
"integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==",
|
5462 |
+
"dev": true,
|
5463 |
+
"requires": {
|
5464 |
+
"icss-utils": "^4.1.1",
|
5465 |
+
"postcss": "^7.0.16",
|
5466 |
+
"postcss-selector-parser": "^6.0.2",
|
5467 |
+
"postcss-value-parser": "^4.0.0"
|
5468 |
+
}
|
5469 |
+
},
|
5470 |
+
"postcss-modules-scope": {
|
5471 |
+
"version": "2.1.1",
|
5472 |
+
"resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.1.1.tgz",
|
5473 |
+
"integrity": "sha512-OXRUPecnHCg8b9xWvldG/jUpRIGPNRka0r4D4j0ESUU2/5IOnpsjfPPmDprM3Ih8CgZ8FXjWqaniK5v4rWt3oQ==",
|
5474 |
+
"dev": true,
|
5475 |
+
"requires": {
|
5476 |
+
"postcss": "^7.0.6",
|
5477 |
+
"postcss-selector-parser": "^6.0.0"
|
5478 |
+
}
|
5479 |
+
},
|
5480 |
+
"postcss-modules-values": {
|
5481 |
+
"version": "3.0.0",
|
5482 |
+
"resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz",
|
5483 |
+
"integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==",
|
5484 |
+
"dev": true,
|
5485 |
+
"requires": {
|
5486 |
+
"icss-utils": "^4.0.0",
|
5487 |
+
"postcss": "^7.0.6"
|
5488 |
+
}
|
5489 |
+
},
|
5490 |
+
"postcss-selector-parser": {
|
5491 |
+
"version": "6.0.2",
|
5492 |
+
"resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz",
|
5493 |
+
"integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==",
|
5494 |
+
"dev": true,
|
5495 |
+
"requires": {
|
5496 |
+
"cssesc": "^3.0.0",
|
5497 |
+
"indexes-of": "^1.0.1",
|
5498 |
+
"uniq": "^1.0.1"
|
5499 |
+
}
|
5500 |
+
},
|
5501 |
+
"postcss-value-parser": {
|
5502 |
+
"version": "4.0.3",
|
5503 |
+
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz",
|
5504 |
+
"integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==",
|
5505 |
+
"dev": true
|
5506 |
+
},
|
5507 |
+
"prelude-ls": {
|
5508 |
+
"version": "1.1.2",
|
5509 |
+
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
|
5510 |
+
"integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
|
5511 |
+
"dev": true
|
5512 |
+
},
|
5513 |
+
"pretty-time": {
|
5514 |
+
"version": "1.1.0",
|
5515 |
+
"resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz",
|
5516 |
+
"integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==",
|
5517 |
+
"dev": true
|
5518 |
+
},
|
5519 |
+
"private": {
|
5520 |
+
"version": "0.1.8",
|
5521 |
+
"resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
|
5522 |
+
"integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
|
5523 |
+
"dev": true
|
5524 |
+
},
|
5525 |
+
"process": {
|
5526 |
+
"version": "0.11.10",
|
5527 |
+
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
|
5528 |
+
"integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
|
5529 |
+
"dev": true
|
5530 |
+
},
|
5531 |
+
"process-nextick-args": {
|
5532 |
+
"version": "2.0.1",
|
5533 |
+
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
|
5534 |
+
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
|
5535 |
+
"dev": true
|
5536 |
+
},
|
5537 |
+
"progress": {
|
5538 |
+
"version": "2.0.3",
|
5539 |
+
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
|
5540 |
+
"integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
|
5541 |
+
"dev": true
|
5542 |
+
},
|
5543 |
+
"promise-inflight": {
|
5544 |
+
"version": "1.0.1",
|
5545 |
+
"resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
|
5546 |
+
"integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
|
5547 |
+
"dev": true
|
5548 |
+
},
|
5549 |
+
"prop-types": {
|
5550 |
+
"version": "15.7.2",
|
5551 |
+
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
|
5552 |
+
"integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
|
5553 |
+
"dev": true,
|
5554 |
+
"requires": {
|
5555 |
+
"loose-envify": "^1.4.0",
|
5556 |
+
"object-assign": "^4.1.1",
|
5557 |
+
"react-is": "^16.8.1"
|
5558 |
+
}
|
5559 |
+
},
|
5560 |
+
"prr": {
|
5561 |
+
"version": "1.0.1",
|
5562 |
+
"resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
|
5563 |
+
"integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
|
5564 |
+
"dev": true
|
5565 |
+
},
|
5566 |
+
"public-encrypt": {
|
5567 |
+
"version": "4.0.3",
|
5568 |
+
"resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
|
5569 |
+
"integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
|
5570 |
+
"dev": true,
|
5571 |
+
"requires": {
|
5572 |
+
"bn.js": "^4.1.0",
|
5573 |
+
"browserify-rsa": "^4.0.0",
|
5574 |
+
"create-hash": "^1.1.0",
|
5575 |
+
"parse-asn1": "^5.0.0",
|
5576 |
+
"randombytes": "^2.0.1",
|
5577 |
+
"safe-buffer": "^5.1.2"
|
5578 |
+
}
|
5579 |
+
},
|
5580 |
+
"pump": {
|
5581 |
+
"version": "3.0.0",
|
5582 |
+
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
|
5583 |
+
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
|
5584 |
+
"dev": true,
|
5585 |
+
"requires": {
|
5586 |
+
"end-of-stream": "^1.1.0",
|
5587 |
+
"once": "^1.3.1"
|
5588 |
+
}
|
5589 |
+
},
|
5590 |
+
"pumpify": {
|
5591 |
+
"version": "1.5.1",
|
5592 |
+
"resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
|
5593 |
+
"integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
|
5594 |
+
"dev": true,
|
5595 |
+
"requires": {
|
5596 |
+
"duplexify": "^3.6.0",
|
5597 |
+
"inherits": "^2.0.3",
|
5598 |
+
"pump": "^2.0.0"
|
5599 |
+
},
|
5600 |
+
"dependencies": {
|
5601 |
+
"pump": {
|
5602 |
+
"version": "2.0.1",
|
5603 |
+
"resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
|
5604 |
+
"integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
|
5605 |
+
"dev": true,
|
5606 |
+
"requires": {
|
5607 |
+
"end-of-stream": "^1.1.0",
|
5608 |
+
"once": "^1.3.1"
|
5609 |
+
}
|
5610 |
+
}
|
5611 |
+
}
|
5612 |
+
},
|
5613 |
+
"punycode": {
|
5614 |
+
"version": "2.1.1",
|
5615 |
+
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
|
5616 |
+
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
|
5617 |
+
"dev": true
|
5618 |
+
},
|
5619 |
+
"querystring": {
|
5620 |
+
"version": "0.2.0",
|
5621 |
+
"resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
|
5622 |
+
"integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
|
5623 |
+
"dev": true
|
5624 |
+
},
|
5625 |
+
"querystring-es3": {
|
5626 |
+
"version": "0.2.1",
|
5627 |
+
"resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
|
5628 |
+
"integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
|
5629 |
+
"dev": true
|
5630 |
+
},
|
5631 |
+
"randombytes": {
|
5632 |
+
"version": "2.1.0",
|
5633 |
+
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
|
5634 |
+
"integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
|
5635 |
+
"dev": true,
|
5636 |
+
"requires": {
|
5637 |
+
"safe-buffer": "^5.1.0"
|
5638 |
+
}
|
5639 |
+
},
|
5640 |
+
"randomfill": {
|
5641 |
+
"version": "1.0.4",
|
5642 |
+
"resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
|
5643 |
+
"integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
|
5644 |
+
"dev": true,
|
5645 |
+
"requires": {
|
5646 |
+
"randombytes": "^2.0.5",
|
5647 |
+
"safe-buffer": "^5.1.0"
|
5648 |
+
}
|
5649 |
+
},
|
5650 |
+
"react": {
|
5651 |
+
"version": "16.13.1",
|
5652 |
+
"resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz",
|
5653 |
+
"integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==",
|
5654 |
+
"dev": true,
|
5655 |
+
"requires": {
|
5656 |
+
"loose-envify": "^1.1.0",
|
5657 |
+
"object-assign": "^4.1.1",
|
5658 |
+
"prop-types": "^15.6.2"
|
5659 |
+
}
|
5660 |
+
},
|
5661 |
+
"react-dom": {
|
5662 |
+
"version": "16.13.1",
|
5663 |
+
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz",
|
5664 |
+
"integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==",
|
5665 |
+
"dev": true,
|
5666 |
+
"requires": {
|
5667 |
+
"loose-envify": "^1.1.0",
|
5668 |
+
"object-assign": "^4.1.1",
|
5669 |
+
"prop-types": "^15.6.2",
|
5670 |
+
"scheduler": "^0.19.1"
|
5671 |
+
}
|
5672 |
+
},
|
5673 |
+
"react-is": {
|
5674 |
+
"version": "16.13.0",
|
5675 |
+
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.0.tgz",
|
5676 |
+
"integrity": "sha512-GFMtL0vHkiBv9HluwNZTggSn/sCyEt9n02aM0dSAjGGyqyNlAyftYm4phPxdvCigG15JreC5biwxCgTAJZ7yAA==",
|
5677 |
+
"dev": true
|
5678 |
+
},
|
5679 |
+
"readable-stream": {
|
5680 |
+
"version": "2.3.7",
|
5681 |
+
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
|
5682 |
+
"integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
|
5683 |
+
"dev": true,
|
5684 |
+
"requires": {
|
5685 |
+
"core-util-is": "~1.0.0",
|
5686 |
+
"inherits": "~2.0.3",
|
5687 |
+
"isarray": "~1.0.0",
|
5688 |
+
"process-nextick-args": "~2.0.0",
|
5689 |
+
"safe-buffer": "~5.1.1",
|
5690 |
+
"string_decoder": "~1.1.1",
|
5691 |
+
"util-deprecate": "~1.0.1"
|
5692 |
+
},
|
5693 |
+
"dependencies": {
|
5694 |
+
"safe-buffer": {
|
5695 |
+
"version": "5.1.2",
|
5696 |
+
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
5697 |
+
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
|
5698 |
+
"dev": true
|
5699 |
+
}
|
5700 |
+
}
|
5701 |
+
},
|
5702 |
+
"readdirp": {
|
5703 |
+
"version": "2.2.1",
|
5704 |
+
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
|
5705 |
+
"integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
|
5706 |
+
"dev": true,
|
5707 |
+
"requires": {
|
5708 |
+
"graceful-fs": "^4.1.11",
|
5709 |
+
"micromatch": "^3.1.10",
|
5710 |
+
"readable-stream": "^2.0.2"
|
5711 |
+
}
|
5712 |
+
},
|
5713 |
+
"regenerate": {
|
5714 |
+
"version": "1.4.0",
|
5715 |
+
"resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
|
5716 |
+
"integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==",
|
5717 |
+
"dev": true
|
5718 |
+
},
|
5719 |
+
"regenerate-unicode-properties": {
|
5720 |
+
"version": "8.2.0",
|
5721 |
+
"resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz",
|
5722 |
+
"integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==",
|
5723 |
+
"dev": true,
|
5724 |
+
"requires": {
|
5725 |
+
"regenerate": "^1.4.0"
|
5726 |
+
}
|
5727 |
+
},
|
5728 |
+
"regenerator-runtime": {
|
5729 |
+
"version": "0.13.5",
|
5730 |
+
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
|
5731 |
+
"integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA=="
|
5732 |
+
},
|
5733 |
+
"regenerator-transform": {
|
5734 |
+
"version": "0.14.4",
|
5735 |
+
"resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz",
|
5736 |
+
"integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==",
|
5737 |
+
"dev": true,
|
5738 |
+
"requires": {
|
5739 |
+
"@babel/runtime": "^7.8.4",
|
5740 |
+
"private": "^0.1.8"
|
5741 |
+
}
|
5742 |
+
},
|
5743 |
+
"regex-not": {
|
5744 |
+
"version": "1.0.2",
|
5745 |
+
"resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
|
5746 |
+
"integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
|
5747 |
+
"dev": true,
|
5748 |
+
"requires": {
|
5749 |
+
"extend-shallow": "^3.0.2",
|
5750 |
+
"safe-regex": "^1.1.0"
|
5751 |
+
}
|
5752 |
+
},
|
5753 |
+
"regexp.prototype.flags": {
|
5754 |
+
"version": "1.3.0",
|
5755 |
+
"resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz",
|
5756 |
+
"integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==",
|
5757 |
+
"dev": true,
|
5758 |
+
"requires": {
|
5759 |
+
"define-properties": "^1.1.3",
|
5760 |
+
"es-abstract": "^1.17.0-next.1"
|
5761 |
+
}
|
5762 |
+
},
|
5763 |
+
"regexpp": {
|
5764 |
+
"version": "2.0.1",
|
5765 |
+
"resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
|
5766 |
+
"integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
|
5767 |
+
"dev": true
|
5768 |
+
},
|
5769 |
+
"regexpu-core": {
|
5770 |
+
"version": "4.7.0",
|
5771 |
+
"resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz",
|
5772 |
+
"integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==",
|
5773 |
+
"dev": true,
|
5774 |
+
"requires": {
|
5775 |
+
"regenerate": "^1.4.0",
|
5776 |
+
"regenerate-unicode-properties": "^8.2.0",
|
5777 |
+
"regjsgen": "^0.5.1",
|
5778 |
+
"regjsparser": "^0.6.4",
|
5779 |
+
"unicode-match-property-ecmascript": "^1.0.4",
|
5780 |
+
"unicode-match-property-value-ecmascript": "^1.2.0"
|
5781 |
+
}
|
5782 |
+
},
|
5783 |
+
"regjsgen": {
|
5784 |
+
"version": "0.5.1",
|
5785 |
+
"resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz",
|
5786 |
+
"integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==",
|
5787 |
+
"dev": true
|
5788 |
+
},
|
5789 |
+
"regjsparser": {
|
5790 |
+
"version": "0.6.4",
|
5791 |
+
"resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz",
|
5792 |
+
"integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==",
|
5793 |
+
"dev": true,
|
5794 |
+
"requires": {
|
5795 |
+
"jsesc": "~0.5.0"
|
5796 |
+
},
|
5797 |
+
"dependencies": {
|
5798 |
+
"jsesc": {
|
5799 |
+
"version": "0.5.0",
|
5800 |
+
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
|
5801 |
+
"integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
|
5802 |
+
"dev": true
|
5803 |
+
}
|
5804 |
+
}
|
5805 |
+
},
|
5806 |
+
"remove-trailing-separator": {
|
5807 |
+
"version": "1.1.0",
|
5808 |
+
"resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
|
5809 |
+
"integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
|
5810 |
+
"dev": true
|
5811 |
+
},
|
5812 |
+
"repeat-element": {
|
5813 |
+
"version": "1.1.3",
|
5814 |
+
"resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
|
5815 |
+
"integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
|
5816 |
+
"dev": true
|
5817 |
+
},
|
5818 |
+
"repeat-string": {
|
5819 |
+
"version": "1.6.1",
|
5820 |
+
"resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
|
5821 |
+
"integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
|
5822 |
+
"dev": true
|
5823 |
+
},
|
5824 |
+
"require-directory": {
|
5825 |
+
"version": "2.1.1",
|
5826 |
+
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
|
5827 |
+
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
|
5828 |
+
"dev": true
|
5829 |
+
},
|
5830 |
+
"require-main-filename": {
|
5831 |
+
"version": "2.0.0",
|
5832 |
+
"resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
|
5833 |
+
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
|
5834 |
+
"dev": true
|
5835 |
+
},
|
5836 |
+
"resolve": {
|
5837 |
+
"version": "1.15.1",
|
5838 |
+
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz",
|
5839 |
+
"integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==",
|
5840 |
+
"dev": true,
|
5841 |
+
"requires": {
|
5842 |
+
"path-parse": "^1.0.6"
|
5843 |
+
}
|
5844 |
+
},
|
5845 |
+
"resolve-cwd": {
|
5846 |
+
"version": "2.0.0",
|
5847 |
+
"resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
|
5848 |
+
"integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
|
5849 |
+
"dev": true,
|
5850 |
+
"requires": {
|
5851 |
+
"resolve-from": "^3.0.0"
|
5852 |
+
},
|
5853 |
+
"dependencies": {
|
5854 |
+
"resolve-from": {
|
5855 |
+
"version": "3.0.0",
|
5856 |
+
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
|
5857 |
+
"integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
|
5858 |
+
"dev": true
|
5859 |
+
}
|
5860 |
+
}
|
5861 |
+
},
|
5862 |
+
"resolve-dir": {
|
5863 |
+
"version": "1.0.1",
|
5864 |
+
"resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
|
5865 |
+
"integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
|
5866 |
+
"dev": true,
|
5867 |
+
"requires": {
|
5868 |
+
"expand-tilde": "^2.0.0",
|
5869 |
+
"global-modules": "^1.0.0"
|
5870 |
+
},
|
5871 |
+
"dependencies": {
|
5872 |
+
"global-modules": {
|
5873 |
+
"version": "1.0.0",
|
5874 |
+
"resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
|
5875 |
+
"integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
|
5876 |
+
"dev": true,
|
5877 |
+
"requires": {
|
5878 |
+
"global-prefix": "^1.0.1",
|
5879 |
+
"is-windows": "^1.0.1",
|
5880 |
+
"resolve-dir": "^1.0.0"
|
5881 |
+
}
|
5882 |
+
}
|
5883 |
+
}
|
5884 |
+
},
|
5885 |
+
"resolve-from": {
|
5886 |
+
"version": "4.0.0",
|
5887 |
+
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
|
5888 |
+
"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
|
5889 |
+
"dev": true
|
5890 |
+
},
|
5891 |
+
"resolve-url": {
|
5892 |
+
"version": "0.2.1",
|
5893 |
+
"resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
|
5894 |
+
"integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
|
5895 |
+
"dev": true
|
5896 |
+
},
|
5897 |
+
"restore-cursor": {
|
5898 |
+
"version": "3.1.0",
|
5899 |
+
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
|
5900 |
+
"integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
|
5901 |
+
"dev": true,
|
5902 |
+
"requires": {
|
5903 |
+
"onetime": "^5.1.0",
|
5904 |
+
"signal-exit": "^3.0.2"
|
5905 |
+
}
|
5906 |
+
},
|
5907 |
+
"ret": {
|
5908 |
+
"version": "0.1.15",
|
5909 |
+
"resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
|
5910 |
+
"integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
|
5911 |
+
"dev": true
|
5912 |
+
},
|
5913 |
+
"rimraf": {
|
5914 |
+
"version": "2.6.3",
|
5915 |
+
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
|
5916 |
+
"integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
|
5917 |
+
"dev": true,
|
5918 |
+
"requires": {
|
5919 |
+
"glob": "^7.1.3"
|
5920 |
+
}
|
5921 |
+
},
|
5922 |
+
"ripemd160": {
|
5923 |
+
"version": "2.0.2",
|
5924 |
+
"resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
|
5925 |
+
"integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
|
5926 |
+
"dev": true,
|
5927 |
+
"requires": {
|
5928 |
+
"hash-base": "^3.0.0",
|
5929 |
+
"inherits": "^2.0.1"
|
5930 |
+
}
|
5931 |
+
},
|
5932 |
+
"run-async": {
|
5933 |
+
"version": "2.4.0",
|
5934 |
+
"resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz",
|
5935 |
+
"integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==",
|
5936 |
+
"dev": true,
|
5937 |
+
"requires": {
|
5938 |
+
"is-promise": "^2.1.0"
|
5939 |
+
}
|
5940 |
+
},
|
5941 |
+
"run-queue": {
|
5942 |
+
"version": "1.0.3",
|
5943 |
+
"resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
|
5944 |
+
"integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
|
5945 |
+
"dev": true,
|
5946 |
+
"requires": {
|
5947 |
+
"aproba": "^1.1.1"
|
5948 |
+
}
|
5949 |
+
},
|
5950 |
+
"rxjs": {
|
5951 |
+
"version": "6.5.4",
|
5952 |
+
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz",
|
5953 |
+
"integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==",
|
5954 |
+
"dev": true,
|
5955 |
+
"requires": {
|
5956 |
+
"tslib": "^1.9.0"
|
5957 |
+
}
|
5958 |
+
},
|
5959 |
+
"safe-buffer": {
|
5960 |
+
"version": "5.2.0",
|
5961 |
+
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
|
5962 |
+
"integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg=="
|
5963 |
+
},
|
5964 |
+
"safe-regex": {
|
5965 |
+
"version": "1.1.0",
|
5966 |
+
"resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
|
5967 |
+
"integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
|
5968 |
+
"dev": true,
|
5969 |
+
"requires": {
|
5970 |
+
"ret": "~0.1.10"
|
5971 |
+
}
|
5972 |
+
},
|
5973 |
+
"safer-buffer": {
|
5974 |
+
"version": "2.1.2",
|
5975 |
+
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
5976 |
+
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
|
5977 |
+
},
|
5978 |
+
"scheduler": {
|
5979 |
+
"version": "0.19.1",
|
5980 |
+
"resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz",
|
5981 |
+
"integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==",
|
5982 |
+
"dev": true,
|
5983 |
+
"requires": {
|
5984 |
+
"loose-envify": "^1.1.0",
|
5985 |
+
"object-assign": "^4.1.1"
|
5986 |
+
}
|
5987 |
+
},
|
5988 |
+
"schema-utils": {
|
5989 |
+
"version": "2.6.5",
|
5990 |
+
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz",
|
5991 |
+
"integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==",
|
5992 |
+
"dev": true,
|
5993 |
+
"requires": {
|
5994 |
+
"ajv": "^6.12.0",
|
5995 |
+
"ajv-keywords": "^3.4.1"
|
5996 |
+
}
|
5997 |
+
},
|
5998 |
+
"semver": {
|
5999 |
+
"version": "5.7.1",
|
6000 |
+
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
|
6001 |
+
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
|
6002 |
+
"dev": true
|
6003 |
+
},
|
6004 |
+
"serialize-javascript": {
|
6005 |
+
"version": "2.1.2",
|
6006 |
+
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz",
|
6007 |
+
"integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==",
|
6008 |
+
"dev": true
|
6009 |
+
},
|
6010 |
+
"set-blocking": {
|
6011 |
+
"version": "2.0.0",
|
6012 |
+
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
|
6013 |
+
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
|
6014 |
+
"dev": true
|
6015 |
+
},
|
6016 |
+
"set-value": {
|
6017 |
+
"version": "2.0.1",
|
6018 |
+
"resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
|
6019 |
+
"integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
|
6020 |
+
"dev": true,
|
6021 |
+
"requires": {
|
6022 |
+
"extend-shallow": "^2.0.1",
|
6023 |
+
"is-extendable": "^0.1.1",
|
6024 |
+
"is-plain-object": "^2.0.3",
|
6025 |
+
"split-string": "^3.0.1"
|
6026 |
+
},
|
6027 |
+
"dependencies": {
|
6028 |
+
"extend-shallow": {
|
6029 |
+
"version": "2.0.1",
|
6030 |
+
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
|
6031 |
+
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
|
6032 |
+
"dev": true,
|
6033 |
+
"requires": {
|
6034 |
+
"is-extendable": "^0.1.0"
|
6035 |
+
}
|
6036 |
+
}
|
6037 |
+
}
|
6038 |
+
},
|
6039 |
+
"setimmediate": {
|
6040 |
+
"version": "1.0.5",
|
6041 |
+
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
|
6042 |
+
"integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
|
6043 |
+
"dev": true
|
6044 |
+
},
|
6045 |
+
"sha.js": {
|
6046 |
+
"version": "2.4.11",
|
6047 |
+
"resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
|
6048 |
+
"integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
|
6049 |
+
"dev": true,
|
6050 |
+
"requires": {
|
6051 |
+
"inherits": "^2.0.1",
|
6052 |
+
"safe-buffer": "^5.0.1"
|
6053 |
+
}
|
6054 |
+
},
|
6055 |
+
"shebang-command": {
|
6056 |
+
"version": "1.2.0",
|
6057 |
+
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
|
6058 |
+
"integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
|
6059 |
+
"dev": true,
|
6060 |
+
"requires": {
|
6061 |
+
"shebang-regex": "^1.0.0"
|
6062 |
+
}
|
6063 |
+
},
|
6064 |
+
"shebang-regex": {
|
6065 |
+
"version": "1.0.0",
|
6066 |
+
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
|
6067 |
+
"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
|
6068 |
+
"dev": true
|
6069 |
+
},
|
6070 |
+
"side-channel": {
|
6071 |
+
"version": "1.0.2",
|
6072 |
+
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.2.tgz",
|
6073 |
+
"integrity": "sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA==",
|
6074 |
+
"dev": true,
|
6075 |
+
"requires": {
|
6076 |
+
"es-abstract": "^1.17.0-next.1",
|
6077 |
+
"object-inspect": "^1.7.0"
|
6078 |
+
}
|
6079 |
+
},
|
6080 |
+
"signal-exit": {
|
6081 |
+
"version": "3.0.2",
|
6082 |
+
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
|
6083 |
+
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
|
6084 |
+
"dev": true
|
6085 |
+
},
|
6086 |
+
"slice-ansi": {
|
6087 |
+
"version": "2.1.0",
|
6088 |
+
"resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
|
6089 |
+
"integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
|
6090 |
+
"dev": true,
|
6091 |
+
"requires": {
|
6092 |
+
"ansi-styles": "^3.2.0",
|
6093 |
+
"astral-regex": "^1.0.0",
|
6094 |
+
"is-fullwidth-code-point": "^2.0.0"
|
6095 |
+
},
|
6096 |
+
"dependencies": {
|
6097 |
+
"is-fullwidth-code-point": {
|
6098 |
+
"version": "2.0.0",
|
6099 |
+
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
|
6100 |
+
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
|
6101 |
+
"dev": true
|
6102 |
+
}
|
6103 |
+
}
|
6104 |
+
},
|
6105 |
+
"snapdragon": {
|
6106 |
+
"version": "0.8.2",
|
6107 |
+
"resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
|
6108 |
+
"integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
|
6109 |
+
"dev": true,
|
6110 |
+
"requires": {
|
6111 |
+
"base": "^0.11.1",
|
6112 |
+
"debug": "^2.2.0",
|
6113 |
+
"define-property": "^0.2.5",
|
6114 |
+
"extend-shallow": "^2.0.1",
|
6115 |
+
"map-cache": "^0.2.2",
|
6116 |
+
"source-map": "^0.5.6",
|
6117 |
+
"source-map-resolve": "^0.5.0",
|
6118 |
+
"use": "^3.1.0"
|
6119 |
+
},
|
6120 |
+
"dependencies": {
|
6121 |
+
"debug": {
|
6122 |
+
"version": "2.6.9",
|
6123 |
+
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
6124 |
+
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
6125 |
+
"dev": true,
|
6126 |
+
"requires": {
|
6127 |
+
"ms": "2.0.0"
|
6128 |
+
}
|
6129 |
+
},
|
6130 |
+
"define-property": {
|
6131 |
+
"version": "0.2.5",
|
6132 |
+
"resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
|
6133 |
+
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
|
6134 |
+
"dev": true,
|
6135 |
+
"requires": {
|
6136 |
+
"is-descriptor": "^0.1.0"
|
6137 |
+
}
|
6138 |
+
},
|
6139 |
+
"extend-shallow": {
|
6140 |
+
"version": "2.0.1",
|
6141 |
+
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
|
6142 |
+
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
|
6143 |
+
"dev": true,
|
6144 |
+
"requires": {
|
6145 |
+
"is-extendable": "^0.1.0"
|
6146 |
+
}
|
6147 |
+
},
|
6148 |
+
"ms": {
|
6149 |
+
"version": "2.0.0",
|
6150 |
+
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
6151 |
+
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
|
6152 |
+
"dev": true
|
6153 |
+
}
|
6154 |
+
}
|
6155 |
+
},
|
6156 |
+
"snapdragon-node": {
|
6157 |
+
"version": "2.1.1",
|
6158 |
+
"resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
|
6159 |
+
"integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
|
6160 |
+
"dev": true,
|
6161 |
+
"requires": {
|
6162 |
+
"define-property": "^1.0.0",
|
6163 |
+
"isobject": "^3.0.0",
|
6164 |
+
"snapdragon-util": "^3.0.1"
|
6165 |
+
},
|
6166 |
+
"dependencies": {
|
6167 |
+
"define-property": {
|
6168 |
+
"version": "1.0.0",
|
6169 |
+
"resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
|
6170 |
+
"integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
|
6171 |
+
"dev": true,
|
6172 |
+
"requires": {
|
6173 |
+
"is-descriptor": "^1.0.0"
|
6174 |
+
}
|
6175 |
+
},
|
6176 |
+
"is-accessor-descriptor": {
|
6177 |
+
"version": "1.0.0",
|
6178 |
+
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
|
6179 |
+
"integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
|
6180 |
+
"dev": true,
|
6181 |
+
"requires": {
|
6182 |
+
"kind-of": "^6.0.0"
|
6183 |
+
}
|
6184 |
+
},
|
6185 |
+
"is-data-descriptor": {
|
6186 |
+
"version": "1.0.0",
|
6187 |
+
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
|
6188 |
+
"integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
|
6189 |
+
"dev": true,
|
6190 |
+
"requires": {
|
6191 |
+
"kind-of": "^6.0.0"
|
6192 |
+
}
|
6193 |
+
},
|
6194 |
+
"is-descriptor": {
|
6195 |
+
"version": "1.0.2",
|
6196 |
+
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
|
6197 |
+
"integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
|
6198 |
+
"dev": true,
|
6199 |
+
"requires": {
|
6200 |
+
"is-accessor-descriptor": "^1.0.0",
|
6201 |
+
"is-data-descriptor": "^1.0.0",
|
6202 |
+
"kind-of": "^6.0.2"
|
6203 |
+
}
|
6204 |
+
}
|
6205 |
+
}
|
6206 |
+
},
|
6207 |
+
"snapdragon-util": {
|
6208 |
+
"version": "3.0.1",
|
6209 |
+
"resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
|
6210 |
+
"integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
|
6211 |
+
"dev": true,
|
6212 |
+
"requires": {
|
6213 |
+
"kind-of": "^3.2.0"
|
6214 |
+
},
|
6215 |
+
"dependencies": {
|
6216 |
+
"kind-of": {
|
6217 |
+
"version": "3.2.2",
|
6218 |
+
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
|
6219 |
+
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
|
6220 |
+
"dev": true,
|
6221 |
+
"requires": {
|
6222 |
+
"is-buffer": "^1.1.5"
|
6223 |
+
}
|
6224 |
+
}
|
6225 |
+
}
|
6226 |
+
},
|
6227 |
+
"source-list-map": {
|
6228 |
+
"version": "2.0.1",
|
6229 |
+
"resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
|
6230 |
+
"integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
|
6231 |
+
"dev": true
|
6232 |
+
},
|
6233 |
+
"source-map": {
|
6234 |
+
"version": "0.5.7",
|
6235 |
+
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
|
6236 |
+
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
|
6237 |
+
"dev": true
|
6238 |
+
},
|
6239 |
+
"source-map-resolve": {
|
6240 |
+
"version": "0.5.3",
|
6241 |
+
"resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
|
6242 |
+
"integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
|
6243 |
+
"dev": true,
|
6244 |
+
"requires": {
|
6245 |
+
"atob": "^2.1.2",
|
6246 |
+
"decode-uri-component": "^0.2.0",
|
6247 |
+
"resolve-url": "^0.2.1",
|
6248 |
+
"source-map-url": "^0.4.0",
|
6249 |
+
"urix": "^0.1.0"
|
6250 |
+
}
|
6251 |
+
},
|
6252 |
+
"source-map-support": {
|
6253 |
+
"version": "0.5.16",
|
6254 |
+
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz",
|
6255 |
+
"integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==",
|
6256 |
+
"dev": true,
|
6257 |
+
"requires": {
|
6258 |
+
"buffer-from": "^1.0.0",
|
6259 |
+
"source-map": "^0.6.0"
|
6260 |
+
},
|
6261 |
+
"dependencies": {
|
6262 |
+
"source-map": {
|
6263 |
+
"version": "0.6.1",
|
6264 |
+
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
6265 |
+
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
6266 |
+
"dev": true
|
6267 |
+
}
|
6268 |
+
}
|
6269 |
+
},
|
6270 |
+
"source-map-url": {
|
6271 |
+
"version": "0.4.0",
|
6272 |
+
"resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
|
6273 |
+
"integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
|
6274 |
+
"dev": true
|
6275 |
+
},
|
6276 |
+
"split-string": {
|
6277 |
+
"version": "3.1.0",
|
6278 |
+
"resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
|
6279 |
+
"integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
|
6280 |
+
"dev": true,
|
6281 |
+
"requires": {
|
6282 |
+
"extend-shallow": "^3.0.0"
|
6283 |
+
}
|
6284 |
+
},
|
6285 |
+
"sprintf-js": {
|
6286 |
+
"version": "1.0.3",
|
6287 |
+
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
|
6288 |
+
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
|
6289 |
+
"dev": true
|
6290 |
+
},
|
6291 |
+
"ssri": {
|
6292 |
+
"version": "6.0.1",
|
6293 |
+
"resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
|
6294 |
+
"integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
|
6295 |
+
"dev": true,
|
6296 |
+
"requires": {
|
6297 |
+
"figgy-pudding": "^3.5.1"
|
6298 |
+
}
|
6299 |
+
},
|
6300 |
+
"static-extend": {
|
6301 |
+
"version": "0.1.2",
|
6302 |
+
"resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
|
6303 |
+
"integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
|
6304 |
+
"dev": true,
|
6305 |
+
"requires": {
|
6306 |
+
"define-property": "^0.2.5",
|
6307 |
+
"object-copy": "^0.1.0"
|
6308 |
+
},
|
6309 |
+
"dependencies": {
|
6310 |
+
"define-property": {
|
6311 |
+
"version": "0.2.5",
|
6312 |
+
"resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
|
6313 |
+
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
|
6314 |
+
"dev": true,
|
6315 |
+
"requires": {
|
6316 |
+
"is-descriptor": "^0.1.0"
|
6317 |
+
}
|
6318 |
+
}
|
6319 |
+
}
|
6320 |
+
},
|
6321 |
+
"std-env": {
|
6322 |
+
"version": "2.2.1",
|
6323 |
+
"resolved": "https://registry.npmjs.org/std-env/-/std-env-2.2.1.tgz",
|
6324 |
+
"integrity": "sha512-IjYQUinA3lg5re/YMlwlfhqNRTzMZMqE+pezevdcTaHceqx8ngEi1alX9nNCk9Sc81fy1fLDeQoaCzeiW1yBOQ==",
|
6325 |
+
"dev": true,
|
6326 |
+
"requires": {
|
6327 |
+
"ci-info": "^1.6.0"
|
6328 |
+
}
|
6329 |
+
},
|
6330 |
+
"stream-browserify": {
|
6331 |
+
"version": "2.0.2",
|
6332 |
+
"resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
|
6333 |
+
"integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
|
6334 |
+
"dev": true,
|
6335 |
+
"requires": {
|
6336 |
+
"inherits": "~2.0.1",
|
6337 |
+
"readable-stream": "^2.0.2"
|
6338 |
+
}
|
6339 |
+
},
|
6340 |
+
"stream-each": {
|
6341 |
+
"version": "1.2.3",
|
6342 |
+
"resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
|
6343 |
+
"integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
|
6344 |
+
"dev": true,
|
6345 |
+
"requires": {
|
6346 |
+
"end-of-stream": "^1.1.0",
|
6347 |
+
"stream-shift": "^1.0.0"
|
6348 |
+
}
|
6349 |
+
},
|
6350 |
+
"stream-http": {
|
6351 |
+
"version": "2.8.3",
|
6352 |
+
"resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
|
6353 |
+
"integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
|
6354 |
+
"dev": true,
|
6355 |
+
"requires": {
|
6356 |
+
"builtin-status-codes": "^3.0.0",
|
6357 |
+
"inherits": "^2.0.1",
|
6358 |
+
"readable-stream": "^2.3.6",
|
6359 |
+
"to-arraybuffer": "^1.0.0",
|
6360 |
+
"xtend": "^4.0.0"
|
6361 |
+
}
|
6362 |
+
},
|
6363 |
+
"stream-shift": {
|
6364 |
+
"version": "1.0.1",
|
6365 |
+
"resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
|
6366 |
+
"integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
|
6367 |
+
"dev": true
|
6368 |
+
},
|
6369 |
+
"string-width": {
|
6370 |
+
"version": "4.2.0",
|
6371 |
+
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
|
6372 |
+
"integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
|
6373 |
+
"dev": true,
|
6374 |
+
"requires": {
|
6375 |
+
"emoji-regex": "^8.0.0",
|
6376 |
+
"is-fullwidth-code-point": "^3.0.0",
|
6377 |
+
"strip-ansi": "^6.0.0"
|
6378 |
+
},
|
6379 |
+
"dependencies": {
|
6380 |
+
"strip-ansi": {
|
6381 |
+
"version": "6.0.0",
|
6382 |
+
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
|
6383 |
+
"integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
|
6384 |
+
"dev": true,
|
6385 |
+
"requires": {
|
6386 |
+
"ansi-regex": "^5.0.0"
|
6387 |
+
}
|
6388 |
+
}
|
6389 |
+
}
|
6390 |
+
},
|
6391 |
+
"string.prototype.matchall": {
|
6392 |
+
"version": "4.0.2",
|
6393 |
+
"resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz",
|
6394 |
+
"integrity": "sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg==",
|
6395 |
+
"dev": true,
|
6396 |
+
"requires": {
|
6397 |
+
"define-properties": "^1.1.3",
|
6398 |
+
"es-abstract": "^1.17.0",
|
6399 |
+
"has-symbols": "^1.0.1",
|
6400 |
+
"internal-slot": "^1.0.2",
|
6401 |
+
"regexp.prototype.flags": "^1.3.0",
|
6402 |
+
"side-channel": "^1.0.2"
|
6403 |
+
}
|
6404 |
+
},
|
6405 |
+
"string.prototype.trimleft": {
|
6406 |
+
"version": "2.1.1",
|
6407 |
+
"resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz",
|
6408 |
+
"integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==",
|
6409 |
+
"dev": true,
|
6410 |
+
"requires": {
|
6411 |
+
"define-properties": "^1.1.3",
|
6412 |
+
"function-bind": "^1.1.1"
|
6413 |
+
}
|
6414 |
+
},
|
6415 |
+
"string.prototype.trimright": {
|
6416 |
+
"version": "2.1.1",
|
6417 |
+
"resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz",
|
6418 |
+
"integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==",
|
6419 |
+
"dev": true,
|
6420 |
+
"requires": {
|
6421 |
+
"define-properties": "^1.1.3",
|
6422 |
+
"function-bind": "^1.1.1"
|
6423 |
+
}
|
6424 |
+
},
|
6425 |
+
"string_decoder": {
|
6426 |
+
"version": "1.1.1",
|
6427 |
+
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
|
6428 |
+
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
|
6429 |
+
"dev": true,
|
6430 |
+
"requires": {
|
6431 |
+
"safe-buffer": "~5.1.0"
|
6432 |
+
},
|
6433 |
+
"dependencies": {
|
6434 |
+
"safe-buffer": {
|
6435 |
+
"version": "5.1.2",
|
6436 |
+
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
6437 |
+
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
|
6438 |
+
"dev": true
|
6439 |
+
}
|
6440 |
+
}
|
6441 |
+
},
|
6442 |
+
"strip-ansi": {
|
6443 |
+
"version": "5.2.0",
|
6444 |
+
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
|
6445 |
+
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
|
6446 |
+
"dev": true,
|
6447 |
+
"requires": {
|
6448 |
+
"ansi-regex": "^4.1.0"
|
6449 |
+
},
|
6450 |
+
"dependencies": {
|
6451 |
+
"ansi-regex": {
|
6452 |
+
"version": "4.1.0",
|
6453 |
+
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
|
6454 |
+
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
|
6455 |
+
"dev": true
|
6456 |
+
}
|
6457 |
+
}
|
6458 |
+
},
|
6459 |
+
"strip-eof": {
|
6460 |
+
"version": "1.0.0",
|
6461 |
+
"resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
|
6462 |
+
"integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
|
6463 |
+
"dev": true
|
6464 |
+
},
|
6465 |
+
"strip-json-comments": {
|
6466 |
+
"version": "3.0.1",
|
6467 |
+
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz",
|
6468 |
+
"integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==",
|
6469 |
+
"dev": true
|
6470 |
+
},
|
6471 |
+
"style-loader": {
|
6472 |
+
"version": "1.1.3",
|
6473 |
+
"resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.1.3.tgz",
|
6474 |
+
"integrity": "sha512-rlkH7X/22yuwFYK357fMN/BxYOorfnfq0eD7+vqlemSK4wEcejFF1dg4zxP0euBW8NrYx2WZzZ8PPFevr7D+Kw==",
|
6475 |
+
"dev": true,
|
6476 |
+
"requires": {
|
6477 |
+
"loader-utils": "^1.2.3",
|
6478 |
+
"schema-utils": "^2.6.4"
|
6479 |
+
},
|
6480 |
+
"dependencies": {
|
6481 |
+
"big.js": {
|
6482 |
+
"version": "5.2.2",
|
6483 |
+
"resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
|
6484 |
+
"integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
|
6485 |
+
"dev": true
|
6486 |
+
},
|
6487 |
+
"emojis-list": {
|
6488 |
+
"version": "3.0.0",
|
6489 |
+
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
|
6490 |
+
"integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
|
6491 |
+
"dev": true
|
6492 |
+
},
|
6493 |
+
"json5": {
|
6494 |
+
"version": "1.0.1",
|
6495 |
+
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
|
6496 |
+
"integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
|
6497 |
+
"dev": true,
|
6498 |
+
"requires": {
|
6499 |
+
"minimist": "^1.2.0"
|
6500 |
+
}
|
6501 |
+
},
|
6502 |
+
"loader-utils": {
|
6503 |
+
"version": "1.4.0",
|
6504 |
+
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
|
6505 |
+
"integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
|
6506 |
+
"dev": true,
|
6507 |
+
"requires": {
|
6508 |
+
"big.js": "^5.2.2",
|
6509 |
+
"emojis-list": "^3.0.0",
|
6510 |
+
"json5": "^1.0.1"
|
6511 |
+
}
|
6512 |
+
},
|
6513 |
+
"minimist": {
|
6514 |
+
"version": "1.2.5",
|
6515 |
+
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
|
6516 |
+
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
|
6517 |
+
"dev": true
|
6518 |
+
}
|
6519 |
+
}
|
6520 |
+
},
|
6521 |
+
"supports-color": {
|
6522 |
+
"version": "5.5.0",
|
6523 |
+
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
|
6524 |
+
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
|
6525 |
+
"dev": true,
|
6526 |
+
"requires": {
|
6527 |
+
"has-flag": "^3.0.0"
|
6528 |
+
}
|
6529 |
+
},
|
6530 |
+
"table": {
|
6531 |
+
"version": "5.4.6",
|
6532 |
+
"resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
|
6533 |
+
"integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
|
6534 |
+
"dev": true,
|
6535 |
+
"requires": {
|
6536 |
+
"ajv": "^6.10.2",
|
6537 |
+
"lodash": "^4.17.14",
|
6538 |
+
"slice-ansi": "^2.1.0",
|
6539 |
+
"string-width": "^3.0.0"
|
6540 |
+
},
|
6541 |
+
"dependencies": {
|
6542 |
+
"emoji-regex": {
|
6543 |
+
"version": "7.0.3",
|
6544 |
+
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
|
6545 |
+
"integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
|
6546 |
+
"dev": true
|
6547 |
+
},
|
6548 |
+
"is-fullwidth-code-point": {
|
6549 |
+
"version": "2.0.0",
|
6550 |
+
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
|
6551 |
+
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
|
6552 |
+
"dev": true
|
6553 |
+
},
|
6554 |
+
"string-width": {
|
6555 |
+
"version": "3.1.0",
|
6556 |
+
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
|
6557 |
+
"integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
|
6558 |
+
"dev": true,
|
6559 |
+
"requires": {
|
6560 |
+
"emoji-regex": "^7.0.1",
|
6561 |
+
"is-fullwidth-code-point": "^2.0.0",
|
6562 |
+
"strip-ansi": "^5.1.0"
|
6563 |
+
}
|
6564 |
+
}
|
6565 |
+
}
|
6566 |
+
},
|
6567 |
+
"tannin": {
|
6568 |
+
"version": "1.2.0",
|
6569 |
+
"resolved": "https://registry.npmjs.org/tannin/-/tannin-1.2.0.tgz",
|
6570 |
+
"integrity": "sha512-U7GgX/RcSeUETbV7gYgoz8PD7Ni4y95pgIP/Z6ayI3CfhSujwKEBlGFTCRN+Aqnuyf4AN2yHL+L8x+TCGjb9uA==",
|
6571 |
+
"requires": {
|
6572 |
+
"@tannin/plural-forms": "^1.1.0"
|
6573 |
+
}
|
6574 |
+
},
|
6575 |
+
"tapable": {
|
6576 |
+
"version": "1.1.3",
|
6577 |
+
"resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
|
6578 |
+
"integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
|
6579 |
+
"dev": true
|
6580 |
+
},
|
6581 |
+
"terser": {
|
6582 |
+
"version": "4.6.10",
|
6583 |
+
"resolved": "https://registry.npmjs.org/terser/-/terser-4.6.10.tgz",
|
6584 |
+
"integrity": "sha512-qbF/3UOo11Hggsbsqm2hPa6+L4w7bkr+09FNseEe8xrcVD3APGLFqE+Oz1ZKAxjYnFsj80rLOfgAtJ0LNJjtTA==",
|
6585 |
+
"dev": true,
|
6586 |
+
"requires": {
|
6587 |
+
"commander": "^2.20.0",
|
6588 |
+
"source-map": "~0.6.1",
|
6589 |
+
"source-map-support": "~0.5.12"
|
6590 |
+
},
|
6591 |
+
"dependencies": {
|
6592 |
+
"source-map": {
|
6593 |
+
"version": "0.6.1",
|
6594 |
+
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
6595 |
+
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
6596 |
+
"dev": true
|
6597 |
+
}
|
6598 |
+
}
|
6599 |
+
},
|
6600 |
+
"terser-webpack-plugin": {
|
6601 |
+
"version": "1.4.3",
|
6602 |
+
"resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz",
|
6603 |
+
"integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==",
|
6604 |
+
"dev": true,
|
6605 |
+
"requires": {
|
6606 |
+
"cacache": "^12.0.2",
|
6607 |
+
"find-cache-dir": "^2.1.0",
|
6608 |
+
"is-wsl": "^1.1.0",
|
6609 |
+
"schema-utils": "^1.0.0",
|
6610 |
+
"serialize-javascript": "^2.1.2",
|
6611 |
+
"source-map": "^0.6.1",
|
6612 |
+
"terser": "^4.1.2",
|
6613 |
+
"webpack-sources": "^1.4.0",
|
6614 |
+
"worker-farm": "^1.7.0"
|
6615 |
+
},
|
6616 |
+
"dependencies": {
|
6617 |
+
"schema-utils": {
|
6618 |
+
"version": "1.0.0",
|
6619 |
+
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
|
6620 |
+
"integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
|
6621 |
+
"dev": true,
|
6622 |
+
"requires": {
|
6623 |
+
"ajv": "^6.1.0",
|
6624 |
+
"ajv-errors": "^1.0.0",
|
6625 |
+
"ajv-keywords": "^3.1.0"
|
6626 |
+
}
|
6627 |
+
},
|
6628 |
+
"source-map": {
|
6629 |
+
"version": "0.6.1",
|
6630 |
+
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
6631 |
+
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
6632 |
+
"dev": true
|
6633 |
+
}
|
6634 |
+
}
|
6635 |
+
},
|
6636 |
+
"text-table": {
|
6637 |
+
"version": "0.2.0",
|
6638 |
+
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
|
6639 |
+
"integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
|
6640 |
+
"dev": true
|
6641 |
+
},
|
6642 |
+
"through": {
|
6643 |
+
"version": "2.3.8",
|
6644 |
+
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
|
6645 |
+
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
|
6646 |
+
"dev": true
|
6647 |
+
},
|
6648 |
+
"through2": {
|
6649 |
+
"version": "2.0.5",
|
6650 |
+
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
|
6651 |
+
"integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
|
6652 |
+
"dev": true,
|
6653 |
+
"requires": {
|
6654 |
+
"readable-stream": "~2.3.6",
|
6655 |
+
"xtend": "~4.0.1"
|
6656 |
+
}
|
6657 |
+
},
|
6658 |
+
"timers-browserify": {
|
6659 |
+
"version": "2.0.11",
|
6660 |
+
"resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz",
|
6661 |
+
"integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==",
|
6662 |
+
"dev": true,
|
6663 |
+
"requires": {
|
6664 |
+
"setimmediate": "^1.0.4"
|
6665 |
+
}
|
6666 |
+
},
|
6667 |
+
"tmp": {
|
6668 |
+
"version": "0.0.33",
|
6669 |
+
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
|
6670 |
+
"integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
|
6671 |
+
"dev": true,
|
6672 |
+
"requires": {
|
6673 |
+
"os-tmpdir": "~1.0.2"
|
6674 |
+
}
|
6675 |
+
},
|
6676 |
+
"to-arraybuffer": {
|
6677 |
+
"version": "1.0.1",
|
6678 |
+
"resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
|
6679 |
+
"integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
|
6680 |
+
"dev": true
|
6681 |
+
},
|
6682 |
+
"to-fast-properties": {
|
6683 |
+
"version": "2.0.0",
|
6684 |
+
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
|
6685 |
+
"integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
|
6686 |
+
"dev": true
|
6687 |
+
},
|
6688 |
+
"to-object-path": {
|
6689 |
+
"version": "0.3.0",
|
6690 |
+
"resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
|
6691 |
+
"integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
|
6692 |
+
"dev": true,
|
6693 |
+
"requires": {
|
6694 |
+
"kind-of": "^3.0.2"
|
6695 |
+
},
|
6696 |
+
"dependencies": {
|
6697 |
+
"kind-of": {
|
6698 |
+
"version": "3.2.2",
|
6699 |
+
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
|
6700 |
+
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
|
6701 |
+
"dev": true,
|
6702 |
+
"requires": {
|
6703 |
+
"is-buffer": "^1.1.5"
|
6704 |
+
}
|
6705 |
+
}
|
6706 |
+
}
|
6707 |
+
},
|
6708 |
+
"to-regex": {
|
6709 |
+
"version": "3.0.2",
|
6710 |
+
"resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
|
6711 |
+
"integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
|
6712 |
+
"dev": true,
|
6713 |
+
"requires": {
|
6714 |
+
"define-property": "^2.0.2",
|
6715 |
+
"extend-shallow": "^3.0.2",
|
6716 |
+
"regex-not": "^1.0.2",
|
6717 |
+
"safe-regex": "^1.1.0"
|
6718 |
+
}
|
6719 |
+
},
|
6720 |
+
"to-regex-range": {
|
6721 |
+
"version": "2.1.1",
|
6722 |
+
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
|
6723 |
+
"integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
|
6724 |
+
"dev": true,
|
6725 |
+
"requires": {
|
6726 |
+
"is-number": "^3.0.0",
|
6727 |
+
"repeat-string": "^1.6.1"
|
6728 |
+
}
|
6729 |
+
},
|
6730 |
+
"tslib": {
|
6731 |
+
"version": "1.11.1",
|
6732 |
+
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz",
|
6733 |
+
"integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==",
|
6734 |
+
"dev": true
|
6735 |
+
},
|
6736 |
+
"tty-browserify": {
|
6737 |
+
"version": "0.0.0",
|
6738 |
+
"resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
|
6739 |
+
"integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
|
6740 |
+
"dev": true
|
6741 |
+
},
|
6742 |
+
"type-check": {
|
6743 |
+
"version": "0.3.2",
|
6744 |
+
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
|
6745 |
+
"integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
|
6746 |
+
"dev": true,
|
6747 |
+
"requires": {
|
6748 |
+
"prelude-ls": "~1.1.2"
|
6749 |
+
}
|
6750 |
+
},
|
6751 |
+
"type-fest": {
|
6752 |
+
"version": "0.5.2",
|
6753 |
+
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz",
|
6754 |
+
"integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==",
|
6755 |
+
"dev": true
|
6756 |
+
},
|
6757 |
+
"typedarray": {
|
6758 |
+
"version": "0.0.6",
|
6759 |
+
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
|
6760 |
+
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
|
6761 |
+
"dev": true
|
6762 |
+
},
|
6763 |
+
"unicode-canonical-property-names-ecmascript": {
|
6764 |
+
"version": "1.0.4",
|
6765 |
+
"resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
|
6766 |
+
"integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==",
|
6767 |
+
"dev": true
|
6768 |
+
},
|
6769 |
+
"unicode-match-property-ecmascript": {
|
6770 |
+
"version": "1.0.4",
|
6771 |
+
"resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz",
|
6772 |
+
"integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==",
|
6773 |
+
"dev": true,
|
6774 |
+
"requires": {
|
6775 |
+
"unicode-canonical-property-names-ecmascript": "^1.0.4",
|
6776 |
+
"unicode-property-aliases-ecmascript": "^1.0.4"
|
6777 |
+
}
|
6778 |
+
},
|
6779 |
+
"unicode-match-property-value-ecmascript": {
|
6780 |
+
"version": "1.2.0",
|
6781 |
+
"resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz",
|
6782 |
+
"integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==",
|
6783 |
+
"dev": true
|
6784 |
+
},
|
6785 |
+
"unicode-property-aliases-ecmascript": {
|
6786 |
+
"version": "1.1.0",
|
6787 |
+
"resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz",
|
6788 |
+
"integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==",
|
6789 |
+
"dev": true
|
6790 |
+
},
|
6791 |
+
"union-value": {
|
6792 |
+
"version": "1.0.1",
|
6793 |
+
"resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
|
6794 |
+
"integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
|
6795 |
+
"dev": true,
|
6796 |
+
"requires": {
|
6797 |
+
"arr-union": "^3.1.0",
|
6798 |
+
"get-value": "^2.0.6",
|
6799 |
+
"is-extendable": "^0.1.1",
|
6800 |
+
"set-value": "^2.0.1"
|
6801 |
+
}
|
6802 |
+
},
|
6803 |
+
"uniq": {
|
6804 |
+
"version": "1.0.1",
|
6805 |
+
"resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
|
6806 |
+
"integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
|
6807 |
+
"dev": true
|
6808 |
+
},
|
6809 |
+
"unique-filename": {
|
6810 |
+
"version": "1.1.1",
|
6811 |
+
"resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
|
6812 |
+
"integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
|
6813 |
+
"dev": true,
|
6814 |
+
"requires": {
|
6815 |
+
"unique-slug": "^2.0.0"
|
6816 |
+
}
|
6817 |
+
},
|
6818 |
+
"unique-slug": {
|
6819 |
+
"version": "2.0.2",
|
6820 |
+
"resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
|
6821 |
+
"integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
|
6822 |
+
"dev": true,
|
6823 |
+
"requires": {
|
6824 |
+
"imurmurhash": "^0.1.4"
|
6825 |
+
}
|
6826 |
+
},
|
6827 |
+
"universalify": {
|
6828 |
+
"version": "1.0.0",
|
6829 |
+
"resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz",
|
6830 |
+
"integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==",
|
6831 |
+
"dev": true
|
6832 |
+
},
|
6833 |
+
"unset-value": {
|
6834 |
+
"version": "1.0.0",
|
6835 |
+
"resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
|
6836 |
+
"integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
|
6837 |
+
"dev": true,
|
6838 |
+
"requires": {
|
6839 |
+
"has-value": "^0.3.1",
|
6840 |
+
"isobject": "^3.0.0"
|
6841 |
+
},
|
6842 |
+
"dependencies": {
|
6843 |
+
"has-value": {
|
6844 |
+
"version": "0.3.1",
|
6845 |
+
"resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
|
6846 |
+
"integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
|
6847 |
+
"dev": true,
|
6848 |
+
"requires": {
|
6849 |
+
"get-value": "^2.0.3",
|
6850 |
+
"has-values": "^0.1.4",
|
6851 |
+
"isobject": "^2.0.0"
|
6852 |
+
},
|
6853 |
+
"dependencies": {
|
6854 |
+
"isobject": {
|
6855 |
+
"version": "2.1.0",
|
6856 |
+
"resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
|
6857 |
+
"integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
|
6858 |
+
"dev": true,
|
6859 |
+
"requires": {
|
6860 |
+
"isarray": "1.0.0"
|
6861 |
+
}
|
6862 |
+
}
|
6863 |
+
}
|
6864 |
+
},
|
6865 |
+
"has-values": {
|
6866 |
+
"version": "0.1.4",
|
6867 |
+
"resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
|
6868 |
+
"integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
|
6869 |
+
"dev": true
|
6870 |
+
}
|
6871 |
+
}
|
6872 |
+
},
|
6873 |
+
"upath": {
|
6874 |
+
"version": "1.2.0",
|
6875 |
+
"resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
|
6876 |
+
"integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
|
6877 |
+
"dev": true
|
6878 |
+
},
|
6879 |
+
"uri-js": {
|
6880 |
+
"version": "4.2.2",
|
6881 |
+
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
|
6882 |
+
"integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
|
6883 |
+
"dev": true,
|
6884 |
+
"requires": {
|
6885 |
+
"punycode": "^2.1.0"
|
6886 |
+
}
|
6887 |
+
},
|
6888 |
+
"urix": {
|
6889 |
+
"version": "0.1.0",
|
6890 |
+
"resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
|
6891 |
+
"integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
|
6892 |
+
"dev": true
|
6893 |
+
},
|
6894 |
+
"url": {
|
6895 |
+
"version": "0.11.0",
|
6896 |
+
"resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
|
6897 |
+
"integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
|
6898 |
+
"dev": true,
|
6899 |
+
"requires": {
|
6900 |
+
"punycode": "1.3.2",
|
6901 |
+
"querystring": "0.2.0"
|
6902 |
+
},
|
6903 |
+
"dependencies": {
|
6904 |
+
"punycode": {
|
6905 |
+
"version": "1.3.2",
|
6906 |
+
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
|
6907 |
+
"integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
|
6908 |
+
"dev": true
|
6909 |
+
}
|
6910 |
+
}
|
6911 |
+
},
|
6912 |
+
"use": {
|
6913 |
+
"version": "3.1.1",
|
6914 |
+
"resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
|
6915 |
+
"integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
|
6916 |
+
"dev": true
|
6917 |
+
},
|
6918 |
+
"util": {
|
6919 |
+
"version": "0.11.1",
|
6920 |
+
"resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
|
6921 |
+
"integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
|
6922 |
+
"dev": true,
|
6923 |
+
"requires": {
|
6924 |
+
"inherits": "2.0.3"
|
6925 |
+
},
|
6926 |
+
"dependencies": {
|
6927 |
+
"inherits": {
|
6928 |
+
"version": "2.0.3",
|
6929 |
+
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
|
6930 |
+
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
|
6931 |
+
"dev": true
|
6932 |
+
}
|
6933 |
+
}
|
6934 |
+
},
|
6935 |
+
"util-deprecate": {
|
6936 |
+
"version": "1.0.2",
|
6937 |
+
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
6938 |
+
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
|
6939 |
+
"dev": true
|
6940 |
+
},
|
6941 |
+
"uuid": {
|
6942 |
+
"version": "7.0.3",
|
6943 |
+
"resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz",
|
6944 |
+
"integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==",
|
6945 |
+
"dev": true
|
6946 |
+
},
|
6947 |
+
"v8-compile-cache": {
|
6948 |
+
"version": "2.1.0",
|
6949 |
+
"resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz",
|
6950 |
+
"integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==",
|
6951 |
+
"dev": true
|
6952 |
+
},
|
6953 |
+
"vm-browserify": {
|
6954 |
+
"version": "1.1.2",
|
6955 |
+
"resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
|
6956 |
+
"integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
|
6957 |
+
"dev": true
|
6958 |
+
},
|
6959 |
+
"watchpack": {
|
6960 |
+
"version": "1.6.1",
|
6961 |
+
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.1.tgz",
|
6962 |
+
"integrity": "sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA==",
|
6963 |
+
"dev": true,
|
6964 |
+
"requires": {
|
6965 |
+
"chokidar": "^2.1.8",
|
6966 |
+
"graceful-fs": "^4.1.2",
|
6967 |
+
"neo-async": "^2.5.0"
|
6968 |
+
}
|
6969 |
+
},
|
6970 |
+
"webpack": {
|
6971 |
+
"version": "4.42.1",
|
6972 |
+
"resolved": "https://registry.npmjs.org/webpack/-/webpack-4.42.1.tgz",
|
6973 |
+
"integrity": "sha512-SGfYMigqEfdGchGhFFJ9KyRpQKnipvEvjc1TwrXEPCM6H5Wywu10ka8o3KGrMzSMxMQKt8aCHUFh5DaQ9UmyRg==",
|
6974 |
+
"dev": true,
|
6975 |
+
"requires": {
|
6976 |
+
"@webassemblyjs/ast": "1.9.0",
|
6977 |
+
"@webassemblyjs/helper-module-context": "1.9.0",
|
6978 |
+
"@webassemblyjs/wasm-edit": "1.9.0",
|
6979 |
+
"@webassemblyjs/wasm-parser": "1.9.0",
|
6980 |
+
"acorn": "^6.2.1",
|
6981 |
+
"ajv": "^6.10.2",
|
6982 |
+
"ajv-keywords": "^3.4.1",
|
6983 |
+
"chrome-trace-event": "^1.0.2",
|
6984 |
+
"enhanced-resolve": "^4.1.0",
|
6985 |
+
"eslint-scope": "^4.0.3",
|
6986 |
+
"json-parse-better-errors": "^1.0.2",
|
6987 |
+
"loader-runner": "^2.4.0",
|
6988 |
+
"loader-utils": "^1.2.3",
|
6989 |
+
"memory-fs": "^0.4.1",
|
6990 |
+
"micromatch": "^3.1.10",
|
6991 |
+
"mkdirp": "^0.5.3",
|
6992 |
+
"neo-async": "^2.6.1",
|
6993 |
+
"node-libs-browser": "^2.2.1",
|
6994 |
+
"schema-utils": "^1.0.0",
|
6995 |
+
"tapable": "^1.1.3",
|
6996 |
+
"terser-webpack-plugin": "^1.4.3",
|
6997 |
+
"watchpack": "^1.6.0",
|
6998 |
+
"webpack-sources": "^1.4.1"
|
6999 |
+
},
|
7000 |
+
"dependencies": {
|
7001 |
+
"acorn": {
|
7002 |
+
"version": "6.4.1",
|
7003 |
+
"resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz",
|
7004 |
+
"integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==",
|
7005 |
+
"dev": true
|
7006 |
+
},
|
7007 |
+
"eslint-scope": {
|
7008 |
+
"version": "4.0.3",
|
7009 |
+
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
|
7010 |
+
"integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
|
7011 |
+
"dev": true,
|
7012 |
+
"requires": {
|
7013 |
+
"esrecurse": "^4.1.0",
|
7014 |
+
"estraverse": "^4.1.1"
|
7015 |
+
}
|
7016 |
+
},
|
7017 |
+
"minimist": {
|
7018 |
+
"version": "1.2.5",
|
7019 |
+
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
|
7020 |
+
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
|
7021 |
+
"dev": true
|
7022 |
+
},
|
7023 |
+
"mkdirp": {
|
7024 |
+
"version": "0.5.5",
|
7025 |
+
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
|
7026 |
+
"integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
|
7027 |
+
"dev": true,
|
7028 |
+
"requires": {
|
7029 |
+
"minimist": "^1.2.5"
|
7030 |
+
}
|
7031 |
+
},
|
7032 |
+
"schema-utils": {
|
7033 |
+
"version": "1.0.0",
|
7034 |
+
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
|
7035 |
+
"integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
|
7036 |
+
"dev": true,
|
7037 |
+
"requires": {
|
7038 |
+
"ajv": "^6.1.0",
|
7039 |
+
"ajv-errors": "^1.0.0",
|
7040 |
+
"ajv-keywords": "^3.1.0"
|
7041 |
+
}
|
7042 |
+
}
|
7043 |
+
}
|
7044 |
+
},
|
7045 |
+
"webpack-cli": {
|
7046 |
+
"version": "3.3.11",
|
7047 |
+
"resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.11.tgz",
|
7048 |
+
"integrity": "sha512-dXlfuml7xvAFwYUPsrtQAA9e4DOe58gnzSxhgrO/ZM/gyXTBowrsYeubyN4mqGhYdpXMFNyQ6emjJS9M7OBd4g==",
|
7049 |
+
"dev": true,
|
7050 |
+
"requires": {
|
7051 |
+
"chalk": "2.4.2",
|
7052 |
+
"cross-spawn": "6.0.5",
|
7053 |
+
"enhanced-resolve": "4.1.0",
|
7054 |
+
"findup-sync": "3.0.0",
|
7055 |
+
"global-modules": "2.0.0",
|
7056 |
+
"import-local": "2.0.0",
|
7057 |
+
"interpret": "1.2.0",
|
7058 |
+
"loader-utils": "1.2.3",
|
7059 |
+
"supports-color": "6.1.0",
|
7060 |
+
"v8-compile-cache": "2.0.3",
|
7061 |
+
"yargs": "13.2.4"
|
7062 |
+
},
|
7063 |
+
"dependencies": {
|
7064 |
+
"big.js": {
|
7065 |
+
"version": "5.2.2",
|
7066 |
+
"resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
|
7067 |
+
"integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
|
7068 |
+
"dev": true
|
7069 |
+
},
|
7070 |
+
"enhanced-resolve": {
|
7071 |
+
"version": "4.1.0",
|
7072 |
+
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz",
|
7073 |
+
"integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==",
|
7074 |
+
"dev": true,
|
7075 |
+
"requires": {
|
7076 |
+
"graceful-fs": "^4.1.2",
|
7077 |
+
"memory-fs": "^0.4.0",
|
7078 |
+
"tapable": "^1.0.0"
|
7079 |
+
}
|
7080 |
+
},
|
7081 |
+
"json5": {
|
7082 |
+
"version": "1.0.1",
|
7083 |
+
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
|
7084 |
+
"integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
|
7085 |
+
"dev": true,
|
7086 |
+
"requires": {
|
7087 |
+
"minimist": "^1.2.0"
|
7088 |
+
}
|
7089 |
+
},
|
7090 |
+
"loader-utils": {
|
7091 |
+
"version": "1.2.3",
|
7092 |
+
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz",
|
7093 |
+
"integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==",
|
7094 |
+
"dev": true,
|
7095 |
+
"requires": {
|
7096 |
+
"big.js": "^5.2.2",
|
7097 |
+
"emojis-list": "^2.0.0",
|
7098 |
+
"json5": "^1.0.1"
|
7099 |
+
}
|
7100 |
+
},
|
7101 |
+
"minimist": {
|
7102 |
+
"version": "1.2.5",
|
7103 |
+
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
|
7104 |
+
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
|
7105 |
+
"dev": true
|
7106 |
+
},
|
7107 |
+
"supports-color": {
|
7108 |
+
"version": "6.1.0",
|
7109 |
+
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
|
7110 |
+
"integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
|
7111 |
+
"dev": true,
|
7112 |
+
"requires": {
|
7113 |
+
"has-flag": "^3.0.0"
|
7114 |
+
}
|
7115 |
+
},
|
7116 |
+
"v8-compile-cache": {
|
7117 |
+
"version": "2.0.3",
|
7118 |
+
"resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz",
|
7119 |
+
"integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==",
|
7120 |
+
"dev": true
|
7121 |
+
}
|
7122 |
+
}
|
7123 |
+
},
|
7124 |
+
"webpack-sources": {
|
7125 |
+
"version": "1.4.3",
|
7126 |
+
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
|
7127 |
+
"integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
|
7128 |
+
"dev": true,
|
7129 |
+
"requires": {
|
7130 |
+
"source-list-map": "^2.0.0",
|
7131 |
+
"source-map": "~0.6.1"
|
7132 |
+
},
|
7133 |
+
"dependencies": {
|
7134 |
+
"source-map": {
|
7135 |
+
"version": "0.6.1",
|
7136 |
+
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
7137 |
+
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
7138 |
+
"dev": true
|
7139 |
+
}
|
7140 |
+
}
|
7141 |
+
},
|
7142 |
+
"webpackbar": {
|
7143 |
+
"version": "4.0.0",
|
7144 |
+
"resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-4.0.0.tgz",
|
7145 |
+
"integrity": "sha512-k1qRoSL/3BVuINzngj09nIwreD8wxV4grcuhHTD8VJgUbGcy8lQSPqv+bM00B7F+PffwIsQ8ISd4mIwRbr23eQ==",
|
7146 |
+
"dev": true,
|
7147 |
+
"requires": {
|
7148 |
+
"ansi-escapes": "^4.2.1",
|
7149 |
+
"chalk": "^2.4.2",
|
7150 |
+
"consola": "^2.10.0",
|
7151 |
+
"figures": "^3.0.0",
|
7152 |
+
"pretty-time": "^1.1.0",
|
7153 |
+
"std-env": "^2.2.1",
|
7154 |
+
"text-table": "^0.2.0",
|
7155 |
+
"wrap-ansi": "^6.0.0"
|
7156 |
+
},
|
7157 |
+
"dependencies": {
|
7158 |
+
"ansi-escapes": {
|
7159 |
+
"version": "4.2.1",
|
7160 |
+
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.2.1.tgz",
|
7161 |
+
"integrity": "sha512-Cg3ymMAdN10wOk/VYfLV7KCQyv7EDirJ64500sU7n9UlmioEtDuU5Gd+hj73hXSU/ex7tHJSssmyftDdkMLO8Q==",
|
7162 |
+
"dev": true,
|
7163 |
+
"requires": {
|
7164 |
+
"type-fest": "^0.5.2"
|
7165 |
+
}
|
7166 |
+
},
|
7167 |
+
"chalk": {
|
7168 |
+
"version": "2.4.2",
|
7169 |
+
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
|
7170 |
+
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
|
7171 |
+
"dev": true,
|
7172 |
+
"requires": {
|
7173 |
+
"ansi-styles": "^3.2.1",
|
7174 |
+
"escape-string-regexp": "^1.0.5",
|
7175 |
+
"supports-color": "^5.3.0"
|
7176 |
+
}
|
7177 |
+
},
|
7178 |
+
"color-convert": {
|
7179 |
+
"version": "2.0.1",
|
7180 |
+
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
7181 |
+
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
7182 |
+
"dev": true,
|
7183 |
+
"requires": {
|
7184 |
+
"color-name": "~1.1.4"
|
7185 |
+
}
|
7186 |
+
},
|
7187 |
+
"color-name": {
|
7188 |
+
"version": "1.1.4",
|
7189 |
+
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
7190 |
+
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
|
7191 |
+
"dev": true
|
7192 |
+
},
|
7193 |
+
"emoji-regex": {
|
7194 |
+
"version": "8.0.0",
|
7195 |
+
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
7196 |
+
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
|
7197 |
+
"dev": true
|
7198 |
+
},
|
7199 |
+
"figures": {
|
7200 |
+
"version": "3.0.0",
|
7201 |
+
"resolved": "https://registry.npmjs.org/figures/-/figures-3.0.0.tgz",
|
7202 |
+
"integrity": "sha512-HKri+WoWoUgr83pehn/SIgLOMZ9nAWC6dcGj26RY2R4F50u4+RTUz0RCrUlOV3nKRAICW1UGzyb+kcX2qK1S/g==",
|
7203 |
+
"dev": true,
|
7204 |
+
"requires": {
|
7205 |
+
"escape-string-regexp": "^1.0.5"
|
7206 |
+
}
|
7207 |
+
},
|
7208 |
+
"is-fullwidth-code-point": {
|
7209 |
+
"version": "3.0.0",
|
7210 |
+
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
7211 |
+
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
|
7212 |
+
"dev": true
|
7213 |
+
},
|
7214 |
+
"string-width": {
|
7215 |
+
"version": "4.1.0",
|
7216 |
+
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.1.0.tgz",
|
7217 |
+
"integrity": "sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ==",
|
7218 |
+
"dev": true,
|
7219 |
+
"requires": {
|
7220 |
+
"emoji-regex": "^8.0.0",
|
7221 |
+
"is-fullwidth-code-point": "^3.0.0",
|
7222 |
+
"strip-ansi": "^5.2.0"
|
7223 |
+
}
|
7224 |
+
},
|
7225 |
+
"wrap-ansi": {
|
7226 |
+
"version": "6.0.0",
|
7227 |
+
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.0.0.tgz",
|
7228 |
+
"integrity": "sha512-8YwLklVkHe4QNpGFrK6Mxm+BaMY7da6C9GlDED3xs3XwThyJHSbVwg9qC4s1N8tBFcnM1S0s8I390RC6SgGe+g==",
|
7229 |
+
"dev": true,
|
7230 |
+
"requires": {
|
7231 |
+
"ansi-styles": "^4.0.0",
|
7232 |
+
"string-width": "^4.1.0",
|
7233 |
+
"strip-ansi": "^5.0.0"
|
7234 |
+
},
|
7235 |
+
"dependencies": {
|
7236 |
+
"ansi-styles": {
|
7237 |
+
"version": "4.1.0",
|
7238 |
+
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.1.0.tgz",
|
7239 |
+
"integrity": "sha512-Qts4KCLKG+waHc9C4m07weIY8qyeixoS0h6RnbsNVD6Fw+pEZGW3vTyObL3WXpE09Mq4Oi7/lBEyLmOiLtlYWQ==",
|
7240 |
+
"dev": true,
|
7241 |
+
"requires": {
|
7242 |
+
"color-convert": "^2.0.1"
|
7243 |
+
}
|
7244 |
+
}
|
7245 |
+
}
|
7246 |
+
}
|
7247 |
+
}
|
7248 |
+
},
|
7249 |
+
"which": {
|
7250 |
+
"version": "1.3.1",
|
7251 |
+
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
|
7252 |
+
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
|
7253 |
+
"dev": true,
|
7254 |
+
"requires": {
|
7255 |
+
"isexe": "^2.0.0"
|
7256 |
+
}
|
7257 |
+
},
|
7258 |
+
"which-module": {
|
7259 |
+
"version": "2.0.0",
|
7260 |
+
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
|
7261 |
+
"integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
|
7262 |
+
"dev": true
|
7263 |
+
},
|
7264 |
+
"word-wrap": {
|
7265 |
+
"version": "1.2.3",
|
7266 |
+
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
|
7267 |
+
"integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
|
7268 |
+
"dev": true
|
7269 |
+
},
|
7270 |
+
"worker-farm": {
|
7271 |
+
"version": "1.7.0",
|
7272 |
+
"resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
|
7273 |
+
"integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==",
|
7274 |
+
"dev": true,
|
7275 |
+
"requires": {
|
7276 |
+
"errno": "~0.1.7"
|
7277 |
+
}
|
7278 |
+
},
|
7279 |
+
"wrap-ansi": {
|
7280 |
+
"version": "5.1.0",
|
7281 |
+
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
|
7282 |
+
"integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
|
7283 |
+
"dev": true,
|
7284 |
+
"requires": {
|
7285 |
+
"ansi-styles": "^3.2.0",
|
7286 |
+
"string-width": "^3.0.0",
|
7287 |
+
"strip-ansi": "^5.0.0"
|
7288 |
+
},
|
7289 |
+
"dependencies": {
|
7290 |
+
"emoji-regex": {
|
7291 |
+
"version": "7.0.3",
|
7292 |
+
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
|
7293 |
+
"integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
|
7294 |
+
"dev": true
|
7295 |
+
},
|
7296 |
+
"is-fullwidth-code-point": {
|
7297 |
+
"version": "2.0.0",
|
7298 |
+
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
|
7299 |
+
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
|
7300 |
+
"dev": true
|
7301 |
+
},
|
7302 |
+
"string-width": {
|
7303 |
+
"version": "3.1.0",
|
7304 |
+
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
|
7305 |
+
"integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
|
7306 |
+
"dev": true,
|
7307 |
+
"requires": {
|
7308 |
+
"emoji-regex": "^7.0.1",
|
7309 |
+
"is-fullwidth-code-point": "^2.0.0",
|
7310 |
+
"strip-ansi": "^5.1.0"
|
7311 |
+
}
|
7312 |
+
}
|
7313 |
+
}
|
7314 |
+
},
|
7315 |
+
"wrappy": {
|
7316 |
+
"version": "1.0.2",
|
7317 |
+
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
7318 |
+
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
7319 |
+
"dev": true
|
7320 |
+
},
|
7321 |
+
"write": {
|
7322 |
+
"version": "1.0.3",
|
7323 |
+
"resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
|
7324 |
+
"integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
|
7325 |
+
"dev": true,
|
7326 |
+
"requires": {
|
7327 |
+
"mkdirp": "^0.5.1"
|
7328 |
+
}
|
7329 |
+
},
|
7330 |
+
"xregexp": {
|
7331 |
+
"version": "4.3.0",
|
7332 |
+
"resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.3.0.tgz",
|
7333 |
+
"integrity": "sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g==",
|
7334 |
+
"dev": true,
|
7335 |
+
"requires": {
|
7336 |
+
"@babel/runtime-corejs3": "^7.8.3"
|
7337 |
+
}
|
7338 |
+
},
|
7339 |
+
"xtend": {
|
7340 |
+
"version": "4.0.2",
|
7341 |
+
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
|
7342 |
+
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
|
7343 |
+
"dev": true
|
7344 |
+
},
|
7345 |
+
"y18n": {
|
7346 |
+
"version": "4.0.0",
|
7347 |
+
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
|
7348 |
+
"integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
|
7349 |
+
"dev": true
|
7350 |
+
},
|
7351 |
+
"yallist": {
|
7352 |
+
"version": "3.1.1",
|
7353 |
+
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
|
7354 |
+
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
|
7355 |
+
"dev": true
|
7356 |
+
},
|
7357 |
+
"yargs": {
|
7358 |
+
"version": "13.2.4",
|
7359 |
+
"resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz",
|
7360 |
+
"integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==",
|
7361 |
+
"dev": true,
|
7362 |
+
"requires": {
|
7363 |
+
"cliui": "^5.0.0",
|
7364 |
+
"find-up": "^3.0.0",
|
7365 |
+
"get-caller-file": "^2.0.1",
|
7366 |
+
"os-locale": "^3.1.0",
|
7367 |
+
"require-directory": "^2.1.1",
|
7368 |
+
"require-main-filename": "^2.0.0",
|
7369 |
+
"set-blocking": "^2.0.0",
|
7370 |
+
"string-width": "^3.0.0",
|
7371 |
+
"which-module": "^2.0.0",
|
7372 |
+
"y18n": "^4.0.0",
|
7373 |
+
"yargs-parser": "^13.1.0"
|
7374 |
+
},
|
7375 |
+
"dependencies": {
|
7376 |
+
"emoji-regex": {
|
7377 |
+
"version": "7.0.3",
|
7378 |
+
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
|
7379 |
+
"integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
|
7380 |
+
"dev": true
|
7381 |
+
},
|
7382 |
+
"is-fullwidth-code-point": {
|
7383 |
+
"version": "2.0.0",
|
7384 |
+
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
|
7385 |
+
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
|
7386 |
+
"dev": true
|
7387 |
+
},
|
7388 |
+
"string-width": {
|
7389 |
+
"version": "3.1.0",
|
7390 |
+
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
|
7391 |
+
"integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
|
7392 |
+
"dev": true,
|
7393 |
+
"requires": {
|
7394 |
+
"emoji-regex": "^7.0.1",
|
7395 |
+
"is-fullwidth-code-point": "^2.0.0",
|
7396 |
+
"strip-ansi": "^5.1.0"
|
7397 |
+
}
|
7398 |
+
}
|
7399 |
+
}
|
7400 |
+
},
|
7401 |
+
"yargs-parser": {
|
7402 |
+
"version": "13.1.2",
|
7403 |
+
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
|
7404 |
+
"integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
|
7405 |
+
"dev": true,
|
7406 |
+
"requires": {
|
7407 |
+
"camelcase": "^5.0.0",
|
7408 |
+
"decamelize": "^1.2.0"
|
7409 |
+
}
|
7410 |
+
}
|
7411 |
+
}
|
7412 |
+
}
|
package.json
ADDED
@@ -0,0 +1,35 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
{
|
2 |
+
"name": "mathml-block",
|
3 |
+
"main": "mathml-block.js",
|
4 |
+
"scripts": {
|
5 |
+
"build": "webpack --mode=production ",
|
6 |
+
"build:dev": "webpack --mode=development --debug --devtool cheap-source-map --output-pathinfo",
|
7 |
+
"watch": "webpack --watch --mode=development --debug --devtool cheap-module-eval-source-map --output-pathinfo"
|
8 |
+
},
|
9 |
+
"author": "",
|
10 |
+
"license": "GPL-2.0",
|
11 |
+
"devDependencies": {
|
12 |
+
"@babel/core": "^7.9.0",
|
13 |
+
"@babel/preset-env": "^7.9.0",
|
14 |
+
"@babel/preset-react": "^7.9.4",
|
15 |
+
"babel": "^6.23.0",
|
16 |
+
"babel-eslint": "^10.1.0",
|
17 |
+
"babel-loader": "^8.1.0",
|
18 |
+
"css-loader": "^3.4.2",
|
19 |
+
"eslint": "^6.8.0",
|
20 |
+
"eslint-config-wordpress": "^2.0.0",
|
21 |
+
"eslint-loader": "^4.0.0",
|
22 |
+
"eslint-plugin-react": "^7.19.0",
|
23 |
+
"lodash": "^4.17.15",
|
24 |
+
"react": "^16.13.1",
|
25 |
+
"react-dom": "^16.13.1",
|
26 |
+
"style-loader": "^1.1.3",
|
27 |
+
"uuid": "^7.0.3",
|
28 |
+
"webpack": "^4.42.1",
|
29 |
+
"webpack-cli": "^3.3.11",
|
30 |
+
"webpackbar": "^4.0.0"
|
31 |
+
},
|
32 |
+
"dependencies": {
|
33 |
+
"@wordpress/i18n": "^3.10.0"
|
34 |
+
}
|
35 |
+
}
|
readme.txt
ADDED
@@ -0,0 +1,61 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
=== MathML Block ===
|
2 |
+
Contributors: adamsilverstein
|
3 |
+
Author URI: http://tunedin.net.com
|
4 |
+
Plugin URI: https://github.com/adamsilverstein/mathml-block
|
5 |
+
Tags: MathML, Gutenberg, Block, math, block editor
|
6 |
+
Requires at least: 5.0
|
7 |
+
Tested up to: 5.4
|
8 |
+
Requires PHP: 5.4
|
9 |
+
Stable tag: trunk
|
10 |
+
License: GPLv2 or later
|
11 |
+
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
12 |
+
Text Domain: mathml-block
|
13 |
+
|
14 |
+
A MathML block for the WordPress block editor (Gutenberg).
|
15 |
+
|
16 |
+
== Description ==
|
17 |
+
|
18 |
+
A MathML block for the WordPress block editor (Gutenberg).
|
19 |
+
Requires PHP 5.4+ and WordPress 5.0+.
|
20 |
+
|
21 |
+
Development takes place on the GitHub repository: https://github.com/adamsilverstein/mathml-block.
|
22 |
+
|
23 |
+
Screencast: https://cl.ly/c0f6bbfbc3b1
|
24 |
+
|
25 |
+
=== What is MathML? ===
|
26 |
+
|
27 |
+
Mathematical Markup Language is a mathematical markup language, an application of XML for describing mathematical notations and capturing both its structure and content. It aims at integrating mathematical formulae into World Wide Web pages and other documents.
|
28 |
+
|
29 |
+
The MathML lock uses MathJax to render MathML formulas in the editor and on the front end of a website. MathJax (https://www.mathjax.org/) is _A JavaScript display engine for mathematics that works in all browsers._
|
30 |
+
|
31 |
+
To test a MathML block and enter a formula, for example: `\[x = {-b \pm \sqrt{b^2-4ac} \over 2a}\]`.
|
32 |
+
|
33 |
+
To test using math formulas inline, type an formula into a block of text, select it and hit the 'M' icon in the control bar. For example: `\( \cos(θ+φ)=\cos(θ)\cos(φ)−\sin(θ)\sin(φ) \)`. _Note: if you are copying and pasting formulas into the rich text editor, switching to HTML/code editor mode is less likely to reformat your pasted formula._
|
34 |
+
|
35 |
+
=== Technical Notes ===
|
36 |
+
|
37 |
+
* Requires PHP 5.4+.
|
38 |
+
* Requires WordPress 5.0+.
|
39 |
+
* Issues and Pull requests welcome on the GitHub repository: https://github.com/adamsilverstein/mathml-block.
|
40 |
+
|
41 |
+
== Screenshots ==
|
42 |
+
|
43 |
+
1. Example of adding a MathML block.
|
44 |
+
|
45 |
+
|
46 |
+
== Installation ==
|
47 |
+
1. Install the plugin via the plugin installer, either by searching for it or uploading a .zip file.
|
48 |
+
2. Activate the plugin.
|
49 |
+
3. Use the MathML block!
|
50 |
+
|
51 |
+
== Changelog ==
|
52 |
+
|
53 |
+
= 1.1.1 =
|
54 |
+
* Improve translations, make JavaScript translatable.
|
55 |
+
* Update all packages.
|
56 |
+
|
57 |
+
= 1.1.0 =
|
58 |
+
* Add support for inline formulas.
|
59 |
+
|
60 |
+
= 1.0.0 =
|
61 |
+
* Initial plugin release
|
src/mathml-block.css
ADDED
@@ -0,0 +1,3 @@
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
.toolbar-button__advanced-mathml:before {
|
2 |
+
content: 'M';
|
3 |
+
}
|
src/mathml-block.js
ADDED
@@ -0,0 +1,71 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
import uuid from 'uuid/v4';
|
2 |
+
|
3 |
+
const { __ } = wp.i18n;
|
4 |
+
const { registerBlockType } = wp.blocks;
|
5 |
+
|
6 |
+
const renderMathML = ( id ) => {
|
7 |
+
setTimeout( () => {
|
8 |
+
MathJax.Hub.Queue( [ 'Typeset', MathJax.Hub, document.getElementById( id ) ] );
|
9 |
+
}, 100 );
|
10 |
+
};
|
11 |
+
|
12 |
+
registerBlockType( 'mathml/mathmlblock', {
|
13 |
+
title: 'MathML',
|
14 |
+
icon: 'list-view',
|
15 |
+
category: 'common',
|
16 |
+
attributes: {
|
17 |
+
formula: {
|
18 |
+
source: 'html',
|
19 |
+
selector: 'div',
|
20 |
+
type: 'string',
|
21 |
+
},
|
22 |
+
},
|
23 |
+
|
24 |
+
edit: ( props ) => {
|
25 |
+
|
26 |
+
const { isSelected, attributes, setAttributes, className } = props;
|
27 |
+
const { formula } = attributes;
|
28 |
+
const id = uuid();
|
29 |
+
|
30 |
+
renderMathML( id );
|
31 |
+
|
32 |
+
if ( isSelected ) {
|
33 |
+
return (
|
34 |
+
<div className={ className }>
|
35 |
+
<label htmlFor={ id }>{ __( 'MathML formula:', 'mathml-block' ) }</label>
|
36 |
+
<textarea
|
37 |
+
id={ id }
|
38 |
+
className="mathml-formula"
|
39 |
+
tagname="div"
|
40 |
+
onChange={ ( event ) => {
|
41 |
+
setAttributes( { formula: event.target.value } );
|
42 |
+
} }
|
43 |
+
value={ formula }
|
44 |
+
style={ { width: '100%' } }
|
45 |
+
/>
|
46 |
+
</div>
|
47 |
+
);
|
48 |
+
} else {
|
49 |
+
return (
|
50 |
+
<div
|
51 |
+
id={ id }
|
52 |
+
className="mathml-block"
|
53 |
+
>
|
54 |
+
{ formula }
|
55 |
+
</div>
|
56 |
+
);
|
57 |
+
}
|
58 |
+
},
|
59 |
+
|
60 |
+
save: function save( { attributes, className } ) {
|
61 |
+
const { formula } = attributes;
|
62 |
+
|
63 |
+
return (
|
64 |
+
<div className={ className }>
|
65 |
+
{ formula }
|
66 |
+
</div>
|
67 |
+
);
|
68 |
+
},
|
69 |
+
} );
|
70 |
+
|
71 |
+
|
src/mathml-inline.js
ADDED
@@ -0,0 +1,46 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
const { createElement, Fragment } = window.wp.element;
|
2 |
+
const { registerFormatType, toggleFormat } = window.wp.richText;
|
3 |
+
const { RichTextToolbarButton, RichTextShortcut } = window.wp.blockEditor;
|
4 |
+
const { __ } = window.wp.i18n;
|
5 |
+
import './mathml-block.css';
|
6 |
+
|
7 |
+
[
|
8 |
+
{
|
9 |
+
name: 'mathml',
|
10 |
+
title: __( 'MathML', 'mathml-block' ),
|
11 |
+
character: 'm'
|
12 |
+
},
|
13 |
+
|
14 |
+
].forEach( ( { name, title, character } ) => {
|
15 |
+
const type = `mathml-block/${ name }`;
|
16 |
+
registerFormatType( type, {
|
17 |
+
title,
|
18 |
+
tagName: name,
|
19 |
+
className: null,
|
20 |
+
edit( { isActive, value, onChange } ) {
|
21 |
+
const onToggle = () => {
|
22 |
+
onChange( toggleFormat( value, { type } ) );
|
23 |
+
setTimeout( () => {
|
24 |
+
MathJax.Hub.Queue( [ 'Typeset', MathJax.Hub, document.getElementsByTagName( 'mathml' ) ] );
|
25 |
+
}, 100 );
|
26 |
+
};
|
27 |
+
|
28 |
+
return (
|
29 |
+
createElement( Fragment, null,
|
30 |
+
createElement( RichTextShortcut, {
|
31 |
+
type: 'primary',
|
32 |
+
character,
|
33 |
+
onUse: onToggle
|
34 |
+
} ),
|
35 |
+
createElement( RichTextToolbarButton, {
|
36 |
+
title,
|
37 |
+
onClick: onToggle,
|
38 |
+
isActive,
|
39 |
+
shortcutType: 'primary',
|
40 |
+
shortcutCharacter: character,
|
41 |
+
className: `toolbar-button-with-text toolbar-button__advanced-${ name }`
|
42 |
+
} ) )
|
43 |
+
);
|
44 |
+
}
|
45 |
+
} );
|
46 |
+
} );
|
vendor/MathJax/.gitignore
ADDED
@@ -0,0 +1,2 @@
|
|
Â
|
|
Â
|
1 |
+
.DS_Store
|
2 |
+
docs/build/html-mathjax-site
|
vendor/MathJax/.npmignore
ADDED
@@ -0,0 +1,7 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
.DS_Store
|
2 |
+
docs/build/html-mathjax-site
|
3 |
+
config/local/*.js
|
4 |
+
!config/local/local.js
|
5 |
+
unpacked/config/local/*.js
|
6 |
+
!unpacked/config/local/local.js
|
7 |
+
fonts/HTML-CSS/TeX/png
|
vendor/MathJax/.travis.yml
ADDED
@@ -0,0 +1,17 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
language: node_js
|
2 |
+
node_js:
|
3 |
+
- stable
|
4 |
+
sudo: false
|
5 |
+
script:
|
6 |
+
- npm install
|
7 |
+
- npm test
|
8 |
+
branches:
|
9 |
+
only:
|
10 |
+
- "/^\\d+\\.\\d+/"
|
11 |
+
deploy:
|
12 |
+
provider: npm
|
13 |
+
email: manager@mathjax.org
|
14 |
+
api_key:
|
15 |
+
secure: cTkds6AqvCrkE9lAbBBjyDy7swjQEsGTCvLcjEyJemWH7ciNmtbwQ+Mzpk5bsL1i734CS29fTUBY05bPdwhBXB19yC0LzDfuNd2OKd1GhKa5OUig3d3+iNZEb/bhlEL/N2pM3pNBLT3+HDWBWVPPzDOCgSHYf355WmNlFIxrUtWbQQ7w5cX1d6ZKHVDkO0s9cl9eIQkX5aIKpsQM/N/tfkqPlF3OZuseTg7TU1wL+g6zqtsa0a1uhjXiCSRfDzgi4e2FUg9OBJHInbRho7MoZ9c8NrgCDTqwh1xJVAgi50HZpFAlhw3bBvWMzWLESLKUgmDOQc1/jzq6EhdUY1HMmryHPtvFIlyj0mWH88lZjUOqsCntG+t874ONYGkHF7I5q9VsX5LJNiZzASeXMymA1BP3fC33s/vGXen1H90JpdlGQXQvIXn6ZIQ9UiI1/bONuxVEUghnVRZHLTe2Nhy7s2s0OHTN23PmDVPHSzuM1FjEXXFaza/dGgOfi0ACRBPcqopQ2wxuCVDlmrrL+3r2o4Tp5F3f49KIrqNwO/GSnWX5H7GgxHKSh7CK1rUwqcpTumwYfY1Do/xdlu2D3I/IjZXO9TzDtZYJG1ye0BVTh44cECfBgBIZVmRH56Yjo5MvKEQwSSFfETKW4PKWoahbZIC4V99YWhoRqYqtb+OT0ow=
|
16 |
+
on:
|
17 |
+
tags: true
|
vendor/MathJax/MathJax.js
ADDED
@@ -0,0 +1,3324 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax.js
|
7 |
+
*
|
8 |
+
* The main support code for the MathJax Hub, including the
|
9 |
+
* Ajax, Callback, Messaging, and Object-Oriented Programming
|
10 |
+
* libraries, as well as the base Jax classes, and startup
|
11 |
+
* processing code.
|
12 |
+
*
|
13 |
+
* ---------------------------------------------------------------------
|
14 |
+
*
|
15 |
+
* Copyright (c) 2009-2018 The MathJax Consortium
|
16 |
+
*
|
17 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
18 |
+
* you may not use this file except in compliance with the License.
|
19 |
+
* You may obtain a copy of the License at
|
20 |
+
*
|
21 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
22 |
+
*
|
23 |
+
* Unless required by applicable law or agreed to in writing, software
|
24 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
25 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
26 |
+
* See the License for the specific language governing permissions and
|
27 |
+
* limitations under the License.
|
28 |
+
*/
|
29 |
+
|
30 |
+
|
31 |
+
//
|
32 |
+
// Check if browser can support MathJax (no one fails this nowadays)
|
33 |
+
//
|
34 |
+
if (document.getElementById && document.childNodes && document.createElement) {
|
35 |
+
//
|
36 |
+
// Skip if MathJax is already loaded
|
37 |
+
//
|
38 |
+
if (!(window.MathJax && MathJax.Hub)) {
|
39 |
+
|
40 |
+
//
|
41 |
+
// Get author configuration from MathJax variable, if any
|
42 |
+
//
|
43 |
+
if (window.MathJax) {window.MathJax = {AuthorConfig: window.MathJax}}
|
44 |
+
else {window.MathJax = {}}
|
45 |
+
|
46 |
+
// MathJax.isPacked = true; // This line is uncommented by the packer.
|
47 |
+
|
48 |
+
MathJax.version = "2.7.5";
|
49 |
+
MathJax.fileversion = "2.7.5";
|
50 |
+
MathJax.cdnVersion = "2.7.5"; // specifies a revision to break caching
|
51 |
+
MathJax.cdnFileVersions = {}; // can be used to specify revisions for individual files
|
52 |
+
|
53 |
+
/**********************************************************/
|
54 |
+
|
55 |
+
(function (BASENAME) {
|
56 |
+
var BASE = window[BASENAME];
|
57 |
+
if (!BASE) {BASE = window[BASENAME] = {}}
|
58 |
+
|
59 |
+
var PROTO = []; // a static object used to indicate when a prototype is being created
|
60 |
+
var OBJECT = function (def) {
|
61 |
+
var obj = def.constructor; if (!obj) {obj = function () {}}
|
62 |
+
for (var id in def) {if (id !== 'constructor' && def.hasOwnProperty(id)) {obj[id] = def[id]}}
|
63 |
+
return obj;
|
64 |
+
};
|
65 |
+
var CONSTRUCTOR = function () {
|
66 |
+
return function () {return arguments.callee.Init.call(this,arguments)};
|
67 |
+
};
|
68 |
+
|
69 |
+
BASE.Object = OBJECT({
|
70 |
+
constructor: CONSTRUCTOR(),
|
71 |
+
|
72 |
+
Subclass: function (def,classdef) {
|
73 |
+
var obj = CONSTRUCTOR();
|
74 |
+
obj.SUPER = this; obj.Init = this.Init;
|
75 |
+
obj.Subclass = this.Subclass; obj.Augment = this.Augment;
|
76 |
+
obj.protoFunction = this.protoFunction;
|
77 |
+
obj.can = this.can; obj.has = this.has; obj.isa = this.isa;
|
78 |
+
obj.prototype = new this(PROTO);
|
79 |
+
obj.prototype.constructor = obj; // the real constructor
|
80 |
+
obj.Augment(def,classdef);
|
81 |
+
return obj;
|
82 |
+
},
|
83 |
+
|
84 |
+
Init: function (args) {
|
85 |
+
var obj = this;
|
86 |
+
if (args.length === 1 && args[0] === PROTO) {return obj}
|
87 |
+
if (!(obj instanceof args.callee)) {obj = new args.callee(PROTO)}
|
88 |
+
return obj.Init.apply(obj,args) || obj;
|
89 |
+
},
|
90 |
+
|
91 |
+
Augment: function (def,classdef) {
|
92 |
+
var id;
|
93 |
+
if (def != null) {
|
94 |
+
for (id in def) {if (def.hasOwnProperty(id)) {this.protoFunction(id,def[id])}}
|
95 |
+
// MSIE doesn't list toString even if it is not native so handle it separately
|
96 |
+
if (def.toString !== this.prototype.toString && def.toString !== {}.toString)
|
97 |
+
{this.protoFunction('toString',def.toString)}
|
98 |
+
}
|
99 |
+
if (classdef != null) {
|
100 |
+
for (id in classdef) {if (classdef.hasOwnProperty(id)) {this[id] = classdef[id]}}
|
101 |
+
}
|
102 |
+
return this;
|
103 |
+
},
|
104 |
+
|
105 |
+
protoFunction: function (id,def) {
|
106 |
+
this.prototype[id] = def;
|
107 |
+
if (typeof def === "function") {def.SUPER = this.SUPER.prototype}
|
108 |
+
},
|
109 |
+
|
110 |
+
prototype: {
|
111 |
+
Init: function () {},
|
112 |
+
SUPER: function (fn) {return fn.callee.SUPER},
|
113 |
+
can: function (method) {return typeof(this[method]) === "function"},
|
114 |
+
has: function (property) {return typeof(this[property]) !== "undefined"},
|
115 |
+
isa: function (obj) {return (obj instanceof Object) && (this instanceof obj)}
|
116 |
+
},
|
117 |
+
|
118 |
+
can: function (method) {return this.prototype.can.call(this,method)},
|
119 |
+
has: function (property) {return this.prototype.has.call(this,property)},
|
120 |
+
isa: function (obj) {
|
121 |
+
var constructor = this;
|
122 |
+
while (constructor) {
|
123 |
+
if (constructor === obj) {return true} else {constructor = constructor.SUPER}
|
124 |
+
}
|
125 |
+
return false;
|
126 |
+
},
|
127 |
+
|
128 |
+
|
129 |
+
SimpleSUPER: OBJECT({
|
130 |
+
constructor: function (def) {return this.SimpleSUPER.define(def)},
|
131 |
+
|
132 |
+
define: function (src) {
|
133 |
+
var dst = {};
|
134 |
+
if (src != null) {
|
135 |
+
for (var id in src) {if (src.hasOwnProperty(id)) {dst[id] = this.wrap(id,src[id])}}
|
136 |
+
// MSIE doesn't list toString even if it is not native so handle it separately
|
137 |
+
if (src.toString !== this.prototype.toString && src.toString !== {}.toString)
|
138 |
+
{dst.toString = this.wrap('toString',src.toString)}
|
139 |
+
}
|
140 |
+
return dst;
|
141 |
+
},
|
142 |
+
|
143 |
+
wrap: function (id,f) {
|
144 |
+
if (typeof(f) !== 'function' || !f.toString().match(/\.\s*SUPER\s*\(/)) {return f}
|
145 |
+
var fn = function () {
|
146 |
+
this.SUPER = fn.SUPER[id];
|
147 |
+
try {var result = f.apply(this,arguments)} catch (err) {delete this.SUPER; throw err}
|
148 |
+
delete this.SUPER;
|
149 |
+
return result;
|
150 |
+
}
|
151 |
+
fn.toString = function () {return f.toString.apply(f,arguments)}
|
152 |
+
return fn;
|
153 |
+
}
|
154 |
+
|
155 |
+
})
|
156 |
+
});
|
157 |
+
|
158 |
+
BASE.Object.isArray = Array.isArray || function (obj) {
|
159 |
+
return Object.prototype.toString.call(obj) === "[object Array]";
|
160 |
+
};
|
161 |
+
|
162 |
+
BASE.Object.Array = Array;
|
163 |
+
|
164 |
+
})("MathJax");
|
165 |
+
|
166 |
+
/**********************************************************/
|
167 |
+
|
168 |
+
/*
|
169 |
+
* Create a callback function from various forms of data:
|
170 |
+
*
|
171 |
+
* MathJax.Callback(fn) -- callback to a function
|
172 |
+
*
|
173 |
+
* MathJax.Callback([fn]) -- callback to function
|
174 |
+
* MathJax.Callback([fn,data...])
|
175 |
+
* -- callback to function with given data as arguments
|
176 |
+
* MathJax.Callback([object,fn])
|
177 |
+
* -- call fn with object as "this"
|
178 |
+
* MathJax.Callback([object,fn,data...])
|
179 |
+
* -- call fn with object as "this" and data as arguments
|
180 |
+
* MathJax.Callback(["method",object])
|
181 |
+
* -- call method of object wth object as "this"
|
182 |
+
* MathJax.Callback(["method",object,data...])
|
183 |
+
* -- as above, but with data as arguments to method
|
184 |
+
*
|
185 |
+
* MathJax.Callback({hook: fn, data: [...], object: this})
|
186 |
+
* -- give function, data, and object to act as "this" explicitly
|
187 |
+
*
|
188 |
+
* MathJax.Callback("code") -- callback that compiles and executes a string
|
189 |
+
*
|
190 |
+
* MathJax.Callback([...],i)
|
191 |
+
* -- use slice of array starting at i and interpret
|
192 |
+
* result as above. (Used for passing "arguments" array
|
193 |
+
* and trimming initial arguments, if any.)
|
194 |
+
*/
|
195 |
+
|
196 |
+
/*
|
197 |
+
* MathJax.Callback.After([...],cb1,cb2,...)
|
198 |
+
* -- make a callback that isn't called until all the other
|
199 |
+
* ones are called first. I.e., wait for a union of
|
200 |
+
* callbacks to occur before making the given callback.
|
201 |
+
*/
|
202 |
+
|
203 |
+
/*
|
204 |
+
* MathJax.Callback.Queue([callback,...])
|
205 |
+
* -- make a synchronized queue of commands that process
|
206 |
+
* sequentially, waiting for those that return uncalled
|
207 |
+
* callbacks.
|
208 |
+
*/
|
209 |
+
|
210 |
+
/*
|
211 |
+
* MathJax.Callback.Signal(name)
|
212 |
+
* -- finds or creates a names signal, to which listeners
|
213 |
+
* can be attached and are signaled by messages posted
|
214 |
+
* to the signal. Responses can be asynchronous.
|
215 |
+
*/
|
216 |
+
|
217 |
+
(function (BASENAME) {
|
218 |
+
var BASE = window[BASENAME];
|
219 |
+
if (!BASE) {BASE = window[BASENAME] = {}}
|
220 |
+
var isArray = BASE.Object.isArray;
|
221 |
+
//
|
222 |
+
// Create a callback from an associative array
|
223 |
+
//
|
224 |
+
var CALLBACK = function (data) {
|
225 |
+
var cb = function () {return arguments.callee.execute.apply(arguments.callee,arguments)};
|
226 |
+
for (var id in CALLBACK.prototype) {
|
227 |
+
if (CALLBACK.prototype.hasOwnProperty(id)) {
|
228 |
+
if (typeof(data[id]) !== 'undefined') {cb[id] = data[id]}
|
229 |
+
else {cb[id] = CALLBACK.prototype[id]}
|
230 |
+
}
|
231 |
+
}
|
232 |
+
cb.toString = CALLBACK.prototype.toString;
|
233 |
+
return cb;
|
234 |
+
};
|
235 |
+
CALLBACK.prototype = {
|
236 |
+
isCallback: true,
|
237 |
+
hook: function () {},
|
238 |
+
data: [],
|
239 |
+
object: window,
|
240 |
+
execute: function () {
|
241 |
+
if (!this.called || this.autoReset) {
|
242 |
+
this.called = !this.autoReset;
|
243 |
+
return this.hook.apply(this.object,this.data.concat([].slice.call(arguments,0)));
|
244 |
+
}
|
245 |
+
},
|
246 |
+
reset: function () {delete this.called},
|
247 |
+
toString: function () {return this.hook.toString.apply(this.hook,arguments)}
|
248 |
+
};
|
249 |
+
var ISCALLBACK = function (f) {
|
250 |
+
return (typeof(f) === "function" && f.isCallback);
|
251 |
+
}
|
252 |
+
|
253 |
+
//
|
254 |
+
// Evaluate a string in global context
|
255 |
+
//
|
256 |
+
var EVAL = function (code) {return eval.call(window,code)}
|
257 |
+
var TESTEVAL = function () {
|
258 |
+
EVAL("var __TeSt_VaR__ = 1"); // check if it works in global context
|
259 |
+
if (window.__TeSt_VaR__) {
|
260 |
+
try { delete window.__TeSt_VaR__; } // NOTE IE9 throws when in IE7 mode
|
261 |
+
catch (error) { window.__TeSt_VaR__ = null; }
|
262 |
+
} else {
|
263 |
+
if (window.execScript) {
|
264 |
+
// IE
|
265 |
+
EVAL = function (code) {
|
266 |
+
BASE.__code = code;
|
267 |
+
code = "try {"+BASENAME+".__result = eval("+BASENAME+".__code)} catch(err) {"+BASENAME+".__result = err}";
|
268 |
+
window.execScript(code);
|
269 |
+
var result = BASE.__result; delete BASE.__result; delete BASE.__code;
|
270 |
+
if (result instanceof Error) {throw result}
|
271 |
+
return result;
|
272 |
+
}
|
273 |
+
} else {
|
274 |
+
// Safari2
|
275 |
+
EVAL = function (code) {
|
276 |
+
BASE.__code = code;
|
277 |
+
code = "try {"+BASENAME+".__result = eval("+BASENAME+".__code)} catch(err) {"+BASENAME+".__result = err}";
|
278 |
+
var head = (document.getElementsByTagName("head"))[0]; if (!head) {head = document.body}
|
279 |
+
var script = document.createElement("script");
|
280 |
+
script.appendChild(document.createTextNode(code));
|
281 |
+
head.appendChild(script); head.removeChild(script);
|
282 |
+
var result = BASE.__result; delete BASE.__result; delete BASE.__code;
|
283 |
+
if (result instanceof Error) {throw result}
|
284 |
+
return result;
|
285 |
+
}
|
286 |
+
}
|
287 |
+
}
|
288 |
+
TESTEVAL = null;
|
289 |
+
};
|
290 |
+
|
291 |
+
//
|
292 |
+
// Create a callback from various types of data
|
293 |
+
//
|
294 |
+
var USING = function (args,i) {
|
295 |
+
if (arguments.length > 1) {
|
296 |
+
if (arguments.length === 2 && !(typeof arguments[0] === 'function') &&
|
297 |
+
arguments[0] instanceof Object && typeof arguments[1] === 'number')
|
298 |
+
{args = [].slice.call(args,i)}
|
299 |
+
else {args = [].slice.call(arguments,0)}
|
300 |
+
}
|
301 |
+
if (isArray(args) && args.length === 1 && typeof(args[0]) === 'function') {args = args[0]}
|
302 |
+
if (typeof args === 'function') {
|
303 |
+
if (args.execute === CALLBACK.prototype.execute) {return args}
|
304 |
+
return CALLBACK({hook: args});
|
305 |
+
} else if (isArray(args)) {
|
306 |
+
if (typeof(args[0]) === 'string' && args[1] instanceof Object &&
|
307 |
+
typeof args[1][args[0]] === 'function') {
|
308 |
+
return CALLBACK({hook: args[1][args[0]], object: args[1], data: args.slice(2)});
|
309 |
+
} else if (typeof args[0] === 'function') {
|
310 |
+
return CALLBACK({hook: args[0], data: args.slice(1)});
|
311 |
+
} else if (typeof args[1] === 'function') {
|
312 |
+
return CALLBACK({hook: args[1], object: args[0], data: args.slice(2)});
|
313 |
+
}
|
314 |
+
} else if (typeof(args) === 'string') {
|
315 |
+
if (TESTEVAL) TESTEVAL();
|
316 |
+
return CALLBACK({hook: EVAL, data: [args]});
|
317 |
+
} else if (args instanceof Object) {
|
318 |
+
return CALLBACK(args);
|
319 |
+
} else if (typeof(args) === 'undefined') {
|
320 |
+
return CALLBACK({});
|
321 |
+
}
|
322 |
+
throw Error("Can't make callback from given data");
|
323 |
+
};
|
324 |
+
|
325 |
+
//
|
326 |
+
// Wait for a given time to elapse and then perform the callback
|
327 |
+
//
|
328 |
+
var DELAY = function (time,callback) {
|
329 |
+
callback = USING(callback);
|
330 |
+
callback.timeout = setTimeout(callback,time);
|
331 |
+
return callback;
|
332 |
+
};
|
333 |
+
|
334 |
+
//
|
335 |
+
// Callback used by AFTER, QUEUE, and SIGNAL to check if calls have completed
|
336 |
+
//
|
337 |
+
var WAITFOR = function (callback,signal) {
|
338 |
+
callback = USING(callback);
|
339 |
+
if (!callback.called) {WAITSIGNAL(callback,signal); signal.pending++}
|
340 |
+
};
|
341 |
+
var WAITEXECUTE = function () {
|
342 |
+
var signals = this.signal; delete this.signal;
|
343 |
+
this.execute = this.oldExecute; delete this.oldExecute;
|
344 |
+
var result = this.execute.apply(this,arguments);
|
345 |
+
if (ISCALLBACK(result) && !result.called) {WAITSIGNAL(result,signals)} else {
|
346 |
+
for (var i = 0, m = signals.length; i < m; i++) {
|
347 |
+
signals[i].pending--;
|
348 |
+
if (signals[i].pending <= 0) {signals[i].call()}
|
349 |
+
}
|
350 |
+
}
|
351 |
+
};
|
352 |
+
var WAITSIGNAL = function (callback,signals) {
|
353 |
+
if (!isArray(signals)) {signals = [signals]}
|
354 |
+
if (!callback.signal) {
|
355 |
+
callback.oldExecute = callback.execute;
|
356 |
+
callback.execute = WAITEXECUTE;
|
357 |
+
callback.signal = signals;
|
358 |
+
} else if (signals.length === 1) {callback.signal.push(signals[0])}
|
359 |
+
else {callback.signal = callback.signal.concat(signals)}
|
360 |
+
};
|
361 |
+
|
362 |
+
//
|
363 |
+
// Create a callback that is called when a collection of other callbacks have
|
364 |
+
// all been executed. If the callback gets called immediately (i.e., the
|
365 |
+
// others are all already called), check if it returns another callback
|
366 |
+
// and return that instead.
|
367 |
+
//
|
368 |
+
var AFTER = function (callback) {
|
369 |
+
callback = USING(callback);
|
370 |
+
callback.pending = 0;
|
371 |
+
for (var i = 1, m = arguments.length; i < m; i++)
|
372 |
+
{if (arguments[i]) {WAITFOR(arguments[i],callback)}}
|
373 |
+
if (callback.pending === 0) {
|
374 |
+
var result = callback();
|
375 |
+
if (ISCALLBACK(result)) {callback = result}
|
376 |
+
}
|
377 |
+
return callback;
|
378 |
+
};
|
379 |
+
|
380 |
+
//
|
381 |
+
// An array of prioritized hooks that are executed sequentially
|
382 |
+
// with a given set of data.
|
383 |
+
//
|
384 |
+
var HOOKS = MathJax.Object.Subclass({
|
385 |
+
//
|
386 |
+
// Initialize the array and the auto-reset status
|
387 |
+
//
|
388 |
+
Init: function (reset) {
|
389 |
+
this.hooks = [];
|
390 |
+
this.remove = []; // used when hooks are removed during execution of list
|
391 |
+
this.reset = reset;
|
392 |
+
this.running = false;
|
393 |
+
},
|
394 |
+
//
|
395 |
+
// Add a callback to the list, in priority order (default priority is 10)
|
396 |
+
//
|
397 |
+
Add: function (hook,priority) {
|
398 |
+
if (priority == null) {priority = 10}
|
399 |
+
if (!ISCALLBACK(hook)) {hook = USING(hook)}
|
400 |
+
hook.priority = priority;
|
401 |
+
var i = this.hooks.length;
|
402 |
+
while (i > 0 && priority < this.hooks[i-1].priority) {i--}
|
403 |
+
this.hooks.splice(i,0,hook);
|
404 |
+
return hook;
|
405 |
+
},
|
406 |
+
Remove: function (hook) {
|
407 |
+
for (var i = 0, m = this.hooks.length; i < m; i++) {
|
408 |
+
if (this.hooks[i] === hook) {
|
409 |
+
if (this.running) {this.remove.push(i)}
|
410 |
+
else {this.hooks.splice(i,1)}
|
411 |
+
return;
|
412 |
+
}
|
413 |
+
}
|
414 |
+
},
|
415 |
+
//
|
416 |
+
// Execute the list of callbacks, resetting them if requested.
|
417 |
+
// If any return callbacks, return a callback that will be
|
418 |
+
// executed when they all have completed.
|
419 |
+
// Remove any hooks that requested being removed during processing.
|
420 |
+
//
|
421 |
+
Execute: function () {
|
422 |
+
var callbacks = [{}];
|
423 |
+
this.running = true;
|
424 |
+
for (var i = 0, m = this.hooks.length; i < m; i++) {
|
425 |
+
if (this.reset) {this.hooks[i].reset()}
|
426 |
+
var result = this.hooks[i].apply(window,arguments);
|
427 |
+
if (ISCALLBACK(result) && !result.called) {callbacks.push(result)}
|
428 |
+
}
|
429 |
+
this.running = false;
|
430 |
+
if (this.remove.length) {this.RemovePending()}
|
431 |
+
if (callbacks.length === 1) {return null}
|
432 |
+
if (callbacks.length === 2) {return callbacks[1]}
|
433 |
+
return AFTER.apply({},callbacks);
|
434 |
+
},
|
435 |
+
//
|
436 |
+
// Remove hooks that asked to be removed during execution of list
|
437 |
+
//
|
438 |
+
RemovePending: function () {
|
439 |
+
this.remove = this.remove.sort();
|
440 |
+
for (var i = this.remove.length-1; i >= 0; i--) {this.hooks.splice(i,1)}
|
441 |
+
this.remove = [];
|
442 |
+
}
|
443 |
+
|
444 |
+
});
|
445 |
+
|
446 |
+
//
|
447 |
+
// Run an array of callbacks passing them the given data.
|
448 |
+
// (Legacy function, since this has been replaced by the HOOKS object).
|
449 |
+
//
|
450 |
+
var EXECUTEHOOKS = function (hooks,data,reset) {
|
451 |
+
if (!hooks) {return null}
|
452 |
+
if (!isArray(hooks)) {hooks = [hooks]}
|
453 |
+
if (!isArray(data)) {data = (data == null ? [] : [data])}
|
454 |
+
var handler = HOOKS(reset);
|
455 |
+
for (var i = 0, m = hooks.length; i < m; i++) {handler.Add(hooks[i])}
|
456 |
+
return handler.Execute.apply(handler,data);
|
457 |
+
};
|
458 |
+
|
459 |
+
//
|
460 |
+
// Command queue that performs commands in order, waiting when
|
461 |
+
// necessary for commands to complete asynchronousely
|
462 |
+
//
|
463 |
+
var QUEUE = BASE.Object.Subclass({
|
464 |
+
//
|
465 |
+
// Create the queue and push any commands that are specified
|
466 |
+
//
|
467 |
+
Init: function () {
|
468 |
+
this.pending = this.running = 0;
|
469 |
+
this.queue = [];
|
470 |
+
this.Push.apply(this,arguments);
|
471 |
+
},
|
472 |
+
//
|
473 |
+
// Add commands to the queue and run them. Adding a callback object
|
474 |
+
// (rather than a callback specification) queues a wait for that callback.
|
475 |
+
// Return the final callback for synchronization purposes.
|
476 |
+
//
|
477 |
+
Push: function () {
|
478 |
+
var callback;
|
479 |
+
for (var i = 0, m = arguments.length; i < m; i++) {
|
480 |
+
callback = USING(arguments[i]);
|
481 |
+
if (callback === arguments[i] && !callback.called)
|
482 |
+
{callback = USING(["wait",this,callback])}
|
483 |
+
this.queue.push(callback);
|
484 |
+
}
|
485 |
+
if (!this.running && !this.pending) {this.Process()}
|
486 |
+
return callback;
|
487 |
+
},
|
488 |
+
//
|
489 |
+
// Process the command queue if we aren't waiting on another command
|
490 |
+
//
|
491 |
+
Process: function (queue) {
|
492 |
+
while (!this.running && !this.pending && this.queue.length) {
|
493 |
+
var callback = this.queue[0];
|
494 |
+
queue = this.queue.slice(1); this.queue = [];
|
495 |
+
this.Suspend(); var result = callback(); this.Resume();
|
496 |
+
if (queue.length) {this.queue = queue.concat(this.queue)}
|
497 |
+
if (ISCALLBACK(result) && !result.called) {WAITFOR(result,this)}
|
498 |
+
}
|
499 |
+
},
|
500 |
+
//
|
501 |
+
// Suspend/Resume command processing on this queue
|
502 |
+
//
|
503 |
+
Suspend: function () {this.running++},
|
504 |
+
Resume: function () {if (this.running) {this.running--}},
|
505 |
+
//
|
506 |
+
// Used by WAITFOR to restart the queue when an action completes
|
507 |
+
//
|
508 |
+
call: function () {this.Process.apply(this,arguments)},
|
509 |
+
wait: function (callback) {return callback}
|
510 |
+
});
|
511 |
+
|
512 |
+
//
|
513 |
+
// Create a named signal that listeners can attach to, to be signaled by
|
514 |
+
// postings made to the signal. Posts are queued if they occur while one
|
515 |
+
// is already in process.
|
516 |
+
//
|
517 |
+
var SIGNAL = QUEUE.Subclass({
|
518 |
+
Init: function (name) {
|
519 |
+
QUEUE.prototype.Init.call(this);
|
520 |
+
this.name = name;
|
521 |
+
this.posted = []; // the messages posted so far
|
522 |
+
this.listeners = HOOKS(true); // those with interest in this signal
|
523 |
+
this.posting = false;
|
524 |
+
this.callback = null;
|
525 |
+
},
|
526 |
+
//
|
527 |
+
// Post a message to the signal listeners, with callback for when complete
|
528 |
+
//
|
529 |
+
Post: function (message,callback,forget) {
|
530 |
+
callback = USING(callback);
|
531 |
+
if (this.posting || this.pending) {
|
532 |
+
this.Push(["Post",this,message,callback,forget]);
|
533 |
+
} else {
|
534 |
+
this.callback = callback; callback.reset();
|
535 |
+
if (!forget) {this.posted.push(message)}
|
536 |
+
this.Suspend(); this.posting = true;
|
537 |
+
var result = this.listeners.Execute(message);
|
538 |
+
if (ISCALLBACK(result) && !result.called) {WAITFOR(result,this)}
|
539 |
+
this.Resume(); this.posting = false;
|
540 |
+
if (!this.pending) {this.call()}
|
541 |
+
}
|
542 |
+
return callback;
|
543 |
+
},
|
544 |
+
//
|
545 |
+
// Clear the post history (so new listeners won't get old messages)
|
546 |
+
//
|
547 |
+
Clear: function (callback) {
|
548 |
+
callback = USING(callback);
|
549 |
+
if (this.posting || this.pending) {
|
550 |
+
callback = this.Push(["Clear",this,callback]);
|
551 |
+
} else {
|
552 |
+
this.posted = [];
|
553 |
+
callback();
|
554 |
+
}
|
555 |
+
return callback;
|
556 |
+
},
|
557 |
+
//
|
558 |
+
// Call the callback (all replies are in) and process the command queue
|
559 |
+
//
|
560 |
+
call: function () {this.callback(this); this.Process()},
|
561 |
+
|
562 |
+
//
|
563 |
+
// A listener calls this to register interest in the signal (so it will be called
|
564 |
+
// when posts occur). If ignorePast is true, it will not be sent the post history.
|
565 |
+
//
|
566 |
+
Interest: function (callback,ignorePast,priority) {
|
567 |
+
callback = USING(callback);
|
568 |
+
this.listeners.Add(callback,priority);
|
569 |
+
if (!ignorePast) {
|
570 |
+
for (var i = 0, m = this.posted.length; i < m; i++) {
|
571 |
+
callback.reset();
|
572 |
+
var result = callback(this.posted[i]);
|
573 |
+
if (ISCALLBACK(result) && i === this.posted.length-1) {WAITFOR(result,this)}
|
574 |
+
}
|
575 |
+
}
|
576 |
+
return callback;
|
577 |
+
},
|
578 |
+
//
|
579 |
+
// A listener calls this to remove itself from a signal
|
580 |
+
//
|
581 |
+
NoInterest: function (callback) {
|
582 |
+
this.listeners.Remove(callback);
|
583 |
+
},
|
584 |
+
|
585 |
+
//
|
586 |
+
// Hook a callback to a particular message on this signal
|
587 |
+
//
|
588 |
+
MessageHook: function (msg,callback,priority) {
|
589 |
+
callback = USING(callback);
|
590 |
+
if (!this.hooks) {this.hooks = {}; this.Interest(["ExecuteHooks",this])}
|
591 |
+
if (!this.hooks[msg]) {this.hooks[msg] = HOOKS(true)}
|
592 |
+
this.hooks[msg].Add(callback,priority);
|
593 |
+
for (var i = 0, m = this.posted.length; i < m; i++)
|
594 |
+
{if (this.posted[i] == msg) {callback.reset(); callback(this.posted[i])}}
|
595 |
+
callback.msg = msg; // keep track so we can remove it
|
596 |
+
return callback;
|
597 |
+
},
|
598 |
+
//
|
599 |
+
// Execute the message hooks for the given message
|
600 |
+
//
|
601 |
+
ExecuteHooks: function (msg) {
|
602 |
+
var type = (isArray(msg) ? msg[0] : msg);
|
603 |
+
if (!this.hooks[type]) {return null}
|
604 |
+
return this.hooks[type].Execute(msg);
|
605 |
+
},
|
606 |
+
//
|
607 |
+
// Remove a hook safely
|
608 |
+
//
|
609 |
+
RemoveHook: function (hook) {
|
610 |
+
this.hooks[hook.msg].Remove(hook);
|
611 |
+
}
|
612 |
+
|
613 |
+
},{
|
614 |
+
signals: {}, // the named signals
|
615 |
+
find: function (name) {
|
616 |
+
if (!SIGNAL.signals[name]) {SIGNAL.signals[name] = new SIGNAL(name)}
|
617 |
+
return SIGNAL.signals[name];
|
618 |
+
}
|
619 |
+
});
|
620 |
+
|
621 |
+
//
|
622 |
+
// The main entry-points
|
623 |
+
//
|
624 |
+
BASE.Callback = BASE.CallBack = USING;
|
625 |
+
BASE.Callback.Delay = DELAY;
|
626 |
+
BASE.Callback.After = AFTER;
|
627 |
+
BASE.Callback.Queue = QUEUE;
|
628 |
+
BASE.Callback.Signal = SIGNAL.find;
|
629 |
+
BASE.Callback.Hooks = HOOKS;
|
630 |
+
BASE.Callback.ExecuteHooks = EXECUTEHOOKS;
|
631 |
+
})("MathJax");
|
632 |
+
|
633 |
+
|
634 |
+
/**********************************************************/
|
635 |
+
|
636 |
+
(function (BASENAME) {
|
637 |
+
var BASE = window[BASENAME];
|
638 |
+
if (!BASE) {BASE = window[BASENAME] = {}}
|
639 |
+
|
640 |
+
var isSafari2 = (navigator.vendor === "Apple Computer, Inc." &&
|
641 |
+
typeof navigator.vendorSub === "undefined");
|
642 |
+
var sheets = 0; // used by Safari2
|
643 |
+
|
644 |
+
//
|
645 |
+
// Update sheets count and look up the head object
|
646 |
+
//
|
647 |
+
var HEAD = function (head) {
|
648 |
+
if (document.styleSheets && document.styleSheets.length > sheets)
|
649 |
+
{sheets = document.styleSheets.length}
|
650 |
+
if (!head) {
|
651 |
+
head = document.head || ((document.getElementsByTagName("head"))[0]);
|
652 |
+
if (!head) {head = document.body}
|
653 |
+
}
|
654 |
+
return head;
|
655 |
+
};
|
656 |
+
|
657 |
+
//
|
658 |
+
// Remove scripts that are completed so they don't clutter up the HEAD.
|
659 |
+
// This runs via setTimeout since IE7 can't remove the script while it is running.
|
660 |
+
//
|
661 |
+
var SCRIPTS = []; // stores scripts to be removed after a delay
|
662 |
+
var REMOVESCRIPTS = function () {
|
663 |
+
for (var i = 0, m = SCRIPTS.length; i < m; i++) {BASE.Ajax.head.removeChild(SCRIPTS[i])}
|
664 |
+
SCRIPTS = [];
|
665 |
+
};
|
666 |
+
|
667 |
+
var PATH = {};
|
668 |
+
PATH[BASENAME] = ""; // empty path gets the root URL
|
669 |
+
PATH.a11y = '[MathJax]/extensions/a11y'; // a11y extensions
|
670 |
+
PATH.Contrib = "https://cdn.mathjax.org/mathjax/contrib"; // the third-party extensions
|
671 |
+
|
672 |
+
BASE.Ajax = {
|
673 |
+
loaded: {}, // files already loaded
|
674 |
+
loading: {}, // files currently in process of loading
|
675 |
+
loadHooks: {}, // hooks to call when files are loaded
|
676 |
+
timeout: 15*1000, // timeout for loading of files (15 seconds)
|
677 |
+
styleDelay: 1, // delay to use before styles are available
|
678 |
+
config: {
|
679 |
+
root: "", // URL of root directory to load from
|
680 |
+
path: PATH // paths to named URL's (e.g., [MathJax]/...)
|
681 |
+
},
|
682 |
+
params: {}, // filled in from MathJax.js?...
|
683 |
+
|
684 |
+
STATUS: {
|
685 |
+
OK: 1, // file is loading or did load OK
|
686 |
+
ERROR: -1 // file timed out during load
|
687 |
+
},
|
688 |
+
|
689 |
+
//
|
690 |
+
// Return a complete URL to a file (replacing any root names)
|
691 |
+
//
|
692 |
+
fileURL: function (file) {
|
693 |
+
var match;
|
694 |
+
while ((match = file.match(/^\[([-._a-z0-9]+)\]/i)) && PATH.hasOwnProperty(match[1])) {
|
695 |
+
file = (PATH[match[1]]||this.config.root) + file.substr(match[1].length+2);
|
696 |
+
}
|
697 |
+
return file;
|
698 |
+
},
|
699 |
+
//
|
700 |
+
// Replace root names if URL includes one
|
701 |
+
//
|
702 |
+
fileName: function (url) {
|
703 |
+
var root = this.config.root;
|
704 |
+
if (url.substr(0,root.length) === root) {url = "["+BASENAME+"]"+url.substr(root.length)}
|
705 |
+
do {
|
706 |
+
var recheck = false;
|
707 |
+
for (var id in PATH) {if (PATH.hasOwnProperty(id) && PATH[id]) {
|
708 |
+
if (url.substr(0,PATH[id].length) === PATH[id]) {
|
709 |
+
url = "["+id+"]"+url.substr(PATH[id].length);
|
710 |
+
recheck = true;
|
711 |
+
break;
|
712 |
+
}
|
713 |
+
}}
|
714 |
+
} while (recheck);
|
715 |
+
return url;
|
716 |
+
},
|
717 |
+
//
|
718 |
+
// Cache-breaking revision number for file
|
719 |
+
//
|
720 |
+
fileRev: function (file) {
|
721 |
+
var V = BASE.cdnFileVersions[file] || BASE.cdnVersion || '';
|
722 |
+
if (V) {V = "?V="+V}
|
723 |
+
return V;
|
724 |
+
},
|
725 |
+
urlRev: function (file) {return this.fileURL(file)+this.fileRev(file)},
|
726 |
+
|
727 |
+
//
|
728 |
+
// Load a file if it hasn't been already.
|
729 |
+
// Make sure the file URL is "safe"?
|
730 |
+
//
|
731 |
+
Require: function (file,callback) {
|
732 |
+
callback = BASE.Callback(callback); var type;
|
733 |
+
if (file instanceof Object) {
|
734 |
+
for (var i in file)
|
735 |
+
{if (file.hasOwnProperty(i)) {type = i.toUpperCase(); file = file[i]}}
|
736 |
+
} else {type = file.split(/\./).pop().toUpperCase()}
|
737 |
+
if (this.params.noContrib && file.substr(0,9) === "[Contrib]") {
|
738 |
+
callback(this.STATUS.ERROR);
|
739 |
+
} else {
|
740 |
+
file = this.fileURL(file);
|
741 |
+
// FIXME: check that URL is OK
|
742 |
+
if (this.loaded[file]) {
|
743 |
+
callback(this.loaded[file]);
|
744 |
+
} else {
|
745 |
+
var FILE = {}; FILE[type] = file;
|
746 |
+
this.Load(FILE,callback);
|
747 |
+
}
|
748 |
+
}
|
749 |
+
return callback;
|
750 |
+
},
|
751 |
+
|
752 |
+
//
|
753 |
+
// Load a file regardless of where it is and whether it has
|
754 |
+
// already been loaded.
|
755 |
+
//
|
756 |
+
Load: function (file,callback) {
|
757 |
+
callback = BASE.Callback(callback); var type;
|
758 |
+
if (file instanceof Object) {
|
759 |
+
for (var i in file)
|
760 |
+
{if (file.hasOwnProperty(i)) {type = i.toUpperCase(); file = file[i]}}
|
761 |
+
} else {type = file.split(/\./).pop().toUpperCase()}
|
762 |
+
file = this.fileURL(file);
|
763 |
+
if (this.loading[file]) {
|
764 |
+
this.addHook(file,callback);
|
765 |
+
} else {
|
766 |
+
this.head = HEAD(this.head);
|
767 |
+
if (this.loader[type]) {this.loader[type].call(this,file,callback)}
|
768 |
+
else {throw Error("Can't load files of type "+type)}
|
769 |
+
}
|
770 |
+
return callback;
|
771 |
+
},
|
772 |
+
|
773 |
+
//
|
774 |
+
// Register a load hook for a particular file (it will be called when
|
775 |
+
// loadComplete() is called for that file)
|
776 |
+
//
|
777 |
+
LoadHook: function (file,callback,priority) {
|
778 |
+
callback = BASE.Callback(callback);
|
779 |
+
if (file instanceof Object)
|
780 |
+
{for (var i in file) {if (file.hasOwnProperty(i)) {file = file[i]}}}
|
781 |
+
file = this.fileURL(file);
|
782 |
+
if (this.loaded[file]) {callback(this.loaded[file])}
|
783 |
+
else {this.addHook(file,callback,priority)}
|
784 |
+
return callback;
|
785 |
+
},
|
786 |
+
addHook: function (file,callback,priority) {
|
787 |
+
if (!this.loadHooks[file]) {this.loadHooks[file] = MathJax.Callback.Hooks()}
|
788 |
+
this.loadHooks[file].Add(callback,priority);
|
789 |
+
callback.file = file;
|
790 |
+
},
|
791 |
+
removeHook: function (hook) {
|
792 |
+
if (this.loadHooks[hook.file]) {
|
793 |
+
this.loadHooks[hook.file].Remove(hook);
|
794 |
+
if (!this.loadHooks[hook.file].hooks.length) {delete this.loadHooks[hook.file]}
|
795 |
+
}
|
796 |
+
},
|
797 |
+
|
798 |
+
//
|
799 |
+
// Used when files are combined in a preloading configuration file
|
800 |
+
//
|
801 |
+
Preloading: function () {
|
802 |
+
for (var i = 0, m = arguments.length; i < m; i++) {
|
803 |
+
var file = this.fileURL(arguments[i]);
|
804 |
+
if (!this.loading[file]) {this.loading[file] = {preloaded: true}}
|
805 |
+
}
|
806 |
+
},
|
807 |
+
|
808 |
+
//
|
809 |
+
// Code used to load the various types of files
|
810 |
+
// (JS for JavaScript, CSS for style sheets)
|
811 |
+
//
|
812 |
+
loader: {
|
813 |
+
//
|
814 |
+
// Create a SCRIPT tag to load the file
|
815 |
+
//
|
816 |
+
JS: function (file,callback) {
|
817 |
+
var name = this.fileName(file);
|
818 |
+
var script = document.createElement("script");
|
819 |
+
var timeout = BASE.Callback(["loadTimeout",this,file]);
|
820 |
+
this.loading[file] = {
|
821 |
+
callback: callback,
|
822 |
+
timeout: setTimeout(timeout,this.timeout),
|
823 |
+
status: this.STATUS.OK,
|
824 |
+
script: script
|
825 |
+
};
|
826 |
+
//
|
827 |
+
// Add this to the structure above after it is created to prevent recursion
|
828 |
+
// when loading the initial localization file (before loading message is available)
|
829 |
+
//
|
830 |
+
this.loading[file].message = BASE.Message.File(name);
|
831 |
+
script.onerror = timeout; // doesn't work in IE and no apparent substitute
|
832 |
+
script.type = "text/javascript";
|
833 |
+
script.src = file+this.fileRev(name);
|
834 |
+
this.head.appendChild(script);
|
835 |
+
},
|
836 |
+
//
|
837 |
+
// Create a LINK tag to load the style sheet
|
838 |
+
//
|
839 |
+
CSS: function (file,callback) {
|
840 |
+
var name = this.fileName(file);
|
841 |
+
var link = document.createElement("link");
|
842 |
+
link.rel = "stylesheet"; link.type = "text/css";
|
843 |
+
link.href = file+this.fileRev(name);
|
844 |
+
this.loading[file] = {
|
845 |
+
callback: callback,
|
846 |
+
message: BASE.Message.File(name),
|
847 |
+
status: this.STATUS.OK
|
848 |
+
};
|
849 |
+
this.head.appendChild(link);
|
850 |
+
this.timer.create.call(this,[this.timer.file,file],link);
|
851 |
+
}
|
852 |
+
},
|
853 |
+
|
854 |
+
//
|
855 |
+
// Timing code for checking when style sheets are available.
|
856 |
+
//
|
857 |
+
timer: {
|
858 |
+
//
|
859 |
+
// Create the timing callback and start the timing loop.
|
860 |
+
// We use a delay because some browsers need it to allow the styles
|
861 |
+
// to be processed.
|
862 |
+
//
|
863 |
+
create: function (callback,node) {
|
864 |
+
callback = BASE.Callback(callback);
|
865 |
+
if (node.nodeName === "STYLE" && node.styleSheet &&
|
866 |
+
typeof(node.styleSheet.cssText) !== 'undefined') {
|
867 |
+
callback(this.STATUS.OK); // MSIE processes style immediately, but doesn't set its styleSheet!
|
868 |
+
} else if (window.chrome && node.nodeName === "LINK") {
|
869 |
+
callback(this.STATUS.OK); // Chrome doesn't give access to cssRules for stylesheet in
|
870 |
+
// a link node, so we can't detect when it is loaded.
|
871 |
+
} else if (isSafari2) {
|
872 |
+
this.timer.start(this,[this.timer.checkSafari2,sheets++,callback],this.styleDelay);
|
873 |
+
} else {
|
874 |
+
this.timer.start(this,[this.timer.checkLength,node,callback],this.styleDelay);
|
875 |
+
}
|
876 |
+
return callback;
|
877 |
+
},
|
878 |
+
//
|
879 |
+
// Start the timer for the given callback checker
|
880 |
+
//
|
881 |
+
start: function (AJAX,check,delay,timeout) {
|
882 |
+
check = BASE.Callback(check);
|
883 |
+
check.execute = this.execute; check.time = this.time;
|
884 |
+
check.STATUS = AJAX.STATUS; check.timeout = timeout || AJAX.timeout;
|
885 |
+
check.delay = check.total = delay || 0;
|
886 |
+
if (delay) {setTimeout(check,delay)} else {check()}
|
887 |
+
},
|
888 |
+
//
|
889 |
+
// Increment the time total, increase the delay
|
890 |
+
// and test if we are past the timeout time.
|
891 |
+
//
|
892 |
+
time: function (callback) {
|
893 |
+
this.total += this.delay;
|
894 |
+
this.delay = Math.floor(this.delay * 1.05 + 5);
|
895 |
+
if (this.total >= this.timeout) {callback(this.STATUS.ERROR); return 1}
|
896 |
+
return 0;
|
897 |
+
},
|
898 |
+
//
|
899 |
+
// For JS file loads, call the proper routine according to status
|
900 |
+
//
|
901 |
+
file: function (file,status) {
|
902 |
+
if (status < 0) {BASE.Ajax.loadTimeout(file)} else {BASE.Ajax.loadComplete(file)}
|
903 |
+
},
|
904 |
+
//
|
905 |
+
// Call the hook with the required data
|
906 |
+
//
|
907 |
+
execute: function () {this.hook.call(this.object,this,this.data[0],this.data[1])},
|
908 |
+
//
|
909 |
+
// Safari2 doesn't set the link's stylesheet, so we need to look in the
|
910 |
+
// document.styleSheets array for the new sheet when it is created
|
911 |
+
//
|
912 |
+
checkSafari2: function (check,length,callback) {
|
913 |
+
if (check.time(callback)) return;
|
914 |
+
if (document.styleSheets.length > length &&
|
915 |
+
document.styleSheets[length].cssRules &&
|
916 |
+
document.styleSheets[length].cssRules.length)
|
917 |
+
{callback(check.STATUS.OK)} else {setTimeout(check,check.delay)}
|
918 |
+
},
|
919 |
+
//
|
920 |
+
// Look for the stylesheets rules and check when they are defined
|
921 |
+
// and no longer of length zero. (This assumes there actually ARE
|
922 |
+
// some rules in the stylesheet.)
|
923 |
+
//
|
924 |
+
checkLength: function (check,node,callback) {
|
925 |
+
if (check.time(callback)) return;
|
926 |
+
var isStyle = 0; var sheet = (node.sheet || node.styleSheet);
|
927 |
+
try {if ((sheet.cssRules||sheet.rules||[]).length > 0) {isStyle = 1}} catch(err) {
|
928 |
+
if (err.message.match(/protected variable|restricted URI/)) {isStyle = 1}
|
929 |
+
else if (err.message.match(/Security error/)) {
|
930 |
+
// Firefox3 gives "Security error" for missing files, so
|
931 |
+
// can't distinguish that from OK files on remote servers.
|
932 |
+
// or OK files in different directory from local files.
|
933 |
+
isStyle = 1; // just say it is OK (can't really tell)
|
934 |
+
}
|
935 |
+
}
|
936 |
+
if (isStyle) {
|
937 |
+
// Opera 9.6 requires this setTimeout
|
938 |
+
setTimeout(BASE.Callback([callback,check.STATUS.OK]),0);
|
939 |
+
} else {
|
940 |
+
setTimeout(check,check.delay);
|
941 |
+
}
|
942 |
+
}
|
943 |
+
},
|
944 |
+
|
945 |
+
//
|
946 |
+
// JavaScript code must call this when they are completely initialized
|
947 |
+
// (this allows them to perform asynchronous actions before indicating
|
948 |
+
// that they are complete).
|
949 |
+
//
|
950 |
+
loadComplete: function (file) {
|
951 |
+
file = this.fileURL(file);
|
952 |
+
var loading = this.loading[file];
|
953 |
+
if (loading && !loading.preloaded) {
|
954 |
+
BASE.Message.Clear(loading.message);
|
955 |
+
clearTimeout(loading.timeout);
|
956 |
+
if (loading.script) {
|
957 |
+
if (SCRIPTS.length === 0) {setTimeout(REMOVESCRIPTS,0)}
|
958 |
+
SCRIPTS.push(loading.script);
|
959 |
+
}
|
960 |
+
this.loaded[file] = loading.status; delete this.loading[file];
|
961 |
+
this.addHook(file,loading.callback);
|
962 |
+
} else {
|
963 |
+
if (loading) {delete this.loading[file]}
|
964 |
+
this.loaded[file] = this.STATUS.OK;
|
965 |
+
loading = {status: this.STATUS.OK}
|
966 |
+
}
|
967 |
+
if (!this.loadHooks[file]) {return null}
|
968 |
+
return this.loadHooks[file].Execute(loading.status);
|
969 |
+
},
|
970 |
+
|
971 |
+
//
|
972 |
+
// If a file fails to load within the timeout period (or the onerror handler
|
973 |
+
// is called), this routine runs to signal the error condition.
|
974 |
+
//
|
975 |
+
loadTimeout: function (file) {
|
976 |
+
if (this.loading[file].timeout) {clearTimeout(this.loading[file].timeout)}
|
977 |
+
this.loading[file].status = this.STATUS.ERROR;
|
978 |
+
this.loadError(file);
|
979 |
+
this.loadComplete(file);
|
980 |
+
},
|
981 |
+
|
982 |
+
//
|
983 |
+
// The default error hook for file load failures
|
984 |
+
//
|
985 |
+
loadError: function (file) {
|
986 |
+
BASE.Message.Set(["LoadFailed","File failed to load: %1",file],null,2000);
|
987 |
+
BASE.Hub.signal.Post(["file load error",file]);
|
988 |
+
},
|
989 |
+
|
990 |
+
//
|
991 |
+
// Defines a style sheet from a hash of style declarations (key:value pairs
|
992 |
+
// where the key is the style selector and the value is a hash of CSS attributes
|
993 |
+
// and values).
|
994 |
+
//
|
995 |
+
Styles: function (styles,callback) {
|
996 |
+
var styleString = this.StyleString(styles);
|
997 |
+
if (styleString === "") {
|
998 |
+
callback = BASE.Callback(callback);
|
999 |
+
callback();
|
1000 |
+
} else {
|
1001 |
+
var style = document.createElement("style"); style.type = "text/css";
|
1002 |
+
this.head = HEAD(this.head);
|
1003 |
+
this.head.appendChild(style);
|
1004 |
+
if (style.styleSheet && typeof(style.styleSheet.cssText) !== 'undefined') {
|
1005 |
+
style.styleSheet.cssText = styleString;
|
1006 |
+
} else {
|
1007 |
+
style.appendChild(document.createTextNode(styleString));
|
1008 |
+
}
|
1009 |
+
callback = this.timer.create.call(this,callback,style);
|
1010 |
+
}
|
1011 |
+
return callback;
|
1012 |
+
},
|
1013 |
+
|
1014 |
+
//
|
1015 |
+
// Create a stylesheet string from a style declaration object
|
1016 |
+
//
|
1017 |
+
StyleString: function (styles) {
|
1018 |
+
if (typeof(styles) === 'string') {return styles}
|
1019 |
+
var string = "", id, style;
|
1020 |
+
for (id in styles) {if (styles.hasOwnProperty(id)) {
|
1021 |
+
if (typeof styles[id] === 'string') {
|
1022 |
+
string += id + " {"+styles[id]+"}\n";
|
1023 |
+
} else if (BASE.Object.isArray(styles[id])) {
|
1024 |
+
for (var i = 0; i < styles[id].length; i++) {
|
1025 |
+
style = {}; style[id] = styles[id][i];
|
1026 |
+
string += this.StyleString(style);
|
1027 |
+
}
|
1028 |
+
} else if (id.substr(0,6) === '@media') {
|
1029 |
+
string += id + " {"+this.StyleString(styles[id])+"}\n";
|
1030 |
+
} else if (styles[id] != null) {
|
1031 |
+
style = [];
|
1032 |
+
for (var name in styles[id]) {if (styles[id].hasOwnProperty(name)) {
|
1033 |
+
if (styles[id][name] != null)
|
1034 |
+
{style[style.length] = name + ': ' + styles[id][name]}
|
1035 |
+
}}
|
1036 |
+
string += id +" {"+style.join('; ')+"}\n";
|
1037 |
+
}
|
1038 |
+
}}
|
1039 |
+
return string;
|
1040 |
+
}
|
1041 |
+
};
|
1042 |
+
|
1043 |
+
})("MathJax");
|
1044 |
+
|
1045 |
+
/**********************************************************/
|
1046 |
+
|
1047 |
+
MathJax.HTML = {
|
1048 |
+
//
|
1049 |
+
// Create an HTML element with given attributes and content.
|
1050 |
+
// The def parameter is an (optional) object containing key:value pairs
|
1051 |
+
// of the attributes and their values, and contents is an (optional)
|
1052 |
+
// array of strings to be inserted as text, or arrays of the form
|
1053 |
+
// [type,def,contents] that describes an HTML element to be inserted
|
1054 |
+
// into the current element. Thus the contents can describe a complete
|
1055 |
+
// HTML snippet of arbitrary complexity. E.g.:
|
1056 |
+
//
|
1057 |
+
// MathJax.HTML.Element("span",{id:"mySpan",style{"font-style":"italic"}},[
|
1058 |
+
// "(See the ",["a",{href:"http://www.mathjax.org"},["MathJax home page"]],
|
1059 |
+
// " for more details.)"]);
|
1060 |
+
//
|
1061 |
+
Element: function (type,def,contents) {
|
1062 |
+
var obj = document.createElement(type), id;
|
1063 |
+
if (def) {
|
1064 |
+
if (def.hasOwnProperty("style")) {
|
1065 |
+
var style = def.style; def.style = {};
|
1066 |
+
for (id in style) {if (style.hasOwnProperty(id))
|
1067 |
+
{def.style[id.replace(/-([a-z])/g,this.ucMatch)] = style[id]}}
|
1068 |
+
}
|
1069 |
+
MathJax.Hub.Insert(obj,def);
|
1070 |
+
for (id in def) {
|
1071 |
+
if (id === "role" || id.substr(0,5) === "aria-") obj.setAttribute(id,def[id]);
|
1072 |
+
}
|
1073 |
+
}
|
1074 |
+
if (contents) {
|
1075 |
+
if (!MathJax.Object.isArray(contents)) {contents = [contents]}
|
1076 |
+
for (var i = 0, m = contents.length; i < m; i++) {
|
1077 |
+
if (MathJax.Object.isArray(contents[i])) {
|
1078 |
+
obj.appendChild(this.Element(contents[i][0],contents[i][1],contents[i][2]));
|
1079 |
+
} else if (type === "script") { // IE throws an error if script is added as a text node
|
1080 |
+
this.setScript(obj, contents[i]);
|
1081 |
+
} else {
|
1082 |
+
obj.appendChild(document.createTextNode(contents[i]));
|
1083 |
+
}
|
1084 |
+
}
|
1085 |
+
}
|
1086 |
+
return obj;
|
1087 |
+
},
|
1088 |
+
ucMatch: function (match,c) {return c.toUpperCase()},
|
1089 |
+
addElement: function (span,type,def,contents) {return span.appendChild(this.Element(type,def,contents))},
|
1090 |
+
TextNode: function (text) {return document.createTextNode(text)},
|
1091 |
+
addText: function (span,text) {return span.appendChild(this.TextNode(text))},
|
1092 |
+
|
1093 |
+
//
|
1094 |
+
// Set and get the text of a script
|
1095 |
+
//
|
1096 |
+
setScript: function (script,text) {
|
1097 |
+
if (this.setScriptBug) {script.text = text} else {
|
1098 |
+
while (script.firstChild) {script.removeChild(script.firstChild)}
|
1099 |
+
this.addText(script,text);
|
1100 |
+
}
|
1101 |
+
},
|
1102 |
+
getScript: function (script) {
|
1103 |
+
var text = (script.text === "" ? script.innerHTML : script.text);
|
1104 |
+
return text.replace(/^\s+/,"").replace(/\s+$/,"");
|
1105 |
+
},
|
1106 |
+
|
1107 |
+
//
|
1108 |
+
// Manage cookies
|
1109 |
+
//
|
1110 |
+
Cookie: {
|
1111 |
+
prefix: "mjx",
|
1112 |
+
expires: 365,
|
1113 |
+
|
1114 |
+
//
|
1115 |
+
// Save an object as a named cookie
|
1116 |
+
//
|
1117 |
+
Set: function (name,def) {
|
1118 |
+
var keys = [];
|
1119 |
+
if (def) {
|
1120 |
+
for (var id in def) {if (def.hasOwnProperty(id)) {
|
1121 |
+
keys.push(id+":"+def[id].toString().replace(/&/g,"&&"));
|
1122 |
+
}}
|
1123 |
+
}
|
1124 |
+
var cookie = this.prefix+"."+name+"="+escape(keys.join('&;'));
|
1125 |
+
if (this.expires) {
|
1126 |
+
var time = new Date(); time.setDate(time.getDate() + this.expires);
|
1127 |
+
cookie += '; expires='+time.toGMTString();
|
1128 |
+
}
|
1129 |
+
try {document.cookie = cookie+"; path=/"} catch (err) {} // ignore errors saving cookies
|
1130 |
+
},
|
1131 |
+
|
1132 |
+
//
|
1133 |
+
// Get the contents of a named cookie and incorporate
|
1134 |
+
// it into the given object (or return a fresh one)
|
1135 |
+
//
|
1136 |
+
Get: function (name,obj) {
|
1137 |
+
if (!obj) {obj = {}}
|
1138 |
+
var pattern = new RegExp("(?:^|;\\s*)"+this.prefix+"\\."+name+"=([^;]*)(?:;|$)");
|
1139 |
+
var match;
|
1140 |
+
try {match = pattern.exec(document.cookie)} catch (err) {}; // ignore errors reading cookies
|
1141 |
+
if (match && match[1] !== "") {
|
1142 |
+
var keys = unescape(match[1]).split('&;');
|
1143 |
+
for (var i = 0, m = keys.length; i < m; i++) {
|
1144 |
+
match = keys[i].match(/([^:]+):(.*)/);
|
1145 |
+
var value = match[2].replace(/&&/g,'&');
|
1146 |
+
if (value === "true") {value = true} else if (value === "false") {value = false}
|
1147 |
+
else if (value.match(/^-?(\d+(\.\d+)?|\.\d+)$/)) {value = parseFloat(value)}
|
1148 |
+
obj[match[1]] = value;
|
1149 |
+
}
|
1150 |
+
}
|
1151 |
+
return obj;
|
1152 |
+
}
|
1153 |
+
}
|
1154 |
+
|
1155 |
+
};
|
1156 |
+
|
1157 |
+
|
1158 |
+
/**********************************************************/
|
1159 |
+
|
1160 |
+
MathJax.Localization = {
|
1161 |
+
|
1162 |
+
locale: "en",
|
1163 |
+
directory: "[MathJax]/localization",
|
1164 |
+
strings: {
|
1165 |
+
// Currently, this list is not modified by the MathJax-i18n script. You can
|
1166 |
+
// run the following command in MathJax/unpacked/localization to update it:
|
1167 |
+
//
|
1168 |
+
// find . -name "*.js" | xargs grep menuTitle\: | grep -v qqq | sed 's/^\.\/\(.*\)\/.*\.js\: / "\1"\: \{/' | sed 's/,$/\},/' | sed 's/"English"/"English", isLoaded: true/' > tmp ; sort tmp > tmp2 ; sed '$ s/,$//' tmp2 ; rm tmp*
|
1169 |
+
//
|
1170 |
+
// This only takes languages with localization data so you must also add
|
1171 |
+
// the languages that use a remap but are not translated at all.
|
1172 |
+
//
|
1173 |
+
"ar": {menuTitle: "\u0627\u0644\u0639\u0631\u0628\u064A\u0629"},
|
1174 |
+
"ast": {menuTitle: "asturianu"},
|
1175 |
+
"bg": {menuTitle: "\u0431\u044A\u043B\u0433\u0430\u0440\u0441\u043A\u0438"},
|
1176 |
+
"bcc": {menuTitle: "\u0628\u0644\u0648\u0686\u06CC"},
|
1177 |
+
"br": {menuTitle: "brezhoneg"},
|
1178 |
+
"ca": {menuTitle: "catal\u00E0"},
|
1179 |
+
"cdo": {menuTitle: "M\u00ECng-d\u0115\u0324ng-ng\u1E73\u0304"},
|
1180 |
+
"cs": {menuTitle: "\u010De\u0161tina"},
|
1181 |
+
"da": {menuTitle: "dansk"},
|
1182 |
+
"de": {menuTitle: "Deutsch"},
|
1183 |
+
"diq": {menuTitle: "Zazaki"},
|
1184 |
+
"en": {menuTitle: "English", isLoaded: true},
|
1185 |
+
"eo": {menuTitle: "Esperanto"},
|
1186 |
+
"es": {menuTitle: "espa\u00F1ol"},
|
1187 |
+
"fa": {menuTitle: "\u0641\u0627\u0631\u0633\u06CC"},
|
1188 |
+
"fi": {menuTitle: "suomi"},
|
1189 |
+
"fr": {menuTitle: "fran\u00E7ais"},
|
1190 |
+
"gl": {menuTitle: "galego"},
|
1191 |
+
"he": {menuTitle: "\u05E2\u05D1\u05E8\u05D9\u05EA"},
|
1192 |
+
"ia": {menuTitle: "interlingua"},
|
1193 |
+
"it": {menuTitle: "italiano"},
|
1194 |
+
"ja": {menuTitle: "\u65E5\u672C\u8A9E"},
|
1195 |
+
"kn": {menuTitle: "\u0C95\u0CA8\u0CCD\u0CA8\u0CA1"},
|
1196 |
+
"ko": {menuTitle: "\uD55C\uAD6D\uC5B4"},
|
1197 |
+
"lb": {menuTitle: "L\u00EBtzebuergesch"},
|
1198 |
+
"lki": {menuTitle: "\u0644\u06D5\u06A9\u06CC"},
|
1199 |
+
"lt": {menuTitle: "lietuvi\u0173"},
|
1200 |
+
"mk": {menuTitle: "\u043C\u0430\u043A\u0435\u0434\u043E\u043D\u0441\u043A\u0438"},
|
1201 |
+
"nl": {menuTitle: "Nederlands"},
|
1202 |
+
"oc": {menuTitle: "occitan"},
|
1203 |
+
"pl": {menuTitle: "polski"},
|
1204 |
+
"pt": {menuTitle: "portugu\u00EAs"},
|
1205 |
+
"pt-br": {menuTitle: "portugu\u00EAs do Brasil"},
|
1206 |
+
"ru": {menuTitle: "\u0440\u0443\u0441\u0441\u043A\u0438\u0439"},
|
1207 |
+
"sco": {menuTitle: "Scots"},
|
1208 |
+
"scn": {menuTitle: "sicilianu"},
|
1209 |
+
"sk": {menuTitle: "sloven\u010Dina"},
|
1210 |
+
"sl": {menuTitle: "sloven\u0161\u010Dina"},
|
1211 |
+
"sv": {menuTitle: "svenska"},
|
1212 |
+
"th": {menuTitle: "\u0E44\u0E17\u0E22"},
|
1213 |
+
"tr": {menuTitle: "T\u00FCrk\u00E7e"},
|
1214 |
+
"uk": {menuTitle: "\u0443\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430"},
|
1215 |
+
"vi": {menuTitle: "Ti\u1EBFng Vi\u1EC7t"},
|
1216 |
+
"zh-hans": {menuTitle: "\u4E2D\u6587\uFF08\u7B80\u4F53\uFF09"},
|
1217 |
+
"zh-hant": {menuTitle: "\u6C49\u8BED"}
|
1218 |
+
},
|
1219 |
+
|
1220 |
+
//
|
1221 |
+
// The pattern for substitution escapes:
|
1222 |
+
// %n or %{n} or %{plural:%n|option1|option1|...} or %c
|
1223 |
+
//
|
1224 |
+
pattern: /%(\d+|\{\d+\}|\{[a-z]+:\%\d+(?:\|(?:%\{\d+\}|%.|[^\}])*)+\}|.)/g,
|
1225 |
+
|
1226 |
+
SPLIT: ("axb".split(/(x)/).length === 3 ?
|
1227 |
+
function (string,regex) {return string.split(regex)} :
|
1228 |
+
//
|
1229 |
+
// IE8 and below don't do split() correctly when the pattern includes
|
1230 |
+
// parentheses (the split should include the matched exrepssions).
|
1231 |
+
// So implement it by hand here.
|
1232 |
+
//
|
1233 |
+
function (string,regex) {
|
1234 |
+
var result = [], match, last = 0;
|
1235 |
+
regex.lastIndex = 0;
|
1236 |
+
while ((match = regex.exec(string))) {
|
1237 |
+
result.push(string.substr(last,match.index-last));
|
1238 |
+
result.push.apply(result,match.slice(1));
|
1239 |
+
last = match.index + match[0].length;
|
1240 |
+
}
|
1241 |
+
result.push(string.substr(last));
|
1242 |
+
return result;
|
1243 |
+
}),
|
1244 |
+
|
1245 |
+
_: function (id,phrase) {
|
1246 |
+
if (MathJax.Object.isArray(phrase)) {return this.processSnippet(id,phrase)}
|
1247 |
+
return this.processString(this.lookupPhrase(id,phrase),[].slice.call(arguments,2));
|
1248 |
+
},
|
1249 |
+
|
1250 |
+
processString: function (string,args,domain) {
|
1251 |
+
//
|
1252 |
+
// Process arguments for substitution
|
1253 |
+
// If the argument is a snippet (and we are processing snippets) do so,
|
1254 |
+
// Otherwise, if it is a number, convert it for the lacale
|
1255 |
+
//
|
1256 |
+
var i, m, isArray = MathJax.Object.isArray;
|
1257 |
+
for (i = 0, m = args.length; i < m; i++) {
|
1258 |
+
if (domain && isArray(args[i])) {args[i] = this.processSnippet(domain,args[i])}
|
1259 |
+
}
|
1260 |
+
//
|
1261 |
+
// Split string at escapes and process them individually
|
1262 |
+
//
|
1263 |
+
var parts = this.SPLIT(string,this.pattern);
|
1264 |
+
for (i = 1, m = parts.length; i < m; i += 2) {
|
1265 |
+
var c = parts[i].charAt(0); // first char will be { or \d or a char to be kept literally
|
1266 |
+
if (c >= "0" && c <= "9") { // %n
|
1267 |
+
parts[i] = args[parts[i]-1];
|
1268 |
+
if (typeof parts[i] === "number") parts[i] = this.number(parts[i]);
|
1269 |
+
} else if (c === "{") { // %{n} or %{plural:%n|...}
|
1270 |
+
c = parts[i].substr(1);
|
1271 |
+
if (c >= "0" && c <= "9") { // %{n}
|
1272 |
+
parts[i] = args[parts[i].substr(1,parts[i].length-2)-1];
|
1273 |
+
if (typeof parts[i] === "number") parts[i] = this.number(parts[i]);
|
1274 |
+
} else { // %{plural:%n|...}
|
1275 |
+
var match = parts[i].match(/^\{([a-z]+):%(\d+)\|(.*)\}$/);
|
1276 |
+
if (match) {
|
1277 |
+
if (match[1] === "plural") {
|
1278 |
+
var n = args[match[2]-1];
|
1279 |
+
if (typeof n === "undefined") {
|
1280 |
+
parts[i] = "???"; // argument doesn't exist
|
1281 |
+
} else {
|
1282 |
+
n = this.plural(n) - 1; // index of the form to use
|
1283 |
+
var plurals = match[3].replace(/(^|[^%])(%%)*%\|/g,"$1$2%\uEFEF").split(/\|/); // the parts (replacing %| with a special character)
|
1284 |
+
if (n >= 0 && n < plurals.length) {
|
1285 |
+
parts[i] = this.processString(plurals[n].replace(/\uEFEF/g,"|"),args,domain);
|
1286 |
+
} else {
|
1287 |
+
parts[i] = "???"; // no string for this index
|
1288 |
+
}
|
1289 |
+
}
|
1290 |
+
} else {parts[i] = "%"+parts[i]} // not "plural", put back the % and leave unchanged
|
1291 |
+
}
|
1292 |
+
}
|
1293 |
+
}
|
1294 |
+
if (parts[i] == null) {parts[i] = "???"}
|
1295 |
+
}
|
1296 |
+
//
|
1297 |
+
// If we are not forming a snippet, return the completed string
|
1298 |
+
//
|
1299 |
+
if (!domain) {return parts.join("")}
|
1300 |
+
//
|
1301 |
+
// We need to return an HTML snippet, so buld it from the
|
1302 |
+
// broken up string with inserted parts (that could be snippets)
|
1303 |
+
//
|
1304 |
+
var snippet = [], part = "";
|
1305 |
+
for (i = 0; i < m; i++) {
|
1306 |
+
part += parts[i]; i++; // add the string and move on to substitution result
|
1307 |
+
if (i < m) {
|
1308 |
+
if (isArray(parts[i])) { // substitution was a snippet
|
1309 |
+
snippet.push(part); // add the accumulated string
|
1310 |
+
snippet = snippet.concat(parts[i]); // concatenate the substution snippet
|
1311 |
+
part = ""; // start accumulating a new string
|
1312 |
+
} else { // substitution was a string
|
1313 |
+
part += parts[i]; // add to accumulating string
|
1314 |
+
}
|
1315 |
+
}
|
1316 |
+
}
|
1317 |
+
if (part !== "") {snippet.push(part)} // add final string
|
1318 |
+
return snippet;
|
1319 |
+
},
|
1320 |
+
|
1321 |
+
processSnippet: function (domain,snippet) {
|
1322 |
+
var result = []; // the new snippet
|
1323 |
+
//
|
1324 |
+
// Look through the original snippet for
|
1325 |
+
// strings or snippets to translate
|
1326 |
+
//
|
1327 |
+
for (var i = 0, m = snippet.length; i < m; i++) {
|
1328 |
+
if (MathJax.Object.isArray(snippet[i])) {
|
1329 |
+
//
|
1330 |
+
// This could be a sub-snippet:
|
1331 |
+
// ["tag"] or ["tag",{properties}] or ["tag",{properties},snippet]
|
1332 |
+
// Or it could be something to translate:
|
1333 |
+
// [id,string,args] or [domain,snippet]
|
1334 |
+
var data = snippet[i];
|
1335 |
+
if (typeof data[1] === "string") { // [id,string,args]
|
1336 |
+
var id = data[0]; if (!MathJax.Object.isArray(id)) {id = [domain,id]}
|
1337 |
+
var phrase = this.lookupPhrase(id,data[1]);
|
1338 |
+
result = result.concat(this.processMarkdown(phrase,data.slice(2),domain));
|
1339 |
+
} else if (MathJax.Object.isArray(data[1])) { // [domain,snippet]
|
1340 |
+
result = result.concat(this.processSnippet.apply(this,data));
|
1341 |
+
} else if (data.length >= 3) { // ["tag",{properties},snippet]
|
1342 |
+
result.push([data[0],data[1],this.processSnippet(domain,data[2])]);
|
1343 |
+
} else { // ["tag"] or ["tag",{properties}]
|
1344 |
+
result.push(snippet[i]);
|
1345 |
+
}
|
1346 |
+
} else { // a string
|
1347 |
+
result.push(snippet[i]);
|
1348 |
+
}
|
1349 |
+
}
|
1350 |
+
return result;
|
1351 |
+
},
|
1352 |
+
|
1353 |
+
markdownPattern: /(%.)|(\*{1,3})((?:%.|.)+?)\2|(`+)((?:%.|.)+?)\4|\[((?:%.|.)+?)\]\(([^\s\)]+)\)/,
|
1354 |
+
// %c or *bold*, **italics**, ***bold-italics***, or `code`, or [link](url)
|
1355 |
+
|
1356 |
+
processMarkdown: function (phrase,args,domain) {
|
1357 |
+
var result = [], data;
|
1358 |
+
//
|
1359 |
+
// Split the string by the Markdown pattern
|
1360 |
+
// (the text blocks are separated by
|
1361 |
+
// c,stars,star-text,backtics,code-text,link-text,URL).
|
1362 |
+
// Start with the first text string from the split.
|
1363 |
+
//
|
1364 |
+
var parts = phrase.split(this.markdownPattern);
|
1365 |
+
var string = parts[0];
|
1366 |
+
//
|
1367 |
+
// Loop through the matches and process them
|
1368 |
+
//
|
1369 |
+
for (var i = 1, m = parts.length; i < m; i += 8) {
|
1370 |
+
if (parts[i+1]) { // stars (for bold/italic)
|
1371 |
+
//
|
1372 |
+
// Select the tag to use by number of stars (three stars requires two tags)
|
1373 |
+
//
|
1374 |
+
data = this.processString(parts[i+2],args,domain);
|
1375 |
+
if (!MathJax.Object.isArray(data)) {data = [data]}
|
1376 |
+
data = [["b","i","i"][parts[i+1].length-1],{},data]; // number of stars determines type
|
1377 |
+
if (parts[i+1].length === 3) {data = ["b",{},data]} // bold-italic
|
1378 |
+
} else if (parts[i+3]) { // backtics (for code)
|
1379 |
+
//
|
1380 |
+
// Remove one leading or trailing space, and process substitutions
|
1381 |
+
// Make a <code> tag
|
1382 |
+
//
|
1383 |
+
data = this.processString(parts[i+4].replace(/^\s/,"").replace(/\s$/,""),args,domain);
|
1384 |
+
if (!MathJax.Object.isArray(data)) {data = [data]}
|
1385 |
+
data = ["code",{},data];
|
1386 |
+
} else if (parts[i+5]) { // hyperlink
|
1387 |
+
//
|
1388 |
+
// Process the link text, and make an <a> tag with the URL
|
1389 |
+
//
|
1390 |
+
data = this.processString(parts[i+5],args,domain);
|
1391 |
+
if (!MathJax.Object.isArray(data)) {data = [data]}
|
1392 |
+
data = ["a",{href:this.processString(parts[i+6],args),target:"_blank"},data];
|
1393 |
+
} else {
|
1394 |
+
//
|
1395 |
+
// Escaped character (%c) gets added into the string.
|
1396 |
+
//
|
1397 |
+
string += parts[i]; data = null;
|
1398 |
+
}
|
1399 |
+
//
|
1400 |
+
// If there is a tag to insert,
|
1401 |
+
// Add any pending string, then push the tag
|
1402 |
+
//
|
1403 |
+
if (data) {
|
1404 |
+
result = this.concatString(result,string,args,domain);
|
1405 |
+
result.push(data); string = "";
|
1406 |
+
}
|
1407 |
+
//
|
1408 |
+
// Process the string that follows matches pattern
|
1409 |
+
//
|
1410 |
+
if (parts[i+7] !== "") {string += parts[i+7]}
|
1411 |
+
};
|
1412 |
+
//
|
1413 |
+
// Add any pending string and return the resulting snippet
|
1414 |
+
//
|
1415 |
+
result = this.concatString(result,string,args,domain);
|
1416 |
+
return result;
|
1417 |
+
},
|
1418 |
+
concatString: function (result,string,args,domain) {
|
1419 |
+
if (string != "") {
|
1420 |
+
//
|
1421 |
+
// Process the substutions.
|
1422 |
+
// If the result is not a snippet, turn it into one.
|
1423 |
+
// Then concatenate the snippet to the current one
|
1424 |
+
//
|
1425 |
+
string = this.processString(string,args,domain);
|
1426 |
+
if (!MathJax.Object.isArray(string)) {string = [string]}
|
1427 |
+
result = result.concat(string);
|
1428 |
+
}
|
1429 |
+
return result;
|
1430 |
+
},
|
1431 |
+
|
1432 |
+
lookupPhrase: function (id,phrase,domain) {
|
1433 |
+
//
|
1434 |
+
// Get the domain and messageID
|
1435 |
+
//
|
1436 |
+
if (!domain) {domain = "_"}
|
1437 |
+
if (MathJax.Object.isArray(id)) {domain = (id[0] || "_"); id = (id[1] || "")}
|
1438 |
+
//
|
1439 |
+
// Check if the data is available and if not,
|
1440 |
+
// load it and throw a restart error so the calling
|
1441 |
+
// code can wait for the load and try again.
|
1442 |
+
//
|
1443 |
+
var load = this.loadDomain(domain);
|
1444 |
+
if (load) {MathJax.Hub.RestartAfter(load)}
|
1445 |
+
//
|
1446 |
+
// Look up the message in the localization data
|
1447 |
+
// (if not found, the original English is used)
|
1448 |
+
//
|
1449 |
+
var localeData = this.strings[this.locale];
|
1450 |
+
if (localeData) {
|
1451 |
+
if (localeData.domains && domain in localeData.domains) {
|
1452 |
+
var domainData = localeData.domains[domain];
|
1453 |
+
if (domainData.strings && id in domainData.strings)
|
1454 |
+
{phrase = domainData.strings[id]}
|
1455 |
+
}
|
1456 |
+
}
|
1457 |
+
//
|
1458 |
+
// return the translated phrase
|
1459 |
+
//
|
1460 |
+
return phrase;
|
1461 |
+
},
|
1462 |
+
|
1463 |
+
//
|
1464 |
+
// Load a langauge data file from the proper
|
1465 |
+
// directory and file.
|
1466 |
+
//
|
1467 |
+
loadFile: function (file,data,callback) {
|
1468 |
+
callback = MathJax.Callback(callback);
|
1469 |
+
file = (data.file || file); // the data's file name or the default name
|
1470 |
+
if (!file.match(/\.js$/)) {file += ".js"} // add .js if needed
|
1471 |
+
//
|
1472 |
+
// Add the directory if the file doesn't
|
1473 |
+
// contain a full URL already.
|
1474 |
+
//
|
1475 |
+
if (!file.match(/^([a-z]+:|\[MathJax\])/)) {
|
1476 |
+
var dir = (this.strings[this.locale].directory ||
|
1477 |
+
this.directory + "/" + this.locale ||
|
1478 |
+
"[MathJax]/localization/" + this.locale);
|
1479 |
+
file = dir + "/" + file;
|
1480 |
+
}
|
1481 |
+
//
|
1482 |
+
// Load the file and mark the data as loaded (even if it
|
1483 |
+
// failed to load, so we don't continue to try to load it
|
1484 |
+
// over and over).
|
1485 |
+
//
|
1486 |
+
var load = MathJax.Ajax.Require(file,function () {data.isLoaded = true; return callback()});
|
1487 |
+
//
|
1488 |
+
// Return the callback if needed, otherwise null.
|
1489 |
+
//
|
1490 |
+
return (load.called ? null : load);
|
1491 |
+
},
|
1492 |
+
|
1493 |
+
//
|
1494 |
+
// Check to see if the localization data are loaded
|
1495 |
+
// for the given domain; if not, load the data file,
|
1496 |
+
// and return a callback for the loading operation.
|
1497 |
+
// Otherwise return null (data are loaded).
|
1498 |
+
//
|
1499 |
+
loadDomain: function (domain,callback) {
|
1500 |
+
var load, localeData = this.strings[this.locale];
|
1501 |
+
if (localeData) {
|
1502 |
+
if (!localeData.isLoaded) {
|
1503 |
+
load = this.loadFile(this.locale,localeData);
|
1504 |
+
if (load) {
|
1505 |
+
return MathJax.Callback.Queue(
|
1506 |
+
load,["loadDomain",this,domain] // call again to load domain
|
1507 |
+
).Push(callback||{});
|
1508 |
+
}
|
1509 |
+
}
|
1510 |
+
if (localeData.domains && domain in localeData.domains) {
|
1511 |
+
var domainData = localeData.domains[domain];
|
1512 |
+
if (!domainData.isLoaded) {
|
1513 |
+
load = this.loadFile(domain,domainData);
|
1514 |
+
if (load) {return MathJax.Callback.Queue(load).Push(callback)}
|
1515 |
+
}
|
1516 |
+
}
|
1517 |
+
}
|
1518 |
+
// localization data are loaded, so just do the callback
|
1519 |
+
return MathJax.Callback(callback)();
|
1520 |
+
},
|
1521 |
+
|
1522 |
+
//
|
1523 |
+
// Perform a function, properly handling
|
1524 |
+
// restarts due to localization file loads.
|
1525 |
+
//
|
1526 |
+
// Note that this may return before the function
|
1527 |
+
// has been called successfully, so you should
|
1528 |
+
// consider fn as running asynchronously. (Callbacks
|
1529 |
+
// can be used to synchronize it with other actions.)
|
1530 |
+
//
|
1531 |
+
Try: function (fn) {
|
1532 |
+
fn = MathJax.Callback(fn); fn.autoReset = true;
|
1533 |
+
try {fn()} catch (err) {
|
1534 |
+
if (!err.restart) {throw err}
|
1535 |
+
MathJax.Callback.After(["Try",this,fn],err.restart);
|
1536 |
+
}
|
1537 |
+
},
|
1538 |
+
|
1539 |
+
//
|
1540 |
+
// Reset the current language
|
1541 |
+
//
|
1542 |
+
resetLocale: function(locale) {
|
1543 |
+
// Selection algorithm:
|
1544 |
+
// 1) Downcase locale name (e.g. "en-US" => "en-us")
|
1545 |
+
// 2) Try a parent language (e.g. "en-us" => "en")
|
1546 |
+
// 3) Try the fallback specified in the data (e.g. "pt" => "pt-br")
|
1547 |
+
// 4) Otherwise don't change the locale.
|
1548 |
+
if (!locale) return;
|
1549 |
+
locale = locale.toLowerCase();
|
1550 |
+
while (!this.strings[locale]) {
|
1551 |
+
var dashPos = locale.lastIndexOf("-");
|
1552 |
+
if (dashPos === -1) return;
|
1553 |
+
locale = locale.substring(0, dashPos);
|
1554 |
+
}
|
1555 |
+
var remap = this.strings[locale].remap;
|
1556 |
+
this.locale = remap ? remap : locale;
|
1557 |
+
MathJax.Callback.Signal("Hub").Post(["Locale Reset", this.locale]);
|
1558 |
+
},
|
1559 |
+
|
1560 |
+
//
|
1561 |
+
// Set the current language
|
1562 |
+
//
|
1563 |
+
setLocale: function(locale) {
|
1564 |
+
this.resetLocale(locale);
|
1565 |
+
if (MathJax.Menu) {this.loadDomain("MathMenu")}
|
1566 |
+
},
|
1567 |
+
|
1568 |
+
//
|
1569 |
+
// Add or update a language or domain
|
1570 |
+
//
|
1571 |
+
addTranslation: function (locale,domain,definition) {
|
1572 |
+
var data = this.strings[locale], isNew = false;
|
1573 |
+
if (!data) {data = this.strings[locale] = {}; isNew = true}
|
1574 |
+
if (!data.domains) {data.domains = {}}
|
1575 |
+
if (domain) {
|
1576 |
+
if (!data.domains[domain]) {data.domains[domain] = {}}
|
1577 |
+
data = data.domains[domain];
|
1578 |
+
}
|
1579 |
+
MathJax.Hub.Insert(data,definition);
|
1580 |
+
if (isNew && MathJax.Menu.menu) {MathJax.Menu.CreateLocaleMenu()}
|
1581 |
+
},
|
1582 |
+
|
1583 |
+
//
|
1584 |
+
// Set CSS for an element based on font requirements
|
1585 |
+
//
|
1586 |
+
setCSS: function (div) {
|
1587 |
+
var locale = this.strings[this.locale];
|
1588 |
+
if (locale) {
|
1589 |
+
if (locale.fontFamily) {div.style.fontFamily = locale.fontFamily}
|
1590 |
+
if (locale.fontDirection) {
|
1591 |
+
div.style.direction = locale.fontDirection;
|
1592 |
+
if (locale.fontDirection === "rtl") {div.style.textAlign = "right"}
|
1593 |
+
}
|
1594 |
+
}
|
1595 |
+
return div;
|
1596 |
+
},
|
1597 |
+
|
1598 |
+
//
|
1599 |
+
// Get the language's font family or direction
|
1600 |
+
//
|
1601 |
+
fontFamily: function () {
|
1602 |
+
var locale = this.strings[this.locale];
|
1603 |
+
return (locale ? locale.fontFamily : null);
|
1604 |
+
},
|
1605 |
+
fontDirection: function () {
|
1606 |
+
var locale = this.strings[this.locale];
|
1607 |
+
return (locale ? locale.fontDirection : null);
|
1608 |
+
},
|
1609 |
+
|
1610 |
+
//
|
1611 |
+
// Get the language's plural index for a number
|
1612 |
+
//
|
1613 |
+
plural: function (n) {
|
1614 |
+
var locale = this.strings[this.locale];
|
1615 |
+
if (locale && locale.plural) {return locale.plural(n)}
|
1616 |
+
// default
|
1617 |
+
if (n == 1) {return 1} // one
|
1618 |
+
return 2; // other
|
1619 |
+
},
|
1620 |
+
|
1621 |
+
//
|
1622 |
+
// Convert a number to language-specific form
|
1623 |
+
//
|
1624 |
+
number: function(n) {
|
1625 |
+
var locale = this.strings[this.locale];
|
1626 |
+
if (locale && locale.number) {return locale.number(n)}
|
1627 |
+
// default
|
1628 |
+
return n;
|
1629 |
+
}
|
1630 |
+
};
|
1631 |
+
|
1632 |
+
|
1633 |
+
/**********************************************************/
|
1634 |
+
|
1635 |
+
MathJax.Message = {
|
1636 |
+
ready: false, // used to tell when the styles are available
|
1637 |
+
log: [{}], current: null,
|
1638 |
+
textNodeBug: (navigator.vendor === "Apple Computer, Inc." &&
|
1639 |
+
typeof navigator.vendorSub === "undefined") ||
|
1640 |
+
(window.hasOwnProperty && window.hasOwnProperty("konqueror")), // Konqueror displays some gibberish with text.nodeValue = "..."
|
1641 |
+
|
1642 |
+
styles: {
|
1643 |
+
"#MathJax_Message": {
|
1644 |
+
position: "fixed", left: "1px", bottom: "2px",
|
1645 |
+
'background-color': "#E6E6E6", border: "1px solid #959595",
|
1646 |
+
margin: "0px", padding: "2px 8px",
|
1647 |
+
'z-index': "102", color: "black", 'font-size': "80%",
|
1648 |
+
width: "auto", 'white-space': "nowrap"
|
1649 |
+
},
|
1650 |
+
|
1651 |
+
"#MathJax_MSIE_Frame": {
|
1652 |
+
position: "absolute",
|
1653 |
+
top:0, left: 0, width: "0px", 'z-index': 101,
|
1654 |
+
border: "0px", margin: "0px", padding: "0px"
|
1655 |
+
}
|
1656 |
+
},
|
1657 |
+
|
1658 |
+
browsers: {
|
1659 |
+
MSIE: function (browser) {
|
1660 |
+
MathJax.Message.msieFixedPositionBug = ((document.documentMode||0) < 7);
|
1661 |
+
if (MathJax.Message.msieFixedPositionBug)
|
1662 |
+
{MathJax.Hub.config.styles["#MathJax_Message"].position = "absolute"}
|
1663 |
+
MathJax.Message.quirks = (document.compatMode === "BackCompat");
|
1664 |
+
},
|
1665 |
+
Chrome: function (browser) {
|
1666 |
+
MathJax.Hub.config.styles["#MathJax_Message"].bottom = "1.5em";
|
1667 |
+
MathJax.Hub.config.styles["#MathJax_Message"].left = "1em";
|
1668 |
+
}
|
1669 |
+
},
|
1670 |
+
|
1671 |
+
Init: function (styles) {
|
1672 |
+
if (styles) {this.ready = true}
|
1673 |
+
if (!document.body || !this.ready) {return false}
|
1674 |
+
//
|
1675 |
+
// ASCIIMathML replaces the entire page with a copy of itself (@#!#%@!!)
|
1676 |
+
// so check that this.div is still part of the page, otherwise look up
|
1677 |
+
// the copy and use that.
|
1678 |
+
//
|
1679 |
+
if (this.div && this.div.parentNode == null) {
|
1680 |
+
this.div = document.getElementById("MathJax_Message");
|
1681 |
+
this.text = (this.div ? this.div.firstChild : null);
|
1682 |
+
}
|
1683 |
+
if (!this.div) {
|
1684 |
+
var frame = document.body;
|
1685 |
+
if (this.msieFixedPositionBug && window.attachEvent) {
|
1686 |
+
frame = this.frame = this.addDiv(document.body); frame.removeAttribute("id");
|
1687 |
+
frame.style.position = "absolute";
|
1688 |
+
frame.style.border = frame.style.margin = frame.style.padding = "0px";
|
1689 |
+
frame.style.zIndex = "101"; frame.style.height = "0px";
|
1690 |
+
frame = this.addDiv(frame);
|
1691 |
+
frame.id = "MathJax_MSIE_Frame";
|
1692 |
+
window.attachEvent("onscroll",this.MoveFrame);
|
1693 |
+
window.attachEvent("onresize",this.MoveFrame);
|
1694 |
+
this.MoveFrame();
|
1695 |
+
}
|
1696 |
+
this.div = this.addDiv(frame); this.div.style.display = "none";
|
1697 |
+
}
|
1698 |
+
if (!this.text) {
|
1699 |
+
this.text = this.div.appendChild(document.createTextNode(""));
|
1700 |
+
}
|
1701 |
+
return true;
|
1702 |
+
},
|
1703 |
+
|
1704 |
+
addDiv: function (parent) {
|
1705 |
+
var div = document.createElement("div");
|
1706 |
+
div.id = "MathJax_Message";
|
1707 |
+
if (parent.firstChild) {parent.insertBefore(div,parent.firstChild)}
|
1708 |
+
else {parent.appendChild(div)}
|
1709 |
+
return div;
|
1710 |
+
},
|
1711 |
+
|
1712 |
+
MoveFrame: function () {
|
1713 |
+
var body = (MathJax.Message.quirks ? document.body : document.documentElement);
|
1714 |
+
var frame = MathJax.Message.frame;
|
1715 |
+
frame.style.left = body.scrollLeft + 'px';
|
1716 |
+
frame.style.top = body.scrollTop + 'px';
|
1717 |
+
frame.style.width = body.clientWidth + 'px';
|
1718 |
+
frame = frame.firstChild;
|
1719 |
+
frame.style.height = body.clientHeight + 'px';
|
1720 |
+
},
|
1721 |
+
|
1722 |
+
localize: function (message) {
|
1723 |
+
return MathJax.Localization._(message,message);
|
1724 |
+
},
|
1725 |
+
|
1726 |
+
filterText: function (text,n,id) {
|
1727 |
+
if (MathJax.Hub.config.messageStyle === "simple") {
|
1728 |
+
if (id === "LoadFile") {
|
1729 |
+
if (!this.loading) {this.loading = this.localize("Loading") + " "}
|
1730 |
+
text = this.loading; this.loading += ".";
|
1731 |
+
} else if (id === "ProcessMath") {
|
1732 |
+
if (!this.processing) {this.processing = this.localize("Processing") + " "}
|
1733 |
+
text = this.processing; this.processing += ".";
|
1734 |
+
} else if (id === "TypesetMath") {
|
1735 |
+
if (!this.typesetting) {this.typesetting = this.localize("Typesetting") + " "}
|
1736 |
+
text = this.typesetting; this.typesetting += ".";
|
1737 |
+
}
|
1738 |
+
}
|
1739 |
+
return text;
|
1740 |
+
},
|
1741 |
+
|
1742 |
+
clearCounts: function () {
|
1743 |
+
delete this.loading;
|
1744 |
+
delete this.processing;
|
1745 |
+
delete this.typesetting;
|
1746 |
+
},
|
1747 |
+
|
1748 |
+
Set: function (text,n,clearDelay) {
|
1749 |
+
if (n == null) {n = this.log.length; this.log[n] = {}}
|
1750 |
+
//
|
1751 |
+
// Translate message if it is [id,message,arguments]
|
1752 |
+
//
|
1753 |
+
var id = "";
|
1754 |
+
if (MathJax.Object.isArray(text)) {
|
1755 |
+
id = text[0]; if (MathJax.Object.isArray(id)) {id = id[1]}
|
1756 |
+
//
|
1757 |
+
// Localization._() will throw a restart error if a localization file
|
1758 |
+
// needs to be loaded, so trap that and redo the Set() call
|
1759 |
+
// after it is loaded.
|
1760 |
+
//
|
1761 |
+
try {
|
1762 |
+
text = MathJax.Localization._.apply(MathJax.Localization,text);
|
1763 |
+
} catch (err) {
|
1764 |
+
if (!err.restart) {throw err}
|
1765 |
+
if (!err.restart.called) {
|
1766 |
+
//
|
1767 |
+
// Mark it so we can tell if the Clear() comes before the message is displayed
|
1768 |
+
//
|
1769 |
+
if (this.log[n].restarted == null) {this.log[n].restarted = 0}
|
1770 |
+
this.log[n].restarted++; delete this.log[n].cleared;
|
1771 |
+
MathJax.Callback.After(["Set",this,text,n,clearDelay],err.restart);
|
1772 |
+
return n;
|
1773 |
+
}
|
1774 |
+
}
|
1775 |
+
}
|
1776 |
+
//
|
1777 |
+
// Clear the timout timer.
|
1778 |
+
//
|
1779 |
+
if (this.timer) {clearTimeout(this.timer); delete this.timer}
|
1780 |
+
//
|
1781 |
+
// Save the message and filtered message.
|
1782 |
+
//
|
1783 |
+
this.log[n].text = text; this.log[n].filteredText = text = this.filterText(text,n,id);
|
1784 |
+
//
|
1785 |
+
// Hook the message into the message list so we can tell
|
1786 |
+
// what message to put up when this one is removed.
|
1787 |
+
//
|
1788 |
+
if (typeof(this.log[n].next) === "undefined") {
|
1789 |
+
this.log[n].next = this.current;
|
1790 |
+
if (this.current != null) {this.log[this.current].prev = n}
|
1791 |
+
this.current = n;
|
1792 |
+
}
|
1793 |
+
//
|
1794 |
+
// Show the message if it is the currently active one.
|
1795 |
+
//
|
1796 |
+
if (this.current === n && MathJax.Hub.config.messageStyle !== "none") {
|
1797 |
+
if (this.Init()) {
|
1798 |
+
if (this.textNodeBug) {this.div.innerHTML = text} else {this.text.nodeValue = text}
|
1799 |
+
this.div.style.display = "";
|
1800 |
+
if (this.status) {window.status = ""; delete this.status}
|
1801 |
+
} else {
|
1802 |
+
window.status = text;
|
1803 |
+
this.status = true;
|
1804 |
+
}
|
1805 |
+
}
|
1806 |
+
//
|
1807 |
+
// Check if the message was resetarted to load a localization file
|
1808 |
+
// and if it has been cleared in the meanwhile.
|
1809 |
+
//
|
1810 |
+
if (this.log[n].restarted) {
|
1811 |
+
if (this.log[n].cleared) {clearDelay = 0}
|
1812 |
+
if (--this.log[n].restarted === 0) {delete this.log[n].cleared}
|
1813 |
+
}
|
1814 |
+
//
|
1815 |
+
// Check if we need to clear the message automatically.
|
1816 |
+
//
|
1817 |
+
if (clearDelay) {setTimeout(MathJax.Callback(["Clear",this,n]),clearDelay)}
|
1818 |
+
else if (clearDelay == 0) {this.Clear(n,0)}
|
1819 |
+
//
|
1820 |
+
// Return the message number.
|
1821 |
+
//
|
1822 |
+
return n;
|
1823 |
+
},
|
1824 |
+
|
1825 |
+
Clear: function (n,delay) {
|
1826 |
+
//
|
1827 |
+
// Detatch the message from the active list.
|
1828 |
+
//
|
1829 |
+
if (this.log[n].prev != null) {this.log[this.log[n].prev].next = this.log[n].next}
|
1830 |
+
if (this.log[n].next != null) {this.log[this.log[n].next].prev = this.log[n].prev}
|
1831 |
+
//
|
1832 |
+
// If it is the current message, get the next one to show.
|
1833 |
+
//
|
1834 |
+
if (this.current === n) {
|
1835 |
+
this.current = this.log[n].next;
|
1836 |
+
if (this.text) {
|
1837 |
+
if (this.div.parentNode == null) {this.Init()} // see ASCIIMathML comments above
|
1838 |
+
if (this.current == null) {
|
1839 |
+
//
|
1840 |
+
// If there are no more messages, remove the message box.
|
1841 |
+
//
|
1842 |
+
if (this.timer) {clearTimeout(this.timer); delete this.timer}
|
1843 |
+
if (delay == null) {delay = 600}
|
1844 |
+
if (delay === 0) {this.Remove()}
|
1845 |
+
else {this.timer = setTimeout(MathJax.Callback(["Remove",this]),delay)}
|
1846 |
+
} else if (MathJax.Hub.config.messageStyle !== "none") {
|
1847 |
+
//
|
1848 |
+
// If there is an old message, put it in place
|
1849 |
+
//
|
1850 |
+
if (this.textNodeBug) {this.div.innerHTML = this.log[this.current].filteredText}
|
1851 |
+
else {this.text.nodeValue = this.log[this.current].filteredText}
|
1852 |
+
}
|
1853 |
+
if (this.status) {window.status = ""; delete this.status}
|
1854 |
+
} else if (this.status) {
|
1855 |
+
window.status = (this.current == null ? "" : this.log[this.current].text);
|
1856 |
+
}
|
1857 |
+
}
|
1858 |
+
//
|
1859 |
+
// Clean up the log data no longer needed
|
1860 |
+
//
|
1861 |
+
delete this.log[n].next; delete this.log[n].prev;
|
1862 |
+
delete this.log[n].filteredText;
|
1863 |
+
//
|
1864 |
+
// If this is a restarted localization message, mark that it has been cleared
|
1865 |
+
// while waiting for the file to load.
|
1866 |
+
//
|
1867 |
+
if (this.log[n].restarted) {this.log[n].cleared = true}
|
1868 |
+
},
|
1869 |
+
|
1870 |
+
Remove: function () {
|
1871 |
+
// FIXME: do a fade out or something else interesting?
|
1872 |
+
this.text.nodeValue = "";
|
1873 |
+
this.div.style.display = "none";
|
1874 |
+
},
|
1875 |
+
|
1876 |
+
File: function (file) {
|
1877 |
+
return this.Set(["LoadFile","Loading %1",file],null,null);
|
1878 |
+
},
|
1879 |
+
|
1880 |
+
Log: function () {
|
1881 |
+
var strings = [];
|
1882 |
+
for (var i = 1, m = this.log.length; i < m; i++) {strings[i] = this.log[i].text}
|
1883 |
+
return strings.join("\n");
|
1884 |
+
}
|
1885 |
+
|
1886 |
+
};
|
1887 |
+
|
1888 |
+
/**********************************************************/
|
1889 |
+
|
1890 |
+
MathJax.Hub = {
|
1891 |
+
config: {
|
1892 |
+
root: "",
|
1893 |
+
config: [], // list of configuration files to load
|
1894 |
+
styleSheets: [], // list of CSS files to load
|
1895 |
+
styles: { // styles to generate in-line
|
1896 |
+
".MathJax_Preview": {color: "#888"}
|
1897 |
+
},
|
1898 |
+
jax: [], // list of input and output jax to load
|
1899 |
+
extensions: [], // list of extensions to load
|
1900 |
+
preJax: null, // pattern to remove from before math script tag
|
1901 |
+
postJax: null, // pattern to remove from after math script tag
|
1902 |
+
displayAlign: 'center', // how to align displayed equations (left, center, right)
|
1903 |
+
displayIndent: '0', // indentation for displayed equations (when not centered)
|
1904 |
+
preRemoveClass: 'MathJax_Preview', // class of objects to remove preceding math script
|
1905 |
+
showProcessingMessages: true, // display "Processing math: nn%" messages or not
|
1906 |
+
messageStyle: "normal", // set to "none" or "simple" (for "Loading..." and "Processing...")
|
1907 |
+
delayStartupUntil: "none", // set to "onload" to delay setup until the onload handler runs
|
1908 |
+
// set to "configured" to delay startup until MathJax.Hub.Configured() is called
|
1909 |
+
// set to a Callback to wait for before continuing with the startup
|
1910 |
+
skipStartupTypeset: false, // set to true to skip PreProcess and Process during startup
|
1911 |
+
elements: [], // array of elements to process when none is given explicitly
|
1912 |
+
positionToHash: true, // after initial typeset pass, position to #hash location?
|
1913 |
+
|
1914 |
+
showMathMenu: true, // attach math context menu to typeset math?
|
1915 |
+
showMathMenuMSIE: true, // separtely determine if MSIE should have math menu
|
1916 |
+
// (since the code for that is a bit delicate)
|
1917 |
+
|
1918 |
+
menuSettings: {
|
1919 |
+
zoom: "None", // when to do MathZoom
|
1920 |
+
CTRL: false, // require CTRL for MathZoom?
|
1921 |
+
ALT: false, // require Alt or Option?
|
1922 |
+
CMD: false, // require CMD?
|
1923 |
+
Shift: false, // require Shift?
|
1924 |
+
discoverable: false, // make math menu discoverable on hover?
|
1925 |
+
zscale: "200%", // the scaling factor for MathZoom
|
1926 |
+
renderer: null, // set when Jax are loaded
|
1927 |
+
font: "Auto", // what font HTML-CSS should use
|
1928 |
+
context: "MathJax", // or "Browser" for pass-through to browser menu
|
1929 |
+
locale: null, // the language to use for messages
|
1930 |
+
mpContext: false, // true means pass menu events to MathPlayer in IE
|
1931 |
+
mpMouse: false, // true means pass mouse events to MathPlayer in IE
|
1932 |
+
texHints: true, // include class names for TeXAtom elements
|
1933 |
+
FastPreview: null, // use PreviewHTML output as preview?
|
1934 |
+
assistiveMML: null, // include hidden MathML for screen readers?
|
1935 |
+
inTabOrder: true, // set to false if math elements should be included in the tabindex
|
1936 |
+
semantics: false // add semantics tag with original form in MathML output
|
1937 |
+
},
|
1938 |
+
|
1939 |
+
errorSettings: {
|
1940 |
+
// localized HTML snippet structure for message to use
|
1941 |
+
message: ["[",["MathProcessingError","Math Processing Error"],"]"],
|
1942 |
+
style: {color: "#CC0000", "font-style":"italic"} // style for message
|
1943 |
+
},
|
1944 |
+
|
1945 |
+
ignoreMMLattributes: {} // attributes not to copy to HTML-CSS or SVG output
|
1946 |
+
// from MathML input (in addition to the ones in MML.nocopyAttributes).
|
1947 |
+
// An id set to true will be ignored, one set to false will
|
1948 |
+
// be allowed (even if other criteria normally would prevent
|
1949 |
+
// it from being copied); use false carefully!
|
1950 |
+
},
|
1951 |
+
|
1952 |
+
preProcessors: MathJax.Callback.Hooks(true), // list of callbacks for preprocessing (initialized by extensions)
|
1953 |
+
inputJax: {}, // mime-type mapped to input jax (by registration)
|
1954 |
+
outputJax: {order:{}}, // mime-type mapped to output jax list (by registration)
|
1955 |
+
|
1956 |
+
processSectionDelay: 50, // pause between input and output phases of processing
|
1957 |
+
processUpdateTime: 250, // time between screen updates when processing math (milliseconds)
|
1958 |
+
processUpdateDelay: 10, // pause between screen updates to allow other processing (milliseconds)
|
1959 |
+
|
1960 |
+
signal: MathJax.Callback.Signal("Hub"), // Signal used for Hub events
|
1961 |
+
|
1962 |
+
Config: function (def) {
|
1963 |
+
this.Insert(this.config,def);
|
1964 |
+
if (this.config.Augment) {this.Augment(this.config.Augment)}
|
1965 |
+
},
|
1966 |
+
CombineConfig: function (name,def) {
|
1967 |
+
var config = this.config, id, parent; name = name.split(/\./);
|
1968 |
+
for (var i = 0, m = name.length; i < m; i++) {
|
1969 |
+
id = name[i]; if (!config[id]) {config[id] = {}}
|
1970 |
+
parent = config; config = config[id];
|
1971 |
+
}
|
1972 |
+
parent[id] = config = this.Insert(def,config);
|
1973 |
+
return config;
|
1974 |
+
},
|
1975 |
+
|
1976 |
+
Register: {
|
1977 |
+
PreProcessor: function () {return MathJax.Hub.preProcessors.Add.apply(MathJax.Hub.preProcessors,arguments)},
|
1978 |
+
MessageHook: function () {return MathJax.Hub.signal.MessageHook.apply(MathJax.Hub.signal,arguments)},
|
1979 |
+
StartupHook: function () {return MathJax.Hub.Startup.signal.MessageHook.apply(MathJax.Hub.Startup.signal,arguments)},
|
1980 |
+
LoadHook: function () {return MathJax.Ajax.LoadHook.apply(MathJax.Ajax,arguments)}
|
1981 |
+
},
|
1982 |
+
UnRegister: {
|
1983 |
+
PreProcessor: function (hook) {MathJax.Hub.preProcessors.Remove(hook)},
|
1984 |
+
MessageHook: function (hook) {MathJax.Hub.signal.RemoveHook(hook)},
|
1985 |
+
StartupHook: function (hook) {MathJax.Hub.Startup.signal.RemoveHook(hook)},
|
1986 |
+
LoadHook: function (hook) {MathJax.Ajax.removeHook(hook)}
|
1987 |
+
},
|
1988 |
+
|
1989 |
+
getAllJax: function (element) {
|
1990 |
+
var jax = [], scripts = this.elementScripts(element);
|
1991 |
+
for (var i = 0, m = scripts.length; i < m; i++) {
|
1992 |
+
if (scripts[i].MathJax && scripts[i].MathJax.elementJax)
|
1993 |
+
{jax.push(scripts[i].MathJax.elementJax)}
|
1994 |
+
}
|
1995 |
+
return jax;
|
1996 |
+
},
|
1997 |
+
|
1998 |
+
getJaxByType: function (type,element) {
|
1999 |
+
var jax = [], scripts = this.elementScripts(element);
|
2000 |
+
for (var i = 0, m = scripts.length; i < m; i++) {
|
2001 |
+
if (scripts[i].MathJax && scripts[i].MathJax.elementJax &&
|
2002 |
+
scripts[i].MathJax.elementJax.mimeType === type)
|
2003 |
+
{jax.push(scripts[i].MathJax.elementJax)}
|
2004 |
+
}
|
2005 |
+
return jax;
|
2006 |
+
},
|
2007 |
+
|
2008 |
+
getJaxByInputType: function (type,element) {
|
2009 |
+
var jax = [], scripts = this.elementScripts(element);
|
2010 |
+
for (var i = 0, m = scripts.length; i < m; i++) {
|
2011 |
+
if (scripts[i].MathJax && scripts[i].MathJax.elementJax &&
|
2012 |
+
scripts[i].type && scripts[i].type.replace(/ *;(.|\s)*/,"") === type)
|
2013 |
+
{jax.push(scripts[i].MathJax.elementJax)}
|
2014 |
+
}
|
2015 |
+
return jax;
|
2016 |
+
},
|
2017 |
+
|
2018 |
+
getJaxFor: function (element) {
|
2019 |
+
if (typeof(element) === 'string') {element = document.getElementById(element)}
|
2020 |
+
if (element && element.MathJax) {return element.MathJax.elementJax}
|
2021 |
+
if (this.isMathJaxNode(element)) {
|
2022 |
+
if (!element.isMathJax) {element = element.firstChild} // for NativeMML output
|
2023 |
+
while (element && !element.jaxID) {element = element.parentNode}
|
2024 |
+
if (element) {return MathJax.OutputJax[element.jaxID].getJaxFromMath(element)}
|
2025 |
+
}
|
2026 |
+
return null;
|
2027 |
+
},
|
2028 |
+
|
2029 |
+
isJax: function (element) {
|
2030 |
+
if (typeof(element) === 'string') {element = document.getElementById(element)}
|
2031 |
+
if (this.isMathJaxNode(element)) {return 1}
|
2032 |
+
if (element && (element.tagName||"").toLowerCase() === 'script') {
|
2033 |
+
if (element.MathJax)
|
2034 |
+
{return (element.MathJax.state === MathJax.ElementJax.STATE.PROCESSED ? 1 : -1)}
|
2035 |
+
if (element.type && this.inputJax[element.type.replace(/ *;(.|\s)*/,"")]) {return -1}
|
2036 |
+
}
|
2037 |
+
return 0;
|
2038 |
+
},
|
2039 |
+
isMathJaxNode: function (element) {
|
2040 |
+
return !!element && (element.isMathJax || (element.className||"") === "MathJax_MathML");
|
2041 |
+
},
|
2042 |
+
|
2043 |
+
setRenderer: function (renderer,type) {
|
2044 |
+
if (!renderer) return;
|
2045 |
+
var JAX = MathJax.OutputJax[renderer];
|
2046 |
+
if (!JAX) {
|
2047 |
+
MathJax.OutputJax[renderer] = MathJax.OutputJax({id: "unknown", version:"1.0.0", isUnknown: true});
|
2048 |
+
this.config.menuSettings.renderer = "";
|
2049 |
+
var file = "[MathJax]/jax/output/"+renderer+"/config.js";
|
2050 |
+
return MathJax.Ajax.Require(file,["setRenderer",this,renderer,type]);
|
2051 |
+
} else {
|
2052 |
+
this.config.menuSettings.renderer = renderer;
|
2053 |
+
if (type == null) {type = "jax/mml"}
|
2054 |
+
if (JAX.isUnknown) JAX.Register(type);
|
2055 |
+
var jax = this.outputJax;
|
2056 |
+
if (jax[type] && jax[type].length) {
|
2057 |
+
if (renderer !== jax[type][0].id) {
|
2058 |
+
jax[type].unshift(JAX);
|
2059 |
+
return this.signal.Post(["Renderer Selected",renderer]);
|
2060 |
+
}
|
2061 |
+
}
|
2062 |
+
return null;
|
2063 |
+
}
|
2064 |
+
},
|
2065 |
+
|
2066 |
+
Queue: function () {
|
2067 |
+
return this.queue.Push.apply(this.queue,arguments);
|
2068 |
+
},
|
2069 |
+
|
2070 |
+
Typeset: function (element,callback) {
|
2071 |
+
if (!MathJax.isReady) return null;
|
2072 |
+
var ec = this.elementCallback(element,callback);
|
2073 |
+
if (ec.count) {
|
2074 |
+
var queue = MathJax.Callback.Queue(
|
2075 |
+
["PreProcess",this,ec.elements],
|
2076 |
+
["Process",this,ec.elements]
|
2077 |
+
);
|
2078 |
+
}
|
2079 |
+
return queue.Push(ec.callback);
|
2080 |
+
},
|
2081 |
+
|
2082 |
+
PreProcess: function (element,callback) {
|
2083 |
+
var ec = this.elementCallback(element,callback);
|
2084 |
+
var queue = MathJax.Callback.Queue();
|
2085 |
+
if (ec.count) {
|
2086 |
+
var elements = (ec.count === 1 ? [ec.elements] : ec.elements);
|
2087 |
+
queue.Push(["Post",this.signal,["Begin PreProcess",ec.elements]]);
|
2088 |
+
for (var i = 0, m = elements.length; i < m; i++) {
|
2089 |
+
if (elements[i]) {queue.Push(["Execute",this.preProcessors,elements[i]])}
|
2090 |
+
}
|
2091 |
+
queue.Push(["Post",this.signal,["End PreProcess",ec.elements]]);
|
2092 |
+
}
|
2093 |
+
return queue.Push(ec.callback);
|
2094 |
+
},
|
2095 |
+
|
2096 |
+
Process: function (element,callback) {return this.takeAction("Process",element,callback)},
|
2097 |
+
Update: function (element,callback) {return this.takeAction("Update",element,callback)},
|
2098 |
+
Reprocess: function (element,callback) {return this.takeAction("Reprocess",element,callback)},
|
2099 |
+
Rerender: function (element,callback) {return this.takeAction("Rerender",element,callback)},
|
2100 |
+
|
2101 |
+
takeAction: function (action,element,callback) {
|
2102 |
+
var ec = this.elementCallback(element,callback);
|
2103 |
+
var elements = ec.elements;
|
2104 |
+
var queue = MathJax.Callback.Queue(["Clear",this.signal]);
|
2105 |
+
var state = {
|
2106 |
+
scripts: [], // filled in by prepareScripts
|
2107 |
+
start: new Date().getTime(), // timer for processing messages
|
2108 |
+
i: 0, j: 0, // current script, current jax
|
2109 |
+
jax: {}, // scripts grouped by output jax
|
2110 |
+
jaxIDs: [] // id's of jax used
|
2111 |
+
};
|
2112 |
+
if (ec.count) {
|
2113 |
+
var delay = ["Delay",MathJax.Callback,this.processSectionDelay];
|
2114 |
+
if (!delay[2]) {delay = {}}
|
2115 |
+
queue.Push(
|
2116 |
+
["clearCounts",MathJax.Message],
|
2117 |
+
["Post",this.signal,["Begin "+action,elements]],
|
2118 |
+
["Post",this.signal,["Begin Math",elements,action]],
|
2119 |
+
["prepareScripts",this,action,elements,state],
|
2120 |
+
["Post",this.signal,["Begin Math Input",elements,action]],
|
2121 |
+
["processInput",this,state],
|
2122 |
+
["Post",this.signal,["End Math Input",elements,action]],
|
2123 |
+
delay,
|
2124 |
+
["prepareOutput",this,state,"preProcess"],
|
2125 |
+
delay,
|
2126 |
+
["Post",this.signal,["Begin Math Output",elements,action]],
|
2127 |
+
["processOutput",this,state],
|
2128 |
+
["Post",this.signal,["End Math Output",elements,action]],
|
2129 |
+
delay,
|
2130 |
+
["prepareOutput",this,state,"postProcess"],
|
2131 |
+
delay,
|
2132 |
+
["Post",this.signal,["End Math",elements,action]],
|
2133 |
+
["Post",this.signal,["End "+action,elements]],
|
2134 |
+
["clearCounts",MathJax.Message]
|
2135 |
+
);
|
2136 |
+
}
|
2137 |
+
return queue.Push(ec.callback);
|
2138 |
+
},
|
2139 |
+
|
2140 |
+
scriptAction: {
|
2141 |
+
Process: function (script) {},
|
2142 |
+
Update: function (script) {
|
2143 |
+
var jax = script.MathJax.elementJax;
|
2144 |
+
if (jax && jax.needsUpdate()) {jax.Remove(true); script.MathJax.state = jax.STATE.UPDATE}
|
2145 |
+
else {script.MathJax.state = jax.STATE.PROCESSED}
|
2146 |
+
},
|
2147 |
+
Reprocess: function (script) {
|
2148 |
+
var jax = script.MathJax.elementJax;
|
2149 |
+
if (jax) {jax.Remove(true); script.MathJax.state = jax.STATE.UPDATE}
|
2150 |
+
},
|
2151 |
+
Rerender: function (script) {
|
2152 |
+
var jax = script.MathJax.elementJax;
|
2153 |
+
if (jax) {jax.Remove(true); script.MathJax.state = jax.STATE.OUTPUT}
|
2154 |
+
}
|
2155 |
+
},
|
2156 |
+
|
2157 |
+
prepareScripts: function (action,element,state) {
|
2158 |
+
if (arguments.callee.disabled) return;
|
2159 |
+
var scripts = this.elementScripts(element);
|
2160 |
+
var STATE = MathJax.ElementJax.STATE;
|
2161 |
+
for (var i = 0, m = scripts.length; i < m; i++) {
|
2162 |
+
var script = scripts[i];
|
2163 |
+
if (script.type && this.inputJax[script.type.replace(/ *;(.|\n)*/,"")]) {
|
2164 |
+
if (script.MathJax) {
|
2165 |
+
if (script.MathJax.elementJax && script.MathJax.elementJax.hover) {
|
2166 |
+
MathJax.Extension.MathEvents.Hover.ClearHover(script.MathJax.elementJax);
|
2167 |
+
}
|
2168 |
+
if (script.MathJax.state !== STATE.PENDING) {this.scriptAction[action](script)}
|
2169 |
+
}
|
2170 |
+
if (!script.MathJax) {script.MathJax = {state: STATE.PENDING}}
|
2171 |
+
if (script.MathJax.error) delete script.MathJax.error;
|
2172 |
+
if (script.MathJax.state !== STATE.PROCESSED) {state.scripts.push(script)}
|
2173 |
+
}
|
2174 |
+
}
|
2175 |
+
},
|
2176 |
+
|
2177 |
+
checkScriptSiblings: function (script) {
|
2178 |
+
if (script.MathJax.checked) return;
|
2179 |
+
var config = this.config, pre = script.previousSibling;
|
2180 |
+
if (pre && pre.nodeName === "#text") {
|
2181 |
+
var preJax,postJax, post = script.nextSibling;
|
2182 |
+
if (post && post.nodeName !== "#text") {post = null}
|
2183 |
+
if (config.preJax) {
|
2184 |
+
if (typeof(config.preJax) === "string") {config.preJax = new RegExp(config.preJax+"$")}
|
2185 |
+
preJax = pre.nodeValue.match(config.preJax);
|
2186 |
+
}
|
2187 |
+
if (config.postJax && post) {
|
2188 |
+
if (typeof(config.postJax) === "string") {config.postJax = new RegExp("^"+config.postJax)}
|
2189 |
+
postJax = post.nodeValue.match(config.postJax);
|
2190 |
+
}
|
2191 |
+
if (preJax && (!config.postJax || postJax)) {
|
2192 |
+
pre.nodeValue = pre.nodeValue.replace
|
2193 |
+
(config.preJax,(preJax.length > 1? preJax[1] : ""));
|
2194 |
+
pre = null;
|
2195 |
+
}
|
2196 |
+
if (postJax && (!config.preJax || preJax)) {
|
2197 |
+
post.nodeValue = post.nodeValue.replace
|
2198 |
+
(config.postJax,(postJax.length > 1? postJax[1] : ""));
|
2199 |
+
}
|
2200 |
+
if (pre && !pre.nodeValue.match(/\S/)) {pre = pre.previousSibling}
|
2201 |
+
}
|
2202 |
+
if (config.preRemoveClass && pre && pre.className === config.preRemoveClass)
|
2203 |
+
{script.MathJax.preview = pre}
|
2204 |
+
script.MathJax.checked = 1;
|
2205 |
+
},
|
2206 |
+
|
2207 |
+
processInput: function (state) {
|
2208 |
+
var jax, STATE = MathJax.ElementJax.STATE;
|
2209 |
+
var script, prev, m = state.scripts.length;
|
2210 |
+
try {
|
2211 |
+
//
|
2212 |
+
// Loop through the scripts
|
2213 |
+
//
|
2214 |
+
while (state.i < m) {
|
2215 |
+
script = state.scripts[state.i]; if (!script) {state.i++; continue}
|
2216 |
+
//
|
2217 |
+
// Remove previous error marker, if any
|
2218 |
+
//
|
2219 |
+
prev = script.previousSibling;
|
2220 |
+
if (prev && prev.className === "MathJax_Error") {prev.parentNode.removeChild(prev)}
|
2221 |
+
//
|
2222 |
+
// Check if already processed or needs processing
|
2223 |
+
//
|
2224 |
+
if (!script.parentNode || !script.MathJax || script.MathJax.state === STATE.PROCESSED) {state.i++; continue};
|
2225 |
+
if (!script.MathJax.elementJax || script.MathJax.state === STATE.UPDATE) {
|
2226 |
+
this.checkScriptSiblings(script); // remove preJax/postJax etc.
|
2227 |
+
var type = script.type.replace(/ *;(.|\s)*/,""); // the input jax type
|
2228 |
+
var input = this.inputJax[type]; // the input jax itself
|
2229 |
+
jax = input.Process(script,state); // run the input jax
|
2230 |
+
if (typeof jax === 'function') { // if a callback was returned
|
2231 |
+
if (jax.called) continue; // go back and call Process() again
|
2232 |
+
this.RestartAfter(jax); // wait for the callback
|
2233 |
+
}
|
2234 |
+
jax = jax.Attach(script,input.id); // register the jax on the script
|
2235 |
+
this.saveScript(jax,state,script,STATE); // add script to state
|
2236 |
+
this.postInputHooks.Execute(jax,input.id,script); // run global jax filters
|
2237 |
+
} else if (script.MathJax.state === STATE.OUTPUT) {
|
2238 |
+
this.saveScript(script.MathJax.elementJax,state,script,STATE); // add script to state
|
2239 |
+
}
|
2240 |
+
//
|
2241 |
+
// Go on to the next script, and check if we need to update the processing message
|
2242 |
+
//
|
2243 |
+
state.i++; var now = new Date().getTime();
|
2244 |
+
if (now - state.start > this.processUpdateTime && state.i < state.scripts.length)
|
2245 |
+
{state.start = now; this.RestartAfter(MathJax.Callback.Delay(1))}
|
2246 |
+
}
|
2247 |
+
} catch (err) {return this.processError(err,state,"Input")}
|
2248 |
+
//
|
2249 |
+
// Put up final message, reset the state and return
|
2250 |
+
//
|
2251 |
+
if (state.scripts.length && this.config.showProcessingMessages)
|
2252 |
+
{MathJax.Message.Set(["ProcessMath","Processing math: %1%%",100],0)}
|
2253 |
+
state.start = new Date().getTime(); state.i = state.j = 0;
|
2254 |
+
return null;
|
2255 |
+
},
|
2256 |
+
postInputHooks: MathJax.Callback.Hooks(true), // hooks to run after element jax is created
|
2257 |
+
saveScript: function (jax,state,script,STATE) {
|
2258 |
+
//
|
2259 |
+
// Check that output jax exists
|
2260 |
+
//
|
2261 |
+
if (!this.outputJax[jax.mimeType]) {
|
2262 |
+
script.MathJax.state = STATE.UPDATE;
|
2263 |
+
throw Error("No output jax registered for "+jax.mimeType);
|
2264 |
+
}
|
2265 |
+
//
|
2266 |
+
// Record the output jax
|
2267 |
+
// and put this script in the queue for that jax
|
2268 |
+
//
|
2269 |
+
jax.outputJax = this.outputJax[jax.mimeType][0].id;
|
2270 |
+
if (!state.jax[jax.outputJax]) {
|
2271 |
+
if (state.jaxIDs.length === 0) {
|
2272 |
+
// use original array until we know there are more (rather than two copies)
|
2273 |
+
state.jax[jax.outputJax] = state.scripts;
|
2274 |
+
} else {
|
2275 |
+
if (state.jaxIDs.length === 1) // get the script so far for the existing jax
|
2276 |
+
{state.jax[state.jaxIDs[0]] = state.scripts.slice(0,state.i)}
|
2277 |
+
state.jax[jax.outputJax] = []; // start a new array for the new jax
|
2278 |
+
}
|
2279 |
+
state.jaxIDs.push(jax.outputJax); // save the ID of the jax
|
2280 |
+
}
|
2281 |
+
if (state.jaxIDs.length > 1) {state.jax[jax.outputJax].push(script)}
|
2282 |
+
//
|
2283 |
+
// Mark script as needing output
|
2284 |
+
//
|
2285 |
+
script.MathJax.state = STATE.OUTPUT;
|
2286 |
+
},
|
2287 |
+
|
2288 |
+
//
|
2289 |
+
// Pre- and post-process scripts by jax
|
2290 |
+
// (to get scaling factors, hide/show output, and so on)
|
2291 |
+
// Since this can cause the jax to load, we need to trap restarts
|
2292 |
+
//
|
2293 |
+
prepareOutput: function (state,method) {
|
2294 |
+
while (state.j < state.jaxIDs.length) {
|
2295 |
+
var id = state.jaxIDs[state.j], JAX = MathJax.OutputJax[id];
|
2296 |
+
if (JAX[method]) {
|
2297 |
+
try {
|
2298 |
+
var result = JAX[method](state);
|
2299 |
+
if (typeof result === 'function') {
|
2300 |
+
if (result.called) continue; // go back and try again
|
2301 |
+
this.RestartAfter(result);
|
2302 |
+
}
|
2303 |
+
} catch (err) {
|
2304 |
+
if (!err.restart) {
|
2305 |
+
MathJax.Message.Set(["PrepError","Error preparing %1 output (%2)",id,method],null,600);
|
2306 |
+
MathJax.Hub.lastPrepError = err;
|
2307 |
+
state.j++;
|
2308 |
+
}
|
2309 |
+
return MathJax.Callback.After(["prepareOutput",this,state,method],err.restart);
|
2310 |
+
}
|
2311 |
+
}
|
2312 |
+
state.j++;
|
2313 |
+
}
|
2314 |
+
return null;
|
2315 |
+
},
|
2316 |
+
|
2317 |
+
processOutput: function (state) {
|
2318 |
+
var result, STATE = MathJax.ElementJax.STATE, script, m = state.scripts.length;
|
2319 |
+
try {
|
2320 |
+
//
|
2321 |
+
// Loop through the scripts
|
2322 |
+
//
|
2323 |
+
while (state.i < m) {
|
2324 |
+
//
|
2325 |
+
// Check that there is an element jax
|
2326 |
+
//
|
2327 |
+
script = state.scripts[state.i];
|
2328 |
+
if (!script || !script.parentNode || !script.MathJax || script.MathJax.error) {state.i++; continue}
|
2329 |
+
var jax = script.MathJax.elementJax; if (!jax) {state.i++; continue}
|
2330 |
+
//
|
2331 |
+
// Call the output Jax's Process method (which will be its Translate()
|
2332 |
+
// method once loaded). Mark it as complete and remove the preview unless
|
2333 |
+
// the Process() call returns an explicit false value (in which case, it will
|
2334 |
+
// handle this later during the postProcess phase, as HTML-CSS does).
|
2335 |
+
//
|
2336 |
+
result = MathJax.OutputJax[jax.outputJax].Process(script,state);
|
2337 |
+
if (result !== false) {
|
2338 |
+
script.MathJax.state = STATE.PROCESSED;
|
2339 |
+
if (script.MathJax.preview) {
|
2340 |
+
script.MathJax.preview.innerHTML = "";
|
2341 |
+
script.MathJax.preview.style.display = "none";
|
2342 |
+
}
|
2343 |
+
//
|
2344 |
+
// Signal that new math is available
|
2345 |
+
//
|
2346 |
+
this.signal.Post(["New Math",jax.inputID]); // FIXME: wait for this? (i.e., restart if returns uncalled callback)
|
2347 |
+
}
|
2348 |
+
//
|
2349 |
+
// Go on to next math expression
|
2350 |
+
//
|
2351 |
+
state.i++;
|
2352 |
+
//
|
2353 |
+
// Update the processing message, if needed
|
2354 |
+
//
|
2355 |
+
var now = new Date().getTime();
|
2356 |
+
if (now - state.start > this.processUpdateTime && state.i < state.scripts.length)
|
2357 |
+
{state.start = now; this.RestartAfter(MathJax.Callback.Delay(this.processUpdateDelay))}
|
2358 |
+
}
|
2359 |
+
} catch (err) {return this.processError(err,state,"Output")}
|
2360 |
+
//
|
2361 |
+
// Put up the typesetting-complete message
|
2362 |
+
//
|
2363 |
+
if (state.scripts.length && this.config.showProcessingMessages) {
|
2364 |
+
MathJax.Message.Set(["TypesetMath","Typesetting math: %1%%",100],0);
|
2365 |
+
MathJax.Message.Clear(0);
|
2366 |
+
}
|
2367 |
+
state.i = state.j = 0;
|
2368 |
+
return null;
|
2369 |
+
},
|
2370 |
+
|
2371 |
+
processMessage: function (state,type) {
|
2372 |
+
var m = Math.floor(state.i/(state.scripts.length)*100);
|
2373 |
+
var message = (type === "Output" ? ["TypesetMath","Typesetting math: %1%%"] :
|
2374 |
+
["ProcessMath","Processing math: %1%%"]);
|
2375 |
+
if (this.config.showProcessingMessages) {MathJax.Message.Set(message.concat(m),0)}
|
2376 |
+
},
|
2377 |
+
|
2378 |
+
processError: function (err,state,type) {
|
2379 |
+
if (!err.restart) {
|
2380 |
+
if (!this.config.errorSettings.message) {throw err}
|
2381 |
+
this.formatError(state.scripts[state.i],err); state.i++;
|
2382 |
+
}
|
2383 |
+
this.processMessage(state,type);
|
2384 |
+
return MathJax.Callback.After(["process"+type,this,state],err.restart);
|
2385 |
+
},
|
2386 |
+
|
2387 |
+
formatError: function (script,err) {
|
2388 |
+
var LOCALIZE = function (id,text,arg1,arg2) {return MathJax.Localization._(id,text,arg1,arg2)};
|
2389 |
+
//
|
2390 |
+
// Get the error message, URL, and line, and save it for
|
2391 |
+
// reporting in the Show Math As Error menu
|
2392 |
+
//
|
2393 |
+
var message = LOCALIZE("ErrorMessage","Error: %1",err.message)+"\n";
|
2394 |
+
if (err.sourceURL||err.fileName) message += "\n"+LOCALIZE("ErrorFile","file: %1",err.sourceURL||err.fileName);
|
2395 |
+
if (err.line||err.lineNumber) message += "\n"+LOCALIZE("ErrorLine","line: %1",err.line||err.lineNumber);
|
2396 |
+
message += "\n\n"+LOCALIZE("ErrorTips","Debugging tips: use %1, inspect %2 in the browser console","'unpacked/MathJax.js'","'MathJax.Hub.lastError'");
|
2397 |
+
script.MathJax.error = MathJax.OutputJax.Error.Jax(message,script);
|
2398 |
+
if (script.MathJax.elementJax)
|
2399 |
+
script.MathJax.error.inputID = script.MathJax.elementJax.inputID;
|
2400 |
+
//
|
2401 |
+
// Create the [Math Processing Error] span
|
2402 |
+
//
|
2403 |
+
var errorSettings = this.config.errorSettings;
|
2404 |
+
var errorText = LOCALIZE(errorSettings.messageId,errorSettings.message);
|
2405 |
+
var error = MathJax.HTML.Element("span", {
|
2406 |
+
className:"MathJax_Error", jaxID:"Error", isMathJax:true,
|
2407 |
+
id: script.MathJax.error.inputID+"-Frame"
|
2408 |
+
},[["span",null,errorText]]);
|
2409 |
+
//
|
2410 |
+
// Attach the menu events
|
2411 |
+
//
|
2412 |
+
MathJax.Ajax.Require("[MathJax]/extensions/MathEvents.js",function () {
|
2413 |
+
var EVENT = MathJax.Extension.MathEvents.Event,
|
2414 |
+
HUB = MathJax.Hub;
|
2415 |
+
error.oncontextmenu = EVENT.Menu;
|
2416 |
+
error.onmousedown = EVENT.Mousedown;
|
2417 |
+
error.onkeydown = EVENT.Keydown;
|
2418 |
+
error.tabIndex = HUB.getTabOrder(HUB.getJaxFor(script));
|
2419 |
+
});
|
2420 |
+
//
|
2421 |
+
// Insert the error into the page and remove any preview
|
2422 |
+
//
|
2423 |
+
var node = document.getElementById(error.id);
|
2424 |
+
if (node) node.parentNode.removeChild(node);
|
2425 |
+
if (script.parentNode) script.parentNode.insertBefore(error,script);
|
2426 |
+
if (script.MathJax.preview) {
|
2427 |
+
script.MathJax.preview.innerHTML = "";
|
2428 |
+
script.MathJax.preview.style.display = "none";
|
2429 |
+
}
|
2430 |
+
//
|
2431 |
+
// Save the error for debugging purposes
|
2432 |
+
// Report the error as a signal
|
2433 |
+
//
|
2434 |
+
this.lastError = err;
|
2435 |
+
this.signal.Post(["Math Processing Error",script,err]);
|
2436 |
+
},
|
2437 |
+
|
2438 |
+
RestartAfter: function (callback) {
|
2439 |
+
throw this.Insert(Error("restart"),{restart: MathJax.Callback(callback)});
|
2440 |
+
},
|
2441 |
+
|
2442 |
+
elementCallback: function (element,callback) {
|
2443 |
+
if (callback == null && (MathJax.Object.isArray(element) || typeof element === 'function'))
|
2444 |
+
{try {MathJax.Callback(element); callback = element; element = null} catch(e) {}}
|
2445 |
+
if (element == null) {element = this.config.elements || []}
|
2446 |
+
if (this.isHTMLCollection(element)) {element = this.HTMLCollection2Array(element)}
|
2447 |
+
if (!MathJax.Object.isArray(element)) {element = [element]}
|
2448 |
+
element = [].concat(element); // make a copy so the original isn't changed
|
2449 |
+
for (var i = 0, m = element.length; i < m; i++)
|
2450 |
+
{if (typeof(element[i]) === 'string') {element[i] = document.getElementById(element[i])}}
|
2451 |
+
if (!document.body) {document.body = document.getElementsByTagName("body")[0]}
|
2452 |
+
if (element.length == 0) {element.push(document.body)}
|
2453 |
+
if (!callback) {callback = {}}
|
2454 |
+
return {
|
2455 |
+
count: element.length,
|
2456 |
+
elements: (element.length === 1 ? element[0] : element),
|
2457 |
+
callback: callback
|
2458 |
+
};
|
2459 |
+
},
|
2460 |
+
|
2461 |
+
elementScripts: function (element) {
|
2462 |
+
var scripts = [];
|
2463 |
+
if (MathJax.Object.isArray(element) || this.isHTMLCollection(element)) {
|
2464 |
+
for (var i = 0, m = element.length; i < m; i++) {
|
2465 |
+
var alreadyDone = 0;
|
2466 |
+
for (var j = 0; j < i && !alreadyDone; j++)
|
2467 |
+
{alreadyDone = element[j].contains(element[i])}
|
2468 |
+
if (!alreadyDone) scripts.push.apply(scripts,this.elementScripts(element[i]));
|
2469 |
+
}
|
2470 |
+
return scripts;
|
2471 |
+
}
|
2472 |
+
if (typeof(element) === 'string') {element = document.getElementById(element)}
|
2473 |
+
if (!document.body) {document.body = document.getElementsByTagName("body")[0]}
|
2474 |
+
if (element == null) {element = document.body}
|
2475 |
+
if (element.tagName != null && element.tagName.toLowerCase() === "script") {return [element]}
|
2476 |
+
scripts = element.getElementsByTagName("script");
|
2477 |
+
if (this.msieHTMLCollectionBug) {scripts = this.HTMLCollection2Array(scripts)}
|
2478 |
+
return scripts;
|
2479 |
+
},
|
2480 |
+
|
2481 |
+
//
|
2482 |
+
// IE8 fails to check "obj instanceof HTMLCollection" for some values of obj.
|
2483 |
+
//
|
2484 |
+
isHTMLCollection: function (obj) {
|
2485 |
+
return ("HTMLCollection" in window && typeof(obj) === "object" && obj instanceof HTMLCollection);
|
2486 |
+
},
|
2487 |
+
//
|
2488 |
+
// IE8 doesn't deal with HTMLCollection as an array, so convert to array
|
2489 |
+
//
|
2490 |
+
HTMLCollection2Array: function (nodes) {
|
2491 |
+
if (!this.msieHTMLCollectionBug) {return [].slice.call(nodes)}
|
2492 |
+
var NODES = [];
|
2493 |
+
for (var i = 0, m = nodes.length; i < m; i++) {NODES[i] = nodes[i]}
|
2494 |
+
return NODES;
|
2495 |
+
},
|
2496 |
+
|
2497 |
+
Insert: function (dst,src) {
|
2498 |
+
for (var id in src) {if (src.hasOwnProperty(id)) {
|
2499 |
+
// allow for concatenation of arrays?
|
2500 |
+
if (typeof src[id] === 'object' && !(MathJax.Object.isArray(src[id])) &&
|
2501 |
+
(typeof dst[id] === 'object' || typeof dst[id] === 'function')) {
|
2502 |
+
this.Insert(dst[id],src[id]);
|
2503 |
+
} else {
|
2504 |
+
dst[id] = src[id];
|
2505 |
+
}
|
2506 |
+
}}
|
2507 |
+
return dst;
|
2508 |
+
},
|
2509 |
+
|
2510 |
+
getTabOrder: function(script) {
|
2511 |
+
return this.config.menuSettings.inTabOrder ? 0 : -1;
|
2512 |
+
},
|
2513 |
+
|
2514 |
+
// Old browsers (e.g. Internet Explorer <= 8) do not support trim().
|
2515 |
+
SplitList: ("trim" in String.prototype ?
|
2516 |
+
function (list) {return list.trim().split(/\s+/)} :
|
2517 |
+
function (list) {return list.replace(/^\s+/,'').
|
2518 |
+
replace(/\s+$/,'').split(/\s+/)})
|
2519 |
+
};
|
2520 |
+
MathJax.Hub.Insert(MathJax.Hub.config.styles,MathJax.Message.styles);
|
2521 |
+
MathJax.Hub.Insert(MathJax.Hub.config.styles,{".MathJax_Error":MathJax.Hub.config.errorSettings.style});
|
2522 |
+
|
2523 |
+
//
|
2524 |
+
// Storage area for extensions and preprocessors
|
2525 |
+
//
|
2526 |
+
MathJax.Extension = {};
|
2527 |
+
|
2528 |
+
//
|
2529 |
+
// Hub Startup code
|
2530 |
+
//
|
2531 |
+
MathJax.Hub.Configured = MathJax.Callback({}); // called when configuration is complete
|
2532 |
+
MathJax.Hub.Startup = {
|
2533 |
+
script: "", // the startup script from the SCRIPT call that loads MathJax.js
|
2534 |
+
queue: MathJax.Callback.Queue(), // Queue used for startup actions
|
2535 |
+
signal: MathJax.Callback.Signal("Startup"), // Signal used for startup events
|
2536 |
+
params: {},
|
2537 |
+
|
2538 |
+
//
|
2539 |
+
// Load the configuration files
|
2540 |
+
//
|
2541 |
+
Config: function () {
|
2542 |
+
this.queue.Push(["Post",this.signal,"Begin Config"]);
|
2543 |
+
//
|
2544 |
+
// Make sure root is set before loading any files
|
2545 |
+
//
|
2546 |
+
if (MathJax.AuthorConfig && MathJax.AuthorConfig.root)
|
2547 |
+
MathJax.Ajax.config.root = MathJax.AuthorConfig.root;
|
2548 |
+
//
|
2549 |
+
// If a locale is given as a parameter,
|
2550 |
+
// set the locale and the default menu value for the locale
|
2551 |
+
//
|
2552 |
+
if (this.params.locale) {
|
2553 |
+
MathJax.Localization.resetLocale(this.params.locale);
|
2554 |
+
MathJax.Hub.config.menuSettings.locale = this.params.locale;
|
2555 |
+
}
|
2556 |
+
//
|
2557 |
+
// Run the config files, if any are given in the parameter list
|
2558 |
+
//
|
2559 |
+
if (this.params.config) {
|
2560 |
+
var files = this.params.config.split(/,/);
|
2561 |
+
for (var i = 0, m = files.length; i < m; i++) {
|
2562 |
+
if (!files[i].match(/\.js$/)) {files[i] += ".js"}
|
2563 |
+
this.queue.Push(["Require",MathJax.Ajax,this.URL("config",files[i])]);
|
2564 |
+
}
|
2565 |
+
}
|
2566 |
+
//
|
2567 |
+
// Perform author configuration from in-line MathJax = {...}
|
2568 |
+
//
|
2569 |
+
this.queue.Push(["Config",MathJax.Hub,MathJax.AuthorConfig]);
|
2570 |
+
//
|
2571 |
+
// Run the deprecated configuration script, if any (ignoring return value)
|
2572 |
+
// Wait for the startup delay signal
|
2573 |
+
// Run the mathjax-config blocks
|
2574 |
+
// Load the files in the configuration's config array
|
2575 |
+
//
|
2576 |
+
if (this.script.match(/\S/)) {this.queue.Push(this.script+";\n1;")}
|
2577 |
+
this.queue.Push(
|
2578 |
+
["ConfigDelay",this],
|
2579 |
+
["ConfigBlocks",this],
|
2580 |
+
[function (THIS) {return THIS.loadArray(MathJax.Hub.config.config,"config",null,true)},this],
|
2581 |
+
["Post",this.signal,"End Config"]
|
2582 |
+
);
|
2583 |
+
},
|
2584 |
+
//
|
2585 |
+
// Return the delay callback
|
2586 |
+
//
|
2587 |
+
ConfigDelay: function () {
|
2588 |
+
var delay = this.params.delayStartupUntil || MathJax.Hub.config.delayStartupUntil;
|
2589 |
+
if (delay === "onload") {return this.onload}
|
2590 |
+
if (delay === "configured") {return MathJax.Hub.Configured}
|
2591 |
+
return delay;
|
2592 |
+
},
|
2593 |
+
//
|
2594 |
+
// Run the scripts of type=text/x-mathjax-config
|
2595 |
+
//
|
2596 |
+
ConfigBlocks: function () {
|
2597 |
+
var scripts = document.getElementsByTagName("script");
|
2598 |
+
var queue = MathJax.Callback.Queue();
|
2599 |
+
for (var i = 0, m = scripts.length; i < m; i++) {
|
2600 |
+
var type = String(scripts[i].type).replace(/ /g,"");
|
2601 |
+
if (type.match(/^text\/x-mathjax-config(;.*)?$/) && !type.match(/;executed=true/)) {
|
2602 |
+
scripts[i].type += ";executed=true";
|
2603 |
+
queue.Push(scripts[i].innerHTML+";\n1;");
|
2604 |
+
}
|
2605 |
+
}
|
2606 |
+
return queue.Push(function () {MathJax.Ajax.config.root = MathJax.Hub.config.root});
|
2607 |
+
},
|
2608 |
+
|
2609 |
+
//
|
2610 |
+
// Read cookie and set up menu defaults
|
2611 |
+
// (set the locale according to the cookie)
|
2612 |
+
// (adjust the jax to accommodate renderer preferences)
|
2613 |
+
//
|
2614 |
+
Cookie: function () {
|
2615 |
+
return this.queue.Push(
|
2616 |
+
["Post",this.signal,"Begin Cookie"],
|
2617 |
+
["Get",MathJax.HTML.Cookie,"menu",MathJax.Hub.config.menuSettings],
|
2618 |
+
[function (config) {
|
2619 |
+
var SETTINGS = config.menuSettings;
|
2620 |
+
if (SETTINGS.locale) MathJax.Localization.resetLocale(SETTINGS.locale);
|
2621 |
+
var renderer = config.menuSettings.renderer, jax = config.jax;
|
2622 |
+
if (renderer) {
|
2623 |
+
var name = "output/"+renderer; jax.sort();
|
2624 |
+
for (var i = 0, m = jax.length; i < m; i++) {
|
2625 |
+
if (jax[i].substr(0,7) === "output/") break;
|
2626 |
+
}
|
2627 |
+
if (i == m-1) {jax.pop()} else {
|
2628 |
+
while (i < m) {if (jax[i] === name) {jax.splice(i,1); break}; i++}
|
2629 |
+
}
|
2630 |
+
jax.unshift(name);
|
2631 |
+
}
|
2632 |
+
if (SETTINGS.CHTMLpreview != null) {
|
2633 |
+
if (SETTINGS.FastPreview == null) SETTINGS.FastPreview = SETTINGS.CHTMLpreview;
|
2634 |
+
delete SETTINGS.CHTMLpreview;
|
2635 |
+
}
|
2636 |
+
if (SETTINGS.FastPreview && !MathJax.Extension["fast-preview"])
|
2637 |
+
MathJax.Hub.config.extensions.push("fast-preview.js");
|
2638 |
+
if (config.menuSettings.assistiveMML && !MathJax.Extension.AssistiveMML)
|
2639 |
+
MathJax.Hub.config.extensions.push("AssistiveMML.js");
|
2640 |
+
},MathJax.Hub.config],
|
2641 |
+
["Post",this.signal,"End Cookie"]
|
2642 |
+
);
|
2643 |
+
},
|
2644 |
+
//
|
2645 |
+
// Setup stylesheets and extra styles
|
2646 |
+
//
|
2647 |
+
Styles: function () {
|
2648 |
+
return this.queue.Push(
|
2649 |
+
["Post",this.signal,"Begin Styles"],
|
2650 |
+
["loadArray",this,MathJax.Hub.config.styleSheets,"config"],
|
2651 |
+
["Styles",MathJax.Ajax,MathJax.Hub.config.styles],
|
2652 |
+
["Post",this.signal,"End Styles"]
|
2653 |
+
);
|
2654 |
+
},
|
2655 |
+
//
|
2656 |
+
// Load the input and output jax
|
2657 |
+
//
|
2658 |
+
Jax: function () {
|
2659 |
+
var config = MathJax.Hub.config, jax = MathJax.Hub.outputJax;
|
2660 |
+
// Save the order of the output jax since they are loading asynchronously
|
2661 |
+
for (var i = 0, m = config.jax.length, k = 0; i < m; i++) {
|
2662 |
+
var name = config.jax[i].substr(7);
|
2663 |
+
if (config.jax[i].substr(0,7) === "output/" && jax.order[name] == null)
|
2664 |
+
{jax.order[name] = k; k++}
|
2665 |
+
}
|
2666 |
+
var queue = MathJax.Callback.Queue();
|
2667 |
+
return queue.Push(
|
2668 |
+
["Post",this.signal,"Begin Jax"],
|
2669 |
+
["loadArray",this,config.jax,"jax","config.js"],
|
2670 |
+
["Post",this.signal,"End Jax"]
|
2671 |
+
);
|
2672 |
+
},
|
2673 |
+
//
|
2674 |
+
// Load the extensions
|
2675 |
+
//
|
2676 |
+
Extensions: function () {
|
2677 |
+
var queue = MathJax.Callback.Queue();
|
2678 |
+
return queue.Push(
|
2679 |
+
["Post",this.signal,"Begin Extensions"],
|
2680 |
+
["loadArray",this,MathJax.Hub.config.extensions,"extensions"],
|
2681 |
+
["Post",this.signal,"End Extensions"]
|
2682 |
+
);
|
2683 |
+
},
|
2684 |
+
|
2685 |
+
//
|
2686 |
+
// Initialize the Message system
|
2687 |
+
//
|
2688 |
+
Message: function () {
|
2689 |
+
MathJax.Message.Init(true);
|
2690 |
+
},
|
2691 |
+
|
2692 |
+
//
|
2693 |
+
// Set the math menu renderer, if it isn't already
|
2694 |
+
// (this must come after the jax are loaded)
|
2695 |
+
//
|
2696 |
+
Menu: function () {
|
2697 |
+
var menu = MathJax.Hub.config.menuSettings, jax = MathJax.Hub.outputJax, registered;
|
2698 |
+
for (var id in jax) {if (jax.hasOwnProperty(id)) {
|
2699 |
+
if (jax[id].length) {registered = jax[id]; break}
|
2700 |
+
}}
|
2701 |
+
if (registered && registered.length) {
|
2702 |
+
if (menu.renderer && menu.renderer !== registered[0].id)
|
2703 |
+
{registered.unshift(MathJax.OutputJax[menu.renderer])}
|
2704 |
+
menu.renderer = registered[0].id;
|
2705 |
+
}
|
2706 |
+
},
|
2707 |
+
|
2708 |
+
//
|
2709 |
+
// Set the location to the designated hash position
|
2710 |
+
//
|
2711 |
+
Hash: function () {
|
2712 |
+
if (MathJax.Hub.config.positionToHash && document.location.hash &&
|
2713 |
+
document.body && document.body.scrollIntoView) {
|
2714 |
+
var name = decodeURIComponent(document.location.hash.substr(1));
|
2715 |
+
var target = document.getElementById(name);
|
2716 |
+
if (!target) {
|
2717 |
+
var a = document.getElementsByTagName("a");
|
2718 |
+
for (var i = 0, m = a.length; i < m; i++)
|
2719 |
+
{if (a[i].name === name) {target = a[i]; break}}
|
2720 |
+
}
|
2721 |
+
if (target) {
|
2722 |
+
while (!target.scrollIntoView) {target = target.parentNode}
|
2723 |
+
target = this.HashCheck(target);
|
2724 |
+
if (target && target.scrollIntoView)
|
2725 |
+
{setTimeout(function () {target.scrollIntoView(true)},1)}
|
2726 |
+
}
|
2727 |
+
}
|
2728 |
+
},
|
2729 |
+
HashCheck: function (target) {
|
2730 |
+
var jax = MathJax.Hub.getJaxFor(target);
|
2731 |
+
if (jax && MathJax.OutputJax[jax.outputJax].hashCheck)
|
2732 |
+
{target = MathJax.OutputJax[jax.outputJax].hashCheck(target)}
|
2733 |
+
return target;
|
2734 |
+
},
|
2735 |
+
|
2736 |
+
//
|
2737 |
+
// Load the Menu and Zoom code, if it hasn't already been loaded.
|
2738 |
+
// This is called after the initial typeset, so should no longer be
|
2739 |
+
// competing with other page loads, but will make these available
|
2740 |
+
// if needed later on.
|
2741 |
+
//
|
2742 |
+
MenuZoom: function () {
|
2743 |
+
if (MathJax.Hub.config.showMathMenu) {
|
2744 |
+
if (!MathJax.Extension.MathMenu) {
|
2745 |
+
setTimeout(
|
2746 |
+
function () {
|
2747 |
+
MathJax.Callback.Queue(
|
2748 |
+
["Require",MathJax.Ajax,"[MathJax]/extensions/MathMenu.js",{}],
|
2749 |
+
["loadDomain",MathJax.Localization,"MathMenu"]
|
2750 |
+
)
|
2751 |
+
},1000
|
2752 |
+
);
|
2753 |
+
} else {
|
2754 |
+
setTimeout(
|
2755 |
+
MathJax.Callback(["loadDomain",MathJax.Localization,"MathMenu"]),
|
2756 |
+
1000
|
2757 |
+
);
|
2758 |
+
}
|
2759 |
+
if (!MathJax.Extension.MathZoom) {
|
2760 |
+
setTimeout(
|
2761 |
+
MathJax.Callback(["Require",MathJax.Ajax,"[MathJax]/extensions/MathZoom.js",{}]),
|
2762 |
+
2000
|
2763 |
+
);
|
2764 |
+
}
|
2765 |
+
}
|
2766 |
+
},
|
2767 |
+
|
2768 |
+
//
|
2769 |
+
// Setup the onload callback
|
2770 |
+
//
|
2771 |
+
onLoad: function () {
|
2772 |
+
var onload = this.onload =
|
2773 |
+
MathJax.Callback(function () {MathJax.Hub.Startup.signal.Post("onLoad")});
|
2774 |
+
if (document.body && document.readyState)
|
2775 |
+
if (MathJax.Hub.Browser.isMSIE) {
|
2776 |
+
// IE can change from loading to interactive before
|
2777 |
+
// full page is ready, so go with complete (even though
|
2778 |
+
// that means we may have to wait longer).
|
2779 |
+
if (document.readyState === "complete") {return [onload]}
|
2780 |
+
} else if (document.readyState !== "loading") {return [onload]}
|
2781 |
+
if (window.addEventListener) {
|
2782 |
+
window.addEventListener("load",onload,false);
|
2783 |
+
if (!this.params.noDOMContentEvent)
|
2784 |
+
{window.addEventListener("DOMContentLoaded",onload,false)}
|
2785 |
+
}
|
2786 |
+
else if (window.attachEvent) {window.attachEvent("onload",onload)}
|
2787 |
+
else {window.onload = onload}
|
2788 |
+
return onload;
|
2789 |
+
},
|
2790 |
+
|
2791 |
+
//
|
2792 |
+
// Perform the initial typesetting (or skip if configuration says to)
|
2793 |
+
//
|
2794 |
+
Typeset: function (element,callback) {
|
2795 |
+
if (MathJax.Hub.config.skipStartupTypeset) {return function () {}}
|
2796 |
+
return this.queue.Push(
|
2797 |
+
["Post",this.signal,"Begin Typeset"],
|
2798 |
+
["Typeset",MathJax.Hub,element,callback],
|
2799 |
+
["Post",this.signal,"End Typeset"]
|
2800 |
+
);
|
2801 |
+
},
|
2802 |
+
|
2803 |
+
//
|
2804 |
+
// Create a URL in the MathJax hierarchy
|
2805 |
+
//
|
2806 |
+
URL: function (dir,name) {
|
2807 |
+
if (!name.match(/^([a-z]+:\/\/|\[|\/)/)) {name = "[MathJax]/"+dir+"/"+name}
|
2808 |
+
return name;
|
2809 |
+
},
|
2810 |
+
|
2811 |
+
//
|
2812 |
+
// Load an array of files, waiting for all of them
|
2813 |
+
// to be loaded before going on
|
2814 |
+
//
|
2815 |
+
loadArray: function (files,dir,name,synchronous) {
|
2816 |
+
if (files) {
|
2817 |
+
if (!MathJax.Object.isArray(files)) {files = [files]}
|
2818 |
+
if (files.length) {
|
2819 |
+
var queue = MathJax.Callback.Queue(), callback = {}, file;
|
2820 |
+
for (var i = 0, m = files.length; i < m; i++) {
|
2821 |
+
file = this.URL(dir,files[i]);
|
2822 |
+
if (name) {file += "/" + name}
|
2823 |
+
if (synchronous) {queue.Push(["Require",MathJax.Ajax,file,callback])}
|
2824 |
+
else {queue.Push(MathJax.Ajax.Require(file,callback))}
|
2825 |
+
}
|
2826 |
+
return queue.Push({}); // wait for everything to finish
|
2827 |
+
}
|
2828 |
+
}
|
2829 |
+
return null;
|
2830 |
+
}
|
2831 |
+
|
2832 |
+
};
|
2833 |
+
|
2834 |
+
|
2835 |
+
/**********************************************************/
|
2836 |
+
|
2837 |
+
(function (BASENAME) {
|
2838 |
+
var BASE = window[BASENAME], ROOT = "["+BASENAME+"]";
|
2839 |
+
var HUB = BASE.Hub, AJAX = BASE.Ajax, CALLBACK = BASE.Callback;
|
2840 |
+
|
2841 |
+
var JAX = MathJax.Object.Subclass({
|
2842 |
+
JAXFILE: "jax.js",
|
2843 |
+
require: null, // array of files to load before jax.js is complete
|
2844 |
+
config: {},
|
2845 |
+
//
|
2846 |
+
// Make a subclass and return an instance of it.
|
2847 |
+
// (FIXME: should we replace config with a copy of the constructor's
|
2848 |
+
// config? Otherwise all subclasses share the same config structure.)
|
2849 |
+
//
|
2850 |
+
Init: function (def,cdef) {
|
2851 |
+
if (arguments.length === 0) {return this}
|
2852 |
+
return (this.constructor.Subclass(def,cdef))();
|
2853 |
+
},
|
2854 |
+
//
|
2855 |
+
// Augment by merging with class definition (not replacing)
|
2856 |
+
//
|
2857 |
+
Augment: function (def,cdef) {
|
2858 |
+
var cObject = this.constructor, ndef = {};
|
2859 |
+
if (def != null) {
|
2860 |
+
for (var id in def) {if (def.hasOwnProperty(id)) {
|
2861 |
+
if (typeof def[id] === "function")
|
2862 |
+
{cObject.protoFunction(id,def[id])} else {ndef[id] = def[id]}
|
2863 |
+
}}
|
2864 |
+
// MSIE doesn't list toString even if it is not native so handle it separately
|
2865 |
+
if (def.toString !== cObject.prototype.toString && def.toString !== {}.toString)
|
2866 |
+
{cObject.protoFunction('toString',def.toString)}
|
2867 |
+
}
|
2868 |
+
HUB.Insert(cObject.prototype,ndef);
|
2869 |
+
cObject.Augment(null,cdef);
|
2870 |
+
return this;
|
2871 |
+
},
|
2872 |
+
Translate: function (script,state) {
|
2873 |
+
throw Error(this.directory+"/"+this.JAXFILE+" failed to define the Translate() method");
|
2874 |
+
},
|
2875 |
+
Register: function (mimetype) {},
|
2876 |
+
Config: function () {
|
2877 |
+
this.config = HUB.CombineConfig(this.id,this.config);
|
2878 |
+
if (this.config.Augment) {this.Augment(this.config.Augment)}
|
2879 |
+
},
|
2880 |
+
Startup: function () {},
|
2881 |
+
loadComplete: function (file) {
|
2882 |
+
if (file === "config.js") {
|
2883 |
+
return AJAX.loadComplete(this.directory+"/"+file);
|
2884 |
+
} else {
|
2885 |
+
var queue = CALLBACK.Queue();
|
2886 |
+
queue.Push(
|
2887 |
+
HUB.Register.StartupHook("End Config",{}), // wait until config complete
|
2888 |
+
["Post",HUB.Startup.signal,this.id+" Jax Config"],
|
2889 |
+
["Config",this],
|
2890 |
+
["Post",HUB.Startup.signal,this.id+" Jax Require"],
|
2891 |
+
// Config may set the required and extensions array,
|
2892 |
+
// so use functions to delay making the reference until needed
|
2893 |
+
[function (THIS) {return MathJax.Hub.Startup.loadArray(THIS.require,this.directory)},this],
|
2894 |
+
[function (config,id) {return MathJax.Hub.Startup.loadArray(config.extensions,"extensions/"+id)},this.config||{},this.id],
|
2895 |
+
["Post",HUB.Startup.signal,this.id+" Jax Startup"],
|
2896 |
+
["Startup",this],
|
2897 |
+
["Post",HUB.Startup.signal,this.id+" Jax Ready"]
|
2898 |
+
);
|
2899 |
+
if (this.copyTranslate) {
|
2900 |
+
queue.Push(
|
2901 |
+
[function (THIS) {
|
2902 |
+
THIS.preProcess = THIS.preTranslate;
|
2903 |
+
THIS.Process = THIS.Translate;
|
2904 |
+
THIS.postProcess = THIS.postTranslate;
|
2905 |
+
},this.constructor.prototype]
|
2906 |
+
);
|
2907 |
+
}
|
2908 |
+
return queue.Push(["loadComplete",AJAX,this.directory+"/"+file]);
|
2909 |
+
}
|
2910 |
+
}
|
2911 |
+
},{
|
2912 |
+
id: "Jax",
|
2913 |
+
version: "2.7.5",
|
2914 |
+
directory: ROOT+"/jax",
|
2915 |
+
extensionDir: ROOT+"/extensions"
|
2916 |
+
});
|
2917 |
+
|
2918 |
+
/***********************************/
|
2919 |
+
|
2920 |
+
BASE.InputJax = JAX.Subclass({
|
2921 |
+
elementJax: "mml", // the element jax to load for this input jax
|
2922 |
+
sourceMenuTitle: /*_(MathMenu)*/ ["Original","Original Form"],
|
2923 |
+
copyTranslate: true,
|
2924 |
+
Process: function (script,state) {
|
2925 |
+
var queue = CALLBACK.Queue(), file;
|
2926 |
+
// Load any needed element jax
|
2927 |
+
var jax = this.elementJax; if (!BASE.Object.isArray(jax)) {jax = [jax]}
|
2928 |
+
for (var i = 0, m = jax.length; i < m; i++) {
|
2929 |
+
file = BASE.ElementJax.directory+"/"+jax[i]+"/"+this.JAXFILE;
|
2930 |
+
if (!this.require) {this.require = []}
|
2931 |
+
else if (!BASE.Object.isArray(this.require)) {this.require = [this.require]};
|
2932 |
+
this.require.push(file); // so Startup will wait for it to be loaded
|
2933 |
+
queue.Push(AJAX.Require(file));
|
2934 |
+
}
|
2935 |
+
// Load the input jax
|
2936 |
+
file = this.directory+"/"+this.JAXFILE;
|
2937 |
+
var load = queue.Push(AJAX.Require(file));
|
2938 |
+
if (!load.called) {
|
2939 |
+
this.constructor.prototype.Process = function () {
|
2940 |
+
if (!load.called) {return load}
|
2941 |
+
throw Error(file+" failed to load properly");
|
2942 |
+
}
|
2943 |
+
}
|
2944 |
+
// Load the associated output jax
|
2945 |
+
jax = HUB.outputJax["jax/"+jax[0]];
|
2946 |
+
if (jax) {queue.Push(AJAX.Require(jax[0].directory+"/"+this.JAXFILE))}
|
2947 |
+
return queue.Push({});
|
2948 |
+
},
|
2949 |
+
needsUpdate: function (jax) {
|
2950 |
+
var script = jax.SourceElement();
|
2951 |
+
return (jax.originalText !== BASE.HTML.getScript(script));
|
2952 |
+
},
|
2953 |
+
Register: function (mimetype) {
|
2954 |
+
if (!HUB.inputJax) {HUB.inputJax = {}}
|
2955 |
+
HUB.inputJax[mimetype] = this;
|
2956 |
+
}
|
2957 |
+
},{
|
2958 |
+
id: "InputJax",
|
2959 |
+
version: "2.7.5",
|
2960 |
+
directory: JAX.directory+"/input",
|
2961 |
+
extensionDir: JAX.extensionDir
|
2962 |
+
});
|
2963 |
+
|
2964 |
+
/***********************************/
|
2965 |
+
|
2966 |
+
BASE.OutputJax = JAX.Subclass({
|
2967 |
+
copyTranslate: true,
|
2968 |
+
preProcess: function (state) {
|
2969 |
+
var load, file = this.directory+"/"+this.JAXFILE;
|
2970 |
+
this.constructor.prototype.preProcess = function (state) {
|
2971 |
+
if (!load.called) {return load}
|
2972 |
+
throw Error(file+" failed to load properly");
|
2973 |
+
}
|
2974 |
+
load = AJAX.Require(file);
|
2975 |
+
return load;
|
2976 |
+
},
|
2977 |
+
Process: function (state) {throw Error(this.id + " output jax failed to load properly")},
|
2978 |
+
Register: function (mimetype) {
|
2979 |
+
var jax = HUB.outputJax;
|
2980 |
+
if (!jax[mimetype]) {jax[mimetype] = []}
|
2981 |
+
// If the output jax is earlier in the original configuration list, put it first here
|
2982 |
+
if (jax[mimetype].length && (this.id === HUB.config.menuSettings.renderer ||
|
2983 |
+
(jax.order[this.id]||0) < (jax.order[jax[mimetype][0].id]||0)))
|
2984 |
+
{jax[mimetype].unshift(this)} else {jax[mimetype].push(this)}
|
2985 |
+
// Make sure the element jax is loaded before Startup is called
|
2986 |
+
if (!this.require) {this.require = []}
|
2987 |
+
else if (!BASE.Object.isArray(this.require)) {this.require = [this.require]};
|
2988 |
+
this.require.push(BASE.ElementJax.directory+"/"+(mimetype.split(/\//)[1])+"/"+this.JAXFILE);
|
2989 |
+
},
|
2990 |
+
Remove: function (jax) {}
|
2991 |
+
},{
|
2992 |
+
id: "OutputJax",
|
2993 |
+
version: "2.7.5",
|
2994 |
+
directory: JAX.directory+"/output",
|
2995 |
+
extensionDir: JAX.extensionDir,
|
2996 |
+
fontDir: ROOT+(BASE.isPacked?"":"/..")+"/fonts",
|
2997 |
+
imageDir: ROOT+(BASE.isPacked?"":"/..")+"/images"
|
2998 |
+
});
|
2999 |
+
|
3000 |
+
/***********************************/
|
3001 |
+
|
3002 |
+
BASE.ElementJax = JAX.Subclass({
|
3003 |
+
// make a subclass, not an instance
|
3004 |
+
Init: function (def,cdef) {return this.constructor.Subclass(def,cdef)},
|
3005 |
+
|
3006 |
+
inputJax: null,
|
3007 |
+
outputJax: null,
|
3008 |
+
inputID: null,
|
3009 |
+
originalText: "",
|
3010 |
+
mimeType: "",
|
3011 |
+
sourceMenuTitle: /*_(MathMenu)*/ ["MathMLcode","MathML Code"],
|
3012 |
+
|
3013 |
+
Text: function (text,callback) {
|
3014 |
+
var script = this.SourceElement();
|
3015 |
+
BASE.HTML.setScript(script,text);
|
3016 |
+
script.MathJax.state = this.STATE.UPDATE;
|
3017 |
+
return HUB.Update(script,callback);
|
3018 |
+
},
|
3019 |
+
Reprocess: function (callback) {
|
3020 |
+
var script = this.SourceElement();
|
3021 |
+
script.MathJax.state = this.STATE.UPDATE;
|
3022 |
+
return HUB.Reprocess(script,callback);
|
3023 |
+
},
|
3024 |
+
Update: function (callback) {return this.Rerender(callback)},
|
3025 |
+
Rerender: function (callback) {
|
3026 |
+
var script = this.SourceElement();
|
3027 |
+
script.MathJax.state = this.STATE.OUTPUT;
|
3028 |
+
return HUB.Process(script,callback);
|
3029 |
+
},
|
3030 |
+
Remove: function (keep) {
|
3031 |
+
if (this.hover) {this.hover.clear(this)}
|
3032 |
+
BASE.OutputJax[this.outputJax].Remove(this);
|
3033 |
+
if (!keep) {
|
3034 |
+
HUB.signal.Post(["Remove Math",this.inputID]); // wait for this to finish?
|
3035 |
+
this.Detach();
|
3036 |
+
}
|
3037 |
+
},
|
3038 |
+
needsUpdate: function () {
|
3039 |
+
return BASE.InputJax[this.inputJax].needsUpdate(this);
|
3040 |
+
},
|
3041 |
+
|
3042 |
+
SourceElement: function () {return document.getElementById(this.inputID)},
|
3043 |
+
|
3044 |
+
Attach: function (script,inputJax) {
|
3045 |
+
var jax = script.MathJax.elementJax;
|
3046 |
+
if (script.MathJax.state === this.STATE.UPDATE) {
|
3047 |
+
jax.Clone(this);
|
3048 |
+
} else {
|
3049 |
+
jax = script.MathJax.elementJax = this;
|
3050 |
+
if (script.id) {this.inputID = script.id}
|
3051 |
+
else {script.id = this.inputID = BASE.ElementJax.GetID(); this.newID = 1}
|
3052 |
+
}
|
3053 |
+
jax.originalText = BASE.HTML.getScript(script);
|
3054 |
+
jax.inputJax = inputJax;
|
3055 |
+
if (jax.root) {jax.root.inputID = jax.inputID}
|
3056 |
+
return jax;
|
3057 |
+
},
|
3058 |
+
Detach: function () {
|
3059 |
+
var script = this.SourceElement(); if (!script) return;
|
3060 |
+
try {delete script.MathJax} catch(err) {script.MathJax = null}
|
3061 |
+
if (this.newID) {script.id = ""}
|
3062 |
+
},
|
3063 |
+
Clone: function (jax) {
|
3064 |
+
var id;
|
3065 |
+
for (id in this) {
|
3066 |
+
if (!this.hasOwnProperty(id)) continue;
|
3067 |
+
if (typeof(jax[id]) === 'undefined' && id !== 'newID') {delete this[id]}
|
3068 |
+
}
|
3069 |
+
for (id in jax) {
|
3070 |
+
if (!jax.hasOwnProperty(id)) continue;
|
3071 |
+
if (typeof(this[id]) === 'undefined' || (this[id] !== jax[id] && id !== 'inputID'))
|
3072 |
+
{this[id] = jax[id]}
|
3073 |
+
}
|
3074 |
+
}
|
3075 |
+
},{
|
3076 |
+
id: "ElementJax",
|
3077 |
+
version: "2.7.5",
|
3078 |
+
directory: JAX.directory+"/element",
|
3079 |
+
extensionDir: JAX.extensionDir,
|
3080 |
+
ID: 0, // jax counter (for IDs)
|
3081 |
+
STATE: {
|
3082 |
+
PENDING: 1, // script is identified as math but not yet processed
|
3083 |
+
PROCESSED: 2, // script has been processed
|
3084 |
+
UPDATE: 3, // elementJax should be updated
|
3085 |
+
OUTPUT: 4 // output should be updated (input is OK)
|
3086 |
+
},
|
3087 |
+
|
3088 |
+
GetID: function () {this.ID++; return "MathJax-Element-"+this.ID},
|
3089 |
+
Subclass: function () {
|
3090 |
+
var obj = JAX.Subclass.apply(this,arguments);
|
3091 |
+
obj.loadComplete = this.prototype.loadComplete;
|
3092 |
+
return obj;
|
3093 |
+
}
|
3094 |
+
});
|
3095 |
+
BASE.ElementJax.prototype.STATE = BASE.ElementJax.STATE;
|
3096 |
+
|
3097 |
+
//
|
3098 |
+
// Some "Fake" jax used to allow menu access for "Math Processing Error" messages
|
3099 |
+
//
|
3100 |
+
BASE.OutputJax.Error = {
|
3101 |
+
id: "Error", version: "2.7.5", config: {}, errors: 0,
|
3102 |
+
ContextMenu: function () {return BASE.Extension.MathEvents.Event.ContextMenu.apply(BASE.Extension.MathEvents.Event,arguments)},
|
3103 |
+
Mousedown: function () {return BASE.Extension.MathEvents.Event.AltContextMenu.apply(BASE.Extension.MathEvents.Event,arguments)},
|
3104 |
+
getJaxFromMath: function (math) {return (math.nextSibling.MathJax||{}).error},
|
3105 |
+
Jax: function (text,script) {
|
3106 |
+
var jax = MathJax.Hub.inputJax[script.type.replace(/ *;(.|\s)*/,"")];
|
3107 |
+
this.errors++;
|
3108 |
+
return {
|
3109 |
+
inputJax: (jax||{id:"Error"}).id, // Use Error InputJax as fallback
|
3110 |
+
outputJax: "Error",
|
3111 |
+
inputID: "MathJax-Error-"+this.errors,
|
3112 |
+
sourceMenuTitle: /*_(MathMenu)*/ ["ErrorMessage","Error Message"],
|
3113 |
+
sourceMenuFormat: "Error",
|
3114 |
+
originalText: MathJax.HTML.getScript(script),
|
3115 |
+
errorText: text
|
3116 |
+
}
|
3117 |
+
}
|
3118 |
+
};
|
3119 |
+
BASE.InputJax.Error = {
|
3120 |
+
id: "Error", version: "2.7.5", config: {},
|
3121 |
+
sourceMenuTitle: /*_(MathMenu)*/ ["Original","Original Form"]
|
3122 |
+
};
|
3123 |
+
|
3124 |
+
})("MathJax");
|
3125 |
+
|
3126 |
+
/**********************************************************/
|
3127 |
+
|
3128 |
+
(function (BASENAME) {
|
3129 |
+
var BASE = window[BASENAME];
|
3130 |
+
if (!BASE) {BASE = window[BASENAME] = {}}
|
3131 |
+
|
3132 |
+
var HUB = BASE.Hub; var STARTUP = HUB.Startup; var CONFIG = HUB.config;
|
3133 |
+
var HEAD = document.head || (document.getElementsByTagName("head")[0]);
|
3134 |
+
if (!HEAD) {HEAD = document.childNodes[0]};
|
3135 |
+
var scripts = (document.documentElement || document).getElementsByTagName("script");
|
3136 |
+
if (scripts.length === 0 && HEAD.namespaceURI)
|
3137 |
+
scripts = document.getElementsByTagNameNS(HEAD.namespaceURI,"script");
|
3138 |
+
var namePattern = new RegExp("(^|/)"+BASENAME+"\\.js(\\?.*)?$");
|
3139 |
+
for (var i = scripts.length-1; i >= 0; i--) {
|
3140 |
+
if ((scripts[i].src||"").match(namePattern)) {
|
3141 |
+
STARTUP.script = scripts[i].innerHTML;
|
3142 |
+
if (RegExp.$2) {
|
3143 |
+
var params = RegExp.$2.substr(1).split(/\&/);
|
3144 |
+
for (var j = 0, m = params.length; j < m; j++) {
|
3145 |
+
var KV = params[j].match(/(.*)=(.*)/);
|
3146 |
+
if (KV) {STARTUP.params[unescape(KV[1])] = unescape(KV[2])}
|
3147 |
+
else {STARTUP.params[params[j]] = true}
|
3148 |
+
}
|
3149 |
+
}
|
3150 |
+
CONFIG.root = scripts[i].src.replace(/(^|\/)[^\/]*(\?.*)?$/,'');
|
3151 |
+
BASE.Ajax.config.root = CONFIG.root;
|
3152 |
+
BASE.Ajax.params = STARTUP.params;
|
3153 |
+
break;
|
3154 |
+
}
|
3155 |
+
}
|
3156 |
+
|
3157 |
+
var AGENT = navigator.userAgent;
|
3158 |
+
var BROWSERS = {
|
3159 |
+
isMac: (navigator.platform.substr(0,3) === "Mac"),
|
3160 |
+
isPC: (navigator.platform.substr(0,3) === "Win"),
|
3161 |
+
isMSIE: ("ActiveXObject" in window && "clipboardData" in window),
|
3162 |
+
isEdge: ("MSGestureEvent" in window && "chrome" in window &&
|
3163 |
+
window.chrome.loadTimes == null),
|
3164 |
+
isFirefox: (!!AGENT.match(/Gecko\//) && !AGENT.match(/like Gecko/)),
|
3165 |
+
isSafari: (!!AGENT.match(/ (Apple)?WebKit\//) && !AGENT.match(/ like iPhone /) &&
|
3166 |
+
(!window.chrome || window.chrome.app == null)),
|
3167 |
+
isChrome: ("chrome" in window && window.chrome.loadTimes != null),
|
3168 |
+
isOpera: ("opera" in window && window.opera.version != null),
|
3169 |
+
isKonqueror: ("konqueror" in window && navigator.vendor == "KDE"),
|
3170 |
+
versionAtLeast: function (v) {
|
3171 |
+
var bv = (this.version).split('.'); v = (new String(v)).split('.');
|
3172 |
+
for (var i = 0, m = v.length; i < m; i++)
|
3173 |
+
{if (bv[i] != v[i]) {return parseInt(bv[i]||"0") >= parseInt(v[i])}}
|
3174 |
+
return true;
|
3175 |
+
},
|
3176 |
+
Select: function (choices) {
|
3177 |
+
var browser = choices[HUB.Browser];
|
3178 |
+
if (browser) {return browser(HUB.Browser)}
|
3179 |
+
return null;
|
3180 |
+
}
|
3181 |
+
};
|
3182 |
+
|
3183 |
+
var xAGENT = AGENT
|
3184 |
+
.replace(/^Mozilla\/(\d+\.)+\d+ /,"") // remove initial Mozilla, which is never right
|
3185 |
+
.replace(/[a-z][-a-z0-9._: ]+\/\d+[^ ]*-[^ ]*\.([a-z][a-z])?\d+ /i,"") // remove linux version
|
3186 |
+
.replace(/Gentoo |Ubuntu\/(\d+\.)*\d+ (\([^)]*\) )?/,""); // special case for these
|
3187 |
+
|
3188 |
+
HUB.Browser = HUB.Insert(HUB.Insert(new String("Unknown"),{version: "0.0"}),BROWSERS);
|
3189 |
+
for (var browser in BROWSERS) {if (BROWSERS.hasOwnProperty(browser)) {
|
3190 |
+
if (BROWSERS[browser] && browser.substr(0,2) === "is") {
|
3191 |
+
browser = browser.slice(2);
|
3192 |
+
if (browser === "Mac" || browser === "PC") continue;
|
3193 |
+
HUB.Browser = HUB.Insert(new String(browser),BROWSERS);
|
3194 |
+
var VERSION = new RegExp(
|
3195 |
+
".*(Version/| Trident/.*; rv:)((?:\\d+\\.)+\\d+)|" + // for Safari, Opera10, and IE11+
|
3196 |
+
".*("+browser+")"+(browser == "MSIE" ? " " : "/")+"((?:\\d+\\.)*\\d+)|"+ // for one of the main browsers
|
3197 |
+
"(?:^|\\(| )([a-z][-a-z0-9._: ]+|(?:Apple)?WebKit)/((?:\\d+\\.)+\\d+)"); // for unrecognized browser
|
3198 |
+
var MATCH = VERSION.exec(xAGENT) || ["","","","unknown","0.0"];
|
3199 |
+
HUB.Browser.name = (MATCH[1] != "" ? browser : (MATCH[3] || MATCH[5]));
|
3200 |
+
HUB.Browser.version = MATCH[2] || MATCH[4] || MATCH[6];
|
3201 |
+
break;
|
3202 |
+
}
|
3203 |
+
}};
|
3204 |
+
|
3205 |
+
//
|
3206 |
+
// Initial browser-specific info (e.g., touch up version or name, check for MathPlayer, etc.)
|
3207 |
+
// Wrap in try/catch just in case of error (see issue #1155).
|
3208 |
+
//
|
3209 |
+
try {HUB.Browser.Select({
|
3210 |
+
Safari: function (browser) {
|
3211 |
+
var v = parseInt((String(browser.version).split("."))[0]);
|
3212 |
+
if (v > 85) {browser.webkit = browser.version}
|
3213 |
+
if (v >= 538) {browser.version = "8.0"}
|
3214 |
+
else if (v >= 537) {browser.version = "7.0"}
|
3215 |
+
else if (v >= 536) {browser.version = "6.0"}
|
3216 |
+
else if (v >= 534) {browser.version = "5.1"}
|
3217 |
+
else if (v >= 533) {browser.version = "5.0"}
|
3218 |
+
else if (v >= 526) {browser.version = "4.0"}
|
3219 |
+
else if (v >= 525) {browser.version = "3.1"}
|
3220 |
+
else if (v > 500) {browser.version = "3.0"}
|
3221 |
+
else if (v > 400) {browser.version = "2.0"}
|
3222 |
+
else if (v > 85) {browser.version = "1.0"}
|
3223 |
+
browser.webkit = (navigator.appVersion.match(/WebKit\/(\d+)\./))[1];
|
3224 |
+
browser.isMobile = (navigator.appVersion.match(/Mobile/i) != null);
|
3225 |
+
browser.noContextMenu = browser.isMobile;
|
3226 |
+
},
|
3227 |
+
Firefox: function (browser) {
|
3228 |
+
if ((browser.version === "0.0" || AGENT.match(/Firefox/) == null) &&
|
3229 |
+
navigator.product === "Gecko") {
|
3230 |
+
var rv = AGENT.match(/[\/ ]rv:(\d+\.\d.*?)[\) ]/);
|
3231 |
+
if (rv) {browser.version = rv[1]}
|
3232 |
+
else {
|
3233 |
+
var date = (navigator.buildID||navigator.productSub||"0").substr(0,8);
|
3234 |
+
if (date >= "20111220") {browser.version = "9.0"}
|
3235 |
+
else if (date >= "20111120") {browser.version = "8.0"}
|
3236 |
+
else if (date >= "20110927") {browser.version = "7.0"}
|
3237 |
+
else if (date >= "20110816") {browser.version = "6.0"}
|
3238 |
+
else if (date >= "20110621") {browser.version = "5.0"}
|
3239 |
+
else if (date >= "20110320") {browser.version = "4.0"}
|
3240 |
+
else if (date >= "20100121") {browser.version = "3.6"}
|
3241 |
+
else if (date >= "20090630") {browser.version = "3.5"}
|
3242 |
+
else if (date >= "20080617") {browser.version = "3.0"}
|
3243 |
+
else if (date >= "20061024") {browser.version = "2.0"}
|
3244 |
+
}
|
3245 |
+
}
|
3246 |
+
browser.isMobile = (navigator.appVersion.match(/Android/i) != null ||
|
3247 |
+
AGENT.match(/ Fennec\//) != null ||
|
3248 |
+
AGENT.match(/Mobile/) != null);
|
3249 |
+
},
|
3250 |
+
Chrome: function (browser) {
|
3251 |
+
browser.noContextMenu = browser.isMobile = !!navigator.userAgent.match(/ Mobile[ \/]/);
|
3252 |
+
},
|
3253 |
+
Opera: function (browser) {browser.version = opera.version()},
|
3254 |
+
Edge: function (browser) {
|
3255 |
+
browser.isMobile = !!navigator.userAgent.match(/ Phone/);
|
3256 |
+
},
|
3257 |
+
MSIE: function (browser) {
|
3258 |
+
browser.isMobile = !!navigator.userAgent.match(/ Phone/);
|
3259 |
+
browser.isIE9 = !!(document.documentMode && (window.performance || window.msPerformance));
|
3260 |
+
MathJax.HTML.setScriptBug = !browser.isIE9 || document.documentMode < 9;
|
3261 |
+
MathJax.Hub.msieHTMLCollectionBug = (document.documentMode < 9);
|
3262 |
+
//
|
3263 |
+
// MathPlayer doesn't function properly in IE10, and not at all in IE11,
|
3264 |
+
// so don't even try to load it.
|
3265 |
+
//
|
3266 |
+
if (document.documentMode < 10 && !STARTUP.params.NoMathPlayer) {
|
3267 |
+
try {
|
3268 |
+
new ActiveXObject("MathPlayer.Factory.1");
|
3269 |
+
browser.hasMathPlayer = true;
|
3270 |
+
} catch (err) {}
|
3271 |
+
try {
|
3272 |
+
if (browser.hasMathPlayer) {
|
3273 |
+
var mathplayer = document.createElement("object");
|
3274 |
+
mathplayer.id = "mathplayer"; mathplayer.classid = "clsid:32F66A20-7614-11D4-BD11-00104BD3F987";
|
3275 |
+
HEAD.appendChild(mathplayer);
|
3276 |
+
document.namespaces.add("m","http://www.w3.org/1998/Math/MathML");
|
3277 |
+
browser.mpNamespace = true;
|
3278 |
+
if (document.readyState && (document.readyState === "loading" ||
|
3279 |
+
document.readyState === "interactive")) {
|
3280 |
+
document.write('<?import namespace="m" implementation="#MathPlayer">');
|
3281 |
+
browser.mpImported = true;
|
3282 |
+
}
|
3283 |
+
} else {
|
3284 |
+
// Adding any namespace avoids a crash in IE9 in IE9-standards mode
|
3285 |
+
// (any reference to document.namespaces before document.readyState is
|
3286 |
+
// "complete" causes an "unspecified error" to be thrown)
|
3287 |
+
document.namespaces.add("mjx_IE_fix","http://www.w3.org/1999/xlink");
|
3288 |
+
}
|
3289 |
+
} catch (err) {}
|
3290 |
+
}
|
3291 |
+
}
|
3292 |
+
});} catch (err) {
|
3293 |
+
console.error(err.message);
|
3294 |
+
}
|
3295 |
+
HUB.Browser.Select(MathJax.Message.browsers);
|
3296 |
+
|
3297 |
+
if (BASE.AuthorConfig && typeof BASE.AuthorConfig.AuthorInit === "function") {BASE.AuthorConfig.AuthorInit()}
|
3298 |
+
HUB.queue = BASE.Callback.Queue();
|
3299 |
+
HUB.queue.Push(
|
3300 |
+
["Post",STARTUP.signal,"Begin"],
|
3301 |
+
["Config",STARTUP],
|
3302 |
+
["Cookie",STARTUP],
|
3303 |
+
["Styles",STARTUP],
|
3304 |
+
["Message",STARTUP],
|
3305 |
+
function () {
|
3306 |
+
// Do Jax and Extensions in parallel, but wait for them all to complete
|
3307 |
+
var queue = BASE.Callback.Queue(
|
3308 |
+
STARTUP.Jax(),
|
3309 |
+
STARTUP.Extensions()
|
3310 |
+
);
|
3311 |
+
return queue.Push({});
|
3312 |
+
},
|
3313 |
+
["Menu",STARTUP],
|
3314 |
+
STARTUP.onLoad(),
|
3315 |
+
function () {MathJax.isReady = true}, // indicates that MathJax is ready to process math
|
3316 |
+
["Typeset",STARTUP],
|
3317 |
+
["Hash",STARTUP],
|
3318 |
+
["MenuZoom",STARTUP],
|
3319 |
+
["Post",STARTUP.signal,"End"]
|
3320 |
+
);
|
3321 |
+
|
3322 |
+
})("MathJax");
|
3323 |
+
|
3324 |
+
}}
|
vendor/MathJax/config/AM_CHTML-full.js
ADDED
@@ -0,0 +1,21 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* /MathJax/unpacked/config/AM_CHTML-full.js
|
4 |
+
*
|
5 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
6 |
+
*
|
7 |
+
* Part of the MathJax library.
|
8 |
+
* See http://www.mathjax.org for details.
|
9 |
+
*
|
10 |
+
* Licensed under the Apache License, Version 2.0;
|
11 |
+
* you may not use this file except in compliance with the License.
|
12 |
+
*
|
13 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
MathJax.Hub.Config({
|
17 |
+
extensions: ["asciimath2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js","fast-preview.js","AssistiveMML.js","[a11y]/accessibility-menu.js"],
|
18 |
+
jax: ["input/AsciiMath","output/CommonHTML","output/PreviewHTML"]
|
19 |
+
});
|
20 |
+
|
21 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/AM_CHTML-full.js");
|
vendor/MathJax/config/AM_CHTML.js
ADDED
@@ -0,0 +1,21 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* /MathJax/unpacked/config/AM_CHTML.js
|
4 |
+
*
|
5 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
6 |
+
*
|
7 |
+
* Part of the MathJax library.
|
8 |
+
* See http://www.mathjax.org for details.
|
9 |
+
*
|
10 |
+
* Licensed under the Apache License, Version 2.0;
|
11 |
+
* you may not use this file except in compliance with the License.
|
12 |
+
*
|
13 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
MathJax.Hub.Config({
|
17 |
+
extensions: ["asciimath2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js","fast-preview.js","AssistiveMML.js","[a11y]/accessibility-menu.js"],
|
18 |
+
jax: ["input/AsciiMath","output/CommonHTML","output/PreviewHTML"]
|
19 |
+
});
|
20 |
+
|
21 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/AM_CHTML.js");
|
vendor/MathJax/config/AM_HTMLorMML-full.js
ADDED
@@ -0,0 +1,22 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* /MathJax/unpacked/config/AM_HTMLorMML-full.js
|
4 |
+
*
|
5 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
6 |
+
*
|
7 |
+
* Part of the MathJax library.
|
8 |
+
* See http://www.mathjax.org for details.
|
9 |
+
*
|
10 |
+
* Licensed under the Apache License, Version 2.0;
|
11 |
+
* you may not use this file except in compliance with the License.
|
12 |
+
*
|
13 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
MathJax.Hub.Config({
|
17 |
+
config: ["MMLorHTML.js"],
|
18 |
+
extensions: ["asciimath2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js","fast-preview.js","AssistiveMML.js","[a11y]/accessibility-menu.js"],
|
19 |
+
jax: ["input/AsciiMath","output/HTML-CSS","output/NativeMML","output/PreviewHTML"]
|
20 |
+
});
|
21 |
+
|
22 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/AM_HTMLorMML-full.js");
|
vendor/MathJax/config/AM_HTMLorMML.js
ADDED
@@ -0,0 +1,22 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* /MathJax/unpacked/config/AM_HTMLorMML.js
|
4 |
+
*
|
5 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
6 |
+
*
|
7 |
+
* Part of the MathJax library.
|
8 |
+
* See http://www.mathjax.org for details.
|
9 |
+
*
|
10 |
+
* Licensed under the Apache License, Version 2.0;
|
11 |
+
* you may not use this file except in compliance with the License.
|
12 |
+
*
|
13 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
MathJax.Hub.Config({
|
17 |
+
config: ["MMLorHTML.js"],
|
18 |
+
extensions: ["asciimath2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js","fast-preview.js","AssistiveMML.js","[a11y]/accessibility-menu.js"],
|
19 |
+
jax: ["input/AsciiMath","output/HTML-CSS","output/NativeMML","output/PreviewHTML"]
|
20 |
+
});
|
21 |
+
|
22 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/AM_HTMLorMML.js");
|
vendor/MathJax/config/AM_SVG-full.js
ADDED
@@ -0,0 +1,21 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* /MathJax/unpacked/config/AM_SVG-full.js
|
4 |
+
*
|
5 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
6 |
+
*
|
7 |
+
* Part of the MathJax library.
|
8 |
+
* See http://www.mathjax.org for details.
|
9 |
+
*
|
10 |
+
* Licensed under the Apache License, Version 2.0;
|
11 |
+
* you may not use this file except in compliance with the License.
|
12 |
+
*
|
13 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
MathJax.Hub.Config({
|
17 |
+
extensions: ["asciimath2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js","fast-preview.js","AssistiveMML.js","[a11y]/accessibility-menu.js"],
|
18 |
+
jax: ["input/AsciiMath","output/SVG","output/PreviewHTML"]
|
19 |
+
});
|
20 |
+
|
21 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/AM_SVG-full.js");
|
vendor/MathJax/config/AM_SVG.js
ADDED
@@ -0,0 +1,21 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* /MathJax/unpacked/config/AM_SVG.js
|
4 |
+
*
|
5 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
6 |
+
*
|
7 |
+
* Part of the MathJax library.
|
8 |
+
* See http://www.mathjax.org for details.
|
9 |
+
*
|
10 |
+
* Licensed under the Apache License, Version 2.0;
|
11 |
+
* you may not use this file except in compliance with the License.
|
12 |
+
*
|
13 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
MathJax.Hub.Config({
|
17 |
+
extensions: ["asciimath2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js","fast-preview.js","AssistiveMML.js","[a11y]/accessibility-menu.js"],
|
18 |
+
jax: ["input/AsciiMath","output/SVG","output/PreviewHTML"]
|
19 |
+
});
|
20 |
+
|
21 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/AM_SVG.js");
|
vendor/MathJax/config/Accessible-full.js
ADDED
@@ -0,0 +1,30 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* /MathJax/unpacked/config/Accessible-full.js
|
4 |
+
*
|
5 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
6 |
+
*
|
7 |
+
* Part of the MathJax library.
|
8 |
+
* See http://www.mathjax.org for details.
|
9 |
+
*
|
10 |
+
* Licensed under the Apache License, Version 2.0;
|
11 |
+
* you may not use this file except in compliance with the License.
|
12 |
+
*
|
13 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
MathJax.Hub.Config({
|
17 |
+
config: ["MMLorHTML.js"],
|
18 |
+
extensions: ["tex2jax.js","mml2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js","TeX/noErrors.js","TeX/noUndefined.js","TeX/AMSmath.js","TeX/AMSsymbols.js","fast-preview.js","AssistiveMML.js","[a11y]/accessibility-menu.js"],
|
19 |
+
jax: ["input/TeX","input/MathML","output/HTML-CSS","output/NativeMML","output/PreviewHTML"],
|
20 |
+
menuSettings: {
|
21 |
+
zoom: "Double-Click",
|
22 |
+
mpContext: true,
|
23 |
+
mpMouse: true
|
24 |
+
},
|
25 |
+
errorSettings: {
|
26 |
+
message: ["[",["MathError","Math Error"],"]"]
|
27 |
+
}
|
28 |
+
});
|
29 |
+
|
30 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/Accessible-full.js");
|
vendor/MathJax/config/Accessible.js
ADDED
@@ -0,0 +1,30 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* /MathJax/unpacked/config/Accessible.js
|
4 |
+
*
|
5 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
6 |
+
*
|
7 |
+
* Part of the MathJax library.
|
8 |
+
* See http://www.mathjax.org for details.
|
9 |
+
*
|
10 |
+
* Licensed under the Apache License, Version 2.0;
|
11 |
+
* you may not use this file except in compliance with the License.
|
12 |
+
*
|
13 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
MathJax.Hub.Config({
|
17 |
+
config: ["MMLorHTML.js"],
|
18 |
+
extensions: ["tex2jax.js","mml2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js","TeX/noErrors.js","TeX/noUndefined.js","TeX/AMSmath.js","TeX/AMSsymbols.js","fast-preview.js","AssistiveMML.js","[a11y]/accessibility-menu.js"],
|
19 |
+
jax: ["input/TeX","input/MathML","output/HTML-CSS","output/NativeMML","output/PreviewHTML"],
|
20 |
+
menuSettings: {
|
21 |
+
zoom: "Double-Click",
|
22 |
+
mpContext: true,
|
23 |
+
mpMouse: true
|
24 |
+
},
|
25 |
+
errorSettings: {
|
26 |
+
message: ["[",["MathError","Math Error"],"]"]
|
27 |
+
}
|
28 |
+
});
|
29 |
+
|
30 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/Accessible.js");
|
vendor/MathJax/config/MML_CHTML-full.js
ADDED
@@ -0,0 +1,21 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* /MathJax/unpacked/config/MML_CHTML-full.js
|
4 |
+
*
|
5 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
6 |
+
*
|
7 |
+
* Part of the MathJax library.
|
8 |
+
* See http://www.mathjax.org for details.
|
9 |
+
*
|
10 |
+
* Licensed under the Apache License, Version 2.0;
|
11 |
+
* you may not use this file except in compliance with the License.
|
12 |
+
*
|
13 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
MathJax.Hub.Config({
|
17 |
+
extensions: ["mml2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js","fast-preview.js","AssistiveMML.js","[a11y]/accessibility-menu.js"],
|
18 |
+
jax: ["input/MathML","output/CommonHTML","output/PreviewHTML"]
|
19 |
+
});
|
20 |
+
|
21 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/MML_CHTML-full.js");
|
vendor/MathJax/config/MML_CHTML.js
ADDED
@@ -0,0 +1,21 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* /MathJax/unpacked/config/MML_CHTML.js
|
4 |
+
*
|
5 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
6 |
+
*
|
7 |
+
* Part of the MathJax library.
|
8 |
+
* See http://www.mathjax.org for details.
|
9 |
+
*
|
10 |
+
* Licensed under the Apache License, Version 2.0;
|
11 |
+
* you may not use this file except in compliance with the License.
|
12 |
+
*
|
13 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
MathJax.Hub.Config({
|
17 |
+
extensions: ["mml2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js","fast-preview.js","AssistiveMML.js","[a11y]/accessibility-menu.js"],
|
18 |
+
jax: ["input/MathML","output/CommonHTML","output/PreviewHTML"]
|
19 |
+
});
|
20 |
+
|
21 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/MML_CHTML.js");
|
vendor/MathJax/config/MML_HTMLorMML-full.js
ADDED
@@ -0,0 +1,22 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* /MathJax/unpacked/config/MML_HTMLorMML-full.js
|
4 |
+
*
|
5 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
6 |
+
*
|
7 |
+
* Part of the MathJax library.
|
8 |
+
* See http://www.mathjax.org for details.
|
9 |
+
*
|
10 |
+
* Licensed under the Apache License, Version 2.0;
|
11 |
+
* you may not use this file except in compliance with the License.
|
12 |
+
*
|
13 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
MathJax.Hub.Config({
|
17 |
+
config: ["MMLorHTML.js"],
|
18 |
+
extensions: ["mml2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js","fast-preview.js","AssistiveMML.js","[a11y]/accessibility-menu.js"],
|
19 |
+
jax: ["input/MathML","output/HTML-CSS","output/NativeMML","output/PreviewHTML"]
|
20 |
+
});
|
21 |
+
|
22 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/MML_HTMLorMML-full.js");
|
vendor/MathJax/config/MML_HTMLorMML.js
ADDED
@@ -0,0 +1,22 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* /MathJax/unpacked/config/MML_HTMLorMML.js
|
4 |
+
*
|
5 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
6 |
+
*
|
7 |
+
* Part of the MathJax library.
|
8 |
+
* See http://www.mathjax.org for details.
|
9 |
+
*
|
10 |
+
* Licensed under the Apache License, Version 2.0;
|
11 |
+
* you may not use this file except in compliance with the License.
|
12 |
+
*
|
13 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
MathJax.Hub.Config({
|
17 |
+
config: ["MMLorHTML.js"],
|
18 |
+
extensions: ["mml2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js","fast-preview.js","AssistiveMML.js","[a11y]/accessibility-menu.js"],
|
19 |
+
jax: ["input/MathML","output/HTML-CSS","output/NativeMML","output/PreviewHTML"]
|
20 |
+
});
|
21 |
+
|
22 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/MML_HTMLorMML.js");
|
vendor/MathJax/config/MML_SVG-full.js
ADDED
@@ -0,0 +1,21 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* /MathJax/unpacked/config/MML_SVG-full.js
|
4 |
+
*
|
5 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
6 |
+
*
|
7 |
+
* Part of the MathJax library.
|
8 |
+
* See http://www.mathjax.org for details.
|
9 |
+
*
|
10 |
+
* Licensed under the Apache License, Version 2.0;
|
11 |
+
* you may not use this file except in compliance with the License.
|
12 |
+
*
|
13 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
MathJax.Hub.Config({
|
17 |
+
extensions: ["mml2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js","fast-preview.js","AssistiveMML.js","[a11y]/accessibility-menu.js"],
|
18 |
+
jax: ["input/MathML","output/SVG","output/PreviewHTML"]
|
19 |
+
});
|
20 |
+
|
21 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/MML_SVG-full.js");
|
vendor/MathJax/config/MML_SVG.js
ADDED
@@ -0,0 +1,21 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* /MathJax/unpacked/config/MML_SVG.js
|
4 |
+
*
|
5 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
6 |
+
*
|
7 |
+
* Part of the MathJax library.
|
8 |
+
* See http://www.mathjax.org for details.
|
9 |
+
*
|
10 |
+
* Licensed under the Apache License, Version 2.0;
|
11 |
+
* you may not use this file except in compliance with the License.
|
12 |
+
*
|
13 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
MathJax.Hub.Config({
|
17 |
+
extensions: ["mml2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js","fast-preview.js","AssistiveMML.js","[a11y]/accessibility-menu.js"],
|
18 |
+
jax: ["input/MathML","output/SVG","output/PreviewHTML"]
|
19 |
+
});
|
20 |
+
|
21 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/MML_SVG.js");
|
vendor/MathJax/config/MMLorHTML.js
ADDED
@@ -0,0 +1,111 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax/config/MMLorHTML.js
|
7 |
+
*
|
8 |
+
* Chooses between the NativeMML and HTML-CSS output jax depending
|
9 |
+
* on the capabilities of the browser and configuration settings
|
10 |
+
* of the page.
|
11 |
+
*
|
12 |
+
* This file should be added to the config array when configuring
|
13 |
+
* MathJax. Note that if you include this, you should NOT include
|
14 |
+
* an output jax in the jax array (it will be added for you by
|
15 |
+
* this file).
|
16 |
+
*
|
17 |
+
* You can specify the preferred output jax on a global or
|
18 |
+
* browser-by-browser basis. To specify it globally, use
|
19 |
+
*
|
20 |
+
* MathJax.Hub.Config({
|
21 |
+
* MMLorHTML: {prefer: "MML"} // or "HTML"
|
22 |
+
* });
|
23 |
+
*
|
24 |
+
* To specify on a browser-by-borwser basis, use
|
25 |
+
*
|
26 |
+
* MathJax.Hub.Config({
|
27 |
+
* MMLorHTML: {prefer: {
|
28 |
+
* MSIE: "MML",
|
29 |
+
* Firefox: "MML",
|
30 |
+
* Opera: "HTML",
|
31 |
+
* other: "HTML"
|
32 |
+
* }}
|
33 |
+
* });
|
34 |
+
*
|
35 |
+
* ---------------------------------------------------------------------
|
36 |
+
*
|
37 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
38 |
+
*
|
39 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
40 |
+
* you may not use this file except in compliance with the License.
|
41 |
+
* You may obtain a copy of the License at
|
42 |
+
*
|
43 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
44 |
+
*
|
45 |
+
* Unless required by applicable law or agreed to in writing, software
|
46 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
47 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
48 |
+
* See the License for the specific language governing permissions and
|
49 |
+
* limitations under the License.
|
50 |
+
*/
|
51 |
+
|
52 |
+
(function (HUB,BROWSER) {
|
53 |
+
var VERSION = "2.7.0";
|
54 |
+
|
55 |
+
var CONFIG = MathJax.Hub.CombineConfig("MMLorHTML",{
|
56 |
+
prefer: {
|
57 |
+
MSIE:"MML",
|
58 |
+
Firefox:"HTML",
|
59 |
+
Opera:"HTML",
|
60 |
+
Chrome:"HTML",
|
61 |
+
Safari:"HTML",
|
62 |
+
other:"HTML"
|
63 |
+
}
|
64 |
+
});
|
65 |
+
|
66 |
+
var MINBROWSERVERSION = {
|
67 |
+
Firefox: 3.0,
|
68 |
+
Opera: 9.52,
|
69 |
+
MSIE: 6.0,
|
70 |
+
Chrome: 0.3,
|
71 |
+
Safari: 2.0,
|
72 |
+
Konqueror: 4.0
|
73 |
+
};
|
74 |
+
|
75 |
+
var canUseHTML = (BROWSER.version === "0.0" ||
|
76 |
+
BROWSER.versionAtLeast(MINBROWSERVERSION[BROWSER]||0.0));
|
77 |
+
|
78 |
+
var canUseMML = (BROWSER.isFirefox && BROWSER.versionAtLeast("1.5")) ||
|
79 |
+
(BROWSER.isMSIE && BROWSER.hasMathPlayer) ||
|
80 |
+
(BROWSER.isSafari && BROWSER.versionAtLeast("5.0")) ||
|
81 |
+
(BROWSER.isOpera && BROWSER.versionAtLeast("9.52"));
|
82 |
+
|
83 |
+
HUB.Register.StartupHook("End Config",function () {
|
84 |
+
var prefer = (CONFIG.prefer && typeof(CONFIG.prefer) === "object" ?
|
85 |
+
CONFIG.prefer[MathJax.Hub.Browser]||CONFIG.prefer.other||"HTML" :
|
86 |
+
CONFIG.prefer);
|
87 |
+
|
88 |
+
if (canUseHTML || canUseMML) {
|
89 |
+
if (canUseMML && (prefer === "MML" || !canUseHTML)) {
|
90 |
+
if (MathJax.OutputJax.NativeMML) {MathJax.OutputJax.NativeMML.Register("jax/mml")}
|
91 |
+
else {HUB.config.jax.unshift("output/NativeMML")}
|
92 |
+
HUB.Startup.signal.Post("NativeMML output selected");
|
93 |
+
} else {
|
94 |
+
if (MathJax.OutputJax["HTML-CSS"]) {MathJax.OutputJax["HTML-CSS"].Register("jax/mml")}
|
95 |
+
else {HUB.config.jax.unshift("output/HTML-CSS")}
|
96 |
+
HUB.Startup.signal.Post("HTML-CSS output selected");
|
97 |
+
}
|
98 |
+
} else {
|
99 |
+
HUB.PreProcess.disabled = true;
|
100 |
+
HUB.prepareScripts.disabled = true;
|
101 |
+
MathJax.Message.Set(
|
102 |
+
["MathJaxNotSupported","Your browser does not support MathJax"],
|
103 |
+
null,4000
|
104 |
+
);
|
105 |
+
HUB.Startup.signal.Post("MathJax not supported");
|
106 |
+
}
|
107 |
+
});
|
108 |
+
|
109 |
+
})(MathJax.Hub,MathJax.Hub.Browser);
|
110 |
+
|
111 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/MMLorHTML.js");
|
vendor/MathJax/config/Safe.js
ADDED
@@ -0,0 +1,37 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax/config/Safe.js
|
7 |
+
*
|
8 |
+
* Allows you to load the Safe extension as part of the config list
|
9 |
+
* when you load MathJax.js, e.g.
|
10 |
+
*
|
11 |
+
* <script
|
12 |
+
* src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML,Safe">
|
13 |
+
* </script>
|
14 |
+
*
|
15 |
+
* ---------------------------------------------------------------------
|
16 |
+
*
|
17 |
+
* Copyright (c) 2013-2018 The MathJax Consortium
|
18 |
+
*
|
19 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
20 |
+
* you may not use this file except in compliance with the License.
|
21 |
+
* You may obtain a copy of the License at
|
22 |
+
*
|
23 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
24 |
+
*
|
25 |
+
* Unless required by applicable law or agreed to in writing, software
|
26 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
27 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
28 |
+
* See the License for the specific language governing permissions and
|
29 |
+
* limitations under the License.
|
30 |
+
*/
|
31 |
+
|
32 |
+
MathJax.Hub.Register.StartupHook("End Config", function () {
|
33 |
+
if (!MathJax.Hub.config.extensions) {MathJax.Hub.config.extensions = []}
|
34 |
+
MathJax.Hub.config.extensions.push("Safe.js");
|
35 |
+
});
|
36 |
+
|
37 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/Safe.js");
|
vendor/MathJax/config/TeX-AMS-MML_HTMLorMML-full.js
ADDED
@@ -0,0 +1,22 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* /MathJax/unpacked/config/TeX-AMS-MML_HTMLorMML-full.js
|
4 |
+
*
|
5 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
6 |
+
*
|
7 |
+
* Part of the MathJax library.
|
8 |
+
* See http://www.mathjax.org for details.
|
9 |
+
*
|
10 |
+
* Licensed under the Apache License, Version 2.0;
|
11 |
+
* you may not use this file except in compliance with the License.
|
12 |
+
*
|
13 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
MathJax.Hub.Config({
|
17 |
+
config: ["MMLorHTML.js"],
|
18 |
+
extensions: ["tex2jax.js","mml2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js","TeX/noErrors.js","TeX/noUndefined.js","TeX/AMSmath.js","TeX/AMSsymbols.js","fast-preview.js","AssistiveMML.js","[a11y]/accessibility-menu.js"],
|
19 |
+
jax: ["input/TeX","input/MathML","output/HTML-CSS","output/NativeMML","output/PreviewHTML"]
|
20 |
+
});
|
21 |
+
|
22 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/TeX-AMS-MML_HTMLorMML-full.js");
|
vendor/MathJax/config/TeX-AMS-MML_HTMLorMML.js
ADDED
@@ -0,0 +1,22 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* /MathJax/unpacked/config/TeX-AMS-MML_HTMLorMML.js
|
4 |
+
*
|
5 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
6 |
+
*
|
7 |
+
* Part of the MathJax library.
|
8 |
+
* See http://www.mathjax.org for details.
|
9 |
+
*
|
10 |
+
* Licensed under the Apache License, Version 2.0;
|
11 |
+
* you may not use this file except in compliance with the License.
|
12 |
+
*
|
13 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
MathJax.Hub.Config({
|
17 |
+
config: ["MMLorHTML.js"],
|
18 |
+
extensions: ["tex2jax.js","mml2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js","TeX/noErrors.js","TeX/noUndefined.js","TeX/AMSmath.js","TeX/AMSsymbols.js","fast-preview.js","AssistiveMML.js","[a11y]/accessibility-menu.js"],
|
19 |
+
jax: ["input/TeX","input/MathML","output/HTML-CSS","output/NativeMML","output/PreviewHTML"]
|
20 |
+
});
|
21 |
+
|
22 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/TeX-AMS-MML_HTMLorMML.js");
|
vendor/MathJax/config/TeX-AMS-MML_SVG-full.js
ADDED
@@ -0,0 +1,21 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* /MathJax/unpacked/config/TeX-AMS-MML_SVG-full.js
|
4 |
+
*
|
5 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
6 |
+
*
|
7 |
+
* Part of the MathJax library.
|
8 |
+
* See http://www.mathjax.org for details.
|
9 |
+
*
|
10 |
+
* Licensed under the Apache License, Version 2.0;
|
11 |
+
* you may not use this file except in compliance with the License.
|
12 |
+
*
|
13 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
MathJax.Hub.Config({
|
17 |
+
extensions: ["tex2jax.js","mml2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js","TeX/noErrors.js","TeX/noUndefined.js","TeX/AMSmath.js","TeX/AMSsymbols.js","fast-preview.js","AssistiveMML.js","[a11y]/accessibility-menu.js"],
|
18 |
+
jax: ["input/TeX","input/MathML","output/SVG","output/PreviewHTML"]
|
19 |
+
});
|
20 |
+
|
21 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/TeX-AMS-MML_SVG-full.js");
|
vendor/MathJax/config/TeX-AMS-MML_SVG.js
ADDED
@@ -0,0 +1,21 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* /MathJax/unpacked/config/TeX-AMS-MML_SVG.js
|
4 |
+
*
|
5 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
6 |
+
*
|
7 |
+
* Part of the MathJax library.
|
8 |
+
* See http://www.mathjax.org for details.
|
9 |
+
*
|
10 |
+
* Licensed under the Apache License, Version 2.0;
|
11 |
+
* you may not use this file except in compliance with the License.
|
12 |
+
*
|
13 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
MathJax.Hub.Config({
|
17 |
+
extensions: ["tex2jax.js","mml2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js","TeX/noErrors.js","TeX/noUndefined.js","TeX/AMSmath.js","TeX/AMSsymbols.js","fast-preview.js","AssistiveMML.js","[a11y]/accessibility-menu.js"],
|
18 |
+
jax: ["input/TeX","input/MathML","output/SVG","output/PreviewHTML"]
|
19 |
+
});
|
20 |
+
|
21 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/TeX-AMS-MML_SVG.js");
|
vendor/MathJax/config/TeX-AMS_CHTML-full.js
ADDED
@@ -0,0 +1,21 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* /MathJax/unpacked/config/TeX-AMS_CHTML-full.js
|
4 |
+
*
|
5 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
6 |
+
*
|
7 |
+
* Part of the MathJax library.
|
8 |
+
* See http://www.mathjax.org for details.
|
9 |
+
*
|
10 |
+
* Licensed under the Apache License, Version 2.0;
|
11 |
+
* you may not use this file except in compliance with the License.
|
12 |
+
*
|
13 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
MathJax.Hub.Config({
|
17 |
+
extensions: ["tex2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js","TeX/noErrors.js","TeX/noUndefined.js","TeX/AMSmath.js","TeX/AMSsymbols.js","fast-preview.js","AssistiveMML.js","[a11y]/accessibility-menu.js"],
|
18 |
+
jax: ["input/TeX","output/CommonHTML","output/PreviewHTML"]
|
19 |
+
});
|
20 |
+
|
21 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/TeX-AMS_CHTML-full.js");
|
vendor/MathJax/config/TeX-AMS_CHTML.js
ADDED
@@ -0,0 +1,21 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* /MathJax/unpacked/config/TeX-AMS_CHTML.js
|
4 |
+
*
|
5 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
6 |
+
*
|
7 |
+
* Part of the MathJax library.
|
8 |
+
* See http://www.mathjax.org for details.
|
9 |
+
*
|
10 |
+
* Licensed under the Apache License, Version 2.0;
|
11 |
+
* you may not use this file except in compliance with the License.
|
12 |
+
*
|
13 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
MathJax.Hub.Config({
|
17 |
+
extensions: ["tex2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js","TeX/noErrors.js","TeX/noUndefined.js","TeX/AMSmath.js","TeX/AMSsymbols.js","fast-preview.js","AssistiveMML.js","[a11y]/accessibility-menu.js"],
|
18 |
+
jax: ["input/TeX","output/CommonHTML","output/PreviewHTML"]
|
19 |
+
});
|
20 |
+
|
21 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/TeX-AMS_CHTML.js");
|
vendor/MathJax/config/TeX-AMS_HTML-full.js
ADDED
@@ -0,0 +1,21 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* /MathJax/unpacked/config/TeX-AMS_HTML-full.js
|
4 |
+
*
|
5 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
6 |
+
*
|
7 |
+
* Part of the MathJax library.
|
8 |
+
* See http://www.mathjax.org for details.
|
9 |
+
*
|
10 |
+
* Licensed under the Apache License, Version 2.0;
|
11 |
+
* you may not use this file except in compliance with the License.
|
12 |
+
*
|
13 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
MathJax.Hub.Config({
|
17 |
+
extensions: ["tex2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js","TeX/noErrors.js","TeX/noUndefined.js","TeX/AMSmath.js","TeX/AMSsymbols.js","fast-preview.js","AssistiveMML.js","[a11y]/accessibility-menu.js"],
|
18 |
+
jax: ["input/TeX","output/HTML-CSS","output/PreviewHTML"]
|
19 |
+
});
|
20 |
+
|
21 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/TeX-AMS_HTML-full.js");
|
vendor/MathJax/config/TeX-AMS_HTML.js
ADDED
@@ -0,0 +1,21 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* /MathJax/unpacked/config/TeX-AMS_HTML.js
|
4 |
+
*
|
5 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
6 |
+
*
|
7 |
+
* Part of the MathJax library.
|
8 |
+
* See http://www.mathjax.org for details.
|
9 |
+
*
|
10 |
+
* Licensed under the Apache License, Version 2.0;
|
11 |
+
* you may not use this file except in compliance with the License.
|
12 |
+
*
|
13 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
MathJax.Hub.Config({
|
17 |
+
extensions: ["tex2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js","TeX/noErrors.js","TeX/noUndefined.js","TeX/AMSmath.js","TeX/AMSsymbols.js","fast-preview.js","AssistiveMML.js","[a11y]/accessibility-menu.js"],
|
18 |
+
jax: ["input/TeX","output/HTML-CSS","output/PreviewHTML"]
|
19 |
+
});
|
20 |
+
|
21 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/TeX-AMS_HTML.js");
|
vendor/MathJax/config/TeX-AMS_SVG-full.js
ADDED
@@ -0,0 +1,21 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* /MathJax/unpacked/config/TeX-AMS_SVG-full.js
|
4 |
+
*
|
5 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
6 |
+
*
|
7 |
+
* Part of the MathJax library.
|
8 |
+
* See http://www.mathjax.org for details.
|
9 |
+
*
|
10 |
+
* Licensed under the Apache License, Version 2.0;
|
11 |
+
* you may not use this file except in compliance with the License.
|
12 |
+
*
|
13 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
MathJax.Hub.Config({
|
17 |
+
extensions: ["tex2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js","TeX/noErrors.js","TeX/noUndefined.js","TeX/AMSmath.js","TeX/AMSsymbols.js","fast-preview.js","AssistiveMML.js","[a11y]/accessibility-menu.js"],
|
18 |
+
jax: ["input/TeX","output/SVG","output/PreviewHTML"]
|
19 |
+
});
|
20 |
+
|
21 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/TeX-AMS_SVG-full.js");
|
vendor/MathJax/config/TeX-AMS_SVG.js
ADDED
@@ -0,0 +1,21 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* /MathJax/unpacked/config/TeX-AMS_SVG.js
|
4 |
+
*
|
5 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
6 |
+
*
|
7 |
+
* Part of the MathJax library.
|
8 |
+
* See http://www.mathjax.org for details.
|
9 |
+
*
|
10 |
+
* Licensed under the Apache License, Version 2.0;
|
11 |
+
* you may not use this file except in compliance with the License.
|
12 |
+
*
|
13 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
MathJax.Hub.Config({
|
17 |
+
extensions: ["tex2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js","TeX/noErrors.js","TeX/noUndefined.js","TeX/AMSmath.js","TeX/AMSsymbols.js","fast-preview.js","AssistiveMML.js","[a11y]/accessibility-menu.js"],
|
18 |
+
jax: ["input/TeX","output/SVG","output/PreviewHTML"]
|
19 |
+
});
|
20 |
+
|
21 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/TeX-AMS_SVG.js");
|
vendor/MathJax/config/TeX-MML-AM_CHTML-full.js
ADDED
@@ -0,0 +1,21 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* /MathJax/unpacked/config/TeX-MML-AM_CHTML-full.js
|
4 |
+
*
|
5 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
6 |
+
*
|
7 |
+
* Part of the MathJax library.
|
8 |
+
* See http://www.mathjax.org for details.
|
9 |
+
*
|
10 |
+
* Licensed under the Apache License, Version 2.0;
|
11 |
+
* you may not use this file except in compliance with the License.
|
12 |
+
*
|
13 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
MathJax.Hub.Config({
|
17 |
+
extensions: ["tex2jax.js","mml2jax.js","asciimath2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js","TeX/noErrors.js","TeX/noUndefined.js","TeX/AMSmath.js","TeX/AMSsymbols.js","fast-preview.js","AssistiveMML.js","[a11y]/accessibility-menu.js"],
|
18 |
+
jax: ["input/TeX","input/MathML","input/AsciiMath","output/CommonHTML","output/PreviewHTML"]
|
19 |
+
});
|
20 |
+
|
21 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/TeX-MML-AM_CHTML-full.js");
|
vendor/MathJax/config/TeX-MML-AM_CHTML.js
ADDED
@@ -0,0 +1,21 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* /MathJax/unpacked/config/TeX-MML-AM_CHTML.js
|
4 |
+
*
|
5 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
6 |
+
*
|
7 |
+
* Part of the MathJax library.
|
8 |
+
* See http://www.mathjax.org for details.
|
9 |
+
*
|
10 |
+
* Licensed under the Apache License, Version 2.0;
|
11 |
+
* you may not use this file except in compliance with the License.
|
12 |
+
*
|
13 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
MathJax.Hub.Config({
|
17 |
+
extensions: ["tex2jax.js","mml2jax.js","asciimath2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js","TeX/noErrors.js","TeX/noUndefined.js","TeX/AMSmath.js","TeX/AMSsymbols.js","fast-preview.js","AssistiveMML.js","[a11y]/accessibility-menu.js"],
|
18 |
+
jax: ["input/TeX","input/MathML","input/AsciiMath","output/CommonHTML","output/PreviewHTML"]
|
19 |
+
});
|
20 |
+
|
21 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/TeX-MML-AM_CHTML.js");
|
vendor/MathJax/config/TeX-MML-AM_HTMLorMML-full.js
ADDED
@@ -0,0 +1,22 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* /MathJax/unpacked/config/TeX-MML-AM_HTMLorMML-full.js
|
4 |
+
*
|
5 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
6 |
+
*
|
7 |
+
* Part of the MathJax library.
|
8 |
+
* See http://www.mathjax.org for details.
|
9 |
+
*
|
10 |
+
* Licensed under the Apache License, Version 2.0;
|
11 |
+
* you may not use this file except in compliance with the License.
|
12 |
+
*
|
13 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
MathJax.Hub.Config({
|
17 |
+
config: ["MMLorHTML.js"],
|
18 |
+
extensions: ["tex2jax.js","mml2jax.js","asciimath2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js","TeX/noErrors.js","TeX/noUndefined.js","TeX/AMSmath.js","TeX/AMSsymbols.js","fast-preview.js","AssistiveMML.js","[a11y]/accessibility-menu.js"],
|
19 |
+
jax: ["input/TeX","input/MathML","input/AsciiMath","output/HTML-CSS","output/NativeMML","output/PreviewHTML"]
|
20 |
+
});
|
21 |
+
|
22 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/TeX-MML-AM_HTMLorMML-full.js");
|
vendor/MathJax/config/TeX-MML-AM_HTMLorMML.js
ADDED
@@ -0,0 +1,22 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* /MathJax/unpacked/config/TeX-MML-AM_HTMLorMML.js
|
4 |
+
*
|
5 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
6 |
+
*
|
7 |
+
* Part of the MathJax library.
|
8 |
+
* See http://www.mathjax.org for details.
|
9 |
+
*
|
10 |
+
* Licensed under the Apache License, Version 2.0;
|
11 |
+
* you may not use this file except in compliance with the License.
|
12 |
+
*
|
13 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
MathJax.Hub.Config({
|
17 |
+
config: ["MMLorHTML.js"],
|
18 |
+
extensions: ["tex2jax.js","mml2jax.js","asciimath2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js","TeX/noErrors.js","TeX/noUndefined.js","TeX/AMSmath.js","TeX/AMSsymbols.js","fast-preview.js","AssistiveMML.js","[a11y]/accessibility-menu.js"],
|
19 |
+
jax: ["input/TeX","input/MathML","input/AsciiMath","output/HTML-CSS","output/NativeMML","output/PreviewHTML"]
|
20 |
+
});
|
21 |
+
|
22 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/TeX-MML-AM_HTMLorMML.js");
|
vendor/MathJax/config/TeX-MML-AM_SVG-full.js
ADDED
@@ -0,0 +1,21 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* /MathJax/unpacked/config/TeX-MML-AM_SVG-full.js
|
4 |
+
*
|
5 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
6 |
+
*
|
7 |
+
* Part of the MathJax library.
|
8 |
+
* See http://www.mathjax.org for details.
|
9 |
+
*
|
10 |
+
* Licensed under the Apache License, Version 2.0;
|
11 |
+
* you may not use this file except in compliance with the License.
|
12 |
+
*
|
13 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
MathJax.Hub.Config({
|
17 |
+
extensions: ["tex2jax.js","mml2jax.js","asciimath2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js","TeX/noErrors.js","TeX/noUndefined.js","TeX/AMSmath.js","TeX/AMSsymbols.js","fast-preview.js","AssistiveMML.js","[a11y]/accessibility-menu.js"],
|
18 |
+
jax: ["input/TeX","input/MathML","input/AsciiMath","output/SVG","output/PreviewHTML"]
|
19 |
+
});
|
20 |
+
|
21 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/TeX-MML-AM_SVG-full.js");
|
vendor/MathJax/config/TeX-MML-AM_SVG.js
ADDED
@@ -0,0 +1,21 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* /MathJax/unpacked/config/TeX-MML-AM_SVG.js
|
4 |
+
*
|
5 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
6 |
+
*
|
7 |
+
* Part of the MathJax library.
|
8 |
+
* See http://www.mathjax.org for details.
|
9 |
+
*
|
10 |
+
* Licensed under the Apache License, Version 2.0;
|
11 |
+
* you may not use this file except in compliance with the License.
|
12 |
+
*
|
13 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
*/
|
15 |
+
|
16 |
+
MathJax.Hub.Config({
|
17 |
+
extensions: ["tex2jax.js","mml2jax.js","asciimath2jax.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js","TeX/noErrors.js","TeX/noUndefined.js","TeX/AMSmath.js","TeX/AMSsymbols.js","fast-preview.js","AssistiveMML.js","[a11y]/accessibility-menu.js"],
|
18 |
+
jax: ["input/TeX","input/MathML","input/AsciiMath","output/SVG","output/PreviewHTML"]
|
19 |
+
});
|
20 |
+
|
21 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/TeX-MML-AM_SVG.js");
|
vendor/MathJax/config/default.js
ADDED
@@ -0,0 +1,1104 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax/config/default.js
|
7 |
+
*
|
8 |
+
* This configuration file is loaded when you load MathJax
|
9 |
+
* via <script src="MathJax.js?config=default"></script>
|
10 |
+
*
|
11 |
+
* Use it to customize the MathJax settings. See comments below.
|
12 |
+
*
|
13 |
+
* ---------------------------------------------------------------------
|
14 |
+
*
|
15 |
+
* Copyright (c) 2009-2018 The MathJax Consortium
|
16 |
+
*
|
17 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
18 |
+
* you may not use this file except in compliance with the License.
|
19 |
+
* You may obtain a copy of the License at
|
20 |
+
*
|
21 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
22 |
+
*
|
23 |
+
* Unless required by applicable law or agreed to in writing, software
|
24 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
25 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
26 |
+
* See the License for the specific language governing permissions and
|
27 |
+
* limitations under the License.
|
28 |
+
*/
|
29 |
+
|
30 |
+
|
31 |
+
/*
|
32 |
+
* This file lists most, but not all, of the options that can be set for
|
33 |
+
* MathJax and its various components. Some additional options are
|
34 |
+
* available, however, and are listed in the various links at:
|
35 |
+
*
|
36 |
+
* http://www.mathjax.org/resources/docs/?configuration.html#configuration-options-by-component
|
37 |
+
*
|
38 |
+
* You can add these to the configuration object below if you
|
39 |
+
* want to change them from their default values.
|
40 |
+
*/
|
41 |
+
|
42 |
+
MathJax.Hub.Config({
|
43 |
+
|
44 |
+
//
|
45 |
+
// A comma-separated list of configuration files to load
|
46 |
+
// when MathJax starts up. E.g., to define local macros, etc.
|
47 |
+
// The default directory is the MathJax/config directory.
|
48 |
+
//
|
49 |
+
// Example: config: ["local/local.js"],
|
50 |
+
// Example: config: ["local/local.js","MMLtoHTML.js"],
|
51 |
+
//
|
52 |
+
config: [],
|
53 |
+
|
54 |
+
//
|
55 |
+
// A comma-separated list of CSS stylesheet files to be loaded
|
56 |
+
// when MathJax starts up. The default directory is the
|
57 |
+
// MathJax/config directory.
|
58 |
+
//
|
59 |
+
// Example: styleSheets: ["MathJax.css"],
|
60 |
+
//
|
61 |
+
styleSheets: [],
|
62 |
+
|
63 |
+
//
|
64 |
+
// Styles to be defined dynamically at startup time.
|
65 |
+
//
|
66 |
+
// Example:
|
67 |
+
// styles: {
|
68 |
+
// ".MathJax_Preview": {
|
69 |
+
// color: "#888"
|
70 |
+
// }
|
71 |
+
// },
|
72 |
+
//
|
73 |
+
styles: {},
|
74 |
+
|
75 |
+
//
|
76 |
+
// A comma-separated list of input and output jax to initialize at startup.
|
77 |
+
// Their main code is loaded only when they are actually used, so it is not
|
78 |
+
// inefficient to include jax that may not actually be used on the page. These
|
79 |
+
// are found in the MathJax/jax directory. The choices include
|
80 |
+
//
|
81 |
+
// input/TeX
|
82 |
+
// input/MathML
|
83 |
+
// input/AsciiMath
|
84 |
+
//
|
85 |
+
// output/HTML-CSS
|
86 |
+
// output/NativeMML
|
87 |
+
// output/SVG
|
88 |
+
//
|
89 |
+
// If you change the input jax, you may need to include the appropriate
|
90 |
+
// preprocessor in the extensions array below.
|
91 |
+
//
|
92 |
+
jax: ["input/TeX", "output/HTML-CSS"],
|
93 |
+
|
94 |
+
//
|
95 |
+
// A comma-separated list of extensions to load at startup. The default
|
96 |
+
// directory is MathJax/extensions.
|
97 |
+
//
|
98 |
+
// Example: extensions: ["tex2jax.js","TeX/AMSmath.js","TeX/AMSsymbols.js"],
|
99 |
+
//
|
100 |
+
// You may wish to include "mml2jax.js" if you are using "input/MathML" in the
|
101 |
+
// jax array above, and "asciimath2jax.js" if you using "input/AsciiMath".
|
102 |
+
// Include "jsmath2jax.js" if you are converting from using jsMath to MathJax.
|
103 |
+
//
|
104 |
+
extensions: ["tex2jax.js"],
|
105 |
+
|
106 |
+
//
|
107 |
+
// Patterns to remove from before and after math script tags. If you are not
|
108 |
+
// using one of the preprocessors (e.g., tex2jax), you need to insert something
|
109 |
+
// extra into your HTML file in order to avoid a bug in Internet Explorer. IE
|
110 |
+
// removes spaces from the DOM that it thinks are redundent, and since a SCRIPT
|
111 |
+
// tag usually doesn't add content to the page, if there is a space before and after
|
112 |
+
// a MathJax SCRIPT tag, IE will remove the first space. When MathJax inserts
|
113 |
+
// the typeset mathematics, this means there will be no space before it and the
|
114 |
+
// preceding text. In order to avoid this, you should include some "guard characters"
|
115 |
+
// before or after the math SCRIPT tag; define the patterns you want to use below.
|
116 |
+
// Note that these are used as regular expressions, so you will need to quote
|
117 |
+
// special characters. Furthermore, since they are javascript strings, you must
|
118 |
+
// quote javascript special characters as well. So to obtain a backslash, you must
|
119 |
+
// use \\ (doubled for javascript). For example, "\\[" is the pattern \[ in the
|
120 |
+
// regular expression. That means that if you want an actual backslash in your
|
121 |
+
// guard characters, you need to use "\\\\" in order to get \\ in the regular
|
122 |
+
// expression, and \ in the actual text. If both preJax and postJax are defined,
|
123 |
+
// both must be present in order to be removed.
|
124 |
+
//
|
125 |
+
// See also the preRemoveClass comments below.
|
126 |
+
//
|
127 |
+
// Example:
|
128 |
+
// preJax: "\\\\\\\\", // makes a double backslash the preJax text
|
129 |
+
// or
|
130 |
+
// preJax: "\\[\\[", // jax scripts must be enclosed in double brackets
|
131 |
+
// postJax: "\\]\\]",
|
132 |
+
//
|
133 |
+
preJax: null,
|
134 |
+
postJax: null,
|
135 |
+
|
136 |
+
//
|
137 |
+
// The CSS class for a math preview to be removed preceding a MathJax
|
138 |
+
// SCRIPT tag. If the tag just before the MathJax SCRIPT tag is of this
|
139 |
+
// class, its contents are removed when MathJax processes the SCRIPT
|
140 |
+
// tag. This allows you to include a math preview in a form that will
|
141 |
+
// be displayed prior to MathJax performing its typesetting. It also
|
142 |
+
// avoids the Internet Explorer space-removal bug, and can be used in
|
143 |
+
// place of preJax and postJax if that is more convenient.
|
144 |
+
//
|
145 |
+
// For example
|
146 |
+
//
|
147 |
+
// <span class="MathJax_Preview">[math]</span><script type="math/tex">...</script>
|
148 |
+
//
|
149 |
+
// would display "[math]" in place of the math until MathJax is able to typeset it.
|
150 |
+
//
|
151 |
+
preRemoveClass: "MathJax_Preview",
|
152 |
+
|
153 |
+
//
|
154 |
+
// This value controls whether the "Processing Math: nn%" message are displayed
|
155 |
+
// in the lower left-hand corner. Set to "false" to prevent those messages (though
|
156 |
+
// file loading and other messages will still be shown).
|
157 |
+
//
|
158 |
+
showProcessingMessages: true,
|
159 |
+
|
160 |
+
//
|
161 |
+
// This value controls the verbosity of the messages in the lower left-hand corner.
|
162 |
+
// Set it to "none" to eliminate all messages, or set it to "simple" to show
|
163 |
+
// "Loading..." and "Processing..." rather than showing the full file name and the
|
164 |
+
// percentage of the mathematics processed.
|
165 |
+
//
|
166 |
+
messageStyle: "normal",
|
167 |
+
|
168 |
+
//
|
169 |
+
// These two parameters control the alignment and shifting of displayed equations.
|
170 |
+
// The first can be "left", "center", or "right", and determines the alignment of
|
171 |
+
// displayed equations. When the alignment is not "center", the second determines
|
172 |
+
// an indentation from the left or right side for the displayed equations. When
|
173 |
+
// the alignment is "center", the indent allows you to shift the center to the right
|
174 |
+
// or left (negative is left).
|
175 |
+
//
|
176 |
+
displayAlign: "center",
|
177 |
+
displayIndent: "0",
|
178 |
+
|
179 |
+
//
|
180 |
+
// Normally MathJax will perform its starup commands (loading of
|
181 |
+
// configuration, styles, jax, and so on) as soon as it can. If you
|
182 |
+
// expect to be doing additional configuration on the page, however, you
|
183 |
+
// may want to have it wait until the page's onload hander is called. If so,
|
184 |
+
// set this to "onload".
|
185 |
+
//
|
186 |
+
delayStartupUntil: "none",
|
187 |
+
|
188 |
+
//
|
189 |
+
// Normally MathJax will typeset the mathematics on the page as soon as
|
190 |
+
// the page is loaded. If you want to delay that process, in which case
|
191 |
+
// you will need to call MathJax.Hub.Typeset() yourself by hand, set
|
192 |
+
// this value to true.
|
193 |
+
//
|
194 |
+
skipStartupTypeset: false,
|
195 |
+
|
196 |
+
//
|
197 |
+
// A list of element ID's that are the ones to process for mathematics
|
198 |
+
// when any of the Hub typesetting calls (Typeset, Process, Update, etc)
|
199 |
+
// are called with no element specified. This lets you restrict the
|
200 |
+
// processing to particular containers rather than scanning the entire
|
201 |
+
// document for mathematics. If none are supplied, the entire document
|
202 |
+
// is processed.
|
203 |
+
//
|
204 |
+
elements: [],
|
205 |
+
|
206 |
+
//
|
207 |
+
// Since typesetting usually changes the vertical dimensions of the
|
208 |
+
// page, if the URL contains an anchor position you may no longer be
|
209 |
+
// positioned at the correct position on the page, so MathJax can
|
210 |
+
// reposition to that location after it completes its initial
|
211 |
+
// typesetting of the page. This value controls whether MathJax will
|
212 |
+
// reposition the browser to the #hash location from the page URL after
|
213 |
+
// typesetting for the page.
|
214 |
+
//
|
215 |
+
positionToHash: true,
|
216 |
+
|
217 |
+
//
|
218 |
+
// These control whether to attach the MathJax contextual menu to the
|
219 |
+
// expressions typeset by MathJax. Since the code for handling
|
220 |
+
// MathPlayer in Internet Explorer is somewhat delicate, it is
|
221 |
+
// controlled separately via (showMathMenuMSIE). The latter is now
|
222 |
+
// deprecated in favor of the MathJax contextual menu settings for
|
223 |
+
// MathPlayer.
|
224 |
+
//
|
225 |
+
// These values used to be listed in the separate output jax, but
|
226 |
+
// have been moved to this more central location since they are shared
|
227 |
+
// by all output jax.
|
228 |
+
//
|
229 |
+
showMathMenu: true,
|
230 |
+
showMathMenuMSIE: true,
|
231 |
+
|
232 |
+
|
233 |
+
//
|
234 |
+
// The default settings for the MathJax contextual menu (overridden by
|
235 |
+
// the MathJax cookie when users change the menu settings).
|
236 |
+
//
|
237 |
+
menuSettings: {
|
238 |
+
zoom: "None", // when to do MathZoom
|
239 |
+
CTRL: false, // require CTRL for MathZoom?
|
240 |
+
ALT: false, // require Alt or Option?
|
241 |
+
CMD: false, // require CMD?
|
242 |
+
Shift: false, // require Shift?
|
243 |
+
discoverable: false, // make math menu discoverable on hover?
|
244 |
+
zscale: "200%", // the scaling factor for MathZoom
|
245 |
+
renderer: null, // set when Jax are loaded
|
246 |
+
font: "Auto", // what font HTML-CSS should use
|
247 |
+
context: "MathJax", // or "Browser" for pass-through to browser menu
|
248 |
+
locale: null, // the language to use for messages
|
249 |
+
mpContext: false, // true means pass menu events to MathPlayer in IE
|
250 |
+
mpMouse: false, // true means pass mouse events to MathPlayer in IE
|
251 |
+
texHints: true, // include class names for TeXAtom elements
|
252 |
+
FastPreview: null, // use PreviewHTML output as preview?
|
253 |
+
assistiveMML: null, // include hidden MathML for screen readers?
|
254 |
+
inTabOrder: true, // set to true if math elements should be included in the tabindex
|
255 |
+
semantics: false // add semantics tag with original form in MathML output
|
256 |
+
},
|
257 |
+
|
258 |
+
//
|
259 |
+
// The message and style for when there is a processing error handling
|
260 |
+
// the mathematics (something has gone wrong with the input or output
|
261 |
+
// jax that prevents it from operating properly).
|
262 |
+
//
|
263 |
+
errorSettings: {
|
264 |
+
message: ["[",["MathProcessingError","Math Processing Error"],"]"],
|
265 |
+
style: {color: "#CC0000", "font-style":"italic"} // style for message
|
266 |
+
},
|
267 |
+
|
268 |
+
|
269 |
+
//============================================================================
|
270 |
+
//
|
271 |
+
// These parameters control the tex2jax preprocessor (when you have included
|
272 |
+
// "tex2jax.js" in the extensions list above).
|
273 |
+
//
|
274 |
+
tex2jax: {
|
275 |
+
|
276 |
+
//
|
277 |
+
// The delimiters that surround in-line math expressions. The first in each
|
278 |
+
// pair is the initial delimiter and the second is the terminal delimiter.
|
279 |
+
// Comment out any that you don't want, but be sure there is no extra
|
280 |
+
// comma at the end of the last item in the list -- some browsers won't
|
281 |
+
// be able to handle that.
|
282 |
+
//
|
283 |
+
inlineMath: [
|
284 |
+
// ['$','$'], // uncomment this for standard TeX math delimiters
|
285 |
+
['\\(','\\)']
|
286 |
+
],
|
287 |
+
|
288 |
+
//
|
289 |
+
// The delimiters that surround displayed math expressions. The first in each
|
290 |
+
// pair is the initial delimiter and the second is the terminal delimiter.
|
291 |
+
// Comment out any that you don't want, but be sure there is no extra
|
292 |
+
// comma at the end of the last item in the list -- some browsers won't
|
293 |
+
// be able to handle that.
|
294 |
+
//
|
295 |
+
displayMath: [
|
296 |
+
['$$','$$'],
|
297 |
+
['\\[','\\]']
|
298 |
+
],
|
299 |
+
|
300 |
+
//
|
301 |
+
// This array lists the names of the tags whose contents should not be
|
302 |
+
// processed by tex2jax (other than to look for ignore/process classes
|
303 |
+
// as listed below). You can add to (or remove from) this list to prevent
|
304 |
+
// MathJax from processing mathematics in specific contexts.
|
305 |
+
//
|
306 |
+
skipTags: ["script","noscript","style","textarea","pre","code","annotation","annotation-xml"],
|
307 |
+
|
308 |
+
//
|
309 |
+
// This is the class name used to mark elements whose contents should
|
310 |
+
// not be processed by tex2jax (other than to look for the
|
311 |
+
// processClass pattern below). Note that this is a regular
|
312 |
+
// expression, and so you need to be sure to quote any regexp special
|
313 |
+
// characters. The pattern is automatically preceded by '(^| )(' and
|
314 |
+
// followed by ')( |$)', so your pattern will have to match full words
|
315 |
+
// in the class name. Assigning an element this class name will
|
316 |
+
// prevent `tex2jax` from processing its contents.
|
317 |
+
//
|
318 |
+
ignoreClass: "tex2jax_ignore",
|
319 |
+
|
320 |
+
//
|
321 |
+
// This is the class name used to mark elements whose contents SHOULD
|
322 |
+
// be processed by tex2jax. This is used to turn on processing within
|
323 |
+
// tags that have been marked as ignored or skipped above. Note that
|
324 |
+
// this is a regular expression, and so you need to be sure to quote
|
325 |
+
// any regexp special characters. The pattern is automatically
|
326 |
+
// preceded by '(^| )(' and followed by ')( |$)', so your pattern
|
327 |
+
// will have to match full words in the class name. Use this to
|
328 |
+
// restart processing within an element that has been marked as
|
329 |
+
// ignored above.
|
330 |
+
//
|
331 |
+
processClass: "tex2jax_process",
|
332 |
+
|
333 |
+
//
|
334 |
+
// Set to "true" to allow \$ to produce a dollar without starting in-line
|
335 |
+
// math mode. If you uncomment the ['$','$'] line above, you should change
|
336 |
+
// this to true so that you can insert plain dollar signs into your documents
|
337 |
+
//
|
338 |
+
processEscapes: false,
|
339 |
+
|
340 |
+
//
|
341 |
+
// Controls whether tex2jax processes LaTeX environments outside of math
|
342 |
+
// mode. Set to "false" to prevent processing of environments except within
|
343 |
+
// math mode.
|
344 |
+
//
|
345 |
+
processEnvironments: true,
|
346 |
+
|
347 |
+
//
|
348 |
+
// Controls whether tex2jax processes \ref{...} commands outside
|
349 |
+
// of math mode. Set to "false" to prevent processing of \ref
|
350 |
+
// except within math mode.
|
351 |
+
//
|
352 |
+
processRefs: true,
|
353 |
+
|
354 |
+
//
|
355 |
+
// Controls whether tex2jax inserts MathJax_Preview spans to make a
|
356 |
+
// preview available, and what preview to use, when it locates in-line
|
357 |
+
// and display mathetics on the page. The default is "TeX", which
|
358 |
+
// means use the TeX code as the preview (until it is processed by
|
359 |
+
// MathJax). Set to "none" to prevent the previews from being
|
360 |
+
// inserted (the math will simply disappear until it is typeset). Set
|
361 |
+
// to an array containing the description of an HTML snippet in order
|
362 |
+
// to use the same preview for all equations on the page (e.g., you
|
363 |
+
// could have it say "[math]" or load an image).
|
364 |
+
//
|
365 |
+
// E.g., preview: ["[math]"],
|
366 |
+
// or preview: [["img",{src: "http://myserver.com/images/mypic.jpg"}]]
|
367 |
+
//
|
368 |
+
preview: "TeX"
|
369 |
+
|
370 |
+
},
|
371 |
+
|
372 |
+
//============================================================================
|
373 |
+
//
|
374 |
+
// These parameters control the asciimath2jax preprocessor (when you have included
|
375 |
+
// "asciimath2jax.js" in the extensions list above).
|
376 |
+
//
|
377 |
+
asciimath2jax: {
|
378 |
+
|
379 |
+
//
|
380 |
+
// The delimiters that surround asciimath expressions. The first in each
|
381 |
+
// pair is the initial delimiter and the second is the terminal delimiter.
|
382 |
+
//
|
383 |
+
delimiters: [
|
384 |
+
['`','`']
|
385 |
+
],
|
386 |
+
|
387 |
+
//
|
388 |
+
// This array lists the names of the tags whose contents should not be
|
389 |
+
// processed by asciimath2jax (other than to look for ignore/process classes
|
390 |
+
// as listed below). You can add to (or remove from) this list to prevent
|
391 |
+
// MathJax from processing mathematics in specific contexts.
|
392 |
+
//
|
393 |
+
skipTags: ["script","noscript","style","textarea","pre","code","annotation","annotation-xml"],
|
394 |
+
|
395 |
+
//
|
396 |
+
// This is the class name used to mark elements whose contents should
|
397 |
+
// not be processed by asciimath2jax (other than to look for the
|
398 |
+
// processClass pattern below). Note that this is a regular
|
399 |
+
// expression, and so you need to be sure to quote any regexp special
|
400 |
+
// characters. The pattern is automatically preceded by '(^| )(' and
|
401 |
+
// followed by ')( |$)', so your pattern will have to match full words
|
402 |
+
// in the class name. Assigning an element this class name will
|
403 |
+
// prevent `asciimath2jax` from processing its contents.
|
404 |
+
//
|
405 |
+
ignoreClass: "asciimath2jax_ignore",
|
406 |
+
|
407 |
+
//
|
408 |
+
// This is the class name used to mark elements whose contents SHOULD
|
409 |
+
// be processed by asciimath2jax. This is used to turn on processing
|
410 |
+
// within tags that have been marked as ignored or skipped above.
|
411 |
+
// Note that this is a regular expression, and so you need to be sure
|
412 |
+
// to quote any regexp special characters. The pattern is
|
413 |
+
// automatically preceded by '(^| )(' and followed by ')( |$)', so
|
414 |
+
// your pattern will have to match full words in the class name. Use
|
415 |
+
// this to restart processing within an element that has been marked
|
416 |
+
// as ignored above.
|
417 |
+
//
|
418 |
+
processClass: "asciimath2jax_process",
|
419 |
+
|
420 |
+
// Controls whether asciimath2jax inserts MathJax_Preview spans to make a
|
421 |
+
// preview available, and what preview to use, when it locates in-line
|
422 |
+
// and display mathetics on the page. The default is "AsciiMath", which
|
423 |
+
// means use the AsciiMath code as the preview (until it is processed by
|
424 |
+
// MathJax). Set to "none" to prevent the previews from being
|
425 |
+
// inserted (the math will simply disappear until it is typeset). Set
|
426 |
+
// to an array containing the description of an HTML snippet in order
|
427 |
+
// to use the same preview for all equations on the page (e.g., you
|
428 |
+
// could have it say "[math]" or load an image).
|
429 |
+
//
|
430 |
+
// E.g., preview: ["[math]"],
|
431 |
+
// or preview: [["img",{src: "http://myserver.com/images/mypic.jpg"}]]
|
432 |
+
//
|
433 |
+
preview: "AsciiMath"
|
434 |
+
|
435 |
+
},
|
436 |
+
|
437 |
+
//============================================================================
|
438 |
+
//
|
439 |
+
// These parameters control the mml2jax preprocessor (when you have included
|
440 |
+
// "mml2jax.js" in the extensions list above).
|
441 |
+
//
|
442 |
+
mml2jax: {
|
443 |
+
|
444 |
+
//
|
445 |
+
// Controls whether mml2jax inserts MathJax_Preview spans to make a
|
446 |
+
// preview available, and what preview to use, when it locates
|
447 |
+
// mathematics on the page. The default is "mathml" which means use
|
448 |
+
// the <math> tag as the preview (until it is processed by MathJax).
|
449 |
+
// Set to "alttext", to use the <math> tag's alttext attribute as the
|
450 |
+
// preview, if the tag has one. Set to "none" to
|
451 |
+
// prevent the previews from being inserted (the math will simply
|
452 |
+
// disappear until it is typeset). Set to "altimg" to use an image
|
453 |
+
// described by the altimg* attributes of the <math> element.
|
454 |
+
// Set to an array containing the
|
455 |
+
// description of an HTML snippet in order to use the same preview for
|
456 |
+
// all equations on the page (e.g., you could have it say "[math]" or
|
457 |
+
// load an image).
|
458 |
+
//
|
459 |
+
// E.g., preview: ["[math]"],
|
460 |
+
// or preview: [["img",{src: "http://myserver.com/images/mypic.jpg"}]]
|
461 |
+
//
|
462 |
+
preview: "mathml"
|
463 |
+
|
464 |
+
},
|
465 |
+
|
466 |
+
//============================================================================
|
467 |
+
//
|
468 |
+
// These parameters control the jsMath2jax preprocessor (when you have included
|
469 |
+
// "jsMath2jax.js" in the extensions list above).
|
470 |
+
//
|
471 |
+
jsMath2jax: {
|
472 |
+
|
473 |
+
//
|
474 |
+
// Controls whether jsMath2jax inserts MathJax_Preview spans to make a
|
475 |
+
// preview available, and what preview to use, when it locates
|
476 |
+
// mathematics on the page. The default is "TeX", which means use the
|
477 |
+
// TeX code as the preview (until it is processed by MathJax). Set to
|
478 |
+
// "none" to prevent the previews from being inserted (the math will
|
479 |
+
// simply disappear until it is typeset). Set to an array containing
|
480 |
+
// the description of an HTML snippet in order to use the same preview
|
481 |
+
// for all equations on the page (e.g., you could have it say "[math]"
|
482 |
+
// or load an image).
|
483 |
+
//
|
484 |
+
// E.g., preview: ["[math]"],
|
485 |
+
// or preview: [["img",{src: "http://myserver.com/images/mypic.jpg"}]]
|
486 |
+
//
|
487 |
+
preview: "TeX"
|
488 |
+
|
489 |
+
},
|
490 |
+
|
491 |
+
//============================================================================
|
492 |
+
//
|
493 |
+
// These parameters control the TeX input jax.
|
494 |
+
//
|
495 |
+
TeX: {
|
496 |
+
|
497 |
+
//
|
498 |
+
// This specifies the side on which \tag{} macros will place the tags.
|
499 |
+
// Set to "left" to place on the left-hand side.
|
500 |
+
//
|
501 |
+
TagSide: "right",
|
502 |
+
|
503 |
+
//
|
504 |
+
// This is the amound of indentation (from right or left) for the tags.
|
505 |
+
//
|
506 |
+
TagIndent: "0.8em",
|
507 |
+
|
508 |
+
//
|
509 |
+
// This is the width to use for the multline environment
|
510 |
+
//
|
511 |
+
MultLineWidth: "85%",
|
512 |
+
|
513 |
+
//
|
514 |
+
// List of macros to define. These are of the form
|
515 |
+
// name: value
|
516 |
+
// where 'value' is the replacement text for the macro \name.
|
517 |
+
// The 'value' can also be [value,n] where 'value' is the replacement
|
518 |
+
// text and 'n' is the number of parameters for the macro.
|
519 |
+
// Note that backslashes must be doubled in the replacement string.
|
520 |
+
//
|
521 |
+
// E.g.,
|
522 |
+
//
|
523 |
+
// Macros: {
|
524 |
+
// RR: '{\\bf R}',
|
525 |
+
// bold: ['{\\bf #1}', 1]
|
526 |
+
// }
|
527 |
+
//
|
528 |
+
Macros: {},
|
529 |
+
|
530 |
+
//
|
531 |
+
// Equation numbering parameters.
|
532 |
+
//
|
533 |
+
equationNumbers: {
|
534 |
+
autoNumber: "none", // "AMS" for standard AMS environment numbering,
|
535 |
+
// or "all" to number all displayed equations
|
536 |
+
// formatNumber: function (n) {return n}, // format for equation number n
|
537 |
+
// formatTag: function (n) {return '('+n+')'}, // format for \tag and \eqref
|
538 |
+
// formatID: function (n) {return 'mjx-eqn-'+String(n).replace(/\s/g,"_")},
|
539 |
+
// // element ID to use for reference
|
540 |
+
// formatURL: function (id,base) {return base+'#'+encodeURIComponent(id)},
|
541 |
+
// // URL to use for references
|
542 |
+
useLabelIds: true // make element ID's use \label name rather than equation number
|
543 |
+
},
|
544 |
+
|
545 |
+
//
|
546 |
+
// Controls the TeX/noErrors extension
|
547 |
+
//
|
548 |
+
noErrors: {
|
549 |
+
disabled: false, // set to true to return to original error messages
|
550 |
+
multiLine: true, // false to not include original line breaks
|
551 |
+
inlineDelimiters: ["",""], // or use ["$","$"] or ["\\(","\\)"] to put back delimiters
|
552 |
+
style: {
|
553 |
+
"font-size": "90%",
|
554 |
+
"text-align": "left",
|
555 |
+
"color": "black",
|
556 |
+
"padding": "1px 3px",
|
557 |
+
"border": "1px solid"
|
558 |
+
}
|
559 |
+
},
|
560 |
+
|
561 |
+
//
|
562 |
+
// Controls the TeX/noUndefined extension
|
563 |
+
//
|
564 |
+
noUndefined: {
|
565 |
+
disabled: false, // set to true to return to original error messages
|
566 |
+
attributes: { // attributes to set for the undefined control sequence
|
567 |
+
mathcolor: "red"
|
568 |
+
}
|
569 |
+
},
|
570 |
+
|
571 |
+
//
|
572 |
+
// Controls the TeX/unicode extension
|
573 |
+
unicode: {
|
574 |
+
fonts: "STIXGeneral,'Arial Unicode MS'" // the default font list for unknown characters
|
575 |
+
}
|
576 |
+
|
577 |
+
},
|
578 |
+
|
579 |
+
//============================================================================
|
580 |
+
//
|
581 |
+
// These parameters control the AsciiMath input jax.
|
582 |
+
//
|
583 |
+
AsciiMath: {
|
584 |
+
//
|
585 |
+
// Determines whether the unicode positions for phi and varphi are
|
586 |
+
// to be swapped or not. (Unicode originally had these reversed, and
|
587 |
+
// many fonts have them reversed as well.) When set to true, phi
|
588 |
+
// and varphi will correspond to the LaTeX macros of the same name.
|
589 |
+
//
|
590 |
+
fixphi: true,
|
591 |
+
|
592 |
+
//
|
593 |
+
// Determines whether the MathML should be marked so that the HTML-CSS
|
594 |
+
// and SVG output jax will use MathML spacing rules rather than TeX
|
595 |
+
// spacing rules. Since AsciiMath was designed for MathML output, the
|
596 |
+
// MathML rules are used by default.
|
597 |
+
//
|
598 |
+
useMathMLspacing: true,
|
599 |
+
|
600 |
+
//
|
601 |
+
// Determines whether limits are placed above and below operators,
|
602 |
+
// or next to them. (AsciiMath doesn't have separate in-line and
|
603 |
+
// display modes like TeX and MathML do, so this is the only control
|
604 |
+
// you have over its output)
|
605 |
+
//
|
606 |
+
displaystyle: true,
|
607 |
+
|
608 |
+
//
|
609 |
+
// The character to use for decimal places when scanning for a number.
|
610 |
+
// If you change it to ",", beware of things like "(1,2)" which would need
|
611 |
+
// to be changed to "(1, 2)" to be parsed correctly.
|
612 |
+
//
|
613 |
+
decimal: "."
|
614 |
+
},
|
615 |
+
|
616 |
+
//============================================================================
|
617 |
+
//
|
618 |
+
// These parameters control the MathML input jax.
|
619 |
+
//
|
620 |
+
MathML: {
|
621 |
+
//
|
622 |
+
// This specifies whether to use TeX spacing or MathML spacing when the
|
623 |
+
// HTML-CSS output jax is used.
|
624 |
+
//
|
625 |
+
useMathMLspacing: false
|
626 |
+
},
|
627 |
+
|
628 |
+
//============================================================================
|
629 |
+
//
|
630 |
+
// These parameters control the HTML-CSS output jax.
|
631 |
+
//
|
632 |
+
"HTML-CSS": {
|
633 |
+
|
634 |
+
//
|
635 |
+
// This controls the global scaling of mathematics as compared to the
|
636 |
+
// surrounding text. Values between 100 and 133 are usually good choices.
|
637 |
+
//
|
638 |
+
scale: 100,
|
639 |
+
|
640 |
+
//
|
641 |
+
// Don't allow the matching of math text to surrounding text to use a scaling
|
642 |
+
// factor smaller than this.
|
643 |
+
//
|
644 |
+
minScaleAdjust: 50,
|
645 |
+
|
646 |
+
//
|
647 |
+
// This is a list of the fonts to look for on a user's computer in
|
648 |
+
// preference to using MathJax's web-based fonts. These must
|
649 |
+
// correspond to directories available in the jax/output/HTML-CSS/fonts
|
650 |
+
// directory, where MathJax stores data about the characters available
|
651 |
+
// in the fonts. Set this to ["TeX"], for example, to prevent the
|
652 |
+
// use of the STIX fonts, or set it to an empty list, [], if
|
653 |
+
// you want to force MathJax to use web-based or image fonts.
|
654 |
+
//
|
655 |
+
availableFonts: ["STIX","TeX"],
|
656 |
+
|
657 |
+
//
|
658 |
+
// This is the preferred font to use when more than one of those
|
659 |
+
// listed above is available.
|
660 |
+
//
|
661 |
+
preferredFont: "TeX",
|
662 |
+
|
663 |
+
//
|
664 |
+
// This is the web-based font to use when none of the fonts listed
|
665 |
+
// above are available on the user's computer. Note that currently
|
666 |
+
// only the TeX font is available in a web-based form. Set this to
|
667 |
+
//
|
668 |
+
// webFont: null,
|
669 |
+
//
|
670 |
+
// if you want to prevent the use of web-based fonts.
|
671 |
+
//
|
672 |
+
webFont: "TeX",
|
673 |
+
|
674 |
+
//
|
675 |
+
// This is the font to use for image fallback mode (when none of the
|
676 |
+
// fonts listed above are available and the browser doesn't support
|
677 |
+
// web-fonts via the @font-face CSS directive). Note that currently
|
678 |
+
// only the TeX font is available as an image font. Set this to
|
679 |
+
//
|
680 |
+
// imageFont: null,
|
681 |
+
//
|
682 |
+
// if you want to prevent the use of image fonts (e.g., you have not
|
683 |
+
// installed the image fonts on your server). In this case, only
|
684 |
+
// browsers that support web-based fonts will be able to view your pages
|
685 |
+
// without having the fonts installed on the client computer. The browsers
|
686 |
+
// that support web-based fonts include: IE6 and later, Chrome, Safari3.1
|
687 |
+
// and above, Firefox3.5 and later, and Opera10 and later. Note that
|
688 |
+
// Firefox3.0 is NOT on this list, so without image fonts, FF3.0 users
|
689 |
+
// will be required to to download and install either the STIX fonts or the
|
690 |
+
// MathJax TeX fonts.
|
691 |
+
//
|
692 |
+
imageFont: "TeX",
|
693 |
+
|
694 |
+
//
|
695 |
+
// This is the font-family CSS value used for characters that are not
|
696 |
+
// in the selected font (e.g., for web-based fonts, this is where to
|
697 |
+
// look for characters not included in the MathJax_* fonts). IE will
|
698 |
+
// stop looking after the first font that exists on the system (even
|
699 |
+
// if it doesn't contain the needed character), so order these carefully.
|
700 |
+
//
|
701 |
+
undefinedFamily: "STIXGeneral,'Arial Unicode MS',serif",
|
702 |
+
|
703 |
+
//
|
704 |
+
// This setting controls whether <mtext> elements will be typeset
|
705 |
+
// using the math fonts or the font of the surrounding text. When
|
706 |
+
// false, the mathvariant="normal" font will be used; when true,
|
707 |
+
// the font will be inherited from the surrounding paragraph.
|
708 |
+
//
|
709 |
+
mtextFontInherit: false,
|
710 |
+
|
711 |
+
//
|
712 |
+
// These values control how "chunky" the display of mathematical
|
713 |
+
// expressions will be.
|
714 |
+
//
|
715 |
+
// EqnChunk is the number of equations that will be typeset before
|
716 |
+
// they appear on screen. Larger values make for less visual flicker
|
717 |
+
// as the equations are drawn, but also mean longer delays before the
|
718 |
+
// reader sees anything.
|
719 |
+
//
|
720 |
+
// EqChunkFactor is the factor by which the EqnChunk will grow after each
|
721 |
+
// chunk is displayed.
|
722 |
+
//
|
723 |
+
// EqChunkDelay is the time (in milliseconds) to delay between chunks
|
724 |
+
// (to allow the browser to respond to other user interaction).
|
725 |
+
//
|
726 |
+
// Set EqnChunk to 1, EqnChunkFactor to 1, and EqnChunkDelay to 10 to get
|
727 |
+
// the behavior from MathJax v1.1 and below.
|
728 |
+
//
|
729 |
+
EqnChunk: 50,
|
730 |
+
EqnChunkFactor: 1.5,
|
731 |
+
EqnChunkDelay: 100,
|
732 |
+
|
733 |
+
//
|
734 |
+
// This option indicates whether MathJax should try to correct the
|
735 |
+
// x-height of equations to match the size of the surrounding text.
|
736 |
+
//
|
737 |
+
matchFontHeight: true,
|
738 |
+
|
739 |
+
//
|
740 |
+
// When true, MathJax will not measure the widths or heights of the
|
741 |
+
// subexpressions as it creates its output, but instead will rely on
|
742 |
+
// its internal calculations based on the bounding boxes of the
|
743 |
+
// characters it uses, and will only take measurements when it
|
744 |
+
// absolutely has to. Since measurements cause display reflows, they
|
745 |
+
// slows down MathJax considerably, so without them MathJax runs
|
746 |
+
// faster, but can produce slightly less accurate character placements,
|
747 |
+
// especially in width fractions or roots.
|
748 |
+
//
|
749 |
+
noReflows: true,
|
750 |
+
|
751 |
+
|
752 |
+
//
|
753 |
+
// These settings control automatic line breaking. It is off by
|
754 |
+
// default, so only explicit line breaks are performed (via
|
755 |
+
// linebreak="newline" attributes on <mo> and <mspace> elements). To
|
756 |
+
// perform automatic line breaking on line expressions, set
|
757 |
+
// 'automatic' to 'true' below. The line breaks will be applied via a
|
758 |
+
// penalty-based heuristic, which does well, but isn't perfect. You
|
759 |
+
// might need to use linebreak="goodbreak" or linebreak="badbreak" by
|
760 |
+
// hand in order to get better effects. It is also possible to modify
|
761 |
+
// the penalty values; contact the MathJax user's forum for details.
|
762 |
+
//
|
763 |
+
linebreaks: {
|
764 |
+
|
765 |
+
//
|
766 |
+
// This controls the automatic breaking of expressions:
|
767 |
+
// when false, only process linebreak="newline",
|
768 |
+
// when true, line breaks are inserted automatically in long expressions.
|
769 |
+
//
|
770 |
+
automatic: false,
|
771 |
+
|
772 |
+
//
|
773 |
+
// This controls how wide the lines of mathematics can be
|
774 |
+
//
|
775 |
+
// Use an explicit width like "30em" for a fixed width.
|
776 |
+
// Use "container" to compute the size from the containing element.
|
777 |
+
// Use "nn% container" for a portion of the container.
|
778 |
+
// Use "nn%" for a portion of the window size.
|
779 |
+
//
|
780 |
+
// The container-based widths may be slower, and may not produce the
|
781 |
+
// expected results if the layout width changes due to the removal
|
782 |
+
// of previews or inclusion of mathematics during typesetting.
|
783 |
+
//
|
784 |
+
width: "container"
|
785 |
+
},
|
786 |
+
|
787 |
+
//
|
788 |
+
// This allows you to define or modify the styles used to display
|
789 |
+
// various math elements created by MathJax.
|
790 |
+
//
|
791 |
+
// Example:
|
792 |
+
// styles: {
|
793 |
+
// ".MathJax .merror": {
|
794 |
+
// color: "#CC0000",
|
795 |
+
// border: "1px solid #CC0000"
|
796 |
+
// }
|
797 |
+
// }
|
798 |
+
//
|
799 |
+
styles: {},
|
800 |
+
|
801 |
+
//
|
802 |
+
// Configuration for <maction> tooltips
|
803 |
+
// (see also the #MathJax_Tooltip CSS in MathJax/jax/output/HTML-CSS/config.js,
|
804 |
+
// which can be overridden using the styles values above).
|
805 |
+
//
|
806 |
+
tooltip: {
|
807 |
+
delayPost: 600, // milliseconds delay before tooltip is posted after mouseover
|
808 |
+
delayClear: 600, // milliseconds delay before tooltip is cleared after mouseout
|
809 |
+
offsetX: 10, offsetY: 5 // pixels to offset tooltip from mouse position
|
810 |
+
}
|
811 |
+
},
|
812 |
+
|
813 |
+
//============================================================================
|
814 |
+
//
|
815 |
+
// These parameters control the NativeMML output jax.
|
816 |
+
//
|
817 |
+
NativeMML: {
|
818 |
+
|
819 |
+
//
|
820 |
+
// This controls the global scaling of mathematics as compared to the
|
821 |
+
// surrounding text. Values between 100 and 133 are usually good choices.
|
822 |
+
//
|
823 |
+
scale: 100,
|
824 |
+
|
825 |
+
//
|
826 |
+
// Don't allow the matching of math text to surrounding text to use a scaling
|
827 |
+
// factor smaller than this.
|
828 |
+
//
|
829 |
+
minScaleAdjust: 50,
|
830 |
+
|
831 |
+
// This option indicates whether MathJax should try to correct the
|
832 |
+
// x-height of equations to match the size of the surrounding text.
|
833 |
+
matchFontHeight: true,
|
834 |
+
|
835 |
+
//
|
836 |
+
// This allows you to define or modify the styles used to display
|
837 |
+
// various math elements created by MathJax.
|
838 |
+
//
|
839 |
+
// Example:
|
840 |
+
// styles: {
|
841 |
+
// ".MathJax_MathML": {
|
842 |
+
// color: "red" // MathML is in red
|
843 |
+
// }
|
844 |
+
// }
|
845 |
+
//
|
846 |
+
styles: {}
|
847 |
+
},
|
848 |
+
|
849 |
+
//============================================================================
|
850 |
+
//
|
851 |
+
// These parameters control the SVG output jax.
|
852 |
+
//
|
853 |
+
"SVG": {
|
854 |
+
|
855 |
+
//
|
856 |
+
// This controls the global scaling of mathematics as compared to the
|
857 |
+
// surrounding text. Values between 100 and 133 are usually good choices.
|
858 |
+
//
|
859 |
+
scale: 100,
|
860 |
+
|
861 |
+
//
|
862 |
+
// Don't allow the matching of math text to surrounding text to use a scaling
|
863 |
+
// factor smaller than this.
|
864 |
+
//
|
865 |
+
minScaleAdjust: 50,
|
866 |
+
|
867 |
+
//
|
868 |
+
// This specifies the font to use for SVG output (currently the only
|
869 |
+
// one available)
|
870 |
+
//
|
871 |
+
font: "TeX",
|
872 |
+
|
873 |
+
//
|
874 |
+
// This is the stroke width to use for all character paths (1em = 1000
|
875 |
+
// units). This is a cheap way of getting slightly lighter or darker
|
876 |
+
// characters
|
877 |
+
//
|
878 |
+
blacker: 10,
|
879 |
+
|
880 |
+
//
|
881 |
+
// This is the font-family CSS value used for characters that are not
|
882 |
+
// in the selected font. IE will stop looking after the first font
|
883 |
+
// that exists on the system (even if it doesn't contain the needed
|
884 |
+
// character), so order these carefully.
|
885 |
+
//
|
886 |
+
undefinedFamily: "STIXGeneral,'Arial Unicode MS',serif",
|
887 |
+
|
888 |
+
//
|
889 |
+
// This setting controls whether <mtext> elements will be typeset
|
890 |
+
// using the math fonts or the font of the surrounding text. When
|
891 |
+
// false, the mathvariant="normal" font will be used; when true,
|
892 |
+
// the font will be inherited from the surrounding paragraph.
|
893 |
+
//
|
894 |
+
mtextFontInherit: false,
|
895 |
+
|
896 |
+
//
|
897 |
+
// This controls whether the MathML structure is retained and CSS
|
898 |
+
// classes are added to mark the original MathML elements (as in the
|
899 |
+
// HTML-CSS output). By default, the SVG output jax removes unneeded
|
900 |
+
// nesting in order to produce a more efficient markup, but if you
|
901 |
+
// want to use CSS to style the elements as if they were MathML, you
|
902 |
+
// might need to set this to true.
|
903 |
+
//
|
904 |
+
addMMLclasses: false,
|
905 |
+
|
906 |
+
//
|
907 |
+
// These values control how "chunky" the display of mathematical
|
908 |
+
// expressions will be.
|
909 |
+
//
|
910 |
+
// EqnChunk is the number of equations that will be typeset before
|
911 |
+
// they appear on screen. Larger values make for less visual flicker
|
912 |
+
// as the equations are drawn, but also mean longer delays before the
|
913 |
+
// reader sees anything.
|
914 |
+
//
|
915 |
+
// EqChunkFactor is the factor by which the EqnChunk will grow after each
|
916 |
+
// chunk is displayed.
|
917 |
+
//
|
918 |
+
// EqChunkDelay is the time (in milliseconds) to delay between chunks
|
919 |
+
// (to allow the browser to respond to other user interaction).
|
920 |
+
//
|
921 |
+
// Set EqnChunk to 1, EqnChunkFactor to 1, and EwnChunkDelay to 10 to get
|
922 |
+
// the behavior from MathJax v1.1 and below.
|
923 |
+
//
|
924 |
+
EqnChunk: 50,
|
925 |
+
EqnChunkFactor: 1.5,
|
926 |
+
EqnChunkDelay: 100,
|
927 |
+
|
928 |
+
// This option indicates whether MathJax should try to correct the
|
929 |
+
// x-height of equations to match the size of the surrounding text.
|
930 |
+
matchFontHeight: true,
|
931 |
+
|
932 |
+
//
|
933 |
+
// These settings control automatic line breaking. It is off by
|
934 |
+
// default, so only explicit line breaks are performed (via
|
935 |
+
// linebreak="newline" attributes on <mo> and <mspace> elements). To
|
936 |
+
// perform automatic line breaking on line expressions, set
|
937 |
+
// 'automatic' to 'true' below. The line breaks will be applied via a
|
938 |
+
// penalty-based heuristic, which does well, but isn't perfect. You
|
939 |
+
// might need to use linebreak="goodbreak" or linebreak="badbreak" by
|
940 |
+
// hand in order to get better effects. It is also possible to modify
|
941 |
+
// the penalty values; contact the MathJax user's forum for details.
|
942 |
+
//
|
943 |
+
linebreaks: {
|
944 |
+
|
945 |
+
//
|
946 |
+
// This controls the automatic breaking of expressions:
|
947 |
+
// when false, only process linebreak="newline",
|
948 |
+
// when true, line breaks are inserted automatically in long expressions.
|
949 |
+
//
|
950 |
+
automatic: false,
|
951 |
+
|
952 |
+
//
|
953 |
+
// This controls how wide the lines of mathematics can be
|
954 |
+
//
|
955 |
+
// Use an explicit width like "30em" for a fixed width.
|
956 |
+
// Use "container" to compute the size from the containing element.
|
957 |
+
// Use "nn% container" for a portion of the container.
|
958 |
+
// Use "nn%" for a portion of the window size.
|
959 |
+
//
|
960 |
+
// The container-based widths may be slower, and may not produce the
|
961 |
+
// expected results if the layout width changes due to the removal
|
962 |
+
// of previews or inclusion of mathematics during typesetting.
|
963 |
+
//
|
964 |
+
width: "container"
|
965 |
+
},
|
966 |
+
|
967 |
+
//
|
968 |
+
// These are the styles used for merror elements in SVG output. Note
|
969 |
+
// that only a limited number of style attributes are supported by
|
970 |
+
// SVG, but you can at least change the colors and borders.
|
971 |
+
//
|
972 |
+
//
|
973 |
+
merrorStyle: {
|
974 |
+
fontSize:"90%", color:"#C00", background:"#FF8",
|
975 |
+
border: "1px solid #C00", padding:"3px"
|
976 |
+
},
|
977 |
+
|
978 |
+
//
|
979 |
+
// This allows you to define or modify the styles used to display
|
980 |
+
// various math elements created by MathJax.
|
981 |
+
//
|
982 |
+
// Example:
|
983 |
+
// styles: {
|
984 |
+
// ".MathJax .merror": {
|
985 |
+
// color: "#CC0000",
|
986 |
+
// border: "1px solid #CC0000"
|
987 |
+
// }
|
988 |
+
// }
|
989 |
+
//
|
990 |
+
styles: {},
|
991 |
+
|
992 |
+
//
|
993 |
+
// Configuration for <maction> tooltips
|
994 |
+
// (see also the #MathJax_Tooltip CSS in MathJax/jax/output/SVG/config.js,
|
995 |
+
// which can be overridden using the styles values above).
|
996 |
+
//
|
997 |
+
tooltip: {
|
998 |
+
delayPost: 600, // milliseconds delay before tooltip is posted after mouseover
|
999 |
+
delayClear: 600, // milliseconds delay before tooltip is cleared after mouseout
|
1000 |
+
offsetX: 10, offsetY: 5 // pixels to offset tooltip from mouse position
|
1001 |
+
}
|
1002 |
+
},
|
1003 |
+
|
1004 |
+
//============================================================================
|
1005 |
+
//
|
1006 |
+
// These parameters control the contextual menus that are available on the
|
1007 |
+
// mathematics within the page (provided the showMathMenu value is true above).
|
1008 |
+
//
|
1009 |
+
MathMenu: {
|
1010 |
+
//
|
1011 |
+
// This is the hover delay for the display of submenus in the
|
1012 |
+
// contextual menu. When the mouse is still over a submenu label for
|
1013 |
+
// this long, the menu will appear. (The menu also will appear if you
|
1014 |
+
// click on the label.) It is in milliseconds.
|
1015 |
+
//
|
1016 |
+
delay: 150,
|
1017 |
+
|
1018 |
+
//
|
1019 |
+
// This is the URL for the MathJax Help menu item.
|
1020 |
+
//
|
1021 |
+
helpURL: "http://www.mathjax.org/help-v2/user/",
|
1022 |
+
|
1023 |
+
//
|
1024 |
+
// These control whether the "Math Renderer", "MathPlayer", "Font
|
1025 |
+
// Preferences", "Contextual Menu", and "Discoverable" menu items will
|
1026 |
+
// be displayed or not.
|
1027 |
+
//
|
1028 |
+
showRenderer: true,
|
1029 |
+
showMathPlayer: true,
|
1030 |
+
showFontMenu: false,
|
1031 |
+
showContext: false,
|
1032 |
+
showDiscoverable: false,
|
1033 |
+
|
1034 |
+
//
|
1035 |
+
// These are the settings for the Annotation menu. If the <math> root has
|
1036 |
+
// a <semantics> child that contains one of the following annotation
|
1037 |
+
// formats, the source will be available via the "Show Math As" menu.
|
1038 |
+
// Each format has a list of possible encodings.
|
1039 |
+
//
|
1040 |
+
semanticsAnnotations: {
|
1041 |
+
"TeX": ["TeX", "LaTeX", "application/x-tex"],
|
1042 |
+
"StarMath": ["StarMath 5.0"],
|
1043 |
+
"Maple": ["Maple"],
|
1044 |
+
"ContentMathML": ["MathML-Content", "application/mathml-content+xml"],
|
1045 |
+
"OpenMath": ["OpenMath"]
|
1046 |
+
},
|
1047 |
+
|
1048 |
+
//
|
1049 |
+
// These are the settings for the Show Source window. The initial
|
1050 |
+
// width and height will be reset after the source is shown in an
|
1051 |
+
// attempt to make the window fit the output better.
|
1052 |
+
//
|
1053 |
+
windowSettings: {
|
1054 |
+
status: "no", toolbar: "no", locationbar: "no", menubar: "no",
|
1055 |
+
directories: "no", personalbar: "no", resizable: "yes", scrollbars: "yes",
|
1056 |
+
width: 100, height: 50
|
1057 |
+
},
|
1058 |
+
|
1059 |
+
//
|
1060 |
+
// This allows you to change the CSS that controls the menu
|
1061 |
+
// appearance. See the extensions/MathMenu.js file for details
|
1062 |
+
// of the default settings.
|
1063 |
+
//
|
1064 |
+
styles: {}
|
1065 |
+
|
1066 |
+
},
|
1067 |
+
|
1068 |
+
//============================================================================
|
1069 |
+
//
|
1070 |
+
// These parameters control the contextual menus that are available on the
|
1071 |
+
// mathematics within the page (provided the showMathMenu value is true above).
|
1072 |
+
//
|
1073 |
+
MathEvents: {
|
1074 |
+
//
|
1075 |
+
// This is the time required for the mouse to be held still over a
|
1076 |
+
// typeset equation in order for it to count as a hover (used when the
|
1077 |
+
// zoom trigger is "Hover"). It is in milliseconds.
|
1078 |
+
//
|
1079 |
+
hover: 500
|
1080 |
+
},
|
1081 |
+
|
1082 |
+
//============================================================================
|
1083 |
+
//
|
1084 |
+
// These parameters control the MMLorHTML configuration file.
|
1085 |
+
// NOTE: if you add MMLorHTML.js to the config array above,
|
1086 |
+
// you must REMOVE the output jax from the jax array.
|
1087 |
+
//
|
1088 |
+
MMLorHTML: {
|
1089 |
+
//
|
1090 |
+
// The output jax that is to be preferred when both are possible
|
1091 |
+
// (set to "MML" for native MathML, "HTML" for MathJax's HTML-CSS output jax).
|
1092 |
+
//
|
1093 |
+
prefer: {
|
1094 |
+
MSIE: "MML",
|
1095 |
+
Firefox: "HTML",
|
1096 |
+
Opera: "HTML",
|
1097 |
+
Safari: "HTML",
|
1098 |
+
Chrome: "HTML",
|
1099 |
+
other: "HTML"
|
1100 |
+
}
|
1101 |
+
}
|
1102 |
+
});
|
1103 |
+
|
1104 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/default.js");
|
vendor/MathJax/config/local/local.js
ADDED
@@ -0,0 +1,40 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax/config/local/local.js
|
7 |
+
*
|
8 |
+
* Include changes and configuration local to your installation
|
9 |
+
* in this file. For example, common macros can be defined here
|
10 |
+
* (see below). To use this file, add "local/local.js" to the
|
11 |
+
* config array in MathJax.js or your MathJax.Hub.Config() call.
|
12 |
+
*
|
13 |
+
* ---------------------------------------------------------------------
|
14 |
+
*
|
15 |
+
* Copyright (c) 2009-2018 The MathJax Consortium
|
16 |
+
*
|
17 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
18 |
+
* you may not use this file except in compliance with the License.
|
19 |
+
* You may obtain a copy of the License at
|
20 |
+
*
|
21 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
22 |
+
*
|
23 |
+
* Unless required by applicable law or agreed to in writing, software
|
24 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
25 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
26 |
+
* See the License for the specific language governing permissions and
|
27 |
+
* limitations under the License.
|
28 |
+
*/
|
29 |
+
|
30 |
+
|
31 |
+
MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
32 |
+
var TEX = MathJax.InputJax.TeX;
|
33 |
+
|
34 |
+
// place macros here. E.g.:
|
35 |
+
// TEX.Macro("R","{\\bf R}");
|
36 |
+
// TEX.Macro("op","\\mathop{\\rm #1}",1); // a macro with 1 parameter
|
37 |
+
|
38 |
+
});
|
39 |
+
|
40 |
+
MathJax.Ajax.loadComplete("[MathJax]/config/local/local.js");
|
vendor/MathJax/extensions/AssistiveMML.js
ADDED
@@ -0,0 +1,161 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax/extensions/AssistiveMML.js
|
7 |
+
*
|
8 |
+
* Implements an extension that inserts hidden MathML into the
|
9 |
+
* page for screen readers or other asistive technology.
|
10 |
+
*
|
11 |
+
* ---------------------------------------------------------------------
|
12 |
+
*
|
13 |
+
* Copyright (c) 2015-2018 The MathJax Consortium
|
14 |
+
*
|
15 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
16 |
+
* you may not use this file except in compliance with the License.
|
17 |
+
* You may obtain a copy of the License at
|
18 |
+
*
|
19 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
20 |
+
*
|
21 |
+
* Unless required by applicable law or agreed to in writing, software
|
22 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
23 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
24 |
+
* See the License for the specific language governing permissions and
|
25 |
+
* limitations under the License.
|
26 |
+
*/
|
27 |
+
|
28 |
+
(function (AJAX,CALLBACK,HUB,HTML) {
|
29 |
+
var SETTINGS = HUB.config.menuSettings;
|
30 |
+
|
31 |
+
var AssistiveMML = MathJax.Extension["AssistiveMML"] = {
|
32 |
+
version: "2.7.5",
|
33 |
+
|
34 |
+
config: HUB.CombineConfig("AssistiveMML",{
|
35 |
+
disabled: false,
|
36 |
+
styles: {
|
37 |
+
".MJX_Assistive_MathML": {
|
38 |
+
position:"absolute!important",
|
39 |
+
top: 0, left: 0,
|
40 |
+
clip: (HUB.Browser.isMSIE && (document.documentMode||0) < 8 ?
|
41 |
+
"rect(1px 1px 1px 1px)" : "rect(1px, 1px, 1px, 1px)"),
|
42 |
+
padding: "1px 0 0 0!important",
|
43 |
+
border: "0!important",
|
44 |
+
height: "1px!important",
|
45 |
+
width: "1px!important",
|
46 |
+
overflow: "hidden!important",
|
47 |
+
display:"block!important",
|
48 |
+
//
|
49 |
+
// Don't allow the assistive MathML become part of the selection
|
50 |
+
//
|
51 |
+
"-webkit-touch-callout": "none",
|
52 |
+
"-webkit-user-select": "none",
|
53 |
+
"-khtml-user-select": "none",
|
54 |
+
"-moz-user-select": "none",
|
55 |
+
"-ms-user-select": "none",
|
56 |
+
"user-select": "none"
|
57 |
+
},
|
58 |
+
".MJX_Assistive_MathML.MJX_Assistive_MathML_Block": {
|
59 |
+
width: "100%!important"
|
60 |
+
}
|
61 |
+
}
|
62 |
+
}),
|
63 |
+
|
64 |
+
Config: function () {
|
65 |
+
if (!this.config.disabled && SETTINGS.assistiveMML == null)
|
66 |
+
HUB.Config({menuSettings:{assistiveMML:true}});
|
67 |
+
AJAX.Styles(this.config.styles);
|
68 |
+
HUB.Register.MessageHook("End Math",function (msg) {
|
69 |
+
if (SETTINGS.assistiveMML) return AssistiveMML.AddAssistiveMathML(msg[1])
|
70 |
+
});
|
71 |
+
},
|
72 |
+
|
73 |
+
//
|
74 |
+
// This sets up a state object that lists the jax and index into the jax,
|
75 |
+
// and a dummy callback that is used to synchronizing with MathJax.
|
76 |
+
// It will be called when the jax are all processed, and that will
|
77 |
+
// let the MathJax queue continue (it will block until then).
|
78 |
+
//
|
79 |
+
AddAssistiveMathML: function (node) {
|
80 |
+
var state = {
|
81 |
+
jax: HUB.getAllJax(node), i: 0,
|
82 |
+
callback: MathJax.Callback({})
|
83 |
+
};
|
84 |
+
this.HandleMML(state);
|
85 |
+
return state.callback;
|
86 |
+
},
|
87 |
+
|
88 |
+
//
|
89 |
+
// This removes the data-mathml attribute and the assistive MathML from
|
90 |
+
// all the jax.
|
91 |
+
//
|
92 |
+
RemoveAssistiveMathML: function (node) {
|
93 |
+
var jax = HUB.getAllJax(node), frame;
|
94 |
+
for (var i = 0, m = jax.length; i < m; i++) {
|
95 |
+
frame = document.getElementById(jax[i].inputID+"-Frame");
|
96 |
+
if (frame && frame.getAttribute("data-mathml")) {
|
97 |
+
frame.removeAttribute("data-mathml");
|
98 |
+
if (frame.lastChild && frame.lastChild.className.match(/MJX_Assistive_MathML/))
|
99 |
+
frame.removeChild(frame.lastChild);
|
100 |
+
}
|
101 |
+
}
|
102 |
+
},
|
103 |
+
|
104 |
+
//
|
105 |
+
// For each jax in the state, look up the frame.
|
106 |
+
// If the jax doesn't use NativeMML and hasn't already been handled:
|
107 |
+
// Get the MathML for the jax, taking resets into account.
|
108 |
+
// Add a data-mathml attribute to the frame, and
|
109 |
+
// Create a span that is not visible on screen and put the MathML in it,
|
110 |
+
// and add it to the frame.
|
111 |
+
// When all the jax are processed, call the callback.
|
112 |
+
//
|
113 |
+
HandleMML: function (state) {
|
114 |
+
var m = state.jax.length, jax, mml, frame, span;
|
115 |
+
while (state.i < m) {
|
116 |
+
jax = state.jax[state.i];
|
117 |
+
frame = document.getElementById(jax.inputID+"-Frame");
|
118 |
+
if (jax.outputJax !== "NativeMML" && jax.outputJax !== "PlainSource" &&
|
119 |
+
frame && !frame.getAttribute("data-mathml")) {
|
120 |
+
try {
|
121 |
+
mml = jax.root.toMathML("").replace(/\n */g,"").replace(/<!--.*?-->/g,"");
|
122 |
+
} catch (err) {
|
123 |
+
if (!err.restart) throw err; // an actual error
|
124 |
+
return MathJax.Callback.After(["HandleMML",this,state],err.restart);
|
125 |
+
}
|
126 |
+
frame.setAttribute("data-mathml",mml);
|
127 |
+
span = HTML.addElement(frame,"span",{
|
128 |
+
isMathJax: true, unselectable: "on",
|
129 |
+
className: "MJX_Assistive_MathML"
|
130 |
+
+ (jax.root.Get("display") === "block" ? " MJX_Assistive_MathML_Block" : "")
|
131 |
+
});
|
132 |
+
try {span.innerHTML = mml} catch (err) {}
|
133 |
+
frame.style.position = "relative";
|
134 |
+
frame.setAttribute("role","presentation");
|
135 |
+
frame.firstChild.setAttribute("aria-hidden","true");
|
136 |
+
span.setAttribute("role","presentation");
|
137 |
+
}
|
138 |
+
state.i++;
|
139 |
+
}
|
140 |
+
state.callback();
|
141 |
+
}
|
142 |
+
|
143 |
+
};
|
144 |
+
|
145 |
+
HUB.Startup.signal.Post("AssistiveMML Ready");
|
146 |
+
|
147 |
+
})(MathJax.Ajax,MathJax.Callback,MathJax.Hub,MathJax.HTML);
|
148 |
+
|
149 |
+
//
|
150 |
+
// Make sure the toMathML extension is loaded before we signal
|
151 |
+
// the load complete for this extension. Then wait for the end
|
152 |
+
// of the user configuration before configuring this extension.
|
153 |
+
//
|
154 |
+
MathJax.Callback.Queue(
|
155 |
+
["Require",MathJax.Ajax,"[MathJax]/extensions/toMathML.js"],
|
156 |
+
["loadComplete",MathJax.Ajax,"[MathJax]/extensions/AssistiveMML.js"],
|
157 |
+
function () {
|
158 |
+
MathJax.Hub.Register.StartupHook("End Config",["Config",MathJax.Extension.AssistiveMML]);
|
159 |
+
}
|
160 |
+
);
|
161 |
+
|
vendor/MathJax/extensions/CHTML-preview.js
ADDED
@@ -0,0 +1,30 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax/extensions/CHTML-preview.js
|
7 |
+
*
|
8 |
+
* Backward compatibility with old CHTML-preview extension.
|
9 |
+
*
|
10 |
+
* ---------------------------------------------------------------------
|
11 |
+
*
|
12 |
+
* Copyright (c) 2014-2018 The MathJax Consortium
|
13 |
+
*
|
14 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
15 |
+
* you may not use this file except in compliance with the License.
|
16 |
+
* You may obtain a copy of the License at
|
17 |
+
*
|
18 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
19 |
+
*
|
20 |
+
* Unless required by applicable law or agreed to in writing, software
|
21 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
22 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
23 |
+
* See the License for the specific language governing permissions and
|
24 |
+
* limitations under the License.
|
25 |
+
*/
|
26 |
+
|
27 |
+
MathJax.Callback.Queue(
|
28 |
+
["Require",MathJax.Ajax,"[MathJax]/extensions/fast-preview.js"],
|
29 |
+
["loadComplete",MathJax.Ajax,"[MathJax]/extensions/CHTML-preview.js"]
|
30 |
+
);
|
vendor/MathJax/extensions/FontWarnings.js
ADDED
@@ -0,0 +1,313 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax/extensions/FontWarnings.js
|
7 |
+
*
|
8 |
+
* Implements a font warning message window that appears when
|
9 |
+
* the image fonts, no fonts, or web fonts are used, informing
|
10 |
+
* the user where to download the fonts, or to update to a more
|
11 |
+
* modern browser. The window will fade out automatically after
|
12 |
+
* a time, and the user can dismiss it by a close box.
|
13 |
+
*
|
14 |
+
* To include font warning messages, add "FontWarnings.js" to the
|
15 |
+
* extensions array in your MathJax configuration.
|
16 |
+
*
|
17 |
+
* You can customize the warning messages in a number of ways. Use the
|
18 |
+
* FontWarnings section of the configuration to specify any of the items
|
19 |
+
* shown in the CONFIG variable below. These include
|
20 |
+
*
|
21 |
+
* messageStyle the style to apply to the warning box that is
|
22 |
+
* displayed when MathJax uses one of its fallback
|
23 |
+
* methods.
|
24 |
+
*
|
25 |
+
* removeAfter the amount of time to show the warning message (in ms)
|
26 |
+
* fadeoutTime how long the message should take to fade out
|
27 |
+
* fadeoutSteps how many separate steps to use during the fade out
|
28 |
+
* (set to 0 to use no fadeout and simply remove the window)
|
29 |
+
*
|
30 |
+
* Messages stores the descriptions of the messages to use for the
|
31 |
+
* various warnings (webFonts, imageFonts, and noFonts).
|
32 |
+
* These are arrays of strings to be inserted into the window,
|
33 |
+
* or identifiers within brackets, which refer to the HTML
|
34 |
+
* snippets in the HTML section described below. To disable a
|
35 |
+
* specific message, set its value to null (see example below).
|
36 |
+
*
|
37 |
+
* HTML stores snippets of HTML descriptions for various
|
38 |
+
* common parts of the error messages. These include
|
39 |
+
* the closeBox, the message about web fonts being available
|
40 |
+
* in modern browser, and messages about downloadable fonts.
|
41 |
+
* The STIX and TeX font messages are used when only one
|
42 |
+
* of these is in the availableFonts list. The data for these
|
43 |
+
* are arrays of either strings to include or a description of
|
44 |
+
* an HTML item enclosed in square brackets. That description
|
45 |
+
* has (up to) three parts: the name of the tag to be included,
|
46 |
+
* a list (enclosed in braces) of attributes and their values
|
47 |
+
* to be set on the tag (optional), and an array of the contents
|
48 |
+
* of the tag (optional). See the definitions below for examples.
|
49 |
+
*
|
50 |
+
* For example,
|
51 |
+
*
|
52 |
+
* MathJax.Hub.Config({
|
53 |
+
* ...
|
54 |
+
* extensions: ["FontWarnings.js"],
|
55 |
+
* FontWarnings: {
|
56 |
+
* removeAfter: 20*1000, // 20 seconds
|
57 |
+
* messageStyle: {
|
58 |
+
* border: "2px solid black",
|
59 |
+
* padding: "2em"
|
60 |
+
* },
|
61 |
+
* Message: {
|
62 |
+
* webFont: null // no webfont messages (only image and no fonts)
|
63 |
+
* }
|
64 |
+
* }
|
65 |
+
* });
|
66 |
+
*
|
67 |
+
* would extend the time the message is displayed from 12 seconds to 20,
|
68 |
+
* and changes the border to a solid black one, with 2em of padding
|
69 |
+
* rather than the default of 1em.
|
70 |
+
*
|
71 |
+
* ---------------------------------------------------------------------
|
72 |
+
*
|
73 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
74 |
+
*
|
75 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
76 |
+
* you may not use this file except in compliance with the License.
|
77 |
+
* You may obtain a copy of the License at
|
78 |
+
*
|
79 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
80 |
+
*
|
81 |
+
* Unless required by applicable law or agreed to in writing, software
|
82 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
83 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
84 |
+
* See the License for the specific language governing permissions and
|
85 |
+
* limitations under the License.
|
86 |
+
*/
|
87 |
+
|
88 |
+
(function (HUB,HTML) {
|
89 |
+
var VERSION = "2.7.5";
|
90 |
+
|
91 |
+
var STIXURL = "http://www.stixfonts.org/";
|
92 |
+
var MATHJAXURL = "https://github.com/mathjax/MathJax/tree/master/fonts/HTML-CSS/TeX/otf";
|
93 |
+
|
94 |
+
var CONFIG = HUB.CombineConfig("FontWarnings",{
|
95 |
+
//
|
96 |
+
// The CSS for the message window
|
97 |
+
//
|
98 |
+
messageStyle: {
|
99 |
+
position:"fixed", bottom:"4em", left:"3em", width:"40em",
|
100 |
+
border: "3px solid #880000", "background-color": "#E0E0E0", color: "black",
|
101 |
+
padding: "1em", "font-size":"small", "white-space":"normal",
|
102 |
+
|
103 |
+
"border-radius": ".75em", // Opera 10.5 and IE9
|
104 |
+
"-webkit-border-radius": ".75em", // Safari and Chrome
|
105 |
+
"-moz-border-radius": ".75em", // Firefox
|
106 |
+
"-khtml-border-radius": ".75em", // Konqueror
|
107 |
+
|
108 |
+
"box-shadow": "4px 4px 10px #AAAAAA", // Opera 10.5 and IE9
|
109 |
+
"-webkit-box-shadow": "4px 4px 10px #AAAAAA", // Safari 3 and Chrome
|
110 |
+
"-moz-box-shadow": "4px 4px 10px #AAAAAA", // Forefox 3.5
|
111 |
+
"-khtml-box-shadow": "4px 4px 10px #AAAAAA", // Konqueror
|
112 |
+
filter: "progid:DXImageTransform.Microsoft.dropshadow(OffX=3, OffY=3, Color='gray', Positive='true')" // IE
|
113 |
+
},
|
114 |
+
|
115 |
+
//
|
116 |
+
// The messages for the various situations
|
117 |
+
//
|
118 |
+
Message: {
|
119 |
+
|
120 |
+
webFont: [
|
121 |
+
["closeBox"],
|
122 |
+
["webFont",
|
123 |
+
"MathJax is using web-based fonts to display the mathematics "+
|
124 |
+
"on this page. These take time to download, so the page would "+
|
125 |
+
"render faster if you installed math fonts directly in your "+
|
126 |
+
"system's font folder."],
|
127 |
+
["fonts"]
|
128 |
+
],
|
129 |
+
|
130 |
+
imageFonts: [
|
131 |
+
["closeBox"],
|
132 |
+
["imageFonts",
|
133 |
+
"MathJax is using its image fonts rather than local or web-based fonts. "+
|
134 |
+
"This will render slower than usual, and the mathematics may not print "+
|
135 |
+
"at the full resolution of your printer."],
|
136 |
+
["fonts"],
|
137 |
+
["webFonts"]
|
138 |
+
],
|
139 |
+
|
140 |
+
noFonts: [
|
141 |
+
["closeBox"],
|
142 |
+
["noFonts",
|
143 |
+
"MathJax is unable to locate a font to use to display "+
|
144 |
+
"its mathematics, and image fonts are not available, so it "+
|
145 |
+
"is falling back on generic unicode characters in hopes that "+
|
146 |
+
"your browser will be able to display them. Some characters "+
|
147 |
+
"may not show up properly, or possibly not at all."],
|
148 |
+
["fonts"],
|
149 |
+
["webFonts"]
|
150 |
+
]
|
151 |
+
},
|
152 |
+
|
153 |
+
//
|
154 |
+
// HTML objects that can be referred to in the message definitions
|
155 |
+
//
|
156 |
+
HTML: {
|
157 |
+
//
|
158 |
+
// The definition of the close box
|
159 |
+
//
|
160 |
+
closeBox: [[
|
161 |
+
"div",{
|
162 |
+
style: {
|
163 |
+
position:"absolute", overflow:"hidden", top:".1em", right:".1em",
|
164 |
+
border: "1px outset", width:"1em", height:"1em",
|
165 |
+
"text-align": "center", cursor: "pointer",
|
166 |
+
"background-color": "#EEEEEE", color:"#606060",
|
167 |
+
|
168 |
+
"border-radius": ".5em", // Opera 10.5
|
169 |
+
"-webkit-border-radius": ".5em", // Safari and Chrome
|
170 |
+
"-moz-border-radius": ".5em", // Firefox
|
171 |
+
"-khtml-border-radius": ".5em" // Konqueror
|
172 |
+
},
|
173 |
+
onclick: function () {
|
174 |
+
if (DATA.div && DATA.fade === 0)
|
175 |
+
{if (DATA.timer) {clearTimeout(DATA.timer)}; DATA.div.style.display = "none"}
|
176 |
+
}
|
177 |
+
},
|
178 |
+
[["span",{style:{position:"relative", bottom:".2em"}},["x"]]]
|
179 |
+
]],
|
180 |
+
|
181 |
+
webFonts: [
|
182 |
+
["p"],
|
183 |
+
["webFonts",
|
184 |
+
"Most modern browsers allow for fonts to be downloaded over the web. "+
|
185 |
+
"Updating to a more recent version of your browser (or changing "+
|
186 |
+
"browsers) could improve the quality of the mathematics on this page."
|
187 |
+
]
|
188 |
+
],
|
189 |
+
|
190 |
+
fonts: [
|
191 |
+
["p"],
|
192 |
+
["fonts",
|
193 |
+
"MathJax can use either the [STIX fonts](%1) or the [MathJax TeX fonts](%2). " +
|
194 |
+
"Download and install one of those fonts to improve your MathJax experience.",
|
195 |
+
STIXURL,MATHJAXURL
|
196 |
+
]
|
197 |
+
],
|
198 |
+
|
199 |
+
STIXfonts: [
|
200 |
+
["p"],
|
201 |
+
["STIXPage",
|
202 |
+
"This page is designed to use the [STIX fonts](%1). " +
|
203 |
+
"Download and install those fonts to improve your MathJax experience.",
|
204 |
+
STIXURL
|
205 |
+
]
|
206 |
+
],
|
207 |
+
|
208 |
+
TeXfonts: [
|
209 |
+
["p"],
|
210 |
+
["TeXPage",
|
211 |
+
"This page is designed to use the [MathJax TeX fonts](%1). " +
|
212 |
+
"Download and install those fonts to improve your MathJax experience.",
|
213 |
+
MATHJAXURL
|
214 |
+
]
|
215 |
+
]
|
216 |
+
|
217 |
+
},
|
218 |
+
|
219 |
+
removeAfter: 12*1000, // time to show message (in ms)
|
220 |
+
fadeoutSteps: 10, // fade-out steps
|
221 |
+
fadeoutTime: 1.5*1000 // fadeout over this amount of time (in ms)
|
222 |
+
|
223 |
+
});
|
224 |
+
if (MathJax.Hub.Browser.isIE9 && document.documentMode >= 9)
|
225 |
+
{delete CONFIG.messageStyle.filter}
|
226 |
+
|
227 |
+
//
|
228 |
+
// Data for the window
|
229 |
+
//
|
230 |
+
var DATA = {
|
231 |
+
div: null, // the message window, when displayed
|
232 |
+
fade: 0 // number of fade-out steps so far
|
233 |
+
};
|
234 |
+
|
235 |
+
//
|
236 |
+
// Create the message window and start the fade-out timer
|
237 |
+
//
|
238 |
+
var CREATEMESSAGE = function (data) {
|
239 |
+
if (DATA.div) return;
|
240 |
+
var HTMLCSS = MathJax.OutputJax["HTML-CSS"], frame = document.body;
|
241 |
+
if (HUB.Browser.isMSIE) {
|
242 |
+
if (CONFIG.messageStyle.position === "fixed") {
|
243 |
+
MathJax.Message.Init(); // make sure MathJax_MSIE_frame exists
|
244 |
+
frame = document.getElementById("MathJax_MSIE_Frame") || frame;
|
245 |
+
if (frame !== document.body) {CONFIG.messageStyle.position = "absolute"}
|
246 |
+
}
|
247 |
+
} else {delete CONFIG.messageStyle.filter}
|
248 |
+
CONFIG.messageStyle.maxWidth = (document.body.clientWidth-75) + "px";
|
249 |
+
var i = 0; while (i < data.length) {
|
250 |
+
if (MathJax.Object.isArray(data[i])) {
|
251 |
+
if (data[i].length === 1 && CONFIG.HTML[data[i][0]]) {
|
252 |
+
data.splice.apply(data,[i,1].concat(CONFIG.HTML[data[i][0]]));
|
253 |
+
} else if (typeof data[i][1] === "string") {
|
254 |
+
var message = MathJax.Localization.lookupPhrase(["FontWarnings",data[i][0]],data[i][1]);
|
255 |
+
message = MathJax.Localization.processMarkdown(message,data[i].slice(2),"FontWarnings");
|
256 |
+
data.splice.apply(data,[i,1].concat(message));
|
257 |
+
i += message.length;
|
258 |
+
} else {i++}
|
259 |
+
} else {i++}
|
260 |
+
}
|
261 |
+
DATA.div = HTMLCSS.addElement(frame,"div",
|
262 |
+
{id:"MathJax_FontWarning",style:CONFIG.messageStyle},data);
|
263 |
+
MathJax.Localization.setCSS(DATA.div);
|
264 |
+
if (CONFIG.removeAfter) {
|
265 |
+
HUB.Register.StartupHook("End",function ()
|
266 |
+
{DATA.timer = setTimeout(FADEOUT,CONFIG.removeAfter)});
|
267 |
+
}
|
268 |
+
HTML.Cookie.Set("fontWarn",{warned:true});
|
269 |
+
};
|
270 |
+
|
271 |
+
//
|
272 |
+
// Set the opacity based on the number of steps taken so far
|
273 |
+
// and remove the window when it gets to 0
|
274 |
+
//
|
275 |
+
var FADEOUT = function () {
|
276 |
+
DATA.fade++; if (DATA.timer) {delete DATA.timer}
|
277 |
+
if (DATA.fade < CONFIG.fadeoutSteps) {
|
278 |
+
var opacity = 1 - DATA.fade/CONFIG.fadeoutSteps;
|
279 |
+
DATA.div.style.opacity = opacity;
|
280 |
+
DATA.div.style.filter = "alpha(opacity="+Math.floor(100*opacity)+")";
|
281 |
+
setTimeout(FADEOUT,CONFIG.fadeoutTime/CONFIG.fadeoutSteps);
|
282 |
+
} else {
|
283 |
+
DATA.div.style.display = "none";
|
284 |
+
}
|
285 |
+
};
|
286 |
+
|
287 |
+
//
|
288 |
+
// Check that we haven't already issued a warning
|
289 |
+
//
|
290 |
+
if (!HTML.Cookie.Get("fontWarn").warned) {
|
291 |
+
//
|
292 |
+
// Hook into the Startup signal and look for font warning messages.
|
293 |
+
// When one comes, issue the correct message.
|
294 |
+
//
|
295 |
+
HUB.Startup.signal.Interest(function (message) {
|
296 |
+
if (message.match(/HTML-CSS Jax - /) && !DATA.div) {
|
297 |
+
var HTMLCSS = MathJax.OutputJax["HTML-CSS"], FONTS = HTMLCSS.config.availableFonts, MSG;
|
298 |
+
var localFonts = (FONTS && FONTS.length);
|
299 |
+
if (!localFonts) {CONFIG.HTML.fonts = [""]}
|
300 |
+
else if (FONTS.length === 1) {CONFIG.HTML.fonts = CONFIG.HTML[FONTS[0]+"fonts"]}
|
301 |
+
if (HTMLCSS.allowWebFonts) {CONFIG.HTML.webfonts = [""]}
|
302 |
+
if (message.match(/- Web-Font/)) {if (localFonts) {MSG = "webFont"}}
|
303 |
+
else if (message.match(/- using image fonts/)) {MSG = "imageFonts"}
|
304 |
+
else if (message.match(/- no valid font/)) {MSG = "noFonts"}
|
305 |
+
if (MSG && CONFIG.Message[MSG])
|
306 |
+
{MathJax.Localization.loadDomain("FontWarnings",[CREATEMESSAGE,CONFIG.Message[MSG]])}
|
307 |
+
}
|
308 |
+
});
|
309 |
+
}
|
310 |
+
|
311 |
+
})(MathJax.Hub,MathJax.HTML);
|
312 |
+
|
313 |
+
MathJax.Ajax.loadComplete("[MathJax]/extensions/FontWarnings.js");
|
vendor/MathJax/extensions/HTML-CSS/handle-floats.js
ADDED
@@ -0,0 +1,49 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax/extensions/HTML-CSS/handle-floats.js
|
7 |
+
*
|
8 |
+
* This extension allows HTML-CSS output to deal with floating elements
|
9 |
+
* better. In particular, when there are tags or equation numbers, these
|
10 |
+
* would overlap floating elements, but with this extension, the width of
|
11 |
+
* the line should properly correspond to the amount of space remaining.
|
12 |
+
*
|
13 |
+
* To load it, include
|
14 |
+
*
|
15 |
+
* "HTML-CSS": {
|
16 |
+
* extensions: ["handle-floats.js"]
|
17 |
+
* }
|
18 |
+
*
|
19 |
+
* in your configuration.
|
20 |
+
*
|
21 |
+
* ---------------------------------------------------------------------
|
22 |
+
*
|
23 |
+
* Copyright (c) 2012-2018 The MathJax Consortium
|
24 |
+
*
|
25 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
26 |
+
* you may not use this file except in compliance with the License.
|
27 |
+
* You may obtain a copy of the License at
|
28 |
+
*
|
29 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
30 |
+
*
|
31 |
+
* Unless required by applicable law or agreed to in writing, software
|
32 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
33 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
34 |
+
* See the License for the specific language governing permissions and
|
35 |
+
* limitations under the License.
|
36 |
+
*/
|
37 |
+
|
38 |
+
|
39 |
+
MathJax.Extension["HTML-CSS/handle-floats"] = {
|
40 |
+
version: "2.7.5"
|
41 |
+
};
|
42 |
+
|
43 |
+
//
|
44 |
+
// This file is now obsolete, since the HTML-CSS output already handles
|
45 |
+
// floating elements properly.
|
46 |
+
//
|
47 |
+
|
48 |
+
MathJax.Hub.Startup.signal.Post("HTML-CSS handle-floats Ready");
|
49 |
+
MathJax.Ajax.loadComplete("[MathJax]/extensions/HTML-CSS/handle-floats.js");
|
vendor/MathJax/extensions/HelpDialog.js
ADDED
@@ -0,0 +1,203 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* MathJax/extensions/HelpDialog.js
|
4 |
+
*
|
5 |
+
* Implements the MathJax Help dialog box.
|
6 |
+
*
|
7 |
+
* ---------------------------------------------------------------------
|
8 |
+
*
|
9 |
+
* Copyright (c) 2013-2018 The MathJax Consortium
|
10 |
+
*
|
11 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
12 |
+
* you may not use this file except in compliance with the License.
|
13 |
+
* You may obtain a copy of the License at
|
14 |
+
*
|
15 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
16 |
+
*
|
17 |
+
* Unless required by applicable law or agreed to in writing, software
|
18 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
19 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
20 |
+
* See the License for the specific language governing permissions and
|
21 |
+
* limitations under the License.
|
22 |
+
*/
|
23 |
+
|
24 |
+
(function (HUB,HTML,AJAX,OUTPUT,LOCALE) {
|
25 |
+
|
26 |
+
var HELP = MathJax.Extension.Help = {
|
27 |
+
version: "2.7.5"
|
28 |
+
};
|
29 |
+
|
30 |
+
var STIXURL = "http://www.stixfonts.org/";
|
31 |
+
var MENU = MathJax.Menu;
|
32 |
+
var FALSE, KEY;
|
33 |
+
HUB.Register.StartupHook("MathEvents Ready",function () {
|
34 |
+
FALSE = MathJax.Extension.MathEvents.Event.False;
|
35 |
+
KEY = MathJax.Extension.MathEvents.Event.KEY;
|
36 |
+
});
|
37 |
+
|
38 |
+
|
39 |
+
var CONFIG = HUB.CombineConfig("HelpDialog",{
|
40 |
+
|
41 |
+
styles: {
|
42 |
+
"#MathJax_Help": {
|
43 |
+
position:"fixed", left:"50%", width:"auto", "max-width": "90%", "text-align":"center",
|
44 |
+
border:"3px outset", padding:"1em 2em", "background-color":"#DDDDDD", color:"black",
|
45 |
+
cursor: "default", "font-family":"message-box", "font-size":"120%",
|
46 |
+
"font-style":"normal", "text-indent":0, "text-transform":"none",
|
47 |
+
"line-height":"normal", "letter-spacing":"normal", "word-spacing":"normal",
|
48 |
+
"word-wrap":"normal", "white-space":"wrap", "float":"none", "z-index":201,
|
49 |
+
|
50 |
+
"border-radius": "15px", // Opera 10.5 and IE9
|
51 |
+
"-webkit-border-radius": "15px", // Safari and Chrome
|
52 |
+
"-moz-border-radius": "15px", // Firefox
|
53 |
+
"-khtml-border-radius": "15px", // Konqueror
|
54 |
+
|
55 |
+
"box-shadow":"0px 10px 20px #808080", // Opera 10.5 and IE9
|
56 |
+
"-webkit-box-shadow":"0px 10px 20px #808080", // Safari 3 and Chrome
|
57 |
+
"-moz-box-shadow":"0px 10px 20px #808080", // Forefox 3.5
|
58 |
+
"-khtml-box-shadow":"0px 10px 20px #808080", // Konqueror
|
59 |
+
filter: "progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')" // IE
|
60 |
+
},
|
61 |
+
"#MathJax_Help.MathJax_MousePost": {
|
62 |
+
outline:"none"
|
63 |
+
},
|
64 |
+
|
65 |
+
"#MathJax_HelpContent": {
|
66 |
+
overflow:"auto", "text-align":"left", "font-size":"80%",
|
67 |
+
padding:".4em .6em", border:"1px inset", margin:"1em 0px",
|
68 |
+
"max-height":"20em", "max-width":"30em", "background-color":"#EEEEEE"
|
69 |
+
},
|
70 |
+
|
71 |
+
"#MathJax_HelpClose": {
|
72 |
+
position:"absolute", top:".2em", right:".2em",
|
73 |
+
cursor:"pointer",
|
74 |
+
display:"inline-block",
|
75 |
+
border:"2px solid #AAA",
|
76 |
+
"border-radius":"18px",
|
77 |
+
"-webkit-border-radius": "18px", // Safari and Chrome
|
78 |
+
"-moz-border-radius": "18px", // Firefox
|
79 |
+
"-khtml-border-radius": "18px", // Konqueror
|
80 |
+
"font-family":"'Courier New',Courier",
|
81 |
+
"font-size":"24px",
|
82 |
+
color:"#F0F0F0"
|
83 |
+
},
|
84 |
+
"#MathJax_HelpClose span": {
|
85 |
+
display:"block", "background-color":"#AAA", border:"1.5px solid",
|
86 |
+
"border-radius":"18px",
|
87 |
+
"-webkit-border-radius": "18px", // Safari and Chrome
|
88 |
+
"-moz-border-radius": "18px", // Firefox
|
89 |
+
"-khtml-border-radius": "18px", // Konqueror
|
90 |
+
"line-height":0,
|
91 |
+
padding:"8px 0 6px" // may need to be browser-specific
|
92 |
+
},
|
93 |
+
"#MathJax_HelpClose:hover": {
|
94 |
+
color:"white!important",
|
95 |
+
border:"2px solid #CCC!important"
|
96 |
+
},
|
97 |
+
"#MathJax_HelpClose:hover span": {
|
98 |
+
"background-color":"#CCC!important"
|
99 |
+
},
|
100 |
+
"#MathJax_HelpClose:hover:focus": {
|
101 |
+
outline:"none"
|
102 |
+
}
|
103 |
+
}
|
104 |
+
});
|
105 |
+
|
106 |
+
/*
|
107 |
+
* Handle the Help Dialog box
|
108 |
+
*/
|
109 |
+
HELP.Dialog = function (event) {
|
110 |
+
LOCALE.loadDomain("HelpDialog",["Post",HELP,event]);
|
111 |
+
};
|
112 |
+
|
113 |
+
HELP.Post = function (event) {
|
114 |
+
this.div = MENU.Background(this);
|
115 |
+
var help = HTML.addElement(this.div,"div",{
|
116 |
+
id: "MathJax_Help", tabIndex: 0, onkeydown: HELP.Keydown
|
117 |
+
},LOCALE._("HelpDialog",[
|
118 |
+
["b",{style:{fontSize:"120%"}},[["Help","MathJax Help"]]],
|
119 |
+
["div",{id: "MathJax_HelpContent", tabIndex: 0},[
|
120 |
+
["p",{},[["MathJax",
|
121 |
+
"*MathJax* is a JavaScript library that allows page authors to include " +
|
122 |
+
"mathematics within their web pages. As a reader, you don't need to do " +
|
123 |
+
"anything to make that happen."]]
|
124 |
+
],
|
125 |
+
["p",{},[["Browsers",
|
126 |
+
"*Browsers*: MathJax works with all modern browsers including IE6+, Firefox 3+, " +
|
127 |
+
"Chrome 0.2+, Safari 2+, Opera 9.6+ and most mobile browsers."]]
|
128 |
+
],
|
129 |
+
["p",{},[["Menu",
|
130 |
+
"*Math Menu*: MathJax adds a contextual menu to equations. Right-click or " +
|
131 |
+
"CTRL-click on any mathematics to access the menu."]]
|
132 |
+
],
|
133 |
+
["div",{style:{"margin-left":"1em"}},[
|
134 |
+
["p",{},[["ShowMath",
|
135 |
+
"*Show Math As* allows you to view the formula's source markup " +
|
136 |
+
"for copy & paste (as MathML or in its original format)."]]
|
137 |
+
],
|
138 |
+
["p",{},[["Settings",
|
139 |
+
"*Settings* gives you control over features of MathJax, such as the " +
|
140 |
+
"size of the mathematics, and the mechanism used to display equations."]]
|
141 |
+
],
|
142 |
+
["p",{},[["Language",
|
143 |
+
"*Language* lets you select the language used by MathJax for its menus " +
|
144 |
+
"and warning messages."]]
|
145 |
+
],
|
146 |
+
]],
|
147 |
+
["p",{},[["Zoom",
|
148 |
+
"*Math Zoom*: If you are having difficulty reading an equation, MathJax can " +
|
149 |
+
"enlarge it to help you see it better."]]
|
150 |
+
],
|
151 |
+
["p",{},[["Accessibilty",
|
152 |
+
"*Accessibility*: MathJax will automatically work with screen readers to make " +
|
153 |
+
"mathematics accessible to the visually impaired."]]
|
154 |
+
],
|
155 |
+
["p",{},[["Fonts",
|
156 |
+
"*Fonts*: MathJax will use certain math fonts if they are installed on your " +
|
157 |
+
"computer; otherwise, it will use web-based fonts. Although not required, " +
|
158 |
+
"locally installed fonts will speed up typesetting. We suggest installing " +
|
159 |
+
"the [STIX fonts](%1).",STIXURL]]
|
160 |
+
]
|
161 |
+
]],
|
162 |
+
["a",{href:"http://www.mathjax.org/"},["www.mathjax.org"]],
|
163 |
+
["span",{id: "MathJax_HelpClose", onclick: HELP.Remove,
|
164 |
+
onkeydown: HELP.Keydown, tabIndex: 0, role: "button",
|
165 |
+
"aria-label": LOCALE._(["HelpDialog","CloseDialog"],"Close help dialog")},
|
166 |
+
[["span",{},["\u00D7"]]]
|
167 |
+
]
|
168 |
+
]));
|
169 |
+
if (event.type === "mouseup") help.className += " MathJax_MousePost";
|
170 |
+
help.focus();
|
171 |
+
LOCALE.setCSS(help);
|
172 |
+
var doc = (document.documentElement||{});
|
173 |
+
var H = window.innerHeight || doc.clientHeight || doc.scrollHeight || 0;
|
174 |
+
if (MENU.prototype.msieAboutBug) {
|
175 |
+
help.style.width = "20em"; help.style.position = "absolute";
|
176 |
+
help.style.left = Math.floor((document.documentElement.scrollWidth - help.offsetWidth)/2)+"px";
|
177 |
+
help.style.top = (Math.floor((H-help.offsetHeight)/3)+document.body.scrollTop)+"px";
|
178 |
+
} else {
|
179 |
+
help.style.marginLeft = Math.floor(-help.offsetWidth/2)+"px";
|
180 |
+
help.style.top = Math.floor((H-help.offsetHeight)/3)+"px";
|
181 |
+
}
|
182 |
+
};
|
183 |
+
HELP.Remove = function (event) {
|
184 |
+
if (HELP.div) {document.body.removeChild(HELP.div); delete HELP.div}
|
185 |
+
};
|
186 |
+
HELP.Keydown = function(event) {
|
187 |
+
if (event.keyCode === KEY.ESCAPE ||
|
188 |
+
(this.id === "MathJax_HelpClose" &&
|
189 |
+
(event.keyCode === KEY.SPACE || event.keyCode === KEY.RETURN))) {
|
190 |
+
HELP.Remove(event);
|
191 |
+
MENU.CurrentNode().focus();
|
192 |
+
FALSE(event);
|
193 |
+
}
|
194 |
+
},
|
195 |
+
|
196 |
+
MathJax.Callback.Queue(
|
197 |
+
HUB.Register.StartupHook("End Config",{}), // wait until config is complete
|
198 |
+
["Styles",AJAX,CONFIG.styles],
|
199 |
+
["Post",HUB.Startup.signal,"HelpDialog Ready"],
|
200 |
+
["loadComplete",AJAX,"[MathJax]/extensions/HelpDialog.js"]
|
201 |
+
);
|
202 |
+
|
203 |
+
})(MathJax.Hub,MathJax.HTML,MathJax.Ajax,MathJax.OutputJax,MathJax.Localization);
|
vendor/MathJax/extensions/MatchWebFonts.js
ADDED
@@ -0,0 +1,309 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax/extensions/MatchWebFonts.js
|
7 |
+
*
|
8 |
+
* Adds code to the output jax so that if web fonts are used on the page,
|
9 |
+
* MathJax will be able to detect their arrival and update the math to
|
10 |
+
* accommodate the change in font. For the NativeMML output, this works
|
11 |
+
* both for web fonts in main text, and for web fonts in the math as well.
|
12 |
+
*
|
13 |
+
* ---------------------------------------------------------------------
|
14 |
+
*
|
15 |
+
* Copyright (c) 2013-2018 The MathJax Consortium
|
16 |
+
*
|
17 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
18 |
+
* you may not use this file except in compliance with the License.
|
19 |
+
* You may obtain a copy of the License at
|
20 |
+
*
|
21 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
22 |
+
*
|
23 |
+
* Unless required by applicable law or agreed to in writing, software
|
24 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
25 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
26 |
+
* See the License for the specific language governing permissions and
|
27 |
+
* limitations under the License.
|
28 |
+
*/
|
29 |
+
|
30 |
+
(function (HUB,AJAX) {
|
31 |
+
var VERSION = "2.7.5";
|
32 |
+
|
33 |
+
var CONFIG = MathJax.Hub.CombineConfig("MatchWebFonts",{
|
34 |
+
matchFor: {
|
35 |
+
"HTML-CSS": true,
|
36 |
+
NativeMML: true,
|
37 |
+
SVG: true
|
38 |
+
},
|
39 |
+
fontCheckDelay: 500, // initial delay for the first check for web fonts
|
40 |
+
fontCheckTimeout: 15 * 1000, // how long to keep looking for fonts (15 seconds)
|
41 |
+
});
|
42 |
+
|
43 |
+
MathJax.Extension.MatchWebFonts = {
|
44 |
+
version: VERSION,
|
45 |
+
config: CONFIG
|
46 |
+
};
|
47 |
+
|
48 |
+
HUB.Register.StartupHook("HTML-CSS Jax Ready",function () {
|
49 |
+
var HTMLCSS = MathJax.OutputJax["HTML-CSS"];
|
50 |
+
var POSTTRANSLATE = HTMLCSS.postTranslate;
|
51 |
+
|
52 |
+
HTMLCSS.Augment({
|
53 |
+
postTranslate: function (state,partial) {
|
54 |
+
if (!partial && CONFIG.matchFor["HTML-CSS"] && this.config.matchFontHeight) {
|
55 |
+
//
|
56 |
+
// Check for changes in the web fonts that might affect the font
|
57 |
+
// size for math elements. This is a periodic check that goes on
|
58 |
+
// until a timeout is reached.
|
59 |
+
//
|
60 |
+
AJAX.timer.start(AJAX,["checkFonts",this,state.jax[this.id]],
|
61 |
+
CONFIG.fontCheckDelay,CONFIG.fontCheckTimeout);
|
62 |
+
}
|
63 |
+
return POSTTRANSLATE.apply(this,arguments); // do the original function
|
64 |
+
},
|
65 |
+
|
66 |
+
checkFonts: function (check,scripts) {
|
67 |
+
if (check.time(function () {})) return;
|
68 |
+
var size = [], i, m, retry = false;
|
69 |
+
//
|
70 |
+
// Add the elements used for testing ex and em sizes
|
71 |
+
//
|
72 |
+
for (i = 0, m = scripts.length; i < m; i++) {
|
73 |
+
script = scripts[i];
|
74 |
+
if (script.parentNode && script.MathJax.elementJax) {
|
75 |
+
script.parentNode.insertBefore(this.EmExSpan.cloneNode(true),script);
|
76 |
+
}
|
77 |
+
}
|
78 |
+
//
|
79 |
+
// Check to see if anything has changed
|
80 |
+
//
|
81 |
+
for (i = 0, m = scripts.length; i < m; i++) {
|
82 |
+
script = scripts[i]; if (!script.parentNode) continue; retry = true;
|
83 |
+
var jax = script.MathJax.elementJax; if (!jax) continue;
|
84 |
+
//
|
85 |
+
// Check if ex or mex has changed
|
86 |
+
//
|
87 |
+
var test = script.previousSibling;
|
88 |
+
var ex = test.firstChild.offsetHeight/60;
|
89 |
+
var em = test.lastChild.lastChild.offsetHeight/60;
|
90 |
+
if (ex === 0 || ex === "NaN") {ex = this.defaultEx; em = this.defaultEm}
|
91 |
+
if (ex !== jax.HTMLCSS.ex || em !== jax.HTMLCSS.em) {
|
92 |
+
var scale = ex/this.TeX.x_height/em;
|
93 |
+
scale = Math.floor(Math.max(this.config.minScaleAdjust/100,scale)*this.config.scale);
|
94 |
+
if (scale/100 !== jax.scale) {size.push(script); scripts[i] = {}}
|
95 |
+
}
|
96 |
+
}
|
97 |
+
//
|
98 |
+
// Remove markers
|
99 |
+
//
|
100 |
+
scripts = scripts.concat(size); // some scripts have been moved to the size array
|
101 |
+
for (i = 0, m = scripts.length; i < m; i++) {
|
102 |
+
script = scripts[i];
|
103 |
+
if (script && script.parentNode && script.MathJax.elementJax) {
|
104 |
+
script.parentNode.removeChild(script.previousSibling);
|
105 |
+
}
|
106 |
+
}
|
107 |
+
//
|
108 |
+
// Rerender the changed items
|
109 |
+
//
|
110 |
+
if (size.length) {HUB.Queue(["Rerender",HUB,[size],{}])}
|
111 |
+
//
|
112 |
+
// Try again later
|
113 |
+
//
|
114 |
+
if (retry) {setTimeout(check,check.delay)}
|
115 |
+
}
|
116 |
+
});
|
117 |
+
});
|
118 |
+
|
119 |
+
HUB.Register.StartupHook("SVG Jax Ready",function () {
|
120 |
+
var SVG = MathJax.OutputJax.SVG;
|
121 |
+
var POSTTRANSLATE = SVG.postTranslate;
|
122 |
+
|
123 |
+
SVG.Augment({
|
124 |
+
postTranslate: function (state,partial) {
|
125 |
+
if (!partial && CONFIG.matchFor.SVG) {
|
126 |
+
//
|
127 |
+
// Check for changes in the web fonts that might affect the font
|
128 |
+
// size for math elements. This is a periodic check that goes on
|
129 |
+
// until a timeout is reached.
|
130 |
+
//
|
131 |
+
AJAX.timer.start(AJAX,["checkFonts",this,state.jax[this.id]],
|
132 |
+
CONFIG.fontCheckDelay,CONFIG.fontCheckTimeout);
|
133 |
+
}
|
134 |
+
return POSTTRANSLATE.apply(this,arguments); // do the original function
|
135 |
+
},
|
136 |
+
|
137 |
+
checkFonts: function (check,scripts) {
|
138 |
+
if (check.time(function () {})) return;
|
139 |
+
var size = [], i, m, retry = false;
|
140 |
+
//
|
141 |
+
// Add the elements used for testing ex and em sizes
|
142 |
+
//
|
143 |
+
for (i = 0, m = scripts.length; i < m; i++) {
|
144 |
+
script = scripts[i];
|
145 |
+
if (script.parentNode && script.MathJax.elementJax) {
|
146 |
+
script.parentNode.insertBefore(this.ExSpan.cloneNode(true),script);
|
147 |
+
}
|
148 |
+
}
|
149 |
+
//
|
150 |
+
// Check to see if anything has changed
|
151 |
+
//
|
152 |
+
for (i = 0, m = scripts.length; i < m; i++) {
|
153 |
+
script = scripts[i]; if (!script.parentNode) continue; retry = true;
|
154 |
+
var jax = script.MathJax.elementJax; if (!jax) continue;
|
155 |
+
//
|
156 |
+
// Check if ex or mex has changed
|
157 |
+
//
|
158 |
+
var test = script.previousSibling;
|
159 |
+
var ex = test.firstChild.offsetHeight/60;
|
160 |
+
if (ex === 0 || ex === "NaN") {ex = this.defaultEx}
|
161 |
+
if (ex !== jax.SVG.ex) {size.push(script); scripts[i] = {}}
|
162 |
+
}
|
163 |
+
//
|
164 |
+
// Remove markers
|
165 |
+
//
|
166 |
+
scripts = scripts.concat(size); // some scripts have been moved to the size array
|
167 |
+
for (i = 0, m = scripts.length; i < m; i++) {
|
168 |
+
script = scripts[i];
|
169 |
+
if (script.parentNode && script.MathJax.elementJax) {
|
170 |
+
script.parentNode.removeChild(script.previousSibling);
|
171 |
+
}
|
172 |
+
}
|
173 |
+
//
|
174 |
+
// Rerender the changed items
|
175 |
+
//
|
176 |
+
if (size.length) {HUB.Queue(["Rerender",HUB,[size],{}])}
|
177 |
+
//
|
178 |
+
// Try again later (if not all the scripts are null)
|
179 |
+
//
|
180 |
+
|
181 |
+
if (retry) setTimeout(check,check.delay);
|
182 |
+
}
|
183 |
+
});
|
184 |
+
});
|
185 |
+
|
186 |
+
HUB.Register.StartupHook("NativeMML Jax Ready",function () {
|
187 |
+
var nMML = MathJax.OutputJax.NativeMML;
|
188 |
+
var POSTTRANSLATE = nMML.postTranslate;
|
189 |
+
|
190 |
+
nMML.Augment({
|
191 |
+
postTranslate: function (state) {
|
192 |
+
if (!HUB.Browser.isMSIE && CONFIG.matchFor.NativeMML) {
|
193 |
+
//
|
194 |
+
// Check for changes in the web fonts that might affect the sizes
|
195 |
+
// of math elements. This is a periodic check that goes on until
|
196 |
+
// a timeout is reached.
|
197 |
+
//
|
198 |
+
AJAX.timer.start(AJAX,["checkFonts",this,state.jax[this.id]],
|
199 |
+
CONFIG.fontCheckDelay,CONFIG.fontCheckTimeout);
|
200 |
+
}
|
201 |
+
POSTTRANSLATE.apply(this,arguments); // do the original routine
|
202 |
+
},
|
203 |
+
|
204 |
+
//
|
205 |
+
// Check to see if web fonts have been loaded that change the ex size
|
206 |
+
// of the surrounding font, the ex size within the math, or the widths
|
207 |
+
// of math elements. We do this by rechecking the ex and mex sizes
|
208 |
+
// (to see if the font scaling needs adjusting) and by checking the
|
209 |
+
// size of the inner mrow of math elements and mtd elements. The
|
210 |
+
// sizes of these have been stored in the NativeMML object of the
|
211 |
+
// element jax so that we can check for them here.
|
212 |
+
//
|
213 |
+
checkFonts: function (check,scripts) {
|
214 |
+
if (check.time(function () {})) return;
|
215 |
+
var adjust = [], mtd = [], size = [], i, m, script;
|
216 |
+
//
|
217 |
+
// Add the elements used for testing ex and em sizes
|
218 |
+
//
|
219 |
+
for (i = 0, m = scripts.length; i < m; i++) {
|
220 |
+
script = scripts[i];
|
221 |
+
if (script.parentNode && script.MathJax.elementJax) {
|
222 |
+
script.parentNode.insertBefore(this.EmExSpan.cloneNode(true),script);
|
223 |
+
}
|
224 |
+
}
|
225 |
+
//
|
226 |
+
// Check to see if anything has changed
|
227 |
+
//
|
228 |
+
for (i = 0, m = scripts.length; i < m; i++) {
|
229 |
+
script = scripts[i]; if (!script.parentNode) continue;
|
230 |
+
var jax = script.MathJax.elementJax; if (!jax) continue;
|
231 |
+
var span = document.getElementById(jax.inputID+"-Frame");
|
232 |
+
var math = span.getElementsByTagName("math")[0]; if (!math) continue;
|
233 |
+
jax = jax.NativeMML;
|
234 |
+
//
|
235 |
+
// Check if ex or mex has changed
|
236 |
+
//
|
237 |
+
var test = script.previousSibling;
|
238 |
+
var ex = test.firstChild.offsetWidth/60;
|
239 |
+
var mex = test.lastChild.offsetWidth/60;
|
240 |
+
if (ex === 0 || ex === "NaN") {ex = this.defaultEx; mex = this.defaultMEx}
|
241 |
+
var newEx = (ex !== jax.ex);
|
242 |
+
if (newEx || mex != jax.mex) {
|
243 |
+
var scale = (this.config.matchFontHeight && mex > 1 ? ex/mex : 1);
|
244 |
+
scale = Math.floor(Math.max(this.config.minScaleAdjust/100,scale) * this.config.scale);
|
245 |
+
if (scale/100 !== jax.scale) {size.push([span.style,scale])}
|
246 |
+
jax.scale = scale/100; jax.fontScale = scale+"%"; jax.ex = ex; jax.mex = mex;
|
247 |
+
}
|
248 |
+
|
249 |
+
//
|
250 |
+
// Check width of math elements
|
251 |
+
//
|
252 |
+
if ("scrollWidth" in jax && (newEx || jax.scrollWidth !== math.firstChild.scrollWidth)) {
|
253 |
+
jax.scrollWidth = math.firstChild.scrollWidth;
|
254 |
+
adjust.push([math.parentNode.style,jax.scrollWidth/jax.ex/jax.scale]);
|
255 |
+
}
|
256 |
+
//
|
257 |
+
// Check widths of mtd elements
|
258 |
+
//
|
259 |
+
if (math.MathJaxMtds) {
|
260 |
+
for (var j = 0, n = math.MathJaxMtds.length; j < n; j++) {
|
261 |
+
if (!math.MathJaxMtds[j].parentNode) continue;
|
262 |
+
if (newEx || math.MathJaxMtds[j].firstChild.scrollWidth !== jax.mtds[j]) {
|
263 |
+
jax.mtds[j] = math.MathJaxMtds[j].firstChild.scrollWidth;
|
264 |
+
mtd.push([math.MathJaxMtds[j],jax.mtds[j]/jax.ex]);
|
265 |
+
}
|
266 |
+
}
|
267 |
+
}
|
268 |
+
}
|
269 |
+
//
|
270 |
+
// Remove markers
|
271 |
+
//
|
272 |
+
for (i = 0, m = scripts.length; i < m; i++) {
|
273 |
+
script = scripts[i];
|
274 |
+
if (script.parentNode && script.MathJax.elementJax) {
|
275 |
+
script.parentNode.removeChild(script.previousSibling);
|
276 |
+
}
|
277 |
+
}
|
278 |
+
//
|
279 |
+
// Adjust scaling factor
|
280 |
+
//
|
281 |
+
for (i = 0, m = size.length; i < m; i++) {
|
282 |
+
size[i][0].fontSize = size[i][1] + "%";
|
283 |
+
}
|
284 |
+
//
|
285 |
+
// Adjust width of spans containing math elements that have changed
|
286 |
+
//
|
287 |
+
for (i = 0, m = adjust.length; i < m; i++) {
|
288 |
+
adjust[i][0].width = adjust[i][1].toFixed(3)+"ex";
|
289 |
+
}
|
290 |
+
//
|
291 |
+
// Adjust widths of mtd elements that have changed
|
292 |
+
//
|
293 |
+
for (i = 0, m = mtd.length; i < m; i++) {
|
294 |
+
var style = mtd[i][0].getAttribute("style");
|
295 |
+
style = style.replace(/(($|;)\s*min-width:).*?ex/,"$1 "+mtd[i][1].toFixed(3)+"ex");
|
296 |
+
mtd[i][0].setAttribute("style",style);
|
297 |
+
}
|
298 |
+
//
|
299 |
+
// Try again later
|
300 |
+
//
|
301 |
+
setTimeout(check,check.delay);
|
302 |
+
}
|
303 |
+
});
|
304 |
+
});
|
305 |
+
|
306 |
+
HUB.Startup.signal.Post("MatchWebFonts Extension Ready");
|
307 |
+
AJAX.loadComplete("[MathJax]/extensions/MatchWebFonts.js");
|
308 |
+
|
309 |
+
})(MathJax.Hub,MathJax.Ajax);
|
vendor/MathJax/extensions/MathEvents.js
ADDED
@@ -0,0 +1,619 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax/extensions/MathEvents.js
|
7 |
+
*
|
8 |
+
* Implements the event handlers needed by the output jax to perform
|
9 |
+
* menu, hover, and other events.
|
10 |
+
*
|
11 |
+
* ---------------------------------------------------------------------
|
12 |
+
*
|
13 |
+
* Copyright (c) 2011-2018 The MathJax Consortium
|
14 |
+
*
|
15 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
16 |
+
* you may not use this file except in compliance with the License.
|
17 |
+
* You may obtain a copy of the License at
|
18 |
+
*
|
19 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
20 |
+
*
|
21 |
+
* Unless required by applicable law or agreed to in writing, software
|
22 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
23 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
24 |
+
* See the License for the specific language governing permissions and
|
25 |
+
* limitations under the License.
|
26 |
+
*/
|
27 |
+
|
28 |
+
(function (HUB,HTML,AJAX,CALLBACK,LOCALE,OUTPUT,INPUT) {
|
29 |
+
var VERSION = "2.7.5";
|
30 |
+
|
31 |
+
var EXTENSION = MathJax.Extension;
|
32 |
+
var ME = EXTENSION.MathEvents = {version: VERSION};
|
33 |
+
|
34 |
+
var SETTINGS = HUB.config.menuSettings;
|
35 |
+
|
36 |
+
var CONFIG = {
|
37 |
+
hover: 500, // time required to be considered a hover
|
38 |
+
frame: {
|
39 |
+
x: 3.5, y: 5, // frame padding and
|
40 |
+
bwidth: 1, // frame border width (in pixels)
|
41 |
+
bcolor: "#A6D", // frame border color
|
42 |
+
hwidth: "15px", // haze width
|
43 |
+
hcolor: "#83A" // haze color
|
44 |
+
},
|
45 |
+
button: {
|
46 |
+
x: -6, y: -3, // menu button offsets
|
47 |
+
wx: -2 // button offset for full-width equations
|
48 |
+
},
|
49 |
+
fadeinInc: .2, // increment for fade-in
|
50 |
+
fadeoutInc: .05, // increment for fade-out
|
51 |
+
fadeDelay: 50, // delay between fade-in or fade-out steps
|
52 |
+
fadeoutStart: 400, // delay before fade-out after mouseout
|
53 |
+
fadeoutDelay: 15*1000, // delay before automatic fade-out
|
54 |
+
|
55 |
+
styles: {
|
56 |
+
".MathJax_Hover_Frame": {
|
57 |
+
"border-radius": ".25em", // Opera 10.5 and IE9
|
58 |
+
"-webkit-border-radius": ".25em", // Safari and Chrome
|
59 |
+
"-moz-border-radius": ".25em", // Firefox
|
60 |
+
"-khtml-border-radius": ".25em", // Konqueror
|
61 |
+
|
62 |
+
"box-shadow": "0px 0px 15px #83A", // Opera 10.5 and IE9
|
63 |
+
"-webkit-box-shadow": "0px 0px 15px #83A", // Safari and Chrome
|
64 |
+
"-moz-box-shadow": "0px 0px 15px #83A", // Forefox
|
65 |
+
"-khtml-box-shadow": "0px 0px 15px #83A", // Konqueror
|
66 |
+
|
67 |
+
border: "1px solid #A6D ! important",
|
68 |
+
display: "inline-block", position:"absolute"
|
69 |
+
},
|
70 |
+
|
71 |
+
".MathJax_Menu_Button .MathJax_Hover_Arrow": {
|
72 |
+
position:"absolute",
|
73 |
+
cursor:"pointer",
|
74 |
+
display:"inline-block",
|
75 |
+
border:"2px solid #AAA",
|
76 |
+
"border-radius":"4px",
|
77 |
+
"-webkit-border-radius": "4px", // Safari and Chrome
|
78 |
+
"-moz-border-radius": "4px", // Firefox
|
79 |
+
"-khtml-border-radius": "4px", // Konqueror
|
80 |
+
"font-family":"'Courier New',Courier",
|
81 |
+
"font-size":"9px",
|
82 |
+
color:"#F0F0F0"
|
83 |
+
},
|
84 |
+
".MathJax_Menu_Button .MathJax_Hover_Arrow span": {
|
85 |
+
display:"block",
|
86 |
+
"background-color":"#AAA",
|
87 |
+
border:"1px solid",
|
88 |
+
"border-radius":"3px",
|
89 |
+
"line-height":0,
|
90 |
+
padding:"4px"
|
91 |
+
},
|
92 |
+
".MathJax_Hover_Arrow:hover": {
|
93 |
+
color:"white!important",
|
94 |
+
border:"2px solid #CCC!important"
|
95 |
+
},
|
96 |
+
".MathJax_Hover_Arrow:hover span": {
|
97 |
+
"background-color":"#CCC!important"
|
98 |
+
}
|
99 |
+
}
|
100 |
+
};
|
101 |
+
|
102 |
+
|
103 |
+
//
|
104 |
+
// Common event-handling code
|
105 |
+
//
|
106 |
+
var EVENT = ME.Event = {
|
107 |
+
|
108 |
+
LEFTBUTTON: 0, // the event.button value for left button
|
109 |
+
RIGHTBUTTON: 2, // the event.button value for right button
|
110 |
+
MENUKEY: "altKey", // the event value for alternate context menu
|
111 |
+
|
112 |
+
/*************************************************************/
|
113 |
+
/*
|
114 |
+
* Enum element for key codes.
|
115 |
+
*/
|
116 |
+
KEY: {
|
117 |
+
RETURN: 13,
|
118 |
+
ESCAPE: 27,
|
119 |
+
SPACE: 32,
|
120 |
+
LEFT: 37,
|
121 |
+
UP: 38,
|
122 |
+
RIGHT: 39,
|
123 |
+
DOWN: 40
|
124 |
+
},
|
125 |
+
|
126 |
+
Mousedown: function (event) {return EVENT.Handler(event,"Mousedown",this)},
|
127 |
+
Mouseup: function (event) {return EVENT.Handler(event,"Mouseup",this)},
|
128 |
+
Mousemove: function (event) {return EVENT.Handler(event,"Mousemove",this)},
|
129 |
+
Mouseover: function (event) {return EVENT.Handler(event,"Mouseover",this)},
|
130 |
+
Mouseout: function (event) {return EVENT.Handler(event,"Mouseout",this)},
|
131 |
+
Click: function (event) {return EVENT.Handler(event,"Click",this)},
|
132 |
+
DblClick: function (event) {return EVENT.Handler(event,"DblClick",this)},
|
133 |
+
Menu: function (event) {return EVENT.Handler(event,"ContextMenu",this)},
|
134 |
+
|
135 |
+
//
|
136 |
+
// Call the output jax's event handler or the zoom handler
|
137 |
+
//
|
138 |
+
Handler: function (event,type,math) {
|
139 |
+
if (AJAX.loadingMathMenu) {return EVENT.False(event)}
|
140 |
+
var jax = OUTPUT[math.jaxID];
|
141 |
+
if (!event) {event = window.event}
|
142 |
+
event.isContextMenu = (type === "ContextMenu");
|
143 |
+
if (jax[type]) {return jax[type](event,math)}
|
144 |
+
if (EXTENSION.MathZoom) {return EXTENSION.MathZoom.HandleEvent(event,type,math)}
|
145 |
+
},
|
146 |
+
|
147 |
+
//
|
148 |
+
// Try to cancel the event in every way we can
|
149 |
+
//
|
150 |
+
False: function (event) {
|
151 |
+
if (!event) {event = window.event}
|
152 |
+
if (event) {
|
153 |
+
if (event.preventDefault) {event.preventDefault()} else {event.returnValue = false}
|
154 |
+
if (event.stopPropagation) {event.stopPropagation()}
|
155 |
+
event.cancelBubble = true;
|
156 |
+
}
|
157 |
+
return false;
|
158 |
+
},
|
159 |
+
|
160 |
+
//
|
161 |
+
// Keydown event handler. Should only fire on Space key.
|
162 |
+
//
|
163 |
+
Keydown: function (event, math) {
|
164 |
+
if (!event) event = window.event;
|
165 |
+
if (event.keyCode === EVENT.KEY.SPACE) {
|
166 |
+
EVENT.ContextMenu(event, this);
|
167 |
+
};
|
168 |
+
},
|
169 |
+
|
170 |
+
//
|
171 |
+
// Load the contextual menu code, if needed, and post the menu
|
172 |
+
//
|
173 |
+
ContextMenu: function (event,math,force) {
|
174 |
+
//
|
175 |
+
// Check if we are showing menus
|
176 |
+
//
|
177 |
+
var JAX = OUTPUT[math.jaxID], jax = JAX.getJaxFromMath(math);
|
178 |
+
var show = (JAX.config.showMathMenu != null ? JAX : HUB).config.showMathMenu;
|
179 |
+
if (!show || (SETTINGS.context !== "MathJax" && !force)) return;
|
180 |
+
|
181 |
+
//
|
182 |
+
// Remove selections, remove hover fades
|
183 |
+
//
|
184 |
+
if (ME.msieEventBug) {event = window.event || event}
|
185 |
+
EVENT.ClearSelection(); HOVER.ClearHoverTimer();
|
186 |
+
if (jax.hover) {
|
187 |
+
if (jax.hover.remove) {clearTimeout(jax.hover.remove); delete jax.hover.remove}
|
188 |
+
jax.hover.nofade = true;
|
189 |
+
}
|
190 |
+
|
191 |
+
//
|
192 |
+
// If the menu code is loaded,
|
193 |
+
// Check if localization needs loading;
|
194 |
+
// If not, post the menu, and return.
|
195 |
+
// Otherwise wait for the localization to load
|
196 |
+
// Otherwse load the menu code.
|
197 |
+
// Try again after the file is loaded.
|
198 |
+
//
|
199 |
+
var MENU = MathJax.Menu; var load, fn;
|
200 |
+
if (MENU) {
|
201 |
+
if (MENU.loadingDomain) {return EVENT.False(event)}
|
202 |
+
load = LOCALE.loadDomain("MathMenu");
|
203 |
+
if (!load) {
|
204 |
+
MENU.jax = jax;
|
205 |
+
var source = MENU.menu.Find("Show Math As").submenu;
|
206 |
+
source.items[0].name = jax.sourceMenuTitle;
|
207 |
+
source.items[0].format = (jax.sourceMenuFormat||"MathML");
|
208 |
+
source.items[1].name = INPUT[jax.inputJax].sourceMenuTitle;
|
209 |
+
source.items[5].disabled = !INPUT[jax.inputJax].annotationEncoding;
|
210 |
+
|
211 |
+
//
|
212 |
+
// Try and find each known annotation format and enable the menu
|
213 |
+
// items accordingly.
|
214 |
+
//
|
215 |
+
var annotations = source.items[2]; annotations.disabled = true;
|
216 |
+
var annotationItems = annotations.submenu.items;
|
217 |
+
annotationList = MathJax.Hub.Config.semanticsAnnotations;
|
218 |
+
for (var i = 0, m = annotationItems.length; i < m; i++) {
|
219 |
+
var name = annotationItems[i].name[1]
|
220 |
+
if (jax.root && jax.root.getAnnotation(name) !== null) {
|
221 |
+
annotations.disabled = false;
|
222 |
+
annotationItems[i].hidden = false;
|
223 |
+
} else {
|
224 |
+
annotationItems[i].hidden = true;
|
225 |
+
}
|
226 |
+
}
|
227 |
+
|
228 |
+
var MathPlayer = MENU.menu.Find("Math Settings","MathPlayer");
|
229 |
+
MathPlayer.hidden = !(jax.outputJax === "NativeMML" && HUB.Browser.hasMathPlayer);
|
230 |
+
return MENU.menu.Post(event);
|
231 |
+
}
|
232 |
+
MENU.loadingDomain = true;
|
233 |
+
fn = function () {delete MENU.loadingDomain};
|
234 |
+
} else {
|
235 |
+
if (AJAX.loadingMathMenu) {return EVENT.False(event)}
|
236 |
+
AJAX.loadingMathMenu = true;
|
237 |
+
load = AJAX.Require("[MathJax]/extensions/MathMenu.js");
|
238 |
+
fn = function () {
|
239 |
+
delete AJAX.loadingMathMenu;
|
240 |
+
if (!MathJax.Menu) {MathJax.Menu = {}}
|
241 |
+
}
|
242 |
+
}
|
243 |
+
var ev = {
|
244 |
+
pageX:event.pageX, pageY:event.pageY,
|
245 |
+
clientX:event.clientX, clientY:event.clientY
|
246 |
+
};
|
247 |
+
CALLBACK.Queue(
|
248 |
+
load, fn, // load the file and delete the marker when done
|
249 |
+
["ContextMenu",EVENT,ev,math,force] // call this function again
|
250 |
+
);
|
251 |
+
return EVENT.False(event);
|
252 |
+
},
|
253 |
+
|
254 |
+
//
|
255 |
+
// Mousedown handler for alternate means of accessing menu
|
256 |
+
//
|
257 |
+
AltContextMenu: function (event,math) {
|
258 |
+
var JAX = OUTPUT[math.jaxID];
|
259 |
+
var show = (JAX.config.showMathMenu != null ? JAX : HUB).config.showMathMenu;
|
260 |
+
if (show) {
|
261 |
+
show = (JAX.config.showMathMenuMSIE != null ? JAX : HUB).config.showMathMenuMSIE;
|
262 |
+
if (SETTINGS.context === "MathJax" && !SETTINGS.mpContext && show) {
|
263 |
+
if (!ME.noContextMenuBug || event.button !== EVENT.RIGHTBUTTON) return;
|
264 |
+
} else {
|
265 |
+
if (!event[EVENT.MENUKEY] || event.button !== EVENT.LEFTBUTTON) return;
|
266 |
+
}
|
267 |
+
return JAX.ContextMenu(event,math,true);
|
268 |
+
}
|
269 |
+
},
|
270 |
+
|
271 |
+
ClearSelection: function () {
|
272 |
+
if (ME.safariContextMenuBug) {setTimeout("window.getSelection().empty()",0)}
|
273 |
+
if (document.selection) {setTimeout("document.selection.empty()",0)}
|
274 |
+
},
|
275 |
+
|
276 |
+
getBBox: function (span) {
|
277 |
+
span.appendChild(ME.topImg);
|
278 |
+
var h = ME.topImg.offsetTop, d = span.offsetHeight-h, w = span.offsetWidth;
|
279 |
+
span.removeChild(ME.topImg);
|
280 |
+
return {w:w, h:h, d:d};
|
281 |
+
}
|
282 |
+
|
283 |
+
};
|
284 |
+
|
285 |
+
//
|
286 |
+
// Handle hover "discoverability"
|
287 |
+
//
|
288 |
+
var HOVER = ME.Hover = {
|
289 |
+
|
290 |
+
//
|
291 |
+
// Check if we are moving from a non-MathJax element to a MathJax one
|
292 |
+
// and either start fading in again (if it is fading out) or start the
|
293 |
+
// timer for the hover
|
294 |
+
//
|
295 |
+
Mouseover: function (event,math) {
|
296 |
+
if (SETTINGS.discoverable || SETTINGS.zoom === "Hover") {
|
297 |
+
var from = event.fromElement || event.relatedTarget,
|
298 |
+
to = event.toElement || event.target;
|
299 |
+
if (from && to && (HUB.isMathJaxNode(from) !== HUB.isMathJaxNode(to) ||
|
300 |
+
HUB.getJaxFor(from) !== HUB.getJaxFor(to))) {
|
301 |
+
var jax = this.getJaxFromMath(math);
|
302 |
+
if (jax.hover) {HOVER.ReHover(jax)} else {HOVER.HoverTimer(jax,math)}
|
303 |
+
return EVENT.False(event);
|
304 |
+
}
|
305 |
+
}
|
306 |
+
},
|
307 |
+
//
|
308 |
+
// Check if we are moving from a MathJax element to a non-MathJax one
|
309 |
+
// and either start fading out, or clear the timer if we haven't
|
310 |
+
// hovered yet
|
311 |
+
//
|
312 |
+
Mouseout: function (event,math) {
|
313 |
+
if (SETTINGS.discoverable || SETTINGS.zoom === "Hover") {
|
314 |
+
var from = event.fromElement || event.relatedTarget,
|
315 |
+
to = event.toElement || event.target;
|
316 |
+
if (from && to && (HUB.isMathJaxNode(from) !== HUB.isMathJaxNode(to) ||
|
317 |
+
HUB.getJaxFor(from) !== HUB.getJaxFor(to))) {
|
318 |
+
var jax = this.getJaxFromMath(math);
|
319 |
+
if (jax.hover) {HOVER.UnHover(jax)} else {HOVER.ClearHoverTimer()}
|
320 |
+
return EVENT.False(event);
|
321 |
+
}
|
322 |
+
}
|
323 |
+
},
|
324 |
+
//
|
325 |
+
// Restart hover timer if the mouse moves
|
326 |
+
//
|
327 |
+
Mousemove: function (event,math) {
|
328 |
+
if (SETTINGS.discoverable || SETTINGS.zoom === "Hover") {
|
329 |
+
var jax = this.getJaxFromMath(math); if (jax.hover) return;
|
330 |
+
if (HOVER.lastX == event.clientX && HOVER.lastY == event.clientY) return;
|
331 |
+
HOVER.lastX = event.clientX; HOVER.lastY = event.clientY;
|
332 |
+
HOVER.HoverTimer(jax,math);
|
333 |
+
return EVENT.False(event);
|
334 |
+
}
|
335 |
+
},
|
336 |
+
|
337 |
+
//
|
338 |
+
// Clear the old timer and start a new one
|
339 |
+
//
|
340 |
+
HoverTimer: function (jax,math) {
|
341 |
+
this.ClearHoverTimer();
|
342 |
+
this.hoverTimer = setTimeout(CALLBACK(["Hover",this,jax,math]),CONFIG.hover);
|
343 |
+
},
|
344 |
+
ClearHoverTimer: function () {
|
345 |
+
if (this.hoverTimer) {clearTimeout(this.hoverTimer); delete this.hoverTimer}
|
346 |
+
},
|
347 |
+
|
348 |
+
//
|
349 |
+
// Handle putting up the hover frame
|
350 |
+
//
|
351 |
+
Hover: function (jax,math) {
|
352 |
+
//
|
353 |
+
// Check if Zoom handles the hover event
|
354 |
+
//
|
355 |
+
if (EXTENSION.MathZoom && EXTENSION.MathZoom.Hover({},math)) return;
|
356 |
+
//
|
357 |
+
// Get the hover data
|
358 |
+
//
|
359 |
+
var JAX = OUTPUT[jax.outputJax],
|
360 |
+
span = JAX.getHoverSpan(jax,math),
|
361 |
+
bbox = JAX.getHoverBBox(jax,span,math),
|
362 |
+
show = (JAX.config.showMathMenu != null ? JAX : HUB).config.showMathMenu;
|
363 |
+
var dx = CONFIG.frame.x, dy = CONFIG.frame.y, dd = CONFIG.frame.bwidth; // frame size
|
364 |
+
if (ME.msieBorderWidthBug) {dd = 0}
|
365 |
+
jax.hover = {opacity:0, id:jax.inputID+"-Hover"};
|
366 |
+
//
|
367 |
+
// The frame and menu button
|
368 |
+
//
|
369 |
+
var frame = HTML.Element("span",{
|
370 |
+
id:jax.hover.id, isMathJax: true,
|
371 |
+
style:{display:"inline-block", width:0, height:0, position:"relative"}
|
372 |
+
},[["span",{
|
373 |
+
className:"MathJax_Hover_Frame", isMathJax: true,
|
374 |
+
style:{
|
375 |
+
display:"inline-block", position:"absolute",
|
376 |
+
top:this.Px(-bbox.h-dy-dd-(bbox.y||0)), left:this.Px(-dx-dd+(bbox.x||0)),
|
377 |
+
width:this.Px(bbox.w+2*dx), height:this.Px(bbox.h+bbox.d+2*dy),
|
378 |
+
opacity:0, filter:"alpha(opacity=0)"
|
379 |
+
}}
|
380 |
+
]]
|
381 |
+
);
|
382 |
+
var button = HTML.Element("span",{
|
383 |
+
isMathJax: true, id:jax.hover.id+"Menu", className:"MathJax_Menu_Button",
|
384 |
+
style:{display:"inline-block", "z-index": 1, width:0, height:0, position:"relative"}
|
385 |
+
},[["span",{
|
386 |
+
className: "MathJax_Hover_Arrow", isMathJax: true, math: math,
|
387 |
+
onclick: this.HoverMenu, jax:JAX.id,
|
388 |
+
style: {
|
389 |
+
left:this.Px(bbox.w+dx+dd+(bbox.x||0)+CONFIG.button.x),
|
390 |
+
top:this.Px(-bbox.h-dy-dd-(bbox.y||0)-CONFIG.button.y),
|
391 |
+
opacity:0, filter:"alpha(opacity=0)"
|
392 |
+
}
|
393 |
+
},[["span",{isMathJax:true},"\u25BC"]]]]
|
394 |
+
);
|
395 |
+
if (bbox.width) {
|
396 |
+
frame.style.width = button.style.width = bbox.width;
|
397 |
+
frame.style.marginRight = button.style.marginRight = "-"+bbox.width;
|
398 |
+
frame.firstChild.style.width = bbox.width;
|
399 |
+
button.firstChild.style.left = "";
|
400 |
+
button.firstChild.style.right = this.Px(CONFIG.button.wx);
|
401 |
+
}
|
402 |
+
//
|
403 |
+
// Add the frame and button
|
404 |
+
//
|
405 |
+
span.parentNode.insertBefore(frame,span);
|
406 |
+
if (show) {span.parentNode.insertBefore(button,span)}
|
407 |
+
if (span.style) {span.style.position = "relative"} // so math is on top of hover frame
|
408 |
+
//
|
409 |
+
// Start the hover fade-in
|
410 |
+
//
|
411 |
+
this.ReHover(jax);
|
412 |
+
},
|
413 |
+
//
|
414 |
+
// Restart the hover fade in and fade-out timers
|
415 |
+
//
|
416 |
+
ReHover: function (jax) {
|
417 |
+
if (jax.hover.remove) {clearTimeout(jax.hover.remove)}
|
418 |
+
jax.hover.remove = setTimeout(CALLBACK(["UnHover",this,jax]),CONFIG.fadeoutDelay);
|
419 |
+
this.HoverFadeTimer(jax,CONFIG.fadeinInc);
|
420 |
+
},
|
421 |
+
//
|
422 |
+
// Start the fade-out
|
423 |
+
//
|
424 |
+
UnHover: function (jax) {
|
425 |
+
if (!jax.hover.nofade) {this.HoverFadeTimer(jax,-CONFIG.fadeoutInc,CONFIG.fadeoutStart)}
|
426 |
+
},
|
427 |
+
//
|
428 |
+
// Handle the fade-in and fade-out
|
429 |
+
//
|
430 |
+
HoverFade: function (jax) {
|
431 |
+
delete jax.hover.timer;
|
432 |
+
jax.hover.opacity = Math.max(0,Math.min(1,jax.hover.opacity + jax.hover.inc));
|
433 |
+
jax.hover.opacity = Math.floor(1000*jax.hover.opacity)/1000;
|
434 |
+
var frame = document.getElementById(jax.hover.id),
|
435 |
+
button = document.getElementById(jax.hover.id+"Menu");
|
436 |
+
frame.firstChild.style.opacity = jax.hover.opacity;
|
437 |
+
frame.firstChild.style.filter = "alpha(opacity="+Math.floor(100*jax.hover.opacity)+")";
|
438 |
+
if (button) {
|
439 |
+
button.firstChild.style.opacity = jax.hover.opacity;
|
440 |
+
button.firstChild.style.filter = frame.style.filter;
|
441 |
+
}
|
442 |
+
if (jax.hover.opacity === 1) {return}
|
443 |
+
if (jax.hover.opacity > 0) {this.HoverFadeTimer(jax,jax.hover.inc); return}
|
444 |
+
frame.parentNode.removeChild(frame);
|
445 |
+
if (button) {button.parentNode.removeChild(button)}
|
446 |
+
if (jax.hover.remove) {clearTimeout(jax.hover.remove)}
|
447 |
+
delete jax.hover;
|
448 |
+
},
|
449 |
+
//
|
450 |
+
// Set the fade to in or out (via inc) and start the timer, if needed
|
451 |
+
//
|
452 |
+
HoverFadeTimer: function (jax,inc,delay) {
|
453 |
+
jax.hover.inc = inc;
|
454 |
+
if (!jax.hover.timer) {
|
455 |
+
jax.hover.timer = setTimeout(CALLBACK(["HoverFade",this,jax]),(delay||CONFIG.fadeDelay));
|
456 |
+
}
|
457 |
+
},
|
458 |
+
|
459 |
+
//
|
460 |
+
// Handle a click on the menu button
|
461 |
+
//
|
462 |
+
HoverMenu: function (event) {
|
463 |
+
if (!event) {event = window.event}
|
464 |
+
return OUTPUT[this.jax].ContextMenu(event,this.math,true);
|
465 |
+
},
|
466 |
+
|
467 |
+
//
|
468 |
+
// Clear all hover timers
|
469 |
+
//
|
470 |
+
ClearHover: function (jax) {
|
471 |
+
if (jax.hover.remove) {clearTimeout(jax.hover.remove)}
|
472 |
+
if (jax.hover.timer) {clearTimeout(jax.hover.timer)}
|
473 |
+
HOVER.ClearHoverTimer();
|
474 |
+
delete jax.hover;
|
475 |
+
},
|
476 |
+
|
477 |
+
//
|
478 |
+
// Make a measurement in pixels
|
479 |
+
//
|
480 |
+
Px: function (m) {
|
481 |
+
if (Math.abs(m) < .006) {return "0px"}
|
482 |
+
return m.toFixed(2).replace(/\.?0+$/,"") + "px";
|
483 |
+
},
|
484 |
+
|
485 |
+
//
|
486 |
+
// Preload images so they show up with the menu
|
487 |
+
//
|
488 |
+
getImages: function () {
|
489 |
+
if (SETTINGS.discoverable) {
|
490 |
+
var menu = new Image();
|
491 |
+
menu.src = CONFIG.button.src;
|
492 |
+
}
|
493 |
+
}
|
494 |
+
|
495 |
+
};
|
496 |
+
|
497 |
+
//
|
498 |
+
// Handle touch events.
|
499 |
+
//
|
500 |
+
// Use double-tap-and-hold as a replacement for context menu event.
|
501 |
+
// Use double-tap as a replacement for double click.
|
502 |
+
//
|
503 |
+
var TOUCH = ME.Touch = {
|
504 |
+
|
505 |
+
last: 0, // time of last tap event
|
506 |
+
delay: 500, // delay time for double-click
|
507 |
+
|
508 |
+
//
|
509 |
+
// Check if this is a double-tap, and if so, start the timer
|
510 |
+
// for the double-tap and hold (to trigger the contextual menu)
|
511 |
+
//
|
512 |
+
start: function (event) {
|
513 |
+
var now = new Date().getTime();
|
514 |
+
var dblTap = (now - TOUCH.last < TOUCH.delay && TOUCH.up);
|
515 |
+
TOUCH.last = now; TOUCH.up = false;
|
516 |
+
if (dblTap) {
|
517 |
+
TOUCH.timeout = setTimeout(TOUCH.menu,TOUCH.delay,event,this);
|
518 |
+
event.preventDefault();
|
519 |
+
}
|
520 |
+
},
|
521 |
+
|
522 |
+
//
|
523 |
+
// Check if there is a timeout pending, i.e., we have a
|
524 |
+
// double-tap and were waiting to see if it is held long
|
525 |
+
// enough for the menu. Since we got the end before the
|
526 |
+
// timeout, it is a double-click, not a double-tap-and-hold.
|
527 |
+
// Prevent the default action and issue a double click.
|
528 |
+
//
|
529 |
+
end: function (event) {
|
530 |
+
var now = new Date().getTime();
|
531 |
+
TOUCH.up = (now - TOUCH.last < TOUCH.delay);
|
532 |
+
if (TOUCH.timeout) {
|
533 |
+
clearTimeout(TOUCH.timeout);
|
534 |
+
delete TOUCH.timeout; TOUCH.last = 0; TOUCH.up = false;
|
535 |
+
event.preventDefault();
|
536 |
+
return EVENT.Handler((event.touches[0]||event.touch),"DblClick",this);
|
537 |
+
}
|
538 |
+
},
|
539 |
+
|
540 |
+
//
|
541 |
+
// If the timeout passes without an end event, we issue
|
542 |
+
// the contextual menu event.
|
543 |
+
//
|
544 |
+
menu: function (event,math) {
|
545 |
+
delete TOUCH.timeout; TOUCH.last = 0; TOUCH.up = false;
|
546 |
+
return EVENT.Handler((event.touches[0]||event.touch),"ContextMenu",math);
|
547 |
+
}
|
548 |
+
|
549 |
+
};
|
550 |
+
|
551 |
+
/*
|
552 |
+
* //
|
553 |
+
* // Mobile screens are small, so use larger version of arrow
|
554 |
+
* //
|
555 |
+
* if (HUB.Browser.isMobile) {
|
556 |
+
* var arrow = CONFIG.styles[".MathJax_Hover_Arrow"];
|
557 |
+
* arrow.width = "25px"; arrow.height = "18px";
|
558 |
+
* CONFIG.button.x = -6;
|
559 |
+
* }
|
560 |
+
*/
|
561 |
+
|
562 |
+
//
|
563 |
+
// Set up browser-specific values
|
564 |
+
//
|
565 |
+
HUB.Browser.Select({
|
566 |
+
MSIE: function (browser) {
|
567 |
+
var mode = (document.documentMode || 0);
|
568 |
+
var isIE8 = browser.versionAtLeast("8.0");
|
569 |
+
ME.msieBorderWidthBug = (document.compatMode === "BackCompat"); // borders are inside offsetWidth/Height
|
570 |
+
ME.msieEventBug = browser.isIE9; // must get event from window even though event is passed
|
571 |
+
ME.msieAlignBug = (!isIE8 || mode < 8); // inline-block spans don't rest on baseline
|
572 |
+
if (mode < 9) {EVENT.LEFTBUTTON = 1} // IE < 9 has wrong event.button values
|
573 |
+
},
|
574 |
+
Safari: function (browser) {
|
575 |
+
ME.safariContextMenuBug = true; // selection can be started by contextmenu event
|
576 |
+
},
|
577 |
+
Opera: function (browser) {
|
578 |
+
ME.operaPositionBug = true; // position is wrong unless border is used
|
579 |
+
},
|
580 |
+
Konqueror: function (browser) {
|
581 |
+
ME.noContextMenuBug = true; // doesn't produce contextmenu event
|
582 |
+
}
|
583 |
+
});
|
584 |
+
|
585 |
+
//
|
586 |
+
// Used in measuring zoom and hover positions
|
587 |
+
//
|
588 |
+
ME.topImg = (ME.msieAlignBug ?
|
589 |
+
HTML.Element("img",{style:{width:0,height:0,position:"relative"},src:"about:blank"}) :
|
590 |
+
HTML.Element("span",{style:{width:0,height:0,display:"inline-block"}})
|
591 |
+
);
|
592 |
+
if (ME.operaPositionBug) {ME.topImg.style.border="1px solid"}
|
593 |
+
|
594 |
+
//
|
595 |
+
// Get configuration from user
|
596 |
+
//
|
597 |
+
ME.config = CONFIG = HUB.CombineConfig("MathEvents",CONFIG);
|
598 |
+
var SETFRAME = function () {
|
599 |
+
var haze = CONFIG.styles[".MathJax_Hover_Frame"];
|
600 |
+
haze.border = CONFIG.frame.bwidth+"px solid "+CONFIG.frame.bcolor+" ! important";
|
601 |
+
haze["box-shadow"] = haze["-webkit-box-shadow"] =
|
602 |
+
haze["-moz-box-shadow"] = haze["-khtml-box-shadow"] =
|
603 |
+
"0px 0px "+CONFIG.frame.hwidth+" "+CONFIG.frame.hcolor;
|
604 |
+
};
|
605 |
+
|
606 |
+
//
|
607 |
+
// Queue the events needed for startup
|
608 |
+
//
|
609 |
+
CALLBACK.Queue(
|
610 |
+
HUB.Register.StartupHook("End Config",{}), // wait until config is complete
|
611 |
+
[SETFRAME],
|
612 |
+
["getImages",HOVER],
|
613 |
+
["Styles",AJAX,CONFIG.styles],
|
614 |
+
["Post",HUB.Startup.signal,"MathEvents Ready"],
|
615 |
+
["loadComplete",AJAX,"[MathJax]/extensions/MathEvents.js"]
|
616 |
+
);
|
617 |
+
|
618 |
+
})(MathJax.Hub,MathJax.HTML,MathJax.Ajax,MathJax.Callback,
|
619 |
+
MathJax.Localization,MathJax.OutputJax,MathJax.InputJax);
|
vendor/MathJax/extensions/MathML/content-mathml.js
ADDED
@@ -0,0 +1,1743 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax/extensions/MathML/content-mathml.js
|
7 |
+
*
|
8 |
+
* This file provides methods to convert Content-MathML to
|
9 |
+
* Presentation MathML for processing by MathJax. The transform is
|
10 |
+
* performed in a DOM filter for the MathML input jax, so that the
|
11 |
+
* Show Math As menu will still show the Original MathML as Content MathML,
|
12 |
+
* but the Presentation MathML can be obtained from the main MathML menu.
|
13 |
+
*
|
14 |
+
* To load it, include
|
15 |
+
*
|
16 |
+
* MathML: {
|
17 |
+
* extensions: ["content-mathml.js"]
|
18 |
+
* }
|
19 |
+
*
|
20 |
+
* in your configuration.
|
21 |
+
*
|
22 |
+
* A portion of this file is taken from ctop.js which is
|
23 |
+
* Copyright (c) David Carlisle 2001, 2002, 2008, 2009, 2013,
|
24 |
+
* and is used by permission of David Carlisle, who has agreed to allow us
|
25 |
+
* to release it under the Apache2 license (see below). That portion is
|
26 |
+
* indicated via comments.
|
27 |
+
*
|
28 |
+
* The remainder falls under the copyright that follows.
|
29 |
+
* ---------------------------------------------------------------------
|
30 |
+
*
|
31 |
+
* Copyright (c) 2013-2018 The MathJax Consortium
|
32 |
+
*
|
33 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
34 |
+
* you may not use this file except in compliance with the License.
|
35 |
+
* You may obtain a copy of the License at
|
36 |
+
*
|
37 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
38 |
+
*
|
39 |
+
* Unless required by applicable law or agreed to in writing, software
|
40 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
41 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
42 |
+
* See the License for the specific language governing permissions and
|
43 |
+
* limitations under the License.
|
44 |
+
*/
|
45 |
+
|
46 |
+
|
47 |
+
MathJax.Extension["MathML/content-mathml"] = (function(HUB) {
|
48 |
+
/*
|
49 |
+
* Content MathML to Presentation MathML conversion
|
50 |
+
*
|
51 |
+
* based on David Carlisle's ctop.js - https://web-xslt.googlecode.com/svn/trunk/ctop/ctop.js
|
52 |
+
*
|
53 |
+
*/
|
54 |
+
|
55 |
+
|
56 |
+
var isMSIE = HUB.Browser.isMSIE;
|
57 |
+
|
58 |
+
if (isMSIE) {
|
59 |
+
try {document.namespaces.add("m","http://www.w3.org/1998/Math/MathML")} catch (err) {}
|
60 |
+
}
|
61 |
+
|
62 |
+
var CONFIG = HUB.CombineConfig("MathML.content-mathml",{
|
63 |
+
// render `a+(-b)` as `a-b`?
|
64 |
+
collapsePlusMinus: true,
|
65 |
+
|
66 |
+
/* mathvariant to use with corresponding <ci> type attribute */
|
67 |
+
cistyles: {
|
68 |
+
vector: 'bold-italic',
|
69 |
+
matrix: 'bold-upright'
|
70 |
+
},
|
71 |
+
|
72 |
+
/* Symbol names to translate to characters
|
73 |
+
*/
|
74 |
+
symbols: {
|
75 |
+
gamma: '\u03B3'
|
76 |
+
}
|
77 |
+
|
78 |
+
});
|
79 |
+
|
80 |
+
var CToP = {
|
81 |
+
version: "2.7.5",
|
82 |
+
settings: CONFIG,
|
83 |
+
|
84 |
+
/* Transform the given <math> elements from Content MathML to Presentation MathML and replace the original elements
|
85 |
+
*/
|
86 |
+
transformElements: function(elements) {
|
87 |
+
for (var i = 0, l = elements.length; i<l; i++ ) {
|
88 |
+
var mathNode = CToP.transformElement(elements[i]);
|
89 |
+
elements[i].parentNode.replaceChild(mathNode,elements[i]);
|
90 |
+
}
|
91 |
+
},
|
92 |
+
|
93 |
+
/* Transform a Content MathML element into Presentation MathML, and return the new element
|
94 |
+
*/
|
95 |
+
transformElement: function(element) {
|
96 |
+
if (element.nodeName.indexOf(":") >= 0) element = CToP.cloneNode(element,true); // removes namespaces
|
97 |
+
var mathNode = CToP.cloneNode(element);
|
98 |
+
for (var j = 0, l = element.childNodes.length; j<l; j++ ) {
|
99 |
+
CToP.applyTransform(mathNode,element.childNodes[j],0);
|
100 |
+
}
|
101 |
+
return mathNode;
|
102 |
+
},
|
103 |
+
|
104 |
+
getTextContent: function(element) {
|
105 |
+
return element.text !== undefined ? element.text : element.innerText !== undefined ? element.innerText : element.textContent;
|
106 |
+
},
|
107 |
+
|
108 |
+
setTextContent: function(element,textContent) {
|
109 |
+
for (var i = 0, l = element.childNodes.length; i<l; i++) {
|
110 |
+
if (element.childNodes[i].nodeType === 3) {
|
111 |
+
element.removeChild(element.childNodes[i]);
|
112 |
+
i--;
|
113 |
+
l--;
|
114 |
+
}
|
115 |
+
}
|
116 |
+
element.appendChild(document.createTextNode(textContent));
|
117 |
+
},
|
118 |
+
|
119 |
+
cloneNode: function(element,deep) {
|
120 |
+
var clone, i, l;
|
121 |
+
if (element.nodeType === 1) {
|
122 |
+
clone = CToP.createElement(element.nodeName);
|
123 |
+
for (i = 0, l = element.attributes.length; i<l; i++ ) {
|
124 |
+
clone.setAttribute(element.attributes[i].nodeName,element.attributes[i].nodeValue);
|
125 |
+
}
|
126 |
+
if (deep) {
|
127 |
+
for (i = 0, l = element.childNodes.length; i<l; i++ ) {
|
128 |
+
var clonedChild = CToP.cloneNode(element.childNodes[i],true);
|
129 |
+
clone.appendChild(clonedChild);
|
130 |
+
}
|
131 |
+
}
|
132 |
+
} else if (element.nodeType === 3) {
|
133 |
+
clone = document.createTextNode(element.nodeValue);
|
134 |
+
}
|
135 |
+
return clone;
|
136 |
+
},
|
137 |
+
|
138 |
+
/* Create an element with given name, belonging to the MathML namespace
|
139 |
+
*/
|
140 |
+
createElement: function(name) {
|
141 |
+
name = name.replace(/^.*:/,""); // remove namespace
|
142 |
+
return (document.createElementNS ?
|
143 |
+
document.createElementNS("http://www.w3.org/1998/Math/MathML",name) :
|
144 |
+
document.createElement("m:"+name));
|
145 |
+
},
|
146 |
+
|
147 |
+
/* Get node's children
|
148 |
+
*/
|
149 |
+
getChildren: function(node) {
|
150 |
+
var children = [];
|
151 |
+
for (var j = 0, l = node.childNodes.length; j<l; j++ ) {
|
152 |
+
if (node.childNodes[j].nodeType === 1) {
|
153 |
+
children.push(node.childNodes[j]);
|
154 |
+
}
|
155 |
+
}
|
156 |
+
return children;
|
157 |
+
},
|
158 |
+
|
159 |
+
/* Classify node's children as argumentss, variable bindings, or qualifiers
|
160 |
+
*/
|
161 |
+
classifyChildren: function(contentMMLNode) {
|
162 |
+
var args = [], bvars = [], qualifiers = [];
|
163 |
+
for (var j = 0, l = contentMMLNode.childNodes.length; j<l; j++ ) {
|
164 |
+
if (contentMMLNode.childNodes[j].nodeType === 1) {
|
165 |
+
var childNode = contentMMLNode.childNodes[j], name = childNode.nodeName;
|
166 |
+
if (name === 'bvar') {
|
167 |
+
bvars.push(childNode);
|
168 |
+
} else if (name === 'condition'||
|
169 |
+
name === 'degree'||
|
170 |
+
name === 'momentabout'||
|
171 |
+
name === 'logbase'||
|
172 |
+
name === 'lowlimit'||
|
173 |
+
name === 'uplimit'||
|
174 |
+
(name === 'interval' && args.length<2)||
|
175 |
+
name === 'domainofapplication') {
|
176 |
+
qualifiers.push(childNode);
|
177 |
+
} else {
|
178 |
+
args.push(childNode);
|
179 |
+
}
|
180 |
+
}
|
181 |
+
}
|
182 |
+
return {
|
183 |
+
args:args,
|
184 |
+
bvars:bvars,
|
185 |
+
qualifiers:qualifiers
|
186 |
+
};
|
187 |
+
},
|
188 |
+
|
189 |
+
/* Add an element with given name and text content
|
190 |
+
*/
|
191 |
+
appendToken: function(parentNode,name,textContent) {
|
192 |
+
var element = CToP.createElement(name);
|
193 |
+
textContent = textContent.replace(/^\s+/,"").replace(/\s+$/,"");
|
194 |
+
if (name === 'mn' && textContent.substr(0,1) === "-") {
|
195 |
+
//
|
196 |
+
// use <mrow><mo>−</mo><mn>n</mn></mrow> instead of <mn>-n</mn>
|
197 |
+
//
|
198 |
+
element.appendChild(document.createTextNode(textContent.substr(1)));
|
199 |
+
var mrow = CToP.createElement('mrow');
|
200 |
+
CToP.appendToken(mrow,'mo','\u2212');
|
201 |
+
mrow.appendChild(element);
|
202 |
+
element = mrow;
|
203 |
+
} else {
|
204 |
+
element.appendChild(document.createTextNode(textContent));
|
205 |
+
}
|
206 |
+
parentNode.appendChild(element);
|
207 |
+
return element;
|
208 |
+
},
|
209 |
+
|
210 |
+
/* Transform a Content MathML node to Presentation MathML node(s), and attach it to the parent
|
211 |
+
*/
|
212 |
+
applyTransform: function(parentNode,contentMMLNode,precedence) {
|
213 |
+
if (!contentMMLNode) {
|
214 |
+
var merror = CToP.createElement('merror');
|
215 |
+
CToP.appendToken(merror,'mtext','Missing child node');
|
216 |
+
parentNode.appendChild(merror);
|
217 |
+
return;
|
218 |
+
}
|
219 |
+
var nodeName = contentMMLNode.nodeName.replace(/.*:/,'');
|
220 |
+
if (contentMMLNode.nodeType === 1) {
|
221 |
+
if (CToP.tokens[nodeName]) {
|
222 |
+
CToP.tokens[nodeName](parentNode,contentMMLNode,precedence);
|
223 |
+
} else if (contentMMLNode.childNodes.length === 0) {
|
224 |
+
var mml = CToP.MML[nodeName];
|
225 |
+
if (mml && mml.isa && mml.isa(CToP.mbase)) {
|
226 |
+
parentNode.appendChild(CToP.cloneNode(contentMMLNode));
|
227 |
+
} else {
|
228 |
+
CToP.appendToken(parentNode,'mi',nodeName);
|
229 |
+
}
|
230 |
+
} else {
|
231 |
+
var clonedChild = CToP.cloneNode(contentMMLNode);
|
232 |
+
parentNode.appendChild(clonedChild);
|
233 |
+
for (var j = 0, l = contentMMLNode.childNodes.length; j<l; j++ ) {
|
234 |
+
CToP.applyTransform(clonedChild,contentMMLNode.childNodes[j],precedence);
|
235 |
+
}
|
236 |
+
}
|
237 |
+
} else if (contentMMLNode.nodeType === 3) {
|
238 |
+
parentNode.appendChild(CToP.cloneNode(contentMMLNode));
|
239 |
+
}
|
240 |
+
},
|
241 |
+
|
242 |
+
/* Make an mfenced environment
|
243 |
+
*/
|
244 |
+
createmfenced: function(children,open,close) {
|
245 |
+
var mf = CToP.createElement('mfenced');
|
246 |
+
mf.setAttribute('open',open);
|
247 |
+
mf.setAttribute('close',close);
|
248 |
+
for (var j = 0, l = children.length; j<l; j++ ) {
|
249 |
+
CToP.applyTransform(mf,children[j],0);
|
250 |
+
}
|
251 |
+
return mf;
|
252 |
+
},
|
253 |
+
|
254 |
+
transforms: {
|
255 |
+
|
256 |
+
/* Transform an identifier symbol
|
257 |
+
*/
|
258 |
+
identifier: function(textContent) {
|
259 |
+
return function(parentNode,contentMMLNode,precedence) {
|
260 |
+
CToP.appendToken(parentNode,'mi',textContent);
|
261 |
+
}
|
262 |
+
},
|
263 |
+
|
264 |
+
/* Transform a set or set-like notation
|
265 |
+
*/
|
266 |
+
set: function(open,close) {
|
267 |
+
var bindSet = CToP.transforms.bind('',',','|');
|
268 |
+
return function(parentNode,contentMMLNode) {
|
269 |
+
var children = CToP.classifyChildren(contentMMLNode);
|
270 |
+
|
271 |
+
var args = children.args, bvars = children.bvars, qualifiers = children.qualifiers;
|
272 |
+
if (bvars.length) {
|
273 |
+
var firstArg = children.args[0];
|
274 |
+
args = args.slice(1);
|
275 |
+
var mfenced = CToP.createElement('mfenced');
|
276 |
+
mfenced.setAttribute('open',open);
|
277 |
+
mfenced.setAttribute('close',close);
|
278 |
+
bindSet(mfenced,contentMMLNode,firstArg,args,bvars,qualifiers,0);
|
279 |
+
parentNode.appendChild(mfenced);
|
280 |
+
} else {
|
281 |
+
parentNode.appendChild(CToP.createmfenced(args,open,close));
|
282 |
+
}
|
283 |
+
}
|
284 |
+
},
|
285 |
+
|
286 |
+
/* Transform a content token to a presentation token
|
287 |
+
*
|
288 |
+
* (function factory)
|
289 |
+
* @param {string} name - name of the corresponding presentation MML tag
|
290 |
+
*/
|
291 |
+
token: function(name) {
|
292 |
+
return function(parentNode,contentMMLNode) {
|
293 |
+
if (contentMMLNode.childNodes.length === 1 && contentMMLNode.childNodes[0].nodeType === 3) {
|
294 |
+
CToP.appendToken(parentNode,name,CToP.getTextContent(contentMMLNode));
|
295 |
+
} else {
|
296 |
+
var mrow = CToP.createElement('mrow');
|
297 |
+
for (var j = 0, l = contentMMLNode.childNodes.length; j<l; j++ ) {
|
298 |
+
if (contentMMLNode.childNodes[j].nodeType === 3) {
|
299 |
+
CToP.appendToken(parentNode,name,CToP.getTextContent(contentMMLNode.childNodes[j]));
|
300 |
+
}else{
|
301 |
+
CToP.applyTransform(mrow,contentMMLNode.childNodes[j],0);
|
302 |
+
}
|
303 |
+
}
|
304 |
+
if (mrow.childNodes.length) {
|
305 |
+
parentNode.appendChild(mrow);
|
306 |
+
}
|
307 |
+
}
|
308 |
+
}
|
309 |
+
},
|
310 |
+
|
311 |
+
/* Transform a binary operation
|
312 |
+
*
|
313 |
+
* (function factory)
|
314 |
+
*/
|
315 |
+
binary: function(name,tokenPrecedence) {
|
316 |
+
return function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
317 |
+
var mrow = CToP.createElement('mrow');
|
318 |
+
var needsBrackets = tokenPrecedence<precedence || (tokenPrecedence == precedence && name === "-");
|
319 |
+
if (needsBrackets) {
|
320 |
+
CToP.appendToken(mrow,'mo','(');
|
321 |
+
}
|
322 |
+
if (args.length>1) {
|
323 |
+
CToP.applyTransform(mrow,args[0],tokenPrecedence);
|
324 |
+
}
|
325 |
+
CToP.appendToken(mrow,'mo',name);
|
326 |
+
if (args.length>0) {
|
327 |
+
var z = args[(args.length === 1)?0:1];
|
328 |
+
CToP.applyTransform(mrow,z,tokenPrecedence);
|
329 |
+
}
|
330 |
+
if (needsBrackets) {
|
331 |
+
CToP.appendToken(mrow,'mo',')');
|
332 |
+
}
|
333 |
+
parentNode.appendChild(mrow);
|
334 |
+
}
|
335 |
+
},
|
336 |
+
|
337 |
+
/* Transform an infix operator
|
338 |
+
*
|
339 |
+
* (function factory)
|
340 |
+
*/
|
341 |
+
infix: function(name,tokenPrecedence) {
|
342 |
+
return function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
343 |
+
var mrow = CToP.createElement('mrow');
|
344 |
+
var needsBrackets = precedence>tokenPrecedence;
|
345 |
+
if (needsBrackets) {
|
346 |
+
CToP.appendToken(mrow,'mo','(');
|
347 |
+
}
|
348 |
+
for (var j = 0, l = args.length; j<l; j++ ) {
|
349 |
+
if (j>0) {
|
350 |
+
CToP.appendToken(mrow,'mo',name);
|
351 |
+
}
|
352 |
+
CToP.applyTransform(mrow,args[j],tokenPrecedence);
|
353 |
+
}
|
354 |
+
if (needsBrackets) {
|
355 |
+
CToP.appendToken(mrow,'mo',')');
|
356 |
+
}
|
357 |
+
parentNode.appendChild(mrow);
|
358 |
+
}
|
359 |
+
},
|
360 |
+
|
361 |
+
/* Transform an iterated operation, e.g. summation
|
362 |
+
*
|
363 |
+
* (function factory
|
364 |
+
*/
|
365 |
+
iteration: function(name,limitSymbol) {
|
366 |
+
return function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
367 |
+
var mrow = CToP.createElement('mrow');
|
368 |
+
var mo = CToP.createElement('mo');
|
369 |
+
CToP.setTextContent(mo,name);
|
370 |
+
var munderover = CToP.createElement('munderover');
|
371 |
+
munderover.appendChild(mo);
|
372 |
+
var mrow1 = CToP.createElement('mrow');
|
373 |
+
var i, j, num_qualifiers, num_bvars, children, bvar, num_children, num_args;
|
374 |
+
for (i = 0, num_qualifiers = qualifiers.length; i<num_qualifiers; i++ ) {
|
375 |
+
if (qualifiers[i].nodeName === 'lowlimit'||
|
376 |
+
qualifiers[i].nodeName === 'condition'||
|
377 |
+
qualifiers[i].nodeName === 'domainofapplication')
|
378 |
+
{
|
379 |
+
if (qualifiers[i].nodeName === 'lowlimit') {
|
380 |
+
for (j = 0, num_bvars = bvars.length; j<num_bvars; j++ ) {
|
381 |
+
bvar = bvars[j];
|
382 |
+
children = CToP.getChildren(bvar);
|
383 |
+
if (children.length) {
|
384 |
+
CToP.applyTransform(mrow1,children[0],0);
|
385 |
+
}
|
386 |
+
}
|
387 |
+
if (bvars.length) {
|
388 |
+
CToP.appendToken(mrow1,"mo",limitSymbol);
|
389 |
+
}
|
390 |
+
}
|
391 |
+
children = CToP.getChildren(qualifiers[i]);
|
392 |
+
for (j = 0;j<children.length;j++) {
|
393 |
+
CToP.applyTransform(mrow1,children[j],0);
|
394 |
+
}
|
395 |
+
} else {
|
396 |
+
children = CToP.getChildren(qualifiers[i]);
|
397 |
+
if (qualifiers[i].nodeName === 'interval' && children.length === 2) {
|
398 |
+
for (j = 0, num_bvars = bvars.length; j<num_bvars; j++ ) {
|
399 |
+
bvar = bvars[j];
|
400 |
+
children = CToP.getChildren(bvar);
|
401 |
+
if (children.length) {
|
402 |
+
CToP.applyTransform(mrow1,children[0],0);
|
403 |
+
}
|
404 |
+
}
|
405 |
+
if (bvars.length) {
|
406 |
+
CToP.appendToken(mrow1,"mo","=");
|
407 |
+
}
|
408 |
+
CToP.applyTransform(mrow1,CToP.getChildren(qualifiers[i])[0],0);
|
409 |
+
}
|
410 |
+
}
|
411 |
+
}
|
412 |
+
munderover.appendChild(mrow1);
|
413 |
+
var mjrow = CToP.createElement('mrow');
|
414 |
+
for (i = 0, num_qualifiers = qualifiers.length; i<num_qualifiers; i++ ) {
|
415 |
+
if (qualifiers[i].nodeName === 'uplimit' ||qualifiers[i].nodeName === 'interval' )
|
416 |
+
{
|
417 |
+
children = CToP.getChildren(qualifiers[i]);
|
418 |
+
for (j = 0, num_children = children.length; j<num_children; j++ ) {
|
419 |
+
CToP.applyTransform(mjrow,children[j],0);
|
420 |
+
}
|
421 |
+
}
|
422 |
+
}
|
423 |
+
munderover.appendChild(mjrow);
|
424 |
+
mrow.appendChild(munderover);
|
425 |
+
|
426 |
+
for (i = 0, num_args = args.length; i<num_args; i++ ) {
|
427 |
+
CToP.applyTransform(mrow,args[i],precedence);
|
428 |
+
}
|
429 |
+
|
430 |
+
parentNode.appendChild(mrow);
|
431 |
+
}
|
432 |
+
},
|
433 |
+
|
434 |
+
/* Transform something which binds a variable, e.g. forall or lambda
|
435 |
+
*
|
436 |
+
* (function factory)
|
437 |
+
*/
|
438 |
+
bind: function(name,argSeparator,conditionSeparator) {
|
439 |
+
return function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
440 |
+
var mrow = CToP.createElement('mrow');
|
441 |
+
var children, i, j, l, num_qualifiers, num_children;
|
442 |
+
if (name) {
|
443 |
+
CToP.appendToken(mrow,'mo',name);
|
444 |
+
}
|
445 |
+
for (j = 0, l = bvars.length; j<l; j++ ) {
|
446 |
+
var bvar = bvars[j];
|
447 |
+
if (j>0) {
|
448 |
+
CToP.appendToken(mrow,'mo',',');
|
449 |
+
}
|
450 |
+
children = CToP.getChildren(bvar);
|
451 |
+
if (children.length) {
|
452 |
+
CToP.applyTransform(mrow,children[0],0);
|
453 |
+
}
|
454 |
+
}
|
455 |
+
|
456 |
+
var conditions_mrow = CToP.createElement('mrow');
|
457 |
+
var conditions = false;
|
458 |
+
for (i = 0, num_qualifiers = qualifiers.length; i<num_qualifiers; i++ ) {
|
459 |
+
if (qualifiers[i].nodeName === 'condition') {
|
460 |
+
conditions = true;
|
461 |
+
children = CToP.getChildren(qualifiers[i]);
|
462 |
+
for (j = 0, num_children = children.length; j<num_children; j++ ) {
|
463 |
+
CToP.applyTransform(conditions_mrow,children[j],0);
|
464 |
+
}
|
465 |
+
}
|
466 |
+
}
|
467 |
+
if (conditions) {
|
468 |
+
CToP.appendToken(mrow,'mo',conditionSeparator);
|
469 |
+
}
|
470 |
+
mrow.appendChild(conditions_mrow);
|
471 |
+
for (i = 0, num_qualifiers = qualifiers.length; i<num_qualifiers; i++ ) {
|
472 |
+
if (qualifiers[i].nodeName != 'condition') {
|
473 |
+
CToP.appendToken(mrow,'mo','\u2208');
|
474 |
+
children = CToP.getChildren(qualifiers[i]);
|
475 |
+
for (j = 0, num_children = children.length; j<num_children; j++ ) {
|
476 |
+
CToP.applyTransform(mrow,children[j],0);
|
477 |
+
}
|
478 |
+
}
|
479 |
+
}
|
480 |
+
if (args.length && (bvars.length||children.length)) {
|
481 |
+
CToP.appendToken(mrow,'mo',argSeparator);
|
482 |
+
}
|
483 |
+
for (i = 0, l = args.length; i<l; i++ ) {
|
484 |
+
CToP.applyTransform(mrow,args[i],0);
|
485 |
+
}
|
486 |
+
parentNode.appendChild(mrow);
|
487 |
+
}
|
488 |
+
},
|
489 |
+
|
490 |
+
/** Transform a function application
|
491 |
+
*
|
492 |
+
* i.e. something which ends up looking like `f(x,y,z)`, where `f` is a string
|
493 |
+
*
|
494 |
+
* (function factory)
|
495 |
+
*/
|
496 |
+
fn: function(name) {
|
497 |
+
return function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
498 |
+
var mrow = CToP.createElement('mrow');
|
499 |
+
if (firstArg.childNodes.length) {
|
500 |
+
CToP.applyTransform(mrow,firstArg,1);
|
501 |
+
} else {
|
502 |
+
CToP.appendToken(mrow,'mi',name);
|
503 |
+
}
|
504 |
+
CToP.appendToken(mrow,'mo','\u2061');
|
505 |
+
mrow.appendChild(CToP.createmfenced(args,'(',')'));
|
506 |
+
parentNode.appendChild(mrow);
|
507 |
+
}
|
508 |
+
},
|
509 |
+
|
510 |
+
/** Transform a min/max operation
|
511 |
+
*
|
512 |
+
* (function factory)
|
513 |
+
*/
|
514 |
+
minmax: function(name) {
|
515 |
+
return function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
516 |
+
var mrow = CToP.createElement('mrow');
|
517 |
+
CToP.appendToken(mrow,'mi',name);
|
518 |
+
var mrow2 = CToP.createElement('mrow');
|
519 |
+
CToP.appendToken(mrow2,'mo','{');
|
520 |
+
for (var i = 0, l = args.length; i<l; i++ ) {
|
521 |
+
if (i>0) {
|
522 |
+
CToP.appendToken(mrow2,'mo',',');
|
523 |
+
}
|
524 |
+
CToP.applyTransform(mrow2,args[i],0);
|
525 |
+
}
|
526 |
+
if (qualifiers.length) {
|
527 |
+
CToP.appendToken(mrow2,'mo','|');
|
528 |
+
for (i = 0, l = qualifiers.length; i<l; i++ ) {
|
529 |
+
CToP.applyTransform(mrow2,qualifiers[i],0);
|
530 |
+
}
|
531 |
+
}
|
532 |
+
CToP.appendToken(mrow2,'mo','}');
|
533 |
+
mrow.appendChild(mrow2);
|
534 |
+
parentNode.appendChild(mrow);
|
535 |
+
}
|
536 |
+
}
|
537 |
+
}
|
538 |
+
}
|
539 |
+
|
540 |
+
/* Functions to transform variable/atom tokens
|
541 |
+
*/
|
542 |
+
CToP.tokens = {
|
543 |
+
ci: function(parentNode,contentMMLNode,precedence) {
|
544 |
+
if (contentMMLNode.childNodes.length === 1 && contentMMLNode.childNodes[0].nodeType === 3) {
|
545 |
+
var mi = CToP.appendToken(parentNode,'mi',CToP.getTextContent(contentMMLNode));
|
546 |
+
var type = contentMMLNode.getAttribute('type');
|
547 |
+
if (type in CToP.settings.cistyles) {
|
548 |
+
mi.setAttribute('mathvariant',CToP.settings.cistyles[type]);
|
549 |
+
}
|
550 |
+
} else {
|
551 |
+
CToP.transforms.token('mi')(parentNode,contentMMLNode,precedence);
|
552 |
+
}
|
553 |
+
},
|
554 |
+
cs: CToP.transforms.token('ms'),
|
555 |
+
|
556 |
+
csymbol: function(parentNode,contentMMLNode,precedence) {
|
557 |
+
var cd = contentMMLNode.getAttribute('cd');
|
558 |
+
if (cd && CToP.contentDictionaries[cd]) {
|
559 |
+
CToP.contentDictionaries[cd](parentNode,contentMMLNode,precedence);
|
560 |
+
} else if (CToP.settings.symbols[name]) {
|
561 |
+
CToP.appendToken(parentNode,'mi',CToP.settings.symbols[name]);
|
562 |
+
} else {
|
563 |
+
CToP.tokens.ci(parentNode,contentMMLNode);
|
564 |
+
}
|
565 |
+
},
|
566 |
+
fn: function(parentNode,contentMMLNode,precedence) {
|
567 |
+
CToP.applyTransform(parentNode,CToP.getChildren(contentMMLNode)[0],precedence);
|
568 |
+
},
|
569 |
+
|
570 |
+
naturalnumbers: CToP.transforms.identifier('\u2115'),
|
571 |
+
integers: CToP.transforms.identifier('\u2124'),
|
572 |
+
reals: CToP.transforms.identifier('\u211D'),
|
573 |
+
rationals: CToP.transforms.identifier('\u211A'),
|
574 |
+
complexes: CToP.transforms.identifier('\u2102'),
|
575 |
+
primes: CToP.transforms.identifier('\u2119'),
|
576 |
+
exponentiale: CToP.transforms.identifier('e'),
|
577 |
+
imaginaryi: CToP.transforms.identifier('i'),
|
578 |
+
notanumber: CToP.transforms.identifier('NaN'),
|
579 |
+
eulergamma: CToP.transforms.identifier('\u03B3'),
|
580 |
+
gamma: CToP.transforms.identifier('\u0263'),
|
581 |
+
pi: CToP.transforms.identifier('\u03C0'),
|
582 |
+
infinity: CToP.transforms.identifier('\u221E'),
|
583 |
+
emptyset: CToP.transforms.identifier('\u2205'),
|
584 |
+
"true": CToP.transforms.identifier('true'),
|
585 |
+
"false": CToP.transforms.identifier('false'),
|
586 |
+
set: CToP.transforms.set('{','}'),
|
587 |
+
list: CToP.transforms.set('(',')'),
|
588 |
+
|
589 |
+
interval: function(parentNode,contentMMLNode,precedence) {
|
590 |
+
var closure = contentMMLNode.getAttribute('closure');
|
591 |
+
|
592 |
+
var open, close;
|
593 |
+
switch(closure) {
|
594 |
+
case 'open':
|
595 |
+
open = '(';
|
596 |
+
close = ')';
|
597 |
+
break;
|
598 |
+
case 'open-closed':
|
599 |
+
open = '(';
|
600 |
+
close = ']';
|
601 |
+
break;
|
602 |
+
case 'closed-open':
|
603 |
+
open = '[';
|
604 |
+
close = ')';
|
605 |
+
break;
|
606 |
+
case 'closed':
|
607 |
+
default:
|
608 |
+
open = '[';
|
609 |
+
close = ']';
|
610 |
+
}
|
611 |
+
|
612 |
+
parentNode.appendChild(CToP.createmfenced(CToP.getChildren(contentMMLNode),open,close));
|
613 |
+
},
|
614 |
+
|
615 |
+
apply: function(parentNode,contentMMLNode,precedence) {
|
616 |
+
var children = CToP.classifyChildren(contentMMLNode);
|
617 |
+
|
618 |
+
var firstArg = children.args[0];
|
619 |
+
var args = children.args.slice(1), bvars = children.bvars, qualifiers = children.qualifiers;
|
620 |
+
|
621 |
+
if (firstArg) {
|
622 |
+
var name = firstArg.nodeName;
|
623 |
+
name = (name === "csymbol") ? CToP.getTextContent(firstArg).toLowerCase() : name;
|
624 |
+
if (CToP.applyTokens[name]) {
|
625 |
+
CToP.applyTokens[name](parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence);
|
626 |
+
} else {
|
627 |
+
CToP.transforms.fn(name)(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence);
|
628 |
+
}
|
629 |
+
} else {
|
630 |
+
parentNode.appendChild(CToP.createElement('mrow'));
|
631 |
+
}
|
632 |
+
},
|
633 |
+
|
634 |
+
cn: function(parentNode,contentMMLNode,precedence) {
|
635 |
+
var type = contentMMLNode.getAttribute("type");
|
636 |
+
var base = contentMMLNode.getAttribute("base");
|
637 |
+
if (type || base) {
|
638 |
+
if (base) {
|
639 |
+
type = 'based-integer';
|
640 |
+
}
|
641 |
+
switch(type) {
|
642 |
+
case 'integer':
|
643 |
+
case 'real':
|
644 |
+
case 'double':
|
645 |
+
case 'constant':
|
646 |
+
CToP.transforms.token('mn')(parentNode,contentMMLNode);
|
647 |
+
break;
|
648 |
+
case 'hexdouble':
|
649 |
+
CToP.appendToken(parentNode,'mn','0x'+CToP.getTextContent(contentMMLNode));
|
650 |
+
break;
|
651 |
+
default:
|
652 |
+
var apply = CToP.createElement('apply');
|
653 |
+
var mrow = CToP.createElement('mrow');
|
654 |
+
var c = CToP.createElement(type);
|
655 |
+
apply.appendChild(c);
|
656 |
+
if (base) {
|
657 |
+
CToP.appendToken(apply,'mn',base);
|
658 |
+
}
|
659 |
+
for (var j = 0, l = contentMMLNode.childNodes.length; j<l; j++ ) {
|
660 |
+
if (contentMMLNode.childNodes[j].nodeType === 3) {
|
661 |
+
CToP.appendToken(mrow,'cn',CToP.getTextContent(contentMMLNode.childNodes[j]));
|
662 |
+
}else if (contentMMLNode.childNodes[j].nodeName === 'sep') {
|
663 |
+
apply.appendChild(mrow);
|
664 |
+
mrow = CToP.createElement('mrow');
|
665 |
+
} else {
|
666 |
+
mrow.appendChild(CToP.cloneNode(contentMMLNode.childNodes[j],true));
|
667 |
+
}
|
668 |
+
}
|
669 |
+
apply.appendChild(mrow);
|
670 |
+
CToP.applyTransform(parentNode,apply,0);
|
671 |
+
}
|
672 |
+
} else {
|
673 |
+
CToP.transforms.token('mn')(parentNode,contentMMLNode);
|
674 |
+
}
|
675 |
+
},
|
676 |
+
|
677 |
+
vector: function(parentNode,contentMMLNode,precedence) {
|
678 |
+
var mrow = CToP.createElement('mrow');
|
679 |
+
CToP.appendToken(mrow,'mo','(');
|
680 |
+
|
681 |
+
var mtable = CToP.createElement('mtable');
|
682 |
+
var children = CToP.getChildren(contentMMLNode);
|
683 |
+
for (var i = 0, l = children.length; i<l; i++ ) {
|
684 |
+
var mtr = CToP.createElement('mtr');
|
685 |
+
var mtd = CToP.createElement('mtd');
|
686 |
+
CToP.applyTransform(mtd,children[i],0);
|
687 |
+
mtr.appendChild(mtd);
|
688 |
+
mtable.appendChild(mtr);
|
689 |
+
}
|
690 |
+
|
691 |
+
mrow.appendChild(mtable);
|
692 |
+
CToP.appendToken(mrow,'mo',')');
|
693 |
+
parentNode.appendChild(mrow);
|
694 |
+
},
|
695 |
+
|
696 |
+
piecewise: function(parentNode,contentMMLNode,precedence) {
|
697 |
+
var mrow = CToP.createElement('mrow');
|
698 |
+
CToP.appendToken(mrow,'mo','{');
|
699 |
+
var mtable = CToP.createElement('mtable');
|
700 |
+
mrow.appendChild(mtable);
|
701 |
+
var children = CToP.getChildren(contentMMLNode);
|
702 |
+
for (var i = 0, l = children.length; i<l; i++ ) {
|
703 |
+
CToP.applyTransform(mtable,children[i],0);
|
704 |
+
}
|
705 |
+
parentNode.appendChild(mrow);
|
706 |
+
},
|
707 |
+
|
708 |
+
piece: function(parentNode,contentMMLNode,precedence) {
|
709 |
+
var mtr = CToP.createElement('mtr');
|
710 |
+
var children = CToP.getChildren(contentMMLNode);
|
711 |
+
for (var i = 0, l = children.length; i<l; i++ ) {
|
712 |
+
var mtd = CToP.createElement('mtd');
|
713 |
+
mtr.appendChild(mtd);
|
714 |
+
CToP.applyTransform(mtd,children[i],0);
|
715 |
+
if (i === 0) {
|
716 |
+
mtd = CToP.createElement('mtd');
|
717 |
+
CToP.appendToken(mtd,"mtext","\u00A0if\u00A0");
|
718 |
+
mtr.appendChild(mtd);
|
719 |
+
}
|
720 |
+
}
|
721 |
+
parentNode.appendChild(mtr);
|
722 |
+
},
|
723 |
+
|
724 |
+
otherwise: function(parentNode,contentMMLNode,precedence) {
|
725 |
+
var mtr = CToP.createElement('mtr');
|
726 |
+
var children = CToP.getChildren(contentMMLNode);
|
727 |
+
if (children.length) {
|
728 |
+
var mtd = CToP.createElement('mtd');
|
729 |
+
mtr.appendChild(mtd);
|
730 |
+
CToP.applyTransform(mtd,children[0],0);
|
731 |
+
mtd = CToP.createElement('mtd');
|
732 |
+
mtd.setAttribute('columnspan','2');
|
733 |
+
CToP.appendToken(mtd,"mtext","\u00A0otherwise");
|
734 |
+
mtr.appendChild(mtd);
|
735 |
+
}
|
736 |
+
parentNode.appendChild(mtr);
|
737 |
+
},
|
738 |
+
|
739 |
+
matrix: function(parentNode,contentMMLNode,precedence) {
|
740 |
+
var children = CToP.classifyChildren(contentMMLNode);
|
741 |
+
var args = children.args, bvars = children.bvars, qualifiers = children.qualifiers;
|
742 |
+
|
743 |
+
if (bvars.length || qualifiers.length) {
|
744 |
+
var mrow = CToP.createElement('mrow');
|
745 |
+
CToP.appendToken(mrow,"mo","[");
|
746 |
+
var msub = CToP.createElement('msub');
|
747 |
+
CToP.appendToken(msub,'mi','m');
|
748 |
+
var mrow2 = CToP.createElement('mrow');
|
749 |
+
for (var i = 0, l = bvars.length; i<l; i++ ) {
|
750 |
+
if (i != 0) {
|
751 |
+
CToP.appendToken(mrow2,'mo',',');
|
752 |
+
}
|
753 |
+
CToP.applyTransform(mrow2,bvars[i].childNodes[0],0);
|
754 |
+
}
|
755 |
+
msub.appendChild(mrow2);
|
756 |
+
mrow.appendChild(msub);
|
757 |
+
var msub2 = CToP.cloneNode(msub,true);
|
758 |
+
CToP.appendToken(mrow,'mo','|');
|
759 |
+
mrow.appendChild(msub2);
|
760 |
+
CToP.appendToken(mrow,'mo','=');
|
761 |
+
for (i = 0, l = args.length; i<l; i++ ) {
|
762 |
+
if (i != 0) {
|
763 |
+
CToP.appendToken(mrow,'mo',',');
|
764 |
+
}
|
765 |
+
CToP.applyTransform(mrow,args[i],0);
|
766 |
+
}
|
767 |
+
CToP.appendToken(mrow,'mo',';');
|
768 |
+
for (i = 0, l = qualifiers.length; i<l; i++) {
|
769 |
+
if (i != 0) {
|
770 |
+
CToP.appendToken(mrow,'mo',',');
|
771 |
+
}
|
772 |
+
CToP.applyTransform(mrow,qualifiers[i],0);
|
773 |
+
}
|
774 |
+
CToP.appendToken(mrow,'mo',']');
|
775 |
+
parentNode.appendChild(mrow);
|
776 |
+
} else {
|
777 |
+
var mfenced = CToP.createElement('mfenced');
|
778 |
+
var mtable = CToP.createElement('mtable');
|
779 |
+
for (i = 0, l = args.length; i<l; i++ ) {
|
780 |
+
CToP.applyTransform(mtable,args[i],0);
|
781 |
+
}
|
782 |
+
mfenced.appendChild(mtable);
|
783 |
+
parentNode.appendChild(mfenced);
|
784 |
+
}
|
785 |
+
},
|
786 |
+
|
787 |
+
matrixrow: function(parentNode,contentMMLNode,precedence) {
|
788 |
+
var mtr = CToP.createElement('mtr');
|
789 |
+
var children = CToP.getChildren(contentMMLNode);
|
790 |
+
for (var i = 0, l = children.length; i<l; i++ ) {
|
791 |
+
var mtd = CToP.createElement('mtd');
|
792 |
+
CToP.applyTransform(mtd,children[i],0);
|
793 |
+
mtr.appendChild(mtd);
|
794 |
+
}
|
795 |
+
parentNode.appendChild(mtr);
|
796 |
+
},
|
797 |
+
|
798 |
+
condition: function(parentNode,contentMMLNode,precedence) {
|
799 |
+
var mrow = CToP.createElement('mrow');
|
800 |
+
var children = CToP.getChildren(contentMMLNode);
|
801 |
+
for (var i = 0, l = children.length; i<l; i++ ) {
|
802 |
+
CToP.applyTransform(mrow,children[i],0);
|
803 |
+
}
|
804 |
+
parentNode.appendChild(mrow);
|
805 |
+
},
|
806 |
+
|
807 |
+
lambda: function(parentNode,contentMMLNode,precedence) {
|
808 |
+
var firstArg = CToP.createElement('lambda');
|
809 |
+
var children = CToP.classifyChildren(contentMMLNode);
|
810 |
+
var args = children.args, bvars = children.bvars, qualifiers = children.qualifiers;
|
811 |
+
var i, l, num_qualifiers;
|
812 |
+
|
813 |
+
if (bvars.length) {
|
814 |
+
CToP.applyTokens.lambda(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence);
|
815 |
+
} else {
|
816 |
+
var mrow = CToP.createElement('mrow');
|
817 |
+
for (i = 0, l = args.length; i<l; i++ ) {
|
818 |
+
CToP.applyTransform(mrow,args[i],0);
|
819 |
+
}
|
820 |
+
if (qualifiers.length) {
|
821 |
+
var msub = CToP.createElement('msub');
|
822 |
+
CToP.appendToken(msub,'mo','|');
|
823 |
+
var mrow2 = CToP.createElement('mrow');
|
824 |
+
for (i = 0, num_qualifiers = qualifiers.length; i<num_qualifiers; i++ ) {
|
825 |
+
children = CToP.getChildren(qualifiers[i]);
|
826 |
+
for (var j = 0, num_children = children.length; j<num_children; j++ ) {
|
827 |
+
CToP.applyTransform(mrow2,children[j],0);
|
828 |
+
}
|
829 |
+
}
|
830 |
+
msub.appendChild(mrow2);
|
831 |
+
mrow.appendChild(msub);
|
832 |
+
}
|
833 |
+
parentNode.appendChild(mrow);
|
834 |
+
}
|
835 |
+
},
|
836 |
+
|
837 |
+
ident: function(parentNode,contentMMLNode,precedence) {
|
838 |
+
CToP.appendToken(parentNode,"mi","id")
|
839 |
+
},
|
840 |
+
|
841 |
+
domainofapplication: function(parentNode,contentMMLNode,precedence) {
|
842 |
+
var merror = CToP.createElement('merror');
|
843 |
+
CToP.appendToken(merror,'mtext','unexpected domainofapplication');
|
844 |
+
parentNode.appendChild(merror);
|
845 |
+
},
|
846 |
+
|
847 |
+
share: function(parentNode,contentMMLNode,precedence) {
|
848 |
+
var mi = CToP.createElement('mi');
|
849 |
+
mi.setAttribute('href',contentMMLNode.getAttribute('href'));
|
850 |
+
CToP.setTextContent(mi,"Share " + contentMMLNode.getAttribute('href'));
|
851 |
+
parentNode.appendChild(mi);
|
852 |
+
},
|
853 |
+
|
854 |
+
cerror: function(parentNode,contentMMLNode,precedence) {
|
855 |
+
var merror = CToP.createElement('merror');
|
856 |
+
var children = CToP.getChildren(contentMMLNode);
|
857 |
+
for (var i = 0, l = children.length; i<l; i++ ) {
|
858 |
+
CToP.applyTransform(merror,children[i],0);
|
859 |
+
}
|
860 |
+
parentNode.appendChild(merror);
|
861 |
+
},
|
862 |
+
|
863 |
+
semantics: function(parentNode,contentMMLNode,precedence) {
|
864 |
+
var mrow = CToP.createElement('mrow');
|
865 |
+
var children = CToP.getChildren(contentMMLNode);
|
866 |
+
if (children.length) {
|
867 |
+
var z = children[0];
|
868 |
+
for (var i = 0, l = children.length; i<l; i++ ) {
|
869 |
+
if (children[i].nodeName === 'annotation-xml' && children[i].getAttribute('encoding') === 'MathML-Presentation') {
|
870 |
+
z = children[i];
|
871 |
+
break;
|
872 |
+
}
|
873 |
+
}
|
874 |
+
CToP.applyTransform(mrow,z,0);
|
875 |
+
}
|
876 |
+
parentNode.appendChild(mrow);
|
877 |
+
},
|
878 |
+
|
879 |
+
"annotation-xml": function(parentNode,contentMMLNode,precedence) {
|
880 |
+
var mrow = CToP.createElement('mrow');
|
881 |
+
var children = CToP.getChildren(contentMMLNode);
|
882 |
+
for (var i = 0, l = children.length; i<l; i++ ) {
|
883 |
+
CToP.applyTransform(mrow,children[i],0);
|
884 |
+
}
|
885 |
+
parentNode.appendChild(mrow);
|
886 |
+
}
|
887 |
+
};
|
888 |
+
|
889 |
+
CToP.tokens.reln = CToP.tokens.bind = CToP.tokens.apply;
|
890 |
+
|
891 |
+
CToP.contentDictionaries = {
|
892 |
+
"setname1": function(parentNode,contentMMLNode,precedence) {
|
893 |
+
var sets = {
|
894 |
+
C: '\u2102',
|
895 |
+
N: '\u2115',
|
896 |
+
P: '\u2119',
|
897 |
+
Q: '\u211A',
|
898 |
+
R: '\u211D',
|
899 |
+
Z: '\u2124'
|
900 |
+
}
|
901 |
+
var name = CToP.getTextContent(contentMMLNode);
|
902 |
+
CToP.appendToken(parentNode,'mi',sets[name]);
|
903 |
+
},
|
904 |
+
aritherror: function(parentNode,contentMMLNode,precedence) {
|
905 |
+
var name = CToP.getTextContent(contentMMLNode);
|
906 |
+
CToP.appendToken(parentNode,'mi',name+':');
|
907 |
+
}
|
908 |
+
}
|
909 |
+
|
910 |
+
/* Functions to transform function/operation application tokens
|
911 |
+
*/
|
912 |
+
CToP.applyTokens = {
|
913 |
+
rem: CToP.transforms.binary('mod',3),
|
914 |
+
divide: CToP.transforms.binary('/',3),
|
915 |
+
remainder: CToP.transforms.binary('mod',3),
|
916 |
+
implies: CToP.transforms.binary('\u21D2',3),
|
917 |
+
factorof: CToP.transforms.binary('|',3),
|
918 |
+
"in": CToP.transforms.binary('\u2208',3),
|
919 |
+
notin: CToP.transforms.binary('\u2209',3),
|
920 |
+
notsubset: CToP.transforms.binary('\u2288',2),
|
921 |
+
notprsubset: CToP.transforms.binary('\u2284',2),
|
922 |
+
setdiff: CToP.transforms.binary('\u2216',2),
|
923 |
+
eq: CToP.transforms.infix('=',1),
|
924 |
+
compose: CToP.transforms.infix('\u2218',0),
|
925 |
+
"left_compose": CToP.transforms.infix('\u2218',1),
|
926 |
+
xor: CToP.transforms.infix('xor',3),
|
927 |
+
neq: CToP.transforms.infix('\u2260',1),
|
928 |
+
gt: CToP.transforms.infix('>',1),
|
929 |
+
lt: CToP.transforms.infix('<',1),
|
930 |
+
geq: CToP.transforms.infix('\u2265',1),
|
931 |
+
leq: CToP.transforms.infix('\u2264',1),
|
932 |
+
equivalent: CToP.transforms.infix('\u2261',1),
|
933 |
+
approx: CToP.transforms.infix('\u2248',1),
|
934 |
+
subset: CToP.transforms.infix('\u2286',2),
|
935 |
+
prsubset: CToP.transforms.infix('\u2282',2),
|
936 |
+
cartesianproduct: CToP.transforms.infix('\u00D7',2),
|
937 |
+
"cartesian_product": CToP.transforms.infix('\u00D7',2),
|
938 |
+
vectorproduct: CToP.transforms.infix('\u00D7',2),
|
939 |
+
scalarproduct: CToP.transforms.infix('.',2),
|
940 |
+
outerproduct: CToP.transforms.infix('\u2297',2),
|
941 |
+
sum: CToP.transforms.iteration('\u2211','='),
|
942 |
+
product: CToP.transforms.iteration('\u220F','='),
|
943 |
+
forall: CToP.transforms.bind('\u2200','.',','),
|
944 |
+
exists: CToP.transforms.bind('\u2203','.',','),
|
945 |
+
lambda: CToP.transforms.bind('\u03BB','.',','),
|
946 |
+
limit: CToP.transforms.iteration('lim','\u2192'),
|
947 |
+
sdev: CToP.transforms.fn('\u03c3'),
|
948 |
+
determinant: CToP.transforms.fn('det'),
|
949 |
+
max: CToP.transforms.minmax('max'),
|
950 |
+
min: CToP.transforms.minmax('min'),
|
951 |
+
real: CToP.transforms.fn('\u211b'),
|
952 |
+
imaginary: CToP.transforms.fn('\u2111'),
|
953 |
+
set: CToP.transforms.set('{','}'),
|
954 |
+
list: CToP.transforms.set('(',')'),
|
955 |
+
|
956 |
+
exp: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
957 |
+
var msup = CToP.createElement('msup');
|
958 |
+
CToP.appendToken(msup,'mi','e');
|
959 |
+
CToP.applyTransform(msup,args[0],0);
|
960 |
+
parentNode.appendChild(msup);
|
961 |
+
},
|
962 |
+
|
963 |
+
union: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
964 |
+
if (bvars.length) {
|
965 |
+
CToP.transforms.iteration('\u22C3','=')(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence);
|
966 |
+
} else {
|
967 |
+
CToP.transforms.infix('\u222A',2)(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence);
|
968 |
+
}
|
969 |
+
},
|
970 |
+
|
971 |
+
intersect: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
972 |
+
if (bvars.length) {
|
973 |
+
CToP.transforms.iteration('\u22C2','=')(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence);
|
974 |
+
} else {
|
975 |
+
var mrow = CToP.createElement('mrow');
|
976 |
+
var needsBrackets = precedence>2;
|
977 |
+
if (needsBrackets) {
|
978 |
+
CToP.appendToken(mrow,'mo','(');
|
979 |
+
}
|
980 |
+
for (var j = 0, l = args.length; j<l; j++ ) {
|
981 |
+
var argBrackets = false;
|
982 |
+
if (j>0) {
|
983 |
+
CToP.appendToken(mrow,'mo','\u2229');
|
984 |
+
if (args[j].nodeName === 'apply') {
|
985 |
+
var child = CToP.getChildren(args[j])[0];
|
986 |
+
argBrackets = child.nodeName === 'union';
|
987 |
+
}
|
988 |
+
}
|
989 |
+
if (argBrackets) {
|
990 |
+
CToP.appendToken(mrow,'mo','(');
|
991 |
+
}
|
992 |
+
CToP.applyTransform(mrow,args[j],2);
|
993 |
+
if (argBrackets) {
|
994 |
+
CToP.appendToken(mrow,'mo',')');
|
995 |
+
}
|
996 |
+
}
|
997 |
+
if (needsBrackets) {
|
998 |
+
CToP.appendToken(mrow,'mo',')');
|
999 |
+
}
|
1000 |
+
parentNode.appendChild(mrow);
|
1001 |
+
}
|
1002 |
+
},
|
1003 |
+
|
1004 |
+
floor: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1005 |
+
var mrow = CToP.createElement('mrow');
|
1006 |
+
CToP.appendToken(mrow,'mo','\u230a');
|
1007 |
+
CToP.applyTransform(mrow,args[0],0);
|
1008 |
+
CToP.appendToken(mrow,'mo','\u230b');
|
1009 |
+
parentNode.appendChild(mrow);
|
1010 |
+
},
|
1011 |
+
|
1012 |
+
conjugate: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1013 |
+
var mover = CToP.createElement('mover');
|
1014 |
+
CToP.applyTransform(mover,args[0],0);
|
1015 |
+
CToP.appendToken(mover,'mo','\u00af');
|
1016 |
+
parentNode.appendChild(mover);
|
1017 |
+
},
|
1018 |
+
|
1019 |
+
abs: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1020 |
+
var mrow = CToP.createElement('mrow');
|
1021 |
+
CToP.appendToken(mrow,'mo','|');
|
1022 |
+
CToP.applyTransform(mrow,args[0],0);
|
1023 |
+
CToP.appendToken(mrow,'mo','|');
|
1024 |
+
parentNode.appendChild(mrow);
|
1025 |
+
},
|
1026 |
+
|
1027 |
+
and: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1028 |
+
if (bvars.length || qualifiers.length) {
|
1029 |
+
CToP.transforms.iteration('\u22c0','=')(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,4);
|
1030 |
+
} else {
|
1031 |
+
CToP.transforms.infix('\u2227',2)(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence);
|
1032 |
+
}
|
1033 |
+
},
|
1034 |
+
|
1035 |
+
or: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1036 |
+
if (bvars.length || qualifiers.length) {
|
1037 |
+
CToP.transforms.iteration('\u22c1','=')(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,4);
|
1038 |
+
} else {
|
1039 |
+
CToP.transforms.infix('\u2228',2)(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence);
|
1040 |
+
}
|
1041 |
+
},
|
1042 |
+
|
1043 |
+
xor: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1044 |
+
if (bvars.length || qualifiers.length) {
|
1045 |
+
CToP.transforms.iteration('xor','=')(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,4);
|
1046 |
+
} else {
|
1047 |
+
CToP.transforms.infix('xor',2)(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence);
|
1048 |
+
}
|
1049 |
+
},
|
1050 |
+
|
1051 |
+
card: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1052 |
+
var mrow = CToP.createElement('mrow');
|
1053 |
+
CToP.appendToken(mrow,'mo','|');
|
1054 |
+
CToP.applyTransform(mrow,args[0],0);
|
1055 |
+
CToP.appendToken(mrow,'mo','|');
|
1056 |
+
parentNode.appendChild(mrow);
|
1057 |
+
},
|
1058 |
+
|
1059 |
+
mean: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1060 |
+
if (args.length === 1) {
|
1061 |
+
var mover = CToP.createElement('mover');
|
1062 |
+
CToP.applyTransform(mover,args[0],0);
|
1063 |
+
CToP.appendToken(mover,'mo','\u00af');
|
1064 |
+
parentNode.appendChild(mover);
|
1065 |
+
} else {
|
1066 |
+
parentNode.appendChild(CToP.createmfenced(args,'\u27e8','\u27e9'));
|
1067 |
+
}
|
1068 |
+
},
|
1069 |
+
|
1070 |
+
moment: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1071 |
+
var degree, momentabout, children, i, j, l;
|
1072 |
+
|
1073 |
+
for (i = 0, l = qualifiers.length; i<l; i++ ) {
|
1074 |
+
if (qualifiers[i].nodeName === 'degree') {
|
1075 |
+
degree = qualifiers[i];
|
1076 |
+
} else if (qualifiers[i].nodeName === 'momentabout') {
|
1077 |
+
momentabout = qualifiers[i];
|
1078 |
+
}
|
1079 |
+
}
|
1080 |
+
|
1081 |
+
var mrow = CToP.createElement('mrow');
|
1082 |
+
CToP.appendToken(mrow,'mo','\u27e8');
|
1083 |
+
var argrow = CToP.createElement('mrow');
|
1084 |
+
if (args.length>1) {
|
1085 |
+
argrow.appendChild(CToP.createmfenced(args,'(',')'));
|
1086 |
+
} else {
|
1087 |
+
CToP.applyTransform(argrow,args[0],0);
|
1088 |
+
}
|
1089 |
+
if (degree) {
|
1090 |
+
var msup = CToP.createElement('msup');
|
1091 |
+
msup.appendChild(argrow);
|
1092 |
+
children = CToP.getChildren(degree);
|
1093 |
+
for (j = 0, l = children.length; j<l; j++ ) {
|
1094 |
+
CToP.applyTransform(msup,children[j],0);
|
1095 |
+
}
|
1096 |
+
mrow.appendChild(msup);
|
1097 |
+
} else {
|
1098 |
+
mrow.appendChild(argrow);
|
1099 |
+
}
|
1100 |
+
CToP.appendToken(mrow,'mo','\u27e9');
|
1101 |
+
|
1102 |
+
if (momentabout) {
|
1103 |
+
var msub = CToP.createElement('msub');
|
1104 |
+
msub.appendChild(mrow);
|
1105 |
+
children = CToP.getChildren(momentabout);
|
1106 |
+
for (j = 0, l = children.length; j<l; j++ ) {
|
1107 |
+
CToP.applyTransform(msub,children[j],0);
|
1108 |
+
}
|
1109 |
+
parentNode.appendChild(msub);
|
1110 |
+
} else {
|
1111 |
+
parentNode.appendChild(mrow);
|
1112 |
+
}
|
1113 |
+
},
|
1114 |
+
|
1115 |
+
variance: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1116 |
+
var mrow = CToP.createElement('mrow');
|
1117 |
+
var msup = CToP.createElement('msup');
|
1118 |
+
CToP.appendToken(msup,'mo','\u03c3');
|
1119 |
+
CToP.appendToken(msup,'mn','2');
|
1120 |
+
mrow.appendChild(msup);
|
1121 |
+
CToP.appendToken(mrow,'mo','\u2061');
|
1122 |
+
mrow.appendChild(CToP.createmfenced(args,'(',')'));
|
1123 |
+
parentNode.appendChild(mrow);
|
1124 |
+
},
|
1125 |
+
|
1126 |
+
grad: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1127 |
+
var mrow = CToP.createElement('mrow');
|
1128 |
+
CToP.appendToken(mrow,'mo','\u2207');
|
1129 |
+
CToP.appendToken(mrow,'mo','\u2061');
|
1130 |
+
mrow.appendChild(CToP.createmfenced(args,'(',')'));
|
1131 |
+
parentNode.appendChild(mrow);
|
1132 |
+
},
|
1133 |
+
|
1134 |
+
laplacian: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1135 |
+
var mrow = CToP.createElement('mrow');
|
1136 |
+
var msup = CToP.createElement('msup');
|
1137 |
+
CToP.appendToken(msup,'mo','\u2207');
|
1138 |
+
CToP.appendToken(msup,'mn','2');
|
1139 |
+
mrow.appendChild(msup);
|
1140 |
+
CToP.appendToken(mrow,'mo','\u2061');
|
1141 |
+
mrow.appendChild(CToP.createmfenced(args,'(',')'));
|
1142 |
+
parentNode.appendChild(mrow);
|
1143 |
+
},
|
1144 |
+
|
1145 |
+
curl: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1146 |
+
var mrow = CToP.createElement('mrow');
|
1147 |
+
CToP.appendToken(mrow,'mo','\u2207');
|
1148 |
+
CToP.appendToken(mrow,'mo','\u00d7');
|
1149 |
+
var needsBrackets = args[0].nodeName === 'apply';
|
1150 |
+
if (needsBrackets) {
|
1151 |
+
mrow.appendChild(CToP.createmfenced(args,'(', ')'));
|
1152 |
+
}
|
1153 |
+
else {
|
1154 |
+
CToP.applyTransform(mrow,args[0],precedence);
|
1155 |
+
}
|
1156 |
+
parentNode.appendChild(mrow);
|
1157 |
+
},
|
1158 |
+
|
1159 |
+
divergence: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1160 |
+
var mrow = CToP.createElement('mrow');
|
1161 |
+
CToP.appendToken(mrow,'mo','\u2207');
|
1162 |
+
CToP.appendToken(mrow,'mo','\u22c5');
|
1163 |
+
var needsBrackets = args[0].nodeName === 'apply';
|
1164 |
+
if (needsBrackets) {
|
1165 |
+
mrow.appendChild(CToP.createmfenced(args,'(', ')'));
|
1166 |
+
}
|
1167 |
+
else {
|
1168 |
+
CToP.applyTransform(mrow,args[0],precedence);
|
1169 |
+
}
|
1170 |
+
parentNode.appendChild(mrow);
|
1171 |
+
},
|
1172 |
+
|
1173 |
+
not: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1174 |
+
var mrow = CToP.createElement('mrow');
|
1175 |
+
CToP.appendToken(mrow,'mo','\u00ac');
|
1176 |
+
var needsBrackets = args[0].nodeName === 'apply' || args[0].nodeName === 'bind';
|
1177 |
+
if (needsBrackets) {
|
1178 |
+
CToP.appendToken(mrow,'mo','(');
|
1179 |
+
}
|
1180 |
+
CToP.applyTransform(mrow,args[0],precedence);
|
1181 |
+
if (needsBrackets) {
|
1182 |
+
CToP.appendToken(mrow,'mo',')');
|
1183 |
+
}
|
1184 |
+
parentNode.appendChild(mrow)
|
1185 |
+
},
|
1186 |
+
|
1187 |
+
divide: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1188 |
+
var mfrac = CToP.createElement('mfrac');
|
1189 |
+
CToP.applyTransform(mfrac,args[0],0);
|
1190 |
+
CToP.applyTransform(mfrac,args[1],0);
|
1191 |
+
parentNode.appendChild(mfrac);
|
1192 |
+
},
|
1193 |
+
|
1194 |
+
tendsto: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1195 |
+
var type;
|
1196 |
+
if (firstArg.nodeName === 'tendsto') {
|
1197 |
+
type = firstArg.getAttribute('type');
|
1198 |
+
} else {
|
1199 |
+
type = CToP.getTextContent(args[0]);
|
1200 |
+
args = args.slice(1);
|
1201 |
+
}
|
1202 |
+
var name = (type === 'above')? '\u2198' :
|
1203 |
+
(type === 'below') ? '\u2197' : '\u2192' ;
|
1204 |
+
CToP.transforms.binary(name,2)(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence);
|
1205 |
+
},
|
1206 |
+
|
1207 |
+
minus: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1208 |
+
var tokenPrecedence = args.length === 1 ? 5 : 2;
|
1209 |
+
|
1210 |
+
var mrow = CToP.createElement('mrow');
|
1211 |
+
var needsBrackets = tokenPrecedence<precedence;
|
1212 |
+
if (needsBrackets) {
|
1213 |
+
CToP.appendToken(mrow,'mo','(');
|
1214 |
+
}
|
1215 |
+
|
1216 |
+
if (args.length === 1) {
|
1217 |
+
CToP.appendToken(mrow,'mo','-');
|
1218 |
+
CToP.applyTransform(mrow,args[0],tokenPrecedence);
|
1219 |
+
} else {
|
1220 |
+
CToP.applyTransform(mrow,args[0],tokenPrecedence);
|
1221 |
+
CToP.appendToken(mrow,'mo','-');
|
1222 |
+
var bracketArg;
|
1223 |
+
if (args[1].nodeName === 'apply') {
|
1224 |
+
var argOp = CToP.getChildren(args[1])[0];
|
1225 |
+
bracketArg = argOp.nodeName === 'plus' || argOp.nodeName === 'minus';
|
1226 |
+
}
|
1227 |
+
if (bracketArg) {
|
1228 |
+
CToP.appendToken(mrow,'mo','(');
|
1229 |
+
}
|
1230 |
+
CToP.applyTransform(mrow,args[1],tokenPrecedence);
|
1231 |
+
if (bracketArg) {
|
1232 |
+
CToP.appendToken(mrow,'mo',')');
|
1233 |
+
}
|
1234 |
+
}
|
1235 |
+
|
1236 |
+
if (needsBrackets) {
|
1237 |
+
CToP.appendToken(mrow,'mo',')');
|
1238 |
+
}
|
1239 |
+
parentNode.appendChild(mrow);
|
1240 |
+
},
|
1241 |
+
|
1242 |
+
"complex-cartesian": function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1243 |
+
var mrow = CToP.createElement('mrow');
|
1244 |
+
CToP.applyTransform(mrow,args[0],0);
|
1245 |
+
CToP.appendToken(mrow,'mo','+');
|
1246 |
+
CToP.applyTransform(mrow,args[1],0);
|
1247 |
+
CToP.appendToken(mrow,'mo','\u2062');
|
1248 |
+
CToP.appendToken(mrow,'mi','i');
|
1249 |
+
parentNode.appendChild(mrow);
|
1250 |
+
},
|
1251 |
+
|
1252 |
+
"complex-polar": function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1253 |
+
var mrow = CToP.createElement('mrow');
|
1254 |
+
CToP.applyTransform(mrow,args[0],0);
|
1255 |
+
CToP.appendToken(mrow,'mo','\u2062');
|
1256 |
+
var msup = CToP.createElement('msup');
|
1257 |
+
CToP.appendToken(msup,'mi','e');
|
1258 |
+
var exponent = CToP.createElement('mrow');
|
1259 |
+
CToP.applyTransform(exponent,args[1],0);
|
1260 |
+
CToP.appendToken(exponent,'mo','\u2062');
|
1261 |
+
CToP.appendToken(exponent,'mi','i');
|
1262 |
+
msup.appendChild(exponent);
|
1263 |
+
mrow.appendChild(msup);
|
1264 |
+
parentNode.appendChild(mrow);
|
1265 |
+
},
|
1266 |
+
|
1267 |
+
integer: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1268 |
+
CToP.applyTransform(parentNode,args[0],0);
|
1269 |
+
},
|
1270 |
+
|
1271 |
+
"based-integer": function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1272 |
+
var msub = CToP.createElement('msub');
|
1273 |
+
CToP.applyTransform(msub,args[1],0);
|
1274 |
+
CToP.applyTransform(msub,args[0],0);
|
1275 |
+
parentNode.appendChild(msub);
|
1276 |
+
},
|
1277 |
+
|
1278 |
+
rational: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1279 |
+
var mfrac = CToP.createElement('mfrac');
|
1280 |
+
CToP.applyTransform(mfrac,args[0],0);
|
1281 |
+
CToP.applyTransform(mfrac,args[1],0);
|
1282 |
+
parentNode.appendChild(mfrac);
|
1283 |
+
},
|
1284 |
+
|
1285 |
+
times: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1286 |
+
var mrow = CToP.createElement('mrow');
|
1287 |
+
var needsBrackets = precedence>3;
|
1288 |
+
if (needsBrackets) {
|
1289 |
+
CToP.appendToken(mrow,'mo','(');
|
1290 |
+
}
|
1291 |
+
for (var j = 0, l = args.length; j<l; j++ ) {
|
1292 |
+
if (j>0) {
|
1293 |
+
CToP.appendToken(mrow,'mo',(args[j].nodeName === 'cn') ? "\u00D7" :"\u2062");
|
1294 |
+
}
|
1295 |
+
CToP.applyTransform(mrow,args[j],3);
|
1296 |
+
}
|
1297 |
+
if (needsBrackets) {
|
1298 |
+
CToP.appendToken(mrow,'mo',')');
|
1299 |
+
}
|
1300 |
+
parentNode.appendChild(mrow);
|
1301 |
+
},
|
1302 |
+
|
1303 |
+
plus: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1304 |
+
var mrow = CToP.createElement('mrow');
|
1305 |
+
var needsBrackets = precedence>2;
|
1306 |
+
if (needsBrackets) {
|
1307 |
+
CToP.appendToken(mrow,'mo','(');
|
1308 |
+
}
|
1309 |
+
for (var j = 0, l = args.length; j<l; j++ ) {
|
1310 |
+
var arg = args[j];
|
1311 |
+
var children = CToP.getChildren(arg);
|
1312 |
+
if (j>0) {
|
1313 |
+
var n;
|
1314 |
+
if (CToP.settings.collapsePlusMinus) {
|
1315 |
+
if (arg.nodeName === 'cn' && !(children.length) && (n = Number(CToP.getTextContent(arg))) <0) {
|
1316 |
+
CToP.appendToken(mrow,'mo','\u2212');
|
1317 |
+
CToP.appendToken(mrow,'mn', -n);
|
1318 |
+
} else if (arg.nodeName === 'apply' && children.length === 2 && children[0].nodeName === 'minus') {
|
1319 |
+
CToP.appendToken(mrow,'mo','\u2212');
|
1320 |
+
CToP.applyTransform(mrow,children[1],2);
|
1321 |
+
} else if (arg.nodeName === 'apply' && children.length>2 && children[0].nodeName === 'times' && children[1].nodeName === 'cn' && (n = Number(CToP.getTextContent(children[1]))) < 0) {
|
1322 |
+
CToP.appendToken(mrow,'mo','\u2212');
|
1323 |
+
children[1].textContent = -n; // OK to change MathML since it is being discarded afterward
|
1324 |
+
CToP.applyTransform(mrow,arg,2);
|
1325 |
+
} else{
|
1326 |
+
CToP.appendToken(mrow,'mo','+');
|
1327 |
+
CToP.applyTransform(mrow,arg,2);
|
1328 |
+
}
|
1329 |
+
} else {
|
1330 |
+
CToP.appendToken(mrow,'mo','+');
|
1331 |
+
CToP.applyTransform(mrow,arg,2);
|
1332 |
+
}
|
1333 |
+
} else {
|
1334 |
+
CToP.applyTransform(mrow,arg,2);
|
1335 |
+
}
|
1336 |
+
}
|
1337 |
+
if (needsBrackets) {
|
1338 |
+
CToP.appendToken(mrow,'mo',')');
|
1339 |
+
}
|
1340 |
+
parentNode.appendChild(mrow);
|
1341 |
+
},
|
1342 |
+
|
1343 |
+
transpose: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1344 |
+
var msup = CToP.createElement('msup');
|
1345 |
+
CToP.applyTransform(msup,args[0],precedence);
|
1346 |
+
CToP.appendToken(msup,'mi','T');
|
1347 |
+
parentNode.appendChild(msup);
|
1348 |
+
},
|
1349 |
+
|
1350 |
+
power: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1351 |
+
var msup = CToP.createElement('msup');
|
1352 |
+
CToP.applyTransform(msup,args[0],3);
|
1353 |
+
CToP.applyTransform(msup,args[1],precedence);
|
1354 |
+
parentNode.appendChild(msup);
|
1355 |
+
},
|
1356 |
+
|
1357 |
+
selector: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1358 |
+
var msub = CToP.createElement('msub');
|
1359 |
+
var mrow = args ? args[0]: CToP.createElement('mrow');
|
1360 |
+
CToP.applyTransform(msub,mrow,0);
|
1361 |
+
var mrow2 = CToP.createElement('mrow');
|
1362 |
+
for (var i = 1, l = args.length; i<l; i++ ) {
|
1363 |
+
if (i != 1) {
|
1364 |
+
CToP.appendToken(mrow2,'mo',',');
|
1365 |
+
}
|
1366 |
+
CToP.applyTransform(mrow2,args[i],0);
|
1367 |
+
}
|
1368 |
+
msub.appendChild(mrow2);
|
1369 |
+
parentNode.appendChild(msub);
|
1370 |
+
},
|
1371 |
+
|
1372 |
+
log: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1373 |
+
var mrow = CToP.createElement('mrow');
|
1374 |
+
var mi = CToP.createElement('mi');
|
1375 |
+
CToP.setTextContent(mi,'log');
|
1376 |
+
if (qualifiers.length && qualifiers[0].nodeName === 'logbase') {
|
1377 |
+
var msub = CToP.createElement('msub');
|
1378 |
+
msub.appendChild(mi);
|
1379 |
+
CToP.applyTransform(msub,CToP.getChildren(qualifiers[0])[0],0);
|
1380 |
+
mrow.appendChild(msub);
|
1381 |
+
} else {
|
1382 |
+
mrow.appendChild(mi);
|
1383 |
+
}
|
1384 |
+
CToP.applyTransform(mrow,args[0],7);
|
1385 |
+
parentNode.appendChild(mrow);
|
1386 |
+
},
|
1387 |
+
|
1388 |
+
"int": function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1389 |
+
var mrow = CToP.createElement('mrow');
|
1390 |
+
var mo = CToP.createElement('mo');
|
1391 |
+
CToP.setTextContent(mo,'\u222B');
|
1392 |
+
var msubsup = CToP.createElement('msubsup');
|
1393 |
+
msubsup.appendChild(mo);
|
1394 |
+
var mrow1 = CToP.createElement('mrow');
|
1395 |
+
var children, i, j, l, num_qualifiers, num_children;
|
1396 |
+
for (i = 0, num_qualifiers = qualifiers.length; i<num_qualifiers; i++ ) {
|
1397 |
+
if (qualifiers[i].nodeName === 'lowlimit'||
|
1398 |
+
qualifiers[i].nodeName === 'condition'||
|
1399 |
+
qualifiers[i].nodeName === 'domainofapplication')
|
1400 |
+
{
|
1401 |
+
children = CToP.getChildren(qualifiers[i]);
|
1402 |
+
for (j = 0, num_children = children.length; j<num_children; j++ ) {
|
1403 |
+
CToP.applyTransform(mrow1,children[j],0);
|
1404 |
+
}
|
1405 |
+
} else {
|
1406 |
+
children = CToP.getChildren(qualifiers[i]);
|
1407 |
+
if (qualifiers[i].nodeName === 'interval' && children.length === 2) {
|
1408 |
+
CToP.applyTransform(mrow1,children[0],0);
|
1409 |
+
}
|
1410 |
+
}
|
1411 |
+
}
|
1412 |
+
msubsup.appendChild(mrow1);
|
1413 |
+
var mrow2 = CToP.createElement('mrow');
|
1414 |
+
for (i = 0, num_qualifiers = qualifiers.length; i<num_qualifiers; i++ ) {
|
1415 |
+
if (qualifiers[i].nodeName === 'uplimit') {
|
1416 |
+
children = CToP.getChildren(qualifiers[i]);
|
1417 |
+
for (j = 0, num_children = children.length; j<num_children; j++ ) {
|
1418 |
+
CToP.applyTransform(mrow2,children[j],0);
|
1419 |
+
}
|
1420 |
+
break;
|
1421 |
+
} else if (qualifiers[i].nodeName === 'interval' ) {
|
1422 |
+
children = CToP.getChildren(qualifiers[i]);
|
1423 |
+
CToP.applyTransform(mrow2,children[children.length-1],0);
|
1424 |
+
break;
|
1425 |
+
}
|
1426 |
+
}
|
1427 |
+
msubsup.appendChild(mrow2);
|
1428 |
+
mrow.appendChild(msubsup);
|
1429 |
+
for (i = 0, l = args.length; i<l; i++ ) {
|
1430 |
+
CToP.applyTransform(mrow,args[i],0);
|
1431 |
+
}
|
1432 |
+
for (i = 0, l = bvars.length; i<l; i++ ) {
|
1433 |
+
var bvar = bvars[i];
|
1434 |
+
children = CToP.getChildren(bvar);
|
1435 |
+
if (children.length) {
|
1436 |
+
var mrow3 = CToP.createElement("mrow");
|
1437 |
+
CToP.appendToken(mrow3,'mi','d');
|
1438 |
+
CToP.applyTransform(mrow3,children[0],0);
|
1439 |
+
mrow.appendChild(mrow3);
|
1440 |
+
}
|
1441 |
+
}
|
1442 |
+
parentNode.appendChild(mrow);
|
1443 |
+
},
|
1444 |
+
|
1445 |
+
inverse: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1446 |
+
var msup = CToP.createElement('msup');
|
1447 |
+
var arg = (args.length) ? args[0] : CToP.createElement('mrow');
|
1448 |
+
CToP.applyTransform(msup,arg,precedence);
|
1449 |
+
var mfenced = CToP.createElement('mfenced');
|
1450 |
+
CToP.appendToken(mfenced,'mn','-1');
|
1451 |
+
msup.appendChild(mfenced);
|
1452 |
+
parentNode.appendChild(msup);
|
1453 |
+
},
|
1454 |
+
|
1455 |
+
quotient: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1456 |
+
var mrow = CToP.createElement('mrow');
|
1457 |
+
CToP.appendToken(mrow,'mo','\u230A');
|
1458 |
+
if (args.length) {
|
1459 |
+
CToP.applyTransform(mrow,args[0],0);
|
1460 |
+
CToP.appendToken(mrow,'mo','/');
|
1461 |
+
if (args.length>1) {
|
1462 |
+
CToP.applyTransform(mrow,args[1],0);
|
1463 |
+
}
|
1464 |
+
}
|
1465 |
+
CToP.appendToken(mrow,'mo','\u230B');
|
1466 |
+
parentNode.appendChild(mrow);
|
1467 |
+
},
|
1468 |
+
|
1469 |
+
factorial: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1470 |
+
var mrow = CToP.createElement('mrow');
|
1471 |
+
CToP.applyTransform(mrow,args[0],4);
|
1472 |
+
CToP.appendToken(mrow,'mo','!');
|
1473 |
+
parentNode.appendChild(mrow);
|
1474 |
+
},
|
1475 |
+
|
1476 |
+
root: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1477 |
+
var mr;
|
1478 |
+
if (firstArg.nodeName === 'root' && (qualifiers.length === 0 || (qualifiers[0].nodeName === 'degree' && CToP.getTextContent(qualifiers[0]) === '2'))) {
|
1479 |
+
mr = CToP.createElement('msqrt');
|
1480 |
+
for (var i = 0, l = args.length; i<l; i++ ) {
|
1481 |
+
CToP.applyTransform(mr,args[i],0);
|
1482 |
+
}
|
1483 |
+
} else {
|
1484 |
+
mr = CToP.createElement('mroot');
|
1485 |
+
CToP.applyTransform(mr,args[0],0);
|
1486 |
+
var arg = (firstArg.nodeName === 'root') ? qualifiers[0].childNodes[0] : args[1];
|
1487 |
+
CToP.applyTransform(mr,arg,0);
|
1488 |
+
}
|
1489 |
+
parentNode.appendChild(mr);
|
1490 |
+
},
|
1491 |
+
|
1492 |
+
diff: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1493 |
+
if (bvars.length) { // d/dx form
|
1494 |
+
var outNode;
|
1495 |
+
var mfrac = CToP.createElement('mfrac');
|
1496 |
+
var toprow = CToP.createElement('mrow');
|
1497 |
+
var bottomrow = CToP.createElement('mrow');
|
1498 |
+
mfrac.appendChild(toprow);
|
1499 |
+
mfrac.appendChild(bottomrow);
|
1500 |
+
|
1501 |
+
var bvar, degreeNode, msup, mrow;
|
1502 |
+
|
1503 |
+
var d = CToP.createElement('mi');
|
1504 |
+
CToP.setTextContent(d,'d');
|
1505 |
+
|
1506 |
+
var children = CToP.getChildren(bvars[0]);
|
1507 |
+
for (var j = 0, l = children.length; j<l; j++ ) {
|
1508 |
+
if (children[j].nodeName === 'degree') {
|
1509 |
+
var childNode = CToP.getChildren(children[j])[0];
|
1510 |
+
if (CToP.getTextContent(childNode) != '1') {
|
1511 |
+
degreeNode = childNode;
|
1512 |
+
msup = CToP.createElement('msup');
|
1513 |
+
msup.appendChild(d);
|
1514 |
+
d = msup;
|
1515 |
+
CToP.applyTransform(d,degreeNode,0);
|
1516 |
+
}
|
1517 |
+
} else {
|
1518 |
+
bvar = children[j];
|
1519 |
+
}
|
1520 |
+
}
|
1521 |
+
toprow.appendChild(d);
|
1522 |
+
|
1523 |
+
if (args.length) {
|
1524 |
+
switch(args[0].nodeName) {
|
1525 |
+
case 'apply':
|
1526 |
+
case 'bind':
|
1527 |
+
case 'reln':
|
1528 |
+
mrow = CToP.createElement('mrow');
|
1529 |
+
mrow.appendChild(mfrac);
|
1530 |
+
CToP.applyTransform(mrow,args[0],3);
|
1531 |
+
outNode = mrow;
|
1532 |
+
break;
|
1533 |
+
default:
|
1534 |
+
CToP.applyTransform(toprow,args[0],0);
|
1535 |
+
outNode = mfrac;
|
1536 |
+
}
|
1537 |
+
}
|
1538 |
+
|
1539 |
+
CToP.appendToken(bottomrow,'mi','d');
|
1540 |
+
|
1541 |
+
if (degreeNode) {
|
1542 |
+
var msup2 = CToP.createElement('msup');
|
1543 |
+
CToP.applyTransform(msup2,bvar,0);
|
1544 |
+
CToP.applyTransform(msup2,degreeNode,0);
|
1545 |
+
bottomrow.appendChild(msup2);
|
1546 |
+
} else {
|
1547 |
+
CToP.applyTransform(bottomrow,bvar,0);
|
1548 |
+
}
|
1549 |
+
|
1550 |
+
|
1551 |
+
parentNode.appendChild(outNode);
|
1552 |
+
} else { // f' form
|
1553 |
+
msup = CToP.createElement('msup');
|
1554 |
+
mrow = CToP.createElement('mrow');
|
1555 |
+
msup.appendChild(mrow);
|
1556 |
+
CToP.applyTransform(mrow,args[0],0);
|
1557 |
+
CToP.appendToken(msup,'mo','\u2032'); // tick
|
1558 |
+
parentNode.appendChild(msup);
|
1559 |
+
}
|
1560 |
+
},
|
1561 |
+
|
1562 |
+
partialdiff: function(parentNode,contentMMLNode,firstArg,args,bvars,qualifiers,precedence) {
|
1563 |
+
var msup, msub, mrow;
|
1564 |
+
|
1565 |
+
var mfrac = CToP.createElement('mfrac');
|
1566 |
+
var toprow = CToP.createElement('mrow');
|
1567 |
+
var bottomrow = CToP.createElement('mrow');
|
1568 |
+
mfrac.appendChild(toprow);
|
1569 |
+
mfrac.appendChild(bottomrow);
|
1570 |
+
|
1571 |
+
var differendNode, degree, children;
|
1572 |
+
|
1573 |
+
if (bvars.length === 0 && args.length === 2 && args[0].nodeName === 'list') {
|
1574 |
+
if (args[1].nodeName === 'lambda') { // `d^(n+m)/(dx^n dy^m) f` form, through a lambda
|
1575 |
+
degree = CToP.getChildren(args[0]).length;
|
1576 |
+
if (degree != 1) {
|
1577 |
+
msup = CToP.createElement('msup');
|
1578 |
+
CToP.appendToken(msup,'mo','\u2202'); // curly d
|
1579 |
+
CToP.appendToken(msup,'mn',degree);
|
1580 |
+
toprow.appendChild(msup);
|
1581 |
+
} else {
|
1582 |
+
CToP.appendToken(toprow,'mo','\u2202');
|
1583 |
+
}
|
1584 |
+
|
1585 |
+
children = CToP.getChildren(args[1]);
|
1586 |
+
|
1587 |
+
differendNode = children[children.length - 1]; // thing being differentiated
|
1588 |
+
|
1589 |
+
var bvarNames = [];
|
1590 |
+
var lambdaChildren = CToP.getChildren(args[1]); // names of bound variables
|
1591 |
+
var lambdaSequence = CToP.getChildren(args[0]); // indices of bound variable names, in order
|
1592 |
+
for (var i = 0, l = lambdaChildren.length; i<l; i++ ) {
|
1593 |
+
if (lambdaChildren[i].nodeName === 'bvar') {
|
1594 |
+
bvarNames.push(CToP.getChildren(lambdaChildren[i])[0]);
|
1595 |
+
}
|
1596 |
+
}
|
1597 |
+
|
1598 |
+
var lastN = null;
|
1599 |
+
degree = 0;
|
1600 |
+
function addDiff(n,degree) {
|
1601 |
+
CToP.appendToken(bottomrow,'mo','\u2202');
|
1602 |
+
var bvar = bvarNames[n];
|
1603 |
+
if (degree>1) {
|
1604 |
+
var msup = CToP.createElement('msup');
|
1605 |
+
CToP.applyTransform(msup,bvar,0);
|
1606 |
+
CToP.appendToken(msup,'mn',degree);
|
1607 |
+
bottomrow.appendChild(msup);
|
1608 |
+
} else {
|
1609 |
+
CToP.applyTransform(bottomrow,bvar,0);
|
1610 |
+
}
|
1611 |
+
}
|
1612 |
+
for (i = 0, l = lambdaSequence.length; i<l; i++ ) {
|
1613 |
+
var n = Number(CToP.getTextContent(lambdaSequence[i]))-1;
|
1614 |
+
if (lastN !== null && n != lastN) {
|
1615 |
+
addDiff(lastN,degree);
|
1616 |
+
degree = 0;
|
1617 |
+
}
|
1618 |
+
lastN = n;
|
1619 |
+
degree += 1;
|
1620 |
+
}
|
1621 |
+
if (lastN) {
|
1622 |
+
addDiff(lastN,degree);
|
1623 |
+
}
|
1624 |
+
} else { // `D_i_j f` form
|
1625 |
+
mrow = CToP.createElement('mrow');
|
1626 |
+
msub = CToP.createElement('msub');
|
1627 |
+
CToP.appendToken(msub,'mi','D');
|
1628 |
+
var bvar = CToP.getChildren(args[0]);
|
1629 |
+
msub.appendChild(CToP.createmfenced(bvar,'',''));
|
1630 |
+
mrow.appendChild(msub);
|
1631 |
+
CToP.applyTransform(mrow,args[1],0);
|
1632 |
+
parentNode.appendChild(mrow);
|
1633 |
+
return;
|
1634 |
+
}
|
1635 |
+
} else { // `d^(n+m)/(dx^n dy^m) f` form, with bvars
|
1636 |
+
msup = CToP.createElement('msup');
|
1637 |
+
toprow.appendChild(msup);
|
1638 |
+
CToP.appendToken(msup,'mo','\u2202');
|
1639 |
+
|
1640 |
+
var degreeRow = CToP.createElement('mrow');
|
1641 |
+
msup.appendChild(degreeRow);
|
1642 |
+
|
1643 |
+
var qualifier;
|
1644 |
+
|
1645 |
+
if (qualifiers.length && qualifiers[0].nodeName === 'degree' && CToP.getChildren(qualifiers[0]).length) {
|
1646 |
+
qualifier = CToP.getChildren(qualifiers[0])[0];
|
1647 |
+
CToP.applyTransform(degreeRow,qualifier,0);
|
1648 |
+
} else {
|
1649 |
+
degree = 0;
|
1650 |
+
var hadFirst = false;
|
1651 |
+
for (i = 0, l = bvars.length; i<l; i++ ) {
|
1652 |
+
children = CToP.getChildren(bvars[i]);
|
1653 |
+
if (children.length === 2) {
|
1654 |
+
for (var j = 0;j<2;j++) {
|
1655 |
+
if (children[j].nodeName === 'degree') {
|
1656 |
+
if (/^\s*\d+\s*$/.test(CToP.getTextContent(children[j]))) {
|
1657 |
+
degree += Number(CToP.getTextContent(children[j]));
|
1658 |
+
} else {
|
1659 |
+
if (hadFirst) {
|
1660 |
+
CToP.appendToken(degreeRow,'mo','+');
|
1661 |
+
}
|
1662 |
+
hadFirst = true;
|
1663 |
+
CToP.applyTransform(degreeRow,CToP.getChildren(children[j])[0],0);
|
1664 |
+
}
|
1665 |
+
}
|
1666 |
+
}
|
1667 |
+
} else {
|
1668 |
+
degree++;
|
1669 |
+
}
|
1670 |
+
}
|
1671 |
+
if (degree>0) {
|
1672 |
+
if (hadFirst) {
|
1673 |
+
CToP.appendToken(degreeRow,'mo','+');
|
1674 |
+
}
|
1675 |
+
CToP.appendToken(degreeRow,'mn',degree);
|
1676 |
+
}
|
1677 |
+
}
|
1678 |
+
|
1679 |
+
if (args.length) {
|
1680 |
+
differendNode = args[0];
|
1681 |
+
}
|
1682 |
+
|
1683 |
+
for (i = 0, l = bvars.length; i<l; i++ ) {
|
1684 |
+
CToP.appendToken(bottomrow,'mo','\u2202');
|
1685 |
+
children = CToP.getChildren(bvars[i]);
|
1686 |
+
|
1687 |
+
if (children.length === 2) {
|
1688 |
+
for (j = 0;j<2;j++) {
|
1689 |
+
if (children[j].nodeName === 'degree') {
|
1690 |
+
var msup2 = CToP.createElement('msup');
|
1691 |
+
CToP.applyTransform(msup2,children[1-j],0);
|
1692 |
+
var bvarDegreeNode = CToP.getChildren(children[j])[0];
|
1693 |
+
CToP.applyTransform(msup2,bvarDegreeNode,0);
|
1694 |
+
bottomrow.appendChild(msup2);
|
1695 |
+
}
|
1696 |
+
}
|
1697 |
+
} else if (children.length === 1) {
|
1698 |
+
CToP.applyTransform(bottomrow,children[0],0);
|
1699 |
+
}
|
1700 |
+
}
|
1701 |
+
}
|
1702 |
+
if (differendNode) {
|
1703 |
+
switch(differendNode.nodeName) {
|
1704 |
+
case 'apply':
|
1705 |
+
case 'bind':
|
1706 |
+
case 'reln':
|
1707 |
+
mrow = CToP.createElement('mrow');
|
1708 |
+
mrow.appendChild(mfrac);
|
1709 |
+
CToP.applyTransform(mrow,differendNode,3);
|
1710 |
+
outNode = mrow;
|
1711 |
+
break;
|
1712 |
+
default:
|
1713 |
+
CToP.applyTransform(toprow,differendNode,0);
|
1714 |
+
outNode = mfrac;
|
1715 |
+
}
|
1716 |
+
} else {
|
1717 |
+
outNode = mfrac;
|
1718 |
+
}
|
1719 |
+
parentNode.appendChild(outNode);
|
1720 |
+
}
|
1721 |
+
};
|
1722 |
+
CToP.applyTokens.size = CToP.applyTokens.card;
|
1723 |
+
|
1724 |
+
return CToP;
|
1725 |
+
})(MathJax.Hub);
|
1726 |
+
|
1727 |
+
|
1728 |
+
MathJax.Hub.Register.StartupHook("MathML Jax Ready",function () {
|
1729 |
+
|
1730 |
+
var MATHML = MathJax.InputJax.MathML;
|
1731 |
+
|
1732 |
+
var CToP = MathJax.Extension["MathML/content-mathml"];
|
1733 |
+
CToP.mbase = MathJax.ElementJax.mml.mbase;
|
1734 |
+
CToP.MML = MathJax.ElementJax.mml;
|
1735 |
+
|
1736 |
+
MATHML.DOMfilterHooks.Add(function (data) {
|
1737 |
+
data.math = CToP.transformElement(data.math);
|
1738 |
+
});
|
1739 |
+
|
1740 |
+
MathJax.Hub.Startup.signal.Post("MathML/content-mathml Ready");
|
1741 |
+
});
|
1742 |
+
|
1743 |
+
MathJax.Ajax.loadComplete("[MathJax]/extensions/MathML/content-mathml.js");
|
vendor/MathJax/extensions/MathML/mml3.js
ADDED
@@ -0,0 +1,784 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* MathJax/extensions/MathML/mml3.js
|
4 |
+
*
|
5 |
+
* This file implements an XSLT transform to convert some MathML 3
|
6 |
+
* constructs to constructs MathJax can render. The transform is
|
7 |
+
* performed in a pre-filter for the MathML input jax, so that the
|
8 |
+
* Show Math As menu will still show the Original MathML correctly,
|
9 |
+
* but the transformed MathML can be obtained from the regular MathML menu.
|
10 |
+
*
|
11 |
+
* To load it, include
|
12 |
+
*
|
13 |
+
* MathML: {
|
14 |
+
* extensions: ["mml3.js"]
|
15 |
+
* }
|
16 |
+
*
|
17 |
+
* in your configuration.
|
18 |
+
*
|
19 |
+
* A portion of this file is taken from mml3mj.xsl which is
|
20 |
+
* Copyright (c) David Carlisle 2008-2015
|
21 |
+
* and is used by permission of David Carlisle, who has agreed to allow us
|
22 |
+
* to release it under the Apache2 license (see below). That portion is
|
23 |
+
* indicated via comments.
|
24 |
+
*
|
25 |
+
* The remainder falls under the copyright that follows.
|
26 |
+
* ---------------------------------------------------------------------
|
27 |
+
*
|
28 |
+
* Copyright (c) 2013-2018 The MathJax Consortium
|
29 |
+
*
|
30 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
31 |
+
* you may not use this file except in compliance with the License.
|
32 |
+
* You may obtain a copy of the License at
|
33 |
+
*
|
34 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
35 |
+
*
|
36 |
+
* Unless required by applicable law or agreed to in writing, software
|
37 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
38 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
39 |
+
* See the License for the specific language governing permissions and
|
40 |
+
* limitations under the License.
|
41 |
+
*/
|
42 |
+
|
43 |
+
|
44 |
+
MathJax.Extension["MathML/mml3"] = {
|
45 |
+
version: "2.7.5"
|
46 |
+
};
|
47 |
+
|
48 |
+
MathJax.Hub.Register.StartupHook("MathML Jax Ready",function () {
|
49 |
+
|
50 |
+
var MATHML = MathJax.InputJax.MathML,
|
51 |
+
PARSE = MATHML.Parse.prototype;
|
52 |
+
|
53 |
+
MATHML.prefilterHooks.Add(function (data) {
|
54 |
+
if (!MATHML.mml3XSLT) return;
|
55 |
+
|
56 |
+
// Parse the <math> but use MATHML.Parse's preProcessMath to apply the normal preprocessing.
|
57 |
+
if (!MATHML.ParseXML) {MATHML.ParseXML = MATHML.createParser()}
|
58 |
+
var doc = MATHML.ParseXML(PARSE.preProcessMath(data.math));
|
59 |
+
|
60 |
+
// Now transform the <math> using the mml3 stylesheet.
|
61 |
+
var newdoc = MATHML.mml3XSLT.transformToDocument(doc);
|
62 |
+
|
63 |
+
if ((typeof newdoc) === "string") {
|
64 |
+
// Internet Explorer returns a string, so just use it.
|
65 |
+
data.math = newdoc;
|
66 |
+
} else if (window.XMLSerializer) {
|
67 |
+
// Serialize the <math> again. We could directly provide the DOM content
|
68 |
+
// but other prefilterHooks may assume data.math is still a string.
|
69 |
+
var serializer = new XMLSerializer();
|
70 |
+
data.math = serializer.serializeToString(newdoc.documentElement, doc);
|
71 |
+
}
|
72 |
+
});
|
73 |
+
|
74 |
+
/*
|
75 |
+
* The following is derived from mml3mj.xsl
|
76 |
+
* (https://github.com/davidcarlisle/web-xslt/blob/master/ctop/mml3mj.xsl)
|
77 |
+
* which is Copyright (c) David Carlisle 2008-2015.
|
78 |
+
* It is used by permission of David Carlisle, who has agreed to allow it to
|
79 |
+
* be released under the Apache License, Version 2.0.
|
80 |
+
*/
|
81 |
+
var BROWSER = MathJax.Hub.Browser;
|
82 |
+
var exslt = '';
|
83 |
+
if (BROWSER.isEdge || BROWSER.isMSIE) {
|
84 |
+
exslt = 'urn:schemas-microsoft-com:xslt'
|
85 |
+
} else {
|
86 |
+
exslt = 'http://exslt.org/common';
|
87 |
+
}
|
88 |
+
var mml3Stylesheet =
|
89 |
+
'<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" ' +
|
90 |
+
' xmlns:m="http://www.w3.org/1998/Math/MathML"' +
|
91 |
+
' xmlns:c="' + exslt + '"' +
|
92 |
+
' exclude-result-prefixes="m c">' +
|
93 |
+
'<xsl:output indent="yes" omit-xml-declaration="yes"/>' +
|
94 |
+
'<xsl:output indent="yes" omit-xml-declaration="yes"/><xsl:template match="*">' +
|
95 |
+
' <xsl:copy>' +
|
96 |
+
' <xsl:copy-of select="@*"/>' +
|
97 |
+
' <xsl:apply-templates/>' +
|
98 |
+
' </xsl:copy>' +
|
99 |
+
'</xsl:template><xsl:template match="m:*[@dir=\'rtl\']" priority="10">' +
|
100 |
+
' <xsl:apply-templates mode="rtl" select="."/>' +
|
101 |
+
'</xsl:template><xsl:template match="@*" mode="rtl">' +
|
102 |
+
' <xsl:copy-of select="."/>' +
|
103 |
+
' <xsl:attribute name="dir">ltr</xsl:attribute>' +
|
104 |
+
'</xsl:template>' +
|
105 |
+
'<xsl:template match="*" mode="rtl">' +
|
106 |
+
' <xsl:copy>' +
|
107 |
+
' <xsl:apply-templates select="@*" mode="rtl"/>' +
|
108 |
+
' <xsl:for-each select="node()">' +
|
109 |
+
' <xsl:sort data-type="number" order="descending" select="position()"/>' +
|
110 |
+
' <xsl:text> </xsl:text>' +
|
111 |
+
' <xsl:apply-templates mode="rtl" select="."/>' +
|
112 |
+
' </xsl:for-each>' +
|
113 |
+
' </xsl:copy>' +
|
114 |
+
'</xsl:template><xsl:template match="@open" mode="rtl">' +
|
115 |
+
' <xsl:attribute name="close"><xsl:value-of select="."/></xsl:attribute>' +
|
116 |
+
'</xsl:template><xsl:template match="@open[.=\'(\']" mode="rtl">' +
|
117 |
+
' <xsl:attribute name="close">)</xsl:attribute>' +
|
118 |
+
'</xsl:template><xsl:template match="@open[.=\')\']" mode="rtl">' +
|
119 |
+
' <xsl:attribute name="close">(</xsl:attribute>' +
|
120 |
+
'</xsl:template>' +
|
121 |
+
'<xsl:template match="@open[.=\'[\']" mode="rtl">' +
|
122 |
+
' <xsl:attribute name="close">]</xsl:attribute>' +
|
123 |
+
'</xsl:template>' +
|
124 |
+
'<xsl:template match="@open[.=\']\']" mode="rtl">' +
|
125 |
+
' <xsl:attribute name="close">[</xsl:attribute>' +
|
126 |
+
'</xsl:template>' +
|
127 |
+
'<xsl:template match="@open[.=\'{\']" mode="rtl">' +
|
128 |
+
' <xsl:attribute name="close">}</xsl:attribute>' +
|
129 |
+
'</xsl:template>' +
|
130 |
+
'<xsl:template match="@open[.=\'}\']" mode="rtl">' +
|
131 |
+
' <xsl:attribute name="close">{</xsl:attribute>' +
|
132 |
+
'</xsl:template>' +
|
133 |
+
'<xsl:template match="@close" mode="rtl">' +
|
134 |
+
' <xsl:attribute name="open"><xsl:value-of select="."/></xsl:attribute>' +
|
135 |
+
'</xsl:template><xsl:template match="@close[.=\'(\']" mode="rtl">' +
|
136 |
+
' <xsl:attribute name="open">)</xsl:attribute>' +
|
137 |
+
'</xsl:template><xsl:template match="@close[.=\')\']" mode="rtl">' +
|
138 |
+
' <xsl:attribute name="open">(</xsl:attribute>' +
|
139 |
+
'</xsl:template>' +
|
140 |
+
'<xsl:template match="@close[.=\'[\']" mode="rtl">' +
|
141 |
+
' <xsl:attribute name="open">]</xsl:attribute>' +
|
142 |
+
'</xsl:template>' +
|
143 |
+
'<xsl:template match="@close[.=\']\']" mode="rtl">' +
|
144 |
+
' <xsl:attribute name="open">[</xsl:attribute>' +
|
145 |
+
'</xsl:template>' +
|
146 |
+
'<xsl:template match="@close[.=\'{\']" mode="rtl">' +
|
147 |
+
' <xsl:attribute name="open">}</xsl:attribute>' +
|
148 |
+
'</xsl:template>' +
|
149 |
+
'<xsl:template match="@close[.=\'}\']" mode="rtl">' +
|
150 |
+
' <xsl:attribute name="open">{</xsl:attribute>' +
|
151 |
+
'</xsl:template><xsl:template match="m:mfrac[@bevelled=\'true\']" mode="rtl">' +
|
152 |
+
' <m:mrow>' +
|
153 |
+
' <m:msub><m:mi></m:mi><xsl:apply-templates select="*[2]" mode="rtl"/></m:msub>' +
|
154 |
+
' <m:mo>\</m:mo>' +
|
155 |
+
' <m:msup><m:mi></m:mi><xsl:apply-templates select="*[1]" mode="rtl"/></m:msup>' +
|
156 |
+
' </m:mrow>' +
|
157 |
+
'</xsl:template><xsl:template match="m:mfrac" mode="rtl">' +
|
158 |
+
' <xsl:copy>' +
|
159 |
+
' <xsl:apply-templates mode="rtl" select="@*|*"/>' +
|
160 |
+
' </xsl:copy>' +
|
161 |
+
'</xsl:template><xsl:template match="m:mroot" mode="rtl">' +
|
162 |
+
' <m:msup>' +
|
163 |
+
' <m:menclose notation="top right">' +
|
164 |
+
' <xsl:apply-templates mode="rtl" select="@*|*[1]"/>' +
|
165 |
+
' </m:menclose>' +
|
166 |
+
' <xsl:apply-templates mode="rtl" select="*[2]"/>' +
|
167 |
+
' </m:msup>' +
|
168 |
+
'</xsl:template>' +
|
169 |
+
'<xsl:template match="m:msqrt" mode="rtl">' +
|
170 |
+
' <m:menclose notation="top right">' +
|
171 |
+
' <xsl:apply-templates mode="rtl" select="@*|*[1]"/>' +
|
172 |
+
' </m:menclose>' +
|
173 |
+
'</xsl:template><xsl:template match="m:mtable|m:munder|m:mover|m:munderover" mode="rtl" priority="2">' +
|
174 |
+
' <xsl:copy>' +
|
175 |
+
' <xsl:apply-templates select="@*" mode="rtl"/>' +
|
176 |
+
' <xsl:apply-templates mode="rtl">' +
|
177 |
+
' </xsl:apply-templates>' +
|
178 |
+
' </xsl:copy>' +
|
179 |
+
'</xsl:template>' +
|
180 |
+
'<xsl:template match="m:msup" mode="rtl" priority="2">' +
|
181 |
+
' <m:mmultiscripts>' +
|
182 |
+
' <xsl:apply-templates select="*[1]" mode="rtl"/>' +
|
183 |
+
' <m:mprescripts/>' +
|
184 |
+
' <m:none/>' +
|
185 |
+
' <xsl:apply-templates select="*[2]" mode="rtl"/>' +
|
186 |
+
' </m:mmultiscripts>' +
|
187 |
+
'</xsl:template>' +
|
188 |
+
'<xsl:template match="m:msub" mode="rtl" priority="2">' +
|
189 |
+
' <m:mmultiscripts>' +
|
190 |
+
' <xsl:apply-templates select="*[1]" mode="rtl"/>' +
|
191 |
+
' <m:mprescripts/>' +
|
192 |
+
' <xsl:apply-templates select="*[2]" mode="rtl"/>' +
|
193 |
+
' <m:none/>' +
|
194 |
+
' </m:mmultiscripts>' +
|
195 |
+
'</xsl:template>' +
|
196 |
+
'<xsl:template match="m:msubsup" mode="rtl" priority="2">' +
|
197 |
+
' <m:mmultiscripts>' +
|
198 |
+
' <xsl:apply-templates select="*[1]" mode="rtl"/>' +
|
199 |
+
' <m:mprescripts/>' +
|
200 |
+
' <xsl:apply-templates select="*[2]" mode="rtl"/>' +
|
201 |
+
' <xsl:apply-templates select="*[3]" mode="rtl"/>' +
|
202 |
+
' </m:mmultiscripts>' +
|
203 |
+
'</xsl:template>' +
|
204 |
+
'<xsl:template match="m:mmultiscripts" mode="rtl" priority="2">' +
|
205 |
+
' <m:mmultiscripts>' +
|
206 |
+
' <xsl:apply-templates select="*[1]" mode="rtl"/>' +
|
207 |
+
' <xsl:for-each select="m:mprescripts/following-sibling::*[position() mod 2 = 1]">' +
|
208 |
+
' <xsl:sort data-type="number" order="descending" select="position()"/>' +
|
209 |
+
' <xsl:apply-templates select="." mode="rtl"/>' +
|
210 |
+
' <xsl:apply-templates select="following-sibling::*[1]" mode="rtl"/>' +
|
211 |
+
' </xsl:for-each>' +
|
212 |
+
' <m:mprescripts/>' +
|
213 |
+
' <xsl:for-each select="m:mprescripts/preceding-sibling::*[position()!=last()][position() mod 2 = 0]">' +
|
214 |
+
' <xsl:sort data-type="number" order="descending" select="position()"/>' +
|
215 |
+
' <xsl:apply-templates select="." mode="rtl"/>' +
|
216 |
+
' <xsl:apply-templates select="following-sibling::*[1]" mode="rtl"/>' +
|
217 |
+
' </xsl:for-each>' +
|
218 |
+
' </m:mmultiscripts>' +
|
219 |
+
'</xsl:template>' +
|
220 |
+
'<xsl:template match="m:mmultiscripts[not(m:mprescripts)]" mode="rtl" priority="3">' +
|
221 |
+
' <m:mmultiscripts>' +
|
222 |
+
' <xsl:apply-templates select="*[1]" mode="rtl"/>' +
|
223 |
+
' <m:mprescripts/>' +
|
224 |
+
' <xsl:for-each select="*[position() mod 2 = 0]">' +
|
225 |
+
' <xsl:sort data-type="number" order="descending" select="position()"/>' +
|
226 |
+
' <xsl:apply-templates select="." mode="rtl"/>' +
|
227 |
+
' <xsl:apply-templates select="following-sibling::*[1]" mode="rtl"/>' +
|
228 |
+
' </xsl:for-each>' +
|
229 |
+
' </m:mmultiscripts>' +
|
230 |
+
'</xsl:template>' +
|
231 |
+
'<xsl:template match="text()[.=\'(\']" mode="rtl">)</xsl:template>' +
|
232 |
+
'<xsl:template match="text()[.=\')\']" mode="rtl">(</xsl:template>' +
|
233 |
+
'<xsl:template match="text()[.=\'{\']" mode="rtl">}</xsl:template>' +
|
234 |
+
'<xsl:template match="text()[.=\'}\']" mode="rtl">{</xsl:template>' +
|
235 |
+
'<xsl:template match="text()[.=\'<\']" mode="rtl">></xsl:template>' +
|
236 |
+
'<xsl:template match="text()[.=\'>\']" mode="rtl"><</xsl:template>' +
|
237 |
+
'<xsl:template match="text()[.=\'∈\']" mode="rtl">∋</xsl:template>' +
|
238 |
+
'<xsl:template match="text()[.=\'∋\']" mode="rtl">∈</xsl:template>' +
|
239 |
+
'<xsl:template match="@notation[.=\'radical\']" mode="rtl">' +
|
240 |
+
' <xsl:attribute name="notation">top right</xsl:attribute>' +
|
241 |
+
'</xsl:template>' +
|
242 |
+
'<xsl:template match="m:mlongdiv|m:mstack" mode="rtl">' +
|
243 |
+
' <m:mrow dir="ltr">' +
|
244 |
+
' <xsl:apply-templates select="."/>' +
|
245 |
+
' </m:mrow>' +
|
246 |
+
'</xsl:template>' +
|
247 |
+
'<xsl:template match="m:mstack" priority="11">' +
|
248 |
+
' <xsl:variable name="m">' +
|
249 |
+
' <m:mtable columnspacing="0em">' +
|
250 |
+
' <xsl:copy-of select="@align"/>' +
|
251 |
+
' <xsl:variable name="t">' +
|
252 |
+
' <xsl:apply-templates select="*" mode="mstack1">' +
|
253 |
+
' <xsl:with-param name="p" select="0"/>' +
|
254 |
+
' </xsl:apply-templates>' +
|
255 |
+
' </xsl:variable>' +
|
256 |
+
' <xsl:variable name="maxl">' +
|
257 |
+
' <xsl:for-each select="c:node-set($t)/*/@l">' +
|
258 |
+
' <xsl:sort data-type="number" order="descending"/>' +
|
259 |
+
' <xsl:if test="position()=1">' +
|
260 |
+
' <xsl:value-of select="."/>' +
|
261 |
+
' </xsl:if>' +
|
262 |
+
' </xsl:for-each>' +
|
263 |
+
' </xsl:variable>' +
|
264 |
+
' <xsl:for-each select="c:node-set($t)/*[not(@class=\'mscarries\') or following-sibling::*[1]/@class=\'mscarries\']">' +
|
265 |
+
'<xsl:variable name="c" select="preceding-sibling::*[1][@class=\'mscarries\']"/>' +
|
266 |
+
' <xsl:text> </xsl:text>' +
|
267 |
+
' <m:mtr>' +
|
268 |
+
' <xsl:copy-of select="@class[.=\'msline\']"/>' +
|
269 |
+
' <xsl:variable name="offset" select="$maxl - @l"/>' +
|
270 |
+
' <xsl:choose>' +
|
271 |
+
' <xsl:when test="@class=\'msline\' and @l=\'*\'">' +
|
272 |
+
' <xsl:variable name="msl" select="*[1]"/>' +
|
273 |
+
' <xsl:for-each select="(//node())[position()<=$maxl]">' +
|
274 |
+
' <xsl:copy-of select="$msl"/>' +
|
275 |
+
' </xsl:for-each>' +
|
276 |
+
' </xsl:when>' +
|
277 |
+
' <xsl:when test="$c">' +
|
278 |
+
' <xsl:variable name="ldiff" select="$c/@l - @l"/>' +
|
279 |
+
' <xsl:variable name="loffset" select="$maxl - $c/@l"/>' +
|
280 |
+
' <xsl:for-each select="(//*)[position()<= $offset]">' +
|
281 |
+
' <xsl:variable name="pn" select="position()"/>' +
|
282 |
+
' <xsl:variable name="cy" select="$c/*[position()=$pn - $loffset]"/>' +
|
283 |
+
' <m:mtd>' +
|
284 |
+
' <xsl:if test="$cy/*">' +
|
285 |
+
' <m:mover><m:mphantom><m:mn>0</m:mn></m:mphantom><m:mpadded width="0em" lspace="-0.5width">' +
|
286 |
+
' <xsl:copy-of select="$cy/*"/></m:mpadded></m:mover>' +
|
287 |
+
' </xsl:if>' +
|
288 |
+
' </m:mtd>' +
|
289 |
+
' </xsl:for-each>' +
|
290 |
+
' <xsl:for-each select="*">' +
|
291 |
+
' <xsl:variable name="pn" select="position()"/>' +
|
292 |
+
' <xsl:variable name="cy" select="$c/*[position()=$pn + $ldiff]"/>' +
|
293 |
+
' <xsl:copy>' +
|
294 |
+
' <xsl:copy-of select="@*"/>' +
|
295 |
+
' <xsl:variable name="b">' +
|
296 |
+
' <xsl:choose>' +
|
297 |
+
' <xsl:when test="not(string($cy/@crossout) or $cy/@crossout=\'none\')"><xsl:copy-of select="*"/></xsl:when>' +
|
298 |
+
' <xsl:otherwise>' +
|
299 |
+
' <m:menclose notation="{$cy/@crossout}"><xsl:copy-of select="*"/></m:menclose>' +
|
300 |
+
' </xsl:otherwise>' +
|
301 |
+
' </xsl:choose>' +
|
302 |
+
' </xsl:variable>' +
|
303 |
+
' <xsl:choose>' +
|
304 |
+
' <xsl:when test="$cy/m:none or not($cy/*)"><xsl:copy-of select="$b"/></xsl:when>' +
|
305 |
+
' <xsl:when test="not(string($cy/@location)) or $cy/@location=\'n\'">' +
|
306 |
+
' <m:mover>' +
|
307 |
+
' <xsl:copy-of select="$b"/><m:mpadded width="0em" lspace="-0.5width">' +
|
308 |
+
' <xsl:copy-of select="$cy/*"/>' +
|
309 |
+
' </m:mpadded>' +
|
310 |
+
' </m:mover>' +
|
311 |
+
' </xsl:when>' +
|
312 |
+
' <xsl:when test="$cy/@location=\'nw\'">' +
|
313 |
+
' <m:mmultiscripts><xsl:copy-of select="$b"/><m:mprescripts/><m:none/><m:mpadded lspace="-1width" width="0em"><xsl:copy-of select="$cy/*"/></m:mpadded></m:mmultiscripts>' +
|
314 |
+
' </xsl:when>' +
|
315 |
+
' <xsl:when test="$cy/@location=\'s\'">' +
|
316 |
+
' <m:munder><xsl:copy-of select="$b"/><m:mpadded width="0em" lspace="-0.5width"><xsl:copy-of select="$cy/*"/></m:mpadded></m:munder>' +
|
317 |
+
' </xsl:when>' +
|
318 |
+
' <xsl:when test="$cy/@location=\'sw\'">' +
|
319 |
+
' <m:mmultiscripts><xsl:copy-of select="$b"/><m:mprescripts/><m:mpadded lspace="-1width" width="0em"><xsl:copy-of select="$cy/*"/></m:mpadded><m:none/></m:mmultiscripts>' +
|
320 |
+
' </xsl:when>' +
|
321 |
+
' <xsl:when test="$cy/@location=\'ne\'">' +
|
322 |
+
' <m:msup><xsl:copy-of select="$b"/><m:mpadded width="0em"><xsl:copy-of select="$cy/*"/></m:mpadded></m:msup>' +
|
323 |
+
' </xsl:when>' +
|
324 |
+
' <xsl:when test="$cy/@location=\'se\'">' +
|
325 |
+
' <m:msub><xsl:copy-of select="$b"/><m:mpadded width="0em"><xsl:copy-of select="$cy/*"/></m:mpadded></m:msub>' +
|
326 |
+
' </xsl:when>' +
|
327 |
+
' <xsl:when test="$cy/@location=\'w\'">' +
|
328 |
+
' <m:msup><m:mrow/><m:mpadded lspace="-1width" width="0em"><xsl:copy-of select="$cy/*"/></m:mpadded></m:msup>' +
|
329 |
+
' <xsl:copy-of select="$b"/>' +
|
330 |
+
' </xsl:when>' +
|
331 |
+
' <xsl:when test="$cy/@location=\'e\'">' +
|
332 |
+
' <xsl:copy-of select="$b"/>' +
|
333 |
+
' <m:msup><m:mrow/><m:mpadded width="0em"><xsl:copy-of select="$cy/*"/></m:mpadded></m:msup>' +
|
334 |
+
' </xsl:when>' +
|
335 |
+
' <xsl:otherwise>' +
|
336 |
+
' <xsl:copy-of select="$b"/>' +
|
337 |
+
' </xsl:otherwise>' +
|
338 |
+
' </xsl:choose>' +
|
339 |
+
' </xsl:copy>' +
|
340 |
+
' </xsl:for-each>' +
|
341 |
+
' </xsl:when>' +
|
342 |
+
' <xsl:otherwise>' +
|
343 |
+
' <xsl:for-each select="(//*)[position()<= $offset]"><m:mtd/></xsl:for-each>' +
|
344 |
+
' <xsl:copy-of select="*"/>' +
|
345 |
+
' </xsl:otherwise>' +
|
346 |
+
' </xsl:choose>' +
|
347 |
+
' </m:mtr>' +
|
348 |
+
' </xsl:for-each>' +
|
349 |
+
' </m:mtable>' +
|
350 |
+
'</xsl:variable>' +
|
351 |
+
'<xsl:apply-templates mode="ml" select="c:node-set($m)"/>' +
|
352 |
+
'</xsl:template>' +
|
353 |
+
'<xsl:template match="*" mode="ml">' +
|
354 |
+
' <xsl:copy>' +
|
355 |
+
' <xsl:copy-of select="@*"/>' +
|
356 |
+
' <xsl:apply-templates mode="ml"/>' +
|
357 |
+
' </xsl:copy>' +
|
358 |
+
'</xsl:template>' +
|
359 |
+
'<xsl:template mode="ml" match="m:mtr[following-sibling::*[1][@class=\'msline\']]">' +
|
360 |
+
' <m:mtr>' +
|
361 |
+
' <xsl:copy-of select="@*"/>' +
|
362 |
+
' <xsl:variable name="m" select="following-sibling::*[1]/m:mtd"/>' +
|
363 |
+
' <xsl:for-each select="m:mtd">' +
|
364 |
+
' <xsl:variable name="p" select="position()"/>' +
|
365 |
+
' <m:mtd>' +
|
366 |
+
' <xsl:copy-of select="@*"/>' +
|
367 |
+
' <xsl:choose>' +
|
368 |
+
' <xsl:when test="$m[$p]/m:mpadded">' +
|
369 |
+
' <m:menclose notation="bottom">' +
|
370 |
+
' <m:mpadded depth=".1em" height="1em" width=".4em">' +
|
371 |
+
' <xsl:copy-of select="*"/>' +
|
372 |
+
' </m:mpadded>' +
|
373 |
+
' </m:menclose>' +
|
374 |
+
' </xsl:when>' +
|
375 |
+
' <xsl:otherwise>' +
|
376 |
+
' <xsl:copy-of select="*"/>' +
|
377 |
+
' </xsl:otherwise>' +
|
378 |
+
' </xsl:choose>' +
|
379 |
+
' </m:mtd>' +
|
380 |
+
' </xsl:for-each>' +
|
381 |
+
' </m:mtr>' +
|
382 |
+
'</xsl:template><xsl:template mode="ml" match="m:mtr[not(preceding-sibling::*)][@class=\'msline\']" priority="3">' +
|
383 |
+
' <m:mtr>' +
|
384 |
+
' <xsl:copy-of select="@*"/>' +
|
385 |
+
' <xsl:for-each select="m:mtd">' +
|
386 |
+
' <m:mtd>' +
|
387 |
+
' <xsl:copy-of select="@*"/>' +
|
388 |
+
' <xsl:if test="m:mpadded">' +
|
389 |
+
' <m:menclose notation="bottom">' +
|
390 |
+
' <m:mpadded depth=".1em" height="1em" width=".4em">' +
|
391 |
+
' <m:mspace width=".2em"/>' +
|
392 |
+
' </m:mpadded>' +
|
393 |
+
' </m:menclose>' +
|
394 |
+
' </xsl:if>' +
|
395 |
+
' </m:mtd>' +
|
396 |
+
' </xsl:for-each>' +
|
397 |
+
' </m:mtr>' +
|
398 |
+
'</xsl:template><xsl:template mode="ml" match="m:mtr[@class=\'msline\']" priority="2"/>' +
|
399 |
+
'<xsl:template mode="mstack1" match="*">' +
|
400 |
+
' <xsl:param name="p"/>' +
|
401 |
+
' <xsl:param name="maxl" select="0"/>' +
|
402 |
+
' <m:mtr l="{1 + $p}">' +
|
403 |
+
' <xsl:if test="ancestor::mstack[1]/@stackalign=\'left\'">' +
|
404 |
+
' <xsl:attribute name="l"><xsl:value-of select="$p"/></xsl:attribute>' +
|
405 |
+
' </xsl:if>' +
|
406 |
+
' <m:mtd><xsl:apply-templates select="."/></m:mtd>' +
|
407 |
+
' </m:mtr>' +
|
408 |
+
'</xsl:template>' +
|
409 |
+
'<xsl:template mode="mstack1" match="m:msrow">' +
|
410 |
+
' <xsl:param name="p"/>' +
|
411 |
+
' <xsl:param name="maxl" select="0"/>' +
|
412 |
+
' <xsl:variable name="align1" select="ancestor::m:mstack[1]/@stackalign"/>' +
|
413 |
+
' <xsl:variable name="align">' +
|
414 |
+
' <xsl:choose>' +
|
415 |
+
' <xsl:when test="string($align1)=\'\'">decimalpoint</xsl:when>' +
|
416 |
+
' <xsl:otherwise><xsl:value-of select="$align1"/></xsl:otherwise>' +
|
417 |
+
' </xsl:choose>' +
|
418 |
+
' </xsl:variable>' +
|
419 |
+
' <xsl:variable name="row">' +
|
420 |
+
' <xsl:apply-templates mode="mstack1" select="*">' +
|
421 |
+
' <xsl:with-param name="p" select="0"/>' +
|
422 |
+
' </xsl:apply-templates>' +
|
423 |
+
' </xsl:variable>' +
|
424 |
+
' <xsl:text> </xsl:text>' +
|
425 |
+
' <xsl:variable name="l1">' +
|
426 |
+
' <xsl:choose>' +
|
427 |
+
' <xsl:when test="$align=\'decimalpoint\' and m:mn">' +
|
428 |
+
' <xsl:for-each select="c:node-set($row)/m:mtr[m:mtd/m:mn][1]">' +
|
429 |
+
' <xsl:value-of select="number(sum(@l))+count(preceding-sibling::*/@l)"/>' +
|
430 |
+
' </xsl:for-each>' +
|
431 |
+
' </xsl:when>' +
|
432 |
+
' <xsl:when test="$align=\'right\' or $align=\'decimalpoint\'">' +
|
433 |
+
' <xsl:value-of select="count(c:node-set($row)/m:mtr/m:mtd)"/>' +
|
434 |
+
' </xsl:when>' +
|
435 |
+
' <xsl:otherwise>' +
|
436 |
+
' <xsl:value-of select="0"/>' +
|
437 |
+
' </xsl:otherwise>' +
|
438 |
+
' </xsl:choose>' +
|
439 |
+
' </xsl:variable>' +
|
440 |
+
' <m:mtr class="msrow" l="{number($l1) + number(sum(@position)) +$p}">' +
|
441 |
+
' <xsl:copy-of select="c:node-set($row)/m:mtr/*"/>' +
|
442 |
+
' </m:mtr>' +
|
443 |
+
'</xsl:template><xsl:template mode="mstack1" match="m:mn">' +
|
444 |
+
' <xsl:param name="p"/>' +
|
445 |
+
' <xsl:variable name="align1" select="ancestor::m:mstack[1]/@stackalign"/>' +
|
446 |
+
' <xsl:variable name="dp1" select="ancestor::*[@decimalpoint][1]/@decimalpoint"/>' +
|
447 |
+
' <xsl:variable name="align">' +
|
448 |
+
' <xsl:choose>' +
|
449 |
+
' <xsl:when test="string($align1)=\'\'">decimalpoint</xsl:when>' +
|
450 |
+
' <xsl:otherwise><xsl:value-of select="$align1"/></xsl:otherwise>' +
|
451 |
+
' </xsl:choose>' +
|
452 |
+
' </xsl:variable>' +
|
453 |
+
' <xsl:variable name="dp">' +
|
454 |
+
' <xsl:choose>' +
|
455 |
+
' <xsl:when test="string($dp1)=\'\'">.</xsl:when>' +
|
456 |
+
' <xsl:otherwise><xsl:value-of select="$dp1"/></xsl:otherwise>' +
|
457 |
+
' </xsl:choose>' +
|
458 |
+
' </xsl:variable>' +
|
459 |
+
' <m:mtr l="$p">' +
|
460 |
+
' <xsl:variable name="mn" select="normalize-space(.)"/>' +
|
461 |
+
' <xsl:variable name="len" select="string-length($mn)"/>' +
|
462 |
+
' <xsl:choose>' +
|
463 |
+
' <xsl:when test="$align=\'right\' or ($align=\'decimalpoint\' and not(contains($mn,$dp)))">' +
|
464 |
+
' <xsl:attribute name="l"><xsl:value-of select="$p + $len"/></xsl:attribute>' +
|
465 |
+
' </xsl:when>' +
|
466 |
+
' <xsl:when test="$align=\'center\'">' +
|
467 |
+
' <xsl:attribute name="l"><xsl:value-of select="round(($p + $len) div 2)"/></xsl:attribute>' +
|
468 |
+
' </xsl:when>' +
|
469 |
+
' <xsl:when test="$align=\'decimalpoint\'">' +
|
470 |
+
' <xsl:attribute name="l"><xsl:value-of select="$p + string-length(substring-before($mn,$dp))"/></xsl:attribute>' +
|
471 |
+
' </xsl:when>' +
|
472 |
+
' </xsl:choose> <xsl:for-each select="(//node())[position() <=$len]">' +
|
473 |
+
' <xsl:variable name="pos" select="position()"/>' +
|
474 |
+
' <m:mtd><m:mn><xsl:value-of select="substring($mn,$pos,1)"/></m:mn></m:mtd>' +
|
475 |
+
' </xsl:for-each>' +
|
476 |
+
' </m:mtr>' +
|
477 |
+
'</xsl:template>' +
|
478 |
+
'<xsl:template match="m:msgroup" mode="mstack1">' +
|
479 |
+
' <xsl:param name="p"/>' +
|
480 |
+
' <xsl:variable name="s" select="number(sum(@shift))"/>' +
|
481 |
+
' <xsl:variable name="thisp" select="number(sum(@position))"/>' +
|
482 |
+
' <xsl:for-each select="*">' +
|
483 |
+
' <xsl:apply-templates mode="mstack1" select=".">' +
|
484 |
+
' <xsl:with-param name="p" select="number($p)+$thisp+(position()-1)*$s"/>' +
|
485 |
+
' </xsl:apply-templates>' +
|
486 |
+
' </xsl:for-each>' +
|
487 |
+
'</xsl:template>' +
|
488 |
+
'<xsl:template match="m:msline" mode="mstack1">' +
|
489 |
+
' <xsl:param name="p"/>' +
|
490 |
+
' <xsl:variable name="align1" select="ancestor::m:mstack[1]/@stackalign"/>' +
|
491 |
+
' <xsl:variable name="align">' +
|
492 |
+
' <xsl:choose>' +
|
493 |
+
' <xsl:when test="string($align1)=\'\'">decimalpoint</xsl:when>' +
|
494 |
+
' <xsl:otherwise><xsl:value-of select="$align1"/></xsl:otherwise>' +
|
495 |
+
' </xsl:choose>' +
|
496 |
+
' </xsl:variable>' +
|
497 |
+
' <m:mtr class="msline">' +
|
498 |
+
' <xsl:attribute name="l">' +
|
499 |
+
' <xsl:choose>' +
|
500 |
+
' <xsl:when test="not(string(@length)) or @length=0">*</xsl:when>' +
|
501 |
+
' <xsl:when test="string($align)=\'right\' or string($align)=\'decimalpoint\' "><xsl:value-of select="$p+ @length"/></xsl:when>' +
|
502 |
+
' <xsl:otherwise><xsl:value-of select="$p"/></xsl:otherwise>' +
|
503 |
+
' </xsl:choose>' +
|
504 |
+
' </xsl:attribute>' +
|
505 |
+
' <xsl:variable name="w">' +
|
506 |
+
' <xsl:choose>' +
|
507 |
+
' <xsl:when test="@mslinethickness=\'thin\'">0.1em</xsl:when>' +
|
508 |
+
' <xsl:when test="@mslinethickness=\'medium\'">0.15em</xsl:when>' +
|
509 |
+
' <xsl:when test="@mslinethickness=\'thick\'">0.2em</xsl:when>' +
|
510 |
+
' <xsl:when test="@mslinethickness"><xsl:value-of select="@mslinethickness"/></xsl:when>' +
|
511 |
+
' <xsl:otherwise>0.15em</xsl:otherwise>' +
|
512 |
+
' </xsl:choose>' +
|
513 |
+
' </xsl:variable>' +
|
514 |
+
' <xsl:choose>' +
|
515 |
+
' <xsl:when test="not(string(@length)) or @length=0">' +
|
516 |
+
' <m:mtd class="mslinemax">' +
|
517 |
+
' <m:mpadded lspace="-0.2em" width="0em" height="0em">' +
|
518 |
+
' <m:mfrac linethickness="{$w}">' +
|
519 |
+
' <m:mspace width=".4em"/>' +
|
520 |
+
' <m:mrow/>' +
|
521 |
+
' </m:mfrac>' +
|
522 |
+
' </m:mpadded>' +
|
523 |
+
' </m:mtd>' +
|
524 |
+
' </xsl:when>' +
|
525 |
+
' <xsl:otherwise>' +
|
526 |
+
' <xsl:variable name="l" select="@length"/>' +
|
527 |
+
' <xsl:for-each select="(//node())[position()<=$l]">' +
|
528 |
+
' <m:mtd class="msline">' +
|
529 |
+
' <m:mpadded lspace="-0.2em" width="0em" height="0em">' +
|
530 |
+
' <m:mfrac linethickness="{$w}">' +
|
531 |
+
' <m:mspace width=".4em"/>' +
|
532 |
+
' <m:mrow/>' +
|
533 |
+
' </m:mfrac>' +
|
534 |
+
' </m:mpadded>' +
|
535 |
+
' </m:mtd>' +
|
536 |
+
' </xsl:for-each>' +
|
537 |
+
' </xsl:otherwise>' +
|
538 |
+
' </xsl:choose>' +
|
539 |
+
' </m:mtr>' +
|
540 |
+
'</xsl:template>' +
|
541 |
+
'<xsl:template match="m:mscarries" mode="mstack1">' +
|
542 |
+
' <xsl:param name="p"/>' +
|
543 |
+
' <xsl:variable name="align1" select="ancestor::m:mstack[1]/@stackalign"/>' +
|
544 |
+
' <xsl:variable name="l1">' +
|
545 |
+
' <xsl:choose>' +
|
546 |
+
' <xsl:when test="string($align1)=\'left\'">0</xsl:when>' +
|
547 |
+
' <xsl:otherwise><xsl:value-of select="count(*)"/></xsl:otherwise>' +
|
548 |
+
' </xsl:choose>' +
|
549 |
+
' </xsl:variable>' +
|
550 |
+
' <m:mtr class="mscarries" l="{$p + $l1 + sum(@position)}">' +
|
551 |
+
' <xsl:apply-templates select="*" mode="msc"/>' +
|
552 |
+
' </m:mtr>' +
|
553 |
+
'</xsl:template><xsl:template match="*" mode="msc">' +
|
554 |
+
' <m:mtd>' +
|
555 |
+
' <xsl:copy-of select="../@location|../@crossout"/>' +
|
556 |
+
' <xsl:choose>' +
|
557 |
+
' <xsl:when test="../@scriptsizemultiplier">' +
|
558 |
+
' <m:mstyle mathsize="{round(../@scriptsizemultiplier div .007)}%">' +
|
559 |
+
' <xsl:apply-templates select="."/>' +
|
560 |
+
' </m:mstyle>' +
|
561 |
+
' </xsl:when>' +
|
562 |
+
' <xsl:otherwise>' +
|
563 |
+
' <xsl:apply-templates select="."/>' +
|
564 |
+
' </xsl:otherwise>' +
|
565 |
+
' </xsl:choose>' +
|
566 |
+
' </m:mtd>' +
|
567 |
+
'</xsl:template><xsl:template match="m:mscarry" mode="msc">' +
|
568 |
+
' <m:mtd>' +
|
569 |
+
' <xsl:copy-of select="@location|@crossout"/>' +
|
570 |
+
' <xsl:choose>' +
|
571 |
+
' <xsl:when test="../@scriptsizemultiplier">' +
|
572 |
+
' <m:mstyle mathsize="{round(../@scriptsizemultiplier div .007)}%">' +
|
573 |
+
' <xsl:apply-templates/>' +
|
574 |
+
' </m:mstyle>' +
|
575 |
+
' </xsl:when>' +
|
576 |
+
' <xsl:otherwise>' +
|
577 |
+
' <xsl:apply-templates/>' +
|
578 |
+
' </xsl:otherwise>' +
|
579 |
+
' </xsl:choose>' +
|
580 |
+
' </m:mtd>' +
|
581 |
+
'</xsl:template>' +
|
582 |
+
'<xsl:template match="m:mlongdiv" priority="11">' +
|
583 |
+
' <xsl:variable name="ms">' +
|
584 |
+
' <m:mstack>' +
|
585 |
+
' <xsl:copy-of select="(ancestor-or-self::*/@decimalpoint)[last()]"/>' +
|
586 |
+
' <xsl:choose>' +
|
587 |
+
' <xsl:when test="@longdivstyle=\'left)(right\'">' +
|
588 |
+
' <m:msrow>' +
|
589 |
+
' <m:mrow><xsl:copy-of select="*[1]"/></m:mrow>' +
|
590 |
+
' <m:mo>)</m:mo>' +
|
591 |
+
' <xsl:copy-of select="*[3]"/>' +
|
592 |
+
' <m:mo>(</m:mo>' +
|
593 |
+
' <xsl:copy-of select="*[2]"/>' +
|
594 |
+
' </m:msrow>' +
|
595 |
+
' </xsl:when>' +
|
596 |
+
' <xsl:when test="@longdivstyle=\'left/\right\'">' +
|
597 |
+
' <m:msrow>' +
|
598 |
+
' <m:mrow><xsl:copy-of select="*[1]"/></m:mrow>' +
|
599 |
+
' <m:mo>/</m:mo>' +
|
600 |
+
' <xsl:copy-of select="*[3]"/>' +
|
601 |
+
' <m:mo>\</m:mo>' +
|
602 |
+
' <xsl:copy-of select="*[2]"/>' +
|
603 |
+
' </m:msrow>' +
|
604 |
+
' </xsl:when>' +
|
605 |
+
' <xsl:when test="@longdivstyle=\':right=right\'">' +
|
606 |
+
' <m:msrow>' +
|
607 |
+
' <xsl:copy-of select="*[3]"/>' +
|
608 |
+
' <m:mo>:</m:mo>' +
|
609 |
+
' <xsl:copy-of select="*[1]"/>' +
|
610 |
+
' <m:mo>=</m:mo>' +
|
611 |
+
' <xsl:copy-of select="*[2]"/>' +
|
612 |
+
' </m:msrow>' +
|
613 |
+
' </xsl:when>' +
|
614 |
+
' <xsl:when test="@longdivstyle=\'stackedrightright\'' +
|
615 |
+
' or @longdivstyle=\'mediumstackedrightright\'' +
|
616 |
+
' or @longdivstyle=\'shortstackedrightright\'' +
|
617 |
+
' or @longdivstyle=\'stackedleftleft\'' +
|
618 |
+
' ">' +
|
619 |
+
' <xsl:attribute name="align">top</xsl:attribute>' +
|
620 |
+
' <xsl:copy-of select="*[3]"/>' +
|
621 |
+
' </xsl:when>' +
|
622 |
+
' <xsl:when test="@longdivstyle=\'stackedleftlinetop\'">' +
|
623 |
+
' <xsl:copy-of select="*[2]"/>' +
|
624 |
+
' <m:msline length="{string-length(*[3])-1}"/>' +
|
625 |
+
' <m:msrow>' +
|
626 |
+
' <m:mrow>' +
|
627 |
+
' <m:menclose notation="bottom right">' +
|
628 |
+
' <xsl:copy-of select="*[1]"/>' +
|
629 |
+
' </m:menclose>' +
|
630 |
+
' </m:mrow>' +
|
631 |
+
' <xsl:copy-of select="*[3]"/>' +
|
632 |
+
' </m:msrow>' +
|
633 |
+
' </xsl:when>' +
|
634 |
+
' <xsl:when test="@longdivstyle=\'righttop\'">' +
|
635 |
+
' <xsl:copy-of select="*[2]"/>' +
|
636 |
+
' <m:msline length="{string-length(*[3])}"/>' +
|
637 |
+
' <m:msrow>' +
|
638 |
+
' <xsl:copy-of select="*[3]"/>' +
|
639 |
+
' <m:menclose notation="top left bottom">' +
|
640 |
+
' <xsl:copy-of select="*[1]"/></m:menclose>' +
|
641 |
+
' </m:msrow>' +
|
642 |
+
' </xsl:when>' +
|
643 |
+
' <xsl:otherwise>' +
|
644 |
+
' <xsl:copy-of select="*[2]"/>' +
|
645 |
+
' <m:msline length="{string-length(*[3])}"/>' +
|
646 |
+
' <m:msrow>' +
|
647 |
+
' <m:mrow><xsl:copy-of select="*[1]"/></m:mrow>' +
|
648 |
+
' <m:mo>)</m:mo>' +
|
649 |
+
' <xsl:copy-of select="*[3]"/>' +
|
650 |
+
' </m:msrow>' +
|
651 |
+
' </xsl:otherwise>' +
|
652 |
+
' </xsl:choose>' +
|
653 |
+
' <xsl:copy-of select="*[position()>3]"/>' +
|
654 |
+
' </m:mstack>' +
|
655 |
+
' </xsl:variable>' +
|
656 |
+
' <xsl:choose>' +
|
657 |
+
' <xsl:when test="@longdivstyle=\'stackedrightright\'">' +
|
658 |
+
' <m:menclose notation="right">' +
|
659 |
+
' <xsl:apply-templates select="c:node-set($ms)"/>' +
|
660 |
+
' </m:menclose>' +
|
661 |
+
' <m:mtable align="top">' +
|
662 |
+
' <m:mtr>' +
|
663 |
+
' <m:menclose notation="bottom">' +
|
664 |
+
' <xsl:copy-of select="*[1]"/>' +
|
665 |
+
' </m:menclose>' +
|
666 |
+
' </m:mtr>' +
|
667 |
+
' <m:mtr>' +
|
668 |
+
' <mtd><xsl:copy-of select="*[2]"/></mtd>' +
|
669 |
+
' </m:mtr>' +
|
670 |
+
' </m:mtable>' +
|
671 |
+
' </xsl:when>' +
|
672 |
+
' <xsl:when test="@longdivstyle=\'mediumstackedrightright\'">' +
|
673 |
+
' <xsl:apply-templates select="c:node-set($ms)"/>' +
|
674 |
+
' <m:menclose notation="left">' +
|
675 |
+
' <m:mtable align="top">' +
|
676 |
+
' <m:mtr>' +
|
677 |
+
' <m:menclose notation="bottom">' +
|
678 |
+
' <xsl:copy-of select="*[1]"/>' +
|
679 |
+
' </m:menclose>' +
|
680 |
+
' </m:mtr>' +
|
681 |
+
' <m:mtr>' +
|
682 |
+
' <mtd><xsl:copy-of select="*[2]"/></mtd>' +
|
683 |
+
' </m:mtr>' +
|
684 |
+
' </m:mtable>' +
|
685 |
+
' </m:menclose>' +
|
686 |
+
' </xsl:when>' +
|
687 |
+
' <xsl:when test="@longdivstyle=\'shortstackedrightright\'">' +
|
688 |
+
' <xsl:apply-templates select="c:node-set($ms)"/>' +
|
689 |
+
' <m:mtable align="top">' +
|
690 |
+
' <m:mtr>' +
|
691 |
+
' <m:menclose notation="left bottom">' +
|
692 |
+
' <xsl:copy-of select="*[1]"/>' +
|
693 |
+
' </m:menclose>' +
|
694 |
+
' </m:mtr>' +
|
695 |
+
' <m:mtr>' +
|
696 |
+
' <mtd><xsl:copy-of select="*[2]"/></mtd>' +
|
697 |
+
' </m:mtr>' +
|
698 |
+
' </m:mtable>' +
|
699 |
+
' </xsl:when>' +
|
700 |
+
' <xsl:when test="@longdivstyle=\'stackedleftleft\'">' +
|
701 |
+
' <m:mtable align="top">' +
|
702 |
+
' <m:mtr>' +
|
703 |
+
' <m:menclose notation="bottom">' +
|
704 |
+
' <xsl:copy-of select="*[1]"/>' +
|
705 |
+
' </m:menclose>' +
|
706 |
+
' </m:mtr>' +
|
707 |
+
' <m:mtr>' +
|
708 |
+
' <mtd><xsl:copy-of select="*[2]"/></mtd>' +
|
709 |
+
' </m:mtr>' +
|
710 |
+
' </m:mtable>' +
|
711 |
+
' <m:menclose notation="left">' +
|
712 |
+
' <xsl:apply-templates select="c:node-set($ms)"/>' +
|
713 |
+
' </m:menclose>' +
|
714 |
+
' </xsl:when>' +
|
715 |
+
' <xsl:otherwise>' +
|
716 |
+
' <xsl:apply-templates select="c:node-set($ms)"/>' +
|
717 |
+
' </xsl:otherwise>' +
|
718 |
+
' </xsl:choose>' +
|
719 |
+
'</xsl:template>' +
|
720 |
+
'<xsl:template match="m:menclose[@notation=\'madruwb\']" mode="rtl">' +
|
721 |
+
' <m:menclose notation="bottom right">' +
|
722 |
+
' <xsl:apply-templates mode="rtl"/>' +
|
723 |
+
' </m:menclose>' +
|
724 |
+
'</xsl:template></xsl:stylesheet>';
|
725 |
+
|
726 |
+
/*
|
727 |
+
* End of mml3mj.xsl material.
|
728 |
+
*/
|
729 |
+
|
730 |
+
var mml3;
|
731 |
+
if (window.XSLTProcessor) {
|
732 |
+
// standard method: just use an XSLTProcessor and parse the stylesheet
|
733 |
+
if (!MATHML.ParseXML) {MATHML.ParseXML = MATHML.createParser()}
|
734 |
+
MATHML.mml3XSLT = new XSLTProcessor();
|
735 |
+
MATHML.mml3XSLT.importStylesheet(MATHML.ParseXML(mml3Stylesheet));
|
736 |
+
} else if (MathJax.Hub.Browser.isMSIE) {
|
737 |
+
// nonstandard methods for Internet Explorer
|
738 |
+
if (MathJax.Hub.Browser.versionAtLeast("9.0") || (document.documentMode||0) >= 9) {
|
739 |
+
// For Internet Explorer >= 9, use createProcessor
|
740 |
+
mml3 = new ActiveXObject("Msxml2.FreeThreadedDOMDocument");
|
741 |
+
mml3.loadXML(mml3Stylesheet);
|
742 |
+
var xslt = new ActiveXObject("Msxml2.XSLTemplate");
|
743 |
+
xslt.stylesheet = mml3;
|
744 |
+
MATHML.mml3XSLT = {
|
745 |
+
mml3: xslt.createProcessor(),
|
746 |
+
transformToDocument: function(doc) {
|
747 |
+
this.mml3.input = doc;
|
748 |
+
this.mml3.transform();
|
749 |
+
return this.mml3.output;
|
750 |
+
}
|
751 |
+
}
|
752 |
+
} else {
|
753 |
+
// For Internet Explorer <= 8, use transformNode
|
754 |
+
mml3 = MATHML.createMSParser();
|
755 |
+
mml3.async = false;
|
756 |
+
mml3.loadXML(mml3Stylesheet);
|
757 |
+
MATHML.mml3XSLT = {
|
758 |
+
mml3: mml3,
|
759 |
+
transformToDocument: function(doc) {
|
760 |
+
return doc.documentElement.transformNode(this.mml3);
|
761 |
+
}
|
762 |
+
}
|
763 |
+
}
|
764 |
+
} else {
|
765 |
+
// No XSLT support. Do not change the <math> content.
|
766 |
+
MATHML.mml3XSLT = null;
|
767 |
+
}
|
768 |
+
|
769 |
+
// Tweak CSS to avoid some browsers rearranging HTML output
|
770 |
+
MathJax.Ajax.Styles({
|
771 |
+
".MathJax .mi, .MathJax .mo, .MathJax .mn, .MathJax .mtext": {
|
772 |
+
direction: "ltr",
|
773 |
+
display: "inline-block"
|
774 |
+
},
|
775 |
+
".MathJax .ms, .MathJax .mspace, .MathJax .mglyph": {
|
776 |
+
direction: "ltr",
|
777 |
+
display: "inline-block"
|
778 |
+
}
|
779 |
+
});
|
780 |
+
|
781 |
+
MathJax.Hub.Startup.signal.Post("MathML mml3.js Ready");
|
782 |
+
});
|
783 |
+
|
784 |
+
MathJax.Ajax.loadComplete("[MathJax]/extensions/MathML/mml3.js");
|
vendor/MathJax/extensions/MathMenu.js
ADDED
@@ -0,0 +1,1664 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax/extensions/MathMenu.js
|
7 |
+
*
|
8 |
+
* Implements a right-mouse (or CTRL-click) menu over mathematics
|
9 |
+
* elements that gives the user the ability to copy the source,
|
10 |
+
* change the math size, and zoom settings.
|
11 |
+
*
|
12 |
+
* ---------------------------------------------------------------------
|
13 |
+
*
|
14 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
15 |
+
*
|
16 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
17 |
+
* you may not use this file except in compliance with the License.
|
18 |
+
* You may obtain a copy of the License at
|
19 |
+
*
|
20 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
21 |
+
*
|
22 |
+
* Unless required by applicable law or agreed to in writing, software
|
23 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
24 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
25 |
+
* See the License for the specific language governing permissions and
|
26 |
+
* limitations under the License.
|
27 |
+
*/
|
28 |
+
|
29 |
+
(function (HUB,HTML,AJAX,CALLBACK,OUTPUT) {
|
30 |
+
var VERSION = "2.7.5";
|
31 |
+
|
32 |
+
var SIGNAL = MathJax.Callback.Signal("menu"); // signal for menu events
|
33 |
+
|
34 |
+
MathJax.Extension.MathMenu = {
|
35 |
+
version: VERSION,
|
36 |
+
signal: SIGNAL
|
37 |
+
};
|
38 |
+
|
39 |
+
var _ = function (id) {
|
40 |
+
return MathJax.Localization._.apply(
|
41 |
+
MathJax.Localization,
|
42 |
+
[["MathMenu",id]].concat([].slice.call(arguments,1))
|
43 |
+
);
|
44 |
+
};
|
45 |
+
|
46 |
+
var isArray = MathJax.Object.isArray;
|
47 |
+
|
48 |
+
var isPC = HUB.Browser.isPC, isMSIE = HUB.Browser.isMSIE, isIE9 = ((document.documentMode||0) > 8);
|
49 |
+
var ROUND = (isPC ? null : "5px");
|
50 |
+
|
51 |
+
var CONFIG = HUB.CombineConfig("MathMenu",{
|
52 |
+
delay: 150, // the delay for submenus
|
53 |
+
|
54 |
+
showRenderer: true, // show the "Math Renderer" menu?
|
55 |
+
showMathPlayer: true, // show the "MathPlayer" menu?
|
56 |
+
showFontMenu: false, // show the "Font Preference" menu?
|
57 |
+
showContext: false, // show the "Context Menu" menu?
|
58 |
+
showDiscoverable: false, // show the "Discoverable" menu?
|
59 |
+
showLocale: true, // show the "Locale" menu?
|
60 |
+
showLocaleURL: false, // show the "Load from URL" menu?
|
61 |
+
|
62 |
+
semanticsAnnotations: {
|
63 |
+
"TeX": ["TeX", "LaTeX", "application/x-tex"],
|
64 |
+
"StarMath": ["StarMath 5.0"],
|
65 |
+
"Maple": ["Maple"],
|
66 |
+
"ContentMathML": ["MathML-Content", "application/mathml-content+xml"],
|
67 |
+
"OpenMath": ["OpenMath"]
|
68 |
+
},
|
69 |
+
|
70 |
+
windowSettings: { // for source window
|
71 |
+
status: "no", toolbar: "no", locationbar: "no", menubar: "no",
|
72 |
+
directories: "no", personalbar: "no", resizable: "yes", scrollbars: "yes",
|
73 |
+
width: 400, height: 300,
|
74 |
+
left: Math.round((screen.width - 400)/2),
|
75 |
+
top: Math.round((screen.height - 300)/3)
|
76 |
+
},
|
77 |
+
|
78 |
+
styles: {
|
79 |
+
"#MathJax_About": {
|
80 |
+
position:"fixed", left:"50%", width:"auto", "text-align":"center",
|
81 |
+
border:"3px outset", padding:"1em 2em", "background-color":"#DDDDDD", color:"black",
|
82 |
+
cursor: "default", "font-family":"message-box", "font-size":"120%",
|
83 |
+
"font-style":"normal", "text-indent":0, "text-transform":"none",
|
84 |
+
"line-height":"normal", "letter-spacing":"normal", "word-spacing":"normal",
|
85 |
+
"word-wrap":"normal", "white-space":"nowrap", "float":"none", "z-index":201,
|
86 |
+
|
87 |
+
"border-radius": "15px", // Opera 10.5 and IE9
|
88 |
+
"-webkit-border-radius": "15px", // Safari and Chrome
|
89 |
+
"-moz-border-radius": "15px", // Firefox
|
90 |
+
"-khtml-border-radius": "15px", // Konqueror
|
91 |
+
|
92 |
+
"box-shadow":"0px 10px 20px #808080", // Opera 10.5 and IE9
|
93 |
+
"-webkit-box-shadow":"0px 10px 20px #808080", // Safari 3 and Chrome
|
94 |
+
"-moz-box-shadow":"0px 10px 20px #808080", // Forefox 3.5
|
95 |
+
"-khtml-box-shadow":"0px 10px 20px #808080", // Konqueror
|
96 |
+
filter: "progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')" // IE
|
97 |
+
},
|
98 |
+
"#MathJax_About.MathJax_MousePost": {
|
99 |
+
outline:"none"
|
100 |
+
},
|
101 |
+
|
102 |
+
".MathJax_Menu": {
|
103 |
+
position:"absolute", "background-color":"white", color:"black",
|
104 |
+
width:"auto", padding:(isPC ? "2px" : "5px 0px"),
|
105 |
+
border:"1px solid #CCCCCC", margin:0, cursor:"default",
|
106 |
+
font: "menu", "text-align":"left", "text-indent":0, "text-transform":"none",
|
107 |
+
"line-height":"normal", "letter-spacing":"normal", "word-spacing":"normal",
|
108 |
+
"word-wrap":"normal", "white-space":"nowrap", "float":"none", "z-index":201,
|
109 |
+
|
110 |
+
"border-radius": ROUND, // Opera 10.5 and IE9
|
111 |
+
"-webkit-border-radius": ROUND, // Safari and Chrome
|
112 |
+
"-moz-border-radius": ROUND, // Firefox
|
113 |
+
"-khtml-border-radius": ROUND, // Konqueror
|
114 |
+
|
115 |
+
"box-shadow":"0px 10px 20px #808080", // Opera 10.5 and IE9
|
116 |
+
"-webkit-box-shadow":"0px 10px 20px #808080", // Safari 3 and Chrome
|
117 |
+
"-moz-box-shadow":"0px 10px 20px #808080", // Forefox 3.5
|
118 |
+
"-khtml-box-shadow":"0px 10px 20px #808080", // Konqueror
|
119 |
+
filter: "progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')" // IE
|
120 |
+
},
|
121 |
+
|
122 |
+
".MathJax_MenuItem": {
|
123 |
+
padding: (isPC ? "2px 2em" : "1px 2em"),
|
124 |
+
background:"transparent"
|
125 |
+
},
|
126 |
+
|
127 |
+
".MathJax_MenuArrow": {
|
128 |
+
position:"absolute", right:".5em", "padding-top":".25em", color:"#666666",
|
129 |
+
"font-family": (isMSIE ? "'Arial unicode MS'" : null), "font-size": ".75em"
|
130 |
+
},
|
131 |
+
".MathJax_MenuActive .MathJax_MenuArrow": {color:"white"},
|
132 |
+
".MathJax_MenuArrow.RTL": {left:".5em", right:"auto"},
|
133 |
+
|
134 |
+
".MathJax_MenuCheck": {
|
135 |
+
position:"absolute", left:".7em",
|
136 |
+
"font-family": (isMSIE ? "'Arial unicode MS'" : null)
|
137 |
+
},
|
138 |
+
".MathJax_MenuCheck.RTL": {right:".7em", left:"auto"},
|
139 |
+
|
140 |
+
".MathJax_MenuRadioCheck": {
|
141 |
+
position:"absolute", left: (isPC ? "1em" : ".7em")
|
142 |
+
},
|
143 |
+
".MathJax_MenuRadioCheck.RTL": {
|
144 |
+
right: (isPC ? "1em" : ".7em"), left:"auto"
|
145 |
+
},
|
146 |
+
|
147 |
+
".MathJax_MenuLabel": {
|
148 |
+
padding: (isPC ? "2px 2em 4px 1.33em" : "1px 2em 3px 1.33em"),
|
149 |
+
"font-style":"italic"
|
150 |
+
},
|
151 |
+
|
152 |
+
".MathJax_MenuRule": {
|
153 |
+
"border-top": (isPC ? "1px solid #CCCCCC" : "1px solid #DDDDDD"),
|
154 |
+
margin: (isPC ? "4px 1px 0px" : "4px 3px")
|
155 |
+
},
|
156 |
+
|
157 |
+
".MathJax_MenuDisabled": {
|
158 |
+
color:"GrayText"
|
159 |
+
},
|
160 |
+
".MathJax_MenuActive": {
|
161 |
+
"background-color": (isPC ? "Highlight" : "#606872"),
|
162 |
+
color: (isPC ? "HighlightText" : "white")
|
163 |
+
},
|
164 |
+
|
165 |
+
".MathJax_MenuDisabled:focus, .MathJax_MenuLabel:focus": {
|
166 |
+
"background-color": "#E8E8E8"
|
167 |
+
},
|
168 |
+
".MathJax_ContextMenu:focus": {
|
169 |
+
outline:"none"
|
170 |
+
},
|
171 |
+
".MathJax_ContextMenu .MathJax_MenuItem:focus": {
|
172 |
+
outline:"none"
|
173 |
+
},
|
174 |
+
|
175 |
+
"#MathJax_AboutClose": {
|
176 |
+
top:".2em", right:".2em"
|
177 |
+
},
|
178 |
+
".MathJax_Menu .MathJax_MenuClose": {
|
179 |
+
top:"-10px", left:"-10px"
|
180 |
+
},
|
181 |
+
|
182 |
+
".MathJax_MenuClose": {
|
183 |
+
position:"absolute",
|
184 |
+
cursor:"pointer",
|
185 |
+
display:"inline-block",
|
186 |
+
border:"2px solid #AAA",
|
187 |
+
"border-radius":"18px",
|
188 |
+
"-webkit-border-radius": "18px", // Safari and Chrome
|
189 |
+
"-moz-border-radius": "18px", // Firefox
|
190 |
+
"-khtml-border-radius": "18px", // Konqueror
|
191 |
+
"font-family":"'Courier New',Courier",
|
192 |
+
"font-size":"24px",
|
193 |
+
color:"#F0F0F0"
|
194 |
+
},
|
195 |
+
".MathJax_MenuClose span": {
|
196 |
+
display:"block", "background-color":"#AAA", border:"1.5px solid",
|
197 |
+
"border-radius":"18px",
|
198 |
+
"-webkit-border-radius": "18px", // Safari and Chrome
|
199 |
+
"-moz-border-radius": "18px", // Firefox
|
200 |
+
"-khtml-border-radius": "18px", // Konqueror
|
201 |
+
"line-height":0,
|
202 |
+
padding:"8px 0 6px" // may need to be browser-specific
|
203 |
+
},
|
204 |
+
".MathJax_MenuClose:hover": {
|
205 |
+
color:"white!important",
|
206 |
+
border:"2px solid #CCC!important"
|
207 |
+
},
|
208 |
+
".MathJax_MenuClose:hover span": {
|
209 |
+
"background-color":"#CCC!important"
|
210 |
+
},
|
211 |
+
".MathJax_MenuClose:hover:focus": {
|
212 |
+
outline:"none"
|
213 |
+
}
|
214 |
+
}
|
215 |
+
});
|
216 |
+
|
217 |
+
var FALSE, HOVER, KEY;
|
218 |
+
HUB.Register.StartupHook("MathEvents Ready",function () {
|
219 |
+
FALSE = MathJax.Extension.MathEvents.Event.False;
|
220 |
+
HOVER = MathJax.Extension.MathEvents.Hover;
|
221 |
+
KEY = MathJax.Extension.MathEvents.Event.KEY;
|
222 |
+
});
|
223 |
+
|
224 |
+
|
225 |
+
/*************************************************************/
|
226 |
+
/*
|
227 |
+
* Abstract class of all keyboard navigatable objects.
|
228 |
+
*/
|
229 |
+
var NAV = MathJax.Object.Subclass({
|
230 |
+
/*
|
231 |
+
* Moving in the list of items.
|
232 |
+
*/
|
233 |
+
Keydown: function(event, menu) {
|
234 |
+
switch (event.keyCode) {
|
235 |
+
case KEY.ESCAPE:
|
236 |
+
this.Remove(event, menu);
|
237 |
+
break;
|
238 |
+
case KEY.RIGHT:
|
239 |
+
this.Right(event, menu);
|
240 |
+
break;
|
241 |
+
case KEY.LEFT:
|
242 |
+
this.Left(event, menu);
|
243 |
+
break;
|
244 |
+
case KEY.UP:
|
245 |
+
this.Up(event, menu);
|
246 |
+
break;
|
247 |
+
case KEY.DOWN:
|
248 |
+
this.Down(event, menu);
|
249 |
+
break;
|
250 |
+
case KEY.RETURN:
|
251 |
+
case KEY.SPACE:
|
252 |
+
this.Space(event, menu);
|
253 |
+
break;
|
254 |
+
default:
|
255 |
+
return;
|
256 |
+
break;
|
257 |
+
}
|
258 |
+
return FALSE(event);
|
259 |
+
},
|
260 |
+
Escape: function(event, menu) { },
|
261 |
+
Right: function(event, menu) { },
|
262 |
+
Left: function(event, menu) { },
|
263 |
+
Up: function(event, menu) { },
|
264 |
+
Down: function(event, menu) { },
|
265 |
+
Space: function(event, menu) { }
|
266 |
+
}, {});
|
267 |
+
|
268 |
+
|
269 |
+
/*************************************************************/
|
270 |
+
/*
|
271 |
+
* The main menu class
|
272 |
+
*/
|
273 |
+
var MENU = MathJax.Menu = NAV.Subclass({
|
274 |
+
version: VERSION,
|
275 |
+
items: [],
|
276 |
+
posted: false,
|
277 |
+
title: null,
|
278 |
+
margin: 5,
|
279 |
+
|
280 |
+
Init: function (def) {this.items = [].slice.call(arguments,0)},
|
281 |
+
With: function (def) {if (def) {HUB.Insert(this,def)}; return this},
|
282 |
+
|
283 |
+
/*
|
284 |
+
* Display the menu
|
285 |
+
*/
|
286 |
+
Post: function (event,parent,forceLTR) {
|
287 |
+
if (!event) {event = window.event||{}}
|
288 |
+
var div = document.getElementById("MathJax_MenuFrame");
|
289 |
+
if (!div) {
|
290 |
+
div = MENU.Background(this);
|
291 |
+
delete ITEM.lastItem; delete ITEM.lastMenu;
|
292 |
+
delete MENU.skipUp;
|
293 |
+
SIGNAL.Post(["post",MENU.jax]);
|
294 |
+
MENU.isRTL = (MathJax.Localization.fontDirection() === "rtl");
|
295 |
+
}
|
296 |
+
var menu = HTML.Element("div",{
|
297 |
+
onmouseup: MENU.Mouseup, ondblclick: FALSE,
|
298 |
+
ondragstart: FALSE, onselectstart: FALSE, oncontextmenu: FALSE,
|
299 |
+
menuItem: this, className: "MathJax_Menu", onkeydown: MENU.Keydown,
|
300 |
+
role: "menu"
|
301 |
+
});
|
302 |
+
if (event.type === "contextmenu" || event.type === "mouseover")
|
303 |
+
menu.className += " MathJax_ContextMenu";
|
304 |
+
if (!forceLTR) {MathJax.Localization.setCSS(menu)}
|
305 |
+
|
306 |
+
for (var i = 0, m = this.items.length; i < m; i++) {this.items[i].Create(menu)}
|
307 |
+
if (MENU.isMobile) {
|
308 |
+
HTML.addElement(menu,"span",{
|
309 |
+
className: "MathJax_MenuClose", menu: parent,
|
310 |
+
ontouchstart: MENU.Close, ontouchend: FALSE, onmousedown: MENU.Close, onmouseup: FALSE
|
311 |
+
},[["span",{},"\u00D7"]]);
|
312 |
+
}
|
313 |
+
|
314 |
+
div.appendChild(menu);
|
315 |
+
this.posted = true;
|
316 |
+
if (menu.offsetWidth) menu.style.width = (menu.offsetWidth+2) + "px";
|
317 |
+
var x = event.pageX, y = event.pageY;
|
318 |
+
var bbox = document.body.getBoundingClientRect();
|
319 |
+
var styles = (window.getComputedStyle ? window.getComputedStyle(document.body) : {marginLeft: "0px"});
|
320 |
+
var bodyRight = bbox.right - Math.min(0,bbox.left) + parseFloat(styles.marginLeft);
|
321 |
+
if (!x && !y && "clientX" in event) {
|
322 |
+
x = event.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
|
323 |
+
y = event.clientY + document.body.scrollTop + document.documentElement.scrollTop;
|
324 |
+
}
|
325 |
+
if (!parent) {
|
326 |
+
var node = MENU.CurrentNode() || event.target;
|
327 |
+
if ((event.type === "keydown" || (!x && !y)) && node) {
|
328 |
+
var offsetX = window.pageXOffset || document.documentElement.scrollLeft;
|
329 |
+
var offsetY = window.pageYOffset || document.documentElement.scrollTop;
|
330 |
+
var rect = node.getBoundingClientRect();
|
331 |
+
x = (rect.right + rect.left) / 2 + offsetX;
|
332 |
+
y = (rect.bottom + rect.top) / 2 + offsetY;
|
333 |
+
}
|
334 |
+
if (x + menu.offsetWidth > bodyRight - this.margin)
|
335 |
+
{x = bodyRight - menu.offsetWidth - this.margin}
|
336 |
+
if (MENU.isMobile) {x = Math.max(5,x-Math.floor(menu.offsetWidth/2)); y -= 20}
|
337 |
+
MENU.skipUp = event.isContextMenu;
|
338 |
+
} else {
|
339 |
+
var side = "left", mw = parent.offsetWidth;
|
340 |
+
x = (MENU.isMobile ? 30 : mw - 2); y = 0;
|
341 |
+
while (parent && parent !== div) {
|
342 |
+
x += parent.offsetLeft; y += parent.offsetTop;
|
343 |
+
parent = parent.parentNode;
|
344 |
+
}
|
345 |
+
if (!MENU.isMobile) {
|
346 |
+
if ((MENU.isRTL && x - mw - menu.offsetWidth > this.margin) ||
|
347 |
+
(!MENU.isRTL && x + menu.offsetWidth > bodyRight - this.margin))
|
348 |
+
{side = "right"; x = Math.max(this.margin,x - mw - menu.offsetWidth + 6)}
|
349 |
+
}
|
350 |
+
if (!isPC) {
|
351 |
+
// in case these ever get implemented
|
352 |
+
menu.style["borderRadiusTop"+side] = 0; // Opera 10.5
|
353 |
+
menu.style["WebkitBorderRadiusTop"+side] = 0; // Safari and Chrome
|
354 |
+
menu.style["MozBorderRadiusTop"+side] = 0; // Firefox
|
355 |
+
menu.style["KhtmlBorderRadiusTop"+side] = 0; // Konqueror
|
356 |
+
}
|
357 |
+
}
|
358 |
+
|
359 |
+
menu.style.left = x+"px"; menu.style.top = y+"px";
|
360 |
+
if (document.selection && document.selection.empty) {document.selection.empty()}
|
361 |
+
|
362 |
+
// Focusing while keeping the scroll position.
|
363 |
+
var oldX = window.pageXOffset || document.documentElement.scrollLeft;
|
364 |
+
var oldY = window.pageYOffset || document.documentElement.scrollTop;
|
365 |
+
MENU.Focus(menu);
|
366 |
+
if (event.type === "keydown") {
|
367 |
+
MENU.skipMouseoverFromKey = true;
|
368 |
+
setTimeout(function() {delete MENU.skipMouseoverFromKey;}, CONFIG.delay);
|
369 |
+
}
|
370 |
+
window.scrollTo(oldX, oldY);
|
371 |
+
return FALSE(event);
|
372 |
+
},
|
373 |
+
|
374 |
+
/*
|
375 |
+
* Remove the menu from the screen
|
376 |
+
*/
|
377 |
+
Remove: function (event,menu) {
|
378 |
+
SIGNAL.Post(["unpost",MENU.jax]);
|
379 |
+
var div = document.getElementById("MathJax_MenuFrame");
|
380 |
+
if (div) {
|
381 |
+
div.parentNode.removeChild(div);
|
382 |
+
if (this.msieFixedPositionBug) {detachEvent("onresize",MENU.Resize)}
|
383 |
+
}
|
384 |
+
if (MENU.jax.hover) {
|
385 |
+
delete MENU.jax.hover.nofade;
|
386 |
+
HOVER.UnHover(MENU.jax);
|
387 |
+
}
|
388 |
+
MENU.Unfocus(menu);
|
389 |
+
if (event.type === "mousedown") MENU.CurrentNode().blur();
|
390 |
+
return FALSE(event);
|
391 |
+
},
|
392 |
+
|
393 |
+
/*
|
394 |
+
* Find an item in a menu (or submenu) by name (Find) or ID (FindID).
|
395 |
+
* A list of names or IDs means descend into submenus.
|
396 |
+
*/
|
397 |
+
Find: function (name) {return this.FindN(1,name,[].slice.call(arguments,1))},
|
398 |
+
FindId: function (name) {return this.FindN(0,name,[].slice.call(arguments,1))},
|
399 |
+
FindN: function (n,name,names) {
|
400 |
+
for (var i = 0, m = this.items.length; i < m; i++) {
|
401 |
+
if (this.items[i].name[n] === name) {
|
402 |
+
if (names.length) {
|
403 |
+
if (!this.items[i].submenu) {return null}
|
404 |
+
return this.items[i].submenu.FindN(n,names[0],names.slice(1));
|
405 |
+
}
|
406 |
+
return this.items[i];
|
407 |
+
}
|
408 |
+
}
|
409 |
+
return null;
|
410 |
+
},
|
411 |
+
|
412 |
+
/*
|
413 |
+
* Find the index of a menu item (so we can insert before or after it)
|
414 |
+
*/
|
415 |
+
IndexOf: function (name) {return this.IndexOfN(1,name)},
|
416 |
+
IndexOfId: function (name) {return this.IndexOfN(0,name)},
|
417 |
+
IndexOfN: function (n,name) {
|
418 |
+
for (var i = 0, m = this.items.length; i < m; i++)
|
419 |
+
{if (this.items[i].name[n] === name) {return i}}
|
420 |
+
return null;
|
421 |
+
},
|
422 |
+
|
423 |
+
Right: function(event, menu) {
|
424 |
+
MENU.Right(event, menu);
|
425 |
+
},
|
426 |
+
Left: function(event, menu) {
|
427 |
+
MENU.Left(event, menu);
|
428 |
+
},
|
429 |
+
Up: function(event, menu) {
|
430 |
+
var node = menu.lastChild;
|
431 |
+
node.menuItem.Activate(event, node);
|
432 |
+
},
|
433 |
+
Down: function(event, menu) {
|
434 |
+
var node = menu.firstChild;
|
435 |
+
node.menuItem.Activate(event, node);
|
436 |
+
},
|
437 |
+
Space: function(event, menu) {
|
438 |
+
this.Remove(event, menu);
|
439 |
+
}
|
440 |
+
},{
|
441 |
+
|
442 |
+
config: CONFIG,
|
443 |
+
|
444 |
+
Remove: function (event) {return MENU.Event(event,this,"Remove")},
|
445 |
+
Mouseover: function (event) {return MENU.Event(event,this,"Mouseover")},
|
446 |
+
Mouseout: function (event) {return MENU.Event(event,this,"Mouseout")},
|
447 |
+
Mousedown: function (event) {return MENU.Event(event,this,"Mousedown")},
|
448 |
+
Mouseup: function (event) {return MENU.Event(event,this,"Mouseup")},
|
449 |
+
Keydown: function (event) {return MENU.Event(event,this,"Keydown")},
|
450 |
+
/*
|
451 |
+
* Events for mobile devices.
|
452 |
+
*/
|
453 |
+
Touchstart: function (event) {return MENU.Event(event,this,"Touchstart")},
|
454 |
+
Touchend: function (event) {return MENU.Event(event,this,"Touchend")},
|
455 |
+
Close: function (event) {
|
456 |
+
return MENU.Event(event,this.menu||this.parentNode,(this.menu?"Touchend":"Remove"));
|
457 |
+
},
|
458 |
+
Event: function (event,menu,type,force) {
|
459 |
+
if (MENU.skipMouseover && type === "Mouseover" && !force) {return FALSE(event)}
|
460 |
+
if (MENU.skipMouseoverFromKey && type === "Mouseover") {
|
461 |
+
delete MENU.skipMouseoverFromKey;
|
462 |
+
return FALSE(event);
|
463 |
+
}
|
464 |
+
if (MENU.skipUp) {
|
465 |
+
if (type.match(/Mouseup|Touchend/)) {delete MENU.skipUp; return FALSE(event)}
|
466 |
+
if (type === "Touchstart" ||
|
467 |
+
(type === "Mousedown" && !MENU.skipMousedown)) {delete MENU.skipUp}
|
468 |
+
}
|
469 |
+
if (!event) {event = window.event}
|
470 |
+
var item = menu.menuItem;
|
471 |
+
if (item && item[type]) {return item[type](event,menu)}
|
472 |
+
return null;
|
473 |
+
},
|
474 |
+
/*
|
475 |
+
* Style for the background DIV
|
476 |
+
*/
|
477 |
+
BGSTYLE: {
|
478 |
+
position:"absolute", left:0, top:0, "z-index":200,
|
479 |
+
width:"100%", height:"100%", border:0, padding:0, margin:0
|
480 |
+
},
|
481 |
+
|
482 |
+
Background: function (menu) {
|
483 |
+
var div = HTML.addElement(document.body,"div",
|
484 |
+
{style:this.BGSTYLE, id:"MathJax_MenuFrame"},
|
485 |
+
[["div",{style: this.BGSTYLE, menuItem: menu, onmousedown: this.Remove}]]);
|
486 |
+
var bg = div.firstChild;
|
487 |
+
if (MENU.msieBackgroundBug) {
|
488 |
+
// MSIE doesn't allow transparent background to be hit boxes, so
|
489 |
+
// fake it using opacity with solid background color
|
490 |
+
bg.style.backgroundColor = "white"; bg.style.filter = "alpha(opacity=0)";
|
491 |
+
}
|
492 |
+
if (MENU.msieFixedPositionBug) {
|
493 |
+
// MSIE can't do fixed position, so use a full-sized background
|
494 |
+
// and an onresize handler to update it (stupid, but necessary)
|
495 |
+
div.width = div.height = 0; this.Resize();
|
496 |
+
attachEvent("onresize",this.Resize);
|
497 |
+
} else {
|
498 |
+
// otherwise, use a fixed position DIV to cover the viewport
|
499 |
+
bg.style.position = "fixed";
|
500 |
+
}
|
501 |
+
return div;
|
502 |
+
},
|
503 |
+
Resize: function () {setTimeout(MENU.SetWH,0)},
|
504 |
+
SetWH: function () {
|
505 |
+
var bg = document.getElementById("MathJax_MenuFrame");
|
506 |
+
if (bg) {
|
507 |
+
bg = bg.firstChild;
|
508 |
+
bg.style.width = bg.style.height = "1px"; // so scrollWidth/Height will be right below
|
509 |
+
bg.style.width = document.body.scrollWidth + "px";
|
510 |
+
bg.style.height = document.body.scrollHeight + "px";
|
511 |
+
}
|
512 |
+
},
|
513 |
+
|
514 |
+
/*************************************************************/
|
515 |
+
/*
|
516 |
+
* Keyboard navigation of menu.
|
517 |
+
*/
|
518 |
+
posted: false, // Is a menu open?
|
519 |
+
active: null, // The focused in HTML node in the menu.
|
520 |
+
|
521 |
+
GetNode: function(jax) {
|
522 |
+
var node = document.getElementById(jax.inputID + "-Frame");
|
523 |
+
return node.isMathJax ? node : node.firstChild;
|
524 |
+
},
|
525 |
+
CurrentNode: function() {
|
526 |
+
return MENU.GetNode(MENU.jax);
|
527 |
+
},
|
528 |
+
AllNodes: function() {
|
529 |
+
var jaxs = MathJax.Hub.getAllJax();
|
530 |
+
var nodes = [];
|
531 |
+
for (var i = 0, jax; jax = jaxs[i]; i++) {
|
532 |
+
nodes.push(MENU.GetNode(jax));
|
533 |
+
}
|
534 |
+
return nodes;
|
535 |
+
},
|
536 |
+
ActiveNode: function() {
|
537 |
+
return MENU.active;
|
538 |
+
},
|
539 |
+
FocusNode: function(node) {
|
540 |
+
MENU.active = node;
|
541 |
+
node.focus();
|
542 |
+
},
|
543 |
+
//
|
544 |
+
// Focus is a global affair, since we only ever want a single focused item.
|
545 |
+
//
|
546 |
+
Focus: function(menu) {
|
547 |
+
!MENU.posted ? MENU.Activate(menu) : MENU.ActiveNode().tabIndex = -1;
|
548 |
+
menu.tabIndex = 0;
|
549 |
+
MENU.FocusNode(menu);
|
550 |
+
},
|
551 |
+
Activate: function(event, menu) {
|
552 |
+
MENU.UnsetTabIndex();
|
553 |
+
MENU.posted = true;
|
554 |
+
},
|
555 |
+
Unfocus: function() {
|
556 |
+
MENU.ActiveNode().tabIndex = -1;
|
557 |
+
MENU.SetTabIndex();
|
558 |
+
MENU.FocusNode(MENU.CurrentNode());
|
559 |
+
MENU.posted = false;
|
560 |
+
},
|
561 |
+
MoveHorizontal: function(event, menu, move) {
|
562 |
+
if (!event.shiftKey) return;
|
563 |
+
var jaxs = MENU.AllNodes();
|
564 |
+
var len = jaxs.length;
|
565 |
+
if (len === 0) return;
|
566 |
+
var next = jaxs[MENU.Mod(move(MENU.IndexOf(jaxs, MENU.CurrentNode())), len)];
|
567 |
+
if (next === MENU.CurrentNode()) return;
|
568 |
+
MENU.menu.Remove(event, menu);
|
569 |
+
MENU.jax = MathJax.Hub.getJaxFor(next);
|
570 |
+
MENU.FocusNode(next);
|
571 |
+
MENU.menu.Post(null);
|
572 |
+
},
|
573 |
+
Right: function(event, menu) {
|
574 |
+
MENU.MoveHorizontal(event, menu, function(x) {return x + 1;});
|
575 |
+
},
|
576 |
+
Left: function(event, menu) {
|
577 |
+
MENU.MoveHorizontal(event, menu, function(x) {return x - 1;});
|
578 |
+
},
|
579 |
+
UnsetTabIndex: function () {
|
580 |
+
var jaxs = MENU.AllNodes();
|
581 |
+
for (var j = 0, jax; jax = jaxs[j]; j++) {
|
582 |
+
if (jax.tabIndex > 0) {
|
583 |
+
jax.oldTabIndex = jax.tabIndex;
|
584 |
+
}
|
585 |
+
jax.tabIndex = -1;
|
586 |
+
}
|
587 |
+
},
|
588 |
+
SetTabIndex: function () {
|
589 |
+
var jaxs = MENU.AllNodes();
|
590 |
+
for (var j = 0, jax; jax = jaxs[j]; j++) {
|
591 |
+
if (jax.oldTabIndex !== undefined) {
|
592 |
+
jax.tabIndex = jax.oldTabIndex
|
593 |
+
delete jax.oldTabIndex;
|
594 |
+
} else {
|
595 |
+
jax.tabIndex = HUB.getTabOrder(jax);
|
596 |
+
}
|
597 |
+
}
|
598 |
+
},
|
599 |
+
|
600 |
+
//TODO: Move to utility class.
|
601 |
+
// Computes a mod n.
|
602 |
+
Mod: function(a, n) {
|
603 |
+
return ((a % n) + n) % n;
|
604 |
+
},
|
605 |
+
IndexOf: (Array.prototype.indexOf ?
|
606 |
+
function (A, item, start) {return A.indexOf(item, start);} :
|
607 |
+
function (A, item, start) {
|
608 |
+
for (var i = (start || 0), j = A.length; i < j; i++) {
|
609 |
+
if (item === A[i]) return i;
|
610 |
+
}
|
611 |
+
return -1;
|
612 |
+
}),
|
613 |
+
|
614 |
+
saveCookie: function () {HTML.Cookie.Set("menu",this.cookie)},
|
615 |
+
getCookie: function () {this.cookie = HTML.Cookie.Get("menu")}
|
616 |
+
|
617 |
+
});
|
618 |
+
|
619 |
+
MathJax.Menu.NAV = NAV;
|
620 |
+
|
621 |
+
/*************************************************************/
|
622 |
+
/*
|
623 |
+
* Abstract class of menu items.
|
624 |
+
*/
|
625 |
+
var ITEM = MENU.ITEM = NAV.Subclass({
|
626 |
+
|
627 |
+
name: "", // The menu item's label as [id,label] pair.
|
628 |
+
node: null, // The HTML node of the item.
|
629 |
+
menu: null, // The parent menu containing that item. HTML node.
|
630 |
+
|
631 |
+
Attributes: function(def) {
|
632 |
+
return HUB.Insert(
|
633 |
+
{onmouseup: MENU.Mouseup,
|
634 |
+
ondragstart: FALSE, onselectstart: FALSE, onselectend: FALSE,
|
635 |
+
ontouchstart: MENU.Touchstart, ontouchend: MENU.Touchend,
|
636 |
+
className: "MathJax_MenuItem", role: this.role,
|
637 |
+
menuItem: this},
|
638 |
+
def);
|
639 |
+
},
|
640 |
+
|
641 |
+
Create: function (menu) {
|
642 |
+
if (!this.hidden) {
|
643 |
+
var def = this.Attributes();
|
644 |
+
var label = this.Label(def,menu);
|
645 |
+
HTML.addElement(menu, "div", def, label);
|
646 |
+
}
|
647 |
+
},
|
648 |
+
Name: function () {return _(this.name[0],this.name[1])},
|
649 |
+
|
650 |
+
Mouseover: function (event,menu) {
|
651 |
+
if (menu.parentNode === MENU.ActiveNode().parentNode) {
|
652 |
+
this.Deactivate(MENU.ActiveNode());
|
653 |
+
}
|
654 |
+
this.Activate(event, menu);
|
655 |
+
},
|
656 |
+
Mouseout: function (event,menu) {
|
657 |
+
this.Deactivate(menu);
|
658 |
+
},
|
659 |
+
Mouseup: function (event,menu) {return this.Remove(event,menu)},
|
660 |
+
|
661 |
+
|
662 |
+
DeactivateSubmenus: function(menu) {
|
663 |
+
var menus = document.getElementById("MathJax_MenuFrame").childNodes,
|
664 |
+
items = ITEM.GetMenuNode(menu).childNodes;
|
665 |
+
for (var i = 0, m = items.length; i < m; i++) {
|
666 |
+
var item = items[i].menuItem;
|
667 |
+
// Deactivates submenu items.
|
668 |
+
if (item && item.submenu && item.submenu.posted &&
|
669 |
+
item !== menu.menuItem) {
|
670 |
+
item.Deactivate(items[i]);
|
671 |
+
}
|
672 |
+
}
|
673 |
+
this.RemoveSubmenus(menu, menus);
|
674 |
+
},
|
675 |
+
RemoveSubmenus: function(menu, menus) {
|
676 |
+
menus = menus || document.getElementById("MathJax_MenuFrame").childNodes;
|
677 |
+
var m = menus.length-1;
|
678 |
+
while (m >= 0 && ITEM.GetMenuNode(menu).menuItem !== menus[m].menuItem) {
|
679 |
+
menus[m].menuItem.posted = false;
|
680 |
+
menus[m].parentNode.removeChild(menus[m]);
|
681 |
+
m--;
|
682 |
+
}
|
683 |
+
},
|
684 |
+
|
685 |
+
Touchstart: function (event,menu) {return this.TouchEvent(event,menu,"Mousedown")},
|
686 |
+
Touchend: function (event,menu) {return this.TouchEvent(event,menu,"Mouseup")},
|
687 |
+
TouchEvent: function (event,menu,type) {
|
688 |
+
if (this !== ITEM.lastItem) {
|
689 |
+
if (ITEM.lastMenu) {MENU.Event(event,ITEM.lastMenu,"Mouseout")}
|
690 |
+
MENU.Event(event,menu,"Mouseover",true);
|
691 |
+
ITEM.lastItem = this; ITEM.lastMenu = menu;
|
692 |
+
}
|
693 |
+
if (this.nativeTouch) {return null}
|
694 |
+
MENU.Event(event,menu,type);
|
695 |
+
return false;
|
696 |
+
},
|
697 |
+
|
698 |
+
Remove: function (event,menu) {
|
699 |
+
menu = menu.parentNode.menuItem;
|
700 |
+
return menu.Remove(event,menu);
|
701 |
+
},
|
702 |
+
|
703 |
+
With: function (def) {if (def) {HUB.Insert(this,def)}; return this},
|
704 |
+
|
705 |
+
isRTL: function () {return MENU.isRTL},
|
706 |
+
rtlClass: function () {return (this.isRTL() ? " RTL" : "")}
|
707 |
+
}, {
|
708 |
+
GetMenuNode: function(item) {
|
709 |
+
return item.parentNode;
|
710 |
+
}
|
711 |
+
});
|
712 |
+
|
713 |
+
/*************************************************************/
|
714 |
+
/*
|
715 |
+
* Abstract class of menu items that are focusable and perform some action
|
716 |
+
*/
|
717 |
+
MENU.ENTRY = MENU.ITEM.Subclass({
|
718 |
+
role: "menuitem", // Aria role.
|
719 |
+
|
720 |
+
Attributes: function(def) {
|
721 |
+
def = HUB.Insert(
|
722 |
+
{onmouseover: MENU.Mouseover, onmouseout: MENU.Mouseout,
|
723 |
+
onmousedown: MENU.Mousedown, onkeydown: MENU.Keydown,
|
724 |
+
"aria-disabled": !!this.disabled},
|
725 |
+
def);
|
726 |
+
def = this.SUPER(arguments).Attributes.call(this, def);
|
727 |
+
if (this.disabled) {
|
728 |
+
def.className += " MathJax_MenuDisabled";
|
729 |
+
}
|
730 |
+
return def;
|
731 |
+
},
|
732 |
+
MoveVertical: function(event, item, move) {
|
733 |
+
var menuNode = ITEM.GetMenuNode(item);
|
734 |
+
var items = [];
|
735 |
+
for (var i = 0, allItems = menuNode.menuItem.items, it;
|
736 |
+
it = allItems[i]; i++) {
|
737 |
+
if (!it.hidden) {
|
738 |
+
items.push(it);
|
739 |
+
}
|
740 |
+
}
|
741 |
+
var index = MENU.IndexOf(items, this);
|
742 |
+
if (index === -1) return;
|
743 |
+
var len = items.length;
|
744 |
+
var children = menuNode.childNodes;
|
745 |
+
do {
|
746 |
+
index = MENU.Mod(move(index), len);
|
747 |
+
} while (items[index].hidden || !children[index].role ||
|
748 |
+
children[index].role === "separator");
|
749 |
+
this.Deactivate(item);
|
750 |
+
items[index].Activate(event, children[index]);
|
751 |
+
},
|
752 |
+
Up: function(event, item) {
|
753 |
+
this.MoveVertical(event, item, function(x) { return x - 1; });
|
754 |
+
},
|
755 |
+
Down: function(event, item) {
|
756 |
+
this.MoveVertical(event, item, function(x) { return x + 1; });
|
757 |
+
},
|
758 |
+
Right: function(event, item) {
|
759 |
+
this.MoveHorizontal(event, item, MENU.Right, !this.isRTL());
|
760 |
+
},
|
761 |
+
Left: function(event, item) {
|
762 |
+
this.MoveHorizontal(event, item, MENU.Left, this.isRTL());
|
763 |
+
},
|
764 |
+
MoveHorizontal: function(event, item, move, rtl) {
|
765 |
+
var menuNode = ITEM.GetMenuNode(item);
|
766 |
+
if (menuNode.menuItem === MENU.menu && event.shiftKey) {
|
767 |
+
move(event, item);
|
768 |
+
}
|
769 |
+
if (rtl) return;
|
770 |
+
if (menuNode.menuItem !== MENU.menu) {
|
771 |
+
this.Deactivate(item);
|
772 |
+
}
|
773 |
+
var parentNodes = menuNode.previousSibling.childNodes;
|
774 |
+
var length = parentNodes.length;
|
775 |
+
while (length--) {
|
776 |
+
var parent = parentNodes[length];
|
777 |
+
if (parent.menuItem.submenu &&
|
778 |
+
parent.menuItem.submenu === menuNode.menuItem) {
|
779 |
+
MENU.Focus(parent);
|
780 |
+
break;
|
781 |
+
}
|
782 |
+
}
|
783 |
+
this.RemoveSubmenus(item);
|
784 |
+
},
|
785 |
+
Space: function (event, menu) {
|
786 |
+
this.Mouseup(event, menu);
|
787 |
+
},
|
788 |
+
|
789 |
+
Activate: function (event, menu) {
|
790 |
+
this.Deactivate(menu);
|
791 |
+
if (!this.disabled) {
|
792 |
+
menu.className += " MathJax_MenuActive";
|
793 |
+
}
|
794 |
+
this.DeactivateSubmenus(menu);
|
795 |
+
MENU.Focus(menu);
|
796 |
+
},
|
797 |
+
Deactivate: function (menu) {
|
798 |
+
menu.className = menu.className.replace(/ MathJax_MenuActive/,"");
|
799 |
+
}
|
800 |
+
|
801 |
+
});
|
802 |
+
|
803 |
+
/*************************************************************/
|
804 |
+
/*
|
805 |
+
* A menu item that performs a command when selected
|
806 |
+
*/
|
807 |
+
MENU.ITEM.COMMAND = MENU.ENTRY.Subclass({
|
808 |
+
action: function () {},
|
809 |
+
|
810 |
+
Init: function (name,action,def) {
|
811 |
+
if (!isArray(name)) {name = [name,name]} // make [id,label] pair
|
812 |
+
this.name = name; this.action = action;
|
813 |
+
this.With(def);
|
814 |
+
},
|
815 |
+
|
816 |
+
Label: function (def,menu) {return [this.Name()]},
|
817 |
+
Mouseup: function (event,menu) {
|
818 |
+
if (!this.disabled) {
|
819 |
+
this.Remove(event,menu);
|
820 |
+
SIGNAL.Post(["command",this]);
|
821 |
+
this.action.call(this,event);
|
822 |
+
}
|
823 |
+
return FALSE(event);
|
824 |
+
}
|
825 |
+
});
|
826 |
+
|
827 |
+
/*************************************************************/
|
828 |
+
/*
|
829 |
+
* A menu item that posts a submenu
|
830 |
+
*/
|
831 |
+
MENU.ITEM.SUBMENU = MENU.ENTRY.Subclass({
|
832 |
+
submenu: null, // the submenu
|
833 |
+
marker: "\u25BA", // the submenu arrow
|
834 |
+
markerRTL: "\u25C4", // the submenu arrow for RTL
|
835 |
+
|
836 |
+
Attributes: function(def) {
|
837 |
+
def = HUB.Insert({"aria-haspopup": "true"}, def);
|
838 |
+
def = this.SUPER(arguments).Attributes.call(this, def);
|
839 |
+
return def;
|
840 |
+
},
|
841 |
+
Init: function (name,def) {
|
842 |
+
if (!isArray(name)) {name = [name,name]} // make [id,label] pair
|
843 |
+
this.name = name; var i = 1;
|
844 |
+
if (!(def instanceof MENU.ITEM)) {this.With(def), i++}
|
845 |
+
this.submenu = MENU.apply(MENU,[].slice.call(arguments,i));
|
846 |
+
},
|
847 |
+
Label: function (def,menu) {
|
848 |
+
this.submenu.posted = false;
|
849 |
+
return [this.Name()+" ",["span",{
|
850 |
+
className:"MathJax_MenuArrow" + this.rtlClass()
|
851 |
+
},[this.isRTL() ? this.markerRTL : this.marker]]];
|
852 |
+
},
|
853 |
+
Timer: function (event,menu) {
|
854 |
+
this.ClearTimer();
|
855 |
+
event = {type: event.type,
|
856 |
+
clientX: event.clientX, clientY: event.clientY}; // MSIE can't pass the event below
|
857 |
+
this.timer = setTimeout(CALLBACK(["Mouseup",this,event,menu]),CONFIG.delay);
|
858 |
+
},
|
859 |
+
ClearTimer: function() {
|
860 |
+
if (this.timer) {
|
861 |
+
clearTimeout(this.timer);
|
862 |
+
}
|
863 |
+
},
|
864 |
+
Touchend: function (event,menu) {
|
865 |
+
var forceout = this.submenu.posted;
|
866 |
+
var result = this.SUPER(arguments).Touchend.apply(this,arguments);
|
867 |
+
if (forceout) {this.Deactivate(menu); delete ITEM.lastItem; delete ITEM.lastMenu}
|
868 |
+
return result;
|
869 |
+
},
|
870 |
+
Mouseout: function(event, menu) {
|
871 |
+
if (!this.submenu.posted) {
|
872 |
+
this.Deactivate(menu);
|
873 |
+
}
|
874 |
+
this.ClearTimer();
|
875 |
+
},
|
876 |
+
Mouseover: function(event, menu) {
|
877 |
+
this.Activate(event, menu);
|
878 |
+
},
|
879 |
+
Mouseup: function (event,menu) {
|
880 |
+
if (!this.disabled) {
|
881 |
+
if (!this.submenu.posted) {
|
882 |
+
this.ClearTimer();
|
883 |
+
this.submenu.Post(event, menu, this.ltr);
|
884 |
+
MENU.Focus(menu);
|
885 |
+
} else {
|
886 |
+
this.DeactivateSubmenus(menu);
|
887 |
+
}
|
888 |
+
}
|
889 |
+
return FALSE(event);
|
890 |
+
},
|
891 |
+
Activate: function (event, menu) {
|
892 |
+
if (!this.disabled) {
|
893 |
+
this.Deactivate(menu);
|
894 |
+
menu.className += " MathJax_MenuActive";
|
895 |
+
}
|
896 |
+
if (!this.submenu.posted) {
|
897 |
+
this.DeactivateSubmenus(menu);
|
898 |
+
if (!MENU.isMobile) {
|
899 |
+
this.Timer(event,menu);
|
900 |
+
}
|
901 |
+
}
|
902 |
+
MENU.Focus(menu);
|
903 |
+
},
|
904 |
+
MoveVertical: function(event, item, move) {
|
905 |
+
this.ClearTimer();
|
906 |
+
this.SUPER(arguments).MoveVertical.apply(this, arguments);
|
907 |
+
},
|
908 |
+
MoveHorizontal: function(event, menu, move, rtl) {
|
909 |
+
if (!rtl) {
|
910 |
+
this.SUPER(arguments).MoveHorizontal.apply(this, arguments);
|
911 |
+
return;
|
912 |
+
}
|
913 |
+
if (this.disabled) return;
|
914 |
+
if (!this.submenu.posted) {
|
915 |
+
this.Activate(event, menu);
|
916 |
+
return;
|
917 |
+
}
|
918 |
+
var submenuNodes = ITEM.GetMenuNode(menu).nextSibling.childNodes;
|
919 |
+
if (submenuNodes.length > 0) {
|
920 |
+
this.submenu.items[0].Activate(event, submenuNodes[0]);
|
921 |
+
}
|
922 |
+
}
|
923 |
+
});
|
924 |
+
|
925 |
+
/*************************************************************/
|
926 |
+
/*
|
927 |
+
* A menu item that is one of several radio buttons
|
928 |
+
*/
|
929 |
+
MENU.ITEM.RADIO = MENU.ENTRY.Subclass({
|
930 |
+
variable: null, // the variable name
|
931 |
+
marker: (isPC ? "\u25CF" : "\u2713"), // the checkmark
|
932 |
+
role: "menuitemradio",
|
933 |
+
|
934 |
+
Attributes: function(def) {
|
935 |
+
var checked = CONFIG.settings[this.variable] === this.value ? "true" : "false";
|
936 |
+
def = HUB.Insert({"aria-checked": checked}, def);
|
937 |
+
def = this.SUPER(arguments).Attributes.call(this, def);
|
938 |
+
return def;
|
939 |
+
},
|
940 |
+
Init: function (name,variable,def) {
|
941 |
+
if (!isArray(name)) {name = [name,name]} // make [id,label] pair
|
942 |
+
this.name = name; this.variable = variable; this.With(def);
|
943 |
+
if (this.value == null) {this.value = this.name[0]}
|
944 |
+
},
|
945 |
+
Label: function (def,menu) {
|
946 |
+
var span = {className:"MathJax_MenuRadioCheck" + this.rtlClass()};
|
947 |
+
if (CONFIG.settings[this.variable] !== this.value) {
|
948 |
+
span = {style:{display:"none"}};
|
949 |
+
}
|
950 |
+
return [["span",span,[this.marker]]," "+this.Name()];
|
951 |
+
},
|
952 |
+
Mouseup: function (event,menu) {
|
953 |
+
if (!this.disabled) {
|
954 |
+
var child = menu.parentNode.childNodes;
|
955 |
+
for (var i = 0, m = child.length; i < m; i++) {
|
956 |
+
var item = child[i].menuItem;
|
957 |
+
if (item && item.variable === this.variable) {
|
958 |
+
child[i].firstChild.style.display = "none";
|
959 |
+
}
|
960 |
+
}
|
961 |
+
menu.firstChild.display = "";
|
962 |
+
CONFIG.settings[this.variable] = this.value;
|
963 |
+
MENU.cookie[this.variable] = CONFIG.settings[this.variable]; MENU.saveCookie();
|
964 |
+
SIGNAL.Post(["radio button",this]);
|
965 |
+
}
|
966 |
+
this.Remove(event,menu);
|
967 |
+
if (this.action && !this.disabled) {this.action.call(MENU,this)}
|
968 |
+
return FALSE(event);
|
969 |
+
}
|
970 |
+
});
|
971 |
+
|
972 |
+
/*************************************************************/
|
973 |
+
/*
|
974 |
+
* A menu item that is checkable
|
975 |
+
*/
|
976 |
+
MENU.ITEM.CHECKBOX = MENU.ENTRY.Subclass({
|
977 |
+
variable: null, // the variable name
|
978 |
+
marker: "\u2713", // the checkmark
|
979 |
+
role: "menuitemcheckbox",
|
980 |
+
|
981 |
+
Attributes: function(def) {
|
982 |
+
var checked = CONFIG.settings[this.variable] ? "true" : "false";
|
983 |
+
def = HUB.Insert({"aria-checked": checked}, def);
|
984 |
+
def = this.SUPER(arguments).Attributes.call(this, def);
|
985 |
+
return def;
|
986 |
+
},
|
987 |
+
Init: function (name,variable,def) {
|
988 |
+
if (!isArray(name)) {name = [name,name]} // make [id,label] pair
|
989 |
+
this.name = name; this.variable = variable; this.With(def);
|
990 |
+
},
|
991 |
+
Label: function (def,menu) {
|
992 |
+
var span = {className:"MathJax_MenuCheck" + this.rtlClass()};
|
993 |
+
if (!CONFIG.settings[this.variable]) {span = {style:{display:"none"}}}
|
994 |
+
return [["span",span,[this.marker]]," "+this.Name()];
|
995 |
+
},
|
996 |
+
Mouseup: function (event,menu) {
|
997 |
+
if (!this.disabled) {
|
998 |
+
menu.firstChild.display = (CONFIG.settings[this.variable] ? "none" : "");
|
999 |
+
CONFIG.settings[this.variable] = !CONFIG.settings[this.variable];
|
1000 |
+
MENU.cookie[this.variable] = CONFIG.settings[this.variable]; MENU.saveCookie();
|
1001 |
+
SIGNAL.Post(["checkbox",this]);
|
1002 |
+
}
|
1003 |
+
this.Remove(event,menu);
|
1004 |
+
if (this.action && !this.disabled) {this.action.call(MENU,this)}
|
1005 |
+
return FALSE(event);
|
1006 |
+
}
|
1007 |
+
});
|
1008 |
+
|
1009 |
+
/*************************************************************/
|
1010 |
+
/*
|
1011 |
+
* A menu item that is a label
|
1012 |
+
*/
|
1013 |
+
MENU.ITEM.LABEL = MENU.ENTRY.Subclass({
|
1014 |
+
role: "menuitem", // Aria role.
|
1015 |
+
|
1016 |
+
Init: function (name,def) {
|
1017 |
+
if (!isArray(name)) {name = [name,name]} // make [id,label] pair
|
1018 |
+
this.name = name; this.With(def);
|
1019 |
+
},
|
1020 |
+
Label: function (def,menu) {
|
1021 |
+
def.className += " MathJax_MenuLabel";
|
1022 |
+
return [this.Name()];
|
1023 |
+
},
|
1024 |
+
Activate: function(event, menu) {
|
1025 |
+
this.Deactivate(menu);
|
1026 |
+
MENU.Focus(menu);
|
1027 |
+
},
|
1028 |
+
Mouseup: function (event,menu) { }
|
1029 |
+
});
|
1030 |
+
|
1031 |
+
/*************************************************************/
|
1032 |
+
/*
|
1033 |
+
* A rule in a menu
|
1034 |
+
*/
|
1035 |
+
MENU.ITEM.RULE = MENU.ITEM.Subclass({
|
1036 |
+
role: "separator",
|
1037 |
+
|
1038 |
+
Attributes: function(def) {
|
1039 |
+
def = HUB.Insert({"aria-orientation": "vertical"}, def);
|
1040 |
+
def = this.SUPER(arguments).Attributes.call(this, def);
|
1041 |
+
return def;
|
1042 |
+
},
|
1043 |
+
Label: function (def,menu) {
|
1044 |
+
def.className += " MathJax_MenuRule";
|
1045 |
+
return null;
|
1046 |
+
}
|
1047 |
+
});
|
1048 |
+
|
1049 |
+
/*************************************************************/
|
1050 |
+
/*************************************************************/
|
1051 |
+
|
1052 |
+
/*
|
1053 |
+
* Handle the ABOUT box
|
1054 |
+
*/
|
1055 |
+
MENU.About = function (event) {
|
1056 |
+
var font = MENU.About.GetFont();
|
1057 |
+
var format = MENU.About.GetFormat();
|
1058 |
+
var jax = ["MathJax.js v"+MathJax.fileversion,["br"]];
|
1059 |
+
jax.push(["div",{style:{"border-top":"groove 2px",margin:".25em 0"}}]);
|
1060 |
+
MENU.About.GetJax(jax,MathJax.InputJax,["InputJax","%1 Input Jax v%2"]);
|
1061 |
+
MENU.About.GetJax(jax,MathJax.OutputJax,["OutputJax","%1 Output Jax v%2"]);
|
1062 |
+
MENU.About.GetJax(jax,MathJax.ElementJax,["ElementJax","%1 Element Jax v%2"]);
|
1063 |
+
jax.push(["div",{style:{"border-top":"groove 2px",margin:".25em 0"}}]);
|
1064 |
+
MENU.About.GetJax(jax,MathJax.Extension,["Extension","%1 Extension v%2"],true);
|
1065 |
+
jax.push(["div",{style:{"border-top":"groove 2px",margin:".25em 0"}}],["center",{},[
|
1066 |
+
HUB.Browser + " v"+HUB.Browser.version + (format ?
|
1067 |
+
" \u2014 " + _(format.replace(/ /g,""),format) : "")
|
1068 |
+
]]);
|
1069 |
+
MENU.About.div = MENU.Background(MENU.About);
|
1070 |
+
var about = HTML.addElement(MENU.About.div,"div",{
|
1071 |
+
id: "MathJax_About", tabIndex: 0, onkeydown: MENU.About.Keydown
|
1072 |
+
},[
|
1073 |
+
["b",{style:{fontSize:"120%"}},["MathJax"]]," v"+MathJax.version,["br"],
|
1074 |
+
_(font.replace(/ /g,""),"using "+font),["br"],["br"],
|
1075 |
+
["span",{style:{
|
1076 |
+
display:"inline-block", "text-align":"left", "font-size":"80%",
|
1077 |
+
"max-height":"20em", overflow:"auto",
|
1078 |
+
"background-color":"#E4E4E4", padding:".4em .6em", border:"1px inset"
|
1079 |
+
}, tabIndex: 0},jax],["br"],["br"],
|
1080 |
+
["a",{href:"http://www.mathjax.org/"},["www.mathjax.org"]],
|
1081 |
+
["span",{className:"MathJax_MenuClose",id:"MathJax_AboutClose",
|
1082 |
+
onclick:MENU.About.Remove,
|
1083 |
+
onkeydown: MENU.About.Keydown, tabIndex: 0, role: "button",
|
1084 |
+
"aria-label": _("CloseAboutDialog","Close about MathJax dialog")},
|
1085 |
+
[["span",{},"\u00D7"]]]
|
1086 |
+
]);
|
1087 |
+
if (event.type === "mouseup") about.className += " MathJax_MousePost";
|
1088 |
+
about.focus();
|
1089 |
+
MathJax.Localization.setCSS(about);
|
1090 |
+
var doc = (document.documentElement||{});
|
1091 |
+
var H = window.innerHeight || doc.clientHeight || doc.scrollHeight || 0;
|
1092 |
+
if (MENU.prototype.msieAboutBug) {
|
1093 |
+
about.style.width = "20em"; about.style.position = "absolute";
|
1094 |
+
about.style.left = Math.floor((document.documentElement.scrollWidth - about.offsetWidth)/2)+"px";
|
1095 |
+
about.style.top = (Math.floor((H-about.offsetHeight)/3)+document.body.scrollTop)+"px";
|
1096 |
+
} else {
|
1097 |
+
about.style.marginLeft = Math.floor(-about.offsetWidth/2)+"px";
|
1098 |
+
about.style.top = Math.floor((H-about.offsetHeight)/3)+"px";
|
1099 |
+
}
|
1100 |
+
};
|
1101 |
+
MENU.About.Remove = function (event) {
|
1102 |
+
if (MENU.About.div) {document.body.removeChild(MENU.About.div); delete MENU.About.div}
|
1103 |
+
};
|
1104 |
+
MENU.About.Keydown = function(event) {
|
1105 |
+
if (event.keyCode === KEY.ESCAPE ||
|
1106 |
+
(this.id === "MathJax_AboutClose" &&
|
1107 |
+
(event.keyCode === KEY.SPACE || event.keyCode === KEY.RETURN))) {
|
1108 |
+
MENU.About.Remove(event);
|
1109 |
+
MENU.CurrentNode().focus();
|
1110 |
+
FALSE(event);
|
1111 |
+
}
|
1112 |
+
},
|
1113 |
+
MENU.About.GetJax = function (jax,JAX,type,noTypeCheck) {
|
1114 |
+
var info = [];
|
1115 |
+
for (var id in JAX) {if (JAX.hasOwnProperty(id) && JAX[id]) {
|
1116 |
+
if ((noTypeCheck && JAX[id].version) || (JAX[id].isa && JAX[id].isa(JAX)))
|
1117 |
+
{info.push(_(type[0],type[1],(JAX[id].id||id),JAX[id].version))}
|
1118 |
+
}}
|
1119 |
+
info.sort();
|
1120 |
+
for (var i = 0, m = info.length; i < m; i++) {jax.push(info[i],["br"])}
|
1121 |
+
return jax;
|
1122 |
+
};
|
1123 |
+
MENU.About.GetFont = function () {
|
1124 |
+
var jax = MathJax.Hub.outputJax["jax/mml"][0] || {};
|
1125 |
+
var font = {
|
1126 |
+
SVG: "web SVG",
|
1127 |
+
CommonHTML: "web TeX",
|
1128 |
+
"HTML-CSS": (jax.imgFonts ? "image" : (jax.webFonts ? "web" : "local")+" "+jax.fontInUse)
|
1129 |
+
}[jax.id] || "generic";
|
1130 |
+
return font + " fonts";
|
1131 |
+
};
|
1132 |
+
MENU.About.GetFormat = function () {
|
1133 |
+
var jax = MathJax.Hub.outputJax["jax/mml"][0] || {};
|
1134 |
+
if (jax.id !== "HTML-CSS"|| !jax.webFonts || jax.imgFonts) return;
|
1135 |
+
return jax.allowWebFonts.replace(/otf/,"woff or otf") + " fonts";
|
1136 |
+
};
|
1137 |
+
|
1138 |
+
|
1139 |
+
/*
|
1140 |
+
* Handle the MathJax HELP menu
|
1141 |
+
*/
|
1142 |
+
MENU.Help = function (event) {
|
1143 |
+
AJAX.Require("[MathJax]/extensions/HelpDialog.js",
|
1144 |
+
function () {MathJax.Extension.Help.Dialog({type:event.type})});
|
1145 |
+
};
|
1146 |
+
|
1147 |
+
/*
|
1148 |
+
* Handle showing of element's source
|
1149 |
+
*/
|
1150 |
+
MENU.ShowSource = function (event) {
|
1151 |
+
if (!event) {event = window.event}
|
1152 |
+
var EVENT = {screenX:event.screenX, screenY:event.screenY};
|
1153 |
+
if (!MENU.jax) return;
|
1154 |
+
if (this.format === "MathML") {
|
1155 |
+
var MML = MathJax.ElementJax.mml;
|
1156 |
+
if (MML && typeof(MML.mbase.prototype.toMathML) !== "undefined") {
|
1157 |
+
// toMathML() can call MathJax.Hub.RestartAfter, so trap errors and check
|
1158 |
+
try {MENU.ShowSource.Text(MENU.jax.root.toMathML("",MENU.jax),event)} catch (err) {
|
1159 |
+
if (!err.restart) {throw err}
|
1160 |
+
CALLBACK.After([this,MENU.ShowSource,EVENT],err.restart);
|
1161 |
+
}
|
1162 |
+
} else if (!AJAX.loadingToMathML) {
|
1163 |
+
AJAX.loadingToMathML = true;
|
1164 |
+
MENU.ShowSource.Window(event); // WeBKit needs to open window on click event
|
1165 |
+
CALLBACK.Queue(
|
1166 |
+
AJAX.Require("[MathJax]/extensions/toMathML.js"),
|
1167 |
+
function () {
|
1168 |
+
delete AJAX.loadingToMathML;
|
1169 |
+
if (!MML.mbase.prototype.toMathML) {MML.mbase.prototype.toMathML = function () {}}
|
1170 |
+
},
|
1171 |
+
[this,MENU.ShowSource,EVENT] // call this function again
|
1172 |
+
);
|
1173 |
+
return;
|
1174 |
+
}
|
1175 |
+
} else if (this.format === "Error") {
|
1176 |
+
MENU.ShowSource.Text(MENU.jax.errorText,event);
|
1177 |
+
} else if (CONFIG.semanticsAnnotations[this.format]) {
|
1178 |
+
var annotation = MENU.jax.root.getAnnotation(this.format);
|
1179 |
+
if (annotation.data[0]) MENU.ShowSource.Text(annotation.data[0].toString());
|
1180 |
+
} else {
|
1181 |
+
if (MENU.jax.originalText == null) {
|
1182 |
+
alert(_("NoOriginalForm","No original form available"));
|
1183 |
+
return;
|
1184 |
+
}
|
1185 |
+
MENU.ShowSource.Text(MENU.jax.originalText,event);
|
1186 |
+
}
|
1187 |
+
};
|
1188 |
+
MENU.ShowSource.Window = function (event) {
|
1189 |
+
if (!MENU.ShowSource.w) {
|
1190 |
+
var def = [], DEF = CONFIG.windowSettings;
|
1191 |
+
for (var id in DEF) {if (DEF.hasOwnProperty(id)) {def.push(id+"="+DEF[id])}}
|
1192 |
+
MENU.ShowSource.w = window.open("","_blank",def.join(","));
|
1193 |
+
}
|
1194 |
+
return MENU.ShowSource.w;
|
1195 |
+
};
|
1196 |
+
MENU.ShowSource.Text = function (text,event) {
|
1197 |
+
var w = MENU.ShowSource.Window(event); delete MENU.ShowSource.w;
|
1198 |
+
text = text.replace(/^\s*/,"").replace(/\s*$/,"");
|
1199 |
+
text = text.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">");
|
1200 |
+
var title = _("EqSource","MathJax Equation Source");
|
1201 |
+
if (MENU.isMobile) {
|
1202 |
+
w.document.open();
|
1203 |
+
w.document.write("<html><head><meta name='viewport' content='width=device-width, initial-scale=1.0' /><title>"+title+"</title></head><body style='font-size:85%'>");
|
1204 |
+
w.document.write("<pre>"+text+"</pre>");
|
1205 |
+
w.document.write("<hr><input type='button' value='"+_("Close","Close")+"' onclick='window.close()' />");
|
1206 |
+
w.document.write("</body></html>");
|
1207 |
+
w.document.close();
|
1208 |
+
} else {
|
1209 |
+
w.document.open();
|
1210 |
+
w.document.write("<html><head><title>"+title+"</title></head><body style='font-size:85%'>");
|
1211 |
+
w.document.write("<table><tr><td><pre>"+text+"</pre></td></tr></table>");
|
1212 |
+
w.document.write("</body></html>");
|
1213 |
+
w.document.close();
|
1214 |
+
var table = w.document.body.firstChild;
|
1215 |
+
setTimeout(function () {
|
1216 |
+
var H = (w.outerHeight-w.innerHeight)||30, W = (w.outerWidth-w.innerWidth)||30, x, y;
|
1217 |
+
W = Math.max(140,Math.min(Math.floor(.5*screen.width),table.offsetWidth+W+25));
|
1218 |
+
H = Math.max(40,Math.min(Math.floor(.5*screen.height),table.offsetHeight+H+25));
|
1219 |
+
if (MENU.prototype.msieHeightBug) {H += 35}; // for title bar in XP
|
1220 |
+
w.resizeTo(W,H);
|
1221 |
+
var X; try {X = event.screenX} catch (e) {}; // IE8 throws an error accessing screenX
|
1222 |
+
if (event && X != null) {
|
1223 |
+
x = Math.max(0,Math.min(event.screenX-Math.floor(W/2), screen.width-W-20));
|
1224 |
+
y = Math.max(0,Math.min(event.screenY-Math.floor(H/2), screen.height-H-20));
|
1225 |
+
w.moveTo(x,y);
|
1226 |
+
}
|
1227 |
+
},50);
|
1228 |
+
}
|
1229 |
+
};
|
1230 |
+
|
1231 |
+
/*
|
1232 |
+
* Handle rescaling all the math
|
1233 |
+
*/
|
1234 |
+
MENU.Scale = function () {
|
1235 |
+
var JAX = ["CommonHTML","HTML-CSS","SVG","NativeMML","PreviewHTML"], m = JAX.length,
|
1236 |
+
SCALE = 100, i, jax;
|
1237 |
+
for (i = 0; i < m; i++) {
|
1238 |
+
jax = OUTPUT[JAX[i]];
|
1239 |
+
if (jax) {SCALE = jax.config.scale; break}
|
1240 |
+
}
|
1241 |
+
var scale = prompt(_("ScaleMath","Scale all mathematics (compared to surrounding text) by"),SCALE+"%");
|
1242 |
+
if (scale) {
|
1243 |
+
if (scale.match(/^\s*\d+(\.\d*)?\s*%?\s*$/)) {
|
1244 |
+
scale = parseFloat(scale);
|
1245 |
+
if (scale) {
|
1246 |
+
if (scale !== SCALE) {
|
1247 |
+
for (i = 0; i < m; i++) {
|
1248 |
+
jax = OUTPUT[JAX[i]];
|
1249 |
+
if (jax) jax.config.scale = scale;
|
1250 |
+
}
|
1251 |
+
MENU.cookie.scale = HUB.config.scale = scale;
|
1252 |
+
MENU.saveCookie();
|
1253 |
+
HUB.Queue(["Rerender",HUB]);
|
1254 |
+
}
|
1255 |
+
} else {alert(_("NonZeroScale","The scale should not be zero"))}
|
1256 |
+
} else {alert(_("PercentScale",
|
1257 |
+
"The scale should be a percentage (e.g., 120%%)"))}
|
1258 |
+
}
|
1259 |
+
};
|
1260 |
+
|
1261 |
+
/*
|
1262 |
+
* Handle loading the zoom code
|
1263 |
+
*/
|
1264 |
+
MENU.Zoom = function () {
|
1265 |
+
if (!MathJax.Extension.MathZoom) {AJAX.Require("[MathJax]/extensions/MathZoom.js")}
|
1266 |
+
};
|
1267 |
+
|
1268 |
+
/*
|
1269 |
+
* Handle changing the renderer
|
1270 |
+
*/
|
1271 |
+
MENU.Renderer = function () {
|
1272 |
+
var jax = HUB.outputJax["jax/mml"];
|
1273 |
+
if (jax[0] !== CONFIG.settings.renderer) {
|
1274 |
+
var BROWSER = HUB.Browser, message, MESSAGE = MENU.Renderer.Messages, warned;
|
1275 |
+
//
|
1276 |
+
// Check that the new renderer is appropriate for the browser
|
1277 |
+
//
|
1278 |
+
switch (CONFIG.settings.renderer) {
|
1279 |
+
case "NativeMML":
|
1280 |
+
if (!CONFIG.settings.warnedMML) {
|
1281 |
+
if (BROWSER.isChrome && BROWSER.version.substr(0,3) !== "24.") {message = MESSAGE.MML.WebKit}
|
1282 |
+
else if (BROWSER.isSafari && !BROWSER.versionAtLeast("5.0")) {message = MESSAGE.MML.WebKit}
|
1283 |
+
else if (BROWSER.isMSIE) {if (!BROWSER.hasMathPlayer) {message = MESSAGE.MML.MSIE}}
|
1284 |
+
else if (BROWSER.isEdge) {message = MESSAGE.MML.WebKit}
|
1285 |
+
else {message = MESSAGE.MML[BROWSER]}
|
1286 |
+
warned = "warnedMML";
|
1287 |
+
}
|
1288 |
+
break;
|
1289 |
+
|
1290 |
+
case "SVG":
|
1291 |
+
if (!CONFIG.settings.warnedSVG) {
|
1292 |
+
if (BROWSER.isMSIE && !isIE9) {message = MESSAGE.SVG.MSIE}
|
1293 |
+
}
|
1294 |
+
break;
|
1295 |
+
}
|
1296 |
+
if (message) {
|
1297 |
+
message = _(message[0],message[1]);
|
1298 |
+
message += "\n\n";
|
1299 |
+
message += _("SwitchAnyway",
|
1300 |
+
"Switch the renderer anyway?\n\n" +
|
1301 |
+
"(Press OK to switch, CANCEL to continue with the current renderer)");
|
1302 |
+
MENU.cookie.renderer = jax[0].id; MENU.saveCookie();
|
1303 |
+
if (!confirm(message)) {
|
1304 |
+
MENU.cookie.renderer = CONFIG.settings.renderer = HTML.Cookie.Get("menu").renderer;
|
1305 |
+
MENU.saveCookie();
|
1306 |
+
return;
|
1307 |
+
}
|
1308 |
+
if (warned) {MENU.cookie.warned = CONFIG.settings.warned = true}
|
1309 |
+
MENU.cookie.renderer = CONFIG.settings.renderer; MENU.saveCookie();
|
1310 |
+
}
|
1311 |
+
HUB.Queue(
|
1312 |
+
["setRenderer",HUB,CONFIG.settings.renderer,"jax/mml"],
|
1313 |
+
["Rerender",HUB]
|
1314 |
+
);
|
1315 |
+
}
|
1316 |
+
};
|
1317 |
+
MENU.Renderer.Messages = {
|
1318 |
+
MML: {
|
1319 |
+
WebKit: ["WebkitNativeMMLWarning",
|
1320 |
+
"Your browser doesn't seem to support MathML natively, " +
|
1321 |
+
"so switching to MathML output may cause the mathematics " +
|
1322 |
+
"on the page to become unreadable."],
|
1323 |
+
|
1324 |
+
MSIE: ["MSIENativeMMLWarning",
|
1325 |
+
"Internet Explorer requires the MathPlayer plugin " +
|
1326 |
+
"in order to process MathML output."],
|
1327 |
+
|
1328 |
+
Opera: ["OperaNativeMMLWarning",
|
1329 |
+
"Opera's support for MathML is limited, so switching to " +
|
1330 |
+
"MathML output may cause some expressions to render poorly."],
|
1331 |
+
|
1332 |
+
Safari: ["SafariNativeMMLWarning",
|
1333 |
+
"Your browser's native MathML does not implement all the features " +
|
1334 |
+
"used by MathJax, so some expressions may not render properly."],
|
1335 |
+
|
1336 |
+
Firefox: ["FirefoxNativeMMLWarning",
|
1337 |
+
"Your browser's native MathML does not implement all the features " +
|
1338 |
+
"used by MathJax, so some expressions may not render properly."]
|
1339 |
+
},
|
1340 |
+
|
1341 |
+
SVG: {
|
1342 |
+
MSIE: ["MSIESVGWarning",
|
1343 |
+
"SVG is not implemented in Internet Explorer prior to " +
|
1344 |
+
"IE9 or when it is emulating IE8 or below. " +
|
1345 |
+
"Switching to SVG output will cause the mathematics to " +
|
1346 |
+
"not display properly."]
|
1347 |
+
}
|
1348 |
+
};
|
1349 |
+
|
1350 |
+
/*
|
1351 |
+
* Toggle assistive MML settings
|
1352 |
+
*/
|
1353 |
+
MENU.AssistiveMML = function (item,restart) {
|
1354 |
+
var AMML = MathJax.Extension.AssistiveMML;
|
1355 |
+
if (!AMML) {
|
1356 |
+
// Try to load the extension, but only try once.
|
1357 |
+
if (!restart)
|
1358 |
+
AJAX.Require("[MathJax]/extensions/AssistiveMML.js",["AssistiveMML",MENU,item,true]);
|
1359 |
+
return;
|
1360 |
+
}
|
1361 |
+
MathJax.Hub.Queue([(CONFIG.settings.assistiveMML ? "Add" : "Remove")+"AssistiveMathML",AMML]);
|
1362 |
+
};
|
1363 |
+
|
1364 |
+
/*
|
1365 |
+
* Handle setting the HTMLCSS fonts
|
1366 |
+
*/
|
1367 |
+
MENU.Font = function () {
|
1368 |
+
var HTMLCSS = OUTPUT["HTML-CSS"]; if (!HTMLCSS) return;
|
1369 |
+
document.location.reload();
|
1370 |
+
};
|
1371 |
+
|
1372 |
+
/*
|
1373 |
+
* Handle selection of locale and rerender the page
|
1374 |
+
*/
|
1375 |
+
MENU.Locale = function () {
|
1376 |
+
MathJax.Localization.setLocale(CONFIG.settings.locale);
|
1377 |
+
MathJax.Hub.Queue(["Reprocess",MathJax.Hub]); // FIXME: Just reprocess error messages?
|
1378 |
+
};
|
1379 |
+
MENU.LoadLocale = function () {
|
1380 |
+
var url = prompt(_("LoadURL","Load translation data from this URL:"));
|
1381 |
+
if (url) {
|
1382 |
+
if (!url.match(/\.js$/)) {
|
1383 |
+
alert(_("BadURL",
|
1384 |
+
"The URL should be for a javascript file that defines MathJax translation data. " +
|
1385 |
+
"Javascript file names should end with '.js'"
|
1386 |
+
));
|
1387 |
+
}
|
1388 |
+
AJAX.Require(url,function (status) {
|
1389 |
+
if (status != AJAX.STATUS.OK) {alert(_("BadData","Failed to load translation data from %1",url))}
|
1390 |
+
});
|
1391 |
+
}
|
1392 |
+
};
|
1393 |
+
|
1394 |
+
/*
|
1395 |
+
* Handle setting MathPlayer events
|
1396 |
+
*/
|
1397 |
+
MENU.MPEvents = function (item) {
|
1398 |
+
var discoverable = CONFIG.settings.discoverable,
|
1399 |
+
MESSAGE = MENU.MPEvents.Messages;
|
1400 |
+
if (!isIE9) {
|
1401 |
+
if (CONFIG.settings.mpMouse && !confirm(_.apply(_,MESSAGE.IE8warning))) {
|
1402 |
+
delete MENU.cookie.mpContext; delete CONFIG.settings.mpContext;
|
1403 |
+
delete MENU.cookie.mpMouse; delete CONFIG.settings.mpMouse;
|
1404 |
+
MENU.saveCookie();
|
1405 |
+
return;
|
1406 |
+
}
|
1407 |
+
CONFIG.settings.mpContext = CONFIG.settings.mpMouse;
|
1408 |
+
MENU.cookie.mpContext = MENU.cookie.mpMouse = CONFIG.settings.mpMouse;
|
1409 |
+
MENU.saveCookie();
|
1410 |
+
MathJax.Hub.Queue(["Rerender",MathJax.Hub])
|
1411 |
+
} else if (!discoverable && item.name[1] === "Menu Events" && CONFIG.settings.mpContext) {
|
1412 |
+
alert(_.apply(_,MESSAGE.IE9warning));
|
1413 |
+
}
|
1414 |
+
};
|
1415 |
+
|
1416 |
+
MENU.MPEvents.Messages = {
|
1417 |
+
IE8warning: ["IE8warning",
|
1418 |
+
"This will disable the MathJax menu and zoom features, " +
|
1419 |
+
"but you can Alt-Click on an expression to obtain the MathJax " +
|
1420 |
+
"menu instead.\n\nReally change the MathPlayer settings?"],
|
1421 |
+
|
1422 |
+
IE9warning: ["IE9warning",
|
1423 |
+
"The MathJax contextual menu will be disabled, but you can " +
|
1424 |
+
"Alt-Click on an expression to obtain the MathJax menu instead."]
|
1425 |
+
};
|
1426 |
+
|
1427 |
+
/*************************************************************/
|
1428 |
+
/*************************************************************/
|
1429 |
+
|
1430 |
+
HUB.Browser.Select({
|
1431 |
+
MSIE: function (browser) {
|
1432 |
+
var quirks = (document.compatMode === "BackCompat");
|
1433 |
+
var isIE8 = browser.versionAtLeast("8.0") && document.documentMode > 7;
|
1434 |
+
MENU.Augment({
|
1435 |
+
margin: 20,
|
1436 |
+
msieBackgroundBug: ((document.documentMode||0) < 9),
|
1437 |
+
msieFixedPositionBug: (quirks || !isIE8),
|
1438 |
+
msieAboutBug: quirks,
|
1439 |
+
msieHeightBug: ((document.documentMode||0) < 9)
|
1440 |
+
// height of window doesn't include title bar in XP
|
1441 |
+
});
|
1442 |
+
if (isIE9) {
|
1443 |
+
delete CONFIG.styles["#MathJax_About"].filter;
|
1444 |
+
delete CONFIG.styles[".MathJax_Menu"].filter;
|
1445 |
+
}
|
1446 |
+
},
|
1447 |
+
Firefox: function (browser) {
|
1448 |
+
MENU.skipMouseover = browser.isMobile && browser.versionAtLeast("6.0");
|
1449 |
+
MENU.skipMousedown = browser.isMobile;
|
1450 |
+
}
|
1451 |
+
});
|
1452 |
+
MENU.isMobile = HUB.Browser.isMobile;
|
1453 |
+
MENU.noContextMenu = HUB.Browser.noContextMenu;
|
1454 |
+
|
1455 |
+
/*************************************************************/
|
1456 |
+
|
1457 |
+
//
|
1458 |
+
// Creates the locale menu from the list of locales in MathJax.Localization.strings
|
1459 |
+
//
|
1460 |
+
MENU.CreateLocaleMenu = function () {
|
1461 |
+
if (!MENU.menu) return;
|
1462 |
+
var menu = MENU.menu.Find("Language").submenu, items = menu.items;
|
1463 |
+
//
|
1464 |
+
// Get the names of the languages and sort them
|
1465 |
+
//
|
1466 |
+
var locales = [], LOCALE = MathJax.Localization.strings;
|
1467 |
+
for (var id in LOCALE) {if (LOCALE.hasOwnProperty(id)) {locales.push(id)}}
|
1468 |
+
locales = locales.sort(); menu.items = [];
|
1469 |
+
//
|
1470 |
+
// Add a menu item for each
|
1471 |
+
//
|
1472 |
+
for (var i = 0, m = locales.length; i < m; i++) {
|
1473 |
+
var title = LOCALE[locales[i]].menuTitle;
|
1474 |
+
if (title) {title += " ("+locales[i]+")"} else {title = locales[i]}
|
1475 |
+
menu.items.push(ITEM.RADIO([locales[i],title],"locale",{action:MENU.Locale}));
|
1476 |
+
}
|
1477 |
+
//
|
1478 |
+
// Add the rule and "Load from URL" items
|
1479 |
+
//
|
1480 |
+
menu.items.push(items[items.length-2],items[items.length-1]);
|
1481 |
+
};
|
1482 |
+
|
1483 |
+
//
|
1484 |
+
// Create the annotation menu from MathJax.Hub.config.semanticsAnnotations
|
1485 |
+
//
|
1486 |
+
MENU.CreateAnnotationMenu = function () {
|
1487 |
+
if (!MENU.menu) return;
|
1488 |
+
var menu = MENU.menu.Find("Show Math As","Annotation").submenu;
|
1489 |
+
var annotations = CONFIG.semanticsAnnotations;
|
1490 |
+
for (var a in annotations) {
|
1491 |
+
if (annotations.hasOwnProperty(a)) {
|
1492 |
+
menu.items.push(ITEM.COMMAND([a,a], MENU.ShowSource, {hidden: true, nativeTouch: true, format: a}));
|
1493 |
+
}
|
1494 |
+
}
|
1495 |
+
};
|
1496 |
+
|
1497 |
+
/*************************************************************/
|
1498 |
+
|
1499 |
+
HUB.Register.StartupHook("End Config",function () {
|
1500 |
+
|
1501 |
+
/*
|
1502 |
+
* Get the menu settings from the HUB (which includes the
|
1503 |
+
* data from the cookie already), and add the format, if
|
1504 |
+
* it wasn't set in the cookie.
|
1505 |
+
*/
|
1506 |
+
CONFIG.settings = HUB.config.menuSettings;
|
1507 |
+
if (typeof(CONFIG.settings.showRenderer) !== "undefined") {CONFIG.showRenderer = CONFIG.settings.showRenderer}
|
1508 |
+
if (typeof(CONFIG.settings.showFontMenu) !== "undefined") {CONFIG.showFontMenu = CONFIG.settings.showFontMenu}
|
1509 |
+
if (typeof(CONFIG.settings.showContext) !== "undefined") {CONFIG.showContext = CONFIG.settings.showContext}
|
1510 |
+
MENU.getCookie();
|
1511 |
+
|
1512 |
+
/*
|
1513 |
+
* The main menu
|
1514 |
+
*/
|
1515 |
+
// Localization: items used as key, should be refactored.
|
1516 |
+
MENU.menu = MENU(
|
1517 |
+
ITEM.SUBMENU(["Show","Show Math As"],
|
1518 |
+
ITEM.COMMAND(["MathMLcode","MathML Code"], MENU.ShowSource, {nativeTouch: true, format: "MathML"}),
|
1519 |
+
ITEM.COMMAND(["Original","Original Form"], MENU.ShowSource, {nativeTouch: true}),
|
1520 |
+
ITEM.SUBMENU(["Annotation","Annotation"], {disabled:true}),
|
1521 |
+
ITEM.RULE(),
|
1522 |
+
ITEM.CHECKBOX(["texHints","Show TeX hints in MathML"], "texHints"),
|
1523 |
+
ITEM.CHECKBOX(["semantics","Add original form as annotation"], "semantics")
|
1524 |
+
),
|
1525 |
+
ITEM.RULE(),
|
1526 |
+
ITEM.SUBMENU(["Settings","Math Settings"],
|
1527 |
+
ITEM.SUBMENU(["ZoomTrigger","Zoom Trigger"],
|
1528 |
+
ITEM.RADIO(["Hover","Hover"], "zoom", {action: MENU.Zoom}),
|
1529 |
+
ITEM.RADIO(["Click","Click"], "zoom", {action: MENU.Zoom}),
|
1530 |
+
ITEM.RADIO(["DoubleClick","Double-Click"], "zoom", {action: MENU.Zoom}),
|
1531 |
+
ITEM.RADIO(["NoZoom","No Zoom"], "zoom", {value: "None"}),
|
1532 |
+
ITEM.RULE(),
|
1533 |
+
ITEM.LABEL(["TriggerRequires","Trigger Requires:"]),
|
1534 |
+
ITEM.CHECKBOX((HUB.Browser.isMac ? ["Option","Option"] : ["Alt","Alt"]), "ALT"),
|
1535 |
+
ITEM.CHECKBOX(["Command","Command"], "CMD", {hidden: !HUB.Browser.isMac}),
|
1536 |
+
ITEM.CHECKBOX(["Control","Control"], "CTRL", {hidden: HUB.Browser.isMac}),
|
1537 |
+
ITEM.CHECKBOX(["Shift","Shift"], "Shift")
|
1538 |
+
),
|
1539 |
+
ITEM.SUBMENU(["ZoomFactor","Zoom Factor"],
|
1540 |
+
ITEM.RADIO("125%", "zscale"),
|
1541 |
+
ITEM.RADIO("133%", "zscale"),
|
1542 |
+
ITEM.RADIO("150%", "zscale"),
|
1543 |
+
ITEM.RADIO("175%", "zscale"),
|
1544 |
+
ITEM.RADIO("200%", "zscale"),
|
1545 |
+
ITEM.RADIO("250%", "zscale"),
|
1546 |
+
ITEM.RADIO("300%", "zscale"),
|
1547 |
+
ITEM.RADIO("400%", "zscale")
|
1548 |
+
),
|
1549 |
+
ITEM.RULE(),
|
1550 |
+
ITEM.SUBMENU(["Renderer","Math Renderer"], {hidden:!CONFIG.showRenderer},
|
1551 |
+
ITEM.RADIO(["HTML-CSS","HTML-CSS"], "renderer", {action: MENU.Renderer}),
|
1552 |
+
ITEM.RADIO(["CommonHTML","Common HTML"], "renderer", {action: MENU.Renderer, value:"CommonHTML"}),
|
1553 |
+
ITEM.RADIO(["PreviewHTML","Preview HTML"],"renderer", {action: MENU.Renderer, value:"PreviewHTML"}),
|
1554 |
+
ITEM.RADIO(["MathML","MathML"], "renderer", {action: MENU.Renderer, value:"NativeMML"}),
|
1555 |
+
ITEM.RADIO(["SVG","SVG"], "renderer", {action: MENU.Renderer}),
|
1556 |
+
ITEM.RADIO(["PlainSource","Plain Source"],"renderer", {action: MENU.Renderer, value:"PlainSource"}),
|
1557 |
+
ITEM.RULE(),
|
1558 |
+
ITEM.CHECKBOX(["FastPreview","Fast Preview"], "FastPreview")
|
1559 |
+
),
|
1560 |
+
ITEM.SUBMENU("MathPlayer", {hidden:!HUB.Browser.isMSIE || !CONFIG.showMathPlayer,
|
1561 |
+
disabled:!HUB.Browser.hasMathPlayer},
|
1562 |
+
ITEM.LABEL(["MPHandles","Let MathPlayer Handle:"]),
|
1563 |
+
ITEM.CHECKBOX(["MenuEvents","Menu Events"], "mpContext", {action: MENU.MPEvents, hidden:!isIE9}),
|
1564 |
+
ITEM.CHECKBOX(["MouseEvents","Mouse Events"], "mpMouse", {action: MENU.MPEvents, hidden:!isIE9}),
|
1565 |
+
ITEM.CHECKBOX(["MenuAndMouse","Mouse and Menu Events"], "mpMouse", {action: MENU.MPEvents, hidden:isIE9})
|
1566 |
+
),
|
1567 |
+
ITEM.SUBMENU(["FontPrefs","Font Preference"], {hidden:!CONFIG.showFontMenu},
|
1568 |
+
ITEM.LABEL(["ForHTMLCSS","For HTML-CSS:"]),
|
1569 |
+
ITEM.RADIO(["Auto","Auto"], "font", {action: MENU.Font}),
|
1570 |
+
ITEM.RULE(),
|
1571 |
+
ITEM.RADIO(["TeXLocal","TeX (local)"], "font", {action: MENU.Font}),
|
1572 |
+
ITEM.RADIO(["TeXWeb","TeX (web)"], "font", {action: MENU.Font}),
|
1573 |
+
ITEM.RADIO(["TeXImage","TeX (image)"], "font", {action: MENU.Font}),
|
1574 |
+
ITEM.RULE(),
|
1575 |
+
ITEM.RADIO(["STIXLocal","STIX (local)"], "font", {action: MENU.Font}),
|
1576 |
+
ITEM.RADIO(["STIXWeb","STIX (web)"], "font", {action: MENU.Font}),
|
1577 |
+
ITEM.RULE(),
|
1578 |
+
ITEM.RADIO(["AsanaMathWeb","Asana Math (web)"], "font", {action: MENU.Font}),
|
1579 |
+
ITEM.RADIO(["GyrePagellaWeb","Gyre Pagella (web)"], "font", {action: MENU.Font}),
|
1580 |
+
ITEM.RADIO(["GyreTermesWeb","Gyre Termes (web)"], "font", {action: MENU.Font}),
|
1581 |
+
ITEM.RADIO(["LatinModernWeb","Latin Modern (web)"], "font", {action: MENU.Font}),
|
1582 |
+
ITEM.RADIO(["NeoEulerWeb","Neo Euler (web)"], "font", {action: MENU.Font})
|
1583 |
+
),
|
1584 |
+
ITEM.SUBMENU(["ContextMenu","Contextual Menu"], {hidden:!CONFIG.showContext},
|
1585 |
+
ITEM.RADIO(["MathJax","MathJax"], "context"),
|
1586 |
+
ITEM.RADIO(["Browser","Browser"], "context")
|
1587 |
+
),
|
1588 |
+
ITEM.COMMAND(["Scale","Scale All Math ..."],MENU.Scale),
|
1589 |
+
ITEM.RULE().With({hidden:!CONFIG.showDiscoverable, name:["","discover_rule"]}),
|
1590 |
+
ITEM.CHECKBOX(["Discoverable","Highlight on Hover"], "discoverable", {hidden:!CONFIG.showDiscoverable})
|
1591 |
+
),
|
1592 |
+
ITEM.SUBMENU(["Accessibility","Accessibility"],
|
1593 |
+
ITEM.CHECKBOX(["AssistiveMML","Assistive MathML"], "assistiveMML", {action:MENU.AssistiveMML}),
|
1594 |
+
ITEM.CHECKBOX(["InTabOrder","Include in Tab Order"], "inTabOrder")
|
1595 |
+
),
|
1596 |
+
ITEM.SUBMENU(["Locale","Language"], {hidden:!CONFIG.showLocale, ltr:true},
|
1597 |
+
ITEM.RADIO("en", "locale", {action: MENU.Locale}),
|
1598 |
+
ITEM.RULE().With({hidden:!CONFIG.showLocaleURL, name:["","localURL_rule"]}),
|
1599 |
+
ITEM.COMMAND(["LoadLocale","Load from URL ..."], MENU.LoadLocale, {hidden:!CONFIG.showLocaleURL})
|
1600 |
+
),
|
1601 |
+
ITEM.RULE(),
|
1602 |
+
ITEM.COMMAND(["About","About MathJax"],MENU.About),
|
1603 |
+
ITEM.COMMAND(["Help","MathJax Help"],MENU.Help)
|
1604 |
+
);
|
1605 |
+
|
1606 |
+
if (MENU.isMobile) {
|
1607 |
+
(function () {
|
1608 |
+
var settings = CONFIG.settings;
|
1609 |
+
var trigger = MENU.menu.Find("Math Settings","Zoom Trigger").submenu;
|
1610 |
+
trigger.items[0].disabled = trigger.items[1].disabled = true;
|
1611 |
+
if (settings.zoom === "Hover" || settings.zoom == "Click") {settings.zoom = "None"}
|
1612 |
+
trigger.items = trigger.items.slice(0,4);
|
1613 |
+
|
1614 |
+
if (navigator.appVersion.match(/[ (]Android[) ]/)) {
|
1615 |
+
MENU.ITEM.SUBMENU.Augment({marker: "\u00BB"});
|
1616 |
+
}
|
1617 |
+
})();
|
1618 |
+
}
|
1619 |
+
|
1620 |
+
MENU.CreateLocaleMenu();
|
1621 |
+
MENU.CreateAnnotationMenu();
|
1622 |
+
});
|
1623 |
+
|
1624 |
+
MENU.showRenderer = function (show) {
|
1625 |
+
MENU.cookie.showRenderer = CONFIG.showRenderer = show; MENU.saveCookie();
|
1626 |
+
MENU.menu.Find("Math Settings","Math Renderer").hidden = !show;
|
1627 |
+
};
|
1628 |
+
MENU.showMathPlayer = function (show) {
|
1629 |
+
MENU.cookie.showMathPlayer = CONFIG.showMathPlayer = show; MENU.saveCookie();
|
1630 |
+
MENU.menu.Find("Math Settings","MathPlayer").hidden = !show;
|
1631 |
+
};
|
1632 |
+
MENU.showFontMenu = function (show) {
|
1633 |
+
MENU.cookie.showFontMenu = CONFIG.showFontMenu = show; MENU.saveCookie();
|
1634 |
+
MENU.menu.Find("Math Settings","Font Preference").hidden = !show;
|
1635 |
+
};
|
1636 |
+
MENU.showContext = function (show) {
|
1637 |
+
MENU.cookie.showContext = CONFIG.showContext = show; MENU.saveCookie();
|
1638 |
+
MENU.menu.Find("Math Settings","Contextual Menu").hidden = !show;
|
1639 |
+
};
|
1640 |
+
MENU.showDiscoverable = function (show) {
|
1641 |
+
MENU.cookie.showDiscoverable = CONFIG.showDiscoverable = show; MENU.saveCookie();
|
1642 |
+
MENU.menu.Find("Math Settings","Highlight on Hover").hidden = !show;
|
1643 |
+
MENU.menu.Find("Math Settings","discover_rule").hidden = !show;
|
1644 |
+
};
|
1645 |
+
MENU.showLocale = function (show) {
|
1646 |
+
MENU.cookie.showLocale = CONFIG.showLocale = show; MENU.saveCookie();
|
1647 |
+
MENU.menu.Find("Language").hidden = !show;
|
1648 |
+
};
|
1649 |
+
|
1650 |
+
MathJax.Hub.Register.StartupHook("HTML-CSS Jax Ready",function () {
|
1651 |
+
if (!MathJax.OutputJax["HTML-CSS"].config.imageFont)
|
1652 |
+
{MENU.menu.Find("Math Settings","Font Preference","TeX (image)").disabled = true}
|
1653 |
+
});
|
1654 |
+
|
1655 |
+
/*************************************************************/
|
1656 |
+
|
1657 |
+
CALLBACK.Queue(
|
1658 |
+
HUB.Register.StartupHook("End Config",{}), // wait until config is complete
|
1659 |
+
["Styles",AJAX,CONFIG.styles],
|
1660 |
+
["Post",HUB.Startup.signal,"MathMenu Ready"],
|
1661 |
+
["loadComplete",AJAX,"[MathJax]/extensions/MathMenu.js"]
|
1662 |
+
);
|
1663 |
+
|
1664 |
+
})(MathJax.Hub,MathJax.HTML,MathJax.Ajax,MathJax.CallBack,MathJax.OutputJax);
|
vendor/MathJax/extensions/MathZoom.js
ADDED
@@ -0,0 +1,366 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax/extensions/MathZoom.js
|
7 |
+
*
|
8 |
+
* Implements the zoom feature for enlarging math expressions. It is
|
9 |
+
* loaded automatically when the Zoom menu selection changes from "None".
|
10 |
+
*
|
11 |
+
* ---------------------------------------------------------------------
|
12 |
+
*
|
13 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
14 |
+
*
|
15 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
16 |
+
* you may not use this file except in compliance with the License.
|
17 |
+
* You may obtain a copy of the License at
|
18 |
+
*
|
19 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
20 |
+
*
|
21 |
+
* Unless required by applicable law or agreed to in writing, software
|
22 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
23 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
24 |
+
* See the License for the specific language governing permissions and
|
25 |
+
* limitations under the License.
|
26 |
+
*/
|
27 |
+
|
28 |
+
(function (HUB,HTML,AJAX,HTMLCSS,nMML) {
|
29 |
+
var VERSION = "2.7.5";
|
30 |
+
|
31 |
+
var CONFIG = HUB.CombineConfig("MathZoom",{
|
32 |
+
styles: {
|
33 |
+
//
|
34 |
+
// The styles for the MathZoom display box
|
35 |
+
//
|
36 |
+
"#MathJax_Zoom": {
|
37 |
+
position:"absolute", "background-color":"#F0F0F0", overflow:"auto",
|
38 |
+
display:"block", "z-index":301, padding:".5em", border:"1px solid black", margin:0,
|
39 |
+
"font-weight":"normal", "font-style":"normal",
|
40 |
+
"text-align":"left", "text-indent":0, "text-transform":"none",
|
41 |
+
"line-height":"normal", "letter-spacing":"normal", "word-spacing":"normal",
|
42 |
+
"word-wrap":"normal", "white-space":"nowrap", "float":"none",
|
43 |
+
"-webkit-box-sizing":"content-box", // Android ≤ 2.3, iOS ≤ 4
|
44 |
+
"-moz-box-sizing":"content-box", // Firefox ≤ 28
|
45 |
+
"box-sizing":"content-box", // Chrome, Firefox 29+, IE 8+, Opera, Safari 5.1
|
46 |
+
"box-shadow":"5px 5px 15px #AAAAAA", // Opera 10.5 and IE9
|
47 |
+
"-webkit-box-shadow":"5px 5px 15px #AAAAAA", // Safari 3 and Chrome
|
48 |
+
"-moz-box-shadow":"5px 5px 15px #AAAAAA", // Forefox 3.5
|
49 |
+
"-khtml-box-shadow":"5px 5px 15px #AAAAAA", // Konqueror
|
50 |
+
filter: "progid:DXImageTransform.Microsoft.dropshadow(OffX=2, OffY=2, Color='gray', Positive='true')" // IE
|
51 |
+
},
|
52 |
+
|
53 |
+
//
|
54 |
+
// The styles for the hidden overlay (should not need to be adjusted by the page author)
|
55 |
+
//
|
56 |
+
"#MathJax_ZoomOverlay": {
|
57 |
+
position:"absolute", left:0, top:0, "z-index":300, display:"inline-block",
|
58 |
+
width:"100%", height:"100%", border:0, padding:0, margin:0,
|
59 |
+
"background-color":"white", opacity:0, filter:"alpha(opacity=0)"
|
60 |
+
},
|
61 |
+
|
62 |
+
"#MathJax_ZoomFrame": {
|
63 |
+
position:"relative", display:"inline-block",
|
64 |
+
height:0, width:0
|
65 |
+
},
|
66 |
+
|
67 |
+
"#MathJax_ZoomEventTrap": {
|
68 |
+
position:"absolute", left:0, top:0, "z-index":302,
|
69 |
+
display:"inline-block", border:0, padding:0, margin:0,
|
70 |
+
"background-color":"white", opacity:0, filter:"alpha(opacity=0)"
|
71 |
+
}
|
72 |
+
}
|
73 |
+
});
|
74 |
+
|
75 |
+
var FALSE, HOVER, EVENT;
|
76 |
+
MathJax.Hub.Register.StartupHook("MathEvents Ready",function () {
|
77 |
+
EVENT = MathJax.Extension.MathEvents.Event;
|
78 |
+
FALSE = MathJax.Extension.MathEvents.Event.False;
|
79 |
+
HOVER = MathJax.Extension.MathEvents.Hover;
|
80 |
+
});
|
81 |
+
|
82 |
+
/*************************************************************/
|
83 |
+
|
84 |
+
var ZOOM = MathJax.Extension.MathZoom = {
|
85 |
+
version: VERSION,
|
86 |
+
settings: HUB.config.menuSettings,
|
87 |
+
scrollSize: 18, // width of scrool bars
|
88 |
+
|
89 |
+
//
|
90 |
+
// Process events passed from output jax
|
91 |
+
//
|
92 |
+
HandleEvent: function (event,type,math) {
|
93 |
+
if (ZOOM.settings.CTRL && !event.ctrlKey) return true;
|
94 |
+
if (ZOOM.settings.ALT && !event.altKey) return true;
|
95 |
+
if (ZOOM.settings.CMD && !event.metaKey) return true;
|
96 |
+
if (ZOOM.settings.Shift && !event.shiftKey) return true;
|
97 |
+
if (!ZOOM[type]) return true;
|
98 |
+
return ZOOM[type](event,math);
|
99 |
+
},
|
100 |
+
|
101 |
+
//
|
102 |
+
// Zoom on click
|
103 |
+
//
|
104 |
+
Click: function (event,math) {
|
105 |
+
if (this.settings.zoom === "Click") {return this.Zoom(event,math)}
|
106 |
+
},
|
107 |
+
|
108 |
+
//
|
109 |
+
// Zoom on double click
|
110 |
+
//
|
111 |
+
DblClick: function (event,math) {
|
112 |
+
if (this.settings.zoom === "Double-Click" || this.settings.zoom === "DoubleClick") {return this.Zoom(event,math)}
|
113 |
+
},
|
114 |
+
|
115 |
+
//
|
116 |
+
// Zoom on hover (called by MathEvents.Hover)
|
117 |
+
//
|
118 |
+
Hover: function (event,math) {
|
119 |
+
if (this.settings.zoom === "Hover") {this.Zoom(event,math); return true}
|
120 |
+
return false;
|
121 |
+
},
|
122 |
+
|
123 |
+
|
124 |
+
//
|
125 |
+
// Handle the actual zooming
|
126 |
+
//
|
127 |
+
Zoom: function (event,math) {
|
128 |
+
//
|
129 |
+
// Remove any other zoom and clear timers
|
130 |
+
//
|
131 |
+
this.Remove(); HOVER.ClearHoverTimer(); EVENT.ClearSelection();
|
132 |
+
|
133 |
+
//
|
134 |
+
// Find the jax
|
135 |
+
//
|
136 |
+
var JAX = MathJax.OutputJax[math.jaxID];
|
137 |
+
var jax = JAX.getJaxFromMath(math);
|
138 |
+
if (jax.hover) {HOVER.UnHover(jax)}
|
139 |
+
|
140 |
+
//
|
141 |
+
// Create the DOM elements for the zoom box
|
142 |
+
//
|
143 |
+
var container = this.findContainer(math);
|
144 |
+
var Mw = Math.floor(.85*container.clientWidth),
|
145 |
+
Mh = Math.max(document.body.clientHeight,document.documentElement.clientHeight);
|
146 |
+
if (this.getOverflow(container) !== "visible") {Mh = Math.min(container.clientHeight,Mh)}
|
147 |
+
Mh = Math.floor(.85*Mh);
|
148 |
+
var div = HTML.Element(
|
149 |
+
"span",{id:"MathJax_ZoomFrame"},[
|
150 |
+
["span",{id:"MathJax_ZoomOverlay", onmousedown:this.Remove}],
|
151 |
+
["span",{
|
152 |
+
id:"MathJax_Zoom", onclick:this.Remove,
|
153 |
+
style:{visibility:"hidden", fontSize:this.settings.zscale}
|
154 |
+
},[["span",{style:{display:"inline-block", "white-space":"nowrap"}}]]
|
155 |
+
]]
|
156 |
+
);
|
157 |
+
var zoom = div.lastChild, span = zoom.firstChild, overlay = div.firstChild;
|
158 |
+
math.parentNode.insertBefore(div,math); math.parentNode.insertBefore(math,div); // put div after math
|
159 |
+
if (span.addEventListener) {span.addEventListener("mousedown",this.Remove,true)}
|
160 |
+
var eW = zoom.offsetWidth || zoom.clientWidth; Mw -= eW; Mh -= eW;
|
161 |
+
zoom.style.maxWidth = Mw+"px"; zoom.style.maxHeight = Mh+"px";
|
162 |
+
|
163 |
+
if (this.msieTrapEventBug) {
|
164 |
+
var trap = HTML.Element("span",{id:"MathJax_ZoomEventTrap", onmousedown:this.Remove});
|
165 |
+
div.insertBefore(trap,zoom);
|
166 |
+
}
|
167 |
+
|
168 |
+
//
|
169 |
+
// Display the zoomed math
|
170 |
+
//
|
171 |
+
if (this.msieZIndexBug) {
|
172 |
+
// MSIE doesn't do z-index properly, so move the div to the document.body,
|
173 |
+
// and use an image as a tracker for the usual position
|
174 |
+
var tracker = HTML.addElement(document.body,"img",{
|
175 |
+
src:"about:blank", id:"MathJax_ZoomTracker", width:0, height:0,
|
176 |
+
style:{width:0, height:0, position:"relative"}
|
177 |
+
});
|
178 |
+
div.style.position = "relative";
|
179 |
+
div.style.zIndex = CONFIG.styles["#MathJax_ZoomOverlay"]["z-index"];
|
180 |
+
div = tracker;
|
181 |
+
}
|
182 |
+
|
183 |
+
var bbox = JAX.Zoom(jax,span,math,Mw,Mh);
|
184 |
+
|
185 |
+
//
|
186 |
+
// Fix up size and position for browsers with bugs (IE)
|
187 |
+
//
|
188 |
+
if (this.msiePositionBug) {
|
189 |
+
if (this.msieSizeBug)
|
190 |
+
{zoom.style.height = bbox.zH+"px"; zoom.style.width = bbox.zW+"px"} // IE8 gets the dimensions completely wrong
|
191 |
+
if (zoom.offsetHeight > Mh) {zoom.style.height = Mh+"px"; zoom.style.width = (bbox.zW+this.scrollSize)+"px"} // IE doesn't do max-height?
|
192 |
+
if (zoom.offsetWidth > Mw) {zoom.style.width = Mw+"px"; zoom.style.height = (bbox.zH+this.scrollSize)+"px"}
|
193 |
+
}
|
194 |
+
if (this.operaPositionBug) {zoom.style.width = Math.min(Mw,bbox.zW)+"px"} // Opera gets width as 0?
|
195 |
+
if (zoom.offsetWidth > eW && zoom.offsetWidth-eW < Mw && zoom.offsetHeight-eW < Mh)
|
196 |
+
{zoom.style.overflow = "visible"} // don't show scroll bars if we don't need to
|
197 |
+
this.Position(zoom,bbox);
|
198 |
+
if (this.msieTrapEventBug) {
|
199 |
+
trap.style.height = zoom.clientHeight+"px"; trap.style.width = zoom.clientWidth+"px";
|
200 |
+
trap.style.left = (parseFloat(zoom.style.left)+zoom.clientLeft)+"px";
|
201 |
+
trap.style.top = (parseFloat(zoom.style.top)+zoom.clientTop)+"px";
|
202 |
+
}
|
203 |
+
zoom.style.visibility = "";
|
204 |
+
|
205 |
+
//
|
206 |
+
// Add event handlers
|
207 |
+
//
|
208 |
+
if (this.settings.zoom === "Hover") {overlay.onmouseover = this.Remove}
|
209 |
+
if (window.addEventListener) {addEventListener("resize",this.Resize,false)}
|
210 |
+
else if (window.attachEvent) {attachEvent("onresize",this.Resize)}
|
211 |
+
else {this.onresize = window.onresize; window.onresize = this.Resize}
|
212 |
+
|
213 |
+
//
|
214 |
+
// Let others know about the zoomed math
|
215 |
+
//
|
216 |
+
HUB.signal.Post(["math zoomed",jax]);
|
217 |
+
|
218 |
+
//
|
219 |
+
// Canel further actions
|
220 |
+
//
|
221 |
+
return FALSE(event);
|
222 |
+
},
|
223 |
+
|
224 |
+
//
|
225 |
+
// Set the position of the zoom box and overlay
|
226 |
+
//
|
227 |
+
Position: function (zoom,bbox) {
|
228 |
+
zoom.style.display = "none"; // avoids getting excessive width in Resize()
|
229 |
+
var XY = this.Resize(), x = XY.x, y = XY.y, W = bbox.mW;
|
230 |
+
zoom.style.display = "";
|
231 |
+
var dx = -W-Math.floor((zoom.offsetWidth-W)/2), dy = bbox.Y;
|
232 |
+
zoom.style.left = Math.max(dx,10-x)+"px"; zoom.style.top = Math.max(dy,10-y)+"px";
|
233 |
+
if (!ZOOM.msiePositionBug) {ZOOM.SetWH()} // refigure overlay width/height
|
234 |
+
},
|
235 |
+
|
236 |
+
//
|
237 |
+
// Handle resizing of overlay while zoom is displayed
|
238 |
+
//
|
239 |
+
Resize: function (event) {
|
240 |
+
if (ZOOM.onresize) {ZOOM.onresize(event)}
|
241 |
+
var div = document.getElementById("MathJax_ZoomFrame"),
|
242 |
+
overlay = document.getElementById("MathJax_ZoomOverlay");
|
243 |
+
var xy = ZOOM.getXY(div), obj = ZOOM.findContainer(div);
|
244 |
+
if (ZOOM.getOverflow(obj) !== "visible") {
|
245 |
+
overlay.scroll_parent = obj; // Save this for future reference.
|
246 |
+
var XY = ZOOM.getXY(obj); // Remove container position
|
247 |
+
xy.x -= XY.x; xy.y -= XY.y;
|
248 |
+
XY = ZOOM.getBorder(obj); // Remove container border
|
249 |
+
xy.x -= XY.x; xy.y -= XY.y;
|
250 |
+
}
|
251 |
+
overlay.style.left = (-xy.x)+"px"; overlay.style.top = (-xy.y)+"px";
|
252 |
+
if (ZOOM.msiePositionBug) {setTimeout(ZOOM.SetWH,0)} else {ZOOM.SetWH()}
|
253 |
+
return xy;
|
254 |
+
},
|
255 |
+
SetWH: function () {
|
256 |
+
var overlay = document.getElementById("MathJax_ZoomOverlay");
|
257 |
+
if (!overlay) return;
|
258 |
+
overlay.style.display = "none"; // so scrollWidth/Height will be right below
|
259 |
+
var doc = overlay.scroll_parent || document.documentElement || document.body;
|
260 |
+
overlay.style.width = doc.scrollWidth + "px";
|
261 |
+
overlay.style.height = Math.max(doc.clientHeight,doc.scrollHeight) + "px";
|
262 |
+
overlay.style.display = "";
|
263 |
+
},
|
264 |
+
findContainer: function (obj) {
|
265 |
+
obj = obj.parentNode;
|
266 |
+
while (obj.parentNode && obj !== document.body && ZOOM.getOverflow(obj) === "visible")
|
267 |
+
{obj = obj.parentNode}
|
268 |
+
return obj;
|
269 |
+
},
|
270 |
+
//
|
271 |
+
// Look up CSS properties (use getComputeStyle if available, or currentStyle if not)
|
272 |
+
//
|
273 |
+
getOverflow: (window.getComputedStyle ?
|
274 |
+
function (obj) {return getComputedStyle(obj).overflow} :
|
275 |
+
function (obj) {return (obj.currentStyle||{overflow:"visible"}).overflow}),
|
276 |
+
getBorder: function (obj) {
|
277 |
+
var size = {thin: 1, medium: 2, thick: 3};
|
278 |
+
var style = (window.getComputedStyle ? getComputedStyle(obj) :
|
279 |
+
(obj.currentStyle || {borderLeftWidth:0,borderTopWidth:0}));
|
280 |
+
var x = style.borderLeftWidth, y = style.borderTopWidth;
|
281 |
+
if (size[x]) {x = size[x]} else {x = parseInt(x)}
|
282 |
+
if (size[y]) {y = size[y]} else {y = parseInt(y)}
|
283 |
+
return {x:x, y:y};
|
284 |
+
},
|
285 |
+
//
|
286 |
+
// Get the position of an element on the page
|
287 |
+
//
|
288 |
+
getXY: function (div) {
|
289 |
+
var x = 0, y = 0, obj;
|
290 |
+
obj = div; while (obj.offsetParent) {x += obj.offsetLeft; obj = obj.offsetParent}
|
291 |
+
if (ZOOM.operaPositionBug) {div.style.border = "1px solid"} // to get vertical position right
|
292 |
+
obj = div; while (obj.offsetParent) {y += obj.offsetTop; obj = obj.offsetParent}
|
293 |
+
if (ZOOM.operaPositionBug) {div.style.border = ""}
|
294 |
+
return {x:x, y:y};
|
295 |
+
},
|
296 |
+
|
297 |
+
//
|
298 |
+
// Remove zoom display and event handlers
|
299 |
+
//
|
300 |
+
Remove: function (event) {
|
301 |
+
var div = document.getElementById("MathJax_ZoomFrame");
|
302 |
+
if (div) {
|
303 |
+
var JAX = MathJax.OutputJax[div.previousSibling.jaxID];
|
304 |
+
var jax = JAX.getJaxFromMath(div.previousSibling);
|
305 |
+
HUB.signal.Post(["math unzoomed",jax]);
|
306 |
+
div.parentNode.removeChild(div);
|
307 |
+
div = document.getElementById("MathJax_ZoomTracker");
|
308 |
+
if (div) {div.parentNode.removeChild(div)}
|
309 |
+
if (ZOOM.operaRefreshBug) {
|
310 |
+
// force a redisplay of the page
|
311 |
+
// (Opera doesn't refresh properly after the zoom is removed)
|
312 |
+
var overlay = HTML.addElement(document.body,"div",{
|
313 |
+
style:{position:"fixed", left:0, top:0, width:"100%", height:"100%",
|
314 |
+
backgroundColor:"white", opacity:0},
|
315 |
+
id: "MathJax_OperaDiv"
|
316 |
+
});
|
317 |
+
document.body.removeChild(overlay);
|
318 |
+
}
|
319 |
+
if (window.removeEventListener) {removeEventListener("resize",ZOOM.Resize,false)}
|
320 |
+
else if (window.detachEvent) {detachEvent("onresize",ZOOM.Resize)}
|
321 |
+
else {window.onresize = ZOOM.onresize; delete ZOOM.onresize}
|
322 |
+
}
|
323 |
+
return FALSE(event);
|
324 |
+
}
|
325 |
+
|
326 |
+
};
|
327 |
+
|
328 |
+
|
329 |
+
/*************************************************************/
|
330 |
+
|
331 |
+
HUB.Browser.Select({
|
332 |
+
MSIE: function (browser) {
|
333 |
+
var mode = (document.documentMode || 0);
|
334 |
+
var isIE9 = (mode >= 9);
|
335 |
+
ZOOM.msiePositionBug = !isIE9;
|
336 |
+
ZOOM.msieSizeBug = browser.versionAtLeast("7.0") &&
|
337 |
+
(!document.documentMode || mode === 7 || mode === 8);
|
338 |
+
ZOOM.msieZIndexBug = (mode <= 7);
|
339 |
+
ZOOM.msieInlineBlockAlignBug = (mode <= 7);
|
340 |
+
ZOOM.msieTrapEventBug = !window.addEventListener;
|
341 |
+
if (document.compatMode === "BackCompat") {ZOOM.scrollSize = 52} // don't know why this is so far off
|
342 |
+
if (isIE9) {delete CONFIG.styles["#MathJax_Zoom"].filter}
|
343 |
+
},
|
344 |
+
|
345 |
+
Opera: function (browser) {
|
346 |
+
ZOOM.operaPositionBug = true;
|
347 |
+
ZOOM.operaRefreshBug = true;
|
348 |
+
}
|
349 |
+
});
|
350 |
+
|
351 |
+
ZOOM.topImg = (ZOOM.msieInlineBlockAlignBug ?
|
352 |
+
HTML.Element("img",{style:{width:0,height:0,position:"relative"},src:"about:blank"}) :
|
353 |
+
HTML.Element("span",{style:{width:0,height:0,display:"inline-block"}})
|
354 |
+
);
|
355 |
+
if (ZOOM.operaPositionBug || ZOOM.msieTopBug) {ZOOM.topImg.style.border="1px solid"}
|
356 |
+
|
357 |
+
/*************************************************************/
|
358 |
+
|
359 |
+
MathJax.Callback.Queue(
|
360 |
+
["StartupHook",MathJax.Hub.Register,"Begin Styles",{}],
|
361 |
+
["Styles",AJAX,CONFIG.styles],
|
362 |
+
["Post",HUB.Startup.signal,"MathZoom Ready"],
|
363 |
+
["loadComplete",AJAX,"[MathJax]/extensions/MathZoom.js"]
|
364 |
+
);
|
365 |
+
|
366 |
+
})(MathJax.Hub,MathJax.HTML,MathJax.Ajax,MathJax.OutputJax["HTML-CSS"],MathJax.OutputJax.NativeMML);
|
vendor/MathJax/extensions/Safe.js
ADDED
@@ -0,0 +1,428 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax/extensions/Safe.js
|
7 |
+
*
|
8 |
+
* Implements a "Safe" mode that disables features that could be
|
9 |
+
* misused in a shared environment (such as href's to javascript URL's).
|
10 |
+
* See the CONFIG variable below for configuration options.
|
11 |
+
*
|
12 |
+
* ---------------------------------------------------------------------
|
13 |
+
*
|
14 |
+
* Copyright (c) 2013-2018 The MathJax Consortium
|
15 |
+
*
|
16 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
17 |
+
* you may not use this file except in compliance with the License.
|
18 |
+
* You may obtain a copy of the License at
|
19 |
+
*
|
20 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
21 |
+
*
|
22 |
+
* Unless required by applicable law or agreed to in writing, software
|
23 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
24 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
25 |
+
* See the License for the specific language governing permissions and
|
26 |
+
* limitations under the License.
|
27 |
+
*/
|
28 |
+
|
29 |
+
(function (HUB,AJAX) {
|
30 |
+
var VERSION = "2.7.5";
|
31 |
+
|
32 |
+
var CONFIG = MathJax.Hub.CombineConfig("Safe",{
|
33 |
+
allow: {
|
34 |
+
//
|
35 |
+
// Values can be "all", "safe", or "none"
|
36 |
+
//
|
37 |
+
URLs: "safe", // safe are in safeProtocols below
|
38 |
+
classes: "safe", // safe start with MJX-
|
39 |
+
cssIDs: "safe", // safe start with MJX-
|
40 |
+
styles: "safe", // safe are in safeStyles below
|
41 |
+
fontsize: "all", // safe are between sizeMin and sizeMax em's
|
42 |
+
require: "safe" // safe are in safeRequire below
|
43 |
+
},
|
44 |
+
sizeMin: .7, // \scriptsize
|
45 |
+
sizeMax: 1.44, // \large
|
46 |
+
lengthMax: 3, // largest padding/border/margin, etc. in em's
|
47 |
+
safeProtocols: {
|
48 |
+
http: true,
|
49 |
+
https: true,
|
50 |
+
file: true,
|
51 |
+
javascript: false
|
52 |
+
},
|
53 |
+
safeStyles: {
|
54 |
+
color: true,
|
55 |
+
backgroundColor: true,
|
56 |
+
border: true,
|
57 |
+
cursor: true,
|
58 |
+
margin: true,
|
59 |
+
padding: true,
|
60 |
+
textShadow: true,
|
61 |
+
fontFamily: true,
|
62 |
+
fontSize: true,
|
63 |
+
fontStyle: true,
|
64 |
+
fontWeight: true,
|
65 |
+
opacity: true,
|
66 |
+
outline: true
|
67 |
+
},
|
68 |
+
safeRequire: {
|
69 |
+
action: true,
|
70 |
+
amscd: true,
|
71 |
+
amsmath: true,
|
72 |
+
amssymbols: true,
|
73 |
+
autobold: false,
|
74 |
+
"autoload-all": false,
|
75 |
+
bbox: true,
|
76 |
+
begingroup: true,
|
77 |
+
boldsymbol: true,
|
78 |
+
cancel: true,
|
79 |
+
color: true,
|
80 |
+
enclose: true,
|
81 |
+
extpfeil: true,
|
82 |
+
HTML: true,
|
83 |
+
mathchoice: true,
|
84 |
+
mhchem: true,
|
85 |
+
newcommand: true,
|
86 |
+
noErrors: false,
|
87 |
+
noUndefined: false,
|
88 |
+
unicode: true,
|
89 |
+
verb: true
|
90 |
+
},
|
91 |
+
//
|
92 |
+
// CSS styles that have Top/Right/Bottom/Left versions
|
93 |
+
//
|
94 |
+
styleParts: {
|
95 |
+
border: true,
|
96 |
+
padding: true,
|
97 |
+
margin: true,
|
98 |
+
outline: true
|
99 |
+
},
|
100 |
+
//
|
101 |
+
// CSS styles that are lengths needing max/min testing
|
102 |
+
// A string value means test that style value;
|
103 |
+
// An array gives [min,max] in em's
|
104 |
+
// Otherwise use [-lengthMax,lengthMax] from above
|
105 |
+
//
|
106 |
+
styleLengths: {
|
107 |
+
borderTop: "borderTopWidth",
|
108 |
+
borderRight: "borderRightWidth",
|
109 |
+
borderBottom: "borderBottomWidth",
|
110 |
+
borderLeft: "borderLeftWidth",
|
111 |
+
paddingTop: true,
|
112 |
+
paddingRight: true,
|
113 |
+
paddingBottom: true,
|
114 |
+
paddingLeft: true,
|
115 |
+
marginTop: true,
|
116 |
+
marginRight: true,
|
117 |
+
marginBottom: true,
|
118 |
+
marginLeft: true,
|
119 |
+
outlineTop: true,
|
120 |
+
outlineRight: true,
|
121 |
+
outlineBottom: true,
|
122 |
+
outlineLeft: true,
|
123 |
+
fontSize: [.7,1.44]
|
124 |
+
}
|
125 |
+
});
|
126 |
+
|
127 |
+
var ALLOW = CONFIG.allow;
|
128 |
+
if (ALLOW.fontsize !== "all") {CONFIG.safeStyles.fontSize = false}
|
129 |
+
|
130 |
+
var SAFE = MathJax.Extension.Safe = {
|
131 |
+
version: VERSION,
|
132 |
+
config: CONFIG,
|
133 |
+
div1: document.createElement("div"), // for CSS processing
|
134 |
+
div2: document.createElement("div"),
|
135 |
+
|
136 |
+
//
|
137 |
+
// Methods called for MathML attribute processing
|
138 |
+
//
|
139 |
+
filter: {
|
140 |
+
href: "filterURL",
|
141 |
+
src: "filterURL",
|
142 |
+
altimg: "filterURL",
|
143 |
+
"class": "filterClass",
|
144 |
+
style: "filterStyles",
|
145 |
+
id: "filterID",
|
146 |
+
fontsize: "filterFontSize",
|
147 |
+
mathsize: "filterFontSize",
|
148 |
+
scriptminsize: "filterFontSize",
|
149 |
+
scriptsizemultiplier: "filterSizeMultiplier",
|
150 |
+
scriptlevel: "filterScriptLevel"
|
151 |
+
},
|
152 |
+
|
153 |
+
//
|
154 |
+
// Filter HREF URL's
|
155 |
+
//
|
156 |
+
filterURL: function (url) {
|
157 |
+
var protocol = (url.match(/^\s*([a-z]+):/i)||[null,""])[1].toLowerCase();
|
158 |
+
if (ALLOW.URLs === "none" ||
|
159 |
+
(ALLOW.URLs !== "all" && !CONFIG.safeProtocols[protocol])) {url = null}
|
160 |
+
return url;
|
161 |
+
},
|
162 |
+
|
163 |
+
//
|
164 |
+
// Filter class names and css ID's
|
165 |
+
//
|
166 |
+
filterClass: function (CLASS) {
|
167 |
+
if (ALLOW.classes === "none" ||
|
168 |
+
(ALLOW.classes !== "all" && !CLASS.match(/^MJX-[-a-zA-Z0-9_.]+$/))) {CLASS = null}
|
169 |
+
return CLASS;
|
170 |
+
},
|
171 |
+
filterID: function (id) {
|
172 |
+
if (ALLOW.cssIDs === "none" ||
|
173 |
+
(ALLOW.cssIDs !== "all" && !id.match(/^MJX-[-a-zA-Z0-9_.]+$/))) {id = null}
|
174 |
+
return id;
|
175 |
+
},
|
176 |
+
|
177 |
+
//
|
178 |
+
// Filter style strings
|
179 |
+
//
|
180 |
+
filterStyles: function (styles) {
|
181 |
+
if (ALLOW.styles === "all") {return styles}
|
182 |
+
if (ALLOW.styles === "none") {return null}
|
183 |
+
try {
|
184 |
+
//
|
185 |
+
// Set the div1 styles to the given styles, and clear div2
|
186 |
+
//
|
187 |
+
var STYLE1 = this.div1.style, STYLE2 = this.div2.style, value;
|
188 |
+
STYLE1.cssText = styles; STYLE2.cssText = "";
|
189 |
+
//
|
190 |
+
// Check each allowed style and transfer OK ones to div2
|
191 |
+
// If the style has Top/Right/Bottom/Left, look at all four separately
|
192 |
+
//
|
193 |
+
for (var name in CONFIG.safeStyles) {if (CONFIG.safeStyles.hasOwnProperty(name)) {
|
194 |
+
if (CONFIG.styleParts[name]) {
|
195 |
+
for (var i = 0; i < 4; i++) {
|
196 |
+
var NAME = name+["Top","Right","Bottom","Left"][i]
|
197 |
+
value = this.filterStyle(NAME,STYLE1);
|
198 |
+
if (value) {STYLE2[NAME] = value}
|
199 |
+
}
|
200 |
+
} else {
|
201 |
+
value = this.filterStyle(name,STYLE1);
|
202 |
+
if (value) {STYLE2[name] = value}
|
203 |
+
}
|
204 |
+
}}
|
205 |
+
//
|
206 |
+
// Return the div2 style string
|
207 |
+
//
|
208 |
+
styles = STYLE2.cssText;
|
209 |
+
} catch (e) {styles = null}
|
210 |
+
return styles;
|
211 |
+
},
|
212 |
+
//
|
213 |
+
// Filter an individual name:value style pair
|
214 |
+
//
|
215 |
+
filterStyle: function (name,styles) {
|
216 |
+
var value = styles[name];
|
217 |
+
if (typeof value !== "string" || value === "") {return null}
|
218 |
+
if (value.match(/^\s*expression/)) {return null}
|
219 |
+
if (value.match(/javascript:/)) {return null}
|
220 |
+
var NAME = name.replace(/Top|Right|Left|Bottom/,"");
|
221 |
+
if (!CONFIG.safeStyles[name] && !CONFIG.safeStyles[NAME]) {return null}
|
222 |
+
if (!CONFIG.styleLengths[name]) {return value}
|
223 |
+
return (this.filterStyleLength(name,value,styles) ? value : null);
|
224 |
+
},
|
225 |
+
filterStyleLength: function (name,value,styles) {
|
226 |
+
if (typeof CONFIG.styleLengths[name] === "string") value = styles[CONFIG.styleLengths[name]];
|
227 |
+
value = this.length2em(value);
|
228 |
+
if (value == null) return false;
|
229 |
+
var mM = [-CONFIG.lengthMax,CONFIG.lengthMax];
|
230 |
+
if (MathJax.Object.isArray(CONFIG.styleLengths[name])) mM = CONFIG.styleLengths[name];
|
231 |
+
return (value >= mM[0] && value <= mM[1]);
|
232 |
+
},
|
233 |
+
//
|
234 |
+
// Conversion of units to em's
|
235 |
+
//
|
236 |
+
unit2em: {
|
237 |
+
em: 1,
|
238 |
+
ex: .5, // assume 1ex = .5em
|
239 |
+
ch: .5, // assume 1ch = .5em
|
240 |
+
rem: 1, // assume 1rem = 1em
|
241 |
+
px: 1/16, // assume 1em = 16px
|
242 |
+
mm: 96/25.4/16, // 25.4mm = 96px
|
243 |
+
cm: 96/2.54/16, // 2.54cm = 96px
|
244 |
+
'in': 96/16, // 1in = 96px
|
245 |
+
pt: 96/72/16, // 72pt = 1in
|
246 |
+
pc: 96/6/16 // 1pc = 12pt
|
247 |
+
},
|
248 |
+
length2em: function (value) {
|
249 |
+
var match = value.match(/(.+)(em|ex|ch|rem|px|mm|cm|in|pt|pc)/);
|
250 |
+
if (!match) return null;
|
251 |
+
return parseFloat(match[1])*this.unit2em[match[2]];
|
252 |
+
},
|
253 |
+
|
254 |
+
//
|
255 |
+
// Filter TeX font size values (in em's)
|
256 |
+
//
|
257 |
+
filterSize: function (size) {
|
258 |
+
if (ALLOW.fontsize === "none") {return null}
|
259 |
+
if (ALLOW.fontsize !== "all")
|
260 |
+
{size = Math.min(Math.max(size,CONFIG.sizeMin),CONFIG.sizeMax)}
|
261 |
+
return size;
|
262 |
+
},
|
263 |
+
filterFontSize: function (size) {
|
264 |
+
return (ALLOW.fontsize === "all" ? size: null);
|
265 |
+
},
|
266 |
+
|
267 |
+
//
|
268 |
+
// Filter scriptsizemultiplier
|
269 |
+
//
|
270 |
+
filterSizeMultiplier: function (size) {
|
271 |
+
if (ALLOW.fontsize === "none") {size = null}
|
272 |
+
else if (ALLOW.fontsize !== "all") {size = Math.min(1,Math.max(.6,size)).toString()}
|
273 |
+
return size;
|
274 |
+
},
|
275 |
+
//
|
276 |
+
// Filter scriptLevel
|
277 |
+
//
|
278 |
+
filterScriptLevel: function (level) {
|
279 |
+
if (ALLOW.fontsize === "none") {level = null}
|
280 |
+
else if (ALLOW.fontsize !== "all") {level = Math.max(0,level).toString()}
|
281 |
+
return level;
|
282 |
+
},
|
283 |
+
|
284 |
+
//
|
285 |
+
// Filter TeX extension names
|
286 |
+
//
|
287 |
+
filterRequire: function (name) {
|
288 |
+
if (ALLOW.require === "none" ||
|
289 |
+
(ALLOW.require !== "all" && !CONFIG.safeRequire[name.toLowerCase()]))
|
290 |
+
{name = null}
|
291 |
+
return name;
|
292 |
+
}
|
293 |
+
|
294 |
+
};
|
295 |
+
|
296 |
+
HUB.Register.StartupHook("TeX HTML Ready",function () {
|
297 |
+
var TEX = MathJax.InputJax.TeX;
|
298 |
+
|
299 |
+
TEX.Parse.Augment({
|
300 |
+
|
301 |
+
//
|
302 |
+
// Implements \href{url}{math} with URL filter
|
303 |
+
//
|
304 |
+
HREF_attribute: function (name) {
|
305 |
+
var url = SAFE.filterURL(this.GetArgument(name)),
|
306 |
+
arg = this.GetArgumentMML(name);
|
307 |
+
if (url) {arg.With({href:url})}
|
308 |
+
this.Push(arg);
|
309 |
+
},
|
310 |
+
|
311 |
+
//
|
312 |
+
// Implements \class{name}{math} with class-name filter
|
313 |
+
//
|
314 |
+
CLASS_attribute: function (name) {
|
315 |
+
var CLASS = SAFE.filterClass(this.GetArgument(name)),
|
316 |
+
arg = this.GetArgumentMML(name);
|
317 |
+
if (CLASS) {
|
318 |
+
if (arg["class"] != null) {CLASS = arg["class"] + " " + CLASS}
|
319 |
+
arg.With({"class":CLASS});
|
320 |
+
}
|
321 |
+
this.Push(arg);
|
322 |
+
},
|
323 |
+
|
324 |
+
//
|
325 |
+
// Implements \style{style-string}{math} with style filter
|
326 |
+
//
|
327 |
+
STYLE_attribute: function (name) {
|
328 |
+
var style = SAFE.filterStyles(this.GetArgument(name)),
|
329 |
+
arg = this.GetArgumentMML(name);
|
330 |
+
if (style) {
|
331 |
+
if (arg.style != null) {
|
332 |
+
if (style.charAt(style.length-1) !== ";") {style += ";"}
|
333 |
+
style = arg.style + " " + style;
|
334 |
+
}
|
335 |
+
arg.With({style: style});
|
336 |
+
}
|
337 |
+
this.Push(arg);
|
338 |
+
},
|
339 |
+
|
340 |
+
//
|
341 |
+
// Implements \cssId{id}{math} with ID filter
|
342 |
+
//
|
343 |
+
ID_attribute: function (name) {
|
344 |
+
var ID = SAFE.filterID(this.GetArgument(name)),
|
345 |
+
arg = this.GetArgumentMML(name);
|
346 |
+
if (ID) {arg.With({id:ID})}
|
347 |
+
this.Push(arg);
|
348 |
+
}
|
349 |
+
|
350 |
+
});
|
351 |
+
|
352 |
+
});
|
353 |
+
|
354 |
+
HUB.Register.StartupHook("TeX Jax Ready",function () {
|
355 |
+
var TEX = MathJax.InputJax.TeX,
|
356 |
+
PARSE = TEX.Parse, METHOD = SAFE.filter;
|
357 |
+
|
358 |
+
PARSE.Augment({
|
359 |
+
|
360 |
+
//
|
361 |
+
// Implements \require{name} with filtering
|
362 |
+
//
|
363 |
+
Require: function (name) {
|
364 |
+
var file = this.GetArgument(name).replace(/.*\//,"").replace(/[^a-z0-9_.-]/ig,"");
|
365 |
+
file = SAFE.filterRequire(file);
|
366 |
+
if (file) {this.Extension(null,file)}
|
367 |
+
},
|
368 |
+
|
369 |
+
//
|
370 |
+
// Controls \mmlToken attributes
|
371 |
+
//
|
372 |
+
MmlFilterAttribute: function (name,value) {
|
373 |
+
if (METHOD[name]) {value = SAFE[METHOD[name]](value)}
|
374 |
+
return value;
|
375 |
+
},
|
376 |
+
|
377 |
+
//
|
378 |
+
// Handles font size macros with filtering
|
379 |
+
//
|
380 |
+
SetSize: function (name,size) {
|
381 |
+
size = SAFE.filterSize(size);
|
382 |
+
if (size) {
|
383 |
+
this.stack.env.size = size;
|
384 |
+
this.Push(TEX.Stack.Item.style().With({styles: {mathsize: size+"em"}}));
|
385 |
+
}
|
386 |
+
}
|
387 |
+
|
388 |
+
});
|
389 |
+
});
|
390 |
+
|
391 |
+
HUB.Register.StartupHook("TeX bbox Ready",function () {
|
392 |
+
var TEX = MathJax.InputJax.TeX;
|
393 |
+
|
394 |
+
//
|
395 |
+
// Filter the styles for \bbox
|
396 |
+
//
|
397 |
+
TEX.Parse.Augment({
|
398 |
+
BBoxStyle: function (styles) {return SAFE.filterStyles(styles)},
|
399 |
+
BBoxPadding: function (pad) {
|
400 |
+
var styles = SAFE.filterStyles("padding: "+pad);
|
401 |
+
return (styles ? pad : 0);
|
402 |
+
}
|
403 |
+
});
|
404 |
+
|
405 |
+
});
|
406 |
+
|
407 |
+
HUB.Register.StartupHook("MathML Jax Ready",function () {
|
408 |
+
var PARSE = MathJax.InputJax.MathML.Parse,
|
409 |
+
METHOD = SAFE.filter;
|
410 |
+
|
411 |
+
//
|
412 |
+
// Filter MathML attributes
|
413 |
+
//
|
414 |
+
PARSE.Augment({
|
415 |
+
filterAttribute: function (name,value) {
|
416 |
+
if (METHOD[name]) {value = SAFE[METHOD[name]](value)}
|
417 |
+
return value;
|
418 |
+
}
|
419 |
+
});
|
420 |
+
|
421 |
+
});
|
422 |
+
|
423 |
+
// MathML input (href, style, fontsize, class, id)
|
424 |
+
|
425 |
+
HUB.Startup.signal.Post("Safe Extension Ready");
|
426 |
+
AJAX.loadComplete("[MathJax]/extensions/Safe.js");
|
427 |
+
|
428 |
+
})(MathJax.Hub,MathJax.Ajax);
|
vendor/MathJax/extensions/TeX/AMScd.js
ADDED
@@ -0,0 +1,158 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax/extensions/TeX/AMScd.js
|
7 |
+
*
|
8 |
+
* Implements the CD environment for commutative diagrams.
|
9 |
+
*
|
10 |
+
* ---------------------------------------------------------------------
|
11 |
+
*
|
12 |
+
* Copyright (c) 2013-2018 The MathJax Consortium
|
13 |
+
*
|
14 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
15 |
+
* you may not use this file except in compliance with the License.
|
16 |
+
* You may obtain a copy of the License at
|
17 |
+
*
|
18 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
19 |
+
*
|
20 |
+
* Unless required by applicable law or agreed to in writing, software
|
21 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
22 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
23 |
+
* See the License for the specific language governing permissions and
|
24 |
+
* limitations under the License.
|
25 |
+
*/
|
26 |
+
|
27 |
+
MathJax.Extension["TeX/AMScd"] = {
|
28 |
+
version: "2.7.5",
|
29 |
+
config: MathJax.Hub.CombineConfig("TeX.CD",{
|
30 |
+
colspace: "5pt",
|
31 |
+
rowspace: "5pt",
|
32 |
+
harrowsize: "2.75em",
|
33 |
+
varrowsize: "1.75em",
|
34 |
+
hideHorizontalLabels: false
|
35 |
+
})
|
36 |
+
};
|
37 |
+
|
38 |
+
MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
39 |
+
var MML = MathJax.ElementJax.mml,
|
40 |
+
TEX = MathJax.InputJax.TeX,
|
41 |
+
STACKITEM = TEX.Stack.Item,
|
42 |
+
TEXDEF = TEX.Definitions,
|
43 |
+
CONFIG = MathJax.Extension["TeX/AMScd"].config;
|
44 |
+
|
45 |
+
TEXDEF.environment.CD = "CD_env";
|
46 |
+
TEXDEF.special["@"] = "CD_arrow";
|
47 |
+
TEXDEF.macros.minCDarrowwidth = "CD_minwidth";
|
48 |
+
TEXDEF.macros.minCDarrowheight = "CD_minheight";
|
49 |
+
|
50 |
+
TEX.Parse.Augment({
|
51 |
+
//
|
52 |
+
// Implements \begin{CD}...\end{CD}
|
53 |
+
//
|
54 |
+
CD_env: function (begin) {
|
55 |
+
this.Push(begin);
|
56 |
+
return STACKITEM.array().With({
|
57 |
+
arraydef: {
|
58 |
+
columnalign: "center",
|
59 |
+
columnspacing: CONFIG.colspace,
|
60 |
+
rowspacing: CONFIG.rowspace,
|
61 |
+
displaystyle: true
|
62 |
+
},
|
63 |
+
minw: this.stack.env.CD_minw || CONFIG.harrowsize,
|
64 |
+
minh: this.stack.env.CD_minh || CONFIG.varrowsize
|
65 |
+
});
|
66 |
+
},
|
67 |
+
|
68 |
+
CD_arrow: function (name) {
|
69 |
+
var c = this.string.charAt(this.i);
|
70 |
+
if (!c.match(/[><VA.|=]/)) {return this.Other(name)} else {this.i++}
|
71 |
+
|
72 |
+
var top = this.stack.Top();
|
73 |
+
if (!top.isa(STACKITEM.array) || top.data.length) {
|
74 |
+
this.CD_cell(name);
|
75 |
+
top = this.stack.Top();
|
76 |
+
}
|
77 |
+
//
|
78 |
+
// Add enough cells to place the arrow correctly
|
79 |
+
//
|
80 |
+
var arrowRow = ((top.table.length % 2) === 1);
|
81 |
+
var n = (top.row.length + (arrowRow ? 0 : 1)) % 2;
|
82 |
+
while (n) {this.CD_cell(name); n--}
|
83 |
+
|
84 |
+
var mml;
|
85 |
+
var hdef = {minsize: top.minw, stretchy:true},
|
86 |
+
vdef = {minsize: top.minh, stretchy:true, symmetric:true, lspace:0, rspace:0};
|
87 |
+
|
88 |
+
if (c === ".") {}
|
89 |
+
else if (c === "|") {mml = this.mmlToken(MML.mo("\u2225").With(vdef))}
|
90 |
+
else if (c === "=") {mml = this.mmlToken(MML.mo("=").With(hdef))}
|
91 |
+
else {
|
92 |
+
//
|
93 |
+
// for @>>> @<<< @VVV and @AAA, get the arrow and labels
|
94 |
+
//
|
95 |
+
var arrow = {">":"\u2192", "<":"\u2190", V:"\u2193", A:"\u2191"}[c];
|
96 |
+
var a = this.GetUpTo(name+c,c),
|
97 |
+
b = this.GetUpTo(name+c,c);
|
98 |
+
|
99 |
+
if (c === ">" || c === "<") {
|
100 |
+
//
|
101 |
+
// Lay out horizontal arrows with munderover if it has labels
|
102 |
+
//
|
103 |
+
mml = MML.mo(arrow).With(hdef);
|
104 |
+
if (!a) {a = "\\kern "+top.minw} // minsize needs work
|
105 |
+
if (a || b) {
|
106 |
+
var pad = {width:"+11mu", lspace:"6mu"};
|
107 |
+
mml = MML.munderover(this.mmlToken(mml));
|
108 |
+
if (a) {
|
109 |
+
a = TEX.Parse(a,this.stack.env).mml();
|
110 |
+
mml.SetData(mml.over,MML.mpadded(a).With(pad).With({voffset:".1em"}));
|
111 |
+
}
|
112 |
+
if (b) {
|
113 |
+
b = TEX.Parse(b,this.stack.env).mml();
|
114 |
+
mml.SetData(mml.under,MML.mpadded(b).With(pad));
|
115 |
+
}
|
116 |
+
if (CONFIG.hideHorizontalLabels)
|
117 |
+
{mml = MML.mpadded(mml).With({depth:0, height:".67em"})}
|
118 |
+
}
|
119 |
+
} else {
|
120 |
+
//
|
121 |
+
// Lay out vertical arrows with mrow if there are labels
|
122 |
+
//
|
123 |
+
mml = arrow = this.mmlToken(MML.mo(arrow).With(vdef));
|
124 |
+
if (a || b) {
|
125 |
+
mml = MML.mrow();
|
126 |
+
if (a) {mml.Append(TEX.Parse("\\scriptstyle\\llap{"+a+"}",this.stack.env).mml())}
|
127 |
+
mml.Append(arrow.With({texClass: MML.TEXCLASS.ORD}));
|
128 |
+
if (b) {mml.Append(TEX.Parse("\\scriptstyle\\rlap{"+b+"}",this.stack.env).mml())}
|
129 |
+
}
|
130 |
+
}
|
131 |
+
}
|
132 |
+
if (mml) {this.Push(mml)};
|
133 |
+
this.CD_cell(name);
|
134 |
+
},
|
135 |
+
CD_cell: function (name) {
|
136 |
+
var top = this.stack.Top();
|
137 |
+
if ((top.table||[]).length % 2 === 0 && (top.row||[]).length === 0) {
|
138 |
+
//
|
139 |
+
// Add a strut to the first cell in even rows to get
|
140 |
+
// better spacing of arrow rows.
|
141 |
+
//
|
142 |
+
this.Push(MML.mpadded().With({height:"8.5pt",depth:"2pt"}));
|
143 |
+
}
|
144 |
+
this.Push(STACKITEM.cell().With({isEntry:true, name:name}));
|
145 |
+
},
|
146 |
+
|
147 |
+
CD_minwidth: function (name) {
|
148 |
+
this.stack.env.CD_minw = this.GetDimen(name);
|
149 |
+
},
|
150 |
+
CD_minheight: function (name) {
|
151 |
+
this.stack.env.CD_minh = this.GetDimen(name);
|
152 |
+
}
|
153 |
+
|
154 |
+
});
|
155 |
+
|
156 |
+
});
|
157 |
+
|
158 |
+
MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/AMScd.js");
|
vendor/MathJax/extensions/TeX/AMSmath.js
ADDED
@@ -0,0 +1,658 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax/extensions/TeX/AMSmath.js
|
7 |
+
*
|
8 |
+
* Implements AMS math environments and macros.
|
9 |
+
*
|
10 |
+
* ---------------------------------------------------------------------
|
11 |
+
*
|
12 |
+
* Copyright (c) 2009-2018 The MathJax Consortium
|
13 |
+
*
|
14 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
15 |
+
* you may not use this file except in compliance with the License.
|
16 |
+
* You may obtain a copy of the License at
|
17 |
+
*
|
18 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
19 |
+
*
|
20 |
+
* Unless required by applicable law or agreed to in writing, software
|
21 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
22 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
23 |
+
* See the License for the specific language governing permissions and
|
24 |
+
* limitations under the License.
|
25 |
+
*/
|
26 |
+
|
27 |
+
MathJax.Extension["TeX/AMSmath"] = {
|
28 |
+
version: "2.7.5",
|
29 |
+
|
30 |
+
number: 0, // current equation number
|
31 |
+
startNumber: 0, // current starting equation number (for when equation is restarted)
|
32 |
+
IDs: {}, // IDs used in previous equations
|
33 |
+
eqIDs: {}, // IDs used in this equation
|
34 |
+
labels: {}, // the set of labels
|
35 |
+
eqlabels: {}, // labels in the current equation
|
36 |
+
refs: [] // array of jax with unresolved references
|
37 |
+
};
|
38 |
+
|
39 |
+
MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
40 |
+
|
41 |
+
var MML = MathJax.ElementJax.mml,
|
42 |
+
TEX = MathJax.InputJax.TeX,
|
43 |
+
AMS = MathJax.Extension["TeX/AMSmath"];
|
44 |
+
|
45 |
+
var TEXDEF = TEX.Definitions,
|
46 |
+
STACKITEM = TEX.Stack.Item,
|
47 |
+
CONFIG = TEX.config.equationNumbers;
|
48 |
+
|
49 |
+
var COLS = function (W) {
|
50 |
+
var WW = [];
|
51 |
+
for (var i = 0, m = W.length; i < m; i++)
|
52 |
+
{WW[i] = TEX.Parse.prototype.Em(W[i])}
|
53 |
+
return WW.join(" ");
|
54 |
+
};
|
55 |
+
|
56 |
+
//
|
57 |
+
// Get the URL of the page (for use with formatURL) when there
|
58 |
+
// is a <base> element on the page.
|
59 |
+
//
|
60 |
+
var baseURL = (document.getElementsByTagName("base").length === 0) ? "" :
|
61 |
+
String(document.location).replace(/#.*$/,"");
|
62 |
+
|
63 |
+
|
64 |
+
/******************************************************************************/
|
65 |
+
|
66 |
+
TEXDEF.Add({
|
67 |
+
mathchar0mo: {
|
68 |
+
iiiint: ['2A0C',{texClass: MML.TEXCLASS.OP}]
|
69 |
+
},
|
70 |
+
|
71 |
+
macros: {
|
72 |
+
mathring: ['Accent','2DA'], // or 0x30A
|
73 |
+
|
74 |
+
nobreakspace: 'Tilde',
|
75 |
+
negmedspace: ['Spacer',MML.LENGTH.NEGATIVEMEDIUMMATHSPACE],
|
76 |
+
negthickspace: ['Spacer',MML.LENGTH.NEGATIVETHICKMATHSPACE],
|
77 |
+
|
78 |
+
// intI: ['Macro','\\mathchoice{\\!}{}{}{}\\!\\!\\int'],
|
79 |
+
// iint: ['MultiIntegral','\\int\\intI'], // now in core TeX input jax
|
80 |
+
// iiint: ['MultiIntegral','\\int\\intI\\intI'], // now in core TeX input jax
|
81 |
+
// iiiint: ['MultiIntegral','\\int\\intI\\intI\\intI'], // now in mathchar0mo above
|
82 |
+
idotsint: ['MultiIntegral','\\int\\cdots\\int'],
|
83 |
+
|
84 |
+
// dddot: ['Macro','\\mathop{#1}\\limits^{\\textstyle \\mathord{.}\\mathord{.}\\mathord{.}}',1],
|
85 |
+
// ddddot: ['Macro','\\mathop{#1}\\limits^{\\textstyle \\mathord{.}\\mathord{.}\\mathord{.}\\mathord{.}}',1],
|
86 |
+
dddot: ['Accent','20DB'],
|
87 |
+
ddddot: ['Accent','20DC'],
|
88 |
+
|
89 |
+
sideset: ['Macro','\\mathop{\\mathop{\\rlap{\\phantom{#3}}}\\nolimits#1\\!\\mathop{#3}\\nolimits#2}',3],
|
90 |
+
|
91 |
+
boxed: ['Macro','\\fbox{$\\displaystyle{#1}$}',1],
|
92 |
+
|
93 |
+
tag: 'HandleTag',
|
94 |
+
notag: 'HandleNoTag',
|
95 |
+
label: 'HandleLabel',
|
96 |
+
ref: 'HandleRef',
|
97 |
+
eqref: ['HandleRef',true],
|
98 |
+
|
99 |
+
substack: ['Macro','\\begin{subarray}{c}#1\\end{subarray}',1],
|
100 |
+
|
101 |
+
injlim: ['NamedOp','inj lim'],
|
102 |
+
projlim: ['NamedOp','proj lim'],
|
103 |
+
varliminf: ['Macro','\\mathop{\\underline{\\mmlToken{mi}{lim}}}'],
|
104 |
+
varlimsup: ['Macro','\\mathop{\\overline{\\mmlToken{mi}{lim}}}'],
|
105 |
+
varinjlim: ['Macro','\\mathop{\\underrightarrow{\\mmlToken{mi}{lim}}}'],
|
106 |
+
varprojlim: ['Macro','\\mathop{\\underleftarrow{\\mmlToken{mi}{lim}}}'],
|
107 |
+
|
108 |
+
DeclareMathOperator: 'HandleDeclareOp',
|
109 |
+
operatorname: 'HandleOperatorName',
|
110 |
+
SkipLimits: 'SkipLimits',
|
111 |
+
|
112 |
+
genfrac: 'Genfrac',
|
113 |
+
frac: ['Genfrac',"","","",""],
|
114 |
+
tfrac: ['Genfrac',"","","",1],
|
115 |
+
dfrac: ['Genfrac',"","","",0],
|
116 |
+
binom: ['Genfrac',"(",")","0",""],
|
117 |
+
tbinom: ['Genfrac',"(",")","0",1],
|
118 |
+
dbinom: ['Genfrac',"(",")","0",0],
|
119 |
+
|
120 |
+
cfrac: 'CFrac',
|
121 |
+
|
122 |
+
shoveleft: ['HandleShove',MML.ALIGN.LEFT],
|
123 |
+
shoveright: ['HandleShove',MML.ALIGN.RIGHT],
|
124 |
+
|
125 |
+
xrightarrow: ['xArrow',0x2192,5,6],
|
126 |
+
xleftarrow: ['xArrow',0x2190,7,3]
|
127 |
+
},
|
128 |
+
|
129 |
+
environment: {
|
130 |
+
align: ['AMSarray',null,true,true, 'rlrlrlrlrlrl',COLS([0,2,0,2,0,2,0,2,0,2,0])],
|
131 |
+
'align*': ['AMSarray',null,false,true, 'rlrlrlrlrlrl',COLS([0,2,0,2,0,2,0,2,0,2,0])],
|
132 |
+
multline: ['Multline',null,true],
|
133 |
+
'multline*': ['Multline',null,false],
|
134 |
+
split: ['AMSarray',null,false,false,'rl',COLS([0])],
|
135 |
+
gather: ['AMSarray',null,true,true, 'c'],
|
136 |
+
'gather*': ['AMSarray',null,false,true, 'c'],
|
137 |
+
|
138 |
+
alignat: ['AlignAt',null,true,true],
|
139 |
+
'alignat*': ['AlignAt',null,false,true],
|
140 |
+
alignedat: ['AlignAt',null,false,false],
|
141 |
+
|
142 |
+
aligned: ['AlignedAMSArray',null,null,null,'rlrlrlrlrlrl',COLS([0,2,0,2,0,2,0,2,0,2,0]),".5em",'D'],
|
143 |
+
gathered: ['AlignedAMSArray',null,null,null,'c',null,".5em",'D'],
|
144 |
+
|
145 |
+
subarray: ['Array',null,null,null,null,COLS([0]),"0.1em",'S',1],
|
146 |
+
smallmatrix: ['Array',null,null,null,'c',COLS([1/3]),".2em",'S',1],
|
147 |
+
|
148 |
+
'equation': ['EquationBegin','Equation',true],
|
149 |
+
'equation*': ['EquationBegin','EquationStar',false],
|
150 |
+
|
151 |
+
eqnarray: ['AMSarray',null,true,true, 'rcl',"0 "+MML.LENGTH.THICKMATHSPACE,".5em"],
|
152 |
+
'eqnarray*': ['AMSarray',null,false,true,'rcl',"0 "+MML.LENGTH.THICKMATHSPACE,".5em"]
|
153 |
+
},
|
154 |
+
|
155 |
+
delimiter: {
|
156 |
+
'\\lvert': ['007C',{texClass:MML.TEXCLASS.OPEN}],
|
157 |
+
'\\rvert': ['007C',{texClass:MML.TEXCLASS.CLOSE}],
|
158 |
+
'\\lVert': ['2016',{texClass:MML.TEXCLASS.OPEN}],
|
159 |
+
'\\rVert': ['2016',{texClass:MML.TEXCLASS.CLOSE}]
|
160 |
+
}
|
161 |
+
},null,true);
|
162 |
+
|
163 |
+
|
164 |
+
/******************************************************************************/
|
165 |
+
|
166 |
+
TEX.Parse.Augment({
|
167 |
+
|
168 |
+
/*
|
169 |
+
* Add the tag to the environment (to be added to the table row later)
|
170 |
+
*/
|
171 |
+
HandleTag: function (name) {
|
172 |
+
var star = this.GetStar();
|
173 |
+
var arg = this.trimSpaces(this.GetArgument(name)), tag = arg;
|
174 |
+
if (!star) {arg = CONFIG.formatTag(arg)}
|
175 |
+
var global = this.stack.global; global.tagID = tag;
|
176 |
+
if (global.notags) {
|
177 |
+
TEX.Error(["CommandNotAllowedInEnv",
|
178 |
+
"%1 not allowed in %2 environment",
|
179 |
+
name,global.notags]
|
180 |
+
);
|
181 |
+
}
|
182 |
+
if (global.tag) {TEX.Error(["MultipleCommand","Multiple %1",name])}
|
183 |
+
global.tag = MML.mtd.apply(MML,this.InternalMath(arg)).With({id:CONFIG.formatID(tag)});
|
184 |
+
},
|
185 |
+
HandleNoTag: function (name) {
|
186 |
+
if (this.stack.global.tag) {delete this.stack.global.tag}
|
187 |
+
this.stack.global.notag = true; // prevent auto-tagging
|
188 |
+
},
|
189 |
+
|
190 |
+
/*
|
191 |
+
* Record a label name for a tag
|
192 |
+
*/
|
193 |
+
HandleLabel: function (name) {
|
194 |
+
var global = this.stack.global, label = this.GetArgument(name);
|
195 |
+
if (label === "") return;
|
196 |
+
if (!AMS.refUpdate) {
|
197 |
+
if (global.label) {TEX.Error(["MultipleCommand","Multiple %1",name])}
|
198 |
+
global.label = label;
|
199 |
+
if (AMS.labels[label] || AMS.eqlabels[label])
|
200 |
+
{TEX.Error(["MultipleLabel","Label '%1' multiply defined",label])}
|
201 |
+
AMS.eqlabels[label] = {tag:"???", id:""}; // will be replaced by tag value later
|
202 |
+
}
|
203 |
+
},
|
204 |
+
|
205 |
+
/*
|
206 |
+
* Handle a label reference
|
207 |
+
*/
|
208 |
+
HandleRef: function (name,eqref) {
|
209 |
+
var label = this.GetArgument(name);
|
210 |
+
var ref = AMS.labels[label] || AMS.eqlabels[label];
|
211 |
+
if (!ref) {ref = {tag:"???",id:""}; AMS.badref = !AMS.refUpdate}
|
212 |
+
var tag = ref.tag; if (eqref) {tag = CONFIG.formatTag(tag)}
|
213 |
+
this.Push(MML.mrow.apply(MML,this.InternalMath(tag)).With({
|
214 |
+
href:CONFIG.formatURL(ref.id,baseURL), "class":"MathJax_ref"
|
215 |
+
}));
|
216 |
+
},
|
217 |
+
|
218 |
+
/*
|
219 |
+
* Handle \DeclareMathOperator
|
220 |
+
*/
|
221 |
+
HandleDeclareOp: function (name) {
|
222 |
+
var limits = (this.GetStar() ? "" : "\\nolimits\\SkipLimits");
|
223 |
+
var cs = this.trimSpaces(this.GetArgument(name));
|
224 |
+
if (cs.charAt(0) == "\\") {cs = cs.substr(1)}
|
225 |
+
var op = this.GetArgument(name);
|
226 |
+
op = op.replace(/\*/g,'\\text{*}').replace(/-/g,'\\text{-}');
|
227 |
+
this.setDef(cs, ['Macro', '\\mathop{\\rm '+op+'}'+limits]);
|
228 |
+
},
|
229 |
+
|
230 |
+
HandleOperatorName: function (name) {
|
231 |
+
var limits = (this.GetStar() ? "" : "\\nolimits\\SkipLimits");
|
232 |
+
var op = this.trimSpaces(this.GetArgument(name));
|
233 |
+
op = op.replace(/\*/g,'\\text{*}').replace(/-/g,'\\text{-}');
|
234 |
+
this.string = '\\mathop{\\rm '+op+'}'+limits+" "+this.string.slice(this.i);
|
235 |
+
this.i = 0;
|
236 |
+
},
|
237 |
+
|
238 |
+
SkipLimits: function (name) {
|
239 |
+
var c = this.GetNext(), i = this.i;
|
240 |
+
if (c === "\\" && ++this.i && this.GetCS() !== "limits") this.i = i;
|
241 |
+
},
|
242 |
+
|
243 |
+
/*
|
244 |
+
* Record presence of \shoveleft and \shoveright
|
245 |
+
*/
|
246 |
+
HandleShove: function (name,shove) {
|
247 |
+
var top = this.stack.Top();
|
248 |
+
if (top.type !== "multline") {
|
249 |
+
TEX.Error(["CommandInMultline",
|
250 |
+
"%1 can only appear within the multline environment",name]);
|
251 |
+
}
|
252 |
+
if (top.data.length) {
|
253 |
+
TEX.Error(["CommandAtTheBeginingOfLine",
|
254 |
+
"%1 must come at the beginning of the line",name]);
|
255 |
+
}
|
256 |
+
top.data.shove = shove;
|
257 |
+
},
|
258 |
+
|
259 |
+
/*
|
260 |
+
* Handle \cfrac
|
261 |
+
*/
|
262 |
+
CFrac: function (name) {
|
263 |
+
var lr = this.trimSpaces(this.GetBrackets(name,"")),
|
264 |
+
num = this.GetArgument(name),
|
265 |
+
den = this.GetArgument(name);
|
266 |
+
var frac = MML.mfrac(TEX.Parse('\\strut\\textstyle{'+num+'}',this.stack.env).mml(),
|
267 |
+
TEX.Parse('\\strut\\textstyle{'+den+'}',this.stack.env).mml());
|
268 |
+
lr = ({l:MML.ALIGN.LEFT, r:MML.ALIGN.RIGHT,"":""})[lr];
|
269 |
+
if (lr == null)
|
270 |
+
{TEX.Error(["IllegalAlign","Illegal alignment specified in %1",name])}
|
271 |
+
if (lr) {frac.numalign = frac.denomalign = lr}
|
272 |
+
this.Push(frac);
|
273 |
+
},
|
274 |
+
|
275 |
+
/*
|
276 |
+
* Implement AMS generalized fraction
|
277 |
+
*/
|
278 |
+
Genfrac: function (name,left,right,thick,style) {
|
279 |
+
if (left == null) {left = this.GetDelimiterArg(name)}
|
280 |
+
if (right == null) {right = this.GetDelimiterArg(name)}
|
281 |
+
if (thick == null) {thick = this.GetArgument(name)}
|
282 |
+
if (style == null) {style = this.trimSpaces(this.GetArgument(name))}
|
283 |
+
var num = this.ParseArg(name);
|
284 |
+
var den = this.ParseArg(name);
|
285 |
+
var frac = MML.mfrac(num,den);
|
286 |
+
if (thick !== "") {frac.linethickness = thick}
|
287 |
+
if (left || right) {frac = TEX.fixedFence(left,frac.With({texWithDelims:true}),right)}
|
288 |
+
if (style !== "") {
|
289 |
+
var STYLE = (["D","T","S","SS"])[style];
|
290 |
+
if (STYLE == null)
|
291 |
+
{TEX.Error(["BadMathStyleFor","Bad math style for %1",name])}
|
292 |
+
frac = MML.mstyle(frac);
|
293 |
+
if (STYLE === "D") {frac.displaystyle = true; frac.scriptlevel = 0}
|
294 |
+
else {frac.displaystyle = false; frac.scriptlevel = style - 1}
|
295 |
+
}
|
296 |
+
this.Push(frac);
|
297 |
+
},
|
298 |
+
|
299 |
+
/*
|
300 |
+
* Implements multline environment (mostly handled through STACKITEM below)
|
301 |
+
*/
|
302 |
+
Multline: function (begin,numbered) {
|
303 |
+
this.Push(begin); this.checkEqnEnv();
|
304 |
+
return STACKITEM.multline(numbered,this.stack).With({
|
305 |
+
arraydef: {
|
306 |
+
displaystyle: true,
|
307 |
+
rowspacing: ".5em",
|
308 |
+
width: TEX.config.MultLineWidth, columnwidth:"100%",
|
309 |
+
side: TEX.config.TagSide,
|
310 |
+
minlabelspacing: TEX.config.TagIndent
|
311 |
+
}
|
312 |
+
});
|
313 |
+
},
|
314 |
+
|
315 |
+
/*
|
316 |
+
* Handle AMS aligned environments
|
317 |
+
*/
|
318 |
+
AMSarray: function (begin,numbered,taggable,align,spacing) {
|
319 |
+
this.Push(begin); if (taggable) {this.checkEqnEnv()}
|
320 |
+
align = align.replace(/[^clr]/g,'').split('').join(' ');
|
321 |
+
align = align.replace(/l/g,'left').replace(/r/g,'right').replace(/c/g,'center');
|
322 |
+
return STACKITEM.AMSarray(begin.name,numbered,taggable,this.stack).With({
|
323 |
+
arraydef: {
|
324 |
+
displaystyle: true,
|
325 |
+
rowspacing: ".5em",
|
326 |
+
columnalign: align,
|
327 |
+
columnspacing: (spacing||"1em"),
|
328 |
+
rowspacing: "3pt",
|
329 |
+
side: TEX.config.TagSide,
|
330 |
+
minlabelspacing: TEX.config.TagIndent
|
331 |
+
}
|
332 |
+
});
|
333 |
+
},
|
334 |
+
|
335 |
+
AlignedAMSArray: function (begin) {
|
336 |
+
var align = this.GetBrackets("\\begin{"+begin.name+"}");
|
337 |
+
return this.setArrayAlign(this.AMSarray.apply(this,arguments),align);
|
338 |
+
},
|
339 |
+
|
340 |
+
/*
|
341 |
+
* Handle alignat environments
|
342 |
+
*/
|
343 |
+
AlignAt: function (begin,numbered,taggable) {
|
344 |
+
var n, valign, align = "", spacing = [];
|
345 |
+
if (!taggable) {valign = this.GetBrackets("\\begin{"+begin.name+"}")}
|
346 |
+
n = this.GetArgument("\\begin{"+begin.name+"}");
|
347 |
+
if (n.match(/[^0-9]/)) {
|
348 |
+
TEX.Error(["PositiveIntegerArg","Argument to %1 must me a positive integer",
|
349 |
+
"\\begin{"+begin.name+"}"]);
|
350 |
+
}
|
351 |
+
while (n > 0) {align += "rl"; spacing.push("0em 0em"); n--}
|
352 |
+
spacing = spacing.join(" ");
|
353 |
+
if (taggable) {return this.AMSarray(begin,numbered,taggable,align,spacing)}
|
354 |
+
var array = this.AMSarray(begin,numbered,taggable,align,spacing);
|
355 |
+
return this.setArrayAlign(array,valign);
|
356 |
+
},
|
357 |
+
|
358 |
+
/*
|
359 |
+
* Handle equation environment
|
360 |
+
*/
|
361 |
+
EquationBegin: function (begin,force) {
|
362 |
+
this.checkEqnEnv();
|
363 |
+
this.stack.global.forcetag = (force && CONFIG.autoNumber !== "none");
|
364 |
+
return begin;
|
365 |
+
},
|
366 |
+
EquationStar: function (begin,row) {
|
367 |
+
this.stack.global.tagged = true; // prevent automatic tagging
|
368 |
+
return row;
|
369 |
+
},
|
370 |
+
|
371 |
+
/*
|
372 |
+
* Check for bad nesting of equation environments
|
373 |
+
*/
|
374 |
+
checkEqnEnv: function () {
|
375 |
+
if (this.stack.global.eqnenv)
|
376 |
+
{TEX.Error(["ErroneousNestingEq","Erroneous nesting of equation structures"])}
|
377 |
+
this.stack.global.eqnenv = true;
|
378 |
+
},
|
379 |
+
|
380 |
+
/*
|
381 |
+
* Handle multiple integrals (make a mathop if followed by limits)
|
382 |
+
*/
|
383 |
+
MultiIntegral: function (name,integral) {
|
384 |
+
var next = this.GetNext();
|
385 |
+
if (next === "\\") {
|
386 |
+
var i = this.i; next = this.GetArgument(name); this.i = i;
|
387 |
+
if (next === "\\limits") {
|
388 |
+
if (name === "\\idotsint") {integral = "\\!\\!\\mathop{\\,\\,"+integral+"}"}
|
389 |
+
else {integral = "\\!\\!\\!\\mathop{\\,\\,\\,"+integral+"}"}
|
390 |
+
}
|
391 |
+
}
|
392 |
+
this.string = integral + " " + this.string.slice(this.i);
|
393 |
+
this.i = 0;
|
394 |
+
},
|
395 |
+
|
396 |
+
/*
|
397 |
+
* Handle stretchable arrows
|
398 |
+
*/
|
399 |
+
xArrow: function (name,chr,l,r) {
|
400 |
+
var def = {width: "+"+(l+r)+"mu", lspace: l+"mu"};
|
401 |
+
var bot = this.GetBrackets(name),
|
402 |
+
top = this.ParseArg(name);
|
403 |
+
var arrow = MML.mo(MML.chars(String.fromCharCode(chr))).With({
|
404 |
+
stretchy: true, texClass: MML.TEXCLASS.REL
|
405 |
+
});
|
406 |
+
var mml = MML.munderover(arrow);
|
407 |
+
mml.SetData(mml.over,MML.mpadded(top).With(def).With({voffset:".15em"}));
|
408 |
+
if (bot) {
|
409 |
+
bot = TEX.Parse(bot,this.stack.env).mml()
|
410 |
+
mml.SetData(mml.under,MML.mpadded(bot).With(def).With({voffset:"-.24em"}));
|
411 |
+
}
|
412 |
+
this.Push(mml.With({subsupOK:true}));
|
413 |
+
},
|
414 |
+
|
415 |
+
/*
|
416 |
+
* Get a delimiter or empty argument
|
417 |
+
*/
|
418 |
+
GetDelimiterArg: function (name) {
|
419 |
+
var c = this.trimSpaces(this.GetArgument(name));
|
420 |
+
if (c == "") return null;
|
421 |
+
if (c in TEXDEF.delimiter) return c;
|
422 |
+
TEX.Error(["MissingOrUnrecognizedDelim","Missing or unrecognized delimiter for %1",name]);
|
423 |
+
},
|
424 |
+
|
425 |
+
/*
|
426 |
+
* Get a star following a control sequence name, if any
|
427 |
+
*/
|
428 |
+
GetStar: function () {
|
429 |
+
var star = (this.GetNext() === "*");
|
430 |
+
if (star) {this.i++}
|
431 |
+
return star;
|
432 |
+
}
|
433 |
+
|
434 |
+
});
|
435 |
+
|
436 |
+
/******************************************************************************/
|
437 |
+
|
438 |
+
STACKITEM.Augment({
|
439 |
+
/*
|
440 |
+
* Increment equation number and form tag mtd element
|
441 |
+
*/
|
442 |
+
autoTag: function () {
|
443 |
+
var global = this.global;
|
444 |
+
if (!global.notag) {
|
445 |
+
AMS.number++; global.tagID = CONFIG.formatNumber(AMS.number.toString());
|
446 |
+
var mml = TEX.Parse("\\text{"+CONFIG.formatTag(global.tagID)+"}",{}).mml();
|
447 |
+
global.tag = MML.mtd(mml).With({id:CONFIG.formatID(global.tagID)});
|
448 |
+
}
|
449 |
+
},
|
450 |
+
|
451 |
+
/*
|
452 |
+
* Get the tag and record the label, if any
|
453 |
+
*/
|
454 |
+
getTag: function () {
|
455 |
+
var global = this.global, tag = global.tag; global.tagged = true;
|
456 |
+
if (global.label) {
|
457 |
+
if (CONFIG.useLabelIds) {tag.id = CONFIG.formatID(global.label)}
|
458 |
+
AMS.eqlabels[global.label] = {tag:global.tagID, id:tag.id};
|
459 |
+
}
|
460 |
+
//
|
461 |
+
// Check for repeated ID's (either in the document or as
|
462 |
+
// a previous tag) and find a unique related one. (#240)
|
463 |
+
//
|
464 |
+
if (document.getElementById(tag.id) || AMS.IDs[tag.id] || AMS.eqIDs[tag.id]) {
|
465 |
+
var i = 0, ID;
|
466 |
+
do {i++; ID = tag.id+"_"+i}
|
467 |
+
while (document.getElementById(ID) || AMS.IDs[ID] || AMS.eqIDs[ID]);
|
468 |
+
tag.id = ID; if (global.label) {AMS.eqlabels[global.label].id = ID}
|
469 |
+
}
|
470 |
+
AMS.eqIDs[tag.id] = 1;
|
471 |
+
this.clearTag();
|
472 |
+
return tag;
|
473 |
+
},
|
474 |
+
clearTag: function () {
|
475 |
+
var global = this.global;
|
476 |
+
delete global.tag; delete global.tagID; delete global.label;
|
477 |
+
},
|
478 |
+
|
479 |
+
/*
|
480 |
+
* If the initial child, skipping any initial space or
|
481 |
+
* empty braces (TeXAtom with child being an empty inferred row),
|
482 |
+
* is an <mo>, precede it by an empty <mi> to force the <mo> to
|
483 |
+
* be infix.
|
484 |
+
*/
|
485 |
+
fixInitialMO: function (data) {
|
486 |
+
for (var i = 0, m = data.length; i < m; i++) {
|
487 |
+
if (data[i] && (data[i].type !== "mspace" &&
|
488 |
+
(data[i].type !== "texatom" || (data[i].data[0] && data[i].data[0].data.length)))) {
|
489 |
+
if (data[i].isEmbellished()) data.unshift(MML.mi());
|
490 |
+
break;
|
491 |
+
}
|
492 |
+
}
|
493 |
+
}
|
494 |
+
});
|
495 |
+
|
496 |
+
/*
|
497 |
+
* Implement multline environment via a STACKITEM
|
498 |
+
*/
|
499 |
+
STACKITEM.multline = STACKITEM.array.Subclass({
|
500 |
+
type: "multline",
|
501 |
+
Init: function (numbered,stack) {
|
502 |
+
this.SUPER(arguments).Init.apply(this);
|
503 |
+
this.numbered = (numbered && CONFIG.autoNumber !== "none");
|
504 |
+
this.save = {notag: stack.global.notag};
|
505 |
+
stack.global.tagged = !numbered && !stack.global.forcetag; // prevent automatic tagging in starred environments
|
506 |
+
},
|
507 |
+
EndEntry: function () {
|
508 |
+
if (this.table.length) {this.fixInitialMO(this.data)}
|
509 |
+
var mtd = MML.mtd.apply(MML,this.data);
|
510 |
+
if (this.data.shove) {mtd.columnalign = this.data.shove}
|
511 |
+
this.row.push(mtd);
|
512 |
+
this.data = [];
|
513 |
+
},
|
514 |
+
EndRow: function () {
|
515 |
+
if (this.row.length != 1) {
|
516 |
+
TEX.Error(["MultlineRowsOneCol",
|
517 |
+
"The rows within the %1 environment must have exactly one column",
|
518 |
+
"multline"]);
|
519 |
+
}
|
520 |
+
this.table.push(this.row); this.row = [];
|
521 |
+
},
|
522 |
+
EndTable: function () {
|
523 |
+
this.SUPER(arguments).EndTable.call(this);
|
524 |
+
if (this.table.length) {
|
525 |
+
var m = this.table.length-1, i, label = -1;
|
526 |
+
if (!this.table[0][0].columnalign) {this.table[0][0].columnalign = MML.ALIGN.LEFT}
|
527 |
+
if (!this.table[m][0].columnalign) {this.table[m][0].columnalign = MML.ALIGN.RIGHT}
|
528 |
+
if (!this.global.tag && this.numbered) {this.autoTag()}
|
529 |
+
if (this.global.tag && !this.global.notags) {
|
530 |
+
label = (this.arraydef.side === "left" ? 0 : this.table.length - 1);
|
531 |
+
this.table[label] = [this.getTag()].concat(this.table[label]);
|
532 |
+
}
|
533 |
+
for (i = 0, m = this.table.length; i < m; i++) {
|
534 |
+
var mtr = (i === label ? MML.mlabeledtr : MML.mtr);
|
535 |
+
this.table[i] = mtr.apply(MML,this.table[i]);
|
536 |
+
}
|
537 |
+
}
|
538 |
+
this.global.notag = this.save.notag;
|
539 |
+
}
|
540 |
+
});
|
541 |
+
|
542 |
+
/*
|
543 |
+
* Save data about numbering and taging equations, and add
|
544 |
+
* tags at the ends of rows.
|
545 |
+
*/
|
546 |
+
STACKITEM.AMSarray = STACKITEM.array.Subclass({
|
547 |
+
type: "AMSarray",
|
548 |
+
Init: function (name,numbered,taggable,stack) {
|
549 |
+
this.SUPER(arguments).Init.apply(this);
|
550 |
+
this.numbered = (numbered && CONFIG.autoNumber !== "none");
|
551 |
+
this.save = {notags: stack.global.notags, notag: stack.global.notag};
|
552 |
+
stack.global.notags = (taggable ? null : name);
|
553 |
+
stack.global.tagged = !numbered && !stack.global.forcetag; // prevent automatic tagging in starred environments
|
554 |
+
},
|
555 |
+
EndEntry: function () {
|
556 |
+
if (this.row.length % 2 === 1) {this.fixInitialMO(this.data)}
|
557 |
+
this.row.push(MML.mtd.apply(MML,this.data));
|
558 |
+
this.data = [];
|
559 |
+
},
|
560 |
+
EndRow: function () {
|
561 |
+
var mtr = MML.mtr;
|
562 |
+
if (!this.global.tag && this.numbered) {this.autoTag()}
|
563 |
+
if (this.global.tag && !this.global.notags) {
|
564 |
+
this.row = [this.getTag()].concat(this.row);
|
565 |
+
mtr = MML.mlabeledtr;
|
566 |
+
} else {this.clearTag()}
|
567 |
+
if (this.numbered) {delete this.global.notag}
|
568 |
+
this.table.push(mtr.apply(MML,this.row)); this.row = [];
|
569 |
+
},
|
570 |
+
EndTable: function () {
|
571 |
+
this.SUPER(arguments).EndTable.call(this);
|
572 |
+
this.global.notags = this.save.notags;
|
573 |
+
this.global.notag = this.save.notag;
|
574 |
+
}
|
575 |
+
});
|
576 |
+
|
577 |
+
//
|
578 |
+
// Look for \tag on a formula and make an mtable to include it
|
579 |
+
//
|
580 |
+
STACKITEM.start.Augment({
|
581 |
+
oldCheckItem: STACKITEM.start.prototype.checkItem,
|
582 |
+
checkItem: function (item) {
|
583 |
+
if (item.type === "stop") {
|
584 |
+
var mml = this.mmlData(), global = this.global;
|
585 |
+
if (AMS.display && !global.tag && !global.tagged && !global.isInner &&
|
586 |
+
(CONFIG.autoNumber === "all" || global.forcetag)) {this.autoTag()}
|
587 |
+
if (global.tag) {
|
588 |
+
var row = [this.getTag(),MML.mtd(mml)];
|
589 |
+
var def = {
|
590 |
+
side: TEX.config.TagSide,
|
591 |
+
minlabelspacing: TEX.config.TagIndent,
|
592 |
+
displaystyle: "inherit" // replaced by TeX input jax Translate() function with actual value
|
593 |
+
};
|
594 |
+
mml = MML.mtable(MML.mlabeledtr.apply(MML,row)).With(def);
|
595 |
+
}
|
596 |
+
return STACKITEM.mml(mml);
|
597 |
+
}
|
598 |
+
return this.oldCheckItem.call(this,item);
|
599 |
+
}
|
600 |
+
});
|
601 |
+
|
602 |
+
/******************************************************************************/
|
603 |
+
|
604 |
+
/*
|
605 |
+
* Add pre- and post-filters to handle the equation number maintenance.
|
606 |
+
*/
|
607 |
+
TEX.prefilterHooks.Add(function (data) {
|
608 |
+
AMS.display = data.display;
|
609 |
+
AMS.number = AMS.startNumber; // reset equation numbers (in case the equation restarted)
|
610 |
+
AMS.eqlabels = {};
|
611 |
+
AMS.eqIDs = {};
|
612 |
+
AMS.badref = false;
|
613 |
+
if (AMS.refUpdate) {AMS.number = data.script.MathJax.startNumber}
|
614 |
+
});
|
615 |
+
TEX.postfilterHooks.Add(function (data) {
|
616 |
+
data.script.MathJax.startNumber = AMS.startNumber;
|
617 |
+
AMS.startNumber = AMS.number; // equation numbers for next equation
|
618 |
+
MathJax.Hub.Insert(AMS.IDs,AMS.eqIDs); // save IDs from this equation
|
619 |
+
MathJax.Hub.Insert(AMS.labels,AMS.eqlabels); // save labels from this equation
|
620 |
+
if (AMS.badref && !data.math.texError) {AMS.refs.push(data.script)} // reprocess later
|
621 |
+
},100);
|
622 |
+
|
623 |
+
MathJax.Hub.Register.MessageHook("Begin Math Input",function () {
|
624 |
+
AMS.refs = []; // array of jax with bad references
|
625 |
+
AMS.refUpdate = false;
|
626 |
+
});
|
627 |
+
MathJax.Hub.Register.MessageHook("End Math Input",function (message) {
|
628 |
+
if (AMS.refs.length) {
|
629 |
+
AMS.refUpdate = true;
|
630 |
+
for (var i = 0, m = AMS.refs.length; i < m; i++)
|
631 |
+
{AMS.refs[i].MathJax.state = MathJax.ElementJax.STATE.UPDATE}
|
632 |
+
return MathJax.Hub.processInput({
|
633 |
+
scripts:AMS.refs,
|
634 |
+
start: new Date().getTime(),
|
635 |
+
i:0, j:0, jax:{}, jaxIDs:[]
|
636 |
+
});
|
637 |
+
}
|
638 |
+
return null;
|
639 |
+
});
|
640 |
+
|
641 |
+
//
|
642 |
+
// Clear the equation numbers and labels
|
643 |
+
//
|
644 |
+
TEX.resetEquationNumbers = function (n,keepLabels) {
|
645 |
+
AMS.startNumber = (n || 0);
|
646 |
+
if (!keepLabels) {
|
647 |
+
AMS.labels = {};
|
648 |
+
AMS.IDs = {};
|
649 |
+
}
|
650 |
+
}
|
651 |
+
|
652 |
+
/******************************************************************************/
|
653 |
+
|
654 |
+
MathJax.Hub.Startup.signal.Post("TeX AMSmath Ready");
|
655 |
+
|
656 |
+
});
|
657 |
+
|
658 |
+
MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/AMSmath.js");
|
vendor/MathJax/extensions/TeX/AMSsymbols.js
ADDED
@@ -0,0 +1,349 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax/extensions/TeX/AMSsymbols.js
|
7 |
+
*
|
8 |
+
* Implements macros for accessing the AMS symbol fonts.
|
9 |
+
*
|
10 |
+
* ---------------------------------------------------------------------
|
11 |
+
*
|
12 |
+
* Copyright (c) 2009-2018 The MathJax Consortium
|
13 |
+
*
|
14 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
15 |
+
* you may not use this file except in compliance with the License.
|
16 |
+
* You may obtain a copy of the License at
|
17 |
+
*
|
18 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
19 |
+
*
|
20 |
+
* Unless required by applicable law or agreed to in writing, software
|
21 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
22 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
23 |
+
* See the License for the specific language governing permissions and
|
24 |
+
* limitations under the License.
|
25 |
+
*/
|
26 |
+
|
27 |
+
MathJax.Extension["TeX/AMSsymbols"] = {
|
28 |
+
version: "2.7.5"
|
29 |
+
};
|
30 |
+
|
31 |
+
MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
32 |
+
var MML = MathJax.ElementJax.mml,
|
33 |
+
TEXDEF = MathJax.InputJax.TeX.Definitions;
|
34 |
+
|
35 |
+
TEXDEF.Add({
|
36 |
+
|
37 |
+
mathchar0mi: {
|
38 |
+
// Lowercase Greek letters
|
39 |
+
digamma: '03DD',
|
40 |
+
varkappa: '03F0',
|
41 |
+
|
42 |
+
// Uppercase Greek letters
|
43 |
+
varGamma: ['0393',{mathvariant: MML.VARIANT.ITALIC}],
|
44 |
+
varDelta: ['0394',{mathvariant: MML.VARIANT.ITALIC}],
|
45 |
+
varTheta: ['0398',{mathvariant: MML.VARIANT.ITALIC}],
|
46 |
+
varLambda: ['039B',{mathvariant: MML.VARIANT.ITALIC}],
|
47 |
+
varXi: ['039E',{mathvariant: MML.VARIANT.ITALIC}],
|
48 |
+
varPi: ['03A0',{mathvariant: MML.VARIANT.ITALIC}],
|
49 |
+
varSigma: ['03A3',{mathvariant: MML.VARIANT.ITALIC}],
|
50 |
+
varUpsilon: ['03A5',{mathvariant: MML.VARIANT.ITALIC}],
|
51 |
+
varPhi: ['03A6',{mathvariant: MML.VARIANT.ITALIC}],
|
52 |
+
varPsi: ['03A8',{mathvariant: MML.VARIANT.ITALIC}],
|
53 |
+
varOmega: ['03A9',{mathvariant: MML.VARIANT.ITALIC}],
|
54 |
+
|
55 |
+
// Hebrew letters
|
56 |
+
beth: '2136',
|
57 |
+
gimel: '2137',
|
58 |
+
daleth: '2138',
|
59 |
+
|
60 |
+
// Miscellaneous symbols
|
61 |
+
// hbar: '0127', // in TeX/jax.js
|
62 |
+
backprime: ['2035',{variantForm: true}],
|
63 |
+
hslash: '210F',
|
64 |
+
varnothing: ['2205',{variantForm: true}],
|
65 |
+
blacktriangle: '25B4',
|
66 |
+
triangledown: ['25BD',{variantForm: true}],
|
67 |
+
blacktriangledown: '25BE',
|
68 |
+
square: '25FB',
|
69 |
+
Box: '25FB',
|
70 |
+
blacksquare: '25FC',
|
71 |
+
lozenge: '25CA',
|
72 |
+
Diamond: '25CA',
|
73 |
+
blacklozenge: '29EB',
|
74 |
+
circledS: ['24C8',{mathvariant: MML.VARIANT.NORMAL}],
|
75 |
+
bigstar: '2605',
|
76 |
+
// angle: '2220', // in TeX/jax.js
|
77 |
+
sphericalangle: '2222',
|
78 |
+
measuredangle: '2221',
|
79 |
+
nexists: '2204',
|
80 |
+
complement: '2201',
|
81 |
+
mho: '2127',
|
82 |
+
eth: ['00F0',{mathvariant: MML.VARIANT.NORMAL}],
|
83 |
+
Finv: '2132',
|
84 |
+
diagup: '2571',
|
85 |
+
Game: '2141',
|
86 |
+
diagdown: '2572',
|
87 |
+
Bbbk: ['006B',{mathvariant: MML.VARIANT.DOUBLESTRUCK}],
|
88 |
+
|
89 |
+
yen: '00A5',
|
90 |
+
circledR: '00AE',
|
91 |
+
checkmark: '2713',
|
92 |
+
maltese: '2720'
|
93 |
+
},
|
94 |
+
|
95 |
+
mathchar0mo: {
|
96 |
+
// Binary operators
|
97 |
+
dotplus: '2214',
|
98 |
+
ltimes: '22C9',
|
99 |
+
smallsetminus: '2216',
|
100 |
+
rtimes: '22CA',
|
101 |
+
Cap: '22D2',
|
102 |
+
doublecap: '22D2',
|
103 |
+
leftthreetimes: '22CB',
|
104 |
+
Cup: '22D3',
|
105 |
+
doublecup: '22D3',
|
106 |
+
rightthreetimes: '22CC',
|
107 |
+
barwedge: '22BC',
|
108 |
+
curlywedge: '22CF',
|
109 |
+
veebar: '22BB',
|
110 |
+
curlyvee: '22CE',
|
111 |
+
doublebarwedge: '2A5E',
|
112 |
+
boxminus: '229F',
|
113 |
+
circleddash: '229D',
|
114 |
+
boxtimes: '22A0',
|
115 |
+
circledast: '229B',
|
116 |
+
boxdot: '22A1',
|
117 |
+
circledcirc: '229A',
|
118 |
+
boxplus: '229E',
|
119 |
+
centerdot: ['22C5',{variantForm: true}],
|
120 |
+
divideontimes: '22C7',
|
121 |
+
intercal: '22BA',
|
122 |
+
|
123 |
+
// Binary relations
|
124 |
+
leqq: '2266',
|
125 |
+
geqq: '2267',
|
126 |
+
leqslant: '2A7D',
|
127 |
+
geqslant: '2A7E',
|
128 |
+
eqslantless: '2A95',
|
129 |
+
eqslantgtr: '2A96',
|
130 |
+
lesssim: '2272',
|
131 |
+
gtrsim: '2273',
|
132 |
+
lessapprox: '2A85',
|
133 |
+
gtrapprox: '2A86',
|
134 |
+
approxeq: '224A',
|
135 |
+
lessdot: '22D6',
|
136 |
+
gtrdot: '22D7',
|
137 |
+
lll: '22D8',
|
138 |
+
llless: '22D8',
|
139 |
+
ggg: '22D9',
|
140 |
+
gggtr: '22D9',
|
141 |
+
lessgtr: '2276',
|
142 |
+
gtrless: '2277',
|
143 |
+
lesseqgtr: '22DA',
|
144 |
+
gtreqless: '22DB',
|
145 |
+
lesseqqgtr: '2A8B',
|
146 |
+
gtreqqless: '2A8C',
|
147 |
+
doteqdot: '2251',
|
148 |
+
Doteq: '2251',
|
149 |
+
eqcirc: '2256',
|
150 |
+
risingdotseq: '2253',
|
151 |
+
circeq: '2257',
|
152 |
+
fallingdotseq: '2252',
|
153 |
+
triangleq: '225C',
|
154 |
+
backsim: '223D',
|
155 |
+
thicksim: ['223C',{variantForm: true}],
|
156 |
+
backsimeq: '22CD',
|
157 |
+
thickapprox: ['2248',{variantForm: true}],
|
158 |
+
subseteqq: '2AC5',
|
159 |
+
supseteqq: '2AC6',
|
160 |
+
Subset: '22D0',
|
161 |
+
Supset: '22D1',
|
162 |
+
sqsubset: '228F',
|
163 |
+
sqsupset: '2290',
|
164 |
+
preccurlyeq: '227C',
|
165 |
+
succcurlyeq: '227D',
|
166 |
+
curlyeqprec: '22DE',
|
167 |
+
curlyeqsucc: '22DF',
|
168 |
+
precsim: '227E',
|
169 |
+
succsim: '227F',
|
170 |
+
precapprox: '2AB7',
|
171 |
+
succapprox: '2AB8',
|
172 |
+
vartriangleleft: '22B2',
|
173 |
+
lhd: '22B2',
|
174 |
+
vartriangleright: '22B3',
|
175 |
+
rhd: '22B3',
|
176 |
+
trianglelefteq: '22B4',
|
177 |
+
unlhd: '22B4',
|
178 |
+
trianglerighteq: '22B5',
|
179 |
+
unrhd: '22B5',
|
180 |
+
vDash: '22A8',
|
181 |
+
Vdash: '22A9',
|
182 |
+
Vvdash: '22AA',
|
183 |
+
smallsmile: ['2323',{variantForm: true}],
|
184 |
+
shortmid: ['2223',{variantForm: true}],
|
185 |
+
smallfrown: ['2322',{variantForm: true}],
|
186 |
+
shortparallel: ['2225',{variantForm: true}],
|
187 |
+
bumpeq: '224F',
|
188 |
+
between: '226C',
|
189 |
+
Bumpeq: '224E',
|
190 |
+
pitchfork: '22D4',
|
191 |
+
varpropto: '221D',
|
192 |
+
backepsilon: '220D',
|
193 |
+
blacktriangleleft: '25C2',
|
194 |
+
blacktriangleright: '25B8',
|
195 |
+
therefore: '2234',
|
196 |
+
because: '2235',
|
197 |
+
eqsim: '2242',
|
198 |
+
vartriangle: ['25B3',{variantForm: true}],
|
199 |
+
Join: '22C8',
|
200 |
+
|
201 |
+
// Negated relations
|
202 |
+
nless: '226E',
|
203 |
+
ngtr: '226F',
|
204 |
+
nleq: '2270',
|
205 |
+
ngeq: '2271',
|
206 |
+
nleqslant: ['2A87',{variantForm: true}],
|
207 |
+
ngeqslant: ['2A88',{variantForm: true}],
|
208 |
+
nleqq: ['2270',{variantForm: true}],
|
209 |
+
ngeqq: ['2271',{variantForm: true}],
|
210 |
+
lneq: '2A87',
|
211 |
+
gneq: '2A88',
|
212 |
+
lneqq: '2268',
|
213 |
+
gneqq: '2269',
|
214 |
+
lvertneqq: ['2268',{variantForm: true}],
|
215 |
+
gvertneqq: ['2269',{variantForm: true}],
|
216 |
+
lnsim: '22E6',
|
217 |
+
gnsim: '22E7',
|
218 |
+
lnapprox: '2A89',
|
219 |
+
gnapprox: '2A8A',
|
220 |
+
nprec: '2280',
|
221 |
+
nsucc: '2281',
|
222 |
+
npreceq: ['22E0',{variantForm: true}],
|
223 |
+
nsucceq: ['22E1',{variantForm: true}],
|
224 |
+
precneqq: '2AB5',
|
225 |
+
succneqq: '2AB6',
|
226 |
+
precnsim: '22E8',
|
227 |
+
succnsim: '22E9',
|
228 |
+
precnapprox: '2AB9',
|
229 |
+
succnapprox: '2ABA',
|
230 |
+
nsim: '2241',
|
231 |
+
ncong: '2246',
|
232 |
+
nshortmid: ['2224',{variantForm: true}],
|
233 |
+
nshortparallel: ['2226',{variantForm: true}],
|
234 |
+
nmid: '2224',
|
235 |
+
nparallel: '2226',
|
236 |
+
nvdash: '22AC',
|
237 |
+
nvDash: '22AD',
|
238 |
+
nVdash: '22AE',
|
239 |
+
nVDash: '22AF',
|
240 |
+
ntriangleleft: '22EA',
|
241 |
+
ntriangleright: '22EB',
|
242 |
+
ntrianglelefteq: '22EC',
|
243 |
+
ntrianglerighteq: '22ED',
|
244 |
+
nsubseteq: '2288',
|
245 |
+
nsupseteq: '2289',
|
246 |
+
nsubseteqq: ['2288',{variantForm: true}],
|
247 |
+
nsupseteqq: ['2289',{variantForm: true}],
|
248 |
+
subsetneq: '228A',
|
249 |
+
supsetneq: '228B',
|
250 |
+
varsubsetneq: ['228A',{variantForm: true}],
|
251 |
+
varsupsetneq: ['228B',{variantForm: true}],
|
252 |
+
subsetneqq: '2ACB',
|
253 |
+
supsetneqq: '2ACC',
|
254 |
+
varsubsetneqq: ['2ACB',{variantForm: true}],
|
255 |
+
varsupsetneqq: ['2ACC',{variantForm: true}],
|
256 |
+
|
257 |
+
|
258 |
+
// Arrows
|
259 |
+
leftleftarrows: '21C7',
|
260 |
+
rightrightarrows: '21C9',
|
261 |
+
leftrightarrows: '21C6',
|
262 |
+
rightleftarrows: '21C4',
|
263 |
+
Lleftarrow: '21DA',
|
264 |
+
Rrightarrow: '21DB',
|
265 |
+
twoheadleftarrow: '219E',
|
266 |
+
twoheadrightarrow: '21A0',
|
267 |
+
leftarrowtail: '21A2',
|
268 |
+
rightarrowtail: '21A3',
|
269 |
+
looparrowleft: '21AB',
|
270 |
+
looparrowright: '21AC',
|
271 |
+
leftrightharpoons: '21CB',
|
272 |
+
rightleftharpoons: ['21CC',{variantForm: true}],
|
273 |
+
curvearrowleft: '21B6',
|
274 |
+
curvearrowright: '21B7',
|
275 |
+
circlearrowleft: '21BA',
|
276 |
+
circlearrowright: '21BB',
|
277 |
+
Lsh: '21B0',
|
278 |
+
Rsh: '21B1',
|
279 |
+
upuparrows: '21C8',
|
280 |
+
downdownarrows: '21CA',
|
281 |
+
upharpoonleft: '21BF',
|
282 |
+
upharpoonright: '21BE',
|
283 |
+
downharpoonleft: '21C3',
|
284 |
+
restriction: '21BE',
|
285 |
+
multimap: '22B8',
|
286 |
+
downharpoonright: '21C2',
|
287 |
+
leftrightsquigarrow: '21AD',
|
288 |
+
rightsquigarrow: '21DD',
|
289 |
+
leadsto: '21DD',
|
290 |
+
dashrightarrow: '21E2',
|
291 |
+
dashleftarrow: '21E0',
|
292 |
+
|
293 |
+
// Negated arrows
|
294 |
+
nleftarrow: '219A',
|
295 |
+
nrightarrow: '219B',
|
296 |
+
nLeftarrow: '21CD',
|
297 |
+
nRightarrow: '21CF',
|
298 |
+
nleftrightarrow: '21AE',
|
299 |
+
nLeftrightarrow: '21CE'
|
300 |
+
},
|
301 |
+
|
302 |
+
delimiter: {
|
303 |
+
// corners
|
304 |
+
"\\ulcorner": '231C',
|
305 |
+
"\\urcorner": '231D',
|
306 |
+
"\\llcorner": '231E',
|
307 |
+
"\\lrcorner": '231F'
|
308 |
+
},
|
309 |
+
|
310 |
+
macros: {
|
311 |
+
implies: ['Macro','\\;\\Longrightarrow\\;'],
|
312 |
+
impliedby: ['Macro','\\;\\Longleftarrow\\;']
|
313 |
+
}
|
314 |
+
|
315 |
+
},null,true);
|
316 |
+
|
317 |
+
var REL = MML.mo.OPTYPES.REL;
|
318 |
+
|
319 |
+
MathJax.Hub.Insert(MML.mo.prototype,{
|
320 |
+
OPTABLE: {
|
321 |
+
infix: {
|
322 |
+
'\u2322': REL, // smallfrown
|
323 |
+
'\u2323': REL, // smallsmile
|
324 |
+
'\u25B3': REL, // vartriangle
|
325 |
+
'\uE006': REL, // nshortmid
|
326 |
+
'\uE007': REL, // nshortparallel
|
327 |
+
'\uE00C': REL, // lvertneqq
|
328 |
+
'\uE00D': REL, // gvertneqq
|
329 |
+
'\uE00E': REL, // ngeqq
|
330 |
+
'\uE00F': REL, // ngeqslant
|
331 |
+
'\uE010': REL, // nleqslant
|
332 |
+
'\uE011': REL, // nleqq
|
333 |
+
'\uE016': REL, // nsubseteqq
|
334 |
+
'\uE017': REL, // varsubsetneqq
|
335 |
+
'\uE018': REL, // nsupseteqq
|
336 |
+
'\uE019': REL, // varsupsetneqq
|
337 |
+
'\uE01A': REL, // varsubsetneq
|
338 |
+
'\uE01B': REL, // varsupsetneq
|
339 |
+
'\uE04B': REL, // npreceq
|
340 |
+
'\uE04F': REL // nsucceq
|
341 |
+
}
|
342 |
+
}
|
343 |
+
});
|
344 |
+
|
345 |
+
MathJax.Hub.Startup.signal.Post("TeX AMSsymbols Ready");
|
346 |
+
|
347 |
+
});
|
348 |
+
|
349 |
+
MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/AMSsymbols.js");
|
vendor/MathJax/extensions/TeX/HTML.js
ADDED
@@ -0,0 +1,106 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax/extensions/TeX/HTML.js
|
7 |
+
*
|
8 |
+
* Implements the \href, \class, \style, \cssId macros.
|
9 |
+
*
|
10 |
+
* ---------------------------------------------------------------------
|
11 |
+
*
|
12 |
+
* Copyright (c) 2010-2018 The MathJax Consortium
|
13 |
+
*
|
14 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
15 |
+
* you may not use this file except in compliance with the License.
|
16 |
+
* You may obtain a copy of the License at
|
17 |
+
*
|
18 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
19 |
+
*
|
20 |
+
* Unless required by applicable law or agreed to in writing, software
|
21 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
22 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
23 |
+
* See the License for the specific language governing permissions and
|
24 |
+
* limitations under the License.
|
25 |
+
*/
|
26 |
+
|
27 |
+
MathJax.Extension["TeX/HTML"] = {
|
28 |
+
version: "2.7.5"
|
29 |
+
};
|
30 |
+
|
31 |
+
MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
32 |
+
|
33 |
+
var TEX = MathJax.InputJax.TeX;
|
34 |
+
var TEXDEF = TEX.Definitions;
|
35 |
+
|
36 |
+
TEXDEF.Add({
|
37 |
+
macros: {
|
38 |
+
href: 'HREF_attribute',
|
39 |
+
"class": 'CLASS_attribute',
|
40 |
+
style: 'STYLE_attribute',
|
41 |
+
cssId: 'ID_attribute'
|
42 |
+
}
|
43 |
+
},null,true);
|
44 |
+
|
45 |
+
TEX.Parse.Augment({
|
46 |
+
|
47 |
+
//
|
48 |
+
// Implements \href{url}{math}
|
49 |
+
//
|
50 |
+
HREF_attribute: function (name) {
|
51 |
+
var url = this.GetArgument(name),
|
52 |
+
arg = this.GetArgumentMML(name);
|
53 |
+
this.Push(arg.With({href:url}));
|
54 |
+
},
|
55 |
+
|
56 |
+
//
|
57 |
+
// Implements \class{name}{math}
|
58 |
+
//
|
59 |
+
CLASS_attribute: function (name) {
|
60 |
+
var CLASS = this.GetArgument(name),
|
61 |
+
arg = this.GetArgumentMML(name);
|
62 |
+
if (arg["class"] != null) {CLASS = arg["class"] + " " + CLASS}
|
63 |
+
this.Push(arg.With({"class":CLASS}));
|
64 |
+
},
|
65 |
+
|
66 |
+
//
|
67 |
+
// Implements \style{style-string}{math}
|
68 |
+
//
|
69 |
+
STYLE_attribute: function (name) {
|
70 |
+
var style = this.GetArgument(name),
|
71 |
+
arg = this.GetArgumentMML(name);
|
72 |
+
// check that it looks like a style string
|
73 |
+
if (arg.style != null) {
|
74 |
+
if (style.charAt(style.length-1) !== ";") {style += ";"}
|
75 |
+
style = arg.style + " " + style;
|
76 |
+
}
|
77 |
+
this.Push(arg.With({style: style}));
|
78 |
+
},
|
79 |
+
|
80 |
+
//
|
81 |
+
// Implements \cssId{id}{math}
|
82 |
+
//
|
83 |
+
ID_attribute: function (name) {
|
84 |
+
var ID = this.GetArgument(name),
|
85 |
+
arg = this.GetArgumentMML(name);
|
86 |
+
this.Push(arg.With({id:ID}));
|
87 |
+
},
|
88 |
+
|
89 |
+
//
|
90 |
+
// returns an argument that is a single MathML element
|
91 |
+
// (in an mrow if necessary)
|
92 |
+
//
|
93 |
+
GetArgumentMML: function (name) {
|
94 |
+
var arg = this.ParseArg(name);
|
95 |
+
if (arg.inferred && arg.data.length == 1)
|
96 |
+
{arg = arg.data[0]} else {delete arg.inferred}
|
97 |
+
return arg;
|
98 |
+
}
|
99 |
+
|
100 |
+
});
|
101 |
+
|
102 |
+
MathJax.Hub.Startup.signal.Post("TeX HTML Ready");
|
103 |
+
|
104 |
+
});
|
105 |
+
|
106 |
+
MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/HTML.js");
|
vendor/MathJax/extensions/TeX/action.js
ADDED
@@ -0,0 +1,83 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax/extensions/TeX/action.js
|
7 |
+
*
|
8 |
+
* Implements the \mathtip, \texttip, and \toggle macros, which give
|
9 |
+
* access from TeX to the <maction> tag in the MathML that underlies
|
10 |
+
* MathJax's internal format.
|
11 |
+
*
|
12 |
+
* Usage:
|
13 |
+
*
|
14 |
+
* \mathtip{math}{tip} % use "tip" (in math mode) as tooltip for "math"
|
15 |
+
* \texttip{math}{tip} % use "tip" (in text mode) as tooltip for "math"
|
16 |
+
* \toggle{math1}{math2}...\endtoggle
|
17 |
+
* % show math1, and when clicked, show math2, and so on.
|
18 |
+
* % When the last one is clicked, go back to math1.
|
19 |
+
*
|
20 |
+
* ---------------------------------------------------------------------
|
21 |
+
*
|
22 |
+
* Copyright (c) 2011-2018 The MathJax Consortium
|
23 |
+
*
|
24 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
25 |
+
* you may not use this file except in compliance with the License.
|
26 |
+
* You may obtain a copy of the License at
|
27 |
+
*
|
28 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
29 |
+
*
|
30 |
+
* Unless required by applicable law or agreed to in writing, software
|
31 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
32 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
33 |
+
* See the License for the specific language governing permissions and
|
34 |
+
* limitations under the License.
|
35 |
+
*/
|
36 |
+
|
37 |
+
MathJax.Extension["TeX/action"] = {
|
38 |
+
version: "2.7.5"
|
39 |
+
};
|
40 |
+
|
41 |
+
MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
42 |
+
var TEX = MathJax.InputJax.TeX,
|
43 |
+
MML = MathJax.ElementJax.mml;
|
44 |
+
|
45 |
+
//
|
46 |
+
// Set up control sequenecs
|
47 |
+
//
|
48 |
+
TEX.Definitions.Add({
|
49 |
+
macros: {
|
50 |
+
toggle: 'Toggle',
|
51 |
+
mathtip: 'Mathtip',
|
52 |
+
texttip: ['Macro','\\mathtip{#1}{\\text{#2}}',2]
|
53 |
+
}
|
54 |
+
},null,true);
|
55 |
+
|
56 |
+
TEX.Parse.Augment({
|
57 |
+
|
58 |
+
//
|
59 |
+
// Implement \toggle {math1} {math2} ... \endtoggle
|
60 |
+
// (as an <maction actiontype="toggle">)
|
61 |
+
//
|
62 |
+
Toggle: function (name) {
|
63 |
+
var data = [], arg;
|
64 |
+
while ((arg = this.GetArgument(name)) !== "\\endtoggle")
|
65 |
+
{data.push(TEX.Parse(arg,this.stack.env).mml())}
|
66 |
+
this.Push(MML.maction.apply(MML,data).With({actiontype: MML.ACTIONTYPE.TOGGLE}));
|
67 |
+
},
|
68 |
+
|
69 |
+
//
|
70 |
+
// Implement \mathtip{math}{tip}
|
71 |
+
// (an an <maction actiontype="tooltip">)
|
72 |
+
//
|
73 |
+
Mathtip: function(name) {
|
74 |
+
var arg = this.ParseArg(name), tip = this.ParseArg(name);
|
75 |
+
this.Push(MML.maction(arg,tip).With({actiontype: MML.ACTIONTYPE.TOOLTIP}));
|
76 |
+
}
|
77 |
+
});
|
78 |
+
|
79 |
+
MathJax.Hub.Startup.signal.Post("TeX action Ready");
|
80 |
+
|
81 |
+
});
|
82 |
+
|
83 |
+
MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/action.js");
|
vendor/MathJax/extensions/TeX/autobold.js
ADDED
@@ -0,0 +1,50 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax/extensions/TeX/autobold.js
|
7 |
+
*
|
8 |
+
* Adds \boldsymbol around mathematics that appears in a section
|
9 |
+
* of an HTML page that is in bold.
|
10 |
+
*
|
11 |
+
* ---------------------------------------------------------------------
|
12 |
+
*
|
13 |
+
* Copyright (c) 2009-2018 The MathJax Consortium
|
14 |
+
*
|
15 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
16 |
+
* you may not use this file except in compliance with the License.
|
17 |
+
* You may obtain a copy of the License at
|
18 |
+
*
|
19 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
20 |
+
*
|
21 |
+
* Unless required by applicable law or agreed to in writing, software
|
22 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
23 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
24 |
+
* See the License for the specific language governing permissions and
|
25 |
+
* limitations under the License.
|
26 |
+
*/
|
27 |
+
|
28 |
+
MathJax.Extension["TeX/autobold"] = {
|
29 |
+
version: "2.7.5"
|
30 |
+
};
|
31 |
+
|
32 |
+
MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
33 |
+
var TEX = MathJax.InputJax.TeX;
|
34 |
+
|
35 |
+
TEX.prefilterHooks.Add(function (data) {
|
36 |
+
var span = data.script.parentNode.insertBefore(document.createElement("span"),data.script);
|
37 |
+
span.visibility = "hidden";
|
38 |
+
span.style.fontFamily = "Times, serif";
|
39 |
+
span.appendChild(document.createTextNode("ABCXYZabcxyz"));
|
40 |
+
var W = span.offsetWidth;
|
41 |
+
span.style.fontWeight = "bold";
|
42 |
+
if (W && span.offsetWidth === W) {data.math = "\\boldsymbol{"+data.math+"}"}
|
43 |
+
span.parentNode.removeChild(span);
|
44 |
+
});
|
45 |
+
|
46 |
+
MathJax.Hub.Startup.signal.Post("TeX autobold Ready");
|
47 |
+
|
48 |
+
});
|
49 |
+
|
50 |
+
MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/autobold.js");
|
vendor/MathJax/extensions/TeX/autoload-all.js
ADDED
@@ -0,0 +1,83 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax/extensions/TeX/autoload-all.js
|
7 |
+
*
|
8 |
+
* Provides pre-defined macros to autoload all the extensions
|
9 |
+
* so that all macros that MathJax knows about are available.
|
10 |
+
*
|
11 |
+
* ---------------------------------------------------------------------
|
12 |
+
*
|
13 |
+
* Copyright (c) 2013-2018 The MathJax Consortium
|
14 |
+
*
|
15 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
16 |
+
* you may not use this file except in compliance with the License.
|
17 |
+
* You may obtain a copy of the License at
|
18 |
+
*
|
19 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
20 |
+
*
|
21 |
+
* Unless required by applicable law or agreed to in writing, software
|
22 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
23 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
24 |
+
* See the License for the specific language governing permissions and
|
25 |
+
* limitations under the License.
|
26 |
+
*/
|
27 |
+
|
28 |
+
MathJax.Extension["TeX/autoload-all"] = {
|
29 |
+
version: "2.7.5"
|
30 |
+
};
|
31 |
+
|
32 |
+
MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
33 |
+
|
34 |
+
var EXTENSIONS = {
|
35 |
+
action: ["mathtip","texttip","toggle"],
|
36 |
+
AMSmath: ["mathring","nobreakspace","negmedspace","negthickspace","intI",
|
37 |
+
"iiiint","idotsint","dddot","ddddot","sideset","boxed",
|
38 |
+
"substack","injlim","projlim","varliminf","varlimsup",
|
39 |
+
"varinjlim","varprojlim","DeclareMathOperator","operatorname",
|
40 |
+
"genfrac","tfrac","dfrac","binom","tbinom","dbinom","cfrac",
|
41 |
+
"shoveleft","shoveright","xrightarrow","xleftarrow"],
|
42 |
+
begingroup: ["begingroup","endgroup","gdef","global"],
|
43 |
+
cancel: ["cancel","bcancel","xcancel","cancelto"],
|
44 |
+
color: ["color","textcolor","colorbox","fcolorbox","definecolor"],
|
45 |
+
enclose: ["enclose"],
|
46 |
+
extpfeil: ["Newextarrow","xlongequal","xmapsto","xtofrom",
|
47 |
+
"xtwoheadleftarrow","xtwoheadrightarrow"],
|
48 |
+
mhchem: ["ce","cee","cf"]
|
49 |
+
};
|
50 |
+
|
51 |
+
var ENVIRONMENTS = {
|
52 |
+
AMSmath: ["subarray","smallmatrix","equation","equation*"],
|
53 |
+
AMScd: ["CD"]
|
54 |
+
};
|
55 |
+
|
56 |
+
var name, i, m, defs = {macros:{}, environment:{}};
|
57 |
+
|
58 |
+
for (name in EXTENSIONS) {if (EXTENSIONS.hasOwnProperty(name)) {
|
59 |
+
if (!MathJax.Extension["TeX/"+name]) {
|
60 |
+
var macros = EXTENSIONS[name];
|
61 |
+
for (i = 0, m = macros.length; i < m; i++)
|
62 |
+
{defs.macros[macros[i]] = ["Extension",name]}
|
63 |
+
}
|
64 |
+
}}
|
65 |
+
|
66 |
+
for (name in ENVIRONMENTS) {if (ENVIRONMENTS.hasOwnProperty(name)) {
|
67 |
+
if (!MathJax.Extension["TeX/"+name]) {
|
68 |
+
var envs = ENVIRONMENTS[name];
|
69 |
+
for (i = 0, m = envs.length; i < m; i++)
|
70 |
+
{defs.environment[envs[i]] = ["ExtensionEnv",null,name]}
|
71 |
+
}
|
72 |
+
}}
|
73 |
+
|
74 |
+
MathJax.InputJax.TeX.Definitions.Add(defs);
|
75 |
+
|
76 |
+
MathJax.Hub.Startup.signal.Post("TeX autoload-all Ready");
|
77 |
+
|
78 |
+
});
|
79 |
+
|
80 |
+
MathJax.Callback.Queue(
|
81 |
+
["Require",MathJax.Ajax,"[MathJax]/extensions/TeX/AMSsymbols.js"],
|
82 |
+
["loadComplete",MathJax.Ajax,"[MathJax]/extensions/TeX/autoload-all.js"]
|
83 |
+
);
|
vendor/MathJax/extensions/TeX/bbox.js
ADDED
@@ -0,0 +1,102 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax/extensions/TeX/bbox.js
|
7 |
+
*
|
8 |
+
* This file implements the \bbox macro, which creates an box that
|
9 |
+
* can be styled (for background colors, and so on). You can include
|
10 |
+
* an optional dimension that tells how much extra padding to include
|
11 |
+
* around the bounding box for the mathematics, or a color specification
|
12 |
+
* for the background color to use, or both. E.g.,
|
13 |
+
*
|
14 |
+
* \bbox[2pt]{x+y} % an invisible box around x+y with 2pt of extra space
|
15 |
+
* \bbox[green]{x+y} % a green box around x+y
|
16 |
+
* \bbox[green,2pt]{x+y} % a green box with 2pt of extra space
|
17 |
+
*
|
18 |
+
* You can also specify style attributes, for example
|
19 |
+
*
|
20 |
+
* \bbox[red,border:3px solid blue,5px]{x+y}
|
21 |
+
*
|
22 |
+
* would give a red background with a 3px solid blue border that has 5px
|
23 |
+
* of padding between the border and the mathematics. Note that not all
|
24 |
+
* output formats support the style specifications. In particular, the
|
25 |
+
* NativeMML output depends on the browser to render the attributes, and
|
26 |
+
* not all MathML renderers will honor them (e.g., MathPlayer2 doesn't
|
27 |
+
* render border styles).
|
28 |
+
*
|
29 |
+
* This file will be loaded automatically when \bbox is first used.
|
30 |
+
*
|
31 |
+
* ---------------------------------------------------------------------
|
32 |
+
*
|
33 |
+
* Copyright (c) 2011-2018 The MathJax Consortium
|
34 |
+
*
|
35 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
36 |
+
* you may not use this file except in compliance with the License.
|
37 |
+
* You may obtain a copy of the License at
|
38 |
+
*
|
39 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
40 |
+
*
|
41 |
+
* Unless required by applicable law or agreed to in writing, software
|
42 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
43 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
44 |
+
* See the License for the specific language governing permissions and
|
45 |
+
* limitations under the License.
|
46 |
+
*/
|
47 |
+
|
48 |
+
MathJax.Extension["TeX/bbox"] = {
|
49 |
+
version: "2.7.5"
|
50 |
+
};
|
51 |
+
|
52 |
+
MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
53 |
+
|
54 |
+
var TEX = MathJax.InputJax.TeX,
|
55 |
+
MML = MathJax.ElementJax.mml;
|
56 |
+
|
57 |
+
TEX.Definitions.Add({macros: {bbox: "BBox"}},null,true);
|
58 |
+
|
59 |
+
TEX.Parse.Augment({
|
60 |
+
BBox: function (name) {
|
61 |
+
var bbox = this.GetBrackets(name,""),
|
62 |
+
math = this.ParseArg(name);
|
63 |
+
var parts = bbox.split(/,/), def, background, style;
|
64 |
+
for (var i = 0, m = parts.length; i < m; i++) {
|
65 |
+
var part = parts[i].replace(/^\s+/,'').replace(/\s+$/,'');
|
66 |
+
var match = part.match(/^(\.\d+|\d+(\.\d*)?)(pt|em|ex|mu|px|in|cm|mm)$/);
|
67 |
+
if (match) {
|
68 |
+
if (def)
|
69 |
+
{TEX.Error(["MultipleBBoxProperty","%1 specified twice in %2","Padding",name])}
|
70 |
+
var pad = this.BBoxPadding(match[1]+match[3]);
|
71 |
+
if (pad) def = {height:"+"+pad, depth:"+"+pad, lspace:pad, width:"+"+(2*match[1])+match[3]};
|
72 |
+
} else if (part.match(/^([a-z0-9]+|\#[0-9a-f]{6}|\#[0-9a-f]{3})$/i)) {
|
73 |
+
if (background)
|
74 |
+
{TEX.Error(["MultipleBBoxProperty","%1 specified twice in %2","Background",name])}
|
75 |
+
background = part;
|
76 |
+
} else if (part.match(/^[-a-z]+:/i)) {
|
77 |
+
if (style)
|
78 |
+
{TEX.Error(["MultipleBBoxProperty","%1 specified twice in %2", "Style",name])}
|
79 |
+
style = this.BBoxStyle(part);
|
80 |
+
} else if (part !== "") {
|
81 |
+
TEX.Error(
|
82 |
+
["InvalidBBoxProperty",
|
83 |
+
"'%1' doesn't look like a color, a padding dimension, or a style",
|
84 |
+
part]
|
85 |
+
);
|
86 |
+
}
|
87 |
+
}
|
88 |
+
if (def) {math = MML.mpadded(math).With(def)}
|
89 |
+
if (background || style) {
|
90 |
+
math = MML.mstyle(math).With({mathbackground:background, style:style});
|
91 |
+
}
|
92 |
+
this.Push(math);
|
93 |
+
},
|
94 |
+
BBoxStyle: function (styles) {return styles},
|
95 |
+
BBoxPadding: function (pad) {return pad}
|
96 |
+
});
|
97 |
+
|
98 |
+
MathJax.Hub.Startup.signal.Post("TeX bbox Ready");
|
99 |
+
|
100 |
+
});
|
101 |
+
|
102 |
+
MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/bbox.js");
|
vendor/MathJax/extensions/TeX/begingroup.js
ADDED
@@ -0,0 +1,292 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax/extensions/TeX/begingroup.js
|
7 |
+
*
|
8 |
+
* Implements \begingroup and \endgroup commands that make local
|
9 |
+
* definitions possible and are removed when the \endgroup occurs.
|
10 |
+
*
|
11 |
+
* ---------------------------------------------------------------------
|
12 |
+
*
|
13 |
+
* Copyright (c) 2011-2018 The MathJax Consortium
|
14 |
+
*
|
15 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
16 |
+
* you may not use this file except in compliance with the License.
|
17 |
+
* You may obtain a copy of the License at
|
18 |
+
*
|
19 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
20 |
+
*
|
21 |
+
* Unless required by applicable law or agreed to in writing, software
|
22 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
23 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
24 |
+
* See the License for the specific language governing permissions and
|
25 |
+
* limitations under the License.
|
26 |
+
*/
|
27 |
+
|
28 |
+
MathJax.Extension["TeX/begingroup"] = {
|
29 |
+
version: "2.7.5"
|
30 |
+
};
|
31 |
+
|
32 |
+
MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
33 |
+
|
34 |
+
var TEX = MathJax.InputJax.TeX,
|
35 |
+
TEXDEF = TEX.Definitions;
|
36 |
+
|
37 |
+
/****************************************************/
|
38 |
+
|
39 |
+
//
|
40 |
+
// A namespace for localizing macros and environments
|
41 |
+
// (\begingroup and \endgroup create and destroy these)
|
42 |
+
//
|
43 |
+
var NSFRAME = MathJax.Object.Subclass({
|
44 |
+
macros: null, // the local macro definitions
|
45 |
+
environments: null, // the local environments
|
46 |
+
Init: function (macros,environments) {
|
47 |
+
this.macros = (macros || {});
|
48 |
+
this.environments = (environments || {});
|
49 |
+
},
|
50 |
+
//
|
51 |
+
// Find a macro or environment by name
|
52 |
+
//
|
53 |
+
Find: function (name,type) {if (this[type].hasOwnProperty(name)) {return this[type][name]}},
|
54 |
+
//
|
55 |
+
// Define or remove a macro or environment
|
56 |
+
//
|
57 |
+
Def: function (name,value,type) {this[type][name] = value},
|
58 |
+
Undef: function (name,type) {delete this[type][name]},
|
59 |
+
//
|
60 |
+
// Merge two namespaces (used when the equation namespace is combined with the root one)
|
61 |
+
//
|
62 |
+
Merge: function (frame) {
|
63 |
+
MathJax.Hub.Insert(this.macros,frame.macros);
|
64 |
+
MathJax.Hub.Insert(this.environments,frame.environments);
|
65 |
+
},
|
66 |
+
//
|
67 |
+
// Move global macros to the stack (globally) and remove from the frame
|
68 |
+
//
|
69 |
+
MergeGlobals: function (stack) {
|
70 |
+
var macros = this.macros;
|
71 |
+
for (var cs in macros) {if (macros.hasOwnProperty(cs) && macros[cs].global) {
|
72 |
+
stack.Def(cs,macros[cs],"macros",true);
|
73 |
+
delete macros[cs].global; delete macros[cs];
|
74 |
+
}}
|
75 |
+
},
|
76 |
+
//
|
77 |
+
// Clear the macro and environment lists
|
78 |
+
// (but not global macros unless "all" is true)
|
79 |
+
//
|
80 |
+
Clear: function (all) {
|
81 |
+
this.environments = {};
|
82 |
+
if (all) {this.macros = {}} else {
|
83 |
+
var macros = this.macros;
|
84 |
+
for (var cs in macros) {
|
85 |
+
if (macros.hasOwnProperty(cs) && !macros[cs].global) {delete macros[cs]}
|
86 |
+
}
|
87 |
+
}
|
88 |
+
return this;
|
89 |
+
}
|
90 |
+
});
|
91 |
+
|
92 |
+
/****************************************************/
|
93 |
+
|
94 |
+
//
|
95 |
+
// A Stack of namespace frames
|
96 |
+
//
|
97 |
+
var NSSTACK = TEX.nsStack = MathJax.Object.Subclass({
|
98 |
+
stack: null, // the namespace frames
|
99 |
+
top: 0, // the current top one (we don't pop for real until the equation completes)
|
100 |
+
isEqn: false, // true if this is the equation stack (not the global one)
|
101 |
+
//
|
102 |
+
// Set up the initial stack frame
|
103 |
+
//
|
104 |
+
Init: function (eqn) {
|
105 |
+
this.isEqn = eqn; this.stack = [];
|
106 |
+
if (!eqn) {this.Push(NSFRAME(TEXDEF.macros,TEXDEF.environment))}
|
107 |
+
else {this.Push(NSFRAME())}
|
108 |
+
},
|
109 |
+
//
|
110 |
+
// Define a macro or environment in the top frame
|
111 |
+
//
|
112 |
+
Def: function (name,value,type,global) {
|
113 |
+
var n = this.top-1;
|
114 |
+
if (global) {
|
115 |
+
//
|
116 |
+
// Define global macros in the base frame and remove that cs
|
117 |
+
// from all other frames. Mark the global ones in equations
|
118 |
+
// so they can be made global when merged with the root stack.
|
119 |
+
//
|
120 |
+
while (n > 0) {this.stack[n].Undef(name,type); n--}
|
121 |
+
if (!MathJax.Object.isArray(value)) {value = [value]}
|
122 |
+
if (this.isEqn) {value.global = true}
|
123 |
+
}
|
124 |
+
this.stack[n].Def(name,value,type);
|
125 |
+
},
|
126 |
+
//
|
127 |
+
// Push a new namespace frame on the stack
|
128 |
+
//
|
129 |
+
Push: function (frame) {
|
130 |
+
this.stack.push(frame);
|
131 |
+
this.top = this.stack.length;
|
132 |
+
},
|
133 |
+
//
|
134 |
+
// Pop the top stack frame
|
135 |
+
// (if it is the root, just keep track of the pop so we can
|
136 |
+
// reset it if the equation is reprocessed)
|
137 |
+
//
|
138 |
+
Pop: function () {
|
139 |
+
var top;
|
140 |
+
if (this.top > 1) {
|
141 |
+
top = this.stack[--this.top];
|
142 |
+
if (this.isEqn) {this.stack.pop()}
|
143 |
+
} else if (this.isEqn) {
|
144 |
+
this.Clear();
|
145 |
+
}
|
146 |
+
return top;
|
147 |
+
},
|
148 |
+
//
|
149 |
+
// Search the stack from top to bottom for the first
|
150 |
+
// definition of the given control sequence in the given type
|
151 |
+
//
|
152 |
+
Find: function (name,type) {
|
153 |
+
for (var i = this.top-1; i >= 0; i--) {
|
154 |
+
var def = this.stack[i].Find(name,type);
|
155 |
+
if (def) {return def}
|
156 |
+
}
|
157 |
+
return null;
|
158 |
+
},
|
159 |
+
//
|
160 |
+
// Combine the equation stack with the global one
|
161 |
+
// (The bottom frame of the equation goes with the top frame of the global one,
|
162 |
+
// and the remainder are pushed on the global stack, truncated to the
|
163 |
+
// position where items were poped from it.)
|
164 |
+
//
|
165 |
+
Merge: function (stack) {
|
166 |
+
stack.stack[0].MergeGlobals(this);
|
167 |
+
this.stack[this.top-1].Merge(stack.stack[0]);
|
168 |
+
var data = [this.top,this.stack.length-this.top].concat(stack.stack.slice(1));
|
169 |
+
this.stack.splice.apply(this.stack,data);
|
170 |
+
this.top = this.stack.length;
|
171 |
+
},
|
172 |
+
//
|
173 |
+
// Put back the temporarily poped items
|
174 |
+
//
|
175 |
+
Reset: function () {this.top = this.stack.length},
|
176 |
+
//
|
177 |
+
// Clear the stack and start with a blank frame
|
178 |
+
//
|
179 |
+
Clear: function (all) {
|
180 |
+
this.stack = [this.stack[0].Clear()];
|
181 |
+
this.top = this.stack.length;
|
182 |
+
}
|
183 |
+
},{
|
184 |
+
nsFrame: NSFRAME
|
185 |
+
});
|
186 |
+
|
187 |
+
/****************************************************/
|
188 |
+
|
189 |
+
//
|
190 |
+
// Define the new macros
|
191 |
+
//
|
192 |
+
TEXDEF.Add({
|
193 |
+
macros: {
|
194 |
+
begingroup: "BeginGroup",
|
195 |
+
endgroup: "EndGroup",
|
196 |
+
global: "Global",
|
197 |
+
gdef: ["Macro","\\global\\def"]
|
198 |
+
}
|
199 |
+
},null,true);
|
200 |
+
|
201 |
+
TEX.Parse.Augment({
|
202 |
+
//
|
203 |
+
// Implement \begingroup
|
204 |
+
//
|
205 |
+
BeginGroup: function (name) {
|
206 |
+
TEX.eqnStack.Push(NSFRAME());
|
207 |
+
},
|
208 |
+
//
|
209 |
+
// Implements \endgroup
|
210 |
+
//
|
211 |
+
EndGroup: function (name) {
|
212 |
+
//
|
213 |
+
// If the equation has pushed frames, pop one,
|
214 |
+
// Otherwise clear the equation stack and pop the top global one
|
215 |
+
//
|
216 |
+
if (TEX.eqnStack.top > 1) {
|
217 |
+
TEX.eqnStack.Pop();
|
218 |
+
} else if (TEX.rootStack.top === 1) {
|
219 |
+
TEX.Error(["ExtraEndMissingBegin","Extra %1 or missing \\begingroup",name]);
|
220 |
+
} else {
|
221 |
+
TEX.eqnStack.Clear();
|
222 |
+
TEX.rootStack.Pop();
|
223 |
+
}
|
224 |
+
},
|
225 |
+
|
226 |
+
//
|
227 |
+
// Replace the original routines with ones that looks through the
|
228 |
+
// equation and root stacks for the given name
|
229 |
+
//
|
230 |
+
csFindMacro: function (name) {
|
231 |
+
return (TEX.eqnStack.Find(name,"macros") || TEX.rootStack.Find(name,"macros"));
|
232 |
+
},
|
233 |
+
envFindName: function (name) {
|
234 |
+
return (TEX.eqnStack.Find(name,"environments") || TEX.rootStack.Find(name,"environments"));
|
235 |
+
},
|
236 |
+
|
237 |
+
//
|
238 |
+
// Modify the way macros and environments are defined
|
239 |
+
// to make them go into the equation namespace stack
|
240 |
+
//
|
241 |
+
setDef: function (name,value) {
|
242 |
+
value.isUser = true;
|
243 |
+
TEX.eqnStack.Def(name,value,"macros",this.stack.env.isGlobal);
|
244 |
+
delete this.stack.env.isGlobal;
|
245 |
+
},
|
246 |
+
setEnv: function (name,value) {
|
247 |
+
value.isUser = true;
|
248 |
+
TEX.eqnStack.Def(name,value,"environments")
|
249 |
+
},
|
250 |
+
|
251 |
+
//
|
252 |
+
// Implement \global (for \global\let, \global\def and \global\newcommand)
|
253 |
+
//
|
254 |
+
Global: function (name) {
|
255 |
+
var i = this.i; var cs = this.GetCSname(name); this.i = i;
|
256 |
+
if (cs !== "let" && cs !== "def" && cs !== "newcommand" &&
|
257 |
+
cs !== "DeclareMathOperator" && cs !== "Newextarrow") {
|
258 |
+
TEX.Error(["GlobalNotFollowedBy",
|
259 |
+
"%1 not followed by \\let, \\def, or \\newcommand",name]);
|
260 |
+
}
|
261 |
+
this.stack.env.isGlobal = true;
|
262 |
+
}
|
263 |
+
});
|
264 |
+
|
265 |
+
/****************************************************/
|
266 |
+
|
267 |
+
TEX.rootStack = NSSTACK(); // the global namespace stack
|
268 |
+
TEX.eqnStack = NSSTACK(true); // the equation stack
|
269 |
+
|
270 |
+
//
|
271 |
+
// Reset the global stack and clear the equation stack
|
272 |
+
// (this gets us back to the initial stack state as it was
|
273 |
+
// before the equation was first processed, in case the equation
|
274 |
+
// get restarted due to an autoloaded file)
|
275 |
+
//
|
276 |
+
TEX.prefilterHooks.Add(function () {TEX.rootStack.Reset(); TEX.eqnStack.Clear(true)});
|
277 |
+
|
278 |
+
//
|
279 |
+
// We only get here if there were no errors and the equation is fully
|
280 |
+
// processed (all restarts are complete). So we merge the equation
|
281 |
+
// stack into the global stack, thus making the changes from this
|
282 |
+
// equation permanent.
|
283 |
+
//
|
284 |
+
TEX.postfilterHooks.Add(function () {TEX.rootStack.Merge(TEX.eqnStack)});
|
285 |
+
|
286 |
+
/*********************************************************/
|
287 |
+
|
288 |
+
MathJax.Hub.Startup.signal.Post("TeX begingroup Ready");
|
289 |
+
|
290 |
+
});
|
291 |
+
|
292 |
+
MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/begingroup.js");
|
vendor/MathJax/extensions/TeX/boldsymbol.js
ADDED
@@ -0,0 +1,75 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax/extensions/TeX/boldsymbol.js
|
7 |
+
*
|
8 |
+
* Implements the \boldsymbol{...} command to make bold
|
9 |
+
* versions of all math characters (not just variables).
|
10 |
+
*
|
11 |
+
* ---------------------------------------------------------------------
|
12 |
+
*
|
13 |
+
* Copyright (c) 2009-2018 The MathJax Consortium
|
14 |
+
*
|
15 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
16 |
+
* you may not use this file except in compliance with the License.
|
17 |
+
* You may obtain a copy of the License at
|
18 |
+
*
|
19 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
20 |
+
*
|
21 |
+
* Unless required by applicable law or agreed to in writing, software
|
22 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
23 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
24 |
+
* See the License for the specific language governing permissions and
|
25 |
+
* limitations under the License.
|
26 |
+
*/
|
27 |
+
|
28 |
+
MathJax.Extension["TeX/boldsymbol"] = {
|
29 |
+
version: "2.7.5"
|
30 |
+
};
|
31 |
+
|
32 |
+
MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
33 |
+
|
34 |
+
var MML = MathJax.ElementJax.mml;
|
35 |
+
var TEX = MathJax.InputJax.TeX;
|
36 |
+
var TEXDEF = TEX.Definitions;
|
37 |
+
|
38 |
+
var BOLDVARIANT = {};
|
39 |
+
BOLDVARIANT[MML.VARIANT.NORMAL] = MML.VARIANT.BOLD;
|
40 |
+
BOLDVARIANT[MML.VARIANT.ITALIC] = MML.VARIANT.BOLDITALIC;
|
41 |
+
BOLDVARIANT[MML.VARIANT.FRAKTUR] = MML.VARIANT.BOLDFRAKTUR;
|
42 |
+
BOLDVARIANT[MML.VARIANT.SCRIPT] = MML.VARIANT.BOLDSCRIPT;
|
43 |
+
BOLDVARIANT[MML.VARIANT.SANSSERIF] = MML.VARIANT.BOLDSANSSERIF;
|
44 |
+
BOLDVARIANT["-tex-caligraphic"] = "-tex-caligraphic-bold";
|
45 |
+
BOLDVARIANT["-tex-oldstyle"] = "-tex-oldstyle-bold";
|
46 |
+
|
47 |
+
TEXDEF.Add({macros: {boldsymbol: 'Boldsymbol'}},null,true);
|
48 |
+
|
49 |
+
TEX.Parse.Augment({
|
50 |
+
mmlToken: function (token) {
|
51 |
+
if (this.stack.env.boldsymbol) {
|
52 |
+
var variant = token.Get("mathvariant");
|
53 |
+
if (variant == null) {token.mathvariant = MML.VARIANT.BOLD}
|
54 |
+
else {token.mathvariant = (BOLDVARIANT[variant]||variant)}
|
55 |
+
}
|
56 |
+
return token;
|
57 |
+
},
|
58 |
+
|
59 |
+
Boldsymbol: function (name) {
|
60 |
+
var boldsymbol = this.stack.env.boldsymbol,
|
61 |
+
font = this.stack.env.font;
|
62 |
+
this.stack.env.boldsymbol = true;
|
63 |
+
this.stack.env.font = null;
|
64 |
+
var mml = this.ParseArg(name);
|
65 |
+
this.stack.env.font = font;
|
66 |
+
this.stack.env.boldsymbol = boldsymbol;
|
67 |
+
this.Push(mml);
|
68 |
+
}
|
69 |
+
});
|
70 |
+
|
71 |
+
MathJax.Hub.Startup.signal.Post("TeX boldsymbol Ready");
|
72 |
+
|
73 |
+
});
|
74 |
+
|
75 |
+
MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/boldsymbol.js");
|
vendor/MathJax/extensions/TeX/cancel.js
ADDED
@@ -0,0 +1,110 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax/extensions/TeX/cancel.js
|
7 |
+
*
|
8 |
+
* Implements the \cancel, \bcancel, \xcancel, and \cancelto macros.
|
9 |
+
*
|
10 |
+
* Usage:
|
11 |
+
*
|
12 |
+
* \cancel{math} % strikeout math from lower left to upper right
|
13 |
+
* \bcancel{math} % strikeout from upper left to lower right
|
14 |
+
* \xcancel{math} % strikeout with an X
|
15 |
+
* \cancelto{value}{math} % strikeout with arrow going to value
|
16 |
+
*
|
17 |
+
* ---------------------------------------------------------------------
|
18 |
+
*
|
19 |
+
* Copyright (c) 2011-2018 The MathJax Consortium
|
20 |
+
*
|
21 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
22 |
+
* you may not use this file except in compliance with the License.
|
23 |
+
* You may obtain a copy of the License at
|
24 |
+
*
|
25 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
26 |
+
*
|
27 |
+
* Unless required by applicable law or agreed to in writing, software
|
28 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
29 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
30 |
+
* See the License for the specific language governing permissions and
|
31 |
+
* limitations under the License.
|
32 |
+
*/
|
33 |
+
|
34 |
+
MathJax.Extension["TeX/cancel"] = {
|
35 |
+
version: "2.7.5",
|
36 |
+
|
37 |
+
//
|
38 |
+
// The attributes allowed in \enclose{notation}[attributes]{math}
|
39 |
+
//
|
40 |
+
ALLOWED: {
|
41 |
+
color: 1, mathcolor: 1,
|
42 |
+
background: 1, mathbackground: 1,
|
43 |
+
padding: 1,
|
44 |
+
thickness: 1
|
45 |
+
}
|
46 |
+
};
|
47 |
+
|
48 |
+
MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
49 |
+
var TEX = MathJax.InputJax.TeX,
|
50 |
+
MML = MathJax.ElementJax.mml,
|
51 |
+
CANCEL = MathJax.Extension["TeX/cancel"];
|
52 |
+
|
53 |
+
CANCEL.setAttributes = function (def,attr) {
|
54 |
+
if (attr !== "") {
|
55 |
+
attr = attr.replace(/ /g,"").split(/,/);
|
56 |
+
for (var i = 0, m = attr.length; i < m; i++) {
|
57 |
+
var keyvalue = attr[i].split(/[:=]/);
|
58 |
+
if (CANCEL.ALLOWED[keyvalue[0]]) {
|
59 |
+
if (keyvalue[1] === "true") {keyvalue[1] = true}
|
60 |
+
if (keyvalue[1] === "false") {keyvalue[1] = false}
|
61 |
+
def[keyvalue[0]] = keyvalue[1];
|
62 |
+
}
|
63 |
+
}
|
64 |
+
}
|
65 |
+
return def;
|
66 |
+
};
|
67 |
+
|
68 |
+
//
|
69 |
+
// Set up macros
|
70 |
+
//
|
71 |
+
TEX.Definitions.Add({
|
72 |
+
macros: {
|
73 |
+
cancel: ['Cancel',MML.NOTATION.UPDIAGONALSTRIKE],
|
74 |
+
bcancel: ['Cancel',MML.NOTATION.DOWNDIAGONALSTRIKE],
|
75 |
+
xcancel: ['Cancel',MML.NOTATION.UPDIAGONALSTRIKE+" "+MML.NOTATION.DOWNDIAGONALSTRIKE],
|
76 |
+
cancelto: 'CancelTo'
|
77 |
+
}
|
78 |
+
},null,true);
|
79 |
+
|
80 |
+
TEX.Parse.Augment({
|
81 |
+
//
|
82 |
+
// Implement \cancel[attributes]{math},
|
83 |
+
// \bcancel[attributes]{math}, and
|
84 |
+
// \xcancel[attributes]{math}
|
85 |
+
//
|
86 |
+
Cancel: function(name,notation) {
|
87 |
+
var attr = this.GetBrackets(name,""), math = this.ParseArg(name);
|
88 |
+
var def = CANCEL.setAttributes({notation: notation},attr);
|
89 |
+
this.Push(MML.menclose(math).With(def));
|
90 |
+
},
|
91 |
+
|
92 |
+
//
|
93 |
+
// Implement \cancelto{value}[attributes]{math}
|
94 |
+
//
|
95 |
+
CancelTo: function(name,notation) {
|
96 |
+
var value = this.ParseArg(name),
|
97 |
+
attr = this.GetBrackets(name,""),
|
98 |
+
math = this.ParseArg(name);
|
99 |
+
var def = CANCEL.setAttributes({notation: MML.NOTATION.UPDIAGONALSTRIKE+" "+MML.NOTATION.UPDIAGONALARROW},attr);
|
100 |
+
value = MML.mpadded(value).With({depth:"-.1em",height:"+.1em",voffset:".1em"});
|
101 |
+
this.Push(MML.msup(MML.menclose(math).With(def),value));
|
102 |
+
}
|
103 |
+
|
104 |
+
});
|
105 |
+
|
106 |
+
MathJax.Hub.Startup.signal.Post("TeX cancel Ready");
|
107 |
+
|
108 |
+
});
|
109 |
+
|
110 |
+
MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/cancel.js");
|
vendor/MathJax/extensions/TeX/color.js
ADDED
@@ -0,0 +1,281 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax/extensions/TeX/color.js
|
7 |
+
*
|
8 |
+
* Implements LaTeX-compatible \color macro rather than MathJax's original
|
9 |
+
* (non-standard) version. It includes the rgb, RGB, gray, and named color
|
10 |
+
* models, and the \textcolor, \definecolor, \colorbox, and \fcolorbox
|
11 |
+
* macros.
|
12 |
+
*
|
13 |
+
* ---------------------------------------------------------------------
|
14 |
+
*
|
15 |
+
* Copyright (c) 2011-2018 The MathJax Consortium
|
16 |
+
*
|
17 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
18 |
+
* you may not use this file except in compliance with the License.
|
19 |
+
* You may obtain a copy of the License at
|
20 |
+
*
|
21 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
22 |
+
*
|
23 |
+
* Unless required by applicable law or agreed to in writing, software
|
24 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
25 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
26 |
+
* See the License for the specific language governing permissions and
|
27 |
+
* limitations under the License.
|
28 |
+
*/
|
29 |
+
|
30 |
+
//
|
31 |
+
// The configuration defaults, augmented by the user settings
|
32 |
+
//
|
33 |
+
MathJax.Extension["TeX/color"] = {
|
34 |
+
version: "2.7.5",
|
35 |
+
|
36 |
+
config: MathJax.Hub.CombineConfig("TeX.color",{
|
37 |
+
padding: "5px",
|
38 |
+
border: "2px"
|
39 |
+
}),
|
40 |
+
|
41 |
+
colors: {
|
42 |
+
Apricot: "#FBB982",
|
43 |
+
Aquamarine: "#00B5BE",
|
44 |
+
Bittersweet: "#C04F17",
|
45 |
+
Black: "#221E1F",
|
46 |
+
Blue: "#2D2F92",
|
47 |
+
BlueGreen: "#00B3B8",
|
48 |
+
BlueViolet: "#473992",
|
49 |
+
BrickRed: "#B6321C",
|
50 |
+
Brown: "#792500",
|
51 |
+
BurntOrange: "#F7921D",
|
52 |
+
CadetBlue: "#74729A",
|
53 |
+
CarnationPink: "#F282B4",
|
54 |
+
Cerulean: "#00A2E3",
|
55 |
+
CornflowerBlue: "#41B0E4",
|
56 |
+
Cyan: "#00AEEF",
|
57 |
+
Dandelion: "#FDBC42",
|
58 |
+
DarkOrchid: "#A4538A",
|
59 |
+
Emerald: "#00A99D",
|
60 |
+
ForestGreen: "#009B55",
|
61 |
+
Fuchsia: "#8C368C",
|
62 |
+
Goldenrod: "#FFDF42",
|
63 |
+
Gray: "#949698",
|
64 |
+
Green: "#00A64F",
|
65 |
+
GreenYellow: "#DFE674",
|
66 |
+
JungleGreen: "#00A99A",
|
67 |
+
Lavender: "#F49EC4",
|
68 |
+
LimeGreen: "#8DC73E",
|
69 |
+
Magenta: "#EC008C",
|
70 |
+
Mahogany: "#A9341F",
|
71 |
+
Maroon: "#AF3235",
|
72 |
+
Melon: "#F89E7B",
|
73 |
+
MidnightBlue: "#006795",
|
74 |
+
Mulberry: "#A93C93",
|
75 |
+
NavyBlue: "#006EB8",
|
76 |
+
OliveGreen: "#3C8031",
|
77 |
+
Orange: "#F58137",
|
78 |
+
OrangeRed: "#ED135A",
|
79 |
+
Orchid: "#AF72B0",
|
80 |
+
Peach: "#F7965A",
|
81 |
+
Periwinkle: "#7977B8",
|
82 |
+
PineGreen: "#008B72",
|
83 |
+
Plum: "#92268F",
|
84 |
+
ProcessBlue: "#00B0F0",
|
85 |
+
Purple: "#99479B",
|
86 |
+
RawSienna: "#974006",
|
87 |
+
Red: "#ED1B23",
|
88 |
+
RedOrange: "#F26035",
|
89 |
+
RedViolet: "#A1246B",
|
90 |
+
Rhodamine: "#EF559F",
|
91 |
+
RoyalBlue: "#0071BC",
|
92 |
+
RoyalPurple: "#613F99",
|
93 |
+
RubineRed: "#ED017D",
|
94 |
+
Salmon: "#F69289",
|
95 |
+
SeaGreen: "#3FBC9D",
|
96 |
+
Sepia: "#671800",
|
97 |
+
SkyBlue: "#46C5DD",
|
98 |
+
SpringGreen: "#C6DC67",
|
99 |
+
Tan: "#DA9D76",
|
100 |
+
TealBlue: "#00AEB3",
|
101 |
+
Thistle: "#D883B7",
|
102 |
+
Turquoise: "#00B4CE",
|
103 |
+
Violet: "#58429B",
|
104 |
+
VioletRed: "#EF58A0",
|
105 |
+
White: "#FFFFFF",
|
106 |
+
WildStrawberry: "#EE2967",
|
107 |
+
Yellow: "#FFF200",
|
108 |
+
YellowGreen: "#98CC70",
|
109 |
+
YellowOrange: "#FAA21A"
|
110 |
+
},
|
111 |
+
|
112 |
+
/*
|
113 |
+
* Look up a color based on its model and definition
|
114 |
+
*/
|
115 |
+
getColor: function (model,def) {
|
116 |
+
if (!model) {model = "named"}
|
117 |
+
var fn = this["get_"+model];
|
118 |
+
if (!fn) {this.TEX.Error(["UndefinedColorModel","Color model '%1' not defined",model])}
|
119 |
+
return fn.call(this,def);
|
120 |
+
},
|
121 |
+
|
122 |
+
/*
|
123 |
+
* Get an rgb color
|
124 |
+
*/
|
125 |
+
get_rgb: function (rgb) {
|
126 |
+
rgb = rgb.replace(/^\s+/,"").replace(/\s+$/,"").split(/\s*,\s*/); var RGB = "#";
|
127 |
+
if (rgb.length !== 3)
|
128 |
+
{this.TEX.Error(["ModelArg1","Color values for the %1 model require 3 numbers","rgb"])}
|
129 |
+
for (var i = 0; i < 3; i++) {
|
130 |
+
if (!rgb[i].match(/^(\d+(\.\d*)?|\.\d+)$/))
|
131 |
+
{this.TEX.Error(["InvalidDecimalNumber","Invalid decimal number"])}
|
132 |
+
var n = parseFloat(rgb[i]);
|
133 |
+
if (n < 0 || n > 1) {
|
134 |
+
this.TEX.Error(["ModelArg2",
|
135 |
+
"Color values for the %1 model must be between %2 and %3",
|
136 |
+
"rgb",0,1]);
|
137 |
+
}
|
138 |
+
n = Math.floor(n*255).toString(16); if (n.length < 2) {n = "0"+n}
|
139 |
+
RGB += n;
|
140 |
+
}
|
141 |
+
return RGB;
|
142 |
+
},
|
143 |
+
|
144 |
+
/*
|
145 |
+
* Get an RGB color
|
146 |
+
*/
|
147 |
+
get_RGB: function (rgb) {
|
148 |
+
rgb = rgb.replace(/^\s+/,"").replace(/\s+$/,"").split(/\s*,\s*/); var RGB = "#";
|
149 |
+
if (rgb.length !== 3)
|
150 |
+
{this.TEX.Error(["ModelArg1","Color values for the %1 model require 3 numbers","RGB"])}
|
151 |
+
for (var i = 0; i < 3; i++) {
|
152 |
+
if (!rgb[i].match(/^\d+$/))
|
153 |
+
{this.TEX.Error(["InvalidNumber","Invalid number"])}
|
154 |
+
var n = parseInt(rgb[i]);
|
155 |
+
if (n > 255) {
|
156 |
+
this.TEX.Error(["ModelArg2",
|
157 |
+
"Color values for the %1 model must be between %2 and %3",
|
158 |
+
"RGB",0,255]);
|
159 |
+
}
|
160 |
+
n = n.toString(16); if (n.length < 2) {n = "0"+n}
|
161 |
+
RGB += n;
|
162 |
+
}
|
163 |
+
return RGB;
|
164 |
+
},
|
165 |
+
|
166 |
+
/*
|
167 |
+
* Get a gray-scale value
|
168 |
+
*/
|
169 |
+
get_gray: function (gray) {
|
170 |
+
if (!gray.match(/^\s*(\d+(\.\d*)?|\.\d+)\s*$/))
|
171 |
+
{this.TEX.Error(["InvalidDecimalNumber","Invalid decimal number"])}
|
172 |
+
var n = parseFloat(gray);
|
173 |
+
if (n < 0 || n > 1) {
|
174 |
+
this.TEX.Error(["ModelArg2",
|
175 |
+
"Color values for the %1 model must be between %2 and %3",
|
176 |
+
"gray",0,1]);
|
177 |
+
}
|
178 |
+
n = Math.floor(n*255).toString(16); if (n.length < 2) {n = "0"+n}
|
179 |
+
return "#"+n+n+n;
|
180 |
+
},
|
181 |
+
|
182 |
+
/*
|
183 |
+
* Get a named value
|
184 |
+
*/
|
185 |
+
get_named: function (name) {
|
186 |
+
if (this.colors.hasOwnProperty(name)) {return this.colors[name]}
|
187 |
+
return name;
|
188 |
+
},
|
189 |
+
|
190 |
+
padding: function () {
|
191 |
+
var pad = "+"+this.config.padding;
|
192 |
+
var unit = this.config.padding.replace(/^.*?([a-z]*)$/,"$1");
|
193 |
+
var pad2 = "+"+(2*parseFloat(pad))+unit;
|
194 |
+
return {width:pad2, height:pad, depth:pad, lspace:this.config.padding};
|
195 |
+
}
|
196 |
+
|
197 |
+
};
|
198 |
+
|
199 |
+
MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
200 |
+
var TEX = MathJax.InputJax.TeX,
|
201 |
+
MML = MathJax.ElementJax.mml;
|
202 |
+
var STACKITEM = TEX.Stack.Item;
|
203 |
+
var COLOR = MathJax.Extension["TeX/color"];
|
204 |
+
|
205 |
+
COLOR.TEX = TEX; // for reference in getColor above
|
206 |
+
|
207 |
+
TEX.Definitions.Add({
|
208 |
+
macros: {
|
209 |
+
color: "Color",
|
210 |
+
textcolor: "TextColor",
|
211 |
+
definecolor: "DefineColor",
|
212 |
+
colorbox: "ColorBox",
|
213 |
+
fcolorbox: "fColorBox"
|
214 |
+
}
|
215 |
+
},null,true);
|
216 |
+
|
217 |
+
TEX.Parse.Augment({
|
218 |
+
|
219 |
+
//
|
220 |
+
// Override \color macro definition
|
221 |
+
//
|
222 |
+
Color: function (name) {
|
223 |
+
var model = this.GetBrackets(name),
|
224 |
+
color = this.GetArgument(name);
|
225 |
+
color = COLOR.getColor(model,color);
|
226 |
+
var mml = STACKITEM.style().With({styles:{mathcolor:color}});
|
227 |
+
this.stack.env.color = color;
|
228 |
+
this.Push(mml);
|
229 |
+
},
|
230 |
+
|
231 |
+
TextColor: function (name) {
|
232 |
+
var model = this.GetBrackets(name),
|
233 |
+
color = this.GetArgument(name);
|
234 |
+
color = COLOR.getColor(model,color);
|
235 |
+
var old = this.stack.env.color; this.stack.env.color = color;
|
236 |
+
var math = this.ParseArg(name);
|
237 |
+
if (old) {this.stack.env.color} else {delete this.stack.env.color}
|
238 |
+
this.Push(MML.mstyle(math).With({mathcolor: color}));
|
239 |
+
},
|
240 |
+
|
241 |
+
//
|
242 |
+
// Define the \definecolor macro
|
243 |
+
//
|
244 |
+
DefineColor: function (name) {
|
245 |
+
var cname = this.GetArgument(name),
|
246 |
+
model = this.GetArgument(name),
|
247 |
+
def = this.GetArgument(name);
|
248 |
+
COLOR.colors[cname] = COLOR.getColor(model,def);
|
249 |
+
},
|
250 |
+
|
251 |
+
//
|
252 |
+
// Produce a text box with a colored background
|
253 |
+
//
|
254 |
+
ColorBox: function (name) {
|
255 |
+
var cname = this.GetArgument(name),
|
256 |
+
arg = this.InternalMath(this.GetArgument(name));
|
257 |
+
this.Push(MML.mpadded.apply(MML,arg).With({
|
258 |
+
mathbackground:COLOR.getColor("named",cname)
|
259 |
+
}).With(COLOR.padding()));
|
260 |
+
},
|
261 |
+
|
262 |
+
//
|
263 |
+
// Procude a framed text box with a colored background
|
264 |
+
//
|
265 |
+
fColorBox: function (name) {
|
266 |
+
var fname = this.GetArgument(name),
|
267 |
+
cname = this.GetArgument(name),
|
268 |
+
arg = this.InternalMath(this.GetArgument(name));
|
269 |
+
this.Push(MML.mpadded.apply(MML,arg).With({
|
270 |
+
mathbackground: COLOR.getColor("named",cname),
|
271 |
+
style: "border: "+COLOR.config.border+" solid "+COLOR.getColor("named",fname)
|
272 |
+
}).With(COLOR.padding()));
|
273 |
+
}
|
274 |
+
|
275 |
+
});
|
276 |
+
|
277 |
+
MathJax.Hub.Startup.signal.Post("TeX color Ready");
|
278 |
+
|
279 |
+
});
|
280 |
+
|
281 |
+
MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/color.js");
|
vendor/MathJax/extensions/TeX/enclose.js
ADDED
@@ -0,0 +1,91 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax/extensions/TeX/enclose.js
|
7 |
+
*
|
8 |
+
* Implements the \enclose macros, which give access from TeX to the
|
9 |
+
* <menclose> tag in the MathML that underlies MathJax's internal format.
|
10 |
+
*
|
11 |
+
* Usage:
|
12 |
+
*
|
13 |
+
* \enclose{notation}{math} % enclose math using given notation
|
14 |
+
* \enclose{notation,notation,...}{math} % enclose with several notations
|
15 |
+
* \enclose{notation}[attributes]{math} % enclose with attributes
|
16 |
+
*
|
17 |
+
* ---------------------------------------------------------------------
|
18 |
+
*
|
19 |
+
* Copyright (c) 2011-2018 The MathJax Consortium
|
20 |
+
*
|
21 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
22 |
+
* you may not use this file except in compliance with the License.
|
23 |
+
* You may obtain a copy of the License at
|
24 |
+
*
|
25 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
26 |
+
*
|
27 |
+
* Unless required by applicable law or agreed to in writing, software
|
28 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
29 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
30 |
+
* See the License for the specific language governing permissions and
|
31 |
+
* limitations under the License.
|
32 |
+
*/
|
33 |
+
|
34 |
+
MathJax.Extension["TeX/enclose"] = {
|
35 |
+
version: "2.7.5",
|
36 |
+
|
37 |
+
//
|
38 |
+
// The attributes allowed in \enclose{notation}[attributes]{math}
|
39 |
+
//
|
40 |
+
ALLOWED: {
|
41 |
+
arrow: 1,
|
42 |
+
color: 1, mathcolor: 1,
|
43 |
+
background: 1, mathbackground: 1,
|
44 |
+
padding: 1,
|
45 |
+
thickness: 1
|
46 |
+
}
|
47 |
+
};
|
48 |
+
|
49 |
+
MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
50 |
+
var TEX = MathJax.InputJax.TeX,
|
51 |
+
MML = MathJax.ElementJax.mml,
|
52 |
+
ALLOW = MathJax.Extension["TeX/enclose"].ALLOWED;
|
53 |
+
|
54 |
+
//
|
55 |
+
// Set up macro
|
56 |
+
//
|
57 |
+
TEX.Definitions.Add({macros: {enclose: 'Enclose'}},null,true);
|
58 |
+
|
59 |
+
TEX.Parse.Augment({
|
60 |
+
//
|
61 |
+
// Implement \enclose{notation}[attr]{math}
|
62 |
+
// (create <menclose notation="notation">math</menclose>)
|
63 |
+
//
|
64 |
+
Enclose: function(name) {
|
65 |
+
var notation = this.GetArgument(name),
|
66 |
+
attr = this.GetBrackets(name),
|
67 |
+
math = this.ParseArg(name);
|
68 |
+
var def = {notation: notation.replace(/,/g," ")};
|
69 |
+
if (attr) {
|
70 |
+
attr = attr.replace(/ /g,"").split(/,/);
|
71 |
+
for (var i = 0, m = attr.length; i < m; i++) {
|
72 |
+
var keyvalue = attr[i].split(/[:=]/);
|
73 |
+
if (ALLOW[keyvalue[0]]) {
|
74 |
+
keyvalue[1] = keyvalue[1].replace(/^"(.*)"$/,"$1");
|
75 |
+
if (keyvalue[1] === "true") {keyvalue[1] = true}
|
76 |
+
if (keyvalue[1] === "false") {keyvalue[1] = false}
|
77 |
+
if (keyvalue[0] === "arrow" && keyvalue[1])
|
78 |
+
{def.notation = def.notation + " updiagonalarrow"} else
|
79 |
+
{def[keyvalue[0]] = keyvalue[1]}
|
80 |
+
}
|
81 |
+
}
|
82 |
+
}
|
83 |
+
this.Push(MML.menclose(math).With(def));
|
84 |
+
}
|
85 |
+
});
|
86 |
+
|
87 |
+
MathJax.Hub.Startup.signal.Post("TeX enclose Ready");
|
88 |
+
|
89 |
+
});
|
90 |
+
|
91 |
+
MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/enclose.js");
|
vendor/MathJax/extensions/TeX/extpfeil.js
ADDED
@@ -0,0 +1,102 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax/extensions/TeX/extpfeil.js
|
7 |
+
*
|
8 |
+
* Implements additional stretchy arrow macros.
|
9 |
+
*
|
10 |
+
* ---------------------------------------------------------------------
|
11 |
+
*
|
12 |
+
* Copyright (c) 2011-2018 The MathJax Consortium
|
13 |
+
*
|
14 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
15 |
+
* you may not use this file except in compliance with the License.
|
16 |
+
* You may obtain a copy of the License at
|
17 |
+
*
|
18 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
19 |
+
*
|
20 |
+
* Unless required by applicable law or agreed to in writing, software
|
21 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
22 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
23 |
+
* See the License for the specific language governing permissions and
|
24 |
+
* limitations under the License.
|
25 |
+
*/
|
26 |
+
|
27 |
+
MathJax.Extension["TeX/extpfeil"] = {
|
28 |
+
version: "2.7.5"
|
29 |
+
};
|
30 |
+
|
31 |
+
MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
32 |
+
|
33 |
+
var TEX = MathJax.InputJax.TeX,
|
34 |
+
TEXDEF = TEX.Definitions;
|
35 |
+
|
36 |
+
//
|
37 |
+
// Define the arrows to load the AMSmath extension
|
38 |
+
// (since they need its xArrow method)
|
39 |
+
//
|
40 |
+
TEXDEF.Add({
|
41 |
+
macros: {
|
42 |
+
xtwoheadrightarrow: ['Extension','AMSmath'],
|
43 |
+
xtwoheadleftarrow: ['Extension','AMSmath'],
|
44 |
+
xmapsto: ['Extension','AMSmath'],
|
45 |
+
xlongequal: ['Extension','AMSmath'],
|
46 |
+
xtofrom: ['Extension','AMSmath'],
|
47 |
+
Newextarrow: ['Extension','AMSmath']
|
48 |
+
}
|
49 |
+
},null,true);
|
50 |
+
|
51 |
+
//
|
52 |
+
// Redefine the macros when AMSmath is loaded
|
53 |
+
//
|
54 |
+
MathJax.Hub.Register.StartupHook("TeX AMSmath Ready",function () {
|
55 |
+
MathJax.Hub.Insert(TEXDEF,{
|
56 |
+
macros: {
|
57 |
+
xtwoheadrightarrow: ['xArrow',0x21A0,12,16],
|
58 |
+
xtwoheadleftarrow: ['xArrow',0x219E,17,13],
|
59 |
+
xmapsto: ['xArrow',0x21A6,6,7],
|
60 |
+
xlongequal: ['xArrow',0x003D,7,7],
|
61 |
+
xtofrom: ['xArrow',0x21C4,12,12],
|
62 |
+
Newextarrow: 'NewExtArrow'
|
63 |
+
}
|
64 |
+
});
|
65 |
+
});
|
66 |
+
|
67 |
+
//
|
68 |
+
// Implements \Newextarrow to define a new arrow (not compatible with \newextarrow, but
|
69 |
+
// the equivalent for MathJax)
|
70 |
+
//
|
71 |
+
TEX.Parse.Augment({
|
72 |
+
NewExtArrow: function (name) {
|
73 |
+
var cs = this.GetArgument(name),
|
74 |
+
space = this.GetArgument(name),
|
75 |
+
chr = this.GetArgument(name);
|
76 |
+
if (!cs.match(/^\\([a-z]+|.)$/i)) {
|
77 |
+
TEX.Error(["NewextarrowArg1",
|
78 |
+
"First argument to %1 must be a control sequence name",name]);
|
79 |
+
}
|
80 |
+
if (!space.match(/^(\d+),(\d+)$/)) {
|
81 |
+
TEX.Error(
|
82 |
+
["NewextarrowArg2",
|
83 |
+
"Second argument to %1 must be two integers separated by a comma",
|
84 |
+
name]
|
85 |
+
);
|
86 |
+
}
|
87 |
+
if (!chr.match(/^(\d+|0x[0-9A-F]+)$/i)) {
|
88 |
+
TEX.Error(
|
89 |
+
["NewextarrowArg3",
|
90 |
+
"Third argument to %1 must be a unicode character number",
|
91 |
+
name]
|
92 |
+
);
|
93 |
+
}
|
94 |
+
cs = cs.substr(1); space = space.split(","); chr = parseInt(chr);
|
95 |
+
this.setDef(cs, ['xArrow', chr, parseInt(space[0]), parseInt(space[1])]);
|
96 |
+
}
|
97 |
+
});
|
98 |
+
|
99 |
+
MathJax.Hub.Startup.signal.Post("TeX extpfeil Ready");
|
100 |
+
});
|
101 |
+
|
102 |
+
MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/extpfeil.js");
|
vendor/MathJax/extensions/TeX/mathchoice.js
ADDED
@@ -0,0 +1,107 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax/extensions/TeX/mathchoice.js
|
7 |
+
*
|
8 |
+
* Implements the \mathchoice macro (rarely used)
|
9 |
+
*
|
10 |
+
* ---------------------------------------------------------------------
|
11 |
+
*
|
12 |
+
* Copyright (c) 2009-2018 The MathJax Consortium
|
13 |
+
*
|
14 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
15 |
+
* you may not use this file except in compliance with the License.
|
16 |
+
* You may obtain a copy of the License at
|
17 |
+
*
|
18 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
19 |
+
*
|
20 |
+
* Unless required by applicable law or agreed to in writing, software
|
21 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
22 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
23 |
+
* See the License for the specific language governing permissions and
|
24 |
+
* limitations under the License.
|
25 |
+
*/
|
26 |
+
|
27 |
+
MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
28 |
+
var VERSION = "2.7.5";
|
29 |
+
|
30 |
+
var MML = MathJax.ElementJax.mml;
|
31 |
+
var TEX = MathJax.InputJax.TeX;
|
32 |
+
var TEXDEF = TEX.Definitions;
|
33 |
+
|
34 |
+
TEXDEF.Add({macros: {mathchoice: 'MathChoice'}},null,true);
|
35 |
+
|
36 |
+
TEX.Parse.Augment({
|
37 |
+
MathChoice: function (name) {
|
38 |
+
var D = this.ParseArg(name),
|
39 |
+
T = this.ParseArg(name),
|
40 |
+
S = this.ParseArg(name),
|
41 |
+
SS = this.ParseArg(name);
|
42 |
+
this.Push(MML.TeXmathchoice(D,T,S,SS));
|
43 |
+
}
|
44 |
+
});
|
45 |
+
|
46 |
+
MML.TeXmathchoice = MML.mbase.Subclass({
|
47 |
+
type: "TeXmathchoice", notParent: true,
|
48 |
+
choice: function () {
|
49 |
+
if (this.selection != null) return this.selection;
|
50 |
+
if (this.choosing) return 2; // prevent infinite loops: see issue #1151
|
51 |
+
this.choosing = true;
|
52 |
+
var selection = 0, values = this.getValues("displaystyle","scriptlevel");
|
53 |
+
if (values.scriptlevel > 0) {selection = Math.min(3,values.scriptlevel+1)}
|
54 |
+
else {selection = (values.displaystyle ? 0 : 1)}
|
55 |
+
// only cache the result if we are actually in place in a <math> tag.
|
56 |
+
var node = this.inherit; while (node && node.type !== "math") node = node.inherit;
|
57 |
+
if (node) this.selection = selection;
|
58 |
+
this.choosing = false;
|
59 |
+
return selection;
|
60 |
+
},
|
61 |
+
selected: function () {return this.data[this.choice()]},
|
62 |
+
setTeXclass: function (prev) {return this.selected().setTeXclass(prev)},
|
63 |
+
isSpacelike: function () {return this.selected().isSpacelike()},
|
64 |
+
isEmbellished: function () {return this.selected().isEmbellished()},
|
65 |
+
Core: function () {return this.selected()},
|
66 |
+
CoreMO: function () {return this.selected().CoreMO()},
|
67 |
+
toHTML: function (span) {
|
68 |
+
span = this.HTMLcreateSpan(span);
|
69 |
+
span.bbox = this.Core().toHTML(span).bbox;
|
70 |
+
// Firefox doesn't correctly handle a span with a negatively sized content,
|
71 |
+
// so move marginLeft to main span (this is a hack to get \iiiint to work).
|
72 |
+
// FIXME: This is a symptom of a more general problem with Firefox, and
|
73 |
+
// there probably needs to be a more general solution (e.g., modifying
|
74 |
+
// HTMLhandleSpace() to get the width and adjust the right margin to
|
75 |
+
// compensate for negative-width contents)
|
76 |
+
if (span.firstChild && span.firstChild.style.marginLeft) {
|
77 |
+
span.style.marginLeft = span.firstChild.style.marginLeft;
|
78 |
+
span.firstChild.style.marginLeft = "";
|
79 |
+
}
|
80 |
+
return span;
|
81 |
+
},
|
82 |
+
toSVG: function () {
|
83 |
+
var svg = this.Core().toSVG();
|
84 |
+
this.SVGsaveData(svg);
|
85 |
+
return svg;
|
86 |
+
},
|
87 |
+
toCommonHTML: function (node) {
|
88 |
+
node = this.CHTMLcreateNode(node);
|
89 |
+
this.CHTMLhandleStyle(node);
|
90 |
+
this.CHTMLhandleColor(node);
|
91 |
+
this.CHTMLaddChild(node,this.choice(),{});
|
92 |
+
return node;
|
93 |
+
},
|
94 |
+
toPreviewHTML: function(span) {
|
95 |
+
span = this.PHTMLcreateSpan(span);
|
96 |
+
this.PHTMLhandleStyle(span);
|
97 |
+
this.PHTMLhandleColor(span);
|
98 |
+
this.PHTMLaddChild(span,this.choice(),{});
|
99 |
+
return span;
|
100 |
+
}
|
101 |
+
});
|
102 |
+
|
103 |
+
MathJax.Hub.Startup.signal.Post("TeX mathchoice Ready");
|
104 |
+
|
105 |
+
});
|
106 |
+
|
107 |
+
MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/mathchoice.js");
|
vendor/MathJax/extensions/TeX/mediawiki-texvc.js
ADDED
@@ -0,0 +1,137 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*************************************************************
|
2 |
+
*
|
3 |
+
* MathJax/extensions/TeX/mediawiki-texvc.js
|
4 |
+
*
|
5 |
+
* Implements macros used by mediawiki with their texvc preprocessor.
|
6 |
+
*
|
7 |
+
* ---------------------------------------------------------------------
|
8 |
+
*
|
9 |
+
* Copyright (c) 2015-2018 The MathJax Consortium
|
10 |
+
*
|
11 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
12 |
+
* you may not use this file except in compliance with the License.
|
13 |
+
* You may obtain a copy of the License at
|
14 |
+
*
|
15 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
16 |
+
*
|
17 |
+
* Unless required by applicable law or agreed to in writing, software
|
18 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
19 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
20 |
+
* See the License for the specific language governing permissions and
|
21 |
+
* limitations under the License.
|
22 |
+
*/
|
23 |
+
|
24 |
+
MathJax.Extension["TeX/mediawiki-texvc"] = {
|
25 |
+
version: "2.7.5"
|
26 |
+
};
|
27 |
+
|
28 |
+
MathJax.Hub.Register.StartupHook("TeX Jax Ready", function () {
|
29 |
+
MathJax.InputJax.TeX.Definitions.Add({
|
30 |
+
macros: {
|
31 |
+
AA: ["Macro", "\u00c5"],
|
32 |
+
alef: ["Macro", "\\aleph"],
|
33 |
+
alefsym: ["Macro", "\\aleph"],
|
34 |
+
Alpha: ["Macro", "\\mathrm{A}"],
|
35 |
+
and: ["Macro", "\\land"],
|
36 |
+
ang: ["Macro", "\\angle"],
|
37 |
+
Bbb: ["Macro", "\\mathbb"],
|
38 |
+
Beta: ["Macro", "\\mathrm{B}"],
|
39 |
+
bold: ["Macro", "\\mathbf"],
|
40 |
+
bull: ["Macro", "\\bullet"],
|
41 |
+
C: ["Macro", "\\mathbb{C}"],
|
42 |
+
Chi: ["Macro", "\\mathrm{X}"],
|
43 |
+
clubs: ["Macro", "\\clubsuit"],
|
44 |
+
cnums: ["Macro", "\\mathbb{C}"],
|
45 |
+
Complex: ["Macro", "\\mathbb{C}"],
|
46 |
+
coppa: ["Macro", "\u03D9"],
|
47 |
+
Coppa: ["Macro", "\u03D8"],
|
48 |
+
Dagger: ["Macro", "\\ddagger"],
|
49 |
+
Digamma: ["Macro", "\u03DC"],
|
50 |
+
darr: ["Macro", "\\downarrow"],
|
51 |
+
dArr: ["Macro", "\\Downarrow"],
|
52 |
+
Darr: ["Macro", "\\Downarrow"],
|
53 |
+
dashint: ["Macro", "\\unicodeInt{x2A0D}"],
|
54 |
+
ddashint: ["Macro", "\\unicodeInt{x2A0E}"],
|
55 |
+
diamonds: ["Macro", "\\diamondsuit"],
|
56 |
+
empty: ["Macro", "\\emptyset"],
|
57 |
+
Epsilon: ["Macro", "\\mathrm{E}"],
|
58 |
+
Eta: ["Macro", "\\mathrm{H}"],
|
59 |
+
euro: ["Macro", "\u20AC"],
|
60 |
+
exist: ["Macro", "\\exists"],
|
61 |
+
geneuro: ["Macro", "\u20AC"],
|
62 |
+
geneuronarrow: ["Macro", "\u20AC"],
|
63 |
+
geneurowide: ["Macro", "\u20AC"],
|
64 |
+
H: ["Macro", "\\mathbb{H}"],
|
65 |
+
hAar: ["Macro", "\\Leftrightarrow"],
|
66 |
+
harr: ["Macro", "\\leftrightarrow"],
|
67 |
+
Harr: ["Macro", "\\Leftrightarrow"],
|
68 |
+
hearts: ["Macro", "\\heartsuit"],
|
69 |
+
image: ["Macro", "\\Im"],
|
70 |
+
infin: ["Macro", "\\infty"],
|
71 |
+
Iota: ["Macro", "\\mathrm{I}"],
|
72 |
+
isin: ["Macro", "\\in"],
|
73 |
+
Kappa: ["Macro", "\\mathrm{K}"],
|
74 |
+
koppa: ["Macro", "\u03DF"],
|
75 |
+
Koppa: ["Macro", "\u03DE"],
|
76 |
+
lang: ["Macro", "\\langle"],
|
77 |
+
larr: ["Macro", "\\leftarrow"],
|
78 |
+
Larr: ["Macro", "\\Leftarrow"],
|
79 |
+
lArr: ["Macro", "\\Leftarrow"],
|
80 |
+
lrarr: ["Macro", "\\leftrightarrow"],
|
81 |
+
Lrarr: ["Macro", "\\Leftrightarrow"],
|
82 |
+
lrArr: ["Macro", "\\Leftrightarrow"],
|
83 |
+
Mu: ["Macro", "\\mathrm{M}"],
|
84 |
+
N: ["Macro", "\\mathbb{N}"],
|
85 |
+
natnums: ["Macro", "\\mathbb{N}"],
|
86 |
+
Nu: ["Macro", "\\mathrm{N}"],
|
87 |
+
O: ["Macro", "\\emptyset"],
|
88 |
+
oint: ["Macro", "\\unicodeInt{x222E}"],
|
89 |
+
oiint: ["Macro", "\\unicodeInt{x222F}"],
|
90 |
+
oiiint: ["Macro", "\\unicodeInt{x2230}"],
|
91 |
+
ointctrclockwise: ["Macro", "\\unicodeInt{x2233}"],
|
92 |
+
officialeuro: ["Macro", "\u20AC"],
|
93 |
+
Omicron: ["Macro", "\\mathrm{O}"],
|
94 |
+
or: ["Macro", "\\lor"],
|
95 |
+
P: ["Macro", "\u00B6"],
|
96 |
+
pagecolor: ['Macro','',1], // ignore \pagecolor{}
|
97 |
+
part: ["Macro", "\\partial"],
|
98 |
+
plusmn: ["Macro", "\\pm"],
|
99 |
+
Q: ["Macro", "\\mathbb{Q}"],
|
100 |
+
R: ["Macro", "\\mathbb{R}"],
|
101 |
+
rang: ["Macro", "\\rangle"],
|
102 |
+
rarr: ["Macro", "\\rightarrow"],
|
103 |
+
Rarr: ["Macro", "\\Rightarrow"],
|
104 |
+
rArr: ["Macro", "\\Rightarrow"],
|
105 |
+
real: ["Macro", "\\Re"],
|
106 |
+
reals: ["Macro", "\\mathbb{R}"],
|
107 |
+
Reals: ["Macro", "\\mathbb{R}"],
|
108 |
+
Rho: ["Macro", "\\mathrm{P}"],
|
109 |
+
sdot: ["Macro", "\\cdot"],
|
110 |
+
sampi: ["Macro", "\u03E1"],
|
111 |
+
Sampi: ["Macro", "\u03E0"],
|
112 |
+
sect: ["Macro", "\\S"],
|
113 |
+
spades: ["Macro", "\\spadesuit"],
|
114 |
+
stigma: ["Macro", "\u03DB"],
|
115 |
+
Stigma: ["Macro", "\u03DA"],
|
116 |
+
sub: ["Macro", "\\subset"],
|
117 |
+
sube: ["Macro", "\\subseteq"],
|
118 |
+
supe: ["Macro", "\\supseteq"],
|
119 |
+
Tau: ["Macro", "\\mathrm{T}"],
|
120 |
+
textvisiblespace: ["Macro", "\u2423"],
|
121 |
+
thetasym: ["Macro", "\\vartheta"],
|
122 |
+
uarr: ["Macro", "\\uparrow"],
|
123 |
+
uArr: ["Macro", "\\Uparrow"],
|
124 |
+
Uarr: ["Macro", "\\Uparrow"],
|
125 |
+
unicodeInt: ["Macro", "\\mathop{\\vcenter{\\mathchoice{\\huge\\unicode{#1}\\,}{\\unicode{#1}}{\\unicode{#1}}{\\unicode{#1}}}\\,}\\nolimits", 1],
|
126 |
+
varcoppa: ["Macro", "\u03D9"],
|
127 |
+
varstigma: ["Macro", "\u03DB"],
|
128 |
+
varointclockwise: ["Macro", "\\unicodeInt{x2232}"],
|
129 |
+
vline: ['Macro','\\smash{\\large\\lvert}',0],
|
130 |
+
weierp: ["Macro", "\\wp"],
|
131 |
+
Z: ["Macro", "\\mathbb{Z}"],
|
132 |
+
Zeta: ["Macro", "\\mathrm{Z}"]
|
133 |
+
}
|
134 |
+
});
|
135 |
+
});
|
136 |
+
|
137 |
+
MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/mediawiki-texvc.js");
|
vendor/MathJax/extensions/TeX/mhchem.js
ADDED
@@ -0,0 +1,520 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */
|
2 |
+
/* vim: set ts=2 et sw=2 tw=80: */
|
3 |
+
|
4 |
+
/*************************************************************
|
5 |
+
*
|
6 |
+
* MathJax/extensions/TeX/mhchem.js
|
7 |
+
*
|
8 |
+
* Implements the \ce command for handling chemical formulas
|
9 |
+
* from the mhchem LaTeX package.
|
10 |
+
*
|
11 |
+
* ---------------------------------------------------------------------
|
12 |
+
*
|
13 |
+
* Copyright (c) 2011-2018 The MathJax Consortium
|
14 |
+
*
|
15 |
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
16 |
+
* you may not use this file except in compliance with the License.
|
17 |
+
* You may obtain a copy of the License at
|
18 |
+
*
|
19 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
20 |
+
*
|
21 |
+
* Unless required by applicable law or agreed to in writing, software
|
22 |
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
23 |
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
24 |
+
* See the License for the specific language governing permissions and
|
25 |
+
* limitations under the License.
|
26 |
+
*/
|
27 |
+
|
28 |
+
|
29 |
+
//
|
30 |
+
// Don't replace [Contrib]/mhchem if it is already loaded
|
31 |
+
//
|
32 |
+
if (MathJax.Extension["TeX/mhchem"]) {
|
33 |
+
MathJax.Ajax.loadComplete("[MathJax]/extensions/TeX/mhchem.js");
|
34 |
+
} else {
|
35 |
+
|
36 |
+
MathJax.Extension["TeX/mhchem"] = {
|
37 |
+
version: "2.7.5",
|
38 |
+
config: MathJax.Hub.CombineConfig("TeX.mhchem",{
|
39 |
+
legacy: true
|
40 |
+
})
|
41 |
+
};
|
42 |
+
|
43 |
+
//
|
44 |
+
// Load [mhchem]/mhchem.js if not configured for legacy vesion
|
45 |
+
//
|
46 |
+
if (!MathJax.Extension["TeX/mhchem"].config.legacy) {
|
47 |
+
if (!MathJax.Ajax.config.path.mhchem) {
|
48 |
+
MathJax.Ajax.config.path.mhchem = MathJax.Hub.config.root + "/extensions/TeX/mhchem3";
|
49 |
+
}
|
50 |
+
MathJax.Callback.Queue(
|
51 |
+
["Require",MathJax.Ajax,"[mhchem]/mhchem.js"],
|
52 |
+
["loadComplete",MathJax.Ajax,"[MathJax]/extensions/TeX/mhchem.js"]
|
53 |
+
);
|
54 |
+
} else {
|
55 |
+
|
56 |
+
MathJax.Hub.Register.StartupHook("TeX Jax Ready",function () {
|
57 |
+
|
58 |
+
var TEX = MathJax.InputJax.TeX;
|
59 |
+
|
60 |
+
/*
|
61 |
+
* This is the main class for handing the \ce and related commands.
|
62 |
+
* Its main method is Parse() which takes the argument to \ce and
|
63 |
+
* returns the corresponding TeX string.
|
64 |
+
*/
|
65 |
+
|
66 |
+
var CE = MathJax.Object.Subclass({
|
67 |
+
string: "", // the \ce string being parsed
|
68 |
+
i: 0, // the current position in the string
|
69 |
+
tex: "", // the partially processed TeX result
|
70 |
+
TEX: "", // the full TeX result
|
71 |
+
atom: false, // last processed token is an atom
|
72 |
+
sup: "", // pending superscript
|
73 |
+
sub: "", // pending subscript
|
74 |
+
presup: "", // pending pre-superscript
|
75 |
+
presub: "", // pending pre-subscript
|
76 |
+
|
77 |
+
//
|
78 |
+
// Store the string when a CE object is created
|
79 |
+
//
|
80 |
+
Init: function (string) {this.string = string},
|
81 |
+
|
82 |
+
//
|
83 |
+
// These are the special characters and the methods that
|
84 |
+
// handle them. All others are passed through verbatim.
|
85 |
+
//
|
86 |
+
ParseTable: {
|
87 |
+
'-': "Minus",
|
88 |
+
'+': "Plus",
|
89 |
+
'(': "Open",
|
90 |
+
')': "Close",
|
91 |
+
'[': "Open",
|
92 |
+
']': "Close",
|
93 |
+
'<': "Less",
|
94 |
+
'^': "Superscript",
|
95 |
+
'_': "Subscript",
|
96 |
+
'*': "Dot",
|
97 |
+
'.': "Dot",
|
98 |
+
'=': "Equal",
|
99 |
+
'#': "Pound",
|
100 |
+
'$': "Math",
|
101 |
+
'\\': "Macro",
|
102 |
+
' ': "Space"
|
103 |
+
},
|
104 |
+
//
|
105 |
+
// Basic arrow names for reactions
|
106 |
+
//
|
107 |
+
Arrows: {
|
108 |
+
'->': "rightarrow",
|
109 |
+
'<-': "leftarrow",
|
110 |
+
'<->': "leftrightarrow",
|
111 |
+
'<=>': "rightleftharpoons",
|
112 |
+
'<=>>': "Rightleftharpoons",
|
113 |
+
'<<=>': "Leftrightharpoons",
|
114 |
+
'^': "uparrow",
|
115 |
+
'v': "downarrow"
|
116 |
+
},
|
117 |
+
|
118 |
+
//
|
119 |
+
// Implementations for the various bonds
|
120 |
+
// (the ~ ones are hacks that don't work well in NativeMML)
|
121 |
+
//
|
122 |
+
Bonds: {
|
123 |
+
'-': "-",
|
124 |
+
'=': "=",
|
125 |
+
'#': "\\equiv",
|
126 |
+
'~': "\\tripledash",
|
127 |
+
'~-': "\\begin{CEstack}{}\\tripledash\\\\-\\end{CEstack}",
|
128 |
+
'~=': "\\raise2mu{\\begin{CEstack}{}\\tripledash\\\\-\\\\-\\end{CEstack}}",
|
129 |
+
'~--': "\\raise2mu{\\begin{CEstack}{}\\tripledash\\\\-\\\\-\\end{CEstack}}",
|
130 |
+
'-~-': "\\raise2mu{\\begin{CEstack}{}-\\\\\\tripledash\\\\-\\end{CEstack}}",
|
131 |
+
'...': "{\\cdot}{\\cdot}{\\cdot}",
|
132 |
+
'....': "{\\cdot}{\\cdot}{\\cdot}{\\cdot}",
|
133 |
+
'->': "\\rightarrow",
|
134 |
+
'<-': "\\leftarrow",
|
135 |
+
'??': "\\text{??}" // unknown bond
|
136 |
+
},
|
137 |
+
|
138 |
+
//
|
139 |
+
// This converts the CE string to a TeX string.
|
140 |
+
// It loops through the string and calls the proper
|
141 |
+
// method depending on the ccurrent character.
|
142 |
+
//
|
143 |
+
Parse: function () {
|
144 |
+
this.tex = ""; this.atom = false;
|
145 |
+
while (this.i < this.string.length) {
|
146 |
+
var c = this.string.charAt(this.i);
|
147 |
+
if (c.match(/[a-z]/i)) {this.ParseLetter()}
|
148 |
+
else if (c.match(/[0-9]/)) {this.ParseNumber()}
|
149 |
+
else {this["Parse"+(this.ParseTable[c]||"Other")](c)}
|
150 |
+
}
|
151 |
+
this.FinishAtom(true);
|
152 |
+
return this.TEX;
|
153 |
+
},
|
154 |
+
|
155 |
+
//
|
156 |
+
// Make an atom name or a down arrow
|
157 |
+
//
|
158 |
+
ParseLetter: function () {
|
159 |
+
this.FinishAtom();
|
160 |
+
if (this.Match(/^v( |$)/)) {
|
161 |
+
this.tex += "{\\"+this.Arrows["v"]+"}";
|
162 |
+
} else {
|
163 |
+
this.tex += "\\text{"+this.Match(/^[a-z]+/i)+"}";
|
164 |
+
this.atom = true;
|
165 |
+
}
|
166 |
+
},
|
167 |
+
|
168 |
+
//
|
169 |
+
// Make a number or fraction preceding an atom,
|
170 |
+
// or a subscript for an atom.
|
171 |
+
//
|
172 |
+
ParseNumber: function () {
|
173 |
+
var n = this.Match(/^\d+/);
|
174 |
+
if (this.atom && !this.sub) {
|
175 |
+
this.sub = n;
|
176 |
+
} else {
|
177 |
+
this.FinishAtom();
|
178 |
+
var match = this.Match(/^\/\d+/);
|
179 |
+
if (match) {
|
180 |
+
var frac = "\\frac{"+n+"}{"+match.substr(1)+"}";
|
181 |
+
this.tex += "\\mathchoice{\\textstyle"+frac+"}{"+frac+"}{"+frac+"}{"+frac+"}";
|
182 |
+
} else {
|
183 |
+
this.tex += n;
|
184 |
+
if (this.i < this.string.length) {this.tex += "\\,"}
|
185 |
+
}
|
186 |
+
}
|
187 |
+
},
|
188 |
+
|
189 |
+
//
|
190 |
+
// Make a superscript minus, or an arrow, or a single bond.
|
191 |
+
//
|
192 |
+
ParseMinus: function (c) {
|
193 |
+
if (this.atom && (this.i === this.string.length-1 || this.string.charAt(this.i+1) === " ")) {
|
194 |
+
this.sup += c;
|
195 |
+
} else {
|
196 |
+
this.FinishAtom();
|
197 |
+
if (this.string.substr(this.i,2) === "->") {this.i += 2; this.AddArrow("->"); return}
|
198 |
+
else {this.tex += "{-}"}
|
199 |
+
}
|
200 |
+
this.i++;
|
201 |
+
},
|
202 |
+
|
203 |
+
//
|
204 |
+
// Make a superscript plus, or pass it through
|
205 |
+
//
|
206 |
+
ParsePlus: function (c) {
|
207 |
+
if (this.atom) {this.sup += c} else {this.FinishAtom(); this.tex += c}
|
208 |
+
this.i++;
|
209 |
+
},
|
210 |
+
|
211 |
+
//
|
212 |
+
// Handle dots and double or triple bonds
|
213 |
+
//
|
214 |
+
ParseDot: function (c) {this.FinishAtom(); this.tex += "\\cdot "; this.i++},
|
215 |
+
ParseEqual: function (c) {this.FinishAtom(); this.tex += "{=}"; this.i++},
|
216 |
+
ParsePound: function (c) {this.FinishAtom(); this.tex += "{\\equiv}"; this.i++},
|
217 |
+
|
218 |
+
//
|
219 |
+
// Look for (v) or (^), or pass it through
|
220 |
+
//
|
221 |
+
ParseOpen: function (c) {
|
222 |
+
this.FinishAtom();
|
223 |
+
var match = this.Match(/^\([v^]\)/);
|
224 |
+
if (match) {this.tex += "{\\"+this.Arrows[match.charAt(1)]+"}"}
|
225 |
+
else {this.tex += "{"+c; this.i++}
|
226 |
+
},
|
227 |
+
//
|
228 |
+
// Allow ) and ] to get super- and subscripts
|
229 |
+
//
|
230 |
+
ParseClose: function (c) {this.FinishAtom(); this.atom = true; this.tex += c+"}"; this.i++},
|
231 |
+
|
232 |
+
//
|
233 |
+
// Make the proper arrow
|
234 |
+
//
|
235 |
+
ParseLess: function (c) {
|
236 |
+
this.FinishAtom();
|
237 |
+
var arrow = this.Match(/^(<->?|<=>>?|<<=>)/);
|
238 |
+
if (!arrow) {this.tex += c; this.i++} else {this.AddArrow(arrow)}
|
239 |
+
},
|
240 |
+
|
241 |
+
//
|
242 |
+
// Look for a superscript, or an up arrow
|
243 |
+
//
|
244 |
+
ParseSuperscript: function (c) {
|
245 |
+
c = this.string.charAt(++this.i);
|
246 |
+
if (c === "{") {
|
247 |
+
this.i++; var m = this.Find("}");
|
248 |
+
if (m === "-.") {this.sup += "{-}{\\cdot}"}
|
249 |
+
else if (m) {this.sup += CE(m).Parse().replace(/^\{-\}/,"-")}
|
250 |
+
} else if (c === " " || c === "") {
|
251 |
+
this.tex += "{\\"+this.Arrows["^"]+"}"; this.i++;
|
252 |
+
} else {
|
253 |
+
var n = this.Match(/^(\d+|-\.)/);
|
254 |
+
if (n) {this.sup += n}
|
255 |
+
}
|
256 |
+
},
|
257 |
+
//
|
258 |
+
// Look for subscripts
|
259 |
+
//
|
260 |
+
ParseSubscript: function (c) {
|
261 |
+
if (this.string.charAt(++this.i) == "{") {
|
262 |
+
this.i++; this.sub += CE(this.Find("}")).Parse().replace(/^\{-\}/,"-");
|
263 |
+
} else {
|
264 |
+
var n = this.Match(/^\d+/);
|
265 |
+
if (n) {this.sub += n}
|
266 |
+
}
|
267 |
+
},
|
268 |
+
|
269 |
+
//
|
270 |
+
// Look for raw TeX code to include
|
271 |
+
//
|
272 |
+
ParseMath: function (c) {
|
273 |
+
this.FinishAtom();
|
274 |
+
this.i++; this.tex += this.Find(c);
|
275 |
+
},
|
276 |
+
|
277 |
+
//
|
278 |
+
// Look for specific macros for bonds
|
279 |
+
// and allow \} to have subscripts
|
280 |
+
//
|
281 |
+
ParseMacro: function (c) {
|
282 |
+
this.FinishAtom();
|
283 |
+
this.i++; var match = this.Match(/^([a-z]+|.)/i)||" ";
|
284 |
+
if (match === "sbond") {this.tex += "{-}"}
|
285 |
+
else if (match === "dbond") {this.tex += "{=}"}
|
286 |
+
else if (match === "tbond") {this.tex += "{\\equiv}"}
|
287 |
+
else if (match === "bond") {
|
288 |
+
var bond = (this.Match(/^\{.*?\}/)||"");
|
289 |
+
bond = bond.substr(1,bond.length-2);
|
290 |
+
this.tex += "{"+(this.Bonds[bond]||"\\text{??}")+"}";
|
291 |
+
}
|
292 |
+
else if (match === "{") {this.tex += "{\\{"}
|
293 |
+
else if (match === "}") {this.tex += "\\}}"; this.atom = true}
|
294 |
+
else {this.tex += c+match}
|
295 |
+
},
|
296 |
+
|
297 |
+
//
|
298 |
+
// Ignore spaces
|
299 |
+
//
|
300 |
+
ParseSpace: function (c) {this.FinishAtom(); this.i++},
|
301 |
+
|
302 |
+
//
|
303 |
+
// Pass anything else on verbatim
|
304 |
+
//
|
305 |
+
ParseOther: function (c) {this.FinishAtom(); this.tex += c; this.i++},
|
306 |
+
|
307 |
+
//
|
308 |
+
// Process an arrow (looking for brackets for above and below)
|
309 |
+
//
|
310 |
+
AddArrow: function (arrow) {
|
311 |
+
var c = this.Match(/^[CT]\[/);
|
312 |
+
if (c) {this.i--; c = c.charAt(0)}
|
313 |
+
var above = this.GetBracket(c), below = this.GetBracket(c);
|
314 |
+
arrow = this.Arrows[arrow];
|
315 |
+
if (above || below) {
|
316 |
+
if (below) {arrow += "["+below+"]"}
|
317 |
+
arrow += "{"+above+"}";
|
318 |
+
arrow = "\\mathrel{\\x"+arrow+"}";
|
319 |
+
} else {
|
320 |
+
arrow = "\\long"+arrow+" ";
|
321 |
+
}
|
322 |
+
this.tex += arrow;
|
323 |
+
},
|
324 |
+
|
325 |
+
//
|
326 |
+
// Handle the super and subscripts for an atom
|
327 |
+
//
|
328 |
+
FinishAtom: function (force) {
|
329 |
+
if (this.sup || this.sub || this.presup || this.presub) {
|
330 |
+
if (!force && !this.atom) {
|
331 |
+
if (this.tex === "" && !this.sup && !this.sub) return;
|
332 |
+
if (!this.presup && !this.presub &&
|
333 |
+
(this.tex === "" || this.tex === "{" ||
|
334 |
+
(this.tex === "}" && this.TEX.substr(-1) === "{"))) {
|
335 |
+
this.presup = this.sup, this.presub = this.sub; // save for later
|
336 |
+
this.sub = this.sup = "";
|
337 |
+
this.TEX += this.tex; this.tex = "";
|
338 |
+
return;
|
339 |
+
}
|
340 |
+
}
|
341 |
+
if (this.sub && !this.sup) {this.sup = "\\Space{0pt}{0pt}{.2em}"} // forces subscripts to align properly
|
342 |
+
if ((this.presup || this.presub) && this.tex !== "{") {
|
343 |
+
if (!this.presup && !this.sup) {this.presup = "\\Space{0pt}{0pt}{.2em}"}
|
344 |
+
this.tex = "\\CEprescripts{"+(this.presub||"\\CEnone")+"}{"+(this.presup||"\\CEnone")+"}"
|
345 |
+
+ "{"+(this.tex !== "}" ? this.tex : "")+"}"
|
346 |
+
+ "{"+(this.sub||"\\CEnone")+"}{"+(this.sup||"\\CEnone")+"}"
|
347 |
+
+ (this.tex === "}" ? "}" : "");
|
348 |
+
this.presub = this.presup = "";
|
349 |
+
} else {
|
350 |
+
if (this.sup) this.tex += "^{"+this.sup+"}";
|
351 |
+
if (this.sub) this.tex += "_{"+this.sub+"}";
|
352 |
+
}
|
353 |
+
this.sup = this.sub = "";
|
354 |
+
}
|
355 |
+
this.TEX += this.tex; this.tex = "";
|
356 |
+
this.atom = false;
|
357 |
+
},
|
358 |
+
|
359 |
+
//
|
360 |
+
// Find a bracket group and handle C and T prefixes
|
361 |
+
//
|
362 |
+
GetBracket: function
|