UNPKG

378 kBJavaScriptView Raw
1class u0 {
2 // The + prefix indicates that these fields aren't writeable
3 // Lexer holding the input string.
4 // Start offset, zero-based inclusive.
5 // End offset, zero-based exclusive.
6 constructor(e, t, a) {
7 this.lexer = void 0, this.start = void 0, this.end = void 0, this.lexer = e, this.start = t, this.end = a;
8 }
9 /**
10 * Merges two `SourceLocation`s from location providers, given they are
11 * provided in order of appearance.
12 * - Returns the first one's location if only the first is provided.
13 * - Returns a merged range of the first and the last if both are provided
14 * and their lexers match.
15 * - Otherwise, returns null.
16 */
17 static range(e, t) {
18 return t ? !e || !e.loc || !t.loc || e.loc.lexer !== t.loc.lexer ? null : new u0(e.loc.lexer, e.loc.start, t.loc.end) : e && e.loc;
19 }
20}
21class x0 {
22 // don't expand the token
23 // used in \noexpand
24 constructor(e, t) {
25 this.text = void 0, this.loc = void 0, this.noexpand = void 0, this.treatAsRelax = void 0, this.text = e, this.loc = t;
26 }
27 /**
28 * Given a pair of tokens (this and endToken), compute a `Token` encompassing
29 * the whole input range enclosed by these two.
30 */
31 range(e, t) {
32 return new x0(t, u0.range(this, e));
33 }
34}
35class M {
36 // Error start position based on passed-in Token or ParseNode.
37 // Length of affected text based on passed-in Token or ParseNode.
38 // The underlying error message without any context added.
39 constructor(e, t) {
40 this.name = void 0, this.position = void 0, this.length = void 0, this.rawMessage = void 0;
41 var a = "KaTeX parse error: " + e, n, s, o = t && t.loc;
42 if (o && o.start <= o.end) {
43 var h = o.lexer.input;
44 n = o.start, s = o.end, n === h.length ? a += " at end of input: " : a += " at position " + (n + 1) + ": ";
45 var c = h.slice(n, s).replace(/[^]/g, "$&̲"), p;
46 n > 15 ? p = "…" + h.slice(n - 15, n) : p = h.slice(0, n);
47 var g;
48 s + 15 < h.length ? g = h.slice(s, s + 15) + "…" : g = h.slice(s), a += p + c + g;
49 }
50 var y = new Error(a);
51 return y.name = "ParseError", y.__proto__ = M.prototype, y.position = n, n != null && s != null && (y.length = s - n), y.rawMessage = e, y;
52 }
53}
54M.prototype.__proto__ = Error.prototype;
55var da = function(e, t) {
56 return e.indexOf(t) !== -1;
57}, fa = function(e, t) {
58 return e === void 0 ? t : e;
59}, pa = /([A-Z])/g, va = function(e) {
60 return e.replace(pa, "-$1").toLowerCase();
61}, ga = {
62 "&": "&amp;",
63 ">": "&gt;",
64 "<": "&lt;",
65 '"': "&quot;",
66 "'": "&#x27;"
67}, ba = /[&><"']/g;
68function ya(r) {
69 return String(r).replace(ba, (e) => ga[e]);
70}
71var pr = function r(e) {
72 return e.type === "ordgroup" || e.type === "color" ? e.body.length === 1 ? r(e.body[0]) : e : e.type === "font" ? r(e.body) : e;
73}, xa = function(e) {
74 var t = pr(e);
75 return t.type === "mathord" || t.type === "textord" || t.type === "atom";
76}, wa = function(e) {
77 if (!e)
78 throw new Error("Expected non-null, but got " + String(e));
79 return e;
80}, ka = function(e) {
81 var t = /^\s*([^\\/#]*?)(?::|&#0*58|&#x0*3a)/i.exec(e);
82 return t != null ? t[1] : "_relative";
83}, I = {
84 contains: da,
85 deflt: fa,
86 escape: ya,
87 hyphenate: va,
88 getBaseElem: pr,
89 isCharacterBox: xa,
90 protocolFromUrl: ka
91}, Ae = {
92 displayMode: {
93 type: "boolean",
94 description: "Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",
95 cli: "-d, --display-mode"
96 },
97 output: {
98 type: {
99 enum: ["htmlAndMathml", "html", "mathml"]
100 },
101 description: "Determines the markup language of the output.",
102 cli: "-F, --format <type>"
103 },
104 leqno: {
105 type: "boolean",
106 description: "Render display math in leqno style (left-justified tags)."
107 },
108 fleqn: {
109 type: "boolean",
110 description: "Render display math flush left."
111 },
112 throwOnError: {
113 type: "boolean",
114 default: !0,
115 cli: "-t, --no-throw-on-error",
116 cliDescription: "Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."
117 },
118 errorColor: {
119 type: "string",
120 default: "#cc0000",
121 cli: "-c, --error-color <color>",
122 cliDescription: "A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",
123 cliProcessor: (r) => "#" + r
124 },
125 macros: {
126 type: "object",
127 cli: "-m, --macro <def>",
128 cliDescription: "Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",
129 cliDefault: [],
130 cliProcessor: (r, e) => (e.push(r), e)
131 },
132 minRuleThickness: {
133 type: "number",
134 description: "Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",
135 processor: (r) => Math.max(0, r),
136 cli: "--min-rule-thickness <size>",
137 cliProcessor: parseFloat
138 },
139 colorIsTextColor: {
140 type: "boolean",
141 description: "Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",
142 cli: "-b, --color-is-text-color"
143 },
144 strict: {
145 type: [{
146 enum: ["warn", "ignore", "error"]
147 }, "boolean", "function"],
148 description: "Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",
149 cli: "-S, --strict",
150 cliDefault: !1
151 },
152 trust: {
153 type: ["boolean", "function"],
154 description: "Trust the input, enabling all HTML features such as \\url.",
155 cli: "-T, --trust"
156 },
157 maxSize: {
158 type: "number",
159 default: 1 / 0,
160 description: "If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",
161 processor: (r) => Math.max(0, r),
162 cli: "-s, --max-size <n>",
163 cliProcessor: parseInt
164 },
165 maxExpand: {
166 type: "number",
167 default: 1e3,
168 description: "Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",
169 processor: (r) => Math.max(0, r),
170 cli: "-e, --max-expand <n>",
171 cliProcessor: (r) => r === "Infinity" ? 1 / 0 : parseInt(r)
172 },
173 globalGroup: {
174 type: "boolean",
175 cli: !1
176 }
177};
178function Sa(r) {
179 if (r.default)
180 return r.default;
181 var e = r.type, t = Array.isArray(e) ? e[0] : e;
182 if (typeof t != "string")
183 return t.enum[0];
184 switch (t) {
185 case "boolean":
186 return !1;
187 case "string":
188 return "";
189 case "number":
190 return 0;
191 case "object":
192 return {};
193 }
194}
195class ct {
196 constructor(e) {
197 this.displayMode = void 0, this.output = void 0, this.leqno = void 0, this.fleqn = void 0, this.throwOnError = void 0, this.errorColor = void 0, this.macros = void 0, this.minRuleThickness = void 0, this.colorIsTextColor = void 0, this.strict = void 0, this.trust = void 0, this.maxSize = void 0, this.maxExpand = void 0, this.globalGroup = void 0, e = e || {};
198 for (var t in Ae)
199 if (Ae.hasOwnProperty(t)) {
200 var a = Ae[t];
201 this[t] = e[t] !== void 0 ? a.processor ? a.processor(e[t]) : e[t] : Sa(a);
202 }
203 }
204 /**
205 * Report nonstrict (non-LaTeX-compatible) input.
206 * Can safely not be called if `this.strict` is false in JavaScript.
207 */
208 reportNonstrict(e, t, a) {
209 var n = this.strict;
210 if (typeof n == "function" && (n = n(e, t, a)), !(!n || n === "ignore")) {
211 if (n === !0 || n === "error")
212 throw new M("LaTeX-incompatible input and strict mode is set to 'error': " + (t + " [" + e + "]"), a);
213 n === "warn" ? typeof console < "u" && console.warn("LaTeX-incompatible input and strict mode is set to 'warn': " + (t + " [" + e + "]")) : typeof console < "u" && console.warn("LaTeX-incompatible input and strict mode is set to " + ("unrecognized '" + n + "': " + t + " [" + e + "]"));
214 }
215 }
216 /**
217 * Check whether to apply strict (LaTeX-adhering) behavior for unusual
218 * input (like `\\`). Unlike `nonstrict`, will not throw an error;
219 * instead, "error" translates to a return value of `true`, while "ignore"
220 * translates to a return value of `false`. May still print a warning:
221 * "warn" prints a warning and returns `false`.
222 * This is for the second category of `errorCode`s listed in the README.
223 */
224 useStrictBehavior(e, t, a) {
225 var n = this.strict;
226 if (typeof n == "function")
227 try {
228 n = n(e, t, a);
229 } catch {
230 n = "error";
231 }
232 return !n || n === "ignore" ? !1 : n === !0 || n === "error" ? !0 : n === "warn" ? (typeof console < "u" && console.warn("LaTeX-incompatible input and strict mode is set to 'warn': " + (t + " [" + e + "]")), !1) : (typeof console < "u" && console.warn("LaTeX-incompatible input and strict mode is set to " + ("unrecognized '" + n + "': " + t + " [" + e + "]")), !1);
233 }
234 /**
235 * Check whether to test potentially dangerous input, and return
236 * `true` (trusted) or `false` (untrusted). The sole argument `context`
237 * should be an object with `command` field specifying the relevant LaTeX
238 * command (as a string starting with `\`), and any other arguments, etc.
239 * If `context` has a `url` field, a `protocol` field will automatically
240 * get added by this function (changing the specified object).
241 */
242 isTrusted(e) {
243 e.url && !e.protocol && (e.protocol = I.protocolFromUrl(e.url));
244 var t = typeof this.trust == "function" ? this.trust(e) : this.trust;
245 return !!t;
246 }
247}
248class O0 {
249 constructor(e, t, a) {
250 this.id = void 0, this.size = void 0, this.cramped = void 0, this.id = e, this.size = t, this.cramped = a;
251 }
252 /**
253 * Get the style of a superscript given a base in the current style.
254 */
255 sup() {
256 return b0[Ma[this.id]];
257 }
258 /**
259 * Get the style of a subscript given a base in the current style.
260 */
261 sub() {
262 return b0[za[this.id]];
263 }
264 /**
265 * Get the style of a fraction numerator given the fraction in the current
266 * style.
267 */
268 fracNum() {
269 return b0[Aa[this.id]];
270 }
271 /**
272 * Get the style of a fraction denominator given the fraction in the current
273 * style.
274 */
275 fracDen() {
276 return b0[Ta[this.id]];
277 }
278 /**
279 * Get the cramped version of a style (in particular, cramping a cramped style
280 * doesn't change the style).
281 */
282 cramp() {
283 return b0[Ba[this.id]];
284 }
285 /**
286 * Get a text or display version of this style.
287 */
288 text() {
289 return b0[Da[this.id]];
290 }
291 /**
292 * Return true if this style is tightly spaced (scriptstyle/scriptscriptstyle)
293 */
294 isTight() {
295 return this.size >= 2;
296 }
297}
298var dt = 0, Be = 1, _0 = 2, T0 = 3, le = 4, d0 = 5, ee = 6, n0 = 7, b0 = [new O0(dt, 0, !1), new O0(Be, 0, !0), new O0(_0, 1, !1), new O0(T0, 1, !0), new O0(le, 2, !1), new O0(d0, 2, !0), new O0(ee, 3, !1), new O0(n0, 3, !0)], Ma = [le, d0, le, d0, ee, n0, ee, n0], za = [d0, d0, d0, d0, n0, n0, n0, n0], Aa = [_0, T0, le, d0, ee, n0, ee, n0], Ta = [T0, T0, d0, d0, n0, n0, n0, n0], Ba = [Be, Be, T0, T0, d0, d0, n0, n0], Da = [dt, Be, _0, T0, _0, T0, _0, T0], R = {
299 DISPLAY: b0[dt],
300 TEXT: b0[_0],
301 SCRIPT: b0[le],
302 SCRIPTSCRIPT: b0[ee]
303}, at = [{
304 // Latin characters beyond the Latin-1 characters we have metrics for.
305 // Needed for Czech, Hungarian and Turkish text, for example.
306 name: "latin",
307 blocks: [
308 [256, 591],
309 // Latin Extended-A and Latin Extended-B
310 [768, 879]
311 // Combining Diacritical marks
312 ]
313}, {
314 // The Cyrillic script used by Russian and related languages.
315 // A Cyrillic subset used to be supported as explicitly defined
316 // symbols in symbols.js
317 name: "cyrillic",
318 blocks: [[1024, 1279]]
319}, {
320 // Armenian
321 name: "armenian",
322 blocks: [[1328, 1423]]
323}, {
324 // The Brahmic scripts of South and Southeast Asia
325 // Devanagari (0900–097F)
326 // Bengali (0980–09FF)
327 // Gurmukhi (0A00–0A7F)
328 // Gujarati (0A80–0AFF)
329 // Oriya (0B00–0B7F)
330 // Tamil (0B80–0BFF)
331 // Telugu (0C00–0C7F)
332 // Kannada (0C80–0CFF)
333 // Malayalam (0D00–0D7F)
334 // Sinhala (0D80–0DFF)
335 // Thai (0E00–0E7F)
336 // Lao (0E80–0EFF)
337 // Tibetan (0F00–0FFF)
338 // Myanmar (1000–109F)
339 name: "brahmic",
340 blocks: [[2304, 4255]]
341}, {
342 name: "georgian",
343 blocks: [[4256, 4351]]
344}, {
345 // Chinese and Japanese.
346 // The "k" in cjk is for Korean, but we've separated Korean out
347 name: "cjk",
348 blocks: [
349 [12288, 12543],
350 // CJK symbols and punctuation, Hiragana, Katakana
351 [19968, 40879],
352 // CJK ideograms
353 [65280, 65376]
354 // Fullwidth punctuation
355 // TODO: add halfwidth Katakana and Romanji glyphs
356 ]
357}, {
358 // Korean
359 name: "hangul",
360 blocks: [[44032, 55215]]
361}];
362function Ca(r) {
363 for (var e = 0; e < at.length; e++)
364 for (var t = at[e], a = 0; a < t.blocks.length; a++) {
365 var n = t.blocks[a];
366 if (r >= n[0] && r <= n[1])
367 return t.name;
368 }
369 return null;
370}
371var Te = [];
372at.forEach((r) => r.blocks.forEach((e) => Te.push(...e)));
373function vr(r) {
374 for (var e = 0; e < Te.length; e += 2)
375 if (r >= Te[e] && r <= Te[e + 1])
376 return !0;
377 return !1;
378}
379var Q0 = 80, Na = function(e, t) {
380 return "M95," + (622 + e + t) + `
381c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14
382c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54
383c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10
384s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429
385c69,-144,104.5,-217.7,106.5,-221
386l` + e / 2.075 + " -" + e + `
387c5.3,-9.3,12,-14,20,-14
388H400000v` + (40 + e) + `H845.2724
389s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7
390c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z
391M` + (834 + e) + " " + t + "h400000v" + (40 + e) + "h-400000z";
392}, qa = function(e, t) {
393 return "M263," + (601 + e + t) + `c0.7,0,18,39.7,52,119
394c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120
395c340,-704.7,510.7,-1060.3,512,-1067
396l` + e / 2.084 + " -" + e + `
397c4.7,-7.3,11,-11,19,-11
398H40000v` + (40 + e) + `H1012.3
399s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232
400c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1
401s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26
402c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z
403M` + (1001 + e) + " " + t + "h400000v" + (40 + e) + "h-400000z";
404}, Ra = function(e, t) {
405 return "M983 " + (10 + e + t) + `
406l` + e / 3.13 + " -" + e + `
407c4,-6.7,10,-10,18,-10 H400000v` + (40 + e) + `
408H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7
409s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744
410c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30
411c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722
412c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5
413c53.7,-170.3,84.5,-266.8,92.5,-289.5z
414M` + (1001 + e) + " " + t + "h400000v" + (40 + e) + "h-400000z";
415}, Ea = function(e, t) {
416 return "M424," + (2398 + e + t) + `
417c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514
418c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20
419s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121
420s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081
421l` + e / 4.223 + " -" + e + `c4,-6.7,10,-10,18,-10 H400000
422v` + (40 + e) + `H1014.6
423s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185
424c-2,6,-10,9,-24,9
425c-8,0,-12,-0.7,-12,-2z M` + (1001 + e) + " " + t + `
426h400000v` + (40 + e) + "h-400000z";
427}, Ia = function(e, t) {
428 return "M473," + (2713 + e + t) + `
429c339.3,-1799.3,509.3,-2700,510,-2702 l` + e / 5.298 + " -" + e + `
430c3.3,-7.3,9.3,-11,18,-11 H400000v` + (40 + e) + `H1017.7
431s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9
432c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200
433c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26
434s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,
435606zM` + (1001 + e) + " " + t + "h400000v" + (40 + e) + "H1017.7z";
436}, Oa = function(e) {
437 var t = e / 2;
438 return "M400000 " + e + " H0 L" + t + " 0 l65 45 L145 " + (e - 80) + " H400000z";
439}, Ha = function(e, t, a) {
440 var n = a - 54 - t - e;
441 return "M702 " + (e + t) + "H400000" + (40 + e) + `
442H742v` + n + `l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1
443h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170
444c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667
445219 661 l218 661zM702 ` + t + "H400000v" + (40 + e) + "H742z";
446}, Fa = function(e, t, a) {
447 t = 1e3 * t;
448 var n = "";
449 switch (e) {
450 case "sqrtMain":
451 n = Na(t, Q0);
452 break;
453 case "sqrtSize1":
454 n = qa(t, Q0);
455 break;
456 case "sqrtSize2":
457 n = Ra(t, Q0);
458 break;
459 case "sqrtSize3":
460 n = Ea(t, Q0);
461 break;
462 case "sqrtSize4":
463 n = Ia(t, Q0);
464 break;
465 case "sqrtTall":
466 n = Ha(t, Q0, a);
467 }
468 return n;
469}, La = function(e, t) {
470 switch (e) {
471 case "⎜":
472 return "M291 0 H417 V" + t + " H291z M291 0 H417 V" + t + " H291z";
473 case "∣":
474 return "M145 0 H188 V" + t + " H145z M145 0 H188 V" + t + " H145z";
475 case "∥":
476 return "M145 0 H188 V" + t + " H145z M145 0 H188 V" + t + " H145z" + ("M367 0 H410 V" + t + " H367z M367 0 H410 V" + t + " H367z");
477 case "⎟":
478 return "M457 0 H583 V" + t + " H457z M457 0 H583 V" + t + " H457z";
479 case "⎢":
480 return "M319 0 H403 V" + t + " H319z M319 0 H403 V" + t + " H319z";
481 case "⎥":
482 return "M263 0 H347 V" + t + " H263z M263 0 H347 V" + t + " H263z";
483 case "⎪":
484 return "M384 0 H504 V" + t + " H384z M384 0 H504 V" + t + " H384z";
485 case "⏐":
486 return "M312 0 H355 V" + t + " H312z M312 0 H355 V" + t + " H312z";
487 case "‖":
488 return "M257 0 H300 V" + t + " H257z M257 0 H300 V" + t + " H257z" + ("M478 0 H521 V" + t + " H478z M478 0 H521 V" + t + " H478z");
489 default:
490 return "";
491 }
492}, It = {
493 // The doubleleftarrow geometry is from glyph U+21D0 in the font KaTeX Main
494 doubleleftarrow: `M262 157
495l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3
496 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28
497 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5
498c2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5
499 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87
500-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7
501-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z
502m8 0v40h399730v-40zm0 194v40h399730v-40z`,
503 // doublerightarrow is from glyph U+21D2 in font KaTeX Main
504 doublerightarrow: `M399738 392l
505-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5
506 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88
507-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68
508-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18
509-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782
510c-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3
511-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z`,
512 // leftarrow is from glyph U+2190 in font KaTeX Main
513 leftarrow: `M400000 241H110l3-3c68.7-52.7 113.7-120
514 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8
515-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247
516c-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208
517 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3
518 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202
519 l-3-3h399890zM100 241v40h399900v-40z`,
520 // overbrace is from glyphs U+23A9/23A8/23A7 in font KaTeX_Size4-Regular
521 leftbrace: `M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117
522-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7
523 5-6 9-10 13-.7 1-7.3 1-20 1H6z`,
524 leftbraceunder: `M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13
525 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688
526 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7
527-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z`,
528 // overgroup is from the MnSymbol package (public domain)
529 leftgroup: `M400000 80
530H435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0
531 435 0h399565z`,
532 leftgroupunder: `M400000 262
533H435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219
534 435 219h399565z`,
535 // Harpoons are from glyph U+21BD in font KaTeX Main
536 leftharpoon: `M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3
537-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5
538-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7
539-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z`,
540 leftharpoonplus: `M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5
541 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3
542-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7
543-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z
544m0 0v40h400000v-40z`,
545 leftharpoondown: `M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333
546 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5
547 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667
548-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z`,
549 leftharpoondownplus: `M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12
550 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7
551-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0
552v40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z`,
553 // hook is from glyph U+21A9 in font KaTeX Main
554 lefthook: `M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5
555-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3
556-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21
557 71.5 23h399859zM103 281v-40h399897v40z`,
558 leftlinesegment: `M40 281 V428 H0 V94 H40 V241 H400000 v40z
559M40 281 V428 H0 V94 H40 V241 H400000 v40z`,
560 leftmapsto: `M40 281 V448H0V74H40V241H400000v40z
561M40 281 V448H0V74H40V241H400000v40z`,
562 // tofrom is from glyph U+21C4 in font KaTeX AMS Regular
563 leftToFrom: `M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23
564-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8
565c28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3
566 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`,
567 longequal: `M0 50 h400000 v40H0z m0 194h40000v40H0z
568M0 50 h400000 v40H0z m0 194h40000v40H0z`,
569 midbrace: `M200428 334
570c-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14
571-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7
572 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11
573 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z`,
574 midbraceunder: `M199572 214
575c100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14
576 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3
577 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0
578-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z`,
579 oiintSize1: `M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6
580-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z
581m368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8
58260.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z`,
583 oiintSize2: `M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8
584-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z
585m502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2
586c0 110 84 276 504 276s502.4-166 502.4-276z`,
587 oiiintSize1: `M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6
588-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z
589m525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0
59085.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z`,
591 oiiintSize2: `M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8
592-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z
593m770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1
594c0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z`,
595 rightarrow: `M0 241v40h399891c-47.3 35.3-84 78-110 128
596-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20
597 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7
598 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85
599-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5
600-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67
601 151.7 139 205zm0 0v40h399900v-40z`,
602 rightbrace: `M400000 542l
603-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5
604s-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1
605c124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z`,
606 rightbraceunder: `M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3
607 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237
608-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z`,
609 rightgroup: `M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0
610 3-1 3-3v-38c-76-158-257-219-435-219H0z`,
611 rightgroupunder: `M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18
612 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z`,
613 rightharpoon: `M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3
614-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2
615-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58
616 69.2 92 94.5zm0 0v40h399900v-40z`,
617 rightharpoonplus: `M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11
618-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7
619 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z
620m0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z`,
621 rightharpoondown: `M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8
622 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5
623-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95
624-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z`,
625 rightharpoondownplus: `M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8
626 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3
627 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3
628-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z
629m0-194v40h400000v-40zm0 0v40h400000v-40z`,
630 righthook: `M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3
631 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0
632-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21
633 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z`,
634 rightlinesegment: `M399960 241 V94 h40 V428 h-40 V281 H0 v-40z
635M399960 241 V94 h40 V428 h-40 V281 H0 v-40z`,
636 rightToFrom: `M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23
637 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32
638-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142
639-167z M100 147v40h399900v-40zM0 341v40h399900v-40z`,
640 // twoheadleftarrow is from glyph U+219E in font KaTeX AMS Regular
641 twoheadleftarrow: `M0 167c68 40
642 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69
643-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3
644-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19
645-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101
646 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z`,
647 twoheadrightarrow: `M400000 167
648c-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3
649 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42
650 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333
651-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70
652 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z`,
653 // tilde1 is a modified version of a glyph from the MnSymbol package
654 tilde1: `M200 55.538c-77 0-168 73.953-177 73.953-3 0-7
655-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0
656 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0
657 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128
658-68.267.847-113-73.952-191-73.952z`,
659 // ditto tilde2, tilde3, & tilde4
660 tilde2: `M344 55.266c-142 0-300.638 81.316-311.5 86.418
661-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9
662 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114
663c1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751
664 181.476 676 181.476c-149 0-189-126.21-332-126.21z`,
665 tilde3: `M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457
666-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0
667 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697
668 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696
669 -338 0-409-156.573-744-156.573z`,
670 tilde4: `M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345
671-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409
672 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9
673 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409
674 -175.236-744-175.236z`,
675 // vec is from glyph U+20D7 in font KaTeX Main
676 vec: `M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5
6773.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11
67810.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63
679-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1
680-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59
681H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359
682c-16-25.333-24-45-24-59z`,
683 // widehat1 is a modified version of a glyph from the MnSymbol package
684 widehat1: `M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22
685c-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z`,
686 // ditto widehat2, widehat3, & widehat4
687 widehat2: `M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10
688-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,
689 widehat3: `M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10
690-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,
691 widehat4: `M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10
692-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,
693 // widecheck paths are all inverted versions of widehat
694 widecheck1: `M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,
695-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z`,
696 widecheck2: `M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,
697-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,
698 widecheck3: `M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,
699-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,
700 widecheck4: `M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,
701-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,
702 // The next ten paths support reaction arrows from the mhchem package.
703 // Arrows for \ce{<-->} are offset from xAxis by 0.22ex, per mhchem in LaTeX
704 // baraboveleftarrow is mostly from glyph U+2190 in font KaTeX Main
705 baraboveleftarrow: `M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202
706c4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5
707c-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130
708s-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47
709121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6
710s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11
711c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z
712M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`,
713 // rightarrowabovebar is mostly from glyph U+2192, KaTeX Main
714 rightarrowabovebar: `M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32
715-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0
71613.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39
717-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5
718-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5
719-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67
720151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z`,
721 // The short left harpoon has 0.5em (i.e. 500 units) kern on the left end.
722 // Ref from mhchem.sty: \rlap{\raisebox{-.22ex}{$\kern0.5em
723 baraboveshortleftharpoon: `M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11
724c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17
725c2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21
726c-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40
727c-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z
728M0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z`,
729 rightharpoonaboveshortbar: `M0,241 l0,40c399126,0,399993,0,399993,0
730c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,
731-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6
732c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z
733M0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z`,
734 shortbaraboveleftharpoon: `M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11
735c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,
7361c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,
737-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z
738M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z`,
739 shortrightharpoonabovebar: `M53,241l0,40c398570,0,399437,0,399437,0
740c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,
741-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6
742c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z
743M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`
744}, Pa = function(e, t) {
745 switch (e) {
746 case "lbrack":
747 return "M403 1759 V84 H666 V0 H319 V1759 v" + t + ` v1759 h347 v-84
748H403z M403 1759 V0 H319 V1759 v` + t + " v1759 h84z";
749 case "rbrack":
750 return "M347 1759 V0 H0 V84 H263 V1759 v" + t + ` v1759 H0 v84 H347z
751M347 1759 V0 H263 V1759 v` + t + " v1759 h84z";
752 case "vert":
753 return "M145 15 v585 v" + t + ` v585 c2.667,10,9.667,15,21,15
754c10,0,16.667,-5,20,-15 v-585 v` + -t + ` v-585 c-2.667,-10,-9.667,-15,-21,-15
755c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v` + t + " v585 h43z";
756 case "doublevert":
757 return "M145 15 v585 v" + t + ` v585 c2.667,10,9.667,15,21,15
758c10,0,16.667,-5,20,-15 v-585 v` + -t + ` v-585 c-2.667,-10,-9.667,-15,-21,-15
759c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v` + t + ` v585 h43z
760M367 15 v585 v` + t + ` v585 c2.667,10,9.667,15,21,15
761c10,0,16.667,-5,20,-15 v-585 v` + -t + ` v-585 c-2.667,-10,-9.667,-15,-21,-15
762c-10,0,-16.667,5,-20,15z M410 15 H367 v585 v` + t + " v585 h43z";
763 case "lfloor":
764 return "M319 602 V0 H403 V602 v" + t + ` v1715 h263 v84 H319z
765MM319 602 V0 H403 V602 v` + t + " v1715 H319z";
766 case "rfloor":
767 return "M319 602 V0 H403 V602 v" + t + ` v1799 H0 v-84 H319z
768MM319 602 V0 H403 V602 v` + t + " v1715 H319z";
769 case "lceil":
770 return "M403 1759 V84 H666 V0 H319 V1759 v" + t + ` v602 h84z
771M403 1759 V0 H319 V1759 v` + t + " v602 h84z";
772 case "rceil":
773 return "M347 1759 V0 H0 V84 H263 V1759 v" + t + ` v602 h84z
774M347 1759 V0 h-84 V1759 v` + t + " v602 h84z";
775 case "lparen":
776 return `M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1
777c-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349,
778-36,557 l0,` + (t + 84) + `c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210,
779949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9
780c0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5,
781-544.7,-112.5,-882c-2,-104,-3,-167,-3,-189
782l0,-` + (t + 92) + `c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3,
783-210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z`;
784 case "rparen":
785 return `M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3,
78663,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5
787c11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,` + (t + 9) + `
788c-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664
789c-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11
790c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17
791c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558
792l0,-` + (t + 144) + `c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7,
793-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;
794 default:
795 throw new Error("Unknown stretchy delimiter.");
796 }
797};
798class he {
799 // HtmlDomNode
800 // Never used; needed for satisfying interface.
801 constructor(e) {
802 this.children = void 0, this.classes = void 0, this.height = void 0, this.depth = void 0, this.maxFontSize = void 0, this.style = void 0, this.children = e, this.classes = [], this.height = 0, this.depth = 0, this.maxFontSize = 0, this.style = {};
803 }
804 hasClass(e) {
805 return I.contains(this.classes, e);
806 }
807 /** Convert the fragment into a node. */
808 toNode() {
809 for (var e = document.createDocumentFragment(), t = 0; t < this.children.length; t++)
810 e.appendChild(this.children[t].toNode());
811 return e;
812 }
813 /** Convert the fragment into HTML markup. */
814 toMarkup() {
815 for (var e = "", t = 0; t < this.children.length; t++)
816 e += this.children[t].toMarkup();
817 return e;
818 }
819 /**
820 * Converts the math node into a string, similar to innerText. Applies to
821 * MathDomNode's only.
822 */
823 toText() {
824 var e = (t) => t.toText();
825 return this.children.map(e).join("");
826 }
827}
828var y0 = {
829 "AMS-Regular": {
830 32: [0, 0, 0, 0, 0.25],
831 65: [0, 0.68889, 0, 0, 0.72222],
832 66: [0, 0.68889, 0, 0, 0.66667],
833 67: [0, 0.68889, 0, 0, 0.72222],
834 68: [0, 0.68889, 0, 0, 0.72222],
835 69: [0, 0.68889, 0, 0, 0.66667],
836 70: [0, 0.68889, 0, 0, 0.61111],
837 71: [0, 0.68889, 0, 0, 0.77778],
838 72: [0, 0.68889, 0, 0, 0.77778],
839 73: [0, 0.68889, 0, 0, 0.38889],
840 74: [0.16667, 0.68889, 0, 0, 0.5],
841 75: [0, 0.68889, 0, 0, 0.77778],
842 76: [0, 0.68889, 0, 0, 0.66667],
843 77: [0, 0.68889, 0, 0, 0.94445],
844 78: [0, 0.68889, 0, 0, 0.72222],
845 79: [0.16667, 0.68889, 0, 0, 0.77778],
846 80: [0, 0.68889, 0, 0, 0.61111],
847 81: [0.16667, 0.68889, 0, 0, 0.77778],
848 82: [0, 0.68889, 0, 0, 0.72222],
849 83: [0, 0.68889, 0, 0, 0.55556],
850 84: [0, 0.68889, 0, 0, 0.66667],
851 85: [0, 0.68889, 0, 0, 0.72222],
852 86: [0, 0.68889, 0, 0, 0.72222],
853 87: [0, 0.68889, 0, 0, 1],
854 88: [0, 0.68889, 0, 0, 0.72222],
855 89: [0, 0.68889, 0, 0, 0.72222],
856 90: [0, 0.68889, 0, 0, 0.66667],
857 107: [0, 0.68889, 0, 0, 0.55556],
858 160: [0, 0, 0, 0, 0.25],
859 165: [0, 0.675, 0.025, 0, 0.75],
860 174: [0.15559, 0.69224, 0, 0, 0.94666],
861 240: [0, 0.68889, 0, 0, 0.55556],
862 295: [0, 0.68889, 0, 0, 0.54028],
863 710: [0, 0.825, 0, 0, 2.33334],
864 732: [0, 0.9, 0, 0, 2.33334],
865 770: [0, 0.825, 0, 0, 2.33334],
866 771: [0, 0.9, 0, 0, 2.33334],
867 989: [0.08167, 0.58167, 0, 0, 0.77778],
868 1008: [0, 0.43056, 0.04028, 0, 0.66667],
869 8245: [0, 0.54986, 0, 0, 0.275],
870 8463: [0, 0.68889, 0, 0, 0.54028],
871 8487: [0, 0.68889, 0, 0, 0.72222],
872 8498: [0, 0.68889, 0, 0, 0.55556],
873 8502: [0, 0.68889, 0, 0, 0.66667],
874 8503: [0, 0.68889, 0, 0, 0.44445],
875 8504: [0, 0.68889, 0, 0, 0.66667],
876 8513: [0, 0.68889, 0, 0, 0.63889],
877 8592: [-0.03598, 0.46402, 0, 0, 0.5],
878 8594: [-0.03598, 0.46402, 0, 0, 0.5],
879 8602: [-0.13313, 0.36687, 0, 0, 1],
880 8603: [-0.13313, 0.36687, 0, 0, 1],
881 8606: [0.01354, 0.52239, 0, 0, 1],
882 8608: [0.01354, 0.52239, 0, 0, 1],
883 8610: [0.01354, 0.52239, 0, 0, 1.11111],
884 8611: [0.01354, 0.52239, 0, 0, 1.11111],
885 8619: [0, 0.54986, 0, 0, 1],
886 8620: [0, 0.54986, 0, 0, 1],
887 8621: [-0.13313, 0.37788, 0, 0, 1.38889],
888 8622: [-0.13313, 0.36687, 0, 0, 1],
889 8624: [0, 0.69224, 0, 0, 0.5],
890 8625: [0, 0.69224, 0, 0, 0.5],
891 8630: [0, 0.43056, 0, 0, 1],
892 8631: [0, 0.43056, 0, 0, 1],
893 8634: [0.08198, 0.58198, 0, 0, 0.77778],
894 8635: [0.08198, 0.58198, 0, 0, 0.77778],
895 8638: [0.19444, 0.69224, 0, 0, 0.41667],
896 8639: [0.19444, 0.69224, 0, 0, 0.41667],
897 8642: [0.19444, 0.69224, 0, 0, 0.41667],
898 8643: [0.19444, 0.69224, 0, 0, 0.41667],
899 8644: [0.1808, 0.675, 0, 0, 1],
900 8646: [0.1808, 0.675, 0, 0, 1],
901 8647: [0.1808, 0.675, 0, 0, 1],
902 8648: [0.19444, 0.69224, 0, 0, 0.83334],
903 8649: [0.1808, 0.675, 0, 0, 1],
904 8650: [0.19444, 0.69224, 0, 0, 0.83334],
905 8651: [0.01354, 0.52239, 0, 0, 1],
906 8652: [0.01354, 0.52239, 0, 0, 1],
907 8653: [-0.13313, 0.36687, 0, 0, 1],
908 8654: [-0.13313, 0.36687, 0, 0, 1],
909 8655: [-0.13313, 0.36687, 0, 0, 1],
910 8666: [0.13667, 0.63667, 0, 0, 1],
911 8667: [0.13667, 0.63667, 0, 0, 1],
912 8669: [-0.13313, 0.37788, 0, 0, 1],
913 8672: [-0.064, 0.437, 0, 0, 1.334],
914 8674: [-0.064, 0.437, 0, 0, 1.334],
915 8705: [0, 0.825, 0, 0, 0.5],
916 8708: [0, 0.68889, 0, 0, 0.55556],
917 8709: [0.08167, 0.58167, 0, 0, 0.77778],
918 8717: [0, 0.43056, 0, 0, 0.42917],
919 8722: [-0.03598, 0.46402, 0, 0, 0.5],
920 8724: [0.08198, 0.69224, 0, 0, 0.77778],
921 8726: [0.08167, 0.58167, 0, 0, 0.77778],
922 8733: [0, 0.69224, 0, 0, 0.77778],
923 8736: [0, 0.69224, 0, 0, 0.72222],
924 8737: [0, 0.69224, 0, 0, 0.72222],
925 8738: [0.03517, 0.52239, 0, 0, 0.72222],
926 8739: [0.08167, 0.58167, 0, 0, 0.22222],
927 8740: [0.25142, 0.74111, 0, 0, 0.27778],
928 8741: [0.08167, 0.58167, 0, 0, 0.38889],
929 8742: [0.25142, 0.74111, 0, 0, 0.5],
930 8756: [0, 0.69224, 0, 0, 0.66667],
931 8757: [0, 0.69224, 0, 0, 0.66667],
932 8764: [-0.13313, 0.36687, 0, 0, 0.77778],
933 8765: [-0.13313, 0.37788, 0, 0, 0.77778],
934 8769: [-0.13313, 0.36687, 0, 0, 0.77778],
935 8770: [-0.03625, 0.46375, 0, 0, 0.77778],
936 8774: [0.30274, 0.79383, 0, 0, 0.77778],
937 8776: [-0.01688, 0.48312, 0, 0, 0.77778],
938 8778: [0.08167, 0.58167, 0, 0, 0.77778],
939 8782: [0.06062, 0.54986, 0, 0, 0.77778],
940 8783: [0.06062, 0.54986, 0, 0, 0.77778],
941 8785: [0.08198, 0.58198, 0, 0, 0.77778],
942 8786: [0.08198, 0.58198, 0, 0, 0.77778],
943 8787: [0.08198, 0.58198, 0, 0, 0.77778],
944 8790: [0, 0.69224, 0, 0, 0.77778],
945 8791: [0.22958, 0.72958, 0, 0, 0.77778],
946 8796: [0.08198, 0.91667, 0, 0, 0.77778],
947 8806: [0.25583, 0.75583, 0, 0, 0.77778],
948 8807: [0.25583, 0.75583, 0, 0, 0.77778],
949 8808: [0.25142, 0.75726, 0, 0, 0.77778],
950 8809: [0.25142, 0.75726, 0, 0, 0.77778],
951 8812: [0.25583, 0.75583, 0, 0, 0.5],
952 8814: [0.20576, 0.70576, 0, 0, 0.77778],
953 8815: [0.20576, 0.70576, 0, 0, 0.77778],
954 8816: [0.30274, 0.79383, 0, 0, 0.77778],
955 8817: [0.30274, 0.79383, 0, 0, 0.77778],
956 8818: [0.22958, 0.72958, 0, 0, 0.77778],
957 8819: [0.22958, 0.72958, 0, 0, 0.77778],
958 8822: [0.1808, 0.675, 0, 0, 0.77778],
959 8823: [0.1808, 0.675, 0, 0, 0.77778],
960 8828: [0.13667, 0.63667, 0, 0, 0.77778],
961 8829: [0.13667, 0.63667, 0, 0, 0.77778],
962 8830: [0.22958, 0.72958, 0, 0, 0.77778],
963 8831: [0.22958, 0.72958, 0, 0, 0.77778],
964 8832: [0.20576, 0.70576, 0, 0, 0.77778],
965 8833: [0.20576, 0.70576, 0, 0, 0.77778],
966 8840: [0.30274, 0.79383, 0, 0, 0.77778],
967 8841: [0.30274, 0.79383, 0, 0, 0.77778],
968 8842: [0.13597, 0.63597, 0, 0, 0.77778],
969 8843: [0.13597, 0.63597, 0, 0, 0.77778],
970 8847: [0.03517, 0.54986, 0, 0, 0.77778],
971 8848: [0.03517, 0.54986, 0, 0, 0.77778],
972 8858: [0.08198, 0.58198, 0, 0, 0.77778],
973 8859: [0.08198, 0.58198, 0, 0, 0.77778],
974 8861: [0.08198, 0.58198, 0, 0, 0.77778],
975 8862: [0, 0.675, 0, 0, 0.77778],
976 8863: [0, 0.675, 0, 0, 0.77778],
977 8864: [0, 0.675, 0, 0, 0.77778],
978 8865: [0, 0.675, 0, 0, 0.77778],
979 8872: [0, 0.69224, 0, 0, 0.61111],
980 8873: [0, 0.69224, 0, 0, 0.72222],
981 8874: [0, 0.69224, 0, 0, 0.88889],
982 8876: [0, 0.68889, 0, 0, 0.61111],
983 8877: [0, 0.68889, 0, 0, 0.61111],
984 8878: [0, 0.68889, 0, 0, 0.72222],
985 8879: [0, 0.68889, 0, 0, 0.72222],
986 8882: [0.03517, 0.54986, 0, 0, 0.77778],
987 8883: [0.03517, 0.54986, 0, 0, 0.77778],
988 8884: [0.13667, 0.63667, 0, 0, 0.77778],
989 8885: [0.13667, 0.63667, 0, 0, 0.77778],
990 8888: [0, 0.54986, 0, 0, 1.11111],
991 8890: [0.19444, 0.43056, 0, 0, 0.55556],
992 8891: [0.19444, 0.69224, 0, 0, 0.61111],
993 8892: [0.19444, 0.69224, 0, 0, 0.61111],
994 8901: [0, 0.54986, 0, 0, 0.27778],
995 8903: [0.08167, 0.58167, 0, 0, 0.77778],
996 8905: [0.08167, 0.58167, 0, 0, 0.77778],
997 8906: [0.08167, 0.58167, 0, 0, 0.77778],
998 8907: [0, 0.69224, 0, 0, 0.77778],
999 8908: [0, 0.69224, 0, 0, 0.77778],
1000 8909: [-0.03598, 0.46402, 0, 0, 0.77778],
1001 8910: [0, 0.54986, 0, 0, 0.76042],
1002 8911: [0, 0.54986, 0, 0, 0.76042],
1003 8912: [0.03517, 0.54986, 0, 0, 0.77778],
1004 8913: [0.03517, 0.54986, 0, 0, 0.77778],
1005 8914: [0, 0.54986, 0, 0, 0.66667],
1006 8915: [0, 0.54986, 0, 0, 0.66667],
1007 8916: [0, 0.69224, 0, 0, 0.66667],
1008 8918: [0.0391, 0.5391, 0, 0, 0.77778],
1009 8919: [0.0391, 0.5391, 0, 0, 0.77778],
1010 8920: [0.03517, 0.54986, 0, 0, 1.33334],
1011 8921: [0.03517, 0.54986, 0, 0, 1.33334],
1012 8922: [0.38569, 0.88569, 0, 0, 0.77778],
1013 8923: [0.38569, 0.88569, 0, 0, 0.77778],
1014 8926: [0.13667, 0.63667, 0, 0, 0.77778],
1015 8927: [0.13667, 0.63667, 0, 0, 0.77778],
1016 8928: [0.30274, 0.79383, 0, 0, 0.77778],
1017 8929: [0.30274, 0.79383, 0, 0, 0.77778],
1018 8934: [0.23222, 0.74111, 0, 0, 0.77778],
1019 8935: [0.23222, 0.74111, 0, 0, 0.77778],
1020 8936: [0.23222, 0.74111, 0, 0, 0.77778],
1021 8937: [0.23222, 0.74111, 0, 0, 0.77778],
1022 8938: [0.20576, 0.70576, 0, 0, 0.77778],
1023 8939: [0.20576, 0.70576, 0, 0, 0.77778],
1024 8940: [0.30274, 0.79383, 0, 0, 0.77778],
1025 8941: [0.30274, 0.79383, 0, 0, 0.77778],
1026 8994: [0.19444, 0.69224, 0, 0, 0.77778],
1027 8995: [0.19444, 0.69224, 0, 0, 0.77778],
1028 9416: [0.15559, 0.69224, 0, 0, 0.90222],
1029 9484: [0, 0.69224, 0, 0, 0.5],
1030 9488: [0, 0.69224, 0, 0, 0.5],
1031 9492: [0, 0.37788, 0, 0, 0.5],
1032 9496: [0, 0.37788, 0, 0, 0.5],
1033 9585: [0.19444, 0.68889, 0, 0, 0.88889],
1034 9586: [0.19444, 0.74111, 0, 0, 0.88889],
1035 9632: [0, 0.675, 0, 0, 0.77778],
1036 9633: [0, 0.675, 0, 0, 0.77778],
1037 9650: [0, 0.54986, 0, 0, 0.72222],
1038 9651: [0, 0.54986, 0, 0, 0.72222],
1039 9654: [0.03517, 0.54986, 0, 0, 0.77778],
1040 9660: [0, 0.54986, 0, 0, 0.72222],
1041 9661: [0, 0.54986, 0, 0, 0.72222],
1042 9664: [0.03517, 0.54986, 0, 0, 0.77778],
1043 9674: [0.11111, 0.69224, 0, 0, 0.66667],
1044 9733: [0.19444, 0.69224, 0, 0, 0.94445],
1045 10003: [0, 0.69224, 0, 0, 0.83334],
1046 10016: [0, 0.69224, 0, 0, 0.83334],
1047 10731: [0.11111, 0.69224, 0, 0, 0.66667],
1048 10846: [0.19444, 0.75583, 0, 0, 0.61111],
1049 10877: [0.13667, 0.63667, 0, 0, 0.77778],
1050 10878: [0.13667, 0.63667, 0, 0, 0.77778],
1051 10885: [0.25583, 0.75583, 0, 0, 0.77778],
1052 10886: [0.25583, 0.75583, 0, 0, 0.77778],
1053 10887: [0.13597, 0.63597, 0, 0, 0.77778],
1054 10888: [0.13597, 0.63597, 0, 0, 0.77778],
1055 10889: [0.26167, 0.75726, 0, 0, 0.77778],
1056 10890: [0.26167, 0.75726, 0, 0, 0.77778],
1057 10891: [0.48256, 0.98256, 0, 0, 0.77778],
1058 10892: [0.48256, 0.98256, 0, 0, 0.77778],
1059 10901: [0.13667, 0.63667, 0, 0, 0.77778],
1060 10902: [0.13667, 0.63667, 0, 0, 0.77778],
1061 10933: [0.25142, 0.75726, 0, 0, 0.77778],
1062 10934: [0.25142, 0.75726, 0, 0, 0.77778],
1063 10935: [0.26167, 0.75726, 0, 0, 0.77778],
1064 10936: [0.26167, 0.75726, 0, 0, 0.77778],
1065 10937: [0.26167, 0.75726, 0, 0, 0.77778],
1066 10938: [0.26167, 0.75726, 0, 0, 0.77778],
1067 10949: [0.25583, 0.75583, 0, 0, 0.77778],
1068 10950: [0.25583, 0.75583, 0, 0, 0.77778],
1069 10955: [0.28481, 0.79383, 0, 0, 0.77778],
1070 10956: [0.28481, 0.79383, 0, 0, 0.77778],
1071 57350: [0.08167, 0.58167, 0, 0, 0.22222],
1072 57351: [0.08167, 0.58167, 0, 0, 0.38889],
1073 57352: [0.08167, 0.58167, 0, 0, 0.77778],
1074 57353: [0, 0.43056, 0.04028, 0, 0.66667],
1075 57356: [0.25142, 0.75726, 0, 0, 0.77778],
1076 57357: [0.25142, 0.75726, 0, 0, 0.77778],
1077 57358: [0.41951, 0.91951, 0, 0, 0.77778],
1078 57359: [0.30274, 0.79383, 0, 0, 0.77778],
1079 57360: [0.30274, 0.79383, 0, 0, 0.77778],
1080 57361: [0.41951, 0.91951, 0, 0, 0.77778],
1081 57366: [0.25142, 0.75726, 0, 0, 0.77778],
1082 57367: [0.25142, 0.75726, 0, 0, 0.77778],
1083 57368: [0.25142, 0.75726, 0, 0, 0.77778],
1084 57369: [0.25142, 0.75726, 0, 0, 0.77778],
1085 57370: [0.13597, 0.63597, 0, 0, 0.77778],
1086 57371: [0.13597, 0.63597, 0, 0, 0.77778]
1087 },
1088 "Caligraphic-Regular": {
1089 32: [0, 0, 0, 0, 0.25],
1090 65: [0, 0.68333, 0, 0.19445, 0.79847],
1091 66: [0, 0.68333, 0.03041, 0.13889, 0.65681],
1092 67: [0, 0.68333, 0.05834, 0.13889, 0.52653],
1093 68: [0, 0.68333, 0.02778, 0.08334, 0.77139],
1094 69: [0, 0.68333, 0.08944, 0.11111, 0.52778],
1095 70: [0, 0.68333, 0.09931, 0.11111, 0.71875],
1096 71: [0.09722, 0.68333, 0.0593, 0.11111, 0.59487],
1097 72: [0, 0.68333, 965e-5, 0.11111, 0.84452],
1098 73: [0, 0.68333, 0.07382, 0, 0.54452],
1099 74: [0.09722, 0.68333, 0.18472, 0.16667, 0.67778],
1100 75: [0, 0.68333, 0.01445, 0.05556, 0.76195],
1101 76: [0, 0.68333, 0, 0.13889, 0.68972],
1102 77: [0, 0.68333, 0, 0.13889, 1.2009],
1103 78: [0, 0.68333, 0.14736, 0.08334, 0.82049],
1104 79: [0, 0.68333, 0.02778, 0.11111, 0.79611],
1105 80: [0, 0.68333, 0.08222, 0.08334, 0.69556],
1106 81: [0.09722, 0.68333, 0, 0.11111, 0.81667],
1107 82: [0, 0.68333, 0, 0.08334, 0.8475],
1108 83: [0, 0.68333, 0.075, 0.13889, 0.60556],
1109 84: [0, 0.68333, 0.25417, 0, 0.54464],
1110 85: [0, 0.68333, 0.09931, 0.08334, 0.62583],
1111 86: [0, 0.68333, 0.08222, 0, 0.61278],
1112 87: [0, 0.68333, 0.08222, 0.08334, 0.98778],
1113 88: [0, 0.68333, 0.14643, 0.13889, 0.7133],
1114 89: [0.09722, 0.68333, 0.08222, 0.08334, 0.66834],
1115 90: [0, 0.68333, 0.07944, 0.13889, 0.72473],
1116 160: [0, 0, 0, 0, 0.25]
1117 },
1118 "Fraktur-Regular": {
1119 32: [0, 0, 0, 0, 0.25],
1120 33: [0, 0.69141, 0, 0, 0.29574],
1121 34: [0, 0.69141, 0, 0, 0.21471],
1122 38: [0, 0.69141, 0, 0, 0.73786],
1123 39: [0, 0.69141, 0, 0, 0.21201],
1124 40: [0.24982, 0.74947, 0, 0, 0.38865],
1125 41: [0.24982, 0.74947, 0, 0, 0.38865],
1126 42: [0, 0.62119, 0, 0, 0.27764],
1127 43: [0.08319, 0.58283, 0, 0, 0.75623],
1128 44: [0, 0.10803, 0, 0, 0.27764],
1129 45: [0.08319, 0.58283, 0, 0, 0.75623],
1130 46: [0, 0.10803, 0, 0, 0.27764],
1131 47: [0.24982, 0.74947, 0, 0, 0.50181],
1132 48: [0, 0.47534, 0, 0, 0.50181],
1133 49: [0, 0.47534, 0, 0, 0.50181],
1134 50: [0, 0.47534, 0, 0, 0.50181],
1135 51: [0.18906, 0.47534, 0, 0, 0.50181],
1136 52: [0.18906, 0.47534, 0, 0, 0.50181],
1137 53: [0.18906, 0.47534, 0, 0, 0.50181],
1138 54: [0, 0.69141, 0, 0, 0.50181],
1139 55: [0.18906, 0.47534, 0, 0, 0.50181],
1140 56: [0, 0.69141, 0, 0, 0.50181],
1141 57: [0.18906, 0.47534, 0, 0, 0.50181],
1142 58: [0, 0.47534, 0, 0, 0.21606],
1143 59: [0.12604, 0.47534, 0, 0, 0.21606],
1144 61: [-0.13099, 0.36866, 0, 0, 0.75623],
1145 63: [0, 0.69141, 0, 0, 0.36245],
1146 65: [0, 0.69141, 0, 0, 0.7176],
1147 66: [0, 0.69141, 0, 0, 0.88397],
1148 67: [0, 0.69141, 0, 0, 0.61254],
1149 68: [0, 0.69141, 0, 0, 0.83158],
1150 69: [0, 0.69141, 0, 0, 0.66278],
1151 70: [0.12604, 0.69141, 0, 0, 0.61119],
1152 71: [0, 0.69141, 0, 0, 0.78539],
1153 72: [0.06302, 0.69141, 0, 0, 0.7203],
1154 73: [0, 0.69141, 0, 0, 0.55448],
1155 74: [0.12604, 0.69141, 0, 0, 0.55231],
1156 75: [0, 0.69141, 0, 0, 0.66845],
1157 76: [0, 0.69141, 0, 0, 0.66602],
1158 77: [0, 0.69141, 0, 0, 1.04953],
1159 78: [0, 0.69141, 0, 0, 0.83212],
1160 79: [0, 0.69141, 0, 0, 0.82699],
1161 80: [0.18906, 0.69141, 0, 0, 0.82753],
1162 81: [0.03781, 0.69141, 0, 0, 0.82699],
1163 82: [0, 0.69141, 0, 0, 0.82807],
1164 83: [0, 0.69141, 0, 0, 0.82861],
1165 84: [0, 0.69141, 0, 0, 0.66899],
1166 85: [0, 0.69141, 0, 0, 0.64576],
1167 86: [0, 0.69141, 0, 0, 0.83131],
1168 87: [0, 0.69141, 0, 0, 1.04602],
1169 88: [0, 0.69141, 0, 0, 0.71922],
1170 89: [0.18906, 0.69141, 0, 0, 0.83293],
1171 90: [0.12604, 0.69141, 0, 0, 0.60201],
1172 91: [0.24982, 0.74947, 0, 0, 0.27764],
1173 93: [0.24982, 0.74947, 0, 0, 0.27764],
1174 94: [0, 0.69141, 0, 0, 0.49965],
1175 97: [0, 0.47534, 0, 0, 0.50046],
1176 98: [0, 0.69141, 0, 0, 0.51315],
1177 99: [0, 0.47534, 0, 0, 0.38946],
1178 100: [0, 0.62119, 0, 0, 0.49857],
1179 101: [0, 0.47534, 0, 0, 0.40053],
1180 102: [0.18906, 0.69141, 0, 0, 0.32626],
1181 103: [0.18906, 0.47534, 0, 0, 0.5037],
1182 104: [0.18906, 0.69141, 0, 0, 0.52126],
1183 105: [0, 0.69141, 0, 0, 0.27899],
1184 106: [0, 0.69141, 0, 0, 0.28088],
1185 107: [0, 0.69141, 0, 0, 0.38946],
1186 108: [0, 0.69141, 0, 0, 0.27953],
1187 109: [0, 0.47534, 0, 0, 0.76676],
1188 110: [0, 0.47534, 0, 0, 0.52666],
1189 111: [0, 0.47534, 0, 0, 0.48885],
1190 112: [0.18906, 0.52396, 0, 0, 0.50046],
1191 113: [0.18906, 0.47534, 0, 0, 0.48912],
1192 114: [0, 0.47534, 0, 0, 0.38919],
1193 115: [0, 0.47534, 0, 0, 0.44266],
1194 116: [0, 0.62119, 0, 0, 0.33301],
1195 117: [0, 0.47534, 0, 0, 0.5172],
1196 118: [0, 0.52396, 0, 0, 0.5118],
1197 119: [0, 0.52396, 0, 0, 0.77351],
1198 120: [0.18906, 0.47534, 0, 0, 0.38865],
1199 121: [0.18906, 0.47534, 0, 0, 0.49884],
1200 122: [0.18906, 0.47534, 0, 0, 0.39054],
1201 160: [0, 0, 0, 0, 0.25],
1202 8216: [0, 0.69141, 0, 0, 0.21471],
1203 8217: [0, 0.69141, 0, 0, 0.21471],
1204 58112: [0, 0.62119, 0, 0, 0.49749],
1205 58113: [0, 0.62119, 0, 0, 0.4983],
1206 58114: [0.18906, 0.69141, 0, 0, 0.33328],
1207 58115: [0.18906, 0.69141, 0, 0, 0.32923],
1208 58116: [0.18906, 0.47534, 0, 0, 0.50343],
1209 58117: [0, 0.69141, 0, 0, 0.33301],
1210 58118: [0, 0.62119, 0, 0, 0.33409],
1211 58119: [0, 0.47534, 0, 0, 0.50073]
1212 },
1213 "Main-Bold": {
1214 32: [0, 0, 0, 0, 0.25],
1215 33: [0, 0.69444, 0, 0, 0.35],
1216 34: [0, 0.69444, 0, 0, 0.60278],
1217 35: [0.19444, 0.69444, 0, 0, 0.95833],
1218 36: [0.05556, 0.75, 0, 0, 0.575],
1219 37: [0.05556, 0.75, 0, 0, 0.95833],
1220 38: [0, 0.69444, 0, 0, 0.89444],
1221 39: [0, 0.69444, 0, 0, 0.31944],
1222 40: [0.25, 0.75, 0, 0, 0.44722],
1223 41: [0.25, 0.75, 0, 0, 0.44722],
1224 42: [0, 0.75, 0, 0, 0.575],
1225 43: [0.13333, 0.63333, 0, 0, 0.89444],
1226 44: [0.19444, 0.15556, 0, 0, 0.31944],
1227 45: [0, 0.44444, 0, 0, 0.38333],
1228 46: [0, 0.15556, 0, 0, 0.31944],
1229 47: [0.25, 0.75, 0, 0, 0.575],
1230 48: [0, 0.64444, 0, 0, 0.575],
1231 49: [0, 0.64444, 0, 0, 0.575],
1232 50: [0, 0.64444, 0, 0, 0.575],
1233 51: [0, 0.64444, 0, 0, 0.575],
1234 52: [0, 0.64444, 0, 0, 0.575],
1235 53: [0, 0.64444, 0, 0, 0.575],
1236 54: [0, 0.64444, 0, 0, 0.575],
1237 55: [0, 0.64444, 0, 0, 0.575],
1238 56: [0, 0.64444, 0, 0, 0.575],
1239 57: [0, 0.64444, 0, 0, 0.575],
1240 58: [0, 0.44444, 0, 0, 0.31944],
1241 59: [0.19444, 0.44444, 0, 0, 0.31944],
1242 60: [0.08556, 0.58556, 0, 0, 0.89444],
1243 61: [-0.10889, 0.39111, 0, 0, 0.89444],
1244 62: [0.08556, 0.58556, 0, 0, 0.89444],
1245 63: [0, 0.69444, 0, 0, 0.54305],
1246 64: [0, 0.69444, 0, 0, 0.89444],
1247 65: [0, 0.68611, 0, 0, 0.86944],
1248 66: [0, 0.68611, 0, 0, 0.81805],
1249 67: [0, 0.68611, 0, 0, 0.83055],
1250 68: [0, 0.68611, 0, 0, 0.88194],
1251 69: [0, 0.68611, 0, 0, 0.75555],
1252 70: [0, 0.68611, 0, 0, 0.72361],
1253 71: [0, 0.68611, 0, 0, 0.90416],
1254 72: [0, 0.68611, 0, 0, 0.9],
1255 73: [0, 0.68611, 0, 0, 0.43611],
1256 74: [0, 0.68611, 0, 0, 0.59444],
1257 75: [0, 0.68611, 0, 0, 0.90138],
1258 76: [0, 0.68611, 0, 0, 0.69166],
1259 77: [0, 0.68611, 0, 0, 1.09166],
1260 78: [0, 0.68611, 0, 0, 0.9],
1261 79: [0, 0.68611, 0, 0, 0.86388],
1262 80: [0, 0.68611, 0, 0, 0.78611],
1263 81: [0.19444, 0.68611, 0, 0, 0.86388],
1264 82: [0, 0.68611, 0, 0, 0.8625],
1265 83: [0, 0.68611, 0, 0, 0.63889],
1266 84: [0, 0.68611, 0, 0, 0.8],
1267 85: [0, 0.68611, 0, 0, 0.88472],
1268 86: [0, 0.68611, 0.01597, 0, 0.86944],
1269 87: [0, 0.68611, 0.01597, 0, 1.18888],
1270 88: [0, 0.68611, 0, 0, 0.86944],
1271 89: [0, 0.68611, 0.02875, 0, 0.86944],
1272 90: [0, 0.68611, 0, 0, 0.70277],
1273 91: [0.25, 0.75, 0, 0, 0.31944],
1274 92: [0.25, 0.75, 0, 0, 0.575],
1275 93: [0.25, 0.75, 0, 0, 0.31944],
1276 94: [0, 0.69444, 0, 0, 0.575],
1277 95: [0.31, 0.13444, 0.03194, 0, 0.575],
1278 97: [0, 0.44444, 0, 0, 0.55902],
1279 98: [0, 0.69444, 0, 0, 0.63889],
1280 99: [0, 0.44444, 0, 0, 0.51111],
1281 100: [0, 0.69444, 0, 0, 0.63889],
1282 101: [0, 0.44444, 0, 0, 0.52708],
1283 102: [0, 0.69444, 0.10903, 0, 0.35139],
1284 103: [0.19444, 0.44444, 0.01597, 0, 0.575],
1285 104: [0, 0.69444, 0, 0, 0.63889],
1286 105: [0, 0.69444, 0, 0, 0.31944],
1287 106: [0.19444, 0.69444, 0, 0, 0.35139],
1288 107: [0, 0.69444, 0, 0, 0.60694],
1289 108: [0, 0.69444, 0, 0, 0.31944],
1290 109: [0, 0.44444, 0, 0, 0.95833],
1291 110: [0, 0.44444, 0, 0, 0.63889],
1292 111: [0, 0.44444, 0, 0, 0.575],
1293 112: [0.19444, 0.44444, 0, 0, 0.63889],
1294 113: [0.19444, 0.44444, 0, 0, 0.60694],
1295 114: [0, 0.44444, 0, 0, 0.47361],
1296 115: [0, 0.44444, 0, 0, 0.45361],
1297 116: [0, 0.63492, 0, 0, 0.44722],
1298 117: [0, 0.44444, 0, 0, 0.63889],
1299 118: [0, 0.44444, 0.01597, 0, 0.60694],
1300 119: [0, 0.44444, 0.01597, 0, 0.83055],
1301 120: [0, 0.44444, 0, 0, 0.60694],
1302 121: [0.19444, 0.44444, 0.01597, 0, 0.60694],
1303 122: [0, 0.44444, 0, 0, 0.51111],
1304 123: [0.25, 0.75, 0, 0, 0.575],
1305 124: [0.25, 0.75, 0, 0, 0.31944],
1306 125: [0.25, 0.75, 0, 0, 0.575],
1307 126: [0.35, 0.34444, 0, 0, 0.575],
1308 160: [0, 0, 0, 0, 0.25],
1309 163: [0, 0.69444, 0, 0, 0.86853],
1310 168: [0, 0.69444, 0, 0, 0.575],
1311 172: [0, 0.44444, 0, 0, 0.76666],
1312 176: [0, 0.69444, 0, 0, 0.86944],
1313 177: [0.13333, 0.63333, 0, 0, 0.89444],
1314 184: [0.17014, 0, 0, 0, 0.51111],
1315 198: [0, 0.68611, 0, 0, 1.04166],
1316 215: [0.13333, 0.63333, 0, 0, 0.89444],
1317 216: [0.04861, 0.73472, 0, 0, 0.89444],
1318 223: [0, 0.69444, 0, 0, 0.59722],
1319 230: [0, 0.44444, 0, 0, 0.83055],
1320 247: [0.13333, 0.63333, 0, 0, 0.89444],
1321 248: [0.09722, 0.54167, 0, 0, 0.575],
1322 305: [0, 0.44444, 0, 0, 0.31944],
1323 338: [0, 0.68611, 0, 0, 1.16944],
1324 339: [0, 0.44444, 0, 0, 0.89444],
1325 567: [0.19444, 0.44444, 0, 0, 0.35139],
1326 710: [0, 0.69444, 0, 0, 0.575],
1327 711: [0, 0.63194, 0, 0, 0.575],
1328 713: [0, 0.59611, 0, 0, 0.575],
1329 714: [0, 0.69444, 0, 0, 0.575],
1330 715: [0, 0.69444, 0, 0, 0.575],
1331 728: [0, 0.69444, 0, 0, 0.575],
1332 729: [0, 0.69444, 0, 0, 0.31944],
1333 730: [0, 0.69444, 0, 0, 0.86944],
1334 732: [0, 0.69444, 0, 0, 0.575],
1335 733: [0, 0.69444, 0, 0, 0.575],
1336 915: [0, 0.68611, 0, 0, 0.69166],
1337 916: [0, 0.68611, 0, 0, 0.95833],
1338 920: [0, 0.68611, 0, 0, 0.89444],
1339 923: [0, 0.68611, 0, 0, 0.80555],
1340 926: [0, 0.68611, 0, 0, 0.76666],
1341 928: [0, 0.68611, 0, 0, 0.9],
1342 931: [0, 0.68611, 0, 0, 0.83055],
1343 933: [0, 0.68611, 0, 0, 0.89444],
1344 934: [0, 0.68611, 0, 0, 0.83055],
1345 936: [0, 0.68611, 0, 0, 0.89444],
1346 937: [0, 0.68611, 0, 0, 0.83055],
1347 8211: [0, 0.44444, 0.03194, 0, 0.575],
1348 8212: [0, 0.44444, 0.03194, 0, 1.14999],
1349 8216: [0, 0.69444, 0, 0, 0.31944],
1350 8217: [0, 0.69444, 0, 0, 0.31944],
1351 8220: [0, 0.69444, 0, 0, 0.60278],
1352 8221: [0, 0.69444, 0, 0, 0.60278],
1353 8224: [0.19444, 0.69444, 0, 0, 0.51111],
1354 8225: [0.19444, 0.69444, 0, 0, 0.51111],
1355 8242: [0, 0.55556, 0, 0, 0.34444],
1356 8407: [0, 0.72444, 0.15486, 0, 0.575],
1357 8463: [0, 0.69444, 0, 0, 0.66759],
1358 8465: [0, 0.69444, 0, 0, 0.83055],
1359 8467: [0, 0.69444, 0, 0, 0.47361],
1360 8472: [0.19444, 0.44444, 0, 0, 0.74027],
1361 8476: [0, 0.69444, 0, 0, 0.83055],
1362 8501: [0, 0.69444, 0, 0, 0.70277],
1363 8592: [-0.10889, 0.39111, 0, 0, 1.14999],
1364 8593: [0.19444, 0.69444, 0, 0, 0.575],
1365 8594: [-0.10889, 0.39111, 0, 0, 1.14999],
1366 8595: [0.19444, 0.69444, 0, 0, 0.575],
1367 8596: [-0.10889, 0.39111, 0, 0, 1.14999],
1368 8597: [0.25, 0.75, 0, 0, 0.575],
1369 8598: [0.19444, 0.69444, 0, 0, 1.14999],
1370 8599: [0.19444, 0.69444, 0, 0, 1.14999],
1371 8600: [0.19444, 0.69444, 0, 0, 1.14999],
1372 8601: [0.19444, 0.69444, 0, 0, 1.14999],
1373 8636: [-0.10889, 0.39111, 0, 0, 1.14999],
1374 8637: [-0.10889, 0.39111, 0, 0, 1.14999],
1375 8640: [-0.10889, 0.39111, 0, 0, 1.14999],
1376 8641: [-0.10889, 0.39111, 0, 0, 1.14999],
1377 8656: [-0.10889, 0.39111, 0, 0, 1.14999],
1378 8657: [0.19444, 0.69444, 0, 0, 0.70277],
1379 8658: [-0.10889, 0.39111, 0, 0, 1.14999],
1380 8659: [0.19444, 0.69444, 0, 0, 0.70277],
1381 8660: [-0.10889, 0.39111, 0, 0, 1.14999],
1382 8661: [0.25, 0.75, 0, 0, 0.70277],
1383 8704: [0, 0.69444, 0, 0, 0.63889],
1384 8706: [0, 0.69444, 0.06389, 0, 0.62847],
1385 8707: [0, 0.69444, 0, 0, 0.63889],
1386 8709: [0.05556, 0.75, 0, 0, 0.575],
1387 8711: [0, 0.68611, 0, 0, 0.95833],
1388 8712: [0.08556, 0.58556, 0, 0, 0.76666],
1389 8715: [0.08556, 0.58556, 0, 0, 0.76666],
1390 8722: [0.13333, 0.63333, 0, 0, 0.89444],
1391 8723: [0.13333, 0.63333, 0, 0, 0.89444],
1392 8725: [0.25, 0.75, 0, 0, 0.575],
1393 8726: [0.25, 0.75, 0, 0, 0.575],
1394 8727: [-0.02778, 0.47222, 0, 0, 0.575],
1395 8728: [-0.02639, 0.47361, 0, 0, 0.575],
1396 8729: [-0.02639, 0.47361, 0, 0, 0.575],
1397 8730: [0.18, 0.82, 0, 0, 0.95833],
1398 8733: [0, 0.44444, 0, 0, 0.89444],
1399 8734: [0, 0.44444, 0, 0, 1.14999],
1400 8736: [0, 0.69224, 0, 0, 0.72222],
1401 8739: [0.25, 0.75, 0, 0, 0.31944],
1402 8741: [0.25, 0.75, 0, 0, 0.575],
1403 8743: [0, 0.55556, 0, 0, 0.76666],
1404 8744: [0, 0.55556, 0, 0, 0.76666],
1405 8745: [0, 0.55556, 0, 0, 0.76666],
1406 8746: [0, 0.55556, 0, 0, 0.76666],
1407 8747: [0.19444, 0.69444, 0.12778, 0, 0.56875],
1408 8764: [-0.10889, 0.39111, 0, 0, 0.89444],
1409 8768: [0.19444, 0.69444, 0, 0, 0.31944],
1410 8771: [222e-5, 0.50222, 0, 0, 0.89444],
1411 8773: [0.027, 0.638, 0, 0, 0.894],
1412 8776: [0.02444, 0.52444, 0, 0, 0.89444],
1413 8781: [222e-5, 0.50222, 0, 0, 0.89444],
1414 8801: [222e-5, 0.50222, 0, 0, 0.89444],
1415 8804: [0.19667, 0.69667, 0, 0, 0.89444],
1416 8805: [0.19667, 0.69667, 0, 0, 0.89444],
1417 8810: [0.08556, 0.58556, 0, 0, 1.14999],
1418 8811: [0.08556, 0.58556, 0, 0, 1.14999],
1419 8826: [0.08556, 0.58556, 0, 0, 0.89444],
1420 8827: [0.08556, 0.58556, 0, 0, 0.89444],
1421 8834: [0.08556, 0.58556, 0, 0, 0.89444],
1422 8835: [0.08556, 0.58556, 0, 0, 0.89444],
1423 8838: [0.19667, 0.69667, 0, 0, 0.89444],
1424 8839: [0.19667, 0.69667, 0, 0, 0.89444],
1425 8846: [0, 0.55556, 0, 0, 0.76666],
1426 8849: [0.19667, 0.69667, 0, 0, 0.89444],
1427 8850: [0.19667, 0.69667, 0, 0, 0.89444],
1428 8851: [0, 0.55556, 0, 0, 0.76666],
1429 8852: [0, 0.55556, 0, 0, 0.76666],
1430 8853: [0.13333, 0.63333, 0, 0, 0.89444],
1431 8854: [0.13333, 0.63333, 0, 0, 0.89444],
1432 8855: [0.13333, 0.63333, 0, 0, 0.89444],
1433 8856: [0.13333, 0.63333, 0, 0, 0.89444],
1434 8857: [0.13333, 0.63333, 0, 0, 0.89444],
1435 8866: [0, 0.69444, 0, 0, 0.70277],
1436 8867: [0, 0.69444, 0, 0, 0.70277],
1437 8868: [0, 0.69444, 0, 0, 0.89444],
1438 8869: [0, 0.69444, 0, 0, 0.89444],
1439 8900: [-0.02639, 0.47361, 0, 0, 0.575],
1440 8901: [-0.02639, 0.47361, 0, 0, 0.31944],
1441 8902: [-0.02778, 0.47222, 0, 0, 0.575],
1442 8968: [0.25, 0.75, 0, 0, 0.51111],
1443 8969: [0.25, 0.75, 0, 0, 0.51111],
1444 8970: [0.25, 0.75, 0, 0, 0.51111],
1445 8971: [0.25, 0.75, 0, 0, 0.51111],
1446 8994: [-0.13889, 0.36111, 0, 0, 1.14999],
1447 8995: [-0.13889, 0.36111, 0, 0, 1.14999],
1448 9651: [0.19444, 0.69444, 0, 0, 1.02222],
1449 9657: [-0.02778, 0.47222, 0, 0, 0.575],
1450 9661: [0.19444, 0.69444, 0, 0, 1.02222],
1451 9667: [-0.02778, 0.47222, 0, 0, 0.575],
1452 9711: [0.19444, 0.69444, 0, 0, 1.14999],
1453 9824: [0.12963, 0.69444, 0, 0, 0.89444],
1454 9825: [0.12963, 0.69444, 0, 0, 0.89444],
1455 9826: [0.12963, 0.69444, 0, 0, 0.89444],
1456 9827: [0.12963, 0.69444, 0, 0, 0.89444],
1457 9837: [0, 0.75, 0, 0, 0.44722],
1458 9838: [0.19444, 0.69444, 0, 0, 0.44722],
1459 9839: [0.19444, 0.69444, 0, 0, 0.44722],
1460 10216: [0.25, 0.75, 0, 0, 0.44722],
1461 10217: [0.25, 0.75, 0, 0, 0.44722],
1462 10815: [0, 0.68611, 0, 0, 0.9],
1463 10927: [0.19667, 0.69667, 0, 0, 0.89444],
1464 10928: [0.19667, 0.69667, 0, 0, 0.89444],
1465 57376: [0.19444, 0.69444, 0, 0, 0]
1466 },
1467 "Main-BoldItalic": {
1468 32: [0, 0, 0, 0, 0.25],
1469 33: [0, 0.69444, 0.11417, 0, 0.38611],
1470 34: [0, 0.69444, 0.07939, 0, 0.62055],
1471 35: [0.19444, 0.69444, 0.06833, 0, 0.94444],
1472 37: [0.05556, 0.75, 0.12861, 0, 0.94444],
1473 38: [0, 0.69444, 0.08528, 0, 0.88555],
1474 39: [0, 0.69444, 0.12945, 0, 0.35555],
1475 40: [0.25, 0.75, 0.15806, 0, 0.47333],
1476 41: [0.25, 0.75, 0.03306, 0, 0.47333],
1477 42: [0, 0.75, 0.14333, 0, 0.59111],
1478 43: [0.10333, 0.60333, 0.03306, 0, 0.88555],
1479 44: [0.19444, 0.14722, 0, 0, 0.35555],
1480 45: [0, 0.44444, 0.02611, 0, 0.41444],
1481 46: [0, 0.14722, 0, 0, 0.35555],
1482 47: [0.25, 0.75, 0.15806, 0, 0.59111],
1483 48: [0, 0.64444, 0.13167, 0, 0.59111],
1484 49: [0, 0.64444, 0.13167, 0, 0.59111],
1485 50: [0, 0.64444, 0.13167, 0, 0.59111],
1486 51: [0, 0.64444, 0.13167, 0, 0.59111],
1487 52: [0.19444, 0.64444, 0.13167, 0, 0.59111],
1488 53: [0, 0.64444, 0.13167, 0, 0.59111],
1489 54: [0, 0.64444, 0.13167, 0, 0.59111],
1490 55: [0.19444, 0.64444, 0.13167, 0, 0.59111],
1491 56: [0, 0.64444, 0.13167, 0, 0.59111],
1492 57: [0, 0.64444, 0.13167, 0, 0.59111],
1493 58: [0, 0.44444, 0.06695, 0, 0.35555],
1494 59: [0.19444, 0.44444, 0.06695, 0, 0.35555],
1495 61: [-0.10889, 0.39111, 0.06833, 0, 0.88555],
1496 63: [0, 0.69444, 0.11472, 0, 0.59111],
1497 64: [0, 0.69444, 0.09208, 0, 0.88555],
1498 65: [0, 0.68611, 0, 0, 0.86555],
1499 66: [0, 0.68611, 0.0992, 0, 0.81666],
1500 67: [0, 0.68611, 0.14208, 0, 0.82666],
1501 68: [0, 0.68611, 0.09062, 0, 0.87555],
1502 69: [0, 0.68611, 0.11431, 0, 0.75666],
1503 70: [0, 0.68611, 0.12903, 0, 0.72722],
1504 71: [0, 0.68611, 0.07347, 0, 0.89527],
1505 72: [0, 0.68611, 0.17208, 0, 0.8961],
1506 73: [0, 0.68611, 0.15681, 0, 0.47166],
1507 74: [0, 0.68611, 0.145, 0, 0.61055],
1508 75: [0, 0.68611, 0.14208, 0, 0.89499],
1509 76: [0, 0.68611, 0, 0, 0.69777],
1510 77: [0, 0.68611, 0.17208, 0, 1.07277],
1511 78: [0, 0.68611, 0.17208, 0, 0.8961],
1512 79: [0, 0.68611, 0.09062, 0, 0.85499],
1513 80: [0, 0.68611, 0.0992, 0, 0.78721],
1514 81: [0.19444, 0.68611, 0.09062, 0, 0.85499],
1515 82: [0, 0.68611, 0.02559, 0, 0.85944],
1516 83: [0, 0.68611, 0.11264, 0, 0.64999],
1517 84: [0, 0.68611, 0.12903, 0, 0.7961],
1518 85: [0, 0.68611, 0.17208, 0, 0.88083],
1519 86: [0, 0.68611, 0.18625, 0, 0.86555],
1520 87: [0, 0.68611, 0.18625, 0, 1.15999],
1521 88: [0, 0.68611, 0.15681, 0, 0.86555],
1522 89: [0, 0.68611, 0.19803, 0, 0.86555],
1523 90: [0, 0.68611, 0.14208, 0, 0.70888],
1524 91: [0.25, 0.75, 0.1875, 0, 0.35611],
1525 93: [0.25, 0.75, 0.09972, 0, 0.35611],
1526 94: [0, 0.69444, 0.06709, 0, 0.59111],
1527 95: [0.31, 0.13444, 0.09811, 0, 0.59111],
1528 97: [0, 0.44444, 0.09426, 0, 0.59111],
1529 98: [0, 0.69444, 0.07861, 0, 0.53222],
1530 99: [0, 0.44444, 0.05222, 0, 0.53222],
1531 100: [0, 0.69444, 0.10861, 0, 0.59111],
1532 101: [0, 0.44444, 0.085, 0, 0.53222],
1533 102: [0.19444, 0.69444, 0.21778, 0, 0.4],
1534 103: [0.19444, 0.44444, 0.105, 0, 0.53222],
1535 104: [0, 0.69444, 0.09426, 0, 0.59111],
1536 105: [0, 0.69326, 0.11387, 0, 0.35555],
1537 106: [0.19444, 0.69326, 0.1672, 0, 0.35555],
1538 107: [0, 0.69444, 0.11111, 0, 0.53222],
1539 108: [0, 0.69444, 0.10861, 0, 0.29666],
1540 109: [0, 0.44444, 0.09426, 0, 0.94444],
1541 110: [0, 0.44444, 0.09426, 0, 0.64999],
1542 111: [0, 0.44444, 0.07861, 0, 0.59111],
1543 112: [0.19444, 0.44444, 0.07861, 0, 0.59111],
1544 113: [0.19444, 0.44444, 0.105, 0, 0.53222],
1545 114: [0, 0.44444, 0.11111, 0, 0.50167],
1546 115: [0, 0.44444, 0.08167, 0, 0.48694],
1547 116: [0, 0.63492, 0.09639, 0, 0.385],
1548 117: [0, 0.44444, 0.09426, 0, 0.62055],
1549 118: [0, 0.44444, 0.11111, 0, 0.53222],
1550 119: [0, 0.44444, 0.11111, 0, 0.76777],
1551 120: [0, 0.44444, 0.12583, 0, 0.56055],
1552 121: [0.19444, 0.44444, 0.105, 0, 0.56166],
1553 122: [0, 0.44444, 0.13889, 0, 0.49055],
1554 126: [0.35, 0.34444, 0.11472, 0, 0.59111],
1555 160: [0, 0, 0, 0, 0.25],
1556 168: [0, 0.69444, 0.11473, 0, 0.59111],
1557 176: [0, 0.69444, 0, 0, 0.94888],
1558 184: [0.17014, 0, 0, 0, 0.53222],
1559 198: [0, 0.68611, 0.11431, 0, 1.02277],
1560 216: [0.04861, 0.73472, 0.09062, 0, 0.88555],
1561 223: [0.19444, 0.69444, 0.09736, 0, 0.665],
1562 230: [0, 0.44444, 0.085, 0, 0.82666],
1563 248: [0.09722, 0.54167, 0.09458, 0, 0.59111],
1564 305: [0, 0.44444, 0.09426, 0, 0.35555],
1565 338: [0, 0.68611, 0.11431, 0, 1.14054],
1566 339: [0, 0.44444, 0.085, 0, 0.82666],
1567 567: [0.19444, 0.44444, 0.04611, 0, 0.385],
1568 710: [0, 0.69444, 0.06709, 0, 0.59111],
1569 711: [0, 0.63194, 0.08271, 0, 0.59111],
1570 713: [0, 0.59444, 0.10444, 0, 0.59111],
1571 714: [0, 0.69444, 0.08528, 0, 0.59111],
1572 715: [0, 0.69444, 0, 0, 0.59111],
1573 728: [0, 0.69444, 0.10333, 0, 0.59111],
1574 729: [0, 0.69444, 0.12945, 0, 0.35555],
1575 730: [0, 0.69444, 0, 0, 0.94888],
1576 732: [0, 0.69444, 0.11472, 0, 0.59111],
1577 733: [0, 0.69444, 0.11472, 0, 0.59111],
1578 915: [0, 0.68611, 0.12903, 0, 0.69777],
1579 916: [0, 0.68611, 0, 0, 0.94444],
1580 920: [0, 0.68611, 0.09062, 0, 0.88555],
1581 923: [0, 0.68611, 0, 0, 0.80666],
1582 926: [0, 0.68611, 0.15092, 0, 0.76777],
1583 928: [0, 0.68611, 0.17208, 0, 0.8961],
1584 931: [0, 0.68611, 0.11431, 0, 0.82666],
1585 933: [0, 0.68611, 0.10778, 0, 0.88555],
1586 934: [0, 0.68611, 0.05632, 0, 0.82666],
1587 936: [0, 0.68611, 0.10778, 0, 0.88555],
1588 937: [0, 0.68611, 0.0992, 0, 0.82666],
1589 8211: [0, 0.44444, 0.09811, 0, 0.59111],
1590 8212: [0, 0.44444, 0.09811, 0, 1.18221],
1591 8216: [0, 0.69444, 0.12945, 0, 0.35555],
1592 8217: [0, 0.69444, 0.12945, 0, 0.35555],
1593 8220: [0, 0.69444, 0.16772, 0, 0.62055],
1594 8221: [0, 0.69444, 0.07939, 0, 0.62055]
1595 },
1596 "Main-Italic": {
1597 32: [0, 0, 0, 0, 0.25],
1598 33: [0, 0.69444, 0.12417, 0, 0.30667],
1599 34: [0, 0.69444, 0.06961, 0, 0.51444],
1600 35: [0.19444, 0.69444, 0.06616, 0, 0.81777],
1601 37: [0.05556, 0.75, 0.13639, 0, 0.81777],
1602 38: [0, 0.69444, 0.09694, 0, 0.76666],
1603 39: [0, 0.69444, 0.12417, 0, 0.30667],
1604 40: [0.25, 0.75, 0.16194, 0, 0.40889],
1605 41: [0.25, 0.75, 0.03694, 0, 0.40889],
1606 42: [0, 0.75, 0.14917, 0, 0.51111],
1607 43: [0.05667, 0.56167, 0.03694, 0, 0.76666],
1608 44: [0.19444, 0.10556, 0, 0, 0.30667],
1609 45: [0, 0.43056, 0.02826, 0, 0.35778],
1610 46: [0, 0.10556, 0, 0, 0.30667],
1611 47: [0.25, 0.75, 0.16194, 0, 0.51111],
1612 48: [0, 0.64444, 0.13556, 0, 0.51111],
1613 49: [0, 0.64444, 0.13556, 0, 0.51111],
1614 50: [0, 0.64444, 0.13556, 0, 0.51111],
1615 51: [0, 0.64444, 0.13556, 0, 0.51111],
1616 52: [0.19444, 0.64444, 0.13556, 0, 0.51111],
1617 53: [0, 0.64444, 0.13556, 0, 0.51111],
1618 54: [0, 0.64444, 0.13556, 0, 0.51111],
1619 55: [0.19444, 0.64444, 0.13556, 0, 0.51111],
1620 56: [0, 0.64444, 0.13556, 0, 0.51111],
1621 57: [0, 0.64444, 0.13556, 0, 0.51111],
1622 58: [0, 0.43056, 0.0582, 0, 0.30667],
1623 59: [0.19444, 0.43056, 0.0582, 0, 0.30667],
1624 61: [-0.13313, 0.36687, 0.06616, 0, 0.76666],
1625 63: [0, 0.69444, 0.1225, 0, 0.51111],
1626 64: [0, 0.69444, 0.09597, 0, 0.76666],
1627 65: [0, 0.68333, 0, 0, 0.74333],
1628 66: [0, 0.68333, 0.10257, 0, 0.70389],
1629 67: [0, 0.68333, 0.14528, 0, 0.71555],
1630 68: [0, 0.68333, 0.09403, 0, 0.755],
1631 69: [0, 0.68333, 0.12028, 0, 0.67833],
1632 70: [0, 0.68333, 0.13305, 0, 0.65277],
1633 71: [0, 0.68333, 0.08722, 0, 0.77361],
1634 72: [0, 0.68333, 0.16389, 0, 0.74333],
1635 73: [0, 0.68333, 0.15806, 0, 0.38555],
1636 74: [0, 0.68333, 0.14028, 0, 0.525],
1637 75: [0, 0.68333, 0.14528, 0, 0.76888],
1638 76: [0, 0.68333, 0, 0, 0.62722],
1639 77: [0, 0.68333, 0.16389, 0, 0.89666],
1640 78: [0, 0.68333, 0.16389, 0, 0.74333],
1641 79: [0, 0.68333, 0.09403, 0, 0.76666],
1642 80: [0, 0.68333, 0.10257, 0, 0.67833],
1643 81: [0.19444, 0.68333, 0.09403, 0, 0.76666],
1644 82: [0, 0.68333, 0.03868, 0, 0.72944],
1645 83: [0, 0.68333, 0.11972, 0, 0.56222],
1646 84: [0, 0.68333, 0.13305, 0, 0.71555],
1647 85: [0, 0.68333, 0.16389, 0, 0.74333],
1648 86: [0, 0.68333, 0.18361, 0, 0.74333],
1649 87: [0, 0.68333, 0.18361, 0, 0.99888],
1650 88: [0, 0.68333, 0.15806, 0, 0.74333],
1651 89: [0, 0.68333, 0.19383, 0, 0.74333],
1652 90: [0, 0.68333, 0.14528, 0, 0.61333],
1653 91: [0.25, 0.75, 0.1875, 0, 0.30667],
1654 93: [0.25, 0.75, 0.10528, 0, 0.30667],
1655 94: [0, 0.69444, 0.06646, 0, 0.51111],
1656 95: [0.31, 0.12056, 0.09208, 0, 0.51111],
1657 97: [0, 0.43056, 0.07671, 0, 0.51111],
1658 98: [0, 0.69444, 0.06312, 0, 0.46],
1659 99: [0, 0.43056, 0.05653, 0, 0.46],
1660 100: [0, 0.69444, 0.10333, 0, 0.51111],
1661 101: [0, 0.43056, 0.07514, 0, 0.46],
1662 102: [0.19444, 0.69444, 0.21194, 0, 0.30667],
1663 103: [0.19444, 0.43056, 0.08847, 0, 0.46],
1664 104: [0, 0.69444, 0.07671, 0, 0.51111],
1665 105: [0, 0.65536, 0.1019, 0, 0.30667],
1666 106: [0.19444, 0.65536, 0.14467, 0, 0.30667],
1667 107: [0, 0.69444, 0.10764, 0, 0.46],
1668 108: [0, 0.69444, 0.10333, 0, 0.25555],
1669 109: [0, 0.43056, 0.07671, 0, 0.81777],
1670 110: [0, 0.43056, 0.07671, 0, 0.56222],
1671 111: [0, 0.43056, 0.06312, 0, 0.51111],
1672 112: [0.19444, 0.43056, 0.06312, 0, 0.51111],
1673 113: [0.19444, 0.43056, 0.08847, 0, 0.46],
1674 114: [0, 0.43056, 0.10764, 0, 0.42166],
1675 115: [0, 0.43056, 0.08208, 0, 0.40889],
1676 116: [0, 0.61508, 0.09486, 0, 0.33222],
1677 117: [0, 0.43056, 0.07671, 0, 0.53666],
1678 118: [0, 0.43056, 0.10764, 0, 0.46],
1679 119: [0, 0.43056, 0.10764, 0, 0.66444],
1680 120: [0, 0.43056, 0.12042, 0, 0.46389],
1681 121: [0.19444, 0.43056, 0.08847, 0, 0.48555],
1682 122: [0, 0.43056, 0.12292, 0, 0.40889],
1683 126: [0.35, 0.31786, 0.11585, 0, 0.51111],
1684 160: [0, 0, 0, 0, 0.25],
1685 168: [0, 0.66786, 0.10474, 0, 0.51111],
1686 176: [0, 0.69444, 0, 0, 0.83129],
1687 184: [0.17014, 0, 0, 0, 0.46],
1688 198: [0, 0.68333, 0.12028, 0, 0.88277],
1689 216: [0.04861, 0.73194, 0.09403, 0, 0.76666],
1690 223: [0.19444, 0.69444, 0.10514, 0, 0.53666],
1691 230: [0, 0.43056, 0.07514, 0, 0.71555],
1692 248: [0.09722, 0.52778, 0.09194, 0, 0.51111],
1693 338: [0, 0.68333, 0.12028, 0, 0.98499],
1694 339: [0, 0.43056, 0.07514, 0, 0.71555],
1695 710: [0, 0.69444, 0.06646, 0, 0.51111],
1696 711: [0, 0.62847, 0.08295, 0, 0.51111],
1697 713: [0, 0.56167, 0.10333, 0, 0.51111],
1698 714: [0, 0.69444, 0.09694, 0, 0.51111],
1699 715: [0, 0.69444, 0, 0, 0.51111],
1700 728: [0, 0.69444, 0.10806, 0, 0.51111],
1701 729: [0, 0.66786, 0.11752, 0, 0.30667],
1702 730: [0, 0.69444, 0, 0, 0.83129],
1703 732: [0, 0.66786, 0.11585, 0, 0.51111],
1704 733: [0, 0.69444, 0.1225, 0, 0.51111],
1705 915: [0, 0.68333, 0.13305, 0, 0.62722],
1706 916: [0, 0.68333, 0, 0, 0.81777],
1707 920: [0, 0.68333, 0.09403, 0, 0.76666],
1708 923: [0, 0.68333, 0, 0, 0.69222],
1709 926: [0, 0.68333, 0.15294, 0, 0.66444],
1710 928: [0, 0.68333, 0.16389, 0, 0.74333],
1711 931: [0, 0.68333, 0.12028, 0, 0.71555],
1712 933: [0, 0.68333, 0.11111, 0, 0.76666],
1713 934: [0, 0.68333, 0.05986, 0, 0.71555],
1714 936: [0, 0.68333, 0.11111, 0, 0.76666],
1715 937: [0, 0.68333, 0.10257, 0, 0.71555],
1716 8211: [0, 0.43056, 0.09208, 0, 0.51111],
1717 8212: [0, 0.43056, 0.09208, 0, 1.02222],
1718 8216: [0, 0.69444, 0.12417, 0, 0.30667],
1719 8217: [0, 0.69444, 0.12417, 0, 0.30667],
1720 8220: [0, 0.69444, 0.1685, 0, 0.51444],
1721 8221: [0, 0.69444, 0.06961, 0, 0.51444],
1722 8463: [0, 0.68889, 0, 0, 0.54028]
1723 },
1724 "Main-Regular": {
1725 32: [0, 0, 0, 0, 0.25],
1726 33: [0, 0.69444, 0, 0, 0.27778],
1727 34: [0, 0.69444, 0, 0, 0.5],
1728 35: [0.19444, 0.69444, 0, 0, 0.83334],
1729 36: [0.05556, 0.75, 0, 0, 0.5],
1730 37: [0.05556, 0.75, 0, 0, 0.83334],
1731 38: [0, 0.69444, 0, 0, 0.77778],
1732 39: [0, 0.69444, 0, 0, 0.27778],
1733 40: [0.25, 0.75, 0, 0, 0.38889],
1734 41: [0.25, 0.75, 0, 0, 0.38889],
1735 42: [0, 0.75, 0, 0, 0.5],
1736 43: [0.08333, 0.58333, 0, 0, 0.77778],
1737 44: [0.19444, 0.10556, 0, 0, 0.27778],
1738 45: [0, 0.43056, 0, 0, 0.33333],
1739 46: [0, 0.10556, 0, 0, 0.27778],
1740 47: [0.25, 0.75, 0, 0, 0.5],
1741 48: [0, 0.64444, 0, 0, 0.5],
1742 49: [0, 0.64444, 0, 0, 0.5],
1743 50: [0, 0.64444, 0, 0, 0.5],
1744 51: [0, 0.64444, 0, 0, 0.5],
1745 52: [0, 0.64444, 0, 0, 0.5],
1746 53: [0, 0.64444, 0, 0, 0.5],
1747 54: [0, 0.64444, 0, 0, 0.5],
1748 55: [0, 0.64444, 0, 0, 0.5],
1749 56: [0, 0.64444, 0, 0, 0.5],
1750 57: [0, 0.64444, 0, 0, 0.5],
1751 58: [0, 0.43056, 0, 0, 0.27778],
1752 59: [0.19444, 0.43056, 0, 0, 0.27778],
1753 60: [0.0391, 0.5391, 0, 0, 0.77778],
1754 61: [-0.13313, 0.36687, 0, 0, 0.77778],
1755 62: [0.0391, 0.5391, 0, 0, 0.77778],
1756 63: [0, 0.69444, 0, 0, 0.47222],
1757 64: [0, 0.69444, 0, 0, 0.77778],
1758 65: [0, 0.68333, 0, 0, 0.75],
1759 66: [0, 0.68333, 0, 0, 0.70834],
1760 67: [0, 0.68333, 0, 0, 0.72222],
1761 68: [0, 0.68333, 0, 0, 0.76389],
1762 69: [0, 0.68333, 0, 0, 0.68056],
1763 70: [0, 0.68333, 0, 0, 0.65278],
1764 71: [0, 0.68333, 0, 0, 0.78472],
1765 72: [0, 0.68333, 0, 0, 0.75],
1766 73: [0, 0.68333, 0, 0, 0.36111],
1767 74: [0, 0.68333, 0, 0, 0.51389],
1768 75: [0, 0.68333, 0, 0, 0.77778],
1769 76: [0, 0.68333, 0, 0, 0.625],
1770 77: [0, 0.68333, 0, 0, 0.91667],
1771 78: [0, 0.68333, 0, 0, 0.75],
1772 79: [0, 0.68333, 0, 0, 0.77778],
1773 80: [0, 0.68333, 0, 0, 0.68056],
1774 81: [0.19444, 0.68333, 0, 0, 0.77778],
1775 82: [0, 0.68333, 0, 0, 0.73611],
1776 83: [0, 0.68333, 0, 0, 0.55556],
1777 84: [0, 0.68333, 0, 0, 0.72222],
1778 85: [0, 0.68333, 0, 0, 0.75],
1779 86: [0, 0.68333, 0.01389, 0, 0.75],
1780 87: [0, 0.68333, 0.01389, 0, 1.02778],
1781 88: [0, 0.68333, 0, 0, 0.75],
1782 89: [0, 0.68333, 0.025, 0, 0.75],
1783 90: [0, 0.68333, 0, 0, 0.61111],
1784 91: [0.25, 0.75, 0, 0, 0.27778],
1785 92: [0.25, 0.75, 0, 0, 0.5],
1786 93: [0.25, 0.75, 0, 0, 0.27778],
1787 94: [0, 0.69444, 0, 0, 0.5],
1788 95: [0.31, 0.12056, 0.02778, 0, 0.5],
1789 97: [0, 0.43056, 0, 0, 0.5],
1790 98: [0, 0.69444, 0, 0, 0.55556],
1791 99: [0, 0.43056, 0, 0, 0.44445],
1792 100: [0, 0.69444, 0, 0, 0.55556],
1793 101: [0, 0.43056, 0, 0, 0.44445],
1794 102: [0, 0.69444, 0.07778, 0, 0.30556],
1795 103: [0.19444, 0.43056, 0.01389, 0, 0.5],
1796 104: [0, 0.69444, 0, 0, 0.55556],
1797 105: [0, 0.66786, 0, 0, 0.27778],
1798 106: [0.19444, 0.66786, 0, 0, 0.30556],
1799 107: [0, 0.69444, 0, 0, 0.52778],
1800 108: [0, 0.69444, 0, 0, 0.27778],
1801 109: [0, 0.43056, 0, 0, 0.83334],
1802 110: [0, 0.43056, 0, 0, 0.55556],
1803 111: [0, 0.43056, 0, 0, 0.5],
1804 112: [0.19444, 0.43056, 0, 0, 0.55556],
1805 113: [0.19444, 0.43056, 0, 0, 0.52778],
1806 114: [0, 0.43056, 0, 0, 0.39167],
1807 115: [0, 0.43056, 0, 0, 0.39445],
1808 116: [0, 0.61508, 0, 0, 0.38889],
1809 117: [0, 0.43056, 0, 0, 0.55556],
1810 118: [0, 0.43056, 0.01389, 0, 0.52778],
1811 119: [0, 0.43056, 0.01389, 0, 0.72222],
1812 120: [0, 0.43056, 0, 0, 0.52778],
1813 121: [0.19444, 0.43056, 0.01389, 0, 0.52778],
1814 122: [0, 0.43056, 0, 0, 0.44445],
1815 123: [0.25, 0.75, 0, 0, 0.5],
1816 124: [0.25, 0.75, 0, 0, 0.27778],
1817 125: [0.25, 0.75, 0, 0, 0.5],
1818 126: [0.35, 0.31786, 0, 0, 0.5],
1819 160: [0, 0, 0, 0, 0.25],
1820 163: [0, 0.69444, 0, 0, 0.76909],
1821 167: [0.19444, 0.69444, 0, 0, 0.44445],
1822 168: [0, 0.66786, 0, 0, 0.5],
1823 172: [0, 0.43056, 0, 0, 0.66667],
1824 176: [0, 0.69444, 0, 0, 0.75],
1825 177: [0.08333, 0.58333, 0, 0, 0.77778],
1826 182: [0.19444, 0.69444, 0, 0, 0.61111],
1827 184: [0.17014, 0, 0, 0, 0.44445],
1828 198: [0, 0.68333, 0, 0, 0.90278],
1829 215: [0.08333, 0.58333, 0, 0, 0.77778],
1830 216: [0.04861, 0.73194, 0, 0, 0.77778],
1831 223: [0, 0.69444, 0, 0, 0.5],
1832 230: [0, 0.43056, 0, 0, 0.72222],
1833 247: [0.08333, 0.58333, 0, 0, 0.77778],
1834 248: [0.09722, 0.52778, 0, 0, 0.5],
1835 305: [0, 0.43056, 0, 0, 0.27778],
1836 338: [0, 0.68333, 0, 0, 1.01389],
1837 339: [0, 0.43056, 0, 0, 0.77778],
1838 567: [0.19444, 0.43056, 0, 0, 0.30556],
1839 710: [0, 0.69444, 0, 0, 0.5],
1840 711: [0, 0.62847, 0, 0, 0.5],
1841 713: [0, 0.56778, 0, 0, 0.5],
1842 714: [0, 0.69444, 0, 0, 0.5],
1843 715: [0, 0.69444, 0, 0, 0.5],
1844 728: [0, 0.69444, 0, 0, 0.5],
1845 729: [0, 0.66786, 0, 0, 0.27778],
1846 730: [0, 0.69444, 0, 0, 0.75],
1847 732: [0, 0.66786, 0, 0, 0.5],
1848 733: [0, 0.69444, 0, 0, 0.5],
1849 915: [0, 0.68333, 0, 0, 0.625],
1850 916: [0, 0.68333, 0, 0, 0.83334],
1851 920: [0, 0.68333, 0, 0, 0.77778],
1852 923: [0, 0.68333, 0, 0, 0.69445],
1853 926: [0, 0.68333, 0, 0, 0.66667],
1854 928: [0, 0.68333, 0, 0, 0.75],
1855 931: [0, 0.68333, 0, 0, 0.72222],
1856 933: [0, 0.68333, 0, 0, 0.77778],
1857 934: [0, 0.68333, 0, 0, 0.72222],
1858 936: [0, 0.68333, 0, 0, 0.77778],
1859 937: [0, 0.68333, 0, 0, 0.72222],
1860 8211: [0, 0.43056, 0.02778, 0, 0.5],
1861 8212: [0, 0.43056, 0.02778, 0, 1],
1862 8216: [0, 0.69444, 0, 0, 0.27778],
1863 8217: [0, 0.69444, 0, 0, 0.27778],
1864 8220: [0, 0.69444, 0, 0, 0.5],
1865 8221: [0, 0.69444, 0, 0, 0.5],
1866 8224: [0.19444, 0.69444, 0, 0, 0.44445],
1867 8225: [0.19444, 0.69444, 0, 0, 0.44445],
1868 8230: [0, 0.123, 0, 0, 1.172],
1869 8242: [0, 0.55556, 0, 0, 0.275],
1870 8407: [0, 0.71444, 0.15382, 0, 0.5],
1871 8463: [0, 0.68889, 0, 0, 0.54028],
1872 8465: [0, 0.69444, 0, 0, 0.72222],
1873 8467: [0, 0.69444, 0, 0.11111, 0.41667],
1874 8472: [0.19444, 0.43056, 0, 0.11111, 0.63646],
1875 8476: [0, 0.69444, 0, 0, 0.72222],
1876 8501: [0, 0.69444, 0, 0, 0.61111],
1877 8592: [-0.13313, 0.36687, 0, 0, 1],
1878 8593: [0.19444, 0.69444, 0, 0, 0.5],
1879 8594: [-0.13313, 0.36687, 0, 0, 1],
1880 8595: [0.19444, 0.69444, 0, 0, 0.5],
1881 8596: [-0.13313, 0.36687, 0, 0, 1],
1882 8597: [0.25, 0.75, 0, 0, 0.5],
1883 8598: [0.19444, 0.69444, 0, 0, 1],
1884 8599: [0.19444, 0.69444, 0, 0, 1],
1885 8600: [0.19444, 0.69444, 0, 0, 1],
1886 8601: [0.19444, 0.69444, 0, 0, 1],
1887 8614: [0.011, 0.511, 0, 0, 1],
1888 8617: [0.011, 0.511, 0, 0, 1.126],
1889 8618: [0.011, 0.511, 0, 0, 1.126],
1890 8636: [-0.13313, 0.36687, 0, 0, 1],
1891 8637: [-0.13313, 0.36687, 0, 0, 1],
1892 8640: [-0.13313, 0.36687, 0, 0, 1],
1893 8641: [-0.13313, 0.36687, 0, 0, 1],
1894 8652: [0.011, 0.671, 0, 0, 1],
1895 8656: [-0.13313, 0.36687, 0, 0, 1],
1896 8657: [0.19444, 0.69444, 0, 0, 0.61111],
1897 8658: [-0.13313, 0.36687, 0, 0, 1],
1898 8659: [0.19444, 0.69444, 0, 0, 0.61111],
1899 8660: [-0.13313, 0.36687, 0, 0, 1],
1900 8661: [0.25, 0.75, 0, 0, 0.61111],
1901 8704: [0, 0.69444, 0, 0, 0.55556],
1902 8706: [0, 0.69444, 0.05556, 0.08334, 0.5309],
1903 8707: [0, 0.69444, 0, 0, 0.55556],
1904 8709: [0.05556, 0.75, 0, 0, 0.5],
1905 8711: [0, 0.68333, 0, 0, 0.83334],
1906 8712: [0.0391, 0.5391, 0, 0, 0.66667],
1907 8715: [0.0391, 0.5391, 0, 0, 0.66667],
1908 8722: [0.08333, 0.58333, 0, 0, 0.77778],
1909 8723: [0.08333, 0.58333, 0, 0, 0.77778],
1910 8725: [0.25, 0.75, 0, 0, 0.5],
1911 8726: [0.25, 0.75, 0, 0, 0.5],
1912 8727: [-0.03472, 0.46528, 0, 0, 0.5],
1913 8728: [-0.05555, 0.44445, 0, 0, 0.5],
1914 8729: [-0.05555, 0.44445, 0, 0, 0.5],
1915 8730: [0.2, 0.8, 0, 0, 0.83334],
1916 8733: [0, 0.43056, 0, 0, 0.77778],
1917 8734: [0, 0.43056, 0, 0, 1],
1918 8736: [0, 0.69224, 0, 0, 0.72222],
1919 8739: [0.25, 0.75, 0, 0, 0.27778],
1920 8741: [0.25, 0.75, 0, 0, 0.5],
1921 8743: [0, 0.55556, 0, 0, 0.66667],
1922 8744: [0, 0.55556, 0, 0, 0.66667],
1923 8745: [0, 0.55556, 0, 0, 0.66667],
1924 8746: [0, 0.55556, 0, 0, 0.66667],
1925 8747: [0.19444, 0.69444, 0.11111, 0, 0.41667],
1926 8764: [-0.13313, 0.36687, 0, 0, 0.77778],
1927 8768: [0.19444, 0.69444, 0, 0, 0.27778],
1928 8771: [-0.03625, 0.46375, 0, 0, 0.77778],
1929 8773: [-0.022, 0.589, 0, 0, 0.778],
1930 8776: [-0.01688, 0.48312, 0, 0, 0.77778],
1931 8781: [-0.03625, 0.46375, 0, 0, 0.77778],
1932 8784: [-0.133, 0.673, 0, 0, 0.778],
1933 8801: [-0.03625, 0.46375, 0, 0, 0.77778],
1934 8804: [0.13597, 0.63597, 0, 0, 0.77778],
1935 8805: [0.13597, 0.63597, 0, 0, 0.77778],
1936 8810: [0.0391, 0.5391, 0, 0, 1],
1937 8811: [0.0391, 0.5391, 0, 0, 1],
1938 8826: [0.0391, 0.5391, 0, 0, 0.77778],
1939 8827: [0.0391, 0.5391, 0, 0, 0.77778],
1940 8834: [0.0391, 0.5391, 0, 0, 0.77778],
1941 8835: [0.0391, 0.5391, 0, 0, 0.77778],
1942 8838: [0.13597, 0.63597, 0, 0, 0.77778],
1943 8839: [0.13597, 0.63597, 0, 0, 0.77778],
1944 8846: [0, 0.55556, 0, 0, 0.66667],
1945 8849: [0.13597, 0.63597, 0, 0, 0.77778],
1946 8850: [0.13597, 0.63597, 0, 0, 0.77778],
1947 8851: [0, 0.55556, 0, 0, 0.66667],
1948 8852: [0, 0.55556, 0, 0, 0.66667],
1949 8853: [0.08333, 0.58333, 0, 0, 0.77778],
1950 8854: [0.08333, 0.58333, 0, 0, 0.77778],
1951 8855: [0.08333, 0.58333, 0, 0, 0.77778],
1952 8856: [0.08333, 0.58333, 0, 0, 0.77778],
1953 8857: [0.08333, 0.58333, 0, 0, 0.77778],
1954 8866: [0, 0.69444, 0, 0, 0.61111],
1955 8867: [0, 0.69444, 0, 0, 0.61111],
1956 8868: [0, 0.69444, 0, 0, 0.77778],
1957 8869: [0, 0.69444, 0, 0, 0.77778],
1958 8872: [0.249, 0.75, 0, 0, 0.867],
1959 8900: [-0.05555, 0.44445, 0, 0, 0.5],
1960 8901: [-0.05555, 0.44445, 0, 0, 0.27778],
1961 8902: [-0.03472, 0.46528, 0, 0, 0.5],
1962 8904: [5e-3, 0.505, 0, 0, 0.9],
1963 8942: [0.03, 0.903, 0, 0, 0.278],
1964 8943: [-0.19, 0.313, 0, 0, 1.172],
1965 8945: [-0.1, 0.823, 0, 0, 1.282],
1966 8968: [0.25, 0.75, 0, 0, 0.44445],
1967 8969: [0.25, 0.75, 0, 0, 0.44445],
1968 8970: [0.25, 0.75, 0, 0, 0.44445],
1969 8971: [0.25, 0.75, 0, 0, 0.44445],
1970 8994: [-0.14236, 0.35764, 0, 0, 1],
1971 8995: [-0.14236, 0.35764, 0, 0, 1],
1972 9136: [0.244, 0.744, 0, 0, 0.412],
1973 9137: [0.244, 0.745, 0, 0, 0.412],
1974 9651: [0.19444, 0.69444, 0, 0, 0.88889],
1975 9657: [-0.03472, 0.46528, 0, 0, 0.5],
1976 9661: [0.19444, 0.69444, 0, 0, 0.88889],
1977 9667: [-0.03472, 0.46528, 0, 0, 0.5],
1978 9711: [0.19444, 0.69444, 0, 0, 1],
1979 9824: [0.12963, 0.69444, 0, 0, 0.77778],
1980 9825: [0.12963, 0.69444, 0, 0, 0.77778],
1981 9826: [0.12963, 0.69444, 0, 0, 0.77778],
1982 9827: [0.12963, 0.69444, 0, 0, 0.77778],
1983 9837: [0, 0.75, 0, 0, 0.38889],
1984 9838: [0.19444, 0.69444, 0, 0, 0.38889],
1985 9839: [0.19444, 0.69444, 0, 0, 0.38889],
1986 10216: [0.25, 0.75, 0, 0, 0.38889],
1987 10217: [0.25, 0.75, 0, 0, 0.38889],
1988 10222: [0.244, 0.744, 0, 0, 0.412],
1989 10223: [0.244, 0.745, 0, 0, 0.412],
1990 10229: [0.011, 0.511, 0, 0, 1.609],
1991 10230: [0.011, 0.511, 0, 0, 1.638],
1992 10231: [0.011, 0.511, 0, 0, 1.859],
1993 10232: [0.024, 0.525, 0, 0, 1.609],
1994 10233: [0.024, 0.525, 0, 0, 1.638],
1995 10234: [0.024, 0.525, 0, 0, 1.858],
1996 10236: [0.011, 0.511, 0, 0, 1.638],
1997 10815: [0, 0.68333, 0, 0, 0.75],
1998 10927: [0.13597, 0.63597, 0, 0, 0.77778],
1999 10928: [0.13597, 0.63597, 0, 0, 0.77778],
2000 57376: [0.19444, 0.69444, 0, 0, 0]
2001 },
2002 "Math-BoldItalic": {
2003 32: [0, 0, 0, 0, 0.25],
2004 48: [0, 0.44444, 0, 0, 0.575],
2005 49: [0, 0.44444, 0, 0, 0.575],
2006 50: [0, 0.44444, 0, 0, 0.575],
2007 51: [0.19444, 0.44444, 0, 0, 0.575],
2008 52: [0.19444, 0.44444, 0, 0, 0.575],
2009 53: [0.19444, 0.44444, 0, 0, 0.575],
2010 54: [0, 0.64444, 0, 0, 0.575],
2011 55: [0.19444, 0.44444, 0, 0, 0.575],
2012 56: [0, 0.64444, 0, 0, 0.575],
2013 57: [0.19444, 0.44444, 0, 0, 0.575],
2014 65: [0, 0.68611, 0, 0, 0.86944],
2015 66: [0, 0.68611, 0.04835, 0, 0.8664],
2016 67: [0, 0.68611, 0.06979, 0, 0.81694],
2017 68: [0, 0.68611, 0.03194, 0, 0.93812],
2018 69: [0, 0.68611, 0.05451, 0, 0.81007],
2019 70: [0, 0.68611, 0.15972, 0, 0.68889],
2020 71: [0, 0.68611, 0, 0, 0.88673],
2021 72: [0, 0.68611, 0.08229, 0, 0.98229],
2022 73: [0, 0.68611, 0.07778, 0, 0.51111],
2023 74: [0, 0.68611, 0.10069, 0, 0.63125],
2024 75: [0, 0.68611, 0.06979, 0, 0.97118],
2025 76: [0, 0.68611, 0, 0, 0.75555],
2026 77: [0, 0.68611, 0.11424, 0, 1.14201],
2027 78: [0, 0.68611, 0.11424, 0, 0.95034],
2028 79: [0, 0.68611, 0.03194, 0, 0.83666],
2029 80: [0, 0.68611, 0.15972, 0, 0.72309],
2030 81: [0.19444, 0.68611, 0, 0, 0.86861],
2031 82: [0, 0.68611, 421e-5, 0, 0.87235],
2032 83: [0, 0.68611, 0.05382, 0, 0.69271],
2033 84: [0, 0.68611, 0.15972, 0, 0.63663],
2034 85: [0, 0.68611, 0.11424, 0, 0.80027],
2035 86: [0, 0.68611, 0.25555, 0, 0.67778],
2036 87: [0, 0.68611, 0.15972, 0, 1.09305],
2037 88: [0, 0.68611, 0.07778, 0, 0.94722],
2038 89: [0, 0.68611, 0.25555, 0, 0.67458],
2039 90: [0, 0.68611, 0.06979, 0, 0.77257],
2040 97: [0, 0.44444, 0, 0, 0.63287],
2041 98: [0, 0.69444, 0, 0, 0.52083],
2042 99: [0, 0.44444, 0, 0, 0.51342],
2043 100: [0, 0.69444, 0, 0, 0.60972],
2044 101: [0, 0.44444, 0, 0, 0.55361],
2045 102: [0.19444, 0.69444, 0.11042, 0, 0.56806],
2046 103: [0.19444, 0.44444, 0.03704, 0, 0.5449],
2047 104: [0, 0.69444, 0, 0, 0.66759],
2048 105: [0, 0.69326, 0, 0, 0.4048],
2049 106: [0.19444, 0.69326, 0.0622, 0, 0.47083],
2050 107: [0, 0.69444, 0.01852, 0, 0.6037],
2051 108: [0, 0.69444, 88e-4, 0, 0.34815],
2052 109: [0, 0.44444, 0, 0, 1.0324],
2053 110: [0, 0.44444, 0, 0, 0.71296],
2054 111: [0, 0.44444, 0, 0, 0.58472],
2055 112: [0.19444, 0.44444, 0, 0, 0.60092],
2056 113: [0.19444, 0.44444, 0.03704, 0, 0.54213],
2057 114: [0, 0.44444, 0.03194, 0, 0.5287],
2058 115: [0, 0.44444, 0, 0, 0.53125],
2059 116: [0, 0.63492, 0, 0, 0.41528],
2060 117: [0, 0.44444, 0, 0, 0.68102],
2061 118: [0, 0.44444, 0.03704, 0, 0.56666],
2062 119: [0, 0.44444, 0.02778, 0, 0.83148],
2063 120: [0, 0.44444, 0, 0, 0.65903],
2064 121: [0.19444, 0.44444, 0.03704, 0, 0.59028],
2065 122: [0, 0.44444, 0.04213, 0, 0.55509],
2066 160: [0, 0, 0, 0, 0.25],
2067 915: [0, 0.68611, 0.15972, 0, 0.65694],
2068 916: [0, 0.68611, 0, 0, 0.95833],
2069 920: [0, 0.68611, 0.03194, 0, 0.86722],
2070 923: [0, 0.68611, 0, 0, 0.80555],
2071 926: [0, 0.68611, 0.07458, 0, 0.84125],
2072 928: [0, 0.68611, 0.08229, 0, 0.98229],
2073 931: [0, 0.68611, 0.05451, 0, 0.88507],
2074 933: [0, 0.68611, 0.15972, 0, 0.67083],
2075 934: [0, 0.68611, 0, 0, 0.76666],
2076 936: [0, 0.68611, 0.11653, 0, 0.71402],
2077 937: [0, 0.68611, 0.04835, 0, 0.8789],
2078 945: [0, 0.44444, 0, 0, 0.76064],
2079 946: [0.19444, 0.69444, 0.03403, 0, 0.65972],
2080 947: [0.19444, 0.44444, 0.06389, 0, 0.59003],
2081 948: [0, 0.69444, 0.03819, 0, 0.52222],
2082 949: [0, 0.44444, 0, 0, 0.52882],
2083 950: [0.19444, 0.69444, 0.06215, 0, 0.50833],
2084 951: [0.19444, 0.44444, 0.03704, 0, 0.6],
2085 952: [0, 0.69444, 0.03194, 0, 0.5618],
2086 953: [0, 0.44444, 0, 0, 0.41204],
2087 954: [0, 0.44444, 0, 0, 0.66759],
2088 955: [0, 0.69444, 0, 0, 0.67083],
2089 956: [0.19444, 0.44444, 0, 0, 0.70787],
2090 957: [0, 0.44444, 0.06898, 0, 0.57685],
2091 958: [0.19444, 0.69444, 0.03021, 0, 0.50833],
2092 959: [0, 0.44444, 0, 0, 0.58472],
2093 960: [0, 0.44444, 0.03704, 0, 0.68241],
2094 961: [0.19444, 0.44444, 0, 0, 0.6118],
2095 962: [0.09722, 0.44444, 0.07917, 0, 0.42361],
2096 963: [0, 0.44444, 0.03704, 0, 0.68588],
2097 964: [0, 0.44444, 0.13472, 0, 0.52083],
2098 965: [0, 0.44444, 0.03704, 0, 0.63055],
2099 966: [0.19444, 0.44444, 0, 0, 0.74722],
2100 967: [0.19444, 0.44444, 0, 0, 0.71805],
2101 968: [0.19444, 0.69444, 0.03704, 0, 0.75833],
2102 969: [0, 0.44444, 0.03704, 0, 0.71782],
2103 977: [0, 0.69444, 0, 0, 0.69155],
2104 981: [0.19444, 0.69444, 0, 0, 0.7125],
2105 982: [0, 0.44444, 0.03194, 0, 0.975],
2106 1009: [0.19444, 0.44444, 0, 0, 0.6118],
2107 1013: [0, 0.44444, 0, 0, 0.48333],
2108 57649: [0, 0.44444, 0, 0, 0.39352],
2109 57911: [0.19444, 0.44444, 0, 0, 0.43889]
2110 },
2111 "Math-Italic": {
2112 32: [0, 0, 0, 0, 0.25],
2113 48: [0, 0.43056, 0, 0, 0.5],
2114 49: [0, 0.43056, 0, 0, 0.5],
2115 50: [0, 0.43056, 0, 0, 0.5],
2116 51: [0.19444, 0.43056, 0, 0, 0.5],
2117 52: [0.19444, 0.43056, 0, 0, 0.5],
2118 53: [0.19444, 0.43056, 0, 0, 0.5],
2119 54: [0, 0.64444, 0, 0, 0.5],
2120 55: [0.19444, 0.43056, 0, 0, 0.5],
2121 56: [0, 0.64444, 0, 0, 0.5],
2122 57: [0.19444, 0.43056, 0, 0, 0.5],
2123 65: [0, 0.68333, 0, 0.13889, 0.75],
2124 66: [0, 0.68333, 0.05017, 0.08334, 0.75851],
2125 67: [0, 0.68333, 0.07153, 0.08334, 0.71472],
2126 68: [0, 0.68333, 0.02778, 0.05556, 0.82792],
2127 69: [0, 0.68333, 0.05764, 0.08334, 0.7382],
2128 70: [0, 0.68333, 0.13889, 0.08334, 0.64306],
2129 71: [0, 0.68333, 0, 0.08334, 0.78625],
2130 72: [0, 0.68333, 0.08125, 0.05556, 0.83125],
2131 73: [0, 0.68333, 0.07847, 0.11111, 0.43958],
2132 74: [0, 0.68333, 0.09618, 0.16667, 0.55451],
2133 75: [0, 0.68333, 0.07153, 0.05556, 0.84931],
2134 76: [0, 0.68333, 0, 0.02778, 0.68056],
2135 77: [0, 0.68333, 0.10903, 0.08334, 0.97014],
2136 78: [0, 0.68333, 0.10903, 0.08334, 0.80347],
2137 79: [0, 0.68333, 0.02778, 0.08334, 0.76278],
2138 80: [0, 0.68333, 0.13889, 0.08334, 0.64201],
2139 81: [0.19444, 0.68333, 0, 0.08334, 0.79056],
2140 82: [0, 0.68333, 773e-5, 0.08334, 0.75929],
2141 83: [0, 0.68333, 0.05764, 0.08334, 0.6132],
2142 84: [0, 0.68333, 0.13889, 0.08334, 0.58438],
2143 85: [0, 0.68333, 0.10903, 0.02778, 0.68278],
2144 86: [0, 0.68333, 0.22222, 0, 0.58333],
2145 87: [0, 0.68333, 0.13889, 0, 0.94445],
2146 88: [0, 0.68333, 0.07847, 0.08334, 0.82847],
2147 89: [0, 0.68333, 0.22222, 0, 0.58056],
2148 90: [0, 0.68333, 0.07153, 0.08334, 0.68264],
2149 97: [0, 0.43056, 0, 0, 0.52859],
2150 98: [0, 0.69444, 0, 0, 0.42917],
2151 99: [0, 0.43056, 0, 0.05556, 0.43276],
2152 100: [0, 0.69444, 0, 0.16667, 0.52049],
2153 101: [0, 0.43056, 0, 0.05556, 0.46563],
2154 102: [0.19444, 0.69444, 0.10764, 0.16667, 0.48959],
2155 103: [0.19444, 0.43056, 0.03588, 0.02778, 0.47697],
2156 104: [0, 0.69444, 0, 0, 0.57616],
2157 105: [0, 0.65952, 0, 0, 0.34451],
2158 106: [0.19444, 0.65952, 0.05724, 0, 0.41181],
2159 107: [0, 0.69444, 0.03148, 0, 0.5206],
2160 108: [0, 0.69444, 0.01968, 0.08334, 0.29838],
2161 109: [0, 0.43056, 0, 0, 0.87801],
2162 110: [0, 0.43056, 0, 0, 0.60023],
2163 111: [0, 0.43056, 0, 0.05556, 0.48472],
2164 112: [0.19444, 0.43056, 0, 0.08334, 0.50313],
2165 113: [0.19444, 0.43056, 0.03588, 0.08334, 0.44641],
2166 114: [0, 0.43056, 0.02778, 0.05556, 0.45116],
2167 115: [0, 0.43056, 0, 0.05556, 0.46875],
2168 116: [0, 0.61508, 0, 0.08334, 0.36111],
2169 117: [0, 0.43056, 0, 0.02778, 0.57246],
2170 118: [0, 0.43056, 0.03588, 0.02778, 0.48472],
2171 119: [0, 0.43056, 0.02691, 0.08334, 0.71592],
2172 120: [0, 0.43056, 0, 0.02778, 0.57153],
2173 121: [0.19444, 0.43056, 0.03588, 0.05556, 0.49028],
2174 122: [0, 0.43056, 0.04398, 0.05556, 0.46505],
2175 160: [0, 0, 0, 0, 0.25],
2176 915: [0, 0.68333, 0.13889, 0.08334, 0.61528],
2177 916: [0, 0.68333, 0, 0.16667, 0.83334],
2178 920: [0, 0.68333, 0.02778, 0.08334, 0.76278],
2179 923: [0, 0.68333, 0, 0.16667, 0.69445],
2180 926: [0, 0.68333, 0.07569, 0.08334, 0.74236],
2181 928: [0, 0.68333, 0.08125, 0.05556, 0.83125],
2182 931: [0, 0.68333, 0.05764, 0.08334, 0.77986],
2183 933: [0, 0.68333, 0.13889, 0.05556, 0.58333],
2184 934: [0, 0.68333, 0, 0.08334, 0.66667],
2185 936: [0, 0.68333, 0.11, 0.05556, 0.61222],
2186 937: [0, 0.68333, 0.05017, 0.08334, 0.7724],
2187 945: [0, 0.43056, 37e-4, 0.02778, 0.6397],
2188 946: [0.19444, 0.69444, 0.05278, 0.08334, 0.56563],
2189 947: [0.19444, 0.43056, 0.05556, 0, 0.51773],
2190 948: [0, 0.69444, 0.03785, 0.05556, 0.44444],
2191 949: [0, 0.43056, 0, 0.08334, 0.46632],
2192 950: [0.19444, 0.69444, 0.07378, 0.08334, 0.4375],
2193 951: [0.19444, 0.43056, 0.03588, 0.05556, 0.49653],
2194 952: [0, 0.69444, 0.02778, 0.08334, 0.46944],
2195 953: [0, 0.43056, 0, 0.05556, 0.35394],
2196 954: [0, 0.43056, 0, 0, 0.57616],
2197 955: [0, 0.69444, 0, 0, 0.58334],
2198 956: [0.19444, 0.43056, 0, 0.02778, 0.60255],
2199 957: [0, 0.43056, 0.06366, 0.02778, 0.49398],
2200 958: [0.19444, 0.69444, 0.04601, 0.11111, 0.4375],
2201 959: [0, 0.43056, 0, 0.05556, 0.48472],
2202 960: [0, 0.43056, 0.03588, 0, 0.57003],
2203 961: [0.19444, 0.43056, 0, 0.08334, 0.51702],
2204 962: [0.09722, 0.43056, 0.07986, 0.08334, 0.36285],
2205 963: [0, 0.43056, 0.03588, 0, 0.57141],
2206 964: [0, 0.43056, 0.1132, 0.02778, 0.43715],
2207 965: [0, 0.43056, 0.03588, 0.02778, 0.54028],
2208 966: [0.19444, 0.43056, 0, 0.08334, 0.65417],
2209 967: [0.19444, 0.43056, 0, 0.05556, 0.62569],
2210 968: [0.19444, 0.69444, 0.03588, 0.11111, 0.65139],
2211 969: [0, 0.43056, 0.03588, 0, 0.62245],
2212 977: [0, 0.69444, 0, 0.08334, 0.59144],
2213 981: [0.19444, 0.69444, 0, 0.08334, 0.59583],
2214 982: [0, 0.43056, 0.02778, 0, 0.82813],
2215 1009: [0.19444, 0.43056, 0, 0.08334, 0.51702],
2216 1013: [0, 0.43056, 0, 0.05556, 0.4059],
2217 57649: [0, 0.43056, 0, 0.02778, 0.32246],
2218 57911: [0.19444, 0.43056, 0, 0.08334, 0.38403]
2219 },
2220 "SansSerif-Bold": {
2221 32: [0, 0, 0, 0, 0.25],
2222 33: [0, 0.69444, 0, 0, 0.36667],
2223 34: [0, 0.69444, 0, 0, 0.55834],
2224 35: [0.19444, 0.69444, 0, 0, 0.91667],
2225 36: [0.05556, 0.75, 0, 0, 0.55],
2226 37: [0.05556, 0.75, 0, 0, 1.02912],
2227 38: [0, 0.69444, 0, 0, 0.83056],
2228 39: [0, 0.69444, 0, 0, 0.30556],
2229 40: [0.25, 0.75, 0, 0, 0.42778],
2230 41: [0.25, 0.75, 0, 0, 0.42778],
2231 42: [0, 0.75, 0, 0, 0.55],
2232 43: [0.11667, 0.61667, 0, 0, 0.85556],
2233 44: [0.10556, 0.13056, 0, 0, 0.30556],
2234 45: [0, 0.45833, 0, 0, 0.36667],
2235 46: [0, 0.13056, 0, 0, 0.30556],
2236 47: [0.25, 0.75, 0, 0, 0.55],
2237 48: [0, 0.69444, 0, 0, 0.55],
2238 49: [0, 0.69444, 0, 0, 0.55],
2239 50: [0, 0.69444, 0, 0, 0.55],
2240 51: [0, 0.69444, 0, 0, 0.55],
2241 52: [0, 0.69444, 0, 0, 0.55],
2242 53: [0, 0.69444, 0, 0, 0.55],
2243 54: [0, 0.69444, 0, 0, 0.55],
2244 55: [0, 0.69444, 0, 0, 0.55],
2245 56: [0, 0.69444, 0, 0, 0.55],
2246 57: [0, 0.69444, 0, 0, 0.55],
2247 58: [0, 0.45833, 0, 0, 0.30556],
2248 59: [0.10556, 0.45833, 0, 0, 0.30556],
2249 61: [-0.09375, 0.40625, 0, 0, 0.85556],
2250 63: [0, 0.69444, 0, 0, 0.51945],
2251 64: [0, 0.69444, 0, 0, 0.73334],
2252 65: [0, 0.69444, 0, 0, 0.73334],
2253 66: [0, 0.69444, 0, 0, 0.73334],
2254 67: [0, 0.69444, 0, 0, 0.70278],
2255 68: [0, 0.69444, 0, 0, 0.79445],
2256 69: [0, 0.69444, 0, 0, 0.64167],
2257 70: [0, 0.69444, 0, 0, 0.61111],
2258 71: [0, 0.69444, 0, 0, 0.73334],
2259 72: [0, 0.69444, 0, 0, 0.79445],
2260 73: [0, 0.69444, 0, 0, 0.33056],
2261 74: [0, 0.69444, 0, 0, 0.51945],
2262 75: [0, 0.69444, 0, 0, 0.76389],
2263 76: [0, 0.69444, 0, 0, 0.58056],
2264 77: [0, 0.69444, 0, 0, 0.97778],
2265 78: [0, 0.69444, 0, 0, 0.79445],
2266 79: [0, 0.69444, 0, 0, 0.79445],
2267 80: [0, 0.69444, 0, 0, 0.70278],
2268 81: [0.10556, 0.69444, 0, 0, 0.79445],
2269 82: [0, 0.69444, 0, 0, 0.70278],
2270 83: [0, 0.69444, 0, 0, 0.61111],
2271 84: [0, 0.69444, 0, 0, 0.73334],
2272 85: [0, 0.69444, 0, 0, 0.76389],
2273 86: [0, 0.69444, 0.01528, 0, 0.73334],
2274 87: [0, 0.69444, 0.01528, 0, 1.03889],
2275 88: [0, 0.69444, 0, 0, 0.73334],
2276 89: [0, 0.69444, 0.0275, 0, 0.73334],
2277 90: [0, 0.69444, 0, 0, 0.67223],
2278 91: [0.25, 0.75, 0, 0, 0.34306],
2279 93: [0.25, 0.75, 0, 0, 0.34306],
2280 94: [0, 0.69444, 0, 0, 0.55],
2281 95: [0.35, 0.10833, 0.03056, 0, 0.55],
2282 97: [0, 0.45833, 0, 0, 0.525],
2283 98: [0, 0.69444, 0, 0, 0.56111],
2284 99: [0, 0.45833, 0, 0, 0.48889],
2285 100: [0, 0.69444, 0, 0, 0.56111],
2286 101: [0, 0.45833, 0, 0, 0.51111],
2287 102: [0, 0.69444, 0.07639, 0, 0.33611],
2288 103: [0.19444, 0.45833, 0.01528, 0, 0.55],
2289 104: [0, 0.69444, 0, 0, 0.56111],
2290 105: [0, 0.69444, 0, 0, 0.25556],
2291 106: [0.19444, 0.69444, 0, 0, 0.28611],
2292 107: [0, 0.69444, 0, 0, 0.53056],
2293 108: [0, 0.69444, 0, 0, 0.25556],
2294 109: [0, 0.45833, 0, 0, 0.86667],
2295 110: [0, 0.45833, 0, 0, 0.56111],
2296 111: [0, 0.45833, 0, 0, 0.55],
2297 112: [0.19444, 0.45833, 0, 0, 0.56111],
2298 113: [0.19444, 0.45833, 0, 0, 0.56111],
2299 114: [0, 0.45833, 0.01528, 0, 0.37222],
2300 115: [0, 0.45833, 0, 0, 0.42167],
2301 116: [0, 0.58929, 0, 0, 0.40417],
2302 117: [0, 0.45833, 0, 0, 0.56111],
2303 118: [0, 0.45833, 0.01528, 0, 0.5],
2304 119: [0, 0.45833, 0.01528, 0, 0.74445],
2305 120: [0, 0.45833, 0, 0, 0.5],
2306 121: [0.19444, 0.45833, 0.01528, 0, 0.5],
2307 122: [0, 0.45833, 0, 0, 0.47639],
2308 126: [0.35, 0.34444, 0, 0, 0.55],
2309 160: [0, 0, 0, 0, 0.25],
2310 168: [0, 0.69444, 0, 0, 0.55],
2311 176: [0, 0.69444, 0, 0, 0.73334],
2312 180: [0, 0.69444, 0, 0, 0.55],
2313 184: [0.17014, 0, 0, 0, 0.48889],
2314 305: [0, 0.45833, 0, 0, 0.25556],
2315 567: [0.19444, 0.45833, 0, 0, 0.28611],
2316 710: [0, 0.69444, 0, 0, 0.55],
2317 711: [0, 0.63542, 0, 0, 0.55],
2318 713: [0, 0.63778, 0, 0, 0.55],
2319 728: [0, 0.69444, 0, 0, 0.55],
2320 729: [0, 0.69444, 0, 0, 0.30556],
2321 730: [0, 0.69444, 0, 0, 0.73334],
2322 732: [0, 0.69444, 0, 0, 0.55],
2323 733: [0, 0.69444, 0, 0, 0.55],
2324 915: [0, 0.69444, 0, 0, 0.58056],
2325 916: [0, 0.69444, 0, 0, 0.91667],
2326 920: [0, 0.69444, 0, 0, 0.85556],
2327 923: [0, 0.69444, 0, 0, 0.67223],
2328 926: [0, 0.69444, 0, 0, 0.73334],
2329 928: [0, 0.69444, 0, 0, 0.79445],
2330 931: [0, 0.69444, 0, 0, 0.79445],
2331 933: [0, 0.69444, 0, 0, 0.85556],
2332 934: [0, 0.69444, 0, 0, 0.79445],
2333 936: [0, 0.69444, 0, 0, 0.85556],
2334 937: [0, 0.69444, 0, 0, 0.79445],
2335 8211: [0, 0.45833, 0.03056, 0, 0.55],
2336 8212: [0, 0.45833, 0.03056, 0, 1.10001],
2337 8216: [0, 0.69444, 0, 0, 0.30556],
2338 8217: [0, 0.69444, 0, 0, 0.30556],
2339 8220: [0, 0.69444, 0, 0, 0.55834],
2340 8221: [0, 0.69444, 0, 0, 0.55834]
2341 },
2342 "SansSerif-Italic": {
2343 32: [0, 0, 0, 0, 0.25],
2344 33: [0, 0.69444, 0.05733, 0, 0.31945],
2345 34: [0, 0.69444, 316e-5, 0, 0.5],
2346 35: [0.19444, 0.69444, 0.05087, 0, 0.83334],
2347 36: [0.05556, 0.75, 0.11156, 0, 0.5],
2348 37: [0.05556, 0.75, 0.03126, 0, 0.83334],
2349 38: [0, 0.69444, 0.03058, 0, 0.75834],
2350 39: [0, 0.69444, 0.07816, 0, 0.27778],
2351 40: [0.25, 0.75, 0.13164, 0, 0.38889],
2352 41: [0.25, 0.75, 0.02536, 0, 0.38889],
2353 42: [0, 0.75, 0.11775, 0, 0.5],
2354 43: [0.08333, 0.58333, 0.02536, 0, 0.77778],
2355 44: [0.125, 0.08333, 0, 0, 0.27778],
2356 45: [0, 0.44444, 0.01946, 0, 0.33333],
2357 46: [0, 0.08333, 0, 0, 0.27778],
2358 47: [0.25, 0.75, 0.13164, 0, 0.5],
2359 48: [0, 0.65556, 0.11156, 0, 0.5],
2360 49: [0, 0.65556, 0.11156, 0, 0.5],
2361 50: [0, 0.65556, 0.11156, 0, 0.5],
2362 51: [0, 0.65556, 0.11156, 0, 0.5],
2363 52: [0, 0.65556, 0.11156, 0, 0.5],
2364 53: [0, 0.65556, 0.11156, 0, 0.5],
2365 54: [0, 0.65556, 0.11156, 0, 0.5],
2366 55: [0, 0.65556, 0.11156, 0, 0.5],
2367 56: [0, 0.65556, 0.11156, 0, 0.5],
2368 57: [0, 0.65556, 0.11156, 0, 0.5],
2369 58: [0, 0.44444, 0.02502, 0, 0.27778],
2370 59: [0.125, 0.44444, 0.02502, 0, 0.27778],
2371 61: [-0.13, 0.37, 0.05087, 0, 0.77778],
2372 63: [0, 0.69444, 0.11809, 0, 0.47222],
2373 64: [0, 0.69444, 0.07555, 0, 0.66667],
2374 65: [0, 0.69444, 0, 0, 0.66667],
2375 66: [0, 0.69444, 0.08293, 0, 0.66667],
2376 67: [0, 0.69444, 0.11983, 0, 0.63889],
2377 68: [0, 0.69444, 0.07555, 0, 0.72223],
2378 69: [0, 0.69444, 0.11983, 0, 0.59722],
2379 70: [0, 0.69444, 0.13372, 0, 0.56945],
2380 71: [0, 0.69444, 0.11983, 0, 0.66667],
2381 72: [0, 0.69444, 0.08094, 0, 0.70834],
2382 73: [0, 0.69444, 0.13372, 0, 0.27778],
2383 74: [0, 0.69444, 0.08094, 0, 0.47222],
2384 75: [0, 0.69444, 0.11983, 0, 0.69445],
2385 76: [0, 0.69444, 0, 0, 0.54167],
2386 77: [0, 0.69444, 0.08094, 0, 0.875],
2387 78: [0, 0.69444, 0.08094, 0, 0.70834],
2388 79: [0, 0.69444, 0.07555, 0, 0.73611],
2389 80: [0, 0.69444, 0.08293, 0, 0.63889],
2390 81: [0.125, 0.69444, 0.07555, 0, 0.73611],
2391 82: [0, 0.69444, 0.08293, 0, 0.64584],
2392 83: [0, 0.69444, 0.09205, 0, 0.55556],
2393 84: [0, 0.69444, 0.13372, 0, 0.68056],
2394 85: [0, 0.69444, 0.08094, 0, 0.6875],
2395 86: [0, 0.69444, 0.1615, 0, 0.66667],
2396 87: [0, 0.69444, 0.1615, 0, 0.94445],
2397 88: [0, 0.69444, 0.13372, 0, 0.66667],
2398 89: [0, 0.69444, 0.17261, 0, 0.66667],
2399 90: [0, 0.69444, 0.11983, 0, 0.61111],
2400 91: [0.25, 0.75, 0.15942, 0, 0.28889],
2401 93: [0.25, 0.75, 0.08719, 0, 0.28889],
2402 94: [0, 0.69444, 0.0799, 0, 0.5],
2403 95: [0.35, 0.09444, 0.08616, 0, 0.5],
2404 97: [0, 0.44444, 981e-5, 0, 0.48056],
2405 98: [0, 0.69444, 0.03057, 0, 0.51667],
2406 99: [0, 0.44444, 0.08336, 0, 0.44445],
2407 100: [0, 0.69444, 0.09483, 0, 0.51667],
2408 101: [0, 0.44444, 0.06778, 0, 0.44445],
2409 102: [0, 0.69444, 0.21705, 0, 0.30556],
2410 103: [0.19444, 0.44444, 0.10836, 0, 0.5],
2411 104: [0, 0.69444, 0.01778, 0, 0.51667],
2412 105: [0, 0.67937, 0.09718, 0, 0.23889],
2413 106: [0.19444, 0.67937, 0.09162, 0, 0.26667],
2414 107: [0, 0.69444, 0.08336, 0, 0.48889],
2415 108: [0, 0.69444, 0.09483, 0, 0.23889],
2416 109: [0, 0.44444, 0.01778, 0, 0.79445],
2417 110: [0, 0.44444, 0.01778, 0, 0.51667],
2418 111: [0, 0.44444, 0.06613, 0, 0.5],
2419 112: [0.19444, 0.44444, 0.0389, 0, 0.51667],
2420 113: [0.19444, 0.44444, 0.04169, 0, 0.51667],
2421 114: [0, 0.44444, 0.10836, 0, 0.34167],
2422 115: [0, 0.44444, 0.0778, 0, 0.38333],
2423 116: [0, 0.57143, 0.07225, 0, 0.36111],
2424 117: [0, 0.44444, 0.04169, 0, 0.51667],
2425 118: [0, 0.44444, 0.10836, 0, 0.46111],
2426 119: [0, 0.44444, 0.10836, 0, 0.68334],
2427 120: [0, 0.44444, 0.09169, 0, 0.46111],
2428 121: [0.19444, 0.44444, 0.10836, 0, 0.46111],
2429 122: [0, 0.44444, 0.08752, 0, 0.43472],
2430 126: [0.35, 0.32659, 0.08826, 0, 0.5],
2431 160: [0, 0, 0, 0, 0.25],
2432 168: [0, 0.67937, 0.06385, 0, 0.5],
2433 176: [0, 0.69444, 0, 0, 0.73752],
2434 184: [0.17014, 0, 0, 0, 0.44445],
2435 305: [0, 0.44444, 0.04169, 0, 0.23889],
2436 567: [0.19444, 0.44444, 0.04169, 0, 0.26667],
2437 710: [0, 0.69444, 0.0799, 0, 0.5],
2438 711: [0, 0.63194, 0.08432, 0, 0.5],
2439 713: [0, 0.60889, 0.08776, 0, 0.5],
2440 714: [0, 0.69444, 0.09205, 0, 0.5],
2441 715: [0, 0.69444, 0, 0, 0.5],
2442 728: [0, 0.69444, 0.09483, 0, 0.5],
2443 729: [0, 0.67937, 0.07774, 0, 0.27778],
2444 730: [0, 0.69444, 0, 0, 0.73752],
2445 732: [0, 0.67659, 0.08826, 0, 0.5],
2446 733: [0, 0.69444, 0.09205, 0, 0.5],
2447 915: [0, 0.69444, 0.13372, 0, 0.54167],
2448 916: [0, 0.69444, 0, 0, 0.83334],
2449 920: [0, 0.69444, 0.07555, 0, 0.77778],
2450 923: [0, 0.69444, 0, 0, 0.61111],
2451 926: [0, 0.69444, 0.12816, 0, 0.66667],
2452 928: [0, 0.69444, 0.08094, 0, 0.70834],
2453 931: [0, 0.69444, 0.11983, 0, 0.72222],
2454 933: [0, 0.69444, 0.09031, 0, 0.77778],
2455 934: [0, 0.69444, 0.04603, 0, 0.72222],
2456 936: [0, 0.69444, 0.09031, 0, 0.77778],
2457 937: [0, 0.69444, 0.08293, 0, 0.72222],
2458 8211: [0, 0.44444, 0.08616, 0, 0.5],
2459 8212: [0, 0.44444, 0.08616, 0, 1],
2460 8216: [0, 0.69444, 0.07816, 0, 0.27778],
2461 8217: [0, 0.69444, 0.07816, 0, 0.27778],
2462 8220: [0, 0.69444, 0.14205, 0, 0.5],
2463 8221: [0, 0.69444, 316e-5, 0, 0.5]
2464 },
2465 "SansSerif-Regular": {
2466 32: [0, 0, 0, 0, 0.25],
2467 33: [0, 0.69444, 0, 0, 0.31945],
2468 34: [0, 0.69444, 0, 0, 0.5],
2469 35: [0.19444, 0.69444, 0, 0, 0.83334],
2470 36: [0.05556, 0.75, 0, 0, 0.5],
2471 37: [0.05556, 0.75, 0, 0, 0.83334],
2472 38: [0, 0.69444, 0, 0, 0.75834],
2473 39: [0, 0.69444, 0, 0, 0.27778],
2474 40: [0.25, 0.75, 0, 0, 0.38889],
2475 41: [0.25, 0.75, 0, 0, 0.38889],
2476 42: [0, 0.75, 0, 0, 0.5],
2477 43: [0.08333, 0.58333, 0, 0, 0.77778],
2478 44: [0.125, 0.08333, 0, 0, 0.27778],
2479 45: [0, 0.44444, 0, 0, 0.33333],
2480 46: [0, 0.08333, 0, 0, 0.27778],
2481 47: [0.25, 0.75, 0, 0, 0.5],
2482 48: [0, 0.65556, 0, 0, 0.5],
2483 49: [0, 0.65556, 0, 0, 0.5],
2484 50: [0, 0.65556, 0, 0, 0.5],
2485 51: [0, 0.65556, 0, 0, 0.5],
2486 52: [0, 0.65556, 0, 0, 0.5],
2487 53: [0, 0.65556, 0, 0, 0.5],
2488 54: [0, 0.65556, 0, 0, 0.5],
2489 55: [0, 0.65556, 0, 0, 0.5],
2490 56: [0, 0.65556, 0, 0, 0.5],
2491 57: [0, 0.65556, 0, 0, 0.5],
2492 58: [0, 0.44444, 0, 0, 0.27778],
2493 59: [0.125, 0.44444, 0, 0, 0.27778],
2494 61: [-0.13, 0.37, 0, 0, 0.77778],
2495 63: [0, 0.69444, 0, 0, 0.47222],
2496 64: [0, 0.69444, 0, 0, 0.66667],
2497 65: [0, 0.69444, 0, 0, 0.66667],
2498 66: [0, 0.69444, 0, 0, 0.66667],
2499 67: [0, 0.69444, 0, 0, 0.63889],
2500 68: [0, 0.69444, 0, 0, 0.72223],
2501 69: [0, 0.69444, 0, 0, 0.59722],
2502 70: [0, 0.69444, 0, 0, 0.56945],
2503 71: [0, 0.69444, 0, 0, 0.66667],
2504 72: [0, 0.69444, 0, 0, 0.70834],
2505 73: [0, 0.69444, 0, 0, 0.27778],
2506 74: [0, 0.69444, 0, 0, 0.47222],
2507 75: [0, 0.69444, 0, 0, 0.69445],
2508 76: [0, 0.69444, 0, 0, 0.54167],
2509 77: [0, 0.69444, 0, 0, 0.875],
2510 78: [0, 0.69444, 0, 0, 0.70834],
2511 79: [0, 0.69444, 0, 0, 0.73611],
2512 80: [0, 0.69444, 0, 0, 0.63889],
2513 81: [0.125, 0.69444, 0, 0, 0.73611],
2514 82: [0, 0.69444, 0, 0, 0.64584],
2515 83: [0, 0.69444, 0, 0, 0.55556],
2516 84: [0, 0.69444, 0, 0, 0.68056],
2517 85: [0, 0.69444, 0, 0, 0.6875],
2518 86: [0, 0.69444, 0.01389, 0, 0.66667],
2519 87: [0, 0.69444, 0.01389, 0, 0.94445],
2520 88: [0, 0.69444, 0, 0, 0.66667],
2521 89: [0, 0.69444, 0.025, 0, 0.66667],
2522 90: [0, 0.69444, 0, 0, 0.61111],
2523 91: [0.25, 0.75, 0, 0, 0.28889],
2524 93: [0.25, 0.75, 0, 0, 0.28889],
2525 94: [0, 0.69444, 0, 0, 0.5],
2526 95: [0.35, 0.09444, 0.02778, 0, 0.5],
2527 97: [0, 0.44444, 0, 0, 0.48056],
2528 98: [0, 0.69444, 0, 0, 0.51667],
2529 99: [0, 0.44444, 0, 0, 0.44445],
2530 100: [0, 0.69444, 0, 0, 0.51667],
2531 101: [0, 0.44444, 0, 0, 0.44445],
2532 102: [0, 0.69444, 0.06944, 0, 0.30556],
2533 103: [0.19444, 0.44444, 0.01389, 0, 0.5],
2534 104: [0, 0.69444, 0, 0, 0.51667],
2535 105: [0, 0.67937, 0, 0, 0.23889],
2536 106: [0.19444, 0.67937, 0, 0, 0.26667],
2537 107: [0, 0.69444, 0, 0, 0.48889],
2538 108: [0, 0.69444, 0, 0, 0.23889],
2539 109: [0, 0.44444, 0, 0, 0.79445],
2540 110: [0, 0.44444, 0, 0, 0.51667],
2541 111: [0, 0.44444, 0, 0, 0.5],
2542 112: [0.19444, 0.44444, 0, 0, 0.51667],
2543 113: [0.19444, 0.44444, 0, 0, 0.51667],
2544 114: [0, 0.44444, 0.01389, 0, 0.34167],
2545 115: [0, 0.44444, 0, 0, 0.38333],
2546 116: [0, 0.57143, 0, 0, 0.36111],
2547 117: [0, 0.44444, 0, 0, 0.51667],
2548 118: [0, 0.44444, 0.01389, 0, 0.46111],
2549 119: [0, 0.44444, 0.01389, 0, 0.68334],
2550 120: [0, 0.44444, 0, 0, 0.46111],
2551 121: [0.19444, 0.44444, 0.01389, 0, 0.46111],
2552 122: [0, 0.44444, 0, 0, 0.43472],
2553 126: [0.35, 0.32659, 0, 0, 0.5],
2554 160: [0, 0, 0, 0, 0.25],
2555 168: [0, 0.67937, 0, 0, 0.5],
2556 176: [0, 0.69444, 0, 0, 0.66667],
2557 184: [0.17014, 0, 0, 0, 0.44445],
2558 305: [0, 0.44444, 0, 0, 0.23889],
2559 567: [0.19444, 0.44444, 0, 0, 0.26667],
2560 710: [0, 0.69444, 0, 0, 0.5],
2561 711: [0, 0.63194, 0, 0, 0.5],
2562 713: [0, 0.60889, 0, 0, 0.5],
2563 714: [0, 0.69444, 0, 0, 0.5],
2564 715: [0, 0.69444, 0, 0, 0.5],
2565 728: [0, 0.69444, 0, 0, 0.5],
2566 729: [0, 0.67937, 0, 0, 0.27778],
2567 730: [0, 0.69444, 0, 0, 0.66667],
2568 732: [0, 0.67659, 0, 0, 0.5],
2569 733: [0, 0.69444, 0, 0, 0.5],
2570 915: [0, 0.69444, 0, 0, 0.54167],
2571 916: [0, 0.69444, 0, 0, 0.83334],
2572 920: [0, 0.69444, 0, 0, 0.77778],
2573 923: [0, 0.69444, 0, 0, 0.61111],
2574 926: [0, 0.69444, 0, 0, 0.66667],
2575 928: [0, 0.69444, 0, 0, 0.70834],
2576 931: [0, 0.69444, 0, 0, 0.72222],
2577 933: [0, 0.69444, 0, 0, 0.77778],
2578 934: [0, 0.69444, 0, 0, 0.72222],
2579 936: [0, 0.69444, 0, 0, 0.77778],
2580 937: [0, 0.69444, 0, 0, 0.72222],
2581 8211: [0, 0.44444, 0.02778, 0, 0.5],
2582 8212: [0, 0.44444, 0.02778, 0, 1],
2583 8216: [0, 0.69444, 0, 0, 0.27778],
2584 8217: [0, 0.69444, 0, 0, 0.27778],
2585 8220: [0, 0.69444, 0, 0, 0.5],
2586 8221: [0, 0.69444, 0, 0, 0.5]
2587 },
2588 "Script-Regular": {
2589 32: [0, 0, 0, 0, 0.25],
2590 65: [0, 0.7, 0.22925, 0, 0.80253],
2591 66: [0, 0.7, 0.04087, 0, 0.90757],
2592 67: [0, 0.7, 0.1689, 0, 0.66619],
2593 68: [0, 0.7, 0.09371, 0, 0.77443],
2594 69: [0, 0.7, 0.18583, 0, 0.56162],
2595 70: [0, 0.7, 0.13634, 0, 0.89544],
2596 71: [0, 0.7, 0.17322, 0, 0.60961],
2597 72: [0, 0.7, 0.29694, 0, 0.96919],
2598 73: [0, 0.7, 0.19189, 0, 0.80907],
2599 74: [0.27778, 0.7, 0.19189, 0, 1.05159],
2600 75: [0, 0.7, 0.31259, 0, 0.91364],
2601 76: [0, 0.7, 0.19189, 0, 0.87373],
2602 77: [0, 0.7, 0.15981, 0, 1.08031],
2603 78: [0, 0.7, 0.3525, 0, 0.9015],
2604 79: [0, 0.7, 0.08078, 0, 0.73787],
2605 80: [0, 0.7, 0.08078, 0, 1.01262],
2606 81: [0, 0.7, 0.03305, 0, 0.88282],
2607 82: [0, 0.7, 0.06259, 0, 0.85],
2608 83: [0, 0.7, 0.19189, 0, 0.86767],
2609 84: [0, 0.7, 0.29087, 0, 0.74697],
2610 85: [0, 0.7, 0.25815, 0, 0.79996],
2611 86: [0, 0.7, 0.27523, 0, 0.62204],
2612 87: [0, 0.7, 0.27523, 0, 0.80532],
2613 88: [0, 0.7, 0.26006, 0, 0.94445],
2614 89: [0, 0.7, 0.2939, 0, 0.70961],
2615 90: [0, 0.7, 0.24037, 0, 0.8212],
2616 160: [0, 0, 0, 0, 0.25]
2617 },
2618 "Size1-Regular": {
2619 32: [0, 0, 0, 0, 0.25],
2620 40: [0.35001, 0.85, 0, 0, 0.45834],
2621 41: [0.35001, 0.85, 0, 0, 0.45834],
2622 47: [0.35001, 0.85, 0, 0, 0.57778],
2623 91: [0.35001, 0.85, 0, 0, 0.41667],
2624 92: [0.35001, 0.85, 0, 0, 0.57778],
2625 93: [0.35001, 0.85, 0, 0, 0.41667],
2626 123: [0.35001, 0.85, 0, 0, 0.58334],
2627 125: [0.35001, 0.85, 0, 0, 0.58334],
2628 160: [0, 0, 0, 0, 0.25],
2629 710: [0, 0.72222, 0, 0, 0.55556],
2630 732: [0, 0.72222, 0, 0, 0.55556],
2631 770: [0, 0.72222, 0, 0, 0.55556],
2632 771: [0, 0.72222, 0, 0, 0.55556],
2633 8214: [-99e-5, 0.601, 0, 0, 0.77778],
2634 8593: [1e-5, 0.6, 0, 0, 0.66667],
2635 8595: [1e-5, 0.6, 0, 0, 0.66667],
2636 8657: [1e-5, 0.6, 0, 0, 0.77778],
2637 8659: [1e-5, 0.6, 0, 0, 0.77778],
2638 8719: [0.25001, 0.75, 0, 0, 0.94445],
2639 8720: [0.25001, 0.75, 0, 0, 0.94445],
2640 8721: [0.25001, 0.75, 0, 0, 1.05556],
2641 8730: [0.35001, 0.85, 0, 0, 1],
2642 8739: [-599e-5, 0.606, 0, 0, 0.33333],
2643 8741: [-599e-5, 0.606, 0, 0, 0.55556],
2644 8747: [0.30612, 0.805, 0.19445, 0, 0.47222],
2645 8748: [0.306, 0.805, 0.19445, 0, 0.47222],
2646 8749: [0.306, 0.805, 0.19445, 0, 0.47222],
2647 8750: [0.30612, 0.805, 0.19445, 0, 0.47222],
2648 8896: [0.25001, 0.75, 0, 0, 0.83334],
2649 8897: [0.25001, 0.75, 0, 0, 0.83334],
2650 8898: [0.25001, 0.75, 0, 0, 0.83334],
2651 8899: [0.25001, 0.75, 0, 0, 0.83334],
2652 8968: [0.35001, 0.85, 0, 0, 0.47222],
2653 8969: [0.35001, 0.85, 0, 0, 0.47222],
2654 8970: [0.35001, 0.85, 0, 0, 0.47222],
2655 8971: [0.35001, 0.85, 0, 0, 0.47222],
2656 9168: [-99e-5, 0.601, 0, 0, 0.66667],
2657 10216: [0.35001, 0.85, 0, 0, 0.47222],
2658 10217: [0.35001, 0.85, 0, 0, 0.47222],
2659 10752: [0.25001, 0.75, 0, 0, 1.11111],
2660 10753: [0.25001, 0.75, 0, 0, 1.11111],
2661 10754: [0.25001, 0.75, 0, 0, 1.11111],
2662 10756: [0.25001, 0.75, 0, 0, 0.83334],
2663 10758: [0.25001, 0.75, 0, 0, 0.83334]
2664 },
2665 "Size2-Regular": {
2666 32: [0, 0, 0, 0, 0.25],
2667 40: [0.65002, 1.15, 0, 0, 0.59722],
2668 41: [0.65002, 1.15, 0, 0, 0.59722],
2669 47: [0.65002, 1.15, 0, 0, 0.81111],
2670 91: [0.65002, 1.15, 0, 0, 0.47222],
2671 92: [0.65002, 1.15, 0, 0, 0.81111],
2672 93: [0.65002, 1.15, 0, 0, 0.47222],
2673 123: [0.65002, 1.15, 0, 0, 0.66667],
2674 125: [0.65002, 1.15, 0, 0, 0.66667],
2675 160: [0, 0, 0, 0, 0.25],
2676 710: [0, 0.75, 0, 0, 1],
2677 732: [0, 0.75, 0, 0, 1],
2678 770: [0, 0.75, 0, 0, 1],
2679 771: [0, 0.75, 0, 0, 1],
2680 8719: [0.55001, 1.05, 0, 0, 1.27778],
2681 8720: [0.55001, 1.05, 0, 0, 1.27778],
2682 8721: [0.55001, 1.05, 0, 0, 1.44445],
2683 8730: [0.65002, 1.15, 0, 0, 1],
2684 8747: [0.86225, 1.36, 0.44445, 0, 0.55556],
2685 8748: [0.862, 1.36, 0.44445, 0, 0.55556],
2686 8749: [0.862, 1.36, 0.44445, 0, 0.55556],
2687 8750: [0.86225, 1.36, 0.44445, 0, 0.55556],
2688 8896: [0.55001, 1.05, 0, 0, 1.11111],
2689 8897: [0.55001, 1.05, 0, 0, 1.11111],
2690 8898: [0.55001, 1.05, 0, 0, 1.11111],
2691 8899: [0.55001, 1.05, 0, 0, 1.11111],
2692 8968: [0.65002, 1.15, 0, 0, 0.52778],
2693 8969: [0.65002, 1.15, 0, 0, 0.52778],
2694 8970: [0.65002, 1.15, 0, 0, 0.52778],
2695 8971: [0.65002, 1.15, 0, 0, 0.52778],
2696 10216: [0.65002, 1.15, 0, 0, 0.61111],
2697 10217: [0.65002, 1.15, 0, 0, 0.61111],
2698 10752: [0.55001, 1.05, 0, 0, 1.51112],
2699 10753: [0.55001, 1.05, 0, 0, 1.51112],
2700 10754: [0.55001, 1.05, 0, 0, 1.51112],
2701 10756: [0.55001, 1.05, 0, 0, 1.11111],
2702 10758: [0.55001, 1.05, 0, 0, 1.11111]
2703 },
2704 "Size3-Regular": {
2705 32: [0, 0, 0, 0, 0.25],
2706 40: [0.95003, 1.45, 0, 0, 0.73611],
2707 41: [0.95003, 1.45, 0, 0, 0.73611],
2708 47: [0.95003, 1.45, 0, 0, 1.04445],
2709 91: [0.95003, 1.45, 0, 0, 0.52778],
2710 92: [0.95003, 1.45, 0, 0, 1.04445],
2711 93: [0.95003, 1.45, 0, 0, 0.52778],
2712 123: [0.95003, 1.45, 0, 0, 0.75],
2713 125: [0.95003, 1.45, 0, 0, 0.75],
2714 160: [0, 0, 0, 0, 0.25],
2715 710: [0, 0.75, 0, 0, 1.44445],
2716 732: [0, 0.75, 0, 0, 1.44445],
2717 770: [0, 0.75, 0, 0, 1.44445],
2718 771: [0, 0.75, 0, 0, 1.44445],
2719 8730: [0.95003, 1.45, 0, 0, 1],
2720 8968: [0.95003, 1.45, 0, 0, 0.58334],
2721 8969: [0.95003, 1.45, 0, 0, 0.58334],
2722 8970: [0.95003, 1.45, 0, 0, 0.58334],
2723 8971: [0.95003, 1.45, 0, 0, 0.58334],
2724 10216: [0.95003, 1.45, 0, 0, 0.75],
2725 10217: [0.95003, 1.45, 0, 0, 0.75]
2726 },
2727 "Size4-Regular": {
2728 32: [0, 0, 0, 0, 0.25],
2729 40: [1.25003, 1.75, 0, 0, 0.79167],
2730 41: [1.25003, 1.75, 0, 0, 0.79167],
2731 47: [1.25003, 1.75, 0, 0, 1.27778],
2732 91: [1.25003, 1.75, 0, 0, 0.58334],
2733 92: [1.25003, 1.75, 0, 0, 1.27778],
2734 93: [1.25003, 1.75, 0, 0, 0.58334],
2735 123: [1.25003, 1.75, 0, 0, 0.80556],
2736 125: [1.25003, 1.75, 0, 0, 0.80556],
2737 160: [0, 0, 0, 0, 0.25],
2738 710: [0, 0.825, 0, 0, 1.8889],
2739 732: [0, 0.825, 0, 0, 1.8889],
2740 770: [0, 0.825, 0, 0, 1.8889],
2741 771: [0, 0.825, 0, 0, 1.8889],
2742 8730: [1.25003, 1.75, 0, 0, 1],
2743 8968: [1.25003, 1.75, 0, 0, 0.63889],
2744 8969: [1.25003, 1.75, 0, 0, 0.63889],
2745 8970: [1.25003, 1.75, 0, 0, 0.63889],
2746 8971: [1.25003, 1.75, 0, 0, 0.63889],
2747 9115: [0.64502, 1.155, 0, 0, 0.875],
2748 9116: [1e-5, 0.6, 0, 0, 0.875],
2749 9117: [0.64502, 1.155, 0, 0, 0.875],
2750 9118: [0.64502, 1.155, 0, 0, 0.875],
2751 9119: [1e-5, 0.6, 0, 0, 0.875],
2752 9120: [0.64502, 1.155, 0, 0, 0.875],
2753 9121: [0.64502, 1.155, 0, 0, 0.66667],
2754 9122: [-99e-5, 0.601, 0, 0, 0.66667],
2755 9123: [0.64502, 1.155, 0, 0, 0.66667],
2756 9124: [0.64502, 1.155, 0, 0, 0.66667],
2757 9125: [-99e-5, 0.601, 0, 0, 0.66667],
2758 9126: [0.64502, 1.155, 0, 0, 0.66667],
2759 9127: [1e-5, 0.9, 0, 0, 0.88889],
2760 9128: [0.65002, 1.15, 0, 0, 0.88889],
2761 9129: [0.90001, 0, 0, 0, 0.88889],
2762 9130: [0, 0.3, 0, 0, 0.88889],
2763 9131: [1e-5, 0.9, 0, 0, 0.88889],
2764 9132: [0.65002, 1.15, 0, 0, 0.88889],
2765 9133: [0.90001, 0, 0, 0, 0.88889],
2766 9143: [0.88502, 0.915, 0, 0, 1.05556],
2767 10216: [1.25003, 1.75, 0, 0, 0.80556],
2768 10217: [1.25003, 1.75, 0, 0, 0.80556],
2769 57344: [-499e-5, 0.605, 0, 0, 1.05556],
2770 57345: [-499e-5, 0.605, 0, 0, 1.05556],
2771 57680: [0, 0.12, 0, 0, 0.45],
2772 57681: [0, 0.12, 0, 0, 0.45],
2773 57682: [0, 0.12, 0, 0, 0.45],
2774 57683: [0, 0.12, 0, 0, 0.45]
2775 },
2776 "Typewriter-Regular": {
2777 32: [0, 0, 0, 0, 0.525],
2778 33: [0, 0.61111, 0, 0, 0.525],
2779 34: [0, 0.61111, 0, 0, 0.525],
2780 35: [0, 0.61111, 0, 0, 0.525],
2781 36: [0.08333, 0.69444, 0, 0, 0.525],
2782 37: [0.08333, 0.69444, 0, 0, 0.525],
2783 38: [0, 0.61111, 0, 0, 0.525],
2784 39: [0, 0.61111, 0, 0, 0.525],
2785 40: [0.08333, 0.69444, 0, 0, 0.525],
2786 41: [0.08333, 0.69444, 0, 0, 0.525],
2787 42: [0, 0.52083, 0, 0, 0.525],
2788 43: [-0.08056, 0.53055, 0, 0, 0.525],
2789 44: [0.13889, 0.125, 0, 0, 0.525],
2790 45: [-0.08056, 0.53055, 0, 0, 0.525],
2791 46: [0, 0.125, 0, 0, 0.525],
2792 47: [0.08333, 0.69444, 0, 0, 0.525],
2793 48: [0, 0.61111, 0, 0, 0.525],
2794 49: [0, 0.61111, 0, 0, 0.525],
2795 50: [0, 0.61111, 0, 0, 0.525],
2796 51: [0, 0.61111, 0, 0, 0.525],
2797 52: [0, 0.61111, 0, 0, 0.525],
2798 53: [0, 0.61111, 0, 0, 0.525],
2799 54: [0, 0.61111, 0, 0, 0.525],
2800 55: [0, 0.61111, 0, 0, 0.525],
2801 56: [0, 0.61111, 0, 0, 0.525],
2802 57: [0, 0.61111, 0, 0, 0.525],
2803 58: [0, 0.43056, 0, 0, 0.525],
2804 59: [0.13889, 0.43056, 0, 0, 0.525],
2805 60: [-0.05556, 0.55556, 0, 0, 0.525],
2806 61: [-0.19549, 0.41562, 0, 0, 0.525],
2807 62: [-0.05556, 0.55556, 0, 0, 0.525],
2808 63: [0, 0.61111, 0, 0, 0.525],
2809 64: [0, 0.61111, 0, 0, 0.525],
2810 65: [0, 0.61111, 0, 0, 0.525],
2811 66: [0, 0.61111, 0, 0, 0.525],
2812 67: [0, 0.61111, 0, 0, 0.525],
2813 68: [0, 0.61111, 0, 0, 0.525],
2814 69: [0, 0.61111, 0, 0, 0.525],
2815 70: [0, 0.61111, 0, 0, 0.525],
2816 71: [0, 0.61111, 0, 0, 0.525],
2817 72: [0, 0.61111, 0, 0, 0.525],
2818 73: [0, 0.61111, 0, 0, 0.525],
2819 74: [0, 0.61111, 0, 0, 0.525],
2820 75: [0, 0.61111, 0, 0, 0.525],
2821 76: [0, 0.61111, 0, 0, 0.525],
2822 77: [0, 0.61111, 0, 0, 0.525],
2823 78: [0, 0.61111, 0, 0, 0.525],
2824 79: [0, 0.61111, 0, 0, 0.525],
2825 80: [0, 0.61111, 0, 0, 0.525],
2826 81: [0.13889, 0.61111, 0, 0, 0.525],
2827 82: [0, 0.61111, 0, 0, 0.525],
2828 83: [0, 0.61111, 0, 0, 0.525],
2829 84: [0, 0.61111, 0, 0, 0.525],
2830 85: [0, 0.61111, 0, 0, 0.525],
2831 86: [0, 0.61111, 0, 0, 0.525],
2832 87: [0, 0.61111, 0, 0, 0.525],
2833 88: [0, 0.61111, 0, 0, 0.525],
2834 89: [0, 0.61111, 0, 0, 0.525],
2835 90: [0, 0.61111, 0, 0, 0.525],
2836 91: [0.08333, 0.69444, 0, 0, 0.525],
2837 92: [0.08333, 0.69444, 0, 0, 0.525],
2838 93: [0.08333, 0.69444, 0, 0, 0.525],
2839 94: [0, 0.61111, 0, 0, 0.525],
2840 95: [0.09514, 0, 0, 0, 0.525],
2841 96: [0, 0.61111, 0, 0, 0.525],
2842 97: [0, 0.43056, 0, 0, 0.525],
2843 98: [0, 0.61111, 0, 0, 0.525],
2844 99: [0, 0.43056, 0, 0, 0.525],
2845 100: [0, 0.61111, 0, 0, 0.525],
2846 101: [0, 0.43056, 0, 0, 0.525],
2847 102: [0, 0.61111, 0, 0, 0.525],
2848 103: [0.22222, 0.43056, 0, 0, 0.525],
2849 104: [0, 0.61111, 0, 0, 0.525],
2850 105: [0, 0.61111, 0, 0, 0.525],
2851 106: [0.22222, 0.61111, 0, 0, 0.525],
2852 107: [0, 0.61111, 0, 0, 0.525],
2853 108: [0, 0.61111, 0, 0, 0.525],
2854 109: [0, 0.43056, 0, 0, 0.525],
2855 110: [0, 0.43056, 0, 0, 0.525],
2856 111: [0, 0.43056, 0, 0, 0.525],
2857 112: [0.22222, 0.43056, 0, 0, 0.525],
2858 113: [0.22222, 0.43056, 0, 0, 0.525],
2859 114: [0, 0.43056, 0, 0, 0.525],
2860 115: [0, 0.43056, 0, 0, 0.525],
2861 116: [0, 0.55358, 0, 0, 0.525],
2862 117: [0, 0.43056, 0, 0, 0.525],
2863 118: [0, 0.43056, 0, 0, 0.525],
2864 119: [0, 0.43056, 0, 0, 0.525],
2865 120: [0, 0.43056, 0, 0, 0.525],
2866 121: [0.22222, 0.43056, 0, 0, 0.525],
2867 122: [0, 0.43056, 0, 0, 0.525],
2868 123: [0.08333, 0.69444, 0, 0, 0.525],
2869 124: [0.08333, 0.69444, 0, 0, 0.525],
2870 125: [0.08333, 0.69444, 0, 0, 0.525],
2871 126: [0, 0.61111, 0, 0, 0.525],
2872 127: [0, 0.61111, 0, 0, 0.525],
2873 160: [0, 0, 0, 0, 0.525],
2874 176: [0, 0.61111, 0, 0, 0.525],
2875 184: [0.19445, 0, 0, 0, 0.525],
2876 305: [0, 0.43056, 0, 0, 0.525],
2877 567: [0.22222, 0.43056, 0, 0, 0.525],
2878 711: [0, 0.56597, 0, 0, 0.525],
2879 713: [0, 0.56555, 0, 0, 0.525],
2880 714: [0, 0.61111, 0, 0, 0.525],
2881 715: [0, 0.61111, 0, 0, 0.525],
2882 728: [0, 0.61111, 0, 0, 0.525],
2883 730: [0, 0.61111, 0, 0, 0.525],
2884 770: [0, 0.61111, 0, 0, 0.525],
2885 771: [0, 0.61111, 0, 0, 0.525],
2886 776: [0, 0.61111, 0, 0, 0.525],
2887 915: [0, 0.61111, 0, 0, 0.525],
2888 916: [0, 0.61111, 0, 0, 0.525],
2889 920: [0, 0.61111, 0, 0, 0.525],
2890 923: [0, 0.61111, 0, 0, 0.525],
2891 926: [0, 0.61111, 0, 0, 0.525],
2892 928: [0, 0.61111, 0, 0, 0.525],
2893 931: [0, 0.61111, 0, 0, 0.525],
2894 933: [0, 0.61111, 0, 0, 0.525],
2895 934: [0, 0.61111, 0, 0, 0.525],
2896 936: [0, 0.61111, 0, 0, 0.525],
2897 937: [0, 0.61111, 0, 0, 0.525],
2898 8216: [0, 0.61111, 0, 0, 0.525],
2899 8217: [0, 0.61111, 0, 0, 0.525],
2900 8242: [0, 0.61111, 0, 0, 0.525],
2901 9251: [0.11111, 0.21944, 0, 0, 0.525]
2902 }
2903}, ge = {
2904 slant: [0.25, 0.25, 0.25],
2905 // sigma1
2906 space: [0, 0, 0],
2907 // sigma2
2908 stretch: [0, 0, 0],
2909 // sigma3
2910 shrink: [0, 0, 0],
2911 // sigma4
2912 xHeight: [0.431, 0.431, 0.431],
2913 // sigma5
2914 quad: [1, 1.171, 1.472],
2915 // sigma6
2916 extraSpace: [0, 0, 0],
2917 // sigma7
2918 num1: [0.677, 0.732, 0.925],
2919 // sigma8
2920 num2: [0.394, 0.384, 0.387],
2921 // sigma9
2922 num3: [0.444, 0.471, 0.504],
2923 // sigma10
2924 denom1: [0.686, 0.752, 1.025],
2925 // sigma11
2926 denom2: [0.345, 0.344, 0.532],
2927 // sigma12
2928 sup1: [0.413, 0.503, 0.504],
2929 // sigma13
2930 sup2: [0.363, 0.431, 0.404],
2931 // sigma14
2932 sup3: [0.289, 0.286, 0.294],
2933 // sigma15
2934 sub1: [0.15, 0.143, 0.2],
2935 // sigma16
2936 sub2: [0.247, 0.286, 0.4],
2937 // sigma17
2938 supDrop: [0.386, 0.353, 0.494],
2939 // sigma18
2940 subDrop: [0.05, 0.071, 0.1],
2941 // sigma19
2942 delim1: [2.39, 1.7, 1.98],
2943 // sigma20
2944 delim2: [1.01, 1.157, 1.42],
2945 // sigma21
2946 axisHeight: [0.25, 0.25, 0.25],
2947 // sigma22
2948 // These font metrics are extracted from TeX by using tftopl on cmex10.tfm;
2949 // they correspond to the font parameters of the extension fonts (family 3).
2950 // See the TeXbook, page 441. In AMSTeX, the extension fonts scale; to
2951 // match cmex7, we'd use cmex7.tfm values for script and scriptscript
2952 // values.
2953 defaultRuleThickness: [0.04, 0.049, 0.049],
2954 // xi8; cmex7: 0.049
2955 bigOpSpacing1: [0.111, 0.111, 0.111],
2956 // xi9
2957 bigOpSpacing2: [0.166, 0.166, 0.166],
2958 // xi10
2959 bigOpSpacing3: [0.2, 0.2, 0.2],
2960 // xi11
2961 bigOpSpacing4: [0.6, 0.611, 0.611],
2962 // xi12; cmex7: 0.611
2963 bigOpSpacing5: [0.1, 0.143, 0.143],
2964 // xi13; cmex7: 0.143
2965 // The \sqrt rule width is taken from the height of the surd character.
2966 // Since we use the same font at all sizes, this thickness doesn't scale.
2967 sqrtRuleThickness: [0.04, 0.04, 0.04],
2968 // This value determines how large a pt is, for metrics which are defined
2969 // in terms of pts.
2970 // This value is also used in katex.less; if you change it make sure the
2971 // values match.
2972 ptPerEm: [10, 10, 10],
2973 // The space between adjacent `|` columns in an array definition. From
2974 // `\showthe\doublerulesep` in LaTeX. Equals 2.0 / ptPerEm.
2975 doubleRuleSep: [0.2, 0.2, 0.2],
2976 // The width of separator lines in {array} environments. From
2977 // `\showthe\arrayrulewidth` in LaTeX. Equals 0.4 / ptPerEm.
2978 arrayRuleWidth: [0.04, 0.04, 0.04],
2979 // Two values from LaTeX source2e:
2980 fboxsep: [0.3, 0.3, 0.3],
2981 // 3 pt / ptPerEm
2982 fboxrule: [0.04, 0.04, 0.04]
2983 // 0.4 pt / ptPerEm
2984}, Ot = {
2985 // Latin-1
2986 Å: "A",
2987 Ð: "D",
2988 Þ: "o",
2989 å: "a",
2990 ð: "d",
2991 þ: "o",
2992 // Cyrillic
2993 А: "A",
2994 Б: "B",
2995 В: "B",
2996 Г: "F",
2997 Д: "A",
2998 Е: "E",
2999 Ж: "K",
3000 З: "3",
3001 И: "N",
3002 Й: "N",
3003 К: "K",
3004 Л: "N",
3005 М: "M",
3006 Н: "H",
3007 О: "O",
3008 П: "N",
3009 Р: "P",
3010 С: "C",
3011 Т: "T",
3012 У: "y",
3013 Ф: "O",
3014 Х: "X",
3015 Ц: "U",
3016 Ч: "h",
3017 Ш: "W",
3018 Щ: "W",
3019 Ъ: "B",
3020 Ы: "X",
3021 Ь: "B",
3022 Э: "3",
3023 Ю: "X",
3024 Я: "R",
3025 а: "a",
3026 б: "b",
3027 в: "a",
3028 г: "r",
3029 д: "y",
3030 е: "e",
3031 ж: "m",
3032 з: "e",
3033 и: "n",
3034 й: "n",
3035 к: "n",
3036 л: "n",
3037 м: "m",
3038 н: "n",
3039 о: "o",
3040 п: "n",
3041 р: "p",
3042 с: "c",
3043 т: "o",
3044 у: "y",
3045 ф: "b",
3046 х: "x",
3047 ц: "n",
3048 ч: "n",
3049 ш: "w",
3050 щ: "w",
3051 ъ: "a",
3052 ы: "m",
3053 ь: "a",
3054 э: "e",
3055 ю: "m",
3056 я: "r"
3057};
3058function Ga(r, e) {
3059 y0[r] = e;
3060}
3061function ft(r, e, t) {
3062 if (!y0[e])
3063 throw new Error("Font metrics not found for font: " + e + ".");
3064 var a = r.charCodeAt(0), n = y0[e][a];
3065 if (!n && r[0] in Ot && (a = Ot[r[0]].charCodeAt(0), n = y0[e][a]), !n && t === "text" && vr(a) && (n = y0[e][77]), n)
3066 return {
3067 depth: n[0],
3068 height: n[1],
3069 italic: n[2],
3070 skew: n[3],
3071 width: n[4]
3072 };
3073}
3074var Ue = {};
3075function Va(r) {
3076 var e;
3077 if (r >= 5 ? e = 0 : r >= 3 ? e = 1 : e = 2, !Ue[e]) {
3078 var t = Ue[e] = {
3079 cssEmPerMu: ge.quad[e] / 18
3080 };
3081 for (var a in ge)
3082 ge.hasOwnProperty(a) && (t[a] = ge[a][e]);
3083 }
3084 return Ue[e];
3085}
3086var Ua = [
3087 // Each element contains [textsize, scriptsize, scriptscriptsize].
3088 // The size mappings are taken from TeX with \normalsize=10pt.
3089 [1, 1, 1],
3090 // size1: [5, 5, 5] \tiny
3091 [2, 1, 1],
3092 // size2: [6, 5, 5]
3093 [3, 1, 1],
3094 // size3: [7, 5, 5] \scriptsize
3095 [4, 2, 1],
3096 // size4: [8, 6, 5] \footnotesize
3097 [5, 2, 1],
3098 // size5: [9, 6, 5] \small
3099 [6, 3, 1],
3100 // size6: [10, 7, 5] \normalsize
3101 [7, 4, 2],
3102 // size7: [12, 8, 6] \large
3103 [8, 6, 3],
3104 // size8: [14.4, 10, 7] \Large
3105 [9, 7, 6],
3106 // size9: [17.28, 12, 10] \LARGE
3107 [10, 8, 7],
3108 // size10: [20.74, 14.4, 12] \huge
3109 [11, 10, 9]
3110 // size11: [24.88, 20.74, 17.28] \HUGE
3111], Ht = [
3112 // fontMetrics.js:getGlobalMetrics also uses size indexes, so if
3113 // you change size indexes, change that function.
3114 0.5,
3115 0.6,
3116 0.7,
3117 0.8,
3118 0.9,
3119 1,
3120 1.2,
3121 1.44,
3122 1.728,
3123 2.074,
3124 2.488
3125], Ft = function(e, t) {
3126 return t.size < 2 ? e : Ua[e - 1][t.size - 1];
3127};
3128class A0 {
3129 // A font family applies to a group of fonts (i.e. SansSerif), while a font
3130 // represents a specific font (i.e. SansSerif Bold).
3131 // See: https://tex.stackexchange.com/questions/22350/difference-between-textrm-and-mathrm
3132 /**
3133 * The base size index.
3134 */
3135 constructor(e) {
3136 this.style = void 0, this.color = void 0, this.size = void 0, this.textSize = void 0, this.phantom = void 0, this.font = void 0, this.fontFamily = void 0, this.fontWeight = void 0, this.fontShape = void 0, this.sizeMultiplier = void 0, this.maxSize = void 0, this.minRuleThickness = void 0, this._fontMetrics = void 0, this.style = e.style, this.color = e.color, this.size = e.size || A0.BASESIZE, this.textSize = e.textSize || this.size, this.phantom = !!e.phantom, this.font = e.font || "", this.fontFamily = e.fontFamily || "", this.fontWeight = e.fontWeight || "", this.fontShape = e.fontShape || "", this.sizeMultiplier = Ht[this.size - 1], this.maxSize = e.maxSize, this.minRuleThickness = e.minRuleThickness, this._fontMetrics = void 0;
3137 }
3138 /**
3139 * Returns a new options object with the same properties as "this". Properties
3140 * from "extension" will be copied to the new options object.
3141 */
3142 extend(e) {
3143 var t = {
3144 style: this.style,
3145 size: this.size,
3146 textSize: this.textSize,
3147 color: this.color,
3148 phantom: this.phantom,
3149 font: this.font,
3150 fontFamily: this.fontFamily,
3151 fontWeight: this.fontWeight,
3152 fontShape: this.fontShape,
3153 maxSize: this.maxSize,
3154 minRuleThickness: this.minRuleThickness
3155 };
3156 for (var a in e)
3157 e.hasOwnProperty(a) && (t[a] = e[a]);
3158 return new A0(t);
3159 }
3160 /**
3161 * Return an options object with the given style. If `this.style === style`,
3162 * returns `this`.
3163 */
3164 havingStyle(e) {
3165 return this.style === e ? this : this.extend({
3166 style: e,
3167 size: Ft(this.textSize, e)
3168 });
3169 }
3170 /**
3171 * Return an options object with a cramped version of the current style. If
3172 * the current style is cramped, returns `this`.
3173 */
3174 havingCrampedStyle() {
3175 return this.havingStyle(this.style.cramp());
3176 }
3177 /**
3178 * Return an options object with the given size and in at least `\textstyle`.
3179 * Returns `this` if appropriate.
3180 */
3181 havingSize(e) {
3182 return this.size === e && this.textSize === e ? this : this.extend({
3183 style: this.style.text(),
3184 size: e,
3185 textSize: e,
3186 sizeMultiplier: Ht[e - 1]
3187 });
3188 }
3189 /**
3190 * Like `this.havingSize(BASESIZE).havingStyle(style)`. If `style` is omitted,
3191 * changes to at least `\textstyle`.
3192 */
3193 havingBaseStyle(e) {
3194 e = e || this.style.text();
3195 var t = Ft(A0.BASESIZE, e);
3196 return this.size === t && this.textSize === A0.BASESIZE && this.style === e ? this : this.extend({
3197 style: e,
3198 size: t
3199 });
3200 }
3201 /**
3202 * Remove the effect of sizing changes such as \Huge.
3203 * Keep the effect of the current style, such as \scriptstyle.
3204 */
3205 havingBaseSizing() {
3206 var e;
3207 switch (this.style.id) {
3208 case 4:
3209 case 5:
3210 e = 3;
3211 break;
3212 case 6:
3213 case 7:
3214 e = 1;
3215 break;
3216 default:
3217 e = 6;
3218 }
3219 return this.extend({
3220 style: this.style.text(),
3221 size: e
3222 });
3223 }
3224 /**
3225 * Create a new options object with the given color.
3226 */
3227 withColor(e) {
3228 return this.extend({
3229 color: e
3230 });
3231 }
3232 /**
3233 * Create a new options object with "phantom" set to true.
3234 */
3235 withPhantom() {
3236 return this.extend({
3237 phantom: !0
3238 });
3239 }
3240 /**
3241 * Creates a new options object with the given math font or old text font.
3242 * @type {[type]}
3243 */
3244 withFont(e) {
3245 return this.extend({
3246 font: e
3247 });
3248 }
3249 /**
3250 * Create a new options objects with the given fontFamily.
3251 */
3252 withTextFontFamily(e) {
3253 return this.extend({
3254 fontFamily: e,
3255 font: ""
3256 });
3257 }
3258 /**
3259 * Creates a new options object with the given font weight
3260 */
3261 withTextFontWeight(e) {
3262 return this.extend({
3263 fontWeight: e,
3264 font: ""
3265 });
3266 }
3267 /**
3268 * Creates a new options object with the given font weight
3269 */
3270 withTextFontShape(e) {
3271 return this.extend({
3272 fontShape: e,
3273 font: ""
3274 });
3275 }
3276 /**
3277 * Return the CSS sizing classes required to switch from enclosing options
3278 * `oldOptions` to `this`. Returns an array of classes.
3279 */
3280 sizingClasses(e) {
3281 return e.size !== this.size ? ["sizing", "reset-size" + e.size, "size" + this.size] : [];
3282 }
3283 /**
3284 * Return the CSS sizing classes required to switch to the base size. Like
3285 * `this.havingSize(BASESIZE).sizingClasses(this)`.
3286 */
3287 baseSizingClasses() {
3288 return this.size !== A0.BASESIZE ? ["sizing", "reset-size" + this.size, "size" + A0.BASESIZE] : [];
3289 }
3290 /**
3291 * Return the font metrics for this size.
3292 */
3293 fontMetrics() {
3294 return this._fontMetrics || (this._fontMetrics = Va(this.size)), this._fontMetrics;
3295 }
3296 /**
3297 * Gets the CSS color of the current options object
3298 */
3299 getColor() {
3300 return this.phantom ? "transparent" : this.color;
3301 }
3302}
3303A0.BASESIZE = 6;
3304var nt = {
3305 // https://en.wikibooks.org/wiki/LaTeX/Lengths and
3306 // https://tex.stackexchange.com/a/8263
3307 pt: 1,
3308 // TeX point
3309 mm: 7227 / 2540,
3310 // millimeter
3311 cm: 7227 / 254,
3312 // centimeter
3313 in: 72.27,
3314 // inch
3315 bp: 803 / 800,
3316 // big (PostScript) points
3317 pc: 12,
3318 // pica
3319 dd: 1238 / 1157,
3320 // didot
3321 cc: 14856 / 1157,
3322 // cicero (12 didot)
3323 nd: 685 / 642,
3324 // new didot
3325 nc: 1370 / 107,
3326 // new cicero (12 new didot)
3327 sp: 1 / 65536,
3328 // scaled point (TeX's internal smallest unit)
3329 // https://tex.stackexchange.com/a/41371
3330 px: 803 / 800
3331 // \pdfpxdimen defaults to 1 bp in pdfTeX and LuaTeX
3332}, Ya = {
3333 ex: !0,
3334 em: !0,
3335 mu: !0
3336}, gr = function(e) {
3337 return typeof e != "string" && (e = e.unit), e in nt || e in Ya || e === "ex";
3338}, K = function(e, t) {
3339 var a;
3340 if (e.unit in nt)
3341 a = nt[e.unit] / t.fontMetrics().ptPerEm / t.sizeMultiplier;
3342 else if (e.unit === "mu")
3343 a = t.fontMetrics().cssEmPerMu;
3344 else {
3345 var n;
3346 if (t.style.isTight() ? n = t.havingStyle(t.style.text()) : n = t, e.unit === "ex")
3347 a = n.fontMetrics().xHeight;
3348 else if (e.unit === "em")
3349 a = n.fontMetrics().quad;
3350 else
3351 throw new M("Invalid unit: '" + e.unit + "'");
3352 n !== t && (a *= n.sizeMultiplier / t.sizeMultiplier);
3353 }
3354 return Math.min(e.number * a, t.maxSize);
3355}, A = function(e) {
3356 return +e.toFixed(4) + "em";
3357}, L0 = function(e) {
3358 return e.filter((t) => t).join(" ");
3359}, br = function(e, t, a) {
3360 if (this.classes = e || [], this.attributes = {}, this.height = 0, this.depth = 0, this.maxFontSize = 0, this.style = a || {}, t) {
3361 t.style.isTight() && this.classes.push("mtight");
3362 var n = t.getColor();
3363 n && (this.style.color = n);
3364 }
3365}, yr = function(e) {
3366 var t = document.createElement(e);
3367 t.className = L0(this.classes);
3368 for (var a in this.style)
3369 this.style.hasOwnProperty(a) && (t.style[a] = this.style[a]);
3370 for (var n in this.attributes)
3371 this.attributes.hasOwnProperty(n) && t.setAttribute(n, this.attributes[n]);
3372 for (var s = 0; s < this.children.length; s++)
3373 t.appendChild(this.children[s].toNode());
3374 return t;
3375}, xr = function(e) {
3376 var t = "<" + e;
3377 this.classes.length && (t += ' class="' + I.escape(L0(this.classes)) + '"');
3378 var a = "";
3379 for (var n in this.style)
3380 this.style.hasOwnProperty(n) && (a += I.hyphenate(n) + ":" + this.style[n] + ";");
3381 a && (t += ' style="' + I.escape(a) + '"');
3382 for (var s in this.attributes)
3383 this.attributes.hasOwnProperty(s) && (t += " " + s + '="' + I.escape(this.attributes[s]) + '"');
3384 t += ">";
3385 for (var o = 0; o < this.children.length; o++)
3386 t += this.children[o].toMarkup();
3387 return t += "</" + e + ">", t;
3388};
3389class me {
3390 constructor(e, t, a, n) {
3391 this.children = void 0, this.attributes = void 0, this.classes = void 0, this.height = void 0, this.depth = void 0, this.width = void 0, this.maxFontSize = void 0, this.style = void 0, br.call(this, e, a, n), this.children = t || [];
3392 }
3393 /**
3394 * Sets an arbitrary attribute on the span. Warning: use this wisely. Not
3395 * all browsers support attributes the same, and having too many custom
3396 * attributes is probably bad.
3397 */
3398 setAttribute(e, t) {
3399 this.attributes[e] = t;
3400 }
3401 hasClass(e) {
3402 return I.contains(this.classes, e);
3403 }
3404 toNode() {
3405 return yr.call(this, "span");
3406 }
3407 toMarkup() {
3408 return xr.call(this, "span");
3409 }
3410}
3411class pt {
3412 constructor(e, t, a, n) {
3413 this.children = void 0, this.attributes = void 0, this.classes = void 0, this.height = void 0, this.depth = void 0, this.maxFontSize = void 0, this.style = void 0, br.call(this, t, n), this.children = a || [], this.setAttribute("href", e);
3414 }
3415 setAttribute(e, t) {
3416 this.attributes[e] = t;
3417 }
3418 hasClass(e) {
3419 return I.contains(this.classes, e);
3420 }
3421 toNode() {
3422 return yr.call(this, "a");
3423 }
3424 toMarkup() {
3425 return xr.call(this, "a");
3426 }
3427}
3428class Xa {
3429 constructor(e, t, a) {
3430 this.src = void 0, this.alt = void 0, this.classes = void 0, this.height = void 0, this.depth = void 0, this.maxFontSize = void 0, this.style = void 0, this.alt = t, this.src = e, this.classes = ["mord"], this.style = a;
3431 }
3432 hasClass(e) {
3433 return I.contains(this.classes, e);
3434 }
3435 toNode() {
3436 var e = document.createElement("img");
3437 e.src = this.src, e.alt = this.alt, e.className = "mord";
3438 for (var t in this.style)
3439 this.style.hasOwnProperty(t) && (e.style[t] = this.style[t]);
3440 return e;
3441 }
3442 toMarkup() {
3443 var e = "<img src='" + this.src + " 'alt='" + this.alt + "' ", t = "";
3444 for (var a in this.style)
3445 this.style.hasOwnProperty(a) && (t += I.hyphenate(a) + ":" + this.style[a] + ";");
3446 return t && (e += ' style="' + I.escape(t) + '"'), e += "'/>", e;
3447 }
3448}
3449var $a = {
3450 î: "ı̂",
3451 ï: "ı̈",
3452 í: "ı́",
3453 // 'ī': '\u0131\u0304', // enable when we add Extended Latin
3454 ì: "ı̀"
3455};
3456class f0 {
3457 constructor(e, t, a, n, s, o, h, c) {
3458 this.text = void 0, this.height = void 0, this.depth = void 0, this.italic = void 0, this.skew = void 0, this.width = void 0, this.maxFontSize = void 0, this.classes = void 0, this.style = void 0, this.text = e, this.height = t || 0, this.depth = a || 0, this.italic = n || 0, this.skew = s || 0, this.width = o || 0, this.classes = h || [], this.style = c || {}, this.maxFontSize = 0;
3459 var p = Ca(this.text.charCodeAt(0));
3460 p && this.classes.push(p + "_fallback"), /[îïíì]/.test(this.text) && (this.text = $a[this.text]);
3461 }
3462 hasClass(e) {
3463 return I.contains(this.classes, e);
3464 }
3465 /**
3466 * Creates a text node or span from a symbol node. Note that a span is only
3467 * created if it is needed.
3468 */
3469 toNode() {
3470 var e = document.createTextNode(this.text), t = null;
3471 this.italic > 0 && (t = document.createElement("span"), t.style.marginRight = A(this.italic)), this.classes.length > 0 && (t = t || document.createElement("span"), t.className = L0(this.classes));
3472 for (var a in this.style)
3473 this.style.hasOwnProperty(a) && (t = t || document.createElement("span"), t.style[a] = this.style[a]);
3474 return t ? (t.appendChild(e), t) : e;
3475 }
3476 /**
3477 * Creates markup for a symbol node.
3478 */
3479 toMarkup() {
3480 var e = !1, t = "<span";
3481 this.classes.length && (e = !0, t += ' class="', t += I.escape(L0(this.classes)), t += '"');
3482 var a = "";
3483 this.italic > 0 && (a += "margin-right:" + this.italic + "em;");
3484 for (var n in this.style)
3485 this.style.hasOwnProperty(n) && (a += I.hyphenate(n) + ":" + this.style[n] + ";");
3486 a && (e = !0, t += ' style="' + I.escape(a) + '"');
3487 var s = I.escape(this.text);
3488 return e ? (t += ">", t += s, t += "</span>", t) : s;
3489 }
3490}
3491class D0 {
3492 constructor(e, t) {
3493 this.children = void 0, this.attributes = void 0, this.children = e || [], this.attributes = t || {};
3494 }
3495 toNode() {
3496 var e = "http://www.w3.org/2000/svg", t = document.createElementNS(e, "svg");
3497 for (var a in this.attributes)
3498 Object.prototype.hasOwnProperty.call(this.attributes, a) && t.setAttribute(a, this.attributes[a]);
3499 for (var n = 0; n < this.children.length; n++)
3500 t.appendChild(this.children[n].toNode());
3501 return t;
3502 }
3503 toMarkup() {
3504 var e = '<svg xmlns="http://www.w3.org/2000/svg"';
3505 for (var t in this.attributes)
3506 Object.prototype.hasOwnProperty.call(this.attributes, t) && (e += " " + t + "='" + this.attributes[t] + "'");
3507 e += ">";
3508 for (var a = 0; a < this.children.length; a++)
3509 e += this.children[a].toMarkup();
3510 return e += "</svg>", e;
3511 }
3512}
3513class P0 {
3514 constructor(e, t) {
3515 this.pathName = void 0, this.alternate = void 0, this.pathName = e, this.alternate = t;
3516 }
3517 toNode() {
3518 var e = "http://www.w3.org/2000/svg", t = document.createElementNS(e, "path");
3519 return this.alternate ? t.setAttribute("d", this.alternate) : t.setAttribute("d", It[this.pathName]), t;
3520 }
3521 toMarkup() {
3522 return this.alternate ? "<path d='" + this.alternate + "'/>" : "<path d='" + It[this.pathName] + "'/>";
3523 }
3524}
3525class it {
3526 constructor(e) {
3527 this.attributes = void 0, this.attributes = e || {};
3528 }
3529 toNode() {
3530 var e = "http://www.w3.org/2000/svg", t = document.createElementNS(e, "line");
3531 for (var a in this.attributes)
3532 Object.prototype.hasOwnProperty.call(this.attributes, a) && t.setAttribute(a, this.attributes[a]);
3533 return t;
3534 }
3535 toMarkup() {
3536 var e = "<line";
3537 for (var t in this.attributes)
3538 Object.prototype.hasOwnProperty.call(this.attributes, t) && (e += " " + t + "='" + this.attributes[t] + "'");
3539 return e += "/>", e;
3540 }
3541}
3542function Lt(r) {
3543 if (r instanceof f0)
3544 return r;
3545 throw new Error("Expected symbolNode but got " + String(r) + ".");
3546}
3547function Wa(r) {
3548 if (r instanceof me)
3549 return r;
3550 throw new Error("Expected span<HtmlDomNode> but got " + String(r) + ".");
3551}
3552var ja = {
3553 bin: 1,
3554 close: 1,
3555 inner: 1,
3556 open: 1,
3557 punct: 1,
3558 rel: 1
3559}, Za = {
3560 "accent-token": 1,
3561 mathord: 1,
3562 "op-token": 1,
3563 spacing: 1,
3564 textord: 1
3565}, $ = {
3566 math: {},
3567 text: {}
3568};
3569function i(r, e, t, a, n, s) {
3570 $[r][n] = {
3571 font: e,
3572 group: t,
3573 replace: a
3574 }, s && a && ($[r][a] = $[r][n]);
3575}
3576var l = "math", k = "text", u = "main", d = "ams", W = "accent-token", D = "bin", i0 = "close", te = "inner", q = "mathord", _ = "op-token", h0 = "open", Re = "punct", f = "rel", q0 = "spacing", v = "textord";
3577i(l, u, f, "≡", "\\equiv", !0);
3578i(l, u, f, "≺", "\\prec", !0);
3579i(l, u, f, "≻", "\\succ", !0);
3580i(l, u, f, "∼", "\\sim", !0);
3581i(l, u, f, "⊥", "\\perp");
3582i(l, u, f, "⪯", "\\preceq", !0);
3583i(l, u, f, "⪰", "\\succeq", !0);
3584i(l, u, f, "≃", "\\simeq", !0);
3585i(l, u, f, "∣", "\\mid", !0);
3586i(l, u, f, "≪", "\\ll", !0);
3587i(l, u, f, "≫", "\\gg", !0);
3588i(l, u, f, "≍", "\\asymp", !0);
3589i(l, u, f, "∥", "\\parallel");
3590i(l, u, f, "⋈", "\\bowtie", !0);
3591i(l, u, f, "⌣", "\\smile", !0);
3592i(l, u, f, "⊑", "\\sqsubseteq", !0);
3593i(l, u, f, "⊒", "\\sqsupseteq", !0);
3594i(l, u, f, "≐", "\\doteq", !0);
3595i(l, u, f, "⌢", "\\frown", !0);
3596i(l, u, f, "∋", "\\ni", !0);
3597i(l, u, f, "∝", "\\propto", !0);
3598i(l, u, f, "⊢", "\\vdash", !0);
3599i(l, u, f, "⊣", "\\dashv", !0);
3600i(l, u, f, "∋", "\\owns");
3601i(l, u, Re, ".", "\\ldotp");
3602i(l, u, Re, "⋅", "\\cdotp");
3603i(l, u, v, "#", "\\#");
3604i(k, u, v, "#", "\\#");
3605i(l, u, v, "&", "\\&");
3606i(k, u, v, "&", "\\&");
3607i(l, u, v, "ℵ", "\\aleph", !0);
3608i(l, u, v, "∀", "\\forall", !0);
3609i(l, u, v, "ℏ", "\\hbar", !0);
3610i(l, u, v, "∃", "\\exists", !0);
3611i(l, u, v, "∇", "\\nabla", !0);
3612i(l, u, v, "♭", "\\flat", !0);
3613i(l, u, v, "ℓ", "\\ell", !0);
3614i(l, u, v, "♮", "\\natural", !0);
3615i(l, u, v, "♣", "\\clubsuit", !0);
3616i(l, u, v, "℘", "\\wp", !0);
3617i(l, u, v, "♯", "\\sharp", !0);
3618i(l, u, v, "♢", "\\diamondsuit", !0);
3619i(l, u, v, "ℜ", "\\Re", !0);
3620i(l, u, v, "♡", "\\heartsuit", !0);
3621i(l, u, v, "ℑ", "\\Im", !0);
3622i(l, u, v, "♠", "\\spadesuit", !0);
3623i(l, u, v, "§", "\\S", !0);
3624i(k, u, v, "§", "\\S");
3625i(l, u, v, "¶", "\\P", !0);
3626i(k, u, v, "¶", "\\P");
3627i(l, u, v, "†", "\\dag");
3628i(k, u, v, "†", "\\dag");
3629i(k, u, v, "†", "\\textdagger");
3630i(l, u, v, "‡", "\\ddag");
3631i(k, u, v, "‡", "\\ddag");
3632i(k, u, v, "‡", "\\textdaggerdbl");
3633i(l, u, i0, "⎱", "\\rmoustache", !0);
3634i(l, u, h0, "⎰", "\\lmoustache", !0);
3635i(l, u, i0, "⟯", "\\rgroup", !0);
3636i(l, u, h0, "⟮", "\\lgroup", !0);
3637i(l, u, D, "∓", "\\mp", !0);
3638i(l, u, D, "⊖", "\\ominus", !0);
3639i(l, u, D, "⊎", "\\uplus", !0);
3640i(l, u, D, "⊓", "\\sqcap", !0);
3641i(l, u, D, "∗", "\\ast");
3642i(l, u, D, "⊔", "\\sqcup", !0);
3643i(l, u, D, "◯", "\\bigcirc", !0);
3644i(l, u, D, "∙", "\\bullet", !0);
3645i(l, u, D, "‡", "\\ddagger");
3646i(l, u, D, "≀", "\\wr", !0);
3647i(l, u, D, "⨿", "\\amalg");
3648i(l, u, D, "&", "\\And");
3649i(l, u, f, "⟵", "\\longleftarrow", !0);
3650i(l, u, f, "⇐", "\\Leftarrow", !0);
3651i(l, u, f, "⟸", "\\Longleftarrow", !0);
3652i(l, u, f, "⟶", "\\longrightarrow", !0);
3653i(l, u, f, "⇒", "\\Rightarrow", !0);
3654i(l, u, f, "⟹", "\\Longrightarrow", !0);
3655i(l, u, f, "↔", "\\leftrightarrow", !0);
3656i(l, u, f, "⟷", "\\longleftrightarrow", !0);
3657i(l, u, f, "⇔", "\\Leftrightarrow", !0);
3658i(l, u, f, "⟺", "\\Longleftrightarrow", !0);
3659i(l, u, f, "↦", "\\mapsto", !0);
3660i(l, u, f, "⟼", "\\longmapsto", !0);
3661i(l, u, f, "↗", "\\nearrow", !0);
3662i(l, u, f, "↩", "\\hookleftarrow", !0);
3663i(l, u, f, "↪", "\\hookrightarrow", !0);
3664i(l, u, f, "↘", "\\searrow", !0);
3665i(l, u, f, "↼", "\\leftharpoonup", !0);
3666i(l, u, f, "⇀", "\\rightharpoonup", !0);
3667i(l, u, f, "↙", "\\swarrow", !0);
3668i(l, u, f, "↽", "\\leftharpoondown", !0);
3669i(l, u, f, "⇁", "\\rightharpoondown", !0);
3670i(l, u, f, "↖", "\\nwarrow", !0);
3671i(l, u, f, "⇌", "\\rightleftharpoons", !0);
3672i(l, d, f, "≮", "\\nless", !0);
3673i(l, d, f, "", "\\@nleqslant");
3674i(l, d, f, "", "\\@nleqq");
3675i(l, d, f, "⪇", "\\lneq", !0);
3676i(l, d, f, "≨", "\\lneqq", !0);
3677i(l, d, f, "", "\\@lvertneqq");
3678i(l, d, f, "⋦", "\\lnsim", !0);
3679i(l, d, f, "⪉", "\\lnapprox", !0);
3680i(l, d, f, "⊀", "\\nprec", !0);
3681i(l, d, f, "⋠", "\\npreceq", !0);
3682i(l, d, f, "⋨", "\\precnsim", !0);
3683i(l, d, f, "⪹", "\\precnapprox", !0);
3684i(l, d, f, "≁", "\\nsim", !0);
3685i(l, d, f, "", "\\@nshortmid");
3686i(l, d, f, "∤", "\\nmid", !0);
3687i(l, d, f, "⊬", "\\nvdash", !0);
3688i(l, d, f, "⊭", "\\nvDash", !0);
3689i(l, d, f, "⋪", "\\ntriangleleft");
3690i(l, d, f, "⋬", "\\ntrianglelefteq", !0);
3691i(l, d, f, "⊊", "\\subsetneq", !0);
3692i(l, d, f, "", "\\@varsubsetneq");
3693i(l, d, f, "⫋", "\\subsetneqq", !0);
3694i(l, d, f, "", "\\@varsubsetneqq");
3695i(l, d, f, "≯", "\\ngtr", !0);
3696i(l, d, f, "", "\\@ngeqslant");
3697i(l, d, f, "", "\\@ngeqq");
3698i(l, d, f, "⪈", "\\gneq", !0);
3699i(l, d, f, "≩", "\\gneqq", !0);
3700i(l, d, f, "", "\\@gvertneqq");
3701i(l, d, f, "⋧", "\\gnsim", !0);
3702i(l, d, f, "⪊", "\\gnapprox", !0);
3703i(l, d, f, "⊁", "\\nsucc", !0);
3704i(l, d, f, "⋡", "\\nsucceq", !0);
3705i(l, d, f, "⋩", "\\succnsim", !0);
3706i(l, d, f, "⪺", "\\succnapprox", !0);
3707i(l, d, f, "≆", "\\ncong", !0);
3708i(l, d, f, "", "\\@nshortparallel");
3709i(l, d, f, "∦", "\\nparallel", !0);
3710i(l, d, f, "⊯", "\\nVDash", !0);
3711i(l, d, f, "⋫", "\\ntriangleright");
3712i(l, d, f, "⋭", "\\ntrianglerighteq", !0);
3713i(l, d, f, "", "\\@nsupseteqq");
3714i(l, d, f, "⊋", "\\supsetneq", !0);
3715i(l, d, f, "", "\\@varsupsetneq");
3716i(l, d, f, "⫌", "\\supsetneqq", !0);
3717i(l, d, f, "", "\\@varsupsetneqq");
3718i(l, d, f, "⊮", "\\nVdash", !0);
3719i(l, d, f, "⪵", "\\precneqq", !0);
3720i(l, d, f, "⪶", "\\succneqq", !0);
3721i(l, d, f, "", "\\@nsubseteqq");
3722i(l, d, D, "⊴", "\\unlhd");
3723i(l, d, D, "⊵", "\\unrhd");
3724i(l, d, f, "↚", "\\nleftarrow", !0);
3725i(l, d, f, "↛", "\\nrightarrow", !0);
3726i(l, d, f, "⇍", "\\nLeftarrow", !0);
3727i(l, d, f, "⇏", "\\nRightarrow", !0);
3728i(l, d, f, "↮", "\\nleftrightarrow", !0);
3729i(l, d, f, "⇎", "\\nLeftrightarrow", !0);
3730i(l, d, f, "△", "\\vartriangle");
3731i(l, d, v, "ℏ", "\\hslash");
3732i(l, d, v, "▽", "\\triangledown");
3733i(l, d, v, "◊", "\\lozenge");
3734i(l, d, v, "Ⓢ", "\\circledS");
3735i(l, d, v, "®", "\\circledR");
3736i(k, d, v, "®", "\\circledR");
3737i(l, d, v, "∡", "\\measuredangle", !0);
3738i(l, d, v, "∄", "\\nexists");
3739i(l, d, v, "℧", "\\mho");
3740i(l, d, v, "Ⅎ", "\\Finv", !0);
3741i(l, d, v, "⅁", "\\Game", !0);
3742i(l, d, v, "‵", "\\backprime");
3743i(l, d, v, "▲", "\\blacktriangle");
3744i(l, d, v, "▼", "\\blacktriangledown");
3745i(l, d, v, "■", "\\blacksquare");
3746i(l, d, v, "⧫", "\\blacklozenge");
3747i(l, d, v, "★", "\\bigstar");
3748i(l, d, v, "∢", "\\sphericalangle", !0);
3749i(l, d, v, "∁", "\\complement", !0);
3750i(l, d, v, "ð", "\\eth", !0);
3751i(k, u, v, "ð", "ð");
3752i(l, d, v, "╱", "\\diagup");
3753i(l, d, v, "╲", "\\diagdown");
3754i(l, d, v, "□", "\\square");
3755i(l, d, v, "□", "\\Box");
3756i(l, d, v, "◊", "\\Diamond");
3757i(l, d, v, "¥", "\\yen", !0);
3758i(k, d, v, "¥", "\\yen", !0);
3759i(l, d, v, "✓", "\\checkmark", !0);
3760i(k, d, v, "✓", "\\checkmark");
3761i(l, d, v, "ℶ", "\\beth", !0);
3762i(l, d, v, "ℸ", "\\daleth", !0);
3763i(l, d, v, "ℷ", "\\gimel", !0);
3764i(l, d, v, "ϝ", "\\digamma", !0);
3765i(l, d, v, "ϰ", "\\varkappa");
3766i(l, d, h0, "┌", "\\@ulcorner", !0);
3767i(l, d, i0, "┐", "\\@urcorner", !0);
3768i(l, d, h0, "└", "\\@llcorner", !0);
3769i(l, d, i0, "┘", "\\@lrcorner", !0);
3770i(l, d, f, "≦", "\\leqq", !0);
3771i(l, d, f, "⩽", "\\leqslant", !0);
3772i(l, d, f, "⪕", "\\eqslantless", !0);
3773i(l, d, f, "≲", "\\lesssim", !0);
3774i(l, d, f, "⪅", "\\lessapprox", !0);
3775i(l, d, f, "≊", "\\approxeq", !0);
3776i(l, d, D, "⋖", "\\lessdot");
3777i(l, d, f, "⋘", "\\lll", !0);
3778i(l, d, f, "≶", "\\lessgtr", !0);
3779i(l, d, f, "⋚", "\\lesseqgtr", !0);
3780i(l, d, f, "⪋", "\\lesseqqgtr", !0);
3781i(l, d, f, "≑", "\\doteqdot");
3782i(l, d, f, "≓", "\\risingdotseq", !0);
3783i(l, d, f, "≒", "\\fallingdotseq", !0);
3784i(l, d, f, "∽", "\\backsim", !0);
3785i(l, d, f, "⋍", "\\backsimeq", !0);
3786i(l, d, f, "⫅", "\\subseteqq", !0);
3787i(l, d, f, "⋐", "\\Subset", !0);
3788i(l, d, f, "⊏", "\\sqsubset", !0);
3789i(l, d, f, "≼", "\\preccurlyeq", !0);
3790i(l, d, f, "⋞", "\\curlyeqprec", !0);
3791i(l, d, f, "≾", "\\precsim", !0);
3792i(l, d, f, "⪷", "\\precapprox", !0);
3793i(l, d, f, "⊲", "\\vartriangleleft");
3794i(l, d, f, "⊴", "\\trianglelefteq");
3795i(l, d, f, "⊨", "\\vDash", !0);
3796i(l, d, f, "⊪", "\\Vvdash", !0);
3797i(l, d, f, "⌣", "\\smallsmile");
3798i(l, d, f, "⌢", "\\smallfrown");
3799i(l, d, f, "≏", "\\bumpeq", !0);
3800i(l, d, f, "≎", "\\Bumpeq", !0);
3801i(l, d, f, "≧", "\\geqq", !0);
3802i(l, d, f, "⩾", "\\geqslant", !0);
3803i(l, d, f, "⪖", "\\eqslantgtr", !0);
3804i(l, d, f, "≳", "\\gtrsim", !0);
3805i(l, d, f, "⪆", "\\gtrapprox", !0);
3806i(l, d, D, "⋗", "\\gtrdot");
3807i(l, d, f, "⋙", "\\ggg", !0);
3808i(l, d, f, "≷", "\\gtrless", !0);
3809i(l, d, f, "⋛", "\\gtreqless", !0);
3810i(l, d, f, "⪌", "\\gtreqqless", !0);
3811i(l, d, f, "≖", "\\eqcirc", !0);
3812i(l, d, f, "≗", "\\circeq", !0);
3813i(l, d, f, "≜", "\\triangleq", !0);
3814i(l, d, f, "∼", "\\thicksim");
3815i(l, d, f, "≈", "\\thickapprox");
3816i(l, d, f, "⫆", "\\supseteqq", !0);
3817i(l, d, f, "⋑", "\\Supset", !0);
3818i(l, d, f, "⊐", "\\sqsupset", !0);
3819i(l, d, f, "≽", "\\succcurlyeq", !0);
3820i(l, d, f, "⋟", "\\curlyeqsucc", !0);
3821i(l, d, f, "≿", "\\succsim", !0);
3822i(l, d, f, "⪸", "\\succapprox", !0);
3823i(l, d, f, "⊳", "\\vartriangleright");
3824i(l, d, f, "⊵", "\\trianglerighteq");
3825i(l, d, f, "⊩", "\\Vdash", !0);
3826i(l, d, f, "∣", "\\shortmid");
3827i(l, d, f, "∥", "\\shortparallel");
3828i(l, d, f, "≬", "\\between", !0);
3829i(l, d, f, "⋔", "\\pitchfork", !0);
3830i(l, d, f, "∝", "\\varpropto");
3831i(l, d, f, "◀", "\\blacktriangleleft");
3832i(l, d, f, "∴", "\\therefore", !0);
3833i(l, d, f, "∍", "\\backepsilon");
3834i(l, d, f, "▶", "\\blacktriangleright");
3835i(l, d, f, "∵", "\\because", !0);
3836i(l, d, f, "⋘", "\\llless");
3837i(l, d, f, "⋙", "\\gggtr");
3838i(l, d, D, "⊲", "\\lhd");
3839i(l, d, D, "⊳", "\\rhd");
3840i(l, d, f, "≂", "\\eqsim", !0);
3841i(l, u, f, "⋈", "\\Join");
3842i(l, d, f, "≑", "\\Doteq", !0);
3843i(l, d, D, "∔", "\\dotplus", !0);
3844i(l, d, D, "∖", "\\smallsetminus");
3845i(l, d, D, "⋒", "\\Cap", !0);
3846i(l, d, D, "⋓", "\\Cup", !0);
3847i(l, d, D, "⩞", "\\doublebarwedge", !0);
3848i(l, d, D, "⊟", "\\boxminus", !0);
3849i(l, d, D, "⊞", "\\boxplus", !0);
3850i(l, d, D, "⋇", "\\divideontimes", !0);
3851i(l, d, D, "⋉", "\\ltimes", !0);
3852i(l, d, D, "⋊", "\\rtimes", !0);
3853i(l, d, D, "⋋", "\\leftthreetimes", !0);
3854i(l, d, D, "⋌", "\\rightthreetimes", !0);
3855i(l, d, D, "⋏", "\\curlywedge", !0);
3856i(l, d, D, "⋎", "\\curlyvee", !0);
3857i(l, d, D, "⊝", "\\circleddash", !0);
3858i(l, d, D, "⊛", "\\circledast", !0);
3859i(l, d, D, "⋅", "\\centerdot");
3860i(l, d, D, "⊺", "\\intercal", !0);
3861i(l, d, D, "⋒", "\\doublecap");
3862i(l, d, D, "⋓", "\\doublecup");
3863i(l, d, D, "⊠", "\\boxtimes", !0);
3864i(l, d, f, "⇢", "\\dashrightarrow", !0);
3865i(l, d, f, "⇠", "\\dashleftarrow", !0);
3866i(l, d, f, "⇇", "\\leftleftarrows", !0);
3867i(l, d, f, "⇆", "\\leftrightarrows", !0);
3868i(l, d, f, "⇚", "\\Lleftarrow", !0);
3869i(l, d, f, "↞", "\\twoheadleftarrow", !0);
3870i(l, d, f, "↢", "\\leftarrowtail", !0);
3871i(l, d, f, "↫", "\\looparrowleft", !0);
3872i(l, d, f, "⇋", "\\leftrightharpoons", !0);
3873i(l, d, f, "↶", "\\curvearrowleft", !0);
3874i(l, d, f, "↺", "\\circlearrowleft", !0);
3875i(l, d, f, "↰", "\\Lsh", !0);
3876i(l, d, f, "⇈", "\\upuparrows", !0);
3877i(l, d, f, "↿", "\\upharpoonleft", !0);
3878i(l, d, f, "⇃", "\\downharpoonleft", !0);
3879i(l, u, f, "⊶", "\\origof", !0);
3880i(l, u, f, "⊷", "\\imageof", !0);
3881i(l, d, f, "⊸", "\\multimap", !0);
3882i(l, d, f, "↭", "\\leftrightsquigarrow", !0);
3883i(l, d, f, "⇉", "\\rightrightarrows", !0);
3884i(l, d, f, "⇄", "\\rightleftarrows", !0);
3885i(l, d, f, "↠", "\\twoheadrightarrow", !0);
3886i(l, d, f, "↣", "\\rightarrowtail", !0);
3887i(l, d, f, "↬", "\\looparrowright", !0);
3888i(l, d, f, "↷", "\\curvearrowright", !0);
3889i(l, d, f, "↻", "\\circlearrowright", !0);
3890i(l, d, f, "↱", "\\Rsh", !0);
3891i(l, d, f, "⇊", "\\downdownarrows", !0);
3892i(l, d, f, "↾", "\\upharpoonright", !0);
3893i(l, d, f, "⇂", "\\downharpoonright", !0);
3894i(l, d, f, "⇝", "\\rightsquigarrow", !0);
3895i(l, d, f, "⇝", "\\leadsto");
3896i(l, d, f, "⇛", "\\Rrightarrow", !0);
3897i(l, d, f, "↾", "\\restriction");
3898i(l, u, v, "‘", "`");
3899i(l, u, v, "$", "\\$");
3900i(k, u, v, "$", "\\$");
3901i(k, u, v, "$", "\\textdollar");
3902i(l, u, v, "%", "\\%");
3903i(k, u, v, "%", "\\%");
3904i(l, u, v, "_", "\\_");
3905i(k, u, v, "_", "\\_");
3906i(k, u, v, "_", "\\textunderscore");
3907i(l, u, v, "∠", "\\angle", !0);
3908i(l, u, v, "∞", "\\infty", !0);
3909i(l, u, v, "′", "\\prime");
3910i(l, u, v, "△", "\\triangle");
3911i(l, u, v, "Γ", "\\Gamma", !0);
3912i(l, u, v, "Δ", "\\Delta", !0);
3913i(l, u, v, "Θ", "\\Theta", !0);
3914i(l, u, v, "Λ", "\\Lambda", !0);
3915i(l, u, v, "Ξ", "\\Xi", !0);
3916i(l, u, v, "Π", "\\Pi", !0);
3917i(l, u, v, "Σ", "\\Sigma", !0);
3918i(l, u, v, "Υ", "\\Upsilon", !0);
3919i(l, u, v, "Φ", "\\Phi", !0);
3920i(l, u, v, "Ψ", "\\Psi", !0);
3921i(l, u, v, "Ω", "\\Omega", !0);
3922i(l, u, v, "A", "Α");
3923i(l, u, v, "B", "Β");
3924i(l, u, v, "E", "Ε");
3925i(l, u, v, "Z", "Ζ");
3926i(l, u, v, "H", "Η");
3927i(l, u, v, "I", "Ι");
3928i(l, u, v, "K", "Κ");
3929i(l, u, v, "M", "Μ");
3930i(l, u, v, "N", "Ν");
3931i(l, u, v, "O", "Ο");
3932i(l, u, v, "P", "Ρ");
3933i(l, u, v, "T", "Τ");
3934i(l, u, v, "X", "Χ");
3935i(l, u, v, "¬", "\\neg", !0);
3936i(l, u, v, "¬", "\\lnot");
3937i(l, u, v, "⊤", "\\top");
3938i(l, u, v, "⊥", "\\bot");
3939i(l, u, v, "∅", "\\emptyset");
3940i(l, d, v, "∅", "\\varnothing");
3941i(l, u, q, "α", "\\alpha", !0);
3942i(l, u, q, "β", "\\beta", !0);
3943i(l, u, q, "γ", "\\gamma", !0);
3944i(l, u, q, "δ", "\\delta", !0);
3945i(l, u, q, "ϵ", "\\epsilon", !0);
3946i(l, u, q, "ζ", "\\zeta", !0);
3947i(l, u, q, "η", "\\eta", !0);
3948i(l, u, q, "θ", "\\theta", !0);
3949i(l, u, q, "ι", "\\iota", !0);
3950i(l, u, q, "κ", "\\kappa", !0);
3951i(l, u, q, "λ", "\\lambda", !0);
3952i(l, u, q, "μ", "\\mu", !0);
3953i(l, u, q, "ν", "\\nu", !0);
3954i(l, u, q, "ξ", "\\xi", !0);
3955i(l, u, q, "ο", "\\omicron", !0);
3956i(l, u, q, "π", "\\pi", !0);
3957i(l, u, q, "ρ", "\\rho", !0);
3958i(l, u, q, "σ", "\\sigma", !0);
3959i(l, u, q, "τ", "\\tau", !0);
3960i(l, u, q, "υ", "\\upsilon", !0);
3961i(l, u, q, "ϕ", "\\phi", !0);
3962i(l, u, q, "χ", "\\chi", !0);
3963i(l, u, q, "ψ", "\\psi", !0);
3964i(l, u, q, "ω", "\\omega", !0);
3965i(l, u, q, "ε", "\\varepsilon", !0);
3966i(l, u, q, "ϑ", "\\vartheta", !0);
3967i(l, u, q, "ϖ", "\\varpi", !0);
3968i(l, u, q, "ϱ", "\\varrho", !0);
3969i(l, u, q, "ς", "\\varsigma", !0);
3970i(l, u, q, "φ", "\\varphi", !0);
3971i(l, u, D, "∗", "*", !0);
3972i(l, u, D, "+", "+");
3973i(l, u, D, "−", "-", !0);
3974i(l, u, D, "⋅", "\\cdot", !0);
3975i(l, u, D, "∘", "\\circ", !0);
3976i(l, u, D, "÷", "\\div", !0);
3977i(l, u, D, "±", "\\pm", !0);
3978i(l, u, D, "×", "\\times", !0);
3979i(l, u, D, "∩", "\\cap", !0);
3980i(l, u, D, "∪", "\\cup", !0);
3981i(l, u, D, "∖", "\\setminus", !0);
3982i(l, u, D, "∧", "\\land");
3983i(l, u, D, "∨", "\\lor");
3984i(l, u, D, "∧", "\\wedge", !0);
3985i(l, u, D, "∨", "\\vee", !0);
3986i(l, u, v, "√", "\\surd");
3987i(l, u, h0, "⟨", "\\langle", !0);
3988i(l, u, h0, "∣", "\\lvert");
3989i(l, u, h0, "∥", "\\lVert");
3990i(l, u, i0, "?", "?");
3991i(l, u, i0, "!", "!");
3992i(l, u, i0, "⟩", "\\rangle", !0);
3993i(l, u, i0, "∣", "\\rvert");
3994i(l, u, i0, "∥", "\\rVert");
3995i(l, u, f, "=", "=");
3996i(l, u, f, ":", ":");
3997i(l, u, f, "≈", "\\approx", !0);
3998i(l, u, f, "≅", "\\cong", !0);
3999i(l, u, f, "≥", "\\ge");
4000i(l, u, f, "≥", "\\geq", !0);
4001i(l, u, f, "←", "\\gets");
4002i(l, u, f, ">", "\\gt", !0);
4003i(l, u, f, "∈", "\\in", !0);
4004i(l, u, f, "", "\\@not");
4005i(l, u, f, "⊂", "\\subset", !0);
4006i(l, u, f, "⊃", "\\supset", !0);
4007i(l, u, f, "⊆", "\\subseteq", !0);
4008i(l, u, f, "⊇", "\\supseteq", !0);
4009i(l, d, f, "⊈", "\\nsubseteq", !0);
4010i(l, d, f, "⊉", "\\nsupseteq", !0);
4011i(l, u, f, "⊨", "\\models");
4012i(l, u, f, "←", "\\leftarrow", !0);
4013i(l, u, f, "≤", "\\le");
4014i(l, u, f, "≤", "\\leq", !0);
4015i(l, u, f, "<", "\\lt", !0);
4016i(l, u, f, "→", "\\rightarrow", !0);
4017i(l, u, f, "→", "\\to");
4018i(l, d, f, "≱", "\\ngeq", !0);
4019i(l, d, f, "≰", "\\nleq", !0);
4020i(l, u, q0, " ", "\\ ");
4021i(l, u, q0, " ", "\\space");
4022i(l, u, q0, " ", "\\nobreakspace");
4023i(k, u, q0, " ", "\\ ");
4024i(k, u, q0, " ", " ");
4025i(k, u, q0, " ", "\\space");
4026i(k, u, q0, " ", "\\nobreakspace");
4027i(l, u, q0, null, "\\nobreak");
4028i(l, u, q0, null, "\\allowbreak");
4029i(l, u, Re, ",", ",");
4030i(l, u, Re, ";", ";");
4031i(l, d, D, "⊼", "\\barwedge", !0);
4032i(l, d, D, "⊻", "\\veebar", !0);
4033i(l, u, D, "⊙", "\\odot", !0);
4034i(l, u, D, "⊕", "\\oplus", !0);
4035i(l, u, D, "⊗", "\\otimes", !0);
4036i(l, u, v, "∂", "\\partial", !0);
4037i(l, u, D, "⊘", "\\oslash", !0);
4038i(l, d, D, "⊚", "\\circledcirc", !0);
4039i(l, d, D, "⊡", "\\boxdot", !0);
4040i(l, u, D, "△", "\\bigtriangleup");
4041i(l, u, D, "▽", "\\bigtriangledown");
4042i(l, u, D, "†", "\\dagger");
4043i(l, u, D, "⋄", "\\diamond");
4044i(l, u, D, "⋆", "\\star");
4045i(l, u, D, "◃", "\\triangleleft");
4046i(l, u, D, "▹", "\\triangleright");
4047i(l, u, h0, "{", "\\{");
4048i(k, u, v, "{", "\\{");
4049i(k, u, v, "{", "\\textbraceleft");
4050i(l, u, i0, "}", "\\}");
4051i(k, u, v, "}", "\\}");
4052i(k, u, v, "}", "\\textbraceright");
4053i(l, u, h0, "{", "\\lbrace");
4054i(l, u, i0, "}", "\\rbrace");
4055i(l, u, h0, "[", "\\lbrack", !0);
4056i(k, u, v, "[", "\\lbrack", !0);
4057i(l, u, i0, "]", "\\rbrack", !0);
4058i(k, u, v, "]", "\\rbrack", !0);
4059i(l, u, h0, "(", "\\lparen", !0);
4060i(l, u, i0, ")", "\\rparen", !0);
4061i(k, u, v, "<", "\\textless", !0);
4062i(k, u, v, ">", "\\textgreater", !0);
4063i(l, u, h0, "⌊", "\\lfloor", !0);
4064i(l, u, i0, "⌋", "\\rfloor", !0);
4065i(l, u, h0, "⌈", "\\lceil", !0);
4066i(l, u, i0, "⌉", "\\rceil", !0);
4067i(l, u, v, "\\", "\\backslash");
4068i(l, u, v, "∣", "|");
4069i(l, u, v, "∣", "\\vert");
4070i(k, u, v, "|", "\\textbar", !0);
4071i(l, u, v, "∥", "\\|");
4072i(l, u, v, "∥", "\\Vert");
4073i(k, u, v, "∥", "\\textbardbl");
4074i(k, u, v, "~", "\\textasciitilde");
4075i(k, u, v, "\\", "\\textbackslash");
4076i(k, u, v, "^", "\\textasciicircum");
4077i(l, u, f, "↑", "\\uparrow", !0);
4078i(l, u, f, "⇑", "\\Uparrow", !0);
4079i(l, u, f, "↓", "\\downarrow", !0);
4080i(l, u, f, "⇓", "\\Downarrow", !0);
4081i(l, u, f, "↕", "\\updownarrow", !0);
4082i(l, u, f, "⇕", "\\Updownarrow", !0);
4083i(l, u, _, "∐", "\\coprod");
4084i(l, u, _, "⋁", "\\bigvee");
4085i(l, u, _, "⋀", "\\bigwedge");
4086i(l, u, _, "⨄", "\\biguplus");
4087i(l, u, _, "⋂", "\\bigcap");
4088i(l, u, _, "⋃", "\\bigcup");
4089i(l, u, _, "∫", "\\int");
4090i(l, u, _, "∫", "\\intop");
4091i(l, u, _, "∬", "\\iint");
4092i(l, u, _, "∭", "\\iiint");
4093i(l, u, _, "∏", "\\prod");
4094i(l, u, _, "∑", "\\sum");
4095i(l, u, _, "⨂", "\\bigotimes");
4096i(l, u, _, "⨁", "\\bigoplus");
4097i(l, u, _, "⨀", "\\bigodot");
4098i(l, u, _, "∮", "\\oint");
4099i(l, u, _, "∯", "\\oiint");
4100i(l, u, _, "∰", "\\oiiint");
4101i(l, u, _, "⨆", "\\bigsqcup");
4102i(l, u, _, "∫", "\\smallint");
4103i(k, u, te, "…", "\\textellipsis");
4104i(l, u, te, "…", "\\mathellipsis");
4105i(k, u, te, "…", "\\ldots", !0);
4106i(l, u, te, "…", "\\ldots", !0);
4107i(l, u, te, "⋯", "\\@cdots", !0);
4108i(l, u, te, "⋱", "\\ddots", !0);
4109i(l, u, v, "⋮", "\\varvdots");
4110i(l, u, W, "ˊ", "\\acute");
4111i(l, u, W, "ˋ", "\\grave");
4112i(l, u, W, "¨", "\\ddot");
4113i(l, u, W, "~", "\\tilde");
4114i(l, u, W, "ˉ", "\\bar");
4115i(l, u, W, "˘", "\\breve");
4116i(l, u, W, "ˇ", "\\check");
4117i(l, u, W, "^", "\\hat");
4118i(l, u, W, "⃗", "\\vec");
4119i(l, u, W, "˙", "\\dot");
4120i(l, u, W, "˚", "\\mathring");
4121i(l, u, q, "", "\\@imath");
4122i(l, u, q, "", "\\@jmath");
4123i(l, u, v, "ı", "ı");
4124i(l, u, v, "ȷ", "ȷ");
4125i(k, u, v, "ı", "\\i", !0);
4126i(k, u, v, "ȷ", "\\j", !0);
4127i(k, u, v, "ß", "\\ss", !0);
4128i(k, u, v, "æ", "\\ae", !0);
4129i(k, u, v, "œ", "\\oe", !0);
4130i(k, u, v, "ø", "\\o", !0);
4131i(k, u, v, "Æ", "\\AE", !0);
4132i(k, u, v, "Œ", "\\OE", !0);
4133i(k, u, v, "Ø", "\\O", !0);
4134i(k, u, W, "ˊ", "\\'");
4135i(k, u, W, "ˋ", "\\`");
4136i(k, u, W, "ˆ", "\\^");
4137i(k, u, W, "˜", "\\~");
4138i(k, u, W, "ˉ", "\\=");
4139i(k, u, W, "˘", "\\u");
4140i(k, u, W, "˙", "\\.");
4141i(k, u, W, "¸", "\\c");
4142i(k, u, W, "˚", "\\r");
4143i(k, u, W, "ˇ", "\\v");
4144i(k, u, W, "¨", '\\"');
4145i(k, u, W, "˝", "\\H");
4146i(k, u, W, "◯", "\\textcircled");
4147var wr = {
4148 "--": !0,
4149 "---": !0,
4150 "``": !0,
4151 "''": !0
4152};
4153i(k, u, v, "–", "--", !0);
4154i(k, u, v, "–", "\\textendash");
4155i(k, u, v, "—", "---", !0);
4156i(k, u, v, "—", "\\textemdash");
4157i(k, u, v, "‘", "`", !0);
4158i(k, u, v, "‘", "\\textquoteleft");
4159i(k, u, v, "’", "'", !0);
4160i(k, u, v, "’", "\\textquoteright");
4161i(k, u, v, "“", "``", !0);
4162i(k, u, v, "“", "\\textquotedblleft");
4163i(k, u, v, "”", "''", !0);
4164i(k, u, v, "”", "\\textquotedblright");
4165i(l, u, v, "°", "\\degree", !0);
4166i(k, u, v, "°", "\\degree");
4167i(k, u, v, "°", "\\textdegree", !0);
4168i(l, u, v, "£", "\\pounds");
4169i(l, u, v, "£", "\\mathsterling", !0);
4170i(k, u, v, "£", "\\pounds");
4171i(k, u, v, "£", "\\textsterling", !0);
4172i(l, d, v, "✠", "\\maltese");
4173i(k, d, v, "✠", "\\maltese");
4174var Pt = '0123456789/@."';
4175for (var Ye = 0; Ye < Pt.length; Ye++) {
4176 var Gt = Pt.charAt(Ye);
4177 i(l, u, v, Gt, Gt);
4178}
4179var Vt = '0123456789!@*()-=+";:?/.,';
4180for (var Xe = 0; Xe < Vt.length; Xe++) {
4181 var Ut = Vt.charAt(Xe);
4182 i(k, u, v, Ut, Ut);
4183}
4184var De = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
4185for (var $e = 0; $e < De.length; $e++) {
4186 var be = De.charAt($e);
4187 i(l, u, q, be, be), i(k, u, v, be, be);
4188}
4189i(l, d, v, "C", "ℂ");
4190i(k, d, v, "C", "ℂ");
4191i(l, d, v, "H", "ℍ");
4192i(k, d, v, "H", "ℍ");
4193i(l, d, v, "N", "ℕ");
4194i(k, d, v, "N", "ℕ");
4195i(l, d, v, "P", "ℙ");
4196i(k, d, v, "P", "ℙ");
4197i(l, d, v, "Q", "ℚ");
4198i(k, d, v, "Q", "ℚ");
4199i(l, d, v, "R", "ℝ");
4200i(k, d, v, "R", "ℝ");
4201i(l, d, v, "Z", "ℤ");
4202i(k, d, v, "Z", "ℤ");
4203i(l, u, q, "h", "ℎ");
4204i(k, u, q, "h", "ℎ");
4205var E = "";
4206for (var a0 = 0; a0 < De.length; a0++) {
4207 var J = De.charAt(a0);
4208 E = String.fromCharCode(55349, 56320 + a0), i(l, u, q, J, E), i(k, u, v, J, E), E = String.fromCharCode(55349, 56372 + a0), i(l, u, q, J, E), i(k, u, v, J, E), E = String.fromCharCode(55349, 56424 + a0), i(l, u, q, J, E), i(k, u, v, J, E), E = String.fromCharCode(55349, 56580 + a0), i(l, u, q, J, E), i(k, u, v, J, E), E = String.fromCharCode(55349, 56684 + a0), i(l, u, q, J, E), i(k, u, v, J, E), E = String.fromCharCode(55349, 56736 + a0), i(l, u, q, J, E), i(k, u, v, J, E), E = String.fromCharCode(55349, 56788 + a0), i(l, u, q, J, E), i(k, u, v, J, E), E = String.fromCharCode(55349, 56840 + a0), i(l, u, q, J, E), i(k, u, v, J, E), E = String.fromCharCode(55349, 56944 + a0), i(l, u, q, J, E), i(k, u, v, J, E), a0 < 26 && (E = String.fromCharCode(55349, 56632 + a0), i(l, u, q, J, E), i(k, u, v, J, E), E = String.fromCharCode(55349, 56476 + a0), i(l, u, q, J, E), i(k, u, v, J, E));
4209}
4210E = String.fromCharCode(55349, 56668);
4211i(l, u, q, "k", E);
4212i(k, u, v, "k", E);
4213for (var Y0 = 0; Y0 < 10; Y0++) {
4214 var H0 = Y0.toString();
4215 E = String.fromCharCode(55349, 57294 + Y0), i(l, u, q, H0, E), i(k, u, v, H0, E), E = String.fromCharCode(55349, 57314 + Y0), i(l, u, q, H0, E), i(k, u, v, H0, E), E = String.fromCharCode(55349, 57324 + Y0), i(l, u, q, H0, E), i(k, u, v, H0, E), E = String.fromCharCode(55349, 57334 + Y0), i(l, u, q, H0, E), i(k, u, v, H0, E);
4216}
4217var st = "ÐÞþ";
4218for (var We = 0; We < st.length; We++) {
4219 var ye = st.charAt(We);
4220 i(l, u, q, ye, ye), i(k, u, v, ye, ye);
4221}
4222var xe = [
4223 ["mathbf", "textbf", "Main-Bold"],
4224 // A-Z bold upright
4225 ["mathbf", "textbf", "Main-Bold"],
4226 // a-z bold upright
4227 ["mathnormal", "textit", "Math-Italic"],
4228 // A-Z italic
4229 ["mathnormal", "textit", "Math-Italic"],
4230 // a-z italic
4231 ["boldsymbol", "boldsymbol", "Main-BoldItalic"],
4232 // A-Z bold italic
4233 ["boldsymbol", "boldsymbol", "Main-BoldItalic"],
4234 // a-z bold italic
4235 // Map fancy A-Z letters to script, not calligraphic.
4236 // This aligns with unicode-math and math fonts (except Cambria Math).
4237 ["mathscr", "textscr", "Script-Regular"],
4238 // A-Z script
4239 ["", "", ""],
4240 // a-z script. No font
4241 ["", "", ""],
4242 // A-Z bold script. No font
4243 ["", "", ""],
4244 // a-z bold script. No font
4245 ["mathfrak", "textfrak", "Fraktur-Regular"],
4246 // A-Z Fraktur
4247 ["mathfrak", "textfrak", "Fraktur-Regular"],
4248 // a-z Fraktur
4249 ["mathbb", "textbb", "AMS-Regular"],
4250 // A-Z double-struck
4251 ["mathbb", "textbb", "AMS-Regular"],
4252 // k double-struck
4253 // Note that we are using a bold font, but font metrics for regular Fraktur.
4254 ["mathboldfrak", "textboldfrak", "Fraktur-Regular"],
4255 // A-Z bold Fraktur
4256 ["mathboldfrak", "textboldfrak", "Fraktur-Regular"],
4257 // a-z bold Fraktur
4258 ["mathsf", "textsf", "SansSerif-Regular"],
4259 // A-Z sans-serif
4260 ["mathsf", "textsf", "SansSerif-Regular"],
4261 // a-z sans-serif
4262 ["mathboldsf", "textboldsf", "SansSerif-Bold"],
4263 // A-Z bold sans-serif
4264 ["mathboldsf", "textboldsf", "SansSerif-Bold"],
4265 // a-z bold sans-serif
4266 ["mathitsf", "textitsf", "SansSerif-Italic"],
4267 // A-Z italic sans-serif
4268 ["mathitsf", "textitsf", "SansSerif-Italic"],
4269 // a-z italic sans-serif
4270 ["", "", ""],
4271 // A-Z bold italic sans. No font
4272 ["", "", ""],
4273 // a-z bold italic sans. No font
4274 ["mathtt", "texttt", "Typewriter-Regular"],
4275 // A-Z monospace
4276 ["mathtt", "texttt", "Typewriter-Regular"]
4277 // a-z monospace
4278], Yt = [
4279 ["mathbf", "textbf", "Main-Bold"],
4280 // 0-9 bold
4281 ["", "", ""],
4282 // 0-9 double-struck. No KaTeX font.
4283 ["mathsf", "textsf", "SansSerif-Regular"],
4284 // 0-9 sans-serif
4285 ["mathboldsf", "textboldsf", "SansSerif-Bold"],
4286 // 0-9 bold sans-serif
4287 ["mathtt", "texttt", "Typewriter-Regular"]
4288 // 0-9 monospace
4289], Ka = function(e, t) {
4290 var a = e.charCodeAt(0), n = e.charCodeAt(1), s = (a - 55296) * 1024 + (n - 56320) + 65536, o = t === "math" ? 0 : 1;
4291 if (119808 <= s && s < 120484) {
4292 var h = Math.floor((s - 119808) / 26);
4293 return [xe[h][2], xe[h][o]];
4294 } else if (120782 <= s && s <= 120831) {
4295 var c = Math.floor((s - 120782) / 10);
4296 return [Yt[c][2], Yt[c][o]];
4297 } else {
4298 if (s === 120485 || s === 120486)
4299 return [xe[0][2], xe[0][o]];
4300 if (120486 < s && s < 120782)
4301 return ["", ""];
4302 throw new M("Unsupported character: " + e);
4303 }
4304}, Ee = function(e, t, a) {
4305 return $[a][e] && $[a][e].replace && (e = $[a][e].replace), {
4306 value: e,
4307 metrics: ft(e, t, a)
4308 };
4309}, g0 = function(e, t, a, n, s) {
4310 var o = Ee(e, t, a), h = o.metrics;
4311 e = o.value;
4312 var c;
4313 if (h) {
4314 var p = h.italic;
4315 (a === "text" || n && n.font === "mathit") && (p = 0), c = new f0(e, h.height, h.depth, p, h.skew, h.width, s);
4316 } else
4317 typeof console < "u" && console.warn("No character metrics " + ("for '" + e + "' in style '" + t + "' and mode '" + a + "'")), c = new f0(e, 0, 0, 0, 0, 0, s);
4318 if (n) {
4319 c.maxFontSize = n.sizeMultiplier, n.style.isTight() && c.classes.push("mtight");
4320 var g = n.getColor();
4321 g && (c.style.color = g);
4322 }
4323 return c;
4324}, Ja = function(e, t, a, n) {
4325 return n === void 0 && (n = []), a.font === "boldsymbol" && Ee(e, "Main-Bold", t).metrics ? g0(e, "Main-Bold", t, a, n.concat(["mathbf"])) : e === "\\" || $[t][e].font === "main" ? g0(e, "Main-Regular", t, a, n) : g0(e, "AMS-Regular", t, a, n.concat(["amsrm"]));
4326}, Qa = function(e, t, a, n, s) {
4327 return s !== "textord" && Ee(e, "Math-BoldItalic", t).metrics ? {
4328 fontName: "Math-BoldItalic",
4329 fontClass: "boldsymbol"
4330 } : {
4331 fontName: "Main-Bold",
4332 fontClass: "mathbf"
4333 };
4334}, _a = function(e, t, a) {
4335 var n = e.mode, s = e.text, o = ["mord"], h = n === "math" || n === "text" && t.font, c = h ? t.font : t.fontFamily, p = "", g = "";
4336 if (s.charCodeAt(0) === 55349 && ([p, g] = Ka(s, n)), p.length > 0)
4337 return g0(s, p, n, t, o.concat(g));
4338 if (c) {
4339 var y, w;
4340 if (c === "boldsymbol") {
4341 var x = Qa(s, n, t, o, a);
4342 y = x.fontName, w = [x.fontClass];
4343 } else
4344 h ? (y = Mr[c].fontName, w = [c]) : (y = we(c, t.fontWeight, t.fontShape), w = [c, t.fontWeight, t.fontShape]);
4345 if (Ee(s, y, n).metrics)
4346 return g0(s, y, n, t, o.concat(w));
4347 if (wr.hasOwnProperty(s) && y.slice(0, 10) === "Typewriter") {
4348 for (var z = [], T = 0; T < s.length; T++)
4349 z.push(g0(s[T], y, n, t, o.concat(w)));
4350 return Sr(z);
4351 }
4352 }
4353 if (a === "mathord")
4354 return g0(s, "Math-Italic", n, t, o.concat(["mathnormal"]));
4355 if (a === "textord") {
4356 var C = $[n][s] && $[n][s].font;
4357 if (C === "ams") {
4358 var N = we("amsrm", t.fontWeight, t.fontShape);
4359 return g0(s, N, n, t, o.concat("amsrm", t.fontWeight, t.fontShape));
4360 } else if (C === "main" || !C) {
4361 var O = we("textrm", t.fontWeight, t.fontShape);
4362 return g0(s, O, n, t, o.concat(t.fontWeight, t.fontShape));
4363 } else {
4364 var H = we(C, t.fontWeight, t.fontShape);
4365 return g0(s, H, n, t, o.concat(H, t.fontWeight, t.fontShape));
4366 }
4367 } else
4368 throw new Error("unexpected type: " + a + " in makeOrd");
4369}, e1 = (r, e) => {
4370 if (L0(r.classes) !== L0(e.classes) || r.skew !== e.skew || r.maxFontSize !== e.maxFontSize)
4371 return !1;
4372 if (r.classes.length === 1) {
4373 var t = r.classes[0];
4374 if (t === "mbin" || t === "mord")
4375 return !1;
4376 }
4377 for (var a in r.style)
4378 if (r.style.hasOwnProperty(a) && r.style[a] !== e.style[a])
4379 return !1;
4380 for (var n in e.style)
4381 if (e.style.hasOwnProperty(n) && r.style[n] !== e.style[n])
4382 return !1;
4383 return !0;
4384}, t1 = (r) => {
4385 for (var e = 0; e < r.length - 1; e++) {
4386 var t = r[e], a = r[e + 1];
4387 t instanceof f0 && a instanceof f0 && e1(t, a) && (t.text += a.text, t.height = Math.max(t.height, a.height), t.depth = Math.max(t.depth, a.depth), t.italic = a.italic, r.splice(e + 1, 1), e--);
4388 }
4389 return r;
4390}, vt = function(e) {
4391 for (var t = 0, a = 0, n = 0, s = 0; s < e.children.length; s++) {
4392 var o = e.children[s];
4393 o.height > t && (t = o.height), o.depth > a && (a = o.depth), o.maxFontSize > n && (n = o.maxFontSize);
4394 }
4395 e.height = t, e.depth = a, e.maxFontSize = n;
4396}, l0 = function(e, t, a, n) {
4397 var s = new me(e, t, a, n);
4398 return vt(s), s;
4399}, kr = (r, e, t, a) => new me(r, e, t, a), r1 = function(e, t, a) {
4400 var n = l0([e], [], t);
4401 return n.height = Math.max(a || t.fontMetrics().defaultRuleThickness, t.minRuleThickness), n.style.borderBottomWidth = A(n.height), n.maxFontSize = 1, n;
4402}, a1 = function(e, t, a, n) {
4403 var s = new pt(e, t, a, n);
4404 return vt(s), s;
4405}, Sr = function(e) {
4406 var t = new he(e);
4407 return vt(t), t;
4408}, n1 = function(e, t) {
4409 return e instanceof he ? l0([], [e], t) : e;
4410}, i1 = function(e) {
4411 if (e.positionType === "individualShift") {
4412 for (var t = e.children, a = [t[0]], n = -t[0].shift - t[0].elem.depth, s = n, o = 1; o < t.length; o++) {
4413 var h = -t[o].shift - s - t[o].elem.depth, c = h - (t[o - 1].elem.height + t[o - 1].elem.depth);
4414 s = s + h, a.push({
4415 type: "kern",
4416 size: c
4417 }), a.push(t[o]);
4418 }
4419 return {
4420 children: a,
4421 depth: n
4422 };
4423 }
4424 var p;
4425 if (e.positionType === "top") {
4426 for (var g = e.positionData, y = 0; y < e.children.length; y++) {
4427 var w = e.children[y];
4428 g -= w.type === "kern" ? w.size : w.elem.height + w.elem.depth;
4429 }
4430 p = g;
4431 } else if (e.positionType === "bottom")
4432 p = -e.positionData;
4433 else {
4434 var x = e.children[0];
4435 if (x.type !== "elem")
4436 throw new Error('First child must have type "elem".');
4437 if (e.positionType === "shift")
4438 p = -x.elem.depth - e.positionData;
4439 else if (e.positionType === "firstBaseline")
4440 p = -x.elem.depth;
4441 else
4442 throw new Error("Invalid positionType " + e.positionType + ".");
4443 }
4444 return {
4445 children: e.children,
4446 depth: p
4447 };
4448}, s1 = function(e, t) {
4449 for (var {
4450 children: a,
4451 depth: n
4452 } = i1(e), s = 0, o = 0; o < a.length; o++) {
4453 var h = a[o];
4454 if (h.type === "elem") {
4455 var c = h.elem;
4456 s = Math.max(s, c.maxFontSize, c.height);
4457 }
4458 }
4459 s += 2;
4460 var p = l0(["pstrut"], []);
4461 p.style.height = A(s);
4462 for (var g = [], y = n, w = n, x = n, z = 0; z < a.length; z++) {
4463 var T = a[z];
4464 if (T.type === "kern")
4465 x += T.size;
4466 else {
4467 var C = T.elem, N = T.wrapperClasses || [], O = T.wrapperStyle || {}, H = l0(N, [p, C], void 0, O);
4468 H.style.top = A(-s - x - C.depth), T.marginLeft && (H.style.marginLeft = T.marginLeft), T.marginRight && (H.style.marginRight = T.marginRight), g.push(H), x += C.height + C.depth;
4469 }
4470 y = Math.min(y, x), w = Math.max(w, x);
4471 }
4472 var V = l0(["vlist"], g);
4473 V.style.height = A(w);
4474 var L;
4475 if (y < 0) {
4476 var U = l0([], []), G = l0(["vlist"], [U]);
4477 G.style.height = A(-y);
4478 var j = l0(["vlist-s"], [new f0("​")]);
4479 L = [l0(["vlist-r"], [V, j]), l0(["vlist-r"], [G])];
4480 } else
4481 L = [l0(["vlist-r"], [V])];
4482 var Y = l0(["vlist-t"], L);
4483 return L.length === 2 && Y.classes.push("vlist-t2"), Y.height = w, Y.depth = -y, Y;
4484}, l1 = (r, e) => {
4485 var t = l0(["mspace"], [], e), a = K(r, e);
4486 return t.style.marginRight = A(a), t;
4487}, we = function(e, t, a) {
4488 var n = "";
4489 switch (e) {
4490 case "amsrm":
4491 n = "AMS";
4492 break;
4493 case "textrm":
4494 n = "Main";
4495 break;
4496 case "textsf":
4497 n = "SansSerif";
4498 break;
4499 case "texttt":
4500 n = "Typewriter";
4501 break;
4502 default:
4503 n = e;
4504 }
4505 var s;
4506 return t === "textbf" && a === "textit" ? s = "BoldItalic" : t === "textbf" ? s = "Bold" : t === "textit" ? s = "Italic" : s = "Regular", n + "-" + s;
4507}, Mr = {
4508 // styles
4509 mathbf: {
4510 variant: "bold",
4511 fontName: "Main-Bold"
4512 },
4513 mathrm: {
4514 variant: "normal",
4515 fontName: "Main-Regular"
4516 },
4517 textit: {
4518 variant: "italic",
4519 fontName: "Main-Italic"
4520 },
4521 mathit: {
4522 variant: "italic",
4523 fontName: "Main-Italic"
4524 },
4525 mathnormal: {
4526 variant: "italic",
4527 fontName: "Math-Italic"
4528 },
4529 // "boldsymbol" is missing because they require the use of multiple fonts:
4530 // Math-BoldItalic and Main-Bold. This is handled by a special case in
4531 // makeOrd which ends up calling boldsymbol.
4532 // families
4533 mathbb: {
4534 variant: "double-struck",
4535 fontName: "AMS-Regular"
4536 },
4537 mathcal: {
4538 variant: "script",
4539 fontName: "Caligraphic-Regular"
4540 },
4541 mathfrak: {
4542 variant: "fraktur",
4543 fontName: "Fraktur-Regular"
4544 },
4545 mathscr: {
4546 variant: "script",
4547 fontName: "Script-Regular"
4548 },
4549 mathsf: {
4550 variant: "sans-serif",
4551 fontName: "SansSerif-Regular"
4552 },
4553 mathtt: {
4554 variant: "monospace",
4555 fontName: "Typewriter-Regular"
4556 }
4557}, zr = {
4558 // path, width, height
4559 vec: ["vec", 0.471, 0.714],
4560 // values from the font glyph
4561 oiintSize1: ["oiintSize1", 0.957, 0.499],
4562 // oval to overlay the integrand
4563 oiintSize2: ["oiintSize2", 1.472, 0.659],
4564 oiiintSize1: ["oiiintSize1", 1.304, 0.499],
4565 oiiintSize2: ["oiiintSize2", 1.98, 0.659]
4566}, o1 = function(e, t) {
4567 var [a, n, s] = zr[e], o = new P0(a), h = new D0([o], {
4568 width: A(n),
4569 height: A(s),
4570 // Override CSS rule `.katex svg { width: 100% }`
4571 style: "width:" + A(n),
4572 viewBox: "0 0 " + 1e3 * n + " " + 1e3 * s,
4573 preserveAspectRatio: "xMinYMin"
4574 }), c = kr(["overlay"], [h], t);
4575 return c.height = s, c.style.height = A(s), c.style.width = A(n), c;
4576}, b = {
4577 fontMap: Mr,
4578 makeSymbol: g0,
4579 mathsym: Ja,
4580 makeSpan: l0,
4581 makeSvgSpan: kr,
4582 makeLineSpan: r1,
4583 makeAnchor: a1,
4584 makeFragment: Sr,
4585 wrapFragment: n1,
4586 makeVList: s1,
4587 makeOrd: _a,
4588 makeGlue: l1,
4589 staticSvg: o1,
4590 svgData: zr,
4591 tryCombineChars: t1
4592}, Z = {
4593 number: 3,
4594 unit: "mu"
4595}, X0 = {
4596 number: 4,
4597 unit: "mu"
4598}, z0 = {
4599 number: 5,
4600 unit: "mu"
4601}, u1 = {
4602 mord: {
4603 mop: Z,
4604 mbin: X0,
4605 mrel: z0,
4606 minner: Z
4607 },
4608 mop: {
4609 mord: Z,
4610 mop: Z,
4611 mrel: z0,
4612 minner: Z
4613 },
4614 mbin: {
4615 mord: X0,
4616 mop: X0,
4617 mopen: X0,
4618 minner: X0
4619 },
4620 mrel: {
4621 mord: z0,
4622 mop: z0,
4623 mopen: z0,
4624 minner: z0
4625 },
4626 mopen: {},
4627 mclose: {
4628 mop: Z,
4629 mbin: X0,
4630 mrel: z0,
4631 minner: Z
4632 },
4633 mpunct: {
4634 mord: Z,
4635 mop: Z,
4636 mrel: z0,
4637 mopen: Z,
4638 mclose: Z,
4639 mpunct: Z,
4640 minner: Z
4641 },
4642 minner: {
4643 mord: Z,
4644 mop: Z,
4645 mbin: X0,
4646 mrel: z0,
4647 mopen: Z,
4648 mpunct: Z,
4649 minner: Z
4650 }
4651}, h1 = {
4652 mord: {
4653 mop: Z
4654 },
4655 mop: {
4656 mord: Z,
4657 mop: Z
4658 },
4659 mbin: {},
4660 mrel: {},
4661 mopen: {},
4662 mclose: {
4663 mop: Z
4664 },
4665 mpunct: {},
4666 minner: {
4667 mop: Z
4668 }
4669}, Ar = {}, Ce = {}, Ne = {};
4670function B(r) {
4671 for (var {
4672 type: e,
4673 names: t,
4674 props: a,
4675 handler: n,
4676 htmlBuilder: s,
4677 mathmlBuilder: o
4678 } = r, h = {
4679 type: e,
4680 numArgs: a.numArgs,
4681 argTypes: a.argTypes,
4682 allowedInArgument: !!a.allowedInArgument,
4683 allowedInText: !!a.allowedInText,
4684 allowedInMath: a.allowedInMath === void 0 ? !0 : a.allowedInMath,
4685 numOptionalArgs: a.numOptionalArgs || 0,
4686 infix: !!a.infix,
4687 primitive: !!a.primitive,
4688 handler: n
4689 }, c = 0; c < t.length; ++c)
4690 Ar[t[c]] = h;
4691 e && (s && (Ce[e] = s), o && (Ne[e] = o));
4692}
4693function $0(r) {
4694 var {
4695 type: e,
4696 htmlBuilder: t,
4697 mathmlBuilder: a
4698 } = r;
4699 B({
4700 type: e,
4701 names: [],
4702 props: {
4703 numArgs: 0
4704 },
4705 handler() {
4706 throw new Error("Should never be called.");
4707 },
4708 htmlBuilder: t,
4709 mathmlBuilder: a
4710 });
4711}
4712var qe = function(e) {
4713 return e.type === "ordgroup" && e.body.length === 1 ? e.body[0] : e;
4714}, Q = function(e) {
4715 return e.type === "ordgroup" ? e.body : [e];
4716}, C0 = b.makeSpan, m1 = ["leftmost", "mbin", "mopen", "mrel", "mop", "mpunct"], c1 = ["rightmost", "mrel", "mclose", "mpunct"], d1 = {
4717 display: R.DISPLAY,
4718 text: R.TEXT,
4719 script: R.SCRIPT,
4720 scriptscript: R.SCRIPTSCRIPT
4721}, f1 = {
4722 mord: "mord",
4723 mop: "mop",
4724 mbin: "mbin",
4725 mrel: "mrel",
4726 mopen: "mopen",
4727 mclose: "mclose",
4728 mpunct: "mpunct",
4729 minner: "minner"
4730}, t0 = function(e, t, a, n) {
4731 n === void 0 && (n = [null, null]);
4732 for (var s = [], o = 0; o < e.length; o++) {
4733 var h = P(e[o], t);
4734 if (h instanceof he) {
4735 var c = h.children;
4736 s.push(...c);
4737 } else
4738 s.push(h);
4739 }
4740 if (b.tryCombineChars(s), !a)
4741 return s;
4742 var p = t;
4743 if (e.length === 1) {
4744 var g = e[0];
4745 g.type === "sizing" ? p = t.havingSize(g.size) : g.type === "styling" && (p = t.havingStyle(d1[g.style]));
4746 }
4747 var y = C0([n[0] || "leftmost"], [], t), w = C0([n[1] || "rightmost"], [], t), x = a === "root";
4748 return Xt(s, (z, T) => {
4749 var C = T.classes[0], N = z.classes[0];
4750 C === "mbin" && I.contains(c1, N) ? T.classes[0] = "mord" : N === "mbin" && I.contains(m1, C) && (z.classes[0] = "mord");
4751 }, {
4752 node: y
4753 }, w, x), Xt(s, (z, T) => {
4754 var C = lt(T), N = lt(z), O = C && N ? z.hasClass("mtight") ? h1[C][N] : u1[C][N] : null;
4755 if (O)
4756 return b.makeGlue(O, p);
4757 }, {
4758 node: y
4759 }, w, x), s;
4760}, Xt = function r(e, t, a, n, s) {
4761 n && e.push(n);
4762 for (var o = 0; o < e.length; o++) {
4763 var h = e[o], c = Tr(h);
4764 if (c) {
4765 r(c.children, t, a, null, s);
4766 continue;
4767 }
4768 var p = !h.hasClass("mspace");
4769 if (p) {
4770 var g = t(h, a.node);
4771 g && (a.insertAfter ? a.insertAfter(g) : (e.unshift(g), o++));
4772 }
4773 p ? a.node = h : s && h.hasClass("newline") && (a.node = C0(["leftmost"])), a.insertAfter = ((y) => (w) => {
4774 e.splice(y + 1, 0, w), o++;
4775 })(o);
4776 }
4777 n && e.pop();
4778}, Tr = function(e) {
4779 return e instanceof he || e instanceof pt || e instanceof me && e.hasClass("enclosing") ? e : null;
4780}, p1 = function r(e, t) {
4781 var a = Tr(e);
4782 if (a) {
4783 var n = a.children;
4784 if (n.length) {
4785 if (t === "right")
4786 return r(n[n.length - 1], "right");
4787 if (t === "left")
4788 return r(n[0], "left");
4789 }
4790 }
4791 return e;
4792}, lt = function(e, t) {
4793 return e ? (t && (e = p1(e, t)), f1[e.classes[0]] || null) : null;
4794}, oe = function(e, t) {
4795 var a = ["nulldelimiter"].concat(e.baseSizingClasses());
4796 return C0(t.concat(a));
4797}, P = function(e, t, a) {
4798 if (!e)
4799 return C0();
4800 if (Ce[e.type]) {
4801 var n = Ce[e.type](e, t);
4802 if (a && t.size !== a.size) {
4803 n = C0(t.sizingClasses(a), [n], t);
4804 var s = t.sizeMultiplier / a.sizeMultiplier;
4805 n.height *= s, n.depth *= s;
4806 }
4807 return n;
4808 } else
4809 throw new M("Got group of unknown type: '" + e.type + "'");
4810};
4811function ke(r, e) {
4812 var t = C0(["base"], r, e), a = C0(["strut"]);
4813 return a.style.height = A(t.height + t.depth), t.depth && (a.style.verticalAlign = A(-t.depth)), t.children.unshift(a), t;
4814}
4815function ot(r, e) {
4816 var t = null;
4817 r.length === 1 && r[0].type === "tag" && (t = r[0].tag, r = r[0].body);
4818 var a = t0(r, e, "root"), n;
4819 a.length === 2 && a[1].hasClass("tag") && (n = a.pop());
4820 for (var s = [], o = [], h = 0; h < a.length; h++)
4821 if (o.push(a[h]), a[h].hasClass("mbin") || a[h].hasClass("mrel") || a[h].hasClass("allowbreak")) {
4822 for (var c = !1; h < a.length - 1 && a[h + 1].hasClass("mspace") && !a[h + 1].hasClass("newline"); )
4823 h++, o.push(a[h]), a[h].hasClass("nobreak") && (c = !0);
4824 c || (s.push(ke(o, e)), o = []);
4825 } else
4826 a[h].hasClass("newline") && (o.pop(), o.length > 0 && (s.push(ke(o, e)), o = []), s.push(a[h]));
4827 o.length > 0 && s.push(ke(o, e));
4828 var p;
4829 t ? (p = ke(t0(t, e, !0)), p.classes = ["tag"], s.push(p)) : n && s.push(n);
4830 var g = C0(["katex-html"], s);
4831 if (g.setAttribute("aria-hidden", "true"), p) {
4832 var y = p.children[0];
4833 y.style.height = A(g.height + g.depth), g.depth && (y.style.verticalAlign = A(-g.depth));
4834 }
4835 return g;
4836}
4837function Br(r) {
4838 return new he(r);
4839}
4840class c0 {
4841 constructor(e, t, a) {
4842 this.type = void 0, this.attributes = void 0, this.children = void 0, this.classes = void 0, this.type = e, this.attributes = {}, this.children = t || [], this.classes = a || [];
4843 }
4844 /**
4845 * Sets an attribute on a MathML node. MathML depends on attributes to convey a
4846 * semantic content, so this is used heavily.
4847 */
4848 setAttribute(e, t) {
4849 this.attributes[e] = t;
4850 }
4851 /**
4852 * Gets an attribute on a MathML node.
4853 */
4854 getAttribute(e) {
4855 return this.attributes[e];
4856 }
4857 /**
4858 * Converts the math node into a MathML-namespaced DOM element.
4859 */
4860 toNode() {
4861 var e = document.createElementNS("http://www.w3.org/1998/Math/MathML", this.type);
4862 for (var t in this.attributes)
4863 Object.prototype.hasOwnProperty.call(this.attributes, t) && e.setAttribute(t, this.attributes[t]);
4864 this.classes.length > 0 && (e.className = L0(this.classes));
4865 for (var a = 0; a < this.children.length; a++)
4866 e.appendChild(this.children[a].toNode());
4867 return e;
4868 }
4869 /**
4870 * Converts the math node into an HTML markup string.
4871 */
4872 toMarkup() {
4873 var e = "<" + this.type;
4874 for (var t in this.attributes)
4875 Object.prototype.hasOwnProperty.call(this.attributes, t) && (e += " " + t + '="', e += I.escape(this.attributes[t]), e += '"');
4876 this.classes.length > 0 && (e += ' class ="' + I.escape(L0(this.classes)) + '"'), e += ">";
4877 for (var a = 0; a < this.children.length; a++)
4878 e += this.children[a].toMarkup();
4879 return e += "</" + this.type + ">", e;
4880 }
4881 /**
4882 * Converts the math node into a string, similar to innerText, but escaped.
4883 */
4884 toText() {
4885 return this.children.map((e) => e.toText()).join("");
4886 }
4887}
4888class ie {
4889 constructor(e) {
4890 this.text = void 0, this.text = e;
4891 }
4892 /**
4893 * Converts the text node into a DOM text node.
4894 */
4895 toNode() {
4896 return document.createTextNode(this.text);
4897 }
4898 /**
4899 * Converts the text node into escaped HTML markup
4900 * (representing the text itself).
4901 */
4902 toMarkup() {
4903 return I.escape(this.toText());
4904 }
4905 /**
4906 * Converts the text node into a string
4907 * (representing the text itself).
4908 */
4909 toText() {
4910 return this.text;
4911 }
4912}
4913class v1 {
4914 /**
4915 * Create a Space node with width given in CSS ems.
4916 */
4917 constructor(e) {
4918 this.width = void 0, this.character = void 0, this.width = e, e >= 0.05555 && e <= 0.05556 ? this.character = " " : e >= 0.1666 && e <= 0.1667 ? this.character = " " : e >= 0.2222 && e <= 0.2223 ? this.character = " " : e >= 0.2777 && e <= 0.2778 ? this.character = "  " : e >= -0.05556 && e <= -0.05555 ? this.character = " ⁣" : e >= -0.1667 && e <= -0.1666 ? this.character = " ⁣" : e >= -0.2223 && e <= -0.2222 ? this.character = " ⁣" : e >= -0.2778 && e <= -0.2777 ? this.character = " ⁣" : this.character = null;
4919 }
4920 /**
4921 * Converts the math node into a MathML-namespaced DOM element.
4922 */
4923 toNode() {
4924 if (this.character)
4925 return document.createTextNode(this.character);
4926 var e = document.createElementNS("http://www.w3.org/1998/Math/MathML", "mspace");
4927 return e.setAttribute("width", A(this.width)), e;
4928 }
4929 /**
4930 * Converts the math node into an HTML markup string.
4931 */
4932 toMarkup() {
4933 return this.character ? "<mtext>" + this.character + "</mtext>" : '<mspace width="' + A(this.width) + '"/>';
4934 }
4935 /**
4936 * Converts the math node into a string, similar to innerText.
4937 */
4938 toText() {
4939 return this.character ? this.character : " ";
4940 }
4941}
4942var S = {
4943 MathNode: c0,
4944 TextNode: ie,
4945 SpaceNode: v1,
4946 newDocumentFragment: Br
4947}, p0 = function(e, t, a) {
4948 return $[t][e] && $[t][e].replace && e.charCodeAt(0) !== 55349 && !(wr.hasOwnProperty(e) && a && (a.fontFamily && a.fontFamily.slice(4, 6) === "tt" || a.font && a.font.slice(4, 6) === "tt")) && (e = $[t][e].replace), new S.TextNode(e);
4949}, gt = function(e) {
4950 return e.length === 1 ? e[0] : new S.MathNode("mrow", e);
4951}, bt = function(e, t) {
4952 if (t.fontFamily === "texttt")
4953 return "monospace";
4954 if (t.fontFamily === "textsf")
4955 return t.fontShape === "textit" && t.fontWeight === "textbf" ? "sans-serif-bold-italic" : t.fontShape === "textit" ? "sans-serif-italic" : t.fontWeight === "textbf" ? "bold-sans-serif" : "sans-serif";
4956 if (t.fontShape === "textit" && t.fontWeight === "textbf")
4957 return "bold-italic";
4958 if (t.fontShape === "textit")
4959 return "italic";
4960 if (t.fontWeight === "textbf")
4961 return "bold";
4962 var a = t.font;
4963 if (!a || a === "mathnormal")
4964 return null;
4965 var n = e.mode;
4966 if (a === "mathit")
4967 return "italic";
4968 if (a === "boldsymbol")
4969 return e.type === "textord" ? "bold" : "bold-italic";
4970 if (a === "mathbf")
4971 return "bold";
4972 if (a === "mathbb")
4973 return "double-struck";
4974 if (a === "mathfrak")
4975 return "fraktur";
4976 if (a === "mathscr" || a === "mathcal")
4977 return "script";
4978 if (a === "mathsf")
4979 return "sans-serif";
4980 if (a === "mathtt")
4981 return "monospace";
4982 var s = e.text;
4983 if (I.contains(["\\imath", "\\jmath"], s))
4984 return null;
4985 $[n][s] && $[n][s].replace && (s = $[n][s].replace);
4986 var o = b.fontMap[a].fontName;
4987 return ft(s, o, n) ? b.fontMap[a].variant : null;
4988}, o0 = function(e, t, a) {
4989 if (e.length === 1) {
4990 var n = X(e[0], t);
4991 return a && n instanceof c0 && n.type === "mo" && (n.setAttribute("lspace", "0em"), n.setAttribute("rspace", "0em")), [n];
4992 }
4993 for (var s = [], o, h = 0; h < e.length; h++) {
4994 var c = X(e[h], t);
4995 if (c instanceof c0 && o instanceof c0) {
4996 if (c.type === "mtext" && o.type === "mtext" && c.getAttribute("mathvariant") === o.getAttribute("mathvariant")) {
4997 o.children.push(...c.children);
4998 continue;
4999 } else if (c.type === "mn" && o.type === "mn") {
5000 o.children.push(...c.children);
5001 continue;
5002 } else if (c.type === "mi" && c.children.length === 1 && o.type === "mn") {
5003 var p = c.children[0];
5004 if (p instanceof ie && p.text === ".") {
5005 o.children.push(...c.children);
5006 continue;
5007 }
5008 } else if (o.type === "mi" && o.children.length === 1) {
5009 var g = o.children[0];
5010 if (g instanceof ie && g.text === "̸" && (c.type === "mo" || c.type === "mi" || c.type === "mn")) {
5011 var y = c.children[0];
5012 y instanceof ie && y.text.length > 0 && (y.text = y.text.slice(0, 1) + "̸" + y.text.slice(1), s.pop());
5013 }
5014 }
5015 }
5016 s.push(c), o = c;
5017 }
5018 return s;
5019}, G0 = function(e, t, a) {
5020 return gt(o0(e, t, a));
5021}, X = function(e, t) {
5022 if (!e)
5023 return new S.MathNode("mrow");
5024 if (Ne[e.type]) {
5025 var a = Ne[e.type](e, t);
5026 return a;
5027 } else
5028 throw new M("Got group of unknown type: '" + e.type + "'");
5029};
5030function $t(r, e, t, a, n) {
5031 var s = o0(r, t), o;
5032 s.length === 1 && s[0] instanceof c0 && I.contains(["mrow", "mtable"], s[0].type) ? o = s[0] : o = new S.MathNode("mrow", s);
5033 var h = new S.MathNode("annotation", [new S.TextNode(e)]);
5034 h.setAttribute("encoding", "application/x-tex");
5035 var c = new S.MathNode("semantics", [o, h]), p = new S.MathNode("math", [c]);
5036 p.setAttribute("xmlns", "http://www.w3.org/1998/Math/MathML"), a && p.setAttribute("display", "block");
5037 var g = n ? "katex" : "katex-mathml";
5038 return b.makeSpan([g], [p]);
5039}
5040var Dr = function(e) {
5041 return new A0({
5042 style: e.displayMode ? R.DISPLAY : R.TEXT,
5043 maxSize: e.maxSize,
5044 minRuleThickness: e.minRuleThickness
5045 });
5046}, Cr = function(e, t) {
5047 if (t.displayMode) {
5048 var a = ["katex-display"];
5049 t.leqno && a.push("leqno"), t.fleqn && a.push("fleqn"), e = b.makeSpan(a, [e]);
5050 }
5051 return e;
5052}, g1 = function(e, t, a) {
5053 var n = Dr(a), s;
5054 if (a.output === "mathml")
5055 return $t(e, t, n, a.displayMode, !0);
5056 if (a.output === "html") {
5057 var o = ot(e, n);
5058 s = b.makeSpan(["katex"], [o]);
5059 } else {
5060 var h = $t(e, t, n, a.displayMode, !1), c = ot(e, n);
5061 s = b.makeSpan(["katex"], [h, c]);
5062 }
5063 return Cr(s, a);
5064}, b1 = function(e, t, a) {
5065 var n = Dr(a), s = ot(e, n), o = b.makeSpan(["katex"], [s]);
5066 return Cr(o, a);
5067}, y1 = {
5068 widehat: "^",
5069 widecheck: "ˇ",
5070 widetilde: "~",
5071 utilde: "~",
5072 overleftarrow: "←",
5073 underleftarrow: "←",
5074 xleftarrow: "←",
5075 overrightarrow: "→",
5076 underrightarrow: "→",
5077 xrightarrow: "→",
5078 underbrace: "⏟",
5079 overbrace: "⏞",
5080 overgroup: "⏠",
5081 undergroup: "⏡",
5082 overleftrightarrow: "↔",
5083 underleftrightarrow: "↔",
5084 xleftrightarrow: "↔",
5085 Overrightarrow: "⇒",
5086 xRightarrow: "⇒",
5087 overleftharpoon: "↼",
5088 xleftharpoonup: "↼",
5089 overrightharpoon: "⇀",
5090 xrightharpoonup: "⇀",
5091 xLeftarrow: "⇐",
5092 xLeftrightarrow: "⇔",
5093 xhookleftarrow: "↩",
5094 xhookrightarrow: "↪",
5095 xmapsto: "↦",
5096 xrightharpoondown: "⇁",
5097 xleftharpoondown: "↽",
5098 xrightleftharpoons: "⇌",
5099 xleftrightharpoons: "⇋",
5100 xtwoheadleftarrow: "↞",
5101 xtwoheadrightarrow: "↠",
5102 xlongequal: "=",
5103 xtofrom: "⇄",
5104 xrightleftarrows: "⇄",
5105 xrightequilibrium: "⇌",
5106 // Not a perfect match.
5107 xleftequilibrium: "⇋",
5108 // None better available.
5109 "\\cdrightarrow": "→",
5110 "\\cdleftarrow": "←",
5111 "\\cdlongequal": "="
5112}, x1 = function(e) {
5113 var t = new S.MathNode("mo", [new S.TextNode(y1[e.replace(/^\\/, "")])]);
5114 return t.setAttribute("stretchy", "true"), t;
5115}, w1 = {
5116 // path(s), minWidth, height, align
5117 overrightarrow: [["rightarrow"], 0.888, 522, "xMaxYMin"],
5118 overleftarrow: [["leftarrow"], 0.888, 522, "xMinYMin"],
5119 underrightarrow: [["rightarrow"], 0.888, 522, "xMaxYMin"],
5120 underleftarrow: [["leftarrow"], 0.888, 522, "xMinYMin"],
5121 xrightarrow: [["rightarrow"], 1.469, 522, "xMaxYMin"],
5122 "\\cdrightarrow": [["rightarrow"], 3, 522, "xMaxYMin"],
5123 // CD minwwidth2.5pc
5124 xleftarrow: [["leftarrow"], 1.469, 522, "xMinYMin"],
5125 "\\cdleftarrow": [["leftarrow"], 3, 522, "xMinYMin"],
5126 Overrightarrow: [["doublerightarrow"], 0.888, 560, "xMaxYMin"],
5127 xRightarrow: [["doublerightarrow"], 1.526, 560, "xMaxYMin"],
5128 xLeftarrow: [["doubleleftarrow"], 1.526, 560, "xMinYMin"],
5129 overleftharpoon: [["leftharpoon"], 0.888, 522, "xMinYMin"],
5130 xleftharpoonup: [["leftharpoon"], 0.888, 522, "xMinYMin"],
5131 xleftharpoondown: [["leftharpoondown"], 0.888, 522, "xMinYMin"],
5132 overrightharpoon: [["rightharpoon"], 0.888, 522, "xMaxYMin"],
5133 xrightharpoonup: [["rightharpoon"], 0.888, 522, "xMaxYMin"],
5134 xrightharpoondown: [["rightharpoondown"], 0.888, 522, "xMaxYMin"],
5135 xlongequal: [["longequal"], 0.888, 334, "xMinYMin"],
5136 "\\cdlongequal": [["longequal"], 3, 334, "xMinYMin"],
5137 xtwoheadleftarrow: [["twoheadleftarrow"], 0.888, 334, "xMinYMin"],
5138 xtwoheadrightarrow: [["twoheadrightarrow"], 0.888, 334, "xMaxYMin"],
5139 overleftrightarrow: [["leftarrow", "rightarrow"], 0.888, 522],
5140 overbrace: [["leftbrace", "midbrace", "rightbrace"], 1.6, 548],
5141 underbrace: [["leftbraceunder", "midbraceunder", "rightbraceunder"], 1.6, 548],
5142 underleftrightarrow: [["leftarrow", "rightarrow"], 0.888, 522],
5143 xleftrightarrow: [["leftarrow", "rightarrow"], 1.75, 522],
5144 xLeftrightarrow: [["doubleleftarrow", "doublerightarrow"], 1.75, 560],
5145 xrightleftharpoons: [["leftharpoondownplus", "rightharpoonplus"], 1.75, 716],
5146 xleftrightharpoons: [["leftharpoonplus", "rightharpoondownplus"], 1.75, 716],
5147 xhookleftarrow: [["leftarrow", "righthook"], 1.08, 522],
5148 xhookrightarrow: [["lefthook", "rightarrow"], 1.08, 522],
5149 overlinesegment: [["leftlinesegment", "rightlinesegment"], 0.888, 522],
5150 underlinesegment: [["leftlinesegment", "rightlinesegment"], 0.888, 522],
5151 overgroup: [["leftgroup", "rightgroup"], 0.888, 342],
5152 undergroup: [["leftgroupunder", "rightgroupunder"], 0.888, 342],
5153 xmapsto: [["leftmapsto", "rightarrow"], 1.5, 522],
5154 xtofrom: [["leftToFrom", "rightToFrom"], 1.75, 528],
5155 // The next three arrows are from the mhchem package.
5156 // In mhchem.sty, min-length is 2.0em. But these arrows might appear in the
5157 // document as \xrightarrow or \xrightleftharpoons. Those have
5158 // min-length = 1.75em, so we set min-length on these next three to match.
5159 xrightleftarrows: [["baraboveleftarrow", "rightarrowabovebar"], 1.75, 901],
5160 xrightequilibrium: [["baraboveshortleftharpoon", "rightharpoonaboveshortbar"], 1.75, 716],
5161 xleftequilibrium: [["shortbaraboveleftharpoon", "shortrightharpoonabovebar"], 1.75, 716]
5162}, k1 = function(e) {
5163 return e.type === "ordgroup" ? e.body.length : 1;
5164}, S1 = function(e, t) {
5165 function a() {
5166 var h = 4e5, c = e.label.slice(1);
5167 if (I.contains(["widehat", "widecheck", "widetilde", "utilde"], c)) {
5168 var p = e, g = k1(p.base), y, w, x;
5169 if (g > 5)
5170 c === "widehat" || c === "widecheck" ? (y = 420, h = 2364, x = 0.42, w = c + "4") : (y = 312, h = 2340, x = 0.34, w = "tilde4");
5171 else {
5172 var z = [1, 1, 2, 2, 3, 3][g];
5173 c === "widehat" || c === "widecheck" ? (h = [0, 1062, 2364, 2364, 2364][z], y = [0, 239, 300, 360, 420][z], x = [0, 0.24, 0.3, 0.3, 0.36, 0.42][z], w = c + z) : (h = [0, 600, 1033, 2339, 2340][z], y = [0, 260, 286, 306, 312][z], x = [0, 0.26, 0.286, 0.3, 0.306, 0.34][z], w = "tilde" + z);
5174 }
5175 var T = new P0(w), C = new D0([T], {
5176 width: "100%",
5177 height: A(x),
5178 viewBox: "0 0 " + h + " " + y,
5179 preserveAspectRatio: "none"
5180 });
5181 return {
5182 span: b.makeSvgSpan([], [C], t),
5183 minWidth: 0,
5184 height: x
5185 };
5186 } else {
5187 var N = [], O = w1[c], [H, V, L] = O, U = L / 1e3, G = H.length, j, Y;
5188 if (G === 1) {
5189 var M0 = O[3];
5190 j = ["hide-tail"], Y = [M0];
5191 } else if (G === 2)
5192 j = ["halfarrow-left", "halfarrow-right"], Y = ["xMinYMin", "xMaxYMin"];
5193 else if (G === 3)
5194 j = ["brace-left", "brace-center", "brace-right"], Y = ["xMinYMin", "xMidYMin", "xMaxYMin"];
5195 else
5196 throw new Error(`Correct katexImagesData or update code here to support
5197 ` + G + " children.");
5198 for (var r0 = 0; r0 < G; r0++) {
5199 var e0 = new P0(H[r0]), U0 = new D0([e0], {
5200 width: "400em",
5201 height: A(U),
5202 viewBox: "0 0 " + h + " " + L,
5203 preserveAspectRatio: Y[r0] + " slice"
5204 }), s0 = b.makeSvgSpan([j[r0]], [U0], t);
5205 if (G === 1)
5206 return {
5207 span: s0,
5208 minWidth: V,
5209 height: U
5210 };
5211 s0.style.height = A(U), N.push(s0);
5212 }
5213 return {
5214 span: b.makeSpan(["stretchy"], N, t),
5215 minWidth: V,
5216 height: U
5217 };
5218 }
5219 }
5220 var {
5221 span: n,
5222 minWidth: s,
5223 height: o
5224 } = a();
5225 return n.height = o, n.style.height = A(o), s > 0 && (n.style.minWidth = A(s)), n;
5226}, M1 = function(e, t, a, n, s) {
5227 var o, h = e.height + e.depth + a + n;
5228 if (/fbox|color|angl/.test(t)) {
5229 if (o = b.makeSpan(["stretchy", t], [], s), t === "fbox") {
5230 var c = s.color && s.getColor();
5231 c && (o.style.borderColor = c);
5232 }
5233 } else {
5234 var p = [];
5235 /^[bx]cancel$/.test(t) && p.push(new it({
5236 x1: "0",
5237 y1: "0",
5238 x2: "100%",
5239 y2: "100%",
5240 "stroke-width": "0.046em"
5241 })), /^x?cancel$/.test(t) && p.push(new it({
5242 x1: "0",
5243 y1: "100%",
5244 x2: "100%",
5245 y2: "0",
5246 "stroke-width": "0.046em"
5247 }));
5248 var g = new D0(p, {
5249 width: "100%",
5250 height: A(h)
5251 });
5252 o = b.makeSvgSpan([], [g], s);
5253 }
5254 return o.height = h, o.style.height = A(h), o;
5255}, N0 = {
5256 encloseSpan: M1,
5257 mathMLnode: x1,
5258 svgSpan: S1
5259};
5260function F(r, e) {
5261 if (!r || r.type !== e)
5262 throw new Error("Expected node of type " + e + ", but got " + (r ? "node of type " + r.type : String(r)));
5263 return r;
5264}
5265function yt(r) {
5266 var e = Ie(r);
5267 if (!e)
5268 throw new Error("Expected node of symbol group type, but got " + (r ? "node of type " + r.type : String(r)));
5269 return e;
5270}
5271function Ie(r) {
5272 return r && (r.type === "atom" || Za.hasOwnProperty(r.type)) ? r : null;
5273}
5274var xt = (r, e) => {
5275 var t, a, n;
5276 r && r.type === "supsub" ? (a = F(r.base, "accent"), t = a.base, r.base = t, n = Wa(P(r, e)), r.base = a) : (a = F(r, "accent"), t = a.base);
5277 var s = P(t, e.havingCrampedStyle()), o = a.isShifty && I.isCharacterBox(t), h = 0;
5278 if (o) {
5279 var c = I.getBaseElem(t), p = P(c, e.havingCrampedStyle());
5280 h = Lt(p).skew;
5281 }
5282 var g = a.label === "\\c", y = g ? s.height + s.depth : Math.min(s.height, e.fontMetrics().xHeight), w;
5283 if (a.isStretchy)
5284 w = N0.svgSpan(a, e), w = b.makeVList({
5285 positionType: "firstBaseline",
5286 children: [{
5287 type: "elem",
5288 elem: s
5289 }, {
5290 type: "elem",
5291 elem: w,
5292 wrapperClasses: ["svg-align"],
5293 wrapperStyle: h > 0 ? {
5294 width: "calc(100% - " + A(2 * h) + ")",
5295 marginLeft: A(2 * h)
5296 } : void 0
5297 }]
5298 }, e);
5299 else {
5300 var x, z;
5301 a.label === "\\vec" ? (x = b.staticSvg("vec", e), z = b.svgData.vec[1]) : (x = b.makeOrd({
5302 mode: a.mode,
5303 text: a.label
5304 }, e, "textord"), x = Lt(x), x.italic = 0, z = x.width, g && (y += x.depth)), w = b.makeSpan(["accent-body"], [x]);
5305 var T = a.label === "\\textcircled";
5306 T && (w.classes.push("accent-full"), y = s.height);
5307 var C = h;
5308 T || (C -= z / 2), w.style.left = A(C), a.label === "\\textcircled" && (w.style.top = ".2em"), w = b.makeVList({
5309 positionType: "firstBaseline",
5310 children: [{
5311 type: "elem",
5312 elem: s
5313 }, {
5314 type: "kern",
5315 size: -y
5316 }, {
5317 type: "elem",
5318 elem: w
5319 }]
5320 }, e);
5321 }
5322 var N = b.makeSpan(["mord", "accent"], [w], e);
5323 return n ? (n.children[0] = N, n.height = Math.max(N.height, n.height), n.classes[0] = "mord", n) : N;
5324}, Nr = (r, e) => {
5325 var t = r.isStretchy ? N0.mathMLnode(r.label) : new S.MathNode("mo", [p0(r.label, r.mode)]), a = new S.MathNode("mover", [X(r.base, e), t]);
5326 return a.setAttribute("accent", "true"), a;
5327}, z1 = new RegExp(["\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve", "\\check", "\\hat", "\\vec", "\\dot", "\\mathring"].map((r) => "\\" + r).join("|"));
5328B({
5329 type: "accent",
5330 names: ["\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve", "\\check", "\\hat", "\\vec", "\\dot", "\\mathring", "\\widecheck", "\\widehat", "\\widetilde", "\\overrightarrow", "\\overleftarrow", "\\Overrightarrow", "\\overleftrightarrow", "\\overgroup", "\\overlinesegment", "\\overleftharpoon", "\\overrightharpoon"],
5331 props: {
5332 numArgs: 1
5333 },
5334 handler: (r, e) => {
5335 var t = qe(e[0]), a = !z1.test(r.funcName), n = !a || r.funcName === "\\widehat" || r.funcName === "\\widetilde" || r.funcName === "\\widecheck";
5336 return {
5337 type: "accent",
5338 mode: r.parser.mode,
5339 label: r.funcName,
5340 isStretchy: a,
5341 isShifty: n,
5342 base: t
5343 };
5344 },
5345 htmlBuilder: xt,
5346 mathmlBuilder: Nr
5347});
5348B({
5349 type: "accent",
5350 names: ["\\'", "\\`", "\\^", "\\~", "\\=", "\\u", "\\.", '\\"', "\\c", "\\r", "\\H", "\\v", "\\textcircled"],
5351 props: {
5352 numArgs: 1,
5353 allowedInText: !0,
5354 allowedInMath: !0,
5355 // unless in strict mode
5356 argTypes: ["primitive"]
5357 },
5358 handler: (r, e) => {
5359 var t = e[0], a = r.parser.mode;
5360 return a === "math" && (r.parser.settings.reportNonstrict("mathVsTextAccents", "LaTeX's accent " + r.funcName + " works only in text mode"), a = "text"), {
5361 type: "accent",
5362 mode: a,
5363 label: r.funcName,
5364 isStretchy: !1,
5365 isShifty: !0,
5366 base: t
5367 };
5368 },
5369 htmlBuilder: xt,
5370 mathmlBuilder: Nr
5371});
5372B({
5373 type: "accentUnder",
5374 names: ["\\underleftarrow", "\\underrightarrow", "\\underleftrightarrow", "\\undergroup", "\\underlinesegment", "\\utilde"],
5375 props: {
5376 numArgs: 1
5377 },
5378 handler: (r, e) => {
5379 var {
5380 parser: t,
5381 funcName: a
5382 } = r, n = e[0];
5383 return {
5384 type: "accentUnder",
5385 mode: t.mode,
5386 label: a,
5387 base: n
5388 };
5389 },
5390 htmlBuilder: (r, e) => {
5391 var t = P(r.base, e), a = N0.svgSpan(r, e), n = r.label === "\\utilde" ? 0.12 : 0, s = b.makeVList({
5392 positionType: "top",
5393 positionData: t.height,
5394 children: [{
5395 type: "elem",
5396 elem: a,
5397 wrapperClasses: ["svg-align"]
5398 }, {
5399 type: "kern",
5400 size: n
5401 }, {
5402 type: "elem",
5403 elem: t
5404 }]
5405 }, e);
5406 return b.makeSpan(["mord", "accentunder"], [s], e);
5407 },
5408 mathmlBuilder: (r, e) => {
5409 var t = N0.mathMLnode(r.label), a = new S.MathNode("munder", [X(r.base, e), t]);
5410 return a.setAttribute("accentunder", "true"), a;
5411 }
5412});
5413var Se = (r) => {
5414 var e = new S.MathNode("mpadded", r ? [r] : []);
5415 return e.setAttribute("width", "+0.6em"), e.setAttribute("lspace", "0.3em"), e;
5416};
5417B({
5418 type: "xArrow",
5419 names: [
5420 "\\xleftarrow",
5421 "\\xrightarrow",
5422 "\\xLeftarrow",
5423 "\\xRightarrow",
5424 "\\xleftrightarrow",
5425 "\\xLeftrightarrow",
5426 "\\xhookleftarrow",
5427 "\\xhookrightarrow",
5428 "\\xmapsto",
5429 "\\xrightharpoondown",
5430 "\\xrightharpoonup",
5431 "\\xleftharpoondown",
5432 "\\xleftharpoonup",
5433 "\\xrightleftharpoons",
5434 "\\xleftrightharpoons",
5435 "\\xlongequal",
5436 "\\xtwoheadrightarrow",
5437 "\\xtwoheadleftarrow",
5438 "\\xtofrom",
5439 // The next 3 functions are here to support the mhchem extension.
5440 // Direct use of these functions is discouraged and may break someday.
5441 "\\xrightleftarrows",
5442 "\\xrightequilibrium",
5443 "\\xleftequilibrium",
5444 // The next 3 functions are here only to support the {CD} environment.
5445 "\\\\cdrightarrow",
5446 "\\\\cdleftarrow",
5447 "\\\\cdlongequal"
5448 ],
5449 props: {
5450 numArgs: 1,
5451 numOptionalArgs: 1
5452 },
5453 handler(r, e, t) {
5454 var {
5455 parser: a,
5456 funcName: n
5457 } = r;
5458 return {
5459 type: "xArrow",
5460 mode: a.mode,
5461 label: n,
5462 body: e[0],
5463 below: t[0]
5464 };
5465 },
5466 // Flow is unable to correctly infer the type of `group`, even though it's
5467 // unambiguously determined from the passed-in `type` above.
5468 htmlBuilder(r, e) {
5469 var t = e.style, a = e.havingStyle(t.sup()), n = b.wrapFragment(P(r.body, a, e), e), s = r.label.slice(0, 2) === "\\x" ? "x" : "cd";
5470 n.classes.push(s + "-arrow-pad");
5471 var o;
5472 r.below && (a = e.havingStyle(t.sub()), o = b.wrapFragment(P(r.below, a, e), e), o.classes.push(s + "-arrow-pad"));
5473 var h = N0.svgSpan(r, e), c = -e.fontMetrics().axisHeight + 0.5 * h.height, p = -e.fontMetrics().axisHeight - 0.5 * h.height - 0.111;
5474 (n.depth > 0.25 || r.label === "\\xleftequilibrium") && (p -= n.depth);
5475 var g;
5476 if (o) {
5477 var y = -e.fontMetrics().axisHeight + o.height + 0.5 * h.height + 0.111;
5478 g = b.makeVList({
5479 positionType: "individualShift",
5480 children: [{
5481 type: "elem",
5482 elem: n,
5483 shift: p
5484 }, {
5485 type: "elem",
5486 elem: h,
5487 shift: c
5488 }, {
5489 type: "elem",
5490 elem: o,
5491 shift: y
5492 }]
5493 }, e);
5494 } else
5495 g = b.makeVList({
5496 positionType: "individualShift",
5497 children: [{
5498 type: "elem",
5499 elem: n,
5500 shift: p
5501 }, {
5502 type: "elem",
5503 elem: h,
5504 shift: c
5505 }]
5506 }, e);
5507 return g.children[0].children[0].children[1].classes.push("svg-align"), b.makeSpan(["mrel", "x-arrow"], [g], e);
5508 },
5509 mathmlBuilder(r, e) {
5510 var t = N0.mathMLnode(r.label);
5511 t.setAttribute("minsize", r.label.charAt(0) === "x" ? "1.75em" : "3.0em");
5512 var a;
5513 if (r.body) {
5514 var n = Se(X(r.body, e));
5515 if (r.below) {
5516 var s = Se(X(r.below, e));
5517 a = new S.MathNode("munderover", [t, s, n]);
5518 } else
5519 a = new S.MathNode("mover", [t, n]);
5520 } else if (r.below) {
5521 var o = Se(X(r.below, e));
5522 a = new S.MathNode("munder", [t, o]);
5523 } else
5524 a = Se(), a = new S.MathNode("mover", [t, a]);
5525 return a;
5526 }
5527});
5528var A1 = b.makeSpan;
5529function qr(r, e) {
5530 var t = t0(r.body, e, !0);
5531 return A1([r.mclass], t, e);
5532}
5533function Rr(r, e) {
5534 var t, a = o0(r.body, e);
5535 return r.mclass === "minner" ? t = new S.MathNode("mpadded", a) : r.mclass === "mord" ? r.isCharacterBox ? (t = a[0], t.type = "mi") : t = new S.MathNode("mi", a) : (r.isCharacterBox ? (t = a[0], t.type = "mo") : t = new S.MathNode("mo", a), r.mclass === "mbin" ? (t.attributes.lspace = "0.22em", t.attributes.rspace = "0.22em") : r.mclass === "mpunct" ? (t.attributes.lspace = "0em", t.attributes.rspace = "0.17em") : r.mclass === "mopen" || r.mclass === "mclose" ? (t.attributes.lspace = "0em", t.attributes.rspace = "0em") : r.mclass === "minner" && (t.attributes.lspace = "0.0556em", t.attributes.width = "+0.1111em")), t;
5536}
5537B({
5538 type: "mclass",
5539 names: ["\\mathord", "\\mathbin", "\\mathrel", "\\mathopen", "\\mathclose", "\\mathpunct", "\\mathinner"],
5540 props: {
5541 numArgs: 1,
5542 primitive: !0
5543 },
5544 handler(r, e) {
5545 var {
5546 parser: t,
5547 funcName: a
5548 } = r, n = e[0];
5549 return {
5550 type: "mclass",
5551 mode: t.mode,
5552 mclass: "m" + a.slice(5),
5553 // TODO(kevinb): don't prefix with 'm'
5554 body: Q(n),
5555 isCharacterBox: I.isCharacterBox(n)
5556 };
5557 },
5558 htmlBuilder: qr,
5559 mathmlBuilder: Rr
5560});
5561var Oe = (r) => {
5562 var e = r.type === "ordgroup" && r.body.length ? r.body[0] : r;
5563 return e.type === "atom" && (e.family === "bin" || e.family === "rel") ? "m" + e.family : "mord";
5564};
5565B({
5566 type: "mclass",
5567 names: ["\\@binrel"],
5568 props: {
5569 numArgs: 2
5570 },
5571 handler(r, e) {
5572 var {
5573 parser: t
5574 } = r;
5575 return {
5576 type: "mclass",
5577 mode: t.mode,
5578 mclass: Oe(e[0]),
5579 body: Q(e[1]),
5580 isCharacterBox: I.isCharacterBox(e[1])
5581 };
5582 }
5583});
5584B({
5585 type: "mclass",
5586 names: ["\\stackrel", "\\overset", "\\underset"],
5587 props: {
5588 numArgs: 2
5589 },
5590 handler(r, e) {
5591 var {
5592 parser: t,
5593 funcName: a
5594 } = r, n = e[1], s = e[0], o;
5595 a !== "\\stackrel" ? o = Oe(n) : o = "mrel";
5596 var h = {
5597 type: "op",
5598 mode: n.mode,
5599 limits: !0,
5600 alwaysHandleSupSub: !0,
5601 parentIsSupSub: !1,
5602 symbol: !1,
5603 suppressBaseShift: a !== "\\stackrel",
5604 body: Q(n)
5605 }, c = {
5606 type: "supsub",
5607 mode: s.mode,
5608 base: h,
5609 sup: a === "\\underset" ? null : s,
5610 sub: a === "\\underset" ? s : null
5611 };
5612 return {
5613 type: "mclass",
5614 mode: t.mode,
5615 mclass: o,
5616 body: [c],
5617 isCharacterBox: I.isCharacterBox(c)
5618 };
5619 },
5620 htmlBuilder: qr,
5621 mathmlBuilder: Rr
5622});
5623B({
5624 type: "pmb",
5625 names: ["\\pmb"],
5626 props: {
5627 numArgs: 1,
5628 allowedInText: !0
5629 },
5630 handler(r, e) {
5631 var {
5632 parser: t
5633 } = r;
5634 return {
5635 type: "pmb",
5636 mode: t.mode,
5637 mclass: Oe(e[0]),
5638 body: Q(e[0])
5639 };
5640 },
5641 htmlBuilder(r, e) {
5642 var t = t0(r.body, e, !0), a = b.makeSpan([r.mclass], t, e);
5643 return a.style.textShadow = "0.02em 0.01em 0.04px", a;
5644 },
5645 mathmlBuilder(r, e) {
5646 var t = o0(r.body, e), a = new S.MathNode("mstyle", t);
5647 return a.setAttribute("style", "text-shadow: 0.02em 0.01em 0.04px"), a;
5648 }
5649});
5650var T1 = {
5651 ">": "\\\\cdrightarrow",
5652 "<": "\\\\cdleftarrow",
5653 "=": "\\\\cdlongequal",
5654 A: "\\uparrow",
5655 V: "\\downarrow",
5656 "|": "\\Vert",
5657 ".": "no arrow"
5658}, Wt = () => ({
5659 type: "styling",
5660 body: [],
5661 mode: "math",
5662 style: "display"
5663}), jt = (r) => r.type === "textord" && r.text === "@", B1 = (r, e) => (r.type === "mathord" || r.type === "atom") && r.text === e;
5664function D1(r, e, t) {
5665 var a = T1[r];
5666 switch (a) {
5667 case "\\\\cdrightarrow":
5668 case "\\\\cdleftarrow":
5669 return t.callFunction(a, [e[0]], [e[1]]);
5670 case "\\uparrow":
5671 case "\\downarrow": {
5672 var n = t.callFunction("\\\\cdleft", [e[0]], []), s = {
5673 type: "atom",
5674 text: a,
5675 mode: "math",
5676 family: "rel"
5677 }, o = t.callFunction("\\Big", [s], []), h = t.callFunction("\\\\cdright", [e[1]], []), c = {
5678 type: "ordgroup",
5679 mode: "math",
5680 body: [n, o, h]
5681 };
5682 return t.callFunction("\\\\cdparent", [c], []);
5683 }
5684 case "\\\\cdlongequal":
5685 return t.callFunction("\\\\cdlongequal", [], []);
5686 case "\\Vert": {
5687 var p = {
5688 type: "textord",
5689 text: "\\Vert",
5690 mode: "math"
5691 };
5692 return t.callFunction("\\Big", [p], []);
5693 }
5694 default:
5695 return {
5696 type: "textord",
5697 text: " ",
5698 mode: "math"
5699 };
5700 }
5701}
5702function C1(r) {
5703 var e = [];
5704 for (r.gullet.beginGroup(), r.gullet.macros.set("\\cr", "\\\\\\relax"), r.gullet.beginGroup(); ; ) {
5705 e.push(r.parseExpression(!1, "\\\\")), r.gullet.endGroup(), r.gullet.beginGroup();
5706 var t = r.fetch().text;
5707 if (t === "&" || t === "\\\\")
5708 r.consume();
5709 else if (t === "\\end") {
5710 e[e.length - 1].length === 0 && e.pop();
5711 break;
5712 } else
5713 throw new M("Expected \\\\ or \\cr or \\end", r.nextToken);
5714 }
5715 for (var a = [], n = [a], s = 0; s < e.length; s++) {
5716 for (var o = e[s], h = Wt(), c = 0; c < o.length; c++)
5717 if (!jt(o[c]))
5718 h.body.push(o[c]);
5719 else {
5720 a.push(h), c += 1;
5721 var p = yt(o[c]).text, g = new Array(2);
5722 if (g[0] = {
5723 type: "ordgroup",
5724 mode: "math",
5725 body: []
5726 }, g[1] = {
5727 type: "ordgroup",
5728 mode: "math",
5729 body: []
5730 }, !("=|.".indexOf(p) > -1))
5731 if ("<>AV".indexOf(p) > -1)
5732 for (var y = 0; y < 2; y++) {
5733 for (var w = !0, x = c + 1; x < o.length; x++) {
5734 if (B1(o[x], p)) {
5735 w = !1, c = x;
5736 break;
5737 }
5738 if (jt(o[x]))
5739 throw new M("Missing a " + p + " character to complete a CD arrow.", o[x]);
5740 g[y].body.push(o[x]);
5741 }
5742 if (w)
5743 throw new M("Missing a " + p + " character to complete a CD arrow.", o[c]);
5744 }
5745 else
5746 throw new M('Expected one of "<>AV=|." after @', o[c]);
5747 var z = D1(p, g, r), T = {
5748 type: "styling",
5749 body: [z],
5750 mode: "math",
5751 style: "display"
5752 // CD is always displaystyle.
5753 };
5754 a.push(T), h = Wt();
5755 }
5756 s % 2 === 0 ? a.push(h) : a.shift(), a = [], n.push(a);
5757 }
5758 r.gullet.endGroup(), r.gullet.endGroup();
5759 var C = new Array(n[0].length).fill({
5760 type: "align",
5761 align: "c",
5762 pregap: 0.25,
5763 // CD package sets \enskip between columns.
5764 postgap: 0.25
5765 // So pre and post each get half an \enskip, i.e. 0.25em.
5766 });
5767 return {
5768 type: "array",
5769 mode: "math",
5770 body: n,
5771 arraystretch: 1,
5772 addJot: !0,
5773 rowGaps: [null],
5774 cols: C,
5775 colSeparationType: "CD",
5776 hLinesBeforeRow: new Array(n.length + 1).fill([])
5777 };
5778}
5779B({
5780 type: "cdlabel",
5781 names: ["\\\\cdleft", "\\\\cdright"],
5782 props: {
5783 numArgs: 1
5784 },
5785 handler(r, e) {
5786 var {
5787 parser: t,
5788 funcName: a
5789 } = r;
5790 return {
5791 type: "cdlabel",
5792 mode: t.mode,
5793 side: a.slice(4),
5794 label: e[0]
5795 };
5796 },
5797 htmlBuilder(r, e) {
5798 var t = e.havingStyle(e.style.sup()), a = b.wrapFragment(P(r.label, t, e), e);
5799 return a.classes.push("cd-label-" + r.side), a.style.bottom = A(0.8 - a.depth), a.height = 0, a.depth = 0, a;
5800 },
5801 mathmlBuilder(r, e) {
5802 var t = new S.MathNode("mrow", [X(r.label, e)]);
5803 return t = new S.MathNode("mpadded", [t]), t.setAttribute("width", "0"), r.side === "left" && t.setAttribute("lspace", "-1width"), t.setAttribute("voffset", "0.7em"), t = new S.MathNode("mstyle", [t]), t.setAttribute("displaystyle", "false"), t.setAttribute("scriptlevel", "1"), t;
5804 }
5805});
5806B({
5807 type: "cdlabelparent",
5808 names: ["\\\\cdparent"],
5809 props: {
5810 numArgs: 1
5811 },
5812 handler(r, e) {
5813 var {
5814 parser: t
5815 } = r;
5816 return {
5817 type: "cdlabelparent",
5818 mode: t.mode,
5819 fragment: e[0]
5820 };
5821 },
5822 htmlBuilder(r, e) {
5823 var t = b.wrapFragment(P(r.fragment, e), e);
5824 return t.classes.push("cd-vert-arrow"), t;
5825 },
5826 mathmlBuilder(r, e) {
5827 return new S.MathNode("mrow", [X(r.fragment, e)]);
5828 }
5829});
5830B({
5831 type: "textord",
5832 names: ["\\@char"],
5833 props: {
5834 numArgs: 1,
5835 allowedInText: !0
5836 },
5837 handler(r, e) {
5838 for (var {
5839 parser: t
5840 } = r, a = F(e[0], "ordgroup"), n = a.body, s = "", o = 0; o < n.length; o++) {
5841 var h = F(n[o], "textord");
5842 s += h.text;
5843 }
5844 var c = parseInt(s), p;
5845 if (isNaN(c))
5846 throw new M("\\@char has non-numeric argument " + s);
5847 if (c < 0 || c >= 1114111)
5848 throw new M("\\@char with invalid code point " + s);
5849 return c <= 65535 ? p = String.fromCharCode(c) : (c -= 65536, p = String.fromCharCode((c >> 10) + 55296, (c & 1023) + 56320)), {
5850 type: "textord",
5851 mode: t.mode,
5852 text: p
5853 };
5854 }
5855});
5856var Er = (r, e) => {
5857 var t = t0(r.body, e.withColor(r.color), !1);
5858 return b.makeFragment(t);
5859}, Ir = (r, e) => {
5860 var t = o0(r.body, e.withColor(r.color)), a = new S.MathNode("mstyle", t);
5861 return a.setAttribute("mathcolor", r.color), a;
5862};
5863B({
5864 type: "color",
5865 names: ["\\textcolor"],
5866 props: {
5867 numArgs: 2,
5868 allowedInText: !0,
5869 argTypes: ["color", "original"]
5870 },
5871 handler(r, e) {
5872 var {
5873 parser: t
5874 } = r, a = F(e[0], "color-token").color, n = e[1];
5875 return {
5876 type: "color",
5877 mode: t.mode,
5878 color: a,
5879 body: Q(n)
5880 };
5881 },
5882 htmlBuilder: Er,
5883 mathmlBuilder: Ir
5884});
5885B({
5886 type: "color",
5887 names: ["\\color"],
5888 props: {
5889 numArgs: 1,
5890 allowedInText: !0,
5891 argTypes: ["color"]
5892 },
5893 handler(r, e) {
5894 var {
5895 parser: t,
5896 breakOnTokenText: a
5897 } = r, n = F(e[0], "color-token").color;
5898 t.gullet.macros.set("\\current@color", n);
5899 var s = t.parseExpression(!0, a);
5900 return {
5901 type: "color",
5902 mode: t.mode,
5903 color: n,
5904 body: s
5905 };
5906 },
5907 htmlBuilder: Er,
5908 mathmlBuilder: Ir
5909});
5910B({
5911 type: "cr",
5912 names: ["\\\\"],
5913 props: {
5914 numArgs: 0,
5915 numOptionalArgs: 0,
5916 allowedInText: !0
5917 },
5918 handler(r, e, t) {
5919 var {
5920 parser: a
5921 } = r, n = a.gullet.future().text === "[" ? a.parseSizeGroup(!0) : null, s = !a.settings.displayMode || !a.settings.useStrictBehavior("newLineInDisplayMode", "In LaTeX, \\\\ or \\newline does nothing in display mode");
5922 return {
5923 type: "cr",
5924 mode: a.mode,
5925 newLine: s,
5926 size: n && F(n, "size").value
5927 };
5928 },
5929 // The following builders are called only at the top level,
5930 // not within tabular/array environments.
5931 htmlBuilder(r, e) {
5932 var t = b.makeSpan(["mspace"], [], e);
5933 return r.newLine && (t.classes.push("newline"), r.size && (t.style.marginTop = A(K(r.size, e)))), t;
5934 },
5935 mathmlBuilder(r, e) {
5936 var t = new S.MathNode("mspace");
5937 return r.newLine && (t.setAttribute("linebreak", "newline"), r.size && t.setAttribute("height", A(K(r.size, e)))), t;
5938 }
5939});
5940var ut = {
5941 "\\global": "\\global",
5942 "\\long": "\\\\globallong",
5943 "\\\\globallong": "\\\\globallong",
5944 "\\def": "\\gdef",
5945 "\\gdef": "\\gdef",
5946 "\\edef": "\\xdef",
5947 "\\xdef": "\\xdef",
5948 "\\let": "\\\\globallet",
5949 "\\futurelet": "\\\\globalfuture"
5950}, Or = (r) => {
5951 var e = r.text;
5952 if (/^(?:[\\{}$&#^_]|EOF)$/.test(e))
5953 throw new M("Expected a control sequence", r);
5954 return e;
5955}, N1 = (r) => {
5956 var e = r.gullet.popToken();
5957 return e.text === "=" && (e = r.gullet.popToken(), e.text === " " && (e = r.gullet.popToken())), e;
5958}, Hr = (r, e, t, a) => {
5959 var n = r.gullet.macros.get(t.text);
5960 n == null && (t.noexpand = !0, n = {
5961 tokens: [t],
5962 numArgs: 0,
5963 // reproduce the same behavior in expansion
5964 unexpandable: !r.gullet.isExpandable(t.text)
5965 }), r.gullet.macros.set(e, n, a);
5966};
5967B({
5968 type: "internal",
5969 names: [
5970 "\\global",
5971 "\\long",
5972 "\\\\globallong"
5973 // can’t be entered directly
5974 ],
5975 props: {
5976 numArgs: 0,
5977 allowedInText: !0
5978 },
5979 handler(r) {
5980 var {
5981 parser: e,
5982 funcName: t
5983 } = r;
5984 e.consumeSpaces();
5985 var a = e.fetch();
5986 if (ut[a.text])
5987 return (t === "\\global" || t === "\\\\globallong") && (a.text = ut[a.text]), F(e.parseFunction(), "internal");
5988 throw new M("Invalid token after macro prefix", a);
5989 }
5990});
5991B({
5992 type: "internal",
5993 names: ["\\def", "\\gdef", "\\edef", "\\xdef"],
5994 props: {
5995 numArgs: 0,
5996 allowedInText: !0,
5997 primitive: !0
5998 },
5999 handler(r) {
6000 var {
6001 parser: e,
6002 funcName: t
6003 } = r, a = e.gullet.popToken(), n = a.text;
6004 if (/^(?:[\\{}$&#^_]|EOF)$/.test(n))
6005 throw new M("Expected a control sequence", a);
6006 for (var s = 0, o, h = [[]]; e.gullet.future().text !== "{"; )
6007 if (a = e.gullet.popToken(), a.text === "#") {
6008 if (e.gullet.future().text === "{") {
6009 o = e.gullet.future(), h[s].push("{");
6010 break;
6011 }
6012 if (a = e.gullet.popToken(), !/^[1-9]$/.test(a.text))
6013 throw new M('Invalid argument number "' + a.text + '"');
6014 if (parseInt(a.text) !== s + 1)
6015 throw new M('Argument number "' + a.text + '" out of order');
6016 s++, h.push([]);
6017 } else {
6018 if (a.text === "EOF")
6019 throw new M("Expected a macro definition");
6020 h[s].push(a.text);
6021 }
6022 var {
6023 tokens: c
6024 } = e.gullet.consumeArg();
6025 return o && c.unshift(o), (t === "\\edef" || t === "\\xdef") && (c = e.gullet.expandTokens(c), c.reverse()), e.gullet.macros.set(n, {
6026 tokens: c,
6027 numArgs: s,
6028 delimiters: h
6029 }, t === ut[t]), {
6030 type: "internal",
6031 mode: e.mode
6032 };
6033 }
6034});
6035B({
6036 type: "internal",
6037 names: [
6038 "\\let",
6039 "\\\\globallet"
6040 // can’t be entered directly
6041 ],
6042 props: {
6043 numArgs: 0,
6044 allowedInText: !0,
6045 primitive: !0
6046 },
6047 handler(r) {
6048 var {
6049 parser: e,
6050 funcName: t
6051 } = r, a = Or(e.gullet.popToken());
6052 e.gullet.consumeSpaces();
6053 var n = N1(e);
6054 return Hr(e, a, n, t === "\\\\globallet"), {
6055 type: "internal",
6056 mode: e.mode
6057 };
6058 }
6059});
6060B({
6061 type: "internal",
6062 names: [
6063 "\\futurelet",
6064 "\\\\globalfuture"
6065 // can’t be entered directly
6066 ],
6067 props: {
6068 numArgs: 0,
6069 allowedInText: !0,
6070 primitive: !0
6071 },
6072 handler(r) {
6073 var {
6074 parser: e,
6075 funcName: t
6076 } = r, a = Or(e.gullet.popToken()), n = e.gullet.popToken(), s = e.gullet.popToken();
6077 return Hr(e, a, s, t === "\\\\globalfuture"), e.gullet.pushToken(s), e.gullet.pushToken(n), {
6078 type: "internal",
6079 mode: e.mode
6080 };
6081 }
6082});
6083var ne = function(e, t, a) {
6084 var n = $.math[e] && $.math[e].replace, s = ft(n || e, t, a);
6085 if (!s)
6086 throw new Error("Unsupported symbol " + e + " and font size " + t + ".");
6087 return s;
6088}, wt = function(e, t, a, n) {
6089 var s = a.havingBaseStyle(t), o = b.makeSpan(n.concat(s.sizingClasses(a)), [e], a), h = s.sizeMultiplier / a.sizeMultiplier;
6090 return o.height *= h, o.depth *= h, o.maxFontSize = s.sizeMultiplier, o;
6091}, Fr = function(e, t, a) {
6092 var n = t.havingBaseStyle(a), s = (1 - t.sizeMultiplier / n.sizeMultiplier) * t.fontMetrics().axisHeight;
6093 e.classes.push("delimcenter"), e.style.top = A(s), e.height -= s, e.depth += s;
6094}, q1 = function(e, t, a, n, s, o) {
6095 var h = b.makeSymbol(e, "Main-Regular", s, n), c = wt(h, t, n, o);
6096 return a && Fr(c, n, t), c;
6097}, R1 = function(e, t, a, n) {
6098 return b.makeSymbol(e, "Size" + t + "-Regular", a, n);
6099}, Lr = function(e, t, a, n, s, o) {
6100 var h = R1(e, t, s, n), c = wt(b.makeSpan(["delimsizing", "size" + t], [h], n), R.TEXT, n, o);
6101 return a && Fr(c, n, R.TEXT), c;
6102}, je = function(e, t, a) {
6103 var n;
6104 t === "Size1-Regular" ? n = "delim-size1" : n = "delim-size4";
6105 var s = b.makeSpan(["delimsizinginner", n], [b.makeSpan([], [b.makeSymbol(e, t, a)])]);
6106 return {
6107 type: "elem",
6108 elem: s
6109 };
6110}, Ze = function(e, t, a) {
6111 var n = y0["Size4-Regular"][e.charCodeAt(0)] ? y0["Size4-Regular"][e.charCodeAt(0)][4] : y0["Size1-Regular"][e.charCodeAt(0)][4], s = new P0("inner", La(e, Math.round(1e3 * t))), o = new D0([s], {
6112 width: A(n),
6113 height: A(t),
6114 // Override CSS rule `.katex svg { width: 100% }`
6115 style: "width:" + A(n),
6116 viewBox: "0 0 " + 1e3 * n + " " + Math.round(1e3 * t),
6117 preserveAspectRatio: "xMinYMin"
6118 }), h = b.makeSvgSpan([], [o], a);
6119 return h.height = t, h.style.height = A(t), h.style.width = A(n), {
6120 type: "elem",
6121 elem: h
6122 };
6123}, ht = 8e-3, Me = {
6124 type: "kern",
6125 size: -1 * ht
6126}, E1 = ["|", "\\lvert", "\\rvert", "\\vert"], I1 = ["\\|", "\\lVert", "\\rVert", "\\Vert"], Pr = function(e, t, a, n, s, o) {
6127 var h, c, p, g, y = "", w = 0;
6128 h = p = g = e, c = null;
6129 var x = "Size1-Regular";
6130 e === "\\uparrow" ? p = g = "⏐" : e === "\\Uparrow" ? p = g = "‖" : e === "\\downarrow" ? h = p = "⏐" : e === "\\Downarrow" ? h = p = "‖" : e === "\\updownarrow" ? (h = "\\uparrow", p = "⏐", g = "\\downarrow") : e === "\\Updownarrow" ? (h = "\\Uparrow", p = "‖", g = "\\Downarrow") : I.contains(E1, e) ? (p = "∣", y = "vert", w = 333) : I.contains(I1, e) ? (p = "∥", y = "doublevert", w = 556) : e === "[" || e === "\\lbrack" ? (h = "⎡", p = "⎢", g = "⎣", x = "Size4-Regular", y = "lbrack", w = 667) : e === "]" || e === "\\rbrack" ? (h = "⎤", p = "⎥", g = "⎦", x = "Size4-Regular", y = "rbrack", w = 667) : e === "\\lfloor" || e === "⌊" ? (p = h = "⎢", g = "⎣", x = "Size4-Regular", y = "lfloor", w = 667) : e === "\\lceil" || e === "⌈" ? (h = "⎡", p = g = "⎢", x = "Size4-Regular", y = "lceil", w = 667) : e === "\\rfloor" || e === "⌋" ? (p = h = "⎥", g = "⎦", x = "Size4-Regular", y = "rfloor", w = 667) : e === "\\rceil" || e === "⌉" ? (h = "⎤", p = g = "⎥", x = "Size4-Regular", y = "rceil", w = 667) : e === "(" || e === "\\lparen" ? (h = "⎛", p = "⎜", g = "⎝", x = "Size4-Regular", y = "lparen", w = 875) : e === ")" || e === "\\rparen" ? (h = "⎞", p = "⎟", g = "⎠", x = "Size4-Regular", y = "rparen", w = 875) : e === "\\{" || e === "\\lbrace" ? (h = "⎧", c = "⎨", g = "⎩", p = "⎪", x = "Size4-Regular") : e === "\\}" || e === "\\rbrace" ? (h = "⎫", c = "⎬", g = "⎭", p = "⎪", x = "Size4-Regular") : e === "\\lgroup" || e === "⟮" ? (h = "⎧", g = "⎩", p = "⎪", x = "Size4-Regular") : e === "\\rgroup" || e === "⟯" ? (h = "⎫", g = "⎭", p = "⎪", x = "Size4-Regular") : e === "\\lmoustache" || e === "⎰" ? (h = "⎧", g = "⎭", p = "⎪", x = "Size4-Regular") : (e === "\\rmoustache" || e === "⎱") && (h = "⎫", g = "⎩", p = "⎪", x = "Size4-Regular");
6131 var z = ne(h, x, s), T = z.height + z.depth, C = ne(p, x, s), N = C.height + C.depth, O = ne(g, x, s), H = O.height + O.depth, V = 0, L = 1;
6132 if (c !== null) {
6133 var U = ne(c, x, s);
6134 V = U.height + U.depth, L = 2;
6135 }
6136 var G = T + H + V, j = Math.max(0, Math.ceil((t - G) / (L * N))), Y = G + j * L * N, M0 = n.fontMetrics().axisHeight;
6137 a && (M0 *= n.sizeMultiplier);
6138 var r0 = Y / 2 - M0, e0 = [];
6139 if (y.length > 0) {
6140 var U0 = Y - T - H, s0 = Math.round(Y * 1e3), v0 = Pa(y, Math.round(U0 * 1e3)), R0 = new P0(y, v0), W0 = (w / 1e3).toFixed(3) + "em", j0 = (s0 / 1e3).toFixed(3) + "em", Le = new D0([R0], {
6141 width: W0,
6142 height: j0,
6143 viewBox: "0 0 " + w + " " + s0
6144 }), E0 = b.makeSvgSpan([], [Le], n);
6145 E0.height = s0 / 1e3, E0.style.width = W0, E0.style.height = j0, e0.push({
6146 type: "elem",
6147 elem: E0
6148 });
6149 } else {
6150 if (e0.push(je(g, x, s)), e0.push(Me), c === null) {
6151 var I0 = Y - T - H + 2 * ht;
6152 e0.push(Ze(p, I0, n));
6153 } else {
6154 var m0 = (Y - T - H - V) / 2 + 2 * ht;
6155 e0.push(Ze(p, m0, n)), e0.push(Me), e0.push(je(c, x, s)), e0.push(Me), e0.push(Ze(p, m0, n));
6156 }
6157 e0.push(Me), e0.push(je(h, x, s));
6158 }
6159 var ae = n.havingBaseStyle(R.TEXT), Pe = b.makeVList({
6160 positionType: "bottom",
6161 positionData: r0,
6162 children: e0
6163 }, ae);
6164 return wt(b.makeSpan(["delimsizing", "mult"], [Pe], ae), R.TEXT, n, o);
6165}, Ke = 80, Je = 0.08, Qe = function(e, t, a, n, s) {
6166 var o = Fa(e, n, a), h = new P0(e, o), c = new D0([h], {
6167 // Note: 1000:1 ratio of viewBox to document em width.
6168 width: "400em",
6169 height: A(t),
6170 viewBox: "0 0 400000 " + a,
6171 preserveAspectRatio: "xMinYMin slice"
6172 });
6173 return b.makeSvgSpan(["hide-tail"], [c], s);
6174}, O1 = function(e, t) {
6175 var a = t.havingBaseSizing(), n = Yr("\\surd", e * a.sizeMultiplier, Ur, a), s = a.sizeMultiplier, o = Math.max(0, t.minRuleThickness - t.fontMetrics().sqrtRuleThickness), h, c = 0, p = 0, g = 0, y;
6176 return n.type === "small" ? (g = 1e3 + 1e3 * o + Ke, e < 1 ? s = 1 : e < 1.4 && (s = 0.7), c = (1 + o + Je) / s, p = (1 + o) / s, h = Qe("sqrtMain", c, g, o, t), h.style.minWidth = "0.853em", y = 0.833 / s) : n.type === "large" ? (g = (1e3 + Ke) * se[n.size], p = (se[n.size] + o) / s, c = (se[n.size] + o + Je) / s, h = Qe("sqrtSize" + n.size, c, g, o, t), h.style.minWidth = "1.02em", y = 1 / s) : (c = e + o + Je, p = e + o, g = Math.floor(1e3 * e + o) + Ke, h = Qe("sqrtTall", c, g, o, t), h.style.minWidth = "0.742em", y = 1.056), h.height = p, h.style.height = A(c), {
6177 span: h,
6178 advanceWidth: y,
6179 // Calculate the actual line width.
6180 // This actually should depend on the chosen font -- e.g. \boldmath
6181 // should use the thicker surd symbols from e.g. KaTeX_Main-Bold, and
6182 // have thicker rules.
6183 ruleWidth: (t.fontMetrics().sqrtRuleThickness + o) * s
6184 };
6185}, Gr = ["(", "\\lparen", ")", "\\rparen", "[", "\\lbrack", "]", "\\rbrack", "\\{", "\\lbrace", "\\}", "\\rbrace", "\\lfloor", "\\rfloor", "⌊", "⌋", "\\lceil", "\\rceil", "⌈", "⌉", "\\surd"], H1 = ["\\uparrow", "\\downarrow", "\\updownarrow", "\\Uparrow", "\\Downarrow", "\\Updownarrow", "|", "\\|", "\\vert", "\\Vert", "\\lvert", "\\rvert", "\\lVert", "\\rVert", "\\lgroup", "\\rgroup", "⟮", "⟯", "\\lmoustache", "\\rmoustache", "⎰", "⎱"], Vr = ["<", ">", "\\langle", "\\rangle", "/", "\\backslash", "\\lt", "\\gt"], se = [0, 1.2, 1.8, 2.4, 3], F1 = function(e, t, a, n, s) {
6186 if (e === "<" || e === "\\lt" || e === "⟨" ? e = "\\langle" : (e === ">" || e === "\\gt" || e === "⟩") && (e = "\\rangle"), I.contains(Gr, e) || I.contains(Vr, e))
6187 return Lr(e, t, !1, a, n, s);
6188 if (I.contains(H1, e))
6189 return Pr(e, se[t], !1, a, n, s);
6190 throw new M("Illegal delimiter: '" + e + "'");
6191}, L1 = [{
6192 type: "small",
6193 style: R.SCRIPTSCRIPT
6194}, {
6195 type: "small",
6196 style: R.SCRIPT
6197}, {
6198 type: "small",
6199 style: R.TEXT
6200}, {
6201 type: "large",
6202 size: 1
6203}, {
6204 type: "large",
6205 size: 2
6206}, {
6207 type: "large",
6208 size: 3
6209}, {
6210 type: "large",
6211 size: 4
6212}], P1 = [{
6213 type: "small",
6214 style: R.SCRIPTSCRIPT
6215}, {
6216 type: "small",
6217 style: R.SCRIPT
6218}, {
6219 type: "small",
6220 style: R.TEXT
6221}, {
6222 type: "stack"
6223}], Ur = [{
6224 type: "small",
6225 style: R.SCRIPTSCRIPT
6226}, {
6227 type: "small",
6228 style: R.SCRIPT
6229}, {
6230 type: "small",
6231 style: R.TEXT
6232}, {
6233 type: "large",
6234 size: 1
6235}, {
6236 type: "large",
6237 size: 2
6238}, {
6239 type: "large",
6240 size: 3
6241}, {
6242 type: "large",
6243 size: 4
6244}, {
6245 type: "stack"
6246}], G1 = function(e) {
6247 if (e.type === "small")
6248 return "Main-Regular";
6249 if (e.type === "large")
6250 return "Size" + e.size + "-Regular";
6251 if (e.type === "stack")
6252 return "Size4-Regular";
6253 throw new Error("Add support for delim type '" + e.type + "' here.");
6254}, Yr = function(e, t, a, n) {
6255 for (var s = Math.min(2, 3 - n.style.size), o = s; o < a.length && a[o].type !== "stack"; o++) {
6256 var h = ne(e, G1(a[o]), "math"), c = h.height + h.depth;
6257 if (a[o].type === "small") {
6258 var p = n.havingBaseStyle(a[o].style);
6259 c *= p.sizeMultiplier;
6260 }
6261 if (c > t)
6262 return a[o];
6263 }
6264 return a[a.length - 1];
6265}, Xr = function(e, t, a, n, s, o) {
6266 e === "<" || e === "\\lt" || e === "⟨" ? e = "\\langle" : (e === ">" || e === "\\gt" || e === "⟩") && (e = "\\rangle");
6267 var h;
6268 I.contains(Vr, e) ? h = L1 : I.contains(Gr, e) ? h = Ur : h = P1;
6269 var c = Yr(e, t, h, n);
6270 return c.type === "small" ? q1(e, c.style, a, n, s, o) : c.type === "large" ? Lr(e, c.size, a, n, s, o) : Pr(e, t, a, n, s, o);
6271}, V1 = function(e, t, a, n, s, o) {
6272 var h = n.fontMetrics().axisHeight * n.sizeMultiplier, c = 901, p = 5 / n.fontMetrics().ptPerEm, g = Math.max(t - h, a + h), y = Math.max(
6273 // In real TeX, calculations are done using integral values which are
6274 // 65536 per pt, or 655360 per em. So, the division here truncates in
6275 // TeX but doesn't here, producing different results. If we wanted to
6276 // exactly match TeX's calculation, we could do
6277 // Math.floor(655360 * maxDistFromAxis / 500) *
6278 // delimiterFactor / 655360
6279 // (To see the difference, compare
6280 // x^{x^{\left(\rule{0.1em}{0.68em}\right)}}
6281 // in TeX and KaTeX)
6282 g / 500 * c,
6283 2 * g - p
6284 );
6285 return Xr(e, y, !0, n, s, o);
6286}, B0 = {
6287 sqrtImage: O1,
6288 sizedDelim: F1,
6289 sizeToMaxHeight: se,
6290 customSizedDelim: Xr,
6291 leftRightDelim: V1
6292}, Zt = {
6293 "\\bigl": {
6294 mclass: "mopen",
6295 size: 1
6296 },
6297 "\\Bigl": {
6298 mclass: "mopen",
6299 size: 2
6300 },
6301 "\\biggl": {
6302 mclass: "mopen",
6303 size: 3
6304 },
6305 "\\Biggl": {
6306 mclass: "mopen",
6307 size: 4
6308 },
6309 "\\bigr": {
6310 mclass: "mclose",
6311 size: 1
6312 },
6313 "\\Bigr": {
6314 mclass: "mclose",
6315 size: 2
6316 },
6317 "\\biggr": {
6318 mclass: "mclose",
6319 size: 3
6320 },
6321 "\\Biggr": {
6322 mclass: "mclose",
6323 size: 4
6324 },
6325 "\\bigm": {
6326 mclass: "mrel",
6327 size: 1
6328 },
6329 "\\Bigm": {
6330 mclass: "mrel",
6331 size: 2
6332 },
6333 "\\biggm": {
6334 mclass: "mrel",
6335 size: 3
6336 },
6337 "\\Biggm": {
6338 mclass: "mrel",
6339 size: 4
6340 },
6341 "\\big": {
6342 mclass: "mord",
6343 size: 1
6344 },
6345 "\\Big": {
6346 mclass: "mord",
6347 size: 2
6348 },
6349 "\\bigg": {
6350 mclass: "mord",
6351 size: 3
6352 },
6353 "\\Bigg": {
6354 mclass: "mord",
6355 size: 4
6356 }
6357}, U1 = ["(", "\\lparen", ")", "\\rparen", "[", "\\lbrack", "]", "\\rbrack", "\\{", "\\lbrace", "\\}", "\\rbrace", "\\lfloor", "\\rfloor", "⌊", "⌋", "\\lceil", "\\rceil", "⌈", "⌉", "<", ">", "\\langle", "⟨", "\\rangle", "⟩", "\\lt", "\\gt", "\\lvert", "\\rvert", "\\lVert", "\\rVert", "\\lgroup", "\\rgroup", "⟮", "⟯", "\\lmoustache", "\\rmoustache", "⎰", "⎱", "/", "\\backslash", "|", "\\vert", "\\|", "\\Vert", "\\uparrow", "\\Uparrow", "\\downarrow", "\\Downarrow", "\\updownarrow", "\\Updownarrow", "."];
6358function He(r, e) {
6359 var t = Ie(r);
6360 if (t && I.contains(U1, t.text))
6361 return t;
6362 throw t ? new M("Invalid delimiter '" + t.text + "' after '" + e.funcName + "'", r) : new M("Invalid delimiter type '" + r.type + "'", r);
6363}
6364B({
6365 type: "delimsizing",
6366 names: ["\\bigl", "\\Bigl", "\\biggl", "\\Biggl", "\\bigr", "\\Bigr", "\\biggr", "\\Biggr", "\\bigm", "\\Bigm", "\\biggm", "\\Biggm", "\\big", "\\Big", "\\bigg", "\\Bigg"],
6367 props: {
6368 numArgs: 1,
6369 argTypes: ["primitive"]
6370 },
6371 handler: (r, e) => {
6372 var t = He(e[0], r);
6373 return {
6374 type: "delimsizing",
6375 mode: r.parser.mode,
6376 size: Zt[r.funcName].size,
6377 mclass: Zt[r.funcName].mclass,
6378 delim: t.text
6379 };
6380 },
6381 htmlBuilder: (r, e) => r.delim === "." ? b.makeSpan([r.mclass]) : B0.sizedDelim(r.delim, r.size, e, r.mode, [r.mclass]),
6382 mathmlBuilder: (r) => {
6383 var e = [];
6384 r.delim !== "." && e.push(p0(r.delim, r.mode));
6385 var t = new S.MathNode("mo", e);
6386 r.mclass === "mopen" || r.mclass === "mclose" ? t.setAttribute("fence", "true") : t.setAttribute("fence", "false"), t.setAttribute("stretchy", "true");
6387 var a = A(B0.sizeToMaxHeight[r.size]);
6388 return t.setAttribute("minsize", a), t.setAttribute("maxsize", a), t;
6389 }
6390});
6391function Kt(r) {
6392 if (!r.body)
6393 throw new Error("Bug: The leftright ParseNode wasn't fully parsed.");
6394}
6395B({
6396 type: "leftright-right",
6397 names: ["\\right"],
6398 props: {
6399 numArgs: 1,
6400 primitive: !0
6401 },
6402 handler: (r, e) => {
6403 var t = r.parser.gullet.macros.get("\\current@color");
6404 if (t && typeof t != "string")
6405 throw new M("\\current@color set to non-string in \\right");
6406 return {
6407 type: "leftright-right",
6408 mode: r.parser.mode,
6409 delim: He(e[0], r).text,
6410 color: t
6411 // undefined if not set via \color
6412 };
6413 }
6414});
6415B({
6416 type: "leftright",
6417 names: ["\\left"],
6418 props: {
6419 numArgs: 1,
6420 primitive: !0
6421 },
6422 handler: (r, e) => {
6423 var t = He(e[0], r), a = r.parser;
6424 ++a.leftrightDepth;
6425 var n = a.parseExpression(!1);
6426 --a.leftrightDepth, a.expect("\\right", !1);
6427 var s = F(a.parseFunction(), "leftright-right");
6428 return {
6429 type: "leftright",
6430 mode: a.mode,
6431 body: n,
6432 left: t.text,
6433 right: s.delim,
6434 rightColor: s.color
6435 };
6436 },
6437 htmlBuilder: (r, e) => {
6438 Kt(r);
6439 for (var t = t0(r.body, e, !0, ["mopen", "mclose"]), a = 0, n = 0, s = !1, o = 0; o < t.length; o++)
6440 t[o].isMiddle ? s = !0 : (a = Math.max(t[o].height, a), n = Math.max(t[o].depth, n));
6441 a *= e.sizeMultiplier, n *= e.sizeMultiplier;
6442 var h;
6443 if (r.left === "." ? h = oe(e, ["mopen"]) : h = B0.leftRightDelim(r.left, a, n, e, r.mode, ["mopen"]), t.unshift(h), s)
6444 for (var c = 1; c < t.length; c++) {
6445 var p = t[c], g = p.isMiddle;
6446 g && (t[c] = B0.leftRightDelim(g.delim, a, n, g.options, r.mode, []));
6447 }
6448 var y;
6449 if (r.right === ".")
6450 y = oe(e, ["mclose"]);
6451 else {
6452 var w = r.rightColor ? e.withColor(r.rightColor) : e;
6453 y = B0.leftRightDelim(r.right, a, n, w, r.mode, ["mclose"]);
6454 }
6455 return t.push(y), b.makeSpan(["minner"], t, e);
6456 },
6457 mathmlBuilder: (r, e) => {
6458 Kt(r);
6459 var t = o0(r.body, e);
6460 if (r.left !== ".") {
6461 var a = new S.MathNode("mo", [p0(r.left, r.mode)]);
6462 a.setAttribute("fence", "true"), t.unshift(a);
6463 }
6464 if (r.right !== ".") {
6465 var n = new S.MathNode("mo", [p0(r.right, r.mode)]);
6466 n.setAttribute("fence", "true"), r.rightColor && n.setAttribute("mathcolor", r.rightColor), t.push(n);
6467 }
6468 return gt(t);
6469 }
6470});
6471B({
6472 type: "middle",
6473 names: ["\\middle"],
6474 props: {
6475 numArgs: 1,
6476 primitive: !0
6477 },
6478 handler: (r, e) => {
6479 var t = He(e[0], r);
6480 if (!r.parser.leftrightDepth)
6481 throw new M("\\middle without preceding \\left", t);
6482 return {
6483 type: "middle",
6484 mode: r.parser.mode,
6485 delim: t.text
6486 };
6487 },
6488 htmlBuilder: (r, e) => {
6489 var t;
6490 if (r.delim === ".")
6491 t = oe(e, []);
6492 else {
6493 t = B0.sizedDelim(r.delim, 1, e, r.mode, []);
6494 var a = {
6495 delim: r.delim,
6496 options: e
6497 };
6498 t.isMiddle = a;
6499 }
6500 return t;
6501 },
6502 mathmlBuilder: (r, e) => {
6503 var t = r.delim === "\\vert" || r.delim === "|" ? p0("|", "text") : p0(r.delim, r.mode), a = new S.MathNode("mo", [t]);
6504 return a.setAttribute("fence", "true"), a.setAttribute("lspace", "0.05em"), a.setAttribute("rspace", "0.05em"), a;
6505 }
6506});
6507var kt = (r, e) => {
6508 var t = b.wrapFragment(P(r.body, e), e), a = r.label.slice(1), n = e.sizeMultiplier, s, o = 0, h = I.isCharacterBox(r.body);
6509 if (a === "sout")
6510 s = b.makeSpan(["stretchy", "sout"]), s.height = e.fontMetrics().defaultRuleThickness / n, o = -0.5 * e.fontMetrics().xHeight;
6511 else if (a === "phase") {
6512 var c = K({
6513 number: 0.6,
6514 unit: "pt"
6515 }, e), p = K({
6516 number: 0.35,
6517 unit: "ex"
6518 }, e), g = e.havingBaseSizing();
6519 n = n / g.sizeMultiplier;
6520 var y = t.height + t.depth + c + p;
6521 t.style.paddingLeft = A(y / 2 + c);
6522 var w = Math.floor(1e3 * y * n), x = Oa(w), z = new D0([new P0("phase", x)], {
6523 width: "400em",
6524 height: A(w / 1e3),
6525 viewBox: "0 0 400000 " + w,
6526 preserveAspectRatio: "xMinYMin slice"
6527 });
6528 s = b.makeSvgSpan(["hide-tail"], [z], e), s.style.height = A(y), o = t.depth + c + p;
6529 } else {
6530 /cancel/.test(a) ? h || t.classes.push("cancel-pad") : a === "angl" ? t.classes.push("anglpad") : t.classes.push("boxpad");
6531 var T = 0, C = 0, N = 0;
6532 /box/.test(a) ? (N = Math.max(
6533 e.fontMetrics().fboxrule,
6534 // default
6535 e.minRuleThickness
6536 // User override.
6537 ), T = e.fontMetrics().fboxsep + (a === "colorbox" ? 0 : N), C = T) : a === "angl" ? (N = Math.max(e.fontMetrics().defaultRuleThickness, e.minRuleThickness), T = 4 * N, C = Math.max(0, 0.25 - t.depth)) : (T = h ? 0.2 : 0, C = T), s = N0.encloseSpan(t, a, T, C, e), /fbox|boxed|fcolorbox/.test(a) ? (s.style.borderStyle = "solid", s.style.borderWidth = A(N)) : a === "angl" && N !== 0.049 && (s.style.borderTopWidth = A(N), s.style.borderRightWidth = A(N)), o = t.depth + C, r.backgroundColor && (s.style.backgroundColor = r.backgroundColor, r.borderColor && (s.style.borderColor = r.borderColor));
6538 }
6539 var O;
6540 if (r.backgroundColor)
6541 O = b.makeVList({
6542 positionType: "individualShift",
6543 children: [
6544 // Put the color background behind inner;
6545 {
6546 type: "elem",
6547 elem: s,
6548 shift: o
6549 },
6550 {
6551 type: "elem",
6552 elem: t,
6553 shift: 0
6554 }
6555 ]
6556 }, e);
6557 else {
6558 var H = /cancel|phase/.test(a) ? ["svg-align"] : [];
6559 O = b.makeVList({
6560 positionType: "individualShift",
6561 children: [
6562 // Write the \cancel stroke on top of inner.
6563 {
6564 type: "elem",
6565 elem: t,
6566 shift: 0
6567 },
6568 {
6569 type: "elem",
6570 elem: s,
6571 shift: o,
6572 wrapperClasses: H
6573 }
6574 ]
6575 }, e);
6576 }
6577 return /cancel/.test(a) && (O.height = t.height, O.depth = t.depth), /cancel/.test(a) && !h ? b.makeSpan(["mord", "cancel-lap"], [O], e) : b.makeSpan(["mord"], [O], e);
6578}, St = (r, e) => {
6579 var t = 0, a = new S.MathNode(r.label.indexOf("colorbox") > -1 ? "mpadded" : "menclose", [X(r.body, e)]);
6580 switch (r.label) {
6581 case "\\cancel":
6582 a.setAttribute("notation", "updiagonalstrike");
6583 break;
6584 case "\\bcancel":
6585 a.setAttribute("notation", "downdiagonalstrike");
6586 break;
6587 case "\\phase":
6588 a.setAttribute("notation", "phasorangle");
6589 break;
6590 case "\\sout":
6591 a.setAttribute("notation", "horizontalstrike");
6592 break;
6593 case "\\fbox":
6594 a.setAttribute("notation", "box");
6595 break;
6596 case "\\angl":
6597 a.setAttribute("notation", "actuarial");
6598 break;
6599 case "\\fcolorbox":
6600 case "\\colorbox":
6601 if (t = e.fontMetrics().fboxsep * e.fontMetrics().ptPerEm, a.setAttribute("width", "+" + 2 * t + "pt"), a.setAttribute("height", "+" + 2 * t + "pt"), a.setAttribute("lspace", t + "pt"), a.setAttribute("voffset", t + "pt"), r.label === "\\fcolorbox") {
6602 var n = Math.max(
6603 e.fontMetrics().fboxrule,
6604 // default
6605 e.minRuleThickness
6606 // user override
6607 );
6608 a.setAttribute("style", "border: " + n + "em solid " + String(r.borderColor));
6609 }
6610 break;
6611 case "\\xcancel":
6612 a.setAttribute("notation", "updiagonalstrike downdiagonalstrike");
6613 break;
6614 }
6615 return r.backgroundColor && a.setAttribute("mathbackground", r.backgroundColor), a;
6616};
6617B({
6618 type: "enclose",
6619 names: ["\\colorbox"],
6620 props: {
6621 numArgs: 2,
6622 allowedInText: !0,
6623 argTypes: ["color", "text"]
6624 },
6625 handler(r, e, t) {
6626 var {
6627 parser: a,
6628 funcName: n
6629 } = r, s = F(e[0], "color-token").color, o = e[1];
6630 return {
6631 type: "enclose",
6632 mode: a.mode,
6633 label: n,
6634 backgroundColor: s,
6635 body: o
6636 };
6637 },
6638 htmlBuilder: kt,
6639 mathmlBuilder: St
6640});
6641B({
6642 type: "enclose",
6643 names: ["\\fcolorbox"],
6644 props: {
6645 numArgs: 3,
6646 allowedInText: !0,
6647 argTypes: ["color", "color", "text"]
6648 },
6649 handler(r, e, t) {
6650 var {
6651 parser: a,
6652 funcName: n
6653 } = r, s = F(e[0], "color-token").color, o = F(e[1], "color-token").color, h = e[2];
6654 return {
6655 type: "enclose",
6656 mode: a.mode,
6657 label: n,
6658 backgroundColor: o,
6659 borderColor: s,
6660 body: h
6661 };
6662 },
6663 htmlBuilder: kt,
6664 mathmlBuilder: St
6665});
6666B({
6667 type: "enclose",
6668 names: ["\\fbox"],
6669 props: {
6670 numArgs: 1,
6671 argTypes: ["hbox"],
6672 allowedInText: !0
6673 },
6674 handler(r, e) {
6675 var {
6676 parser: t
6677 } = r;
6678 return {
6679 type: "enclose",
6680 mode: t.mode,
6681 label: "\\fbox",
6682 body: e[0]
6683 };
6684 }
6685});
6686B({
6687 type: "enclose",
6688 names: ["\\cancel", "\\bcancel", "\\xcancel", "\\sout", "\\phase"],
6689 props: {
6690 numArgs: 1
6691 },
6692 handler(r, e) {
6693 var {
6694 parser: t,
6695 funcName: a
6696 } = r, n = e[0];
6697 return {
6698 type: "enclose",
6699 mode: t.mode,
6700 label: a,
6701 body: n
6702 };
6703 },
6704 htmlBuilder: kt,
6705 mathmlBuilder: St
6706});
6707B({
6708 type: "enclose",
6709 names: ["\\angl"],
6710 props: {
6711 numArgs: 1,
6712 argTypes: ["hbox"],
6713 allowedInText: !1
6714 },
6715 handler(r, e) {
6716 var {
6717 parser: t
6718 } = r;
6719 return {
6720 type: "enclose",
6721 mode: t.mode,
6722 label: "\\angl",
6723 body: e[0]
6724 };
6725 }
6726});
6727var $r = {};
6728function w0(r) {
6729 for (var {
6730 type: e,
6731 names: t,
6732 props: a,
6733 handler: n,
6734 htmlBuilder: s,
6735 mathmlBuilder: o
6736 } = r, h = {
6737 type: e,
6738 numArgs: a.numArgs || 0,
6739 allowedInText: !1,
6740 numOptionalArgs: 0,
6741 handler: n
6742 }, c = 0; c < t.length; ++c)
6743 $r[t[c]] = h;
6744 s && (Ce[e] = s), o && (Ne[e] = o);
6745}
6746var Wr = {};
6747function m(r, e) {
6748 Wr[r] = e;
6749}
6750function Jt(r) {
6751 var e = [];
6752 r.consumeSpaces();
6753 var t = r.fetch().text;
6754 for (t === "\\relax" && (r.consume(), r.consumeSpaces(), t = r.fetch().text); t === "\\hline" || t === "\\hdashline"; )
6755 r.consume(), e.push(t === "\\hdashline"), r.consumeSpaces(), t = r.fetch().text;
6756 return e;
6757}
6758var Fe = (r) => {
6759 var e = r.parser.settings;
6760 if (!e.displayMode)
6761 throw new M("{" + r.envName + "} can be used only in display mode.");
6762};
6763function Mt(r) {
6764 if (r.indexOf("ed") === -1)
6765 return r.indexOf("*") === -1;
6766}
6767function V0(r, e, t) {
6768 var {
6769 hskipBeforeAndAfter: a,
6770 addJot: n,
6771 cols: s,
6772 arraystretch: o,
6773 colSeparationType: h,
6774 autoTag: c,
6775 singleRow: p,
6776 emptySingleRow: g,
6777 maxNumCols: y,
6778 leqno: w
6779 } = e;
6780 if (r.gullet.beginGroup(), p || r.gullet.macros.set("\\cr", "\\\\\\relax"), !o) {
6781 var x = r.gullet.expandMacroAsText("\\arraystretch");
6782 if (x == null)
6783 o = 1;
6784 else if (o = parseFloat(x), !o || o < 0)
6785 throw new M("Invalid \\arraystretch: " + x);
6786 }
6787 r.gullet.beginGroup();
6788 var z = [], T = [z], C = [], N = [], O = c != null ? [] : void 0;
6789 function H() {
6790 c && r.gullet.macros.set("\\@eqnsw", "1", !0);
6791 }
6792 function V() {
6793 O && (r.gullet.macros.get("\\df@tag") ? (O.push(r.subparse([new x0("\\df@tag")])), r.gullet.macros.set("\\df@tag", void 0, !0)) : O.push(!!c && r.gullet.macros.get("\\@eqnsw") === "1"));
6794 }
6795 for (H(), N.push(Jt(r)); ; ) {
6796 var L = r.parseExpression(!1, p ? "\\end" : "\\\\");
6797 r.gullet.endGroup(), r.gullet.beginGroup(), L = {
6798 type: "ordgroup",
6799 mode: r.mode,
6800 body: L
6801 }, t && (L = {
6802 type: "styling",
6803 mode: r.mode,
6804 style: t,
6805 body: [L]
6806 }), z.push(L);
6807 var U = r.fetch().text;
6808 if (U === "&") {
6809 if (y && z.length === y) {
6810 if (p || h)
6811 throw new M("Too many tab characters: &", r.nextToken);
6812 r.settings.reportNonstrict("textEnv", "Too few columns specified in the {array} column argument.");
6813 }
6814 r.consume();
6815 } else if (U === "\\end") {
6816 V(), z.length === 1 && L.type === "styling" && L.body[0].body.length === 0 && (T.length > 1 || !g) && T.pop(), N.length < T.length + 1 && N.push([]);
6817 break;
6818 } else if (U === "\\\\") {
6819 r.consume();
6820 var G = void 0;
6821 r.gullet.future().text !== " " && (G = r.parseSizeGroup(!0)), C.push(G ? G.value : null), V(), N.push(Jt(r)), z = [], T.push(z), H();
6822 } else
6823 throw new M("Expected & or \\\\ or \\cr or \\end", r.nextToken);
6824 }
6825 return r.gullet.endGroup(), r.gullet.endGroup(), {
6826 type: "array",
6827 mode: r.mode,
6828 addJot: n,
6829 arraystretch: o,
6830 body: T,
6831 cols: s,
6832 rowGaps: C,
6833 hskipBeforeAndAfter: a,
6834 hLinesBeforeRow: N,
6835 colSeparationType: h,
6836 tags: O,
6837 leqno: w
6838 };
6839}
6840function zt(r) {
6841 return r.slice(0, 1) === "d" ? "display" : "text";
6842}
6843var k0 = function(e, t) {
6844 var a, n, s = e.body.length, o = e.hLinesBeforeRow, h = 0, c = new Array(s), p = [], g = Math.max(
6845 // From LaTeX \showthe\arrayrulewidth. Equals 0.04 em.
6846 t.fontMetrics().arrayRuleWidth,
6847 t.minRuleThickness
6848 // User override.
6849 ), y = 1 / t.fontMetrics().ptPerEm, w = 5 * y;
6850 if (e.colSeparationType && e.colSeparationType === "small") {
6851 var x = t.havingStyle(R.SCRIPT).sizeMultiplier;
6852 w = 0.2778 * (x / t.sizeMultiplier);
6853 }
6854 var z = e.colSeparationType === "CD" ? K({
6855 number: 3,
6856 unit: "ex"
6857 }, t) : 12 * y, T = 3 * y, C = e.arraystretch * z, N = 0.7 * C, O = 0.3 * C, H = 0;
6858 function V(pe) {
6859 for (var ve = 0; ve < pe.length; ++ve)
6860 ve > 0 && (H += 0.25), p.push({
6861 pos: H,
6862 isDashed: pe[ve]
6863 });
6864 }
6865 for (V(o[0]), a = 0; a < e.body.length; ++a) {
6866 var L = e.body[a], U = N, G = O;
6867 h < L.length && (h = L.length);
6868 var j = new Array(L.length);
6869 for (n = 0; n < L.length; ++n) {
6870 var Y = P(L[n], t);
6871 G < Y.depth && (G = Y.depth), U < Y.height && (U = Y.height), j[n] = Y;
6872 }
6873 var M0 = e.rowGaps[a], r0 = 0;
6874 M0 && (r0 = K(M0, t), r0 > 0 && (r0 += O, G < r0 && (G = r0), r0 = 0)), e.addJot && (G += T), j.height = U, j.depth = G, H += U, j.pos = H, H += G + r0, c[a] = j, V(o[a + 1]);
6875 }
6876 var e0 = H / 2 + t.fontMetrics().axisHeight, U0 = e.cols || [], s0 = [], v0, R0, W0 = [];
6877 if (e.tags && e.tags.some((pe) => pe))
6878 for (a = 0; a < s; ++a) {
6879 var j0 = c[a], Le = j0.pos - e0, E0 = e.tags[a], I0 = void 0;
6880 E0 === !0 ? I0 = b.makeSpan(["eqn-num"], [], t) : E0 === !1 ? I0 = b.makeSpan([], [], t) : I0 = b.makeSpan([], t0(E0, t, !0), t), I0.depth = j0.depth, I0.height = j0.height, W0.push({
6881 type: "elem",
6882 elem: I0,
6883 shift: Le
6884 });
6885 }
6886 for (
6887 n = 0, R0 = 0;
6888 // Continue while either there are more columns or more column
6889 // descriptions, so trailing separators don't get lost.
6890 n < h || R0 < U0.length;
6891 ++n, ++R0
6892 ) {
6893 for (var m0 = U0[R0] || {}, ae = !0; m0.type === "separator"; ) {
6894 if (ae || (v0 = b.makeSpan(["arraycolsep"], []), v0.style.width = A(t.fontMetrics().doubleRuleSep), s0.push(v0)), m0.separator === "|" || m0.separator === ":") {
6895 var Pe = m0.separator === "|" ? "solid" : "dashed", Z0 = b.makeSpan(["vertical-separator"], [], t);
6896 Z0.style.height = A(H), Z0.style.borderRightWidth = A(g), Z0.style.borderRightStyle = Pe, Z0.style.margin = "0 " + A(-g / 2);
6897 var qt = H - e0;
6898 qt && (Z0.style.verticalAlign = A(-qt)), s0.push(Z0);
6899 } else
6900 throw new M("Invalid separator type: " + m0.separator);
6901 R0++, m0 = U0[R0] || {}, ae = !1;
6902 }
6903 if (!(n >= h)) {
6904 var K0 = void 0;
6905 (n > 0 || e.hskipBeforeAndAfter) && (K0 = I.deflt(m0.pregap, w), K0 !== 0 && (v0 = b.makeSpan(["arraycolsep"], []), v0.style.width = A(K0), s0.push(v0)));
6906 var J0 = [];
6907 for (a = 0; a < s; ++a) {
6908 var de = c[a], fe = de[n];
6909 if (fe) {
6910 var ha = de.pos - e0;
6911 fe.depth = de.depth, fe.height = de.height, J0.push({
6912 type: "elem",
6913 elem: fe,
6914 shift: ha
6915 });
6916 }
6917 }
6918 J0 = b.makeVList({
6919 positionType: "individualShift",
6920 children: J0
6921 }, t), J0 = b.makeSpan(["col-align-" + (m0.align || "c")], [J0]), s0.push(J0), (n < h - 1 || e.hskipBeforeAndAfter) && (K0 = I.deflt(m0.postgap, w), K0 !== 0 && (v0 = b.makeSpan(["arraycolsep"], []), v0.style.width = A(K0), s0.push(v0)));
6922 }
6923 }
6924 if (c = b.makeSpan(["mtable"], s0), p.length > 0) {
6925 for (var ma = b.makeLineSpan("hline", t, g), ca = b.makeLineSpan("hdashline", t, g), Ge = [{
6926 type: "elem",
6927 elem: c,
6928 shift: 0
6929 }]; p.length > 0; ) {
6930 var Rt = p.pop(), Et = Rt.pos - e0;
6931 Rt.isDashed ? Ge.push({
6932 type: "elem",
6933 elem: ca,
6934 shift: Et
6935 }) : Ge.push({
6936 type: "elem",
6937 elem: ma,
6938 shift: Et
6939 });
6940 }
6941 c = b.makeVList({
6942 positionType: "individualShift",
6943 children: Ge
6944 }, t);
6945 }
6946 if (W0.length === 0)
6947 return b.makeSpan(["mord"], [c], t);
6948 var Ve = b.makeVList({
6949 positionType: "individualShift",
6950 children: W0
6951 }, t);
6952 return Ve = b.makeSpan(["tag"], [Ve], t), b.makeFragment([c, Ve]);
6953}, Y1 = {
6954 c: "center ",
6955 l: "left ",
6956 r: "right "
6957}, S0 = function(e, t) {
6958 for (var a = [], n = new S.MathNode("mtd", [], ["mtr-glue"]), s = new S.MathNode("mtd", [], ["mml-eqn-num"]), o = 0; o < e.body.length; o++) {
6959 for (var h = e.body[o], c = [], p = 0; p < h.length; p++)
6960 c.push(new S.MathNode("mtd", [X(h[p], t)]));
6961 e.tags && e.tags[o] && (c.unshift(n), c.push(n), e.leqno ? c.unshift(s) : c.push(s)), a.push(new S.MathNode("mtr", c));
6962 }
6963 var g = new S.MathNode("mtable", a), y = e.arraystretch === 0.5 ? 0.1 : 0.16 + e.arraystretch - 1 + (e.addJot ? 0.09 : 0);
6964 g.setAttribute("rowspacing", A(y));
6965 var w = "", x = "";
6966 if (e.cols && e.cols.length > 0) {
6967 var z = e.cols, T = "", C = !1, N = 0, O = z.length;
6968 z[0].type === "separator" && (w += "top ", N = 1), z[z.length - 1].type === "separator" && (w += "bottom ", O -= 1);
6969 for (var H = N; H < O; H++)
6970 z[H].type === "align" ? (x += Y1[z[H].align], C && (T += "none "), C = !0) : z[H].type === "separator" && C && (T += z[H].separator === "|" ? "solid " : "dashed ", C = !1);
6971 g.setAttribute("columnalign", x.trim()), /[sd]/.test(T) && g.setAttribute("columnlines", T.trim());
6972 }
6973 if (e.colSeparationType === "align") {
6974 for (var V = e.cols || [], L = "", U = 1; U < V.length; U++)
6975 L += U % 2 ? "0em " : "1em ";
6976 g.setAttribute("columnspacing", L.trim());
6977 } else
6978 e.colSeparationType === "alignat" || e.colSeparationType === "gather" ? g.setAttribute("columnspacing", "0em") : e.colSeparationType === "small" ? g.setAttribute("columnspacing", "0.2778em") : e.colSeparationType === "CD" ? g.setAttribute("columnspacing", "0.5em") : g.setAttribute("columnspacing", "1em");
6979 var G = "", j = e.hLinesBeforeRow;
6980 w += j[0].length > 0 ? "left " : "", w += j[j.length - 1].length > 0 ? "right " : "";
6981 for (var Y = 1; Y < j.length - 1; Y++)
6982 G += j[Y].length === 0 ? "none " : j[Y][0] ? "dashed " : "solid ";
6983 return /[sd]/.test(G) && g.setAttribute("rowlines", G.trim()), w !== "" && (g = new S.MathNode("menclose", [g]), g.setAttribute("notation", w.trim())), e.arraystretch && e.arraystretch < 1 && (g = new S.MathNode("mstyle", [g]), g.setAttribute("scriptlevel", "1")), g;
6984}, jr = function(e, t) {
6985 e.envName.indexOf("ed") === -1 && Fe(e);
6986 var a = [], n = e.envName.indexOf("at") > -1 ? "alignat" : "align", s = e.envName === "split", o = V0(e.parser, {
6987 cols: a,
6988 addJot: !0,
6989 autoTag: s ? void 0 : Mt(e.envName),
6990 emptySingleRow: !0,
6991 colSeparationType: n,
6992 maxNumCols: s ? 2 : void 0,
6993 leqno: e.parser.settings.leqno
6994 }, "display"), h, c = 0, p = {
6995 type: "ordgroup",
6996 mode: e.mode,
6997 body: []
6998 };
6999 if (t[0] && t[0].type === "ordgroup") {
7000 for (var g = "", y = 0; y < t[0].body.length; y++) {
7001 var w = F(t[0].body[y], "textord");
7002 g += w.text;
7003 }
7004 h = Number(g), c = h * 2;
7005 }
7006 var x = !c;
7007 o.body.forEach(function(N) {
7008 for (var O = 1; O < N.length; O += 2) {
7009 var H = F(N[O], "styling"), V = F(H.body[0], "ordgroup");
7010 V.body.unshift(p);
7011 }
7012 if (x)
7013 c < N.length && (c = N.length);
7014 else {
7015 var L = N.length / 2;
7016 if (h < L)
7017 throw new M("Too many math in a row: " + ("expected " + h + ", but got " + L), N[0]);
7018 }
7019 });
7020 for (var z = 0; z < c; ++z) {
7021 var T = "r", C = 0;
7022 z % 2 === 1 ? T = "l" : z > 0 && x && (C = 1), a[z] = {
7023 type: "align",
7024 align: T,
7025 pregap: C,
7026 postgap: 0
7027 };
7028 }
7029 return o.colSeparationType = x ? "align" : "alignat", o;
7030};
7031w0({
7032 type: "array",
7033 names: ["array", "darray"],
7034 props: {
7035 numArgs: 1
7036 },
7037 handler(r, e) {
7038 var t = Ie(e[0]), a = t ? [e[0]] : F(e[0], "ordgroup").body, n = a.map(function(o) {
7039 var h = yt(o), c = h.text;
7040 if ("lcr".indexOf(c) !== -1)
7041 return {
7042 type: "align",
7043 align: c
7044 };
7045 if (c === "|")
7046 return {
7047 type: "separator",
7048 separator: "|"
7049 };
7050 if (c === ":")
7051 return {
7052 type: "separator",
7053 separator: ":"
7054 };
7055 throw new M("Unknown column alignment: " + c, o);
7056 }), s = {
7057 cols: n,
7058 hskipBeforeAndAfter: !0,
7059 // \@preamble in lttab.dtx
7060 maxNumCols: n.length
7061 };
7062 return V0(r.parser, s, zt(r.envName));
7063 },
7064 htmlBuilder: k0,
7065 mathmlBuilder: S0
7066});
7067w0({
7068 type: "array",
7069 names: ["matrix", "pmatrix", "bmatrix", "Bmatrix", "vmatrix", "Vmatrix", "matrix*", "pmatrix*", "bmatrix*", "Bmatrix*", "vmatrix*", "Vmatrix*"],
7070 props: {
7071 numArgs: 0
7072 },
7073 handler(r) {
7074 var e = {
7075 matrix: null,
7076 pmatrix: ["(", ")"],
7077 bmatrix: ["[", "]"],
7078 Bmatrix: ["\\{", "\\}"],
7079 vmatrix: ["|", "|"],
7080 Vmatrix: ["\\Vert", "\\Vert"]
7081 }[r.envName.replace("*", "")], t = "c", a = {
7082 hskipBeforeAndAfter: !1,
7083 cols: [{
7084 type: "align",
7085 align: t
7086 }]
7087 };
7088 if (r.envName.charAt(r.envName.length - 1) === "*") {
7089 var n = r.parser;
7090 if (n.consumeSpaces(), n.fetch().text === "[") {
7091 if (n.consume(), n.consumeSpaces(), t = n.fetch().text, "lcr".indexOf(t) === -1)
7092 throw new M("Expected l or c or r", n.nextToken);
7093 n.consume(), n.consumeSpaces(), n.expect("]"), n.consume(), a.cols = [{
7094 type: "align",
7095 align: t
7096 }];
7097 }
7098 }
7099 var s = V0(r.parser, a, zt(r.envName)), o = Math.max(0, ...s.body.map((h) => h.length));
7100 return s.cols = new Array(o).fill({
7101 type: "align",
7102 align: t
7103 }), e ? {
7104 type: "leftright",
7105 mode: r.mode,
7106 body: [s],
7107 left: e[0],
7108 right: e[1],
7109 rightColor: void 0
7110 // \right uninfluenced by \color in array
7111 } : s;
7112 },
7113 htmlBuilder: k0,
7114 mathmlBuilder: S0
7115});
7116w0({
7117 type: "array",
7118 names: ["smallmatrix"],
7119 props: {
7120 numArgs: 0
7121 },
7122 handler(r) {
7123 var e = {
7124 arraystretch: 0.5
7125 }, t = V0(r.parser, e, "script");
7126 return t.colSeparationType = "small", t;
7127 },
7128 htmlBuilder: k0,
7129 mathmlBuilder: S0
7130});
7131w0({
7132 type: "array",
7133 names: ["subarray"],
7134 props: {
7135 numArgs: 1
7136 },
7137 handler(r, e) {
7138 var t = Ie(e[0]), a = t ? [e[0]] : F(e[0], "ordgroup").body, n = a.map(function(o) {
7139 var h = yt(o), c = h.text;
7140 if ("lc".indexOf(c) !== -1)
7141 return {
7142 type: "align",
7143 align: c
7144 };
7145 throw new M("Unknown column alignment: " + c, o);
7146 });
7147 if (n.length > 1)
7148 throw new M("{subarray} can contain only one column");
7149 var s = {
7150 cols: n,
7151 hskipBeforeAndAfter: !1,
7152 arraystretch: 0.5
7153 };
7154 if (s = V0(r.parser, s, "script"), s.body.length > 0 && s.body[0].length > 1)
7155 throw new M("{subarray} can contain only one column");
7156 return s;
7157 },
7158 htmlBuilder: k0,
7159 mathmlBuilder: S0
7160});
7161w0({
7162 type: "array",
7163 names: ["cases", "dcases", "rcases", "drcases"],
7164 props: {
7165 numArgs: 0
7166 },
7167 handler(r) {
7168 var e = {
7169 arraystretch: 1.2,
7170 cols: [{
7171 type: "align",
7172 align: "l",
7173 pregap: 0,
7174 // TODO(kevinb) get the current style.
7175 // For now we use the metrics for TEXT style which is what we were
7176 // doing before. Before attempting to get the current style we
7177 // should look at TeX's behavior especially for \over and matrices.
7178 postgap: 1
7179 /* 1em quad */
7180 }, {
7181 type: "align",
7182 align: "l",
7183 pregap: 0,
7184 postgap: 0
7185 }]
7186 }, t = V0(r.parser, e, zt(r.envName));
7187 return {
7188 type: "leftright",
7189 mode: r.mode,
7190 body: [t],
7191 left: r.envName.indexOf("r") > -1 ? "." : "\\{",
7192 right: r.envName.indexOf("r") > -1 ? "\\}" : ".",
7193 rightColor: void 0
7194 };
7195 },
7196 htmlBuilder: k0,
7197 mathmlBuilder: S0
7198});
7199w0({
7200 type: "array",
7201 names: ["align", "align*", "aligned", "split"],
7202 props: {
7203 numArgs: 0
7204 },
7205 handler: jr,
7206 htmlBuilder: k0,
7207 mathmlBuilder: S0
7208});
7209w0({
7210 type: "array",
7211 names: ["gathered", "gather", "gather*"],
7212 props: {
7213 numArgs: 0
7214 },
7215 handler(r) {
7216 I.contains(["gather", "gather*"], r.envName) && Fe(r);
7217 var e = {
7218 cols: [{
7219 type: "align",
7220 align: "c"
7221 }],
7222 addJot: !0,
7223 colSeparationType: "gather",
7224 autoTag: Mt(r.envName),
7225 emptySingleRow: !0,
7226 leqno: r.parser.settings.leqno
7227 };
7228 return V0(r.parser, e, "display");
7229 },
7230 htmlBuilder: k0,
7231 mathmlBuilder: S0
7232});
7233w0({
7234 type: "array",
7235 names: ["alignat", "alignat*", "alignedat"],
7236 props: {
7237 numArgs: 1
7238 },
7239 handler: jr,
7240 htmlBuilder: k0,
7241 mathmlBuilder: S0
7242});
7243w0({
7244 type: "array",
7245 names: ["equation", "equation*"],
7246 props: {
7247 numArgs: 0
7248 },
7249 handler(r) {
7250 Fe(r);
7251 var e = {
7252 autoTag: Mt(r.envName),
7253 emptySingleRow: !0,
7254 singleRow: !0,
7255 maxNumCols: 1,
7256 leqno: r.parser.settings.leqno
7257 };
7258 return V0(r.parser, e, "display");
7259 },
7260 htmlBuilder: k0,
7261 mathmlBuilder: S0
7262});
7263w0({
7264 type: "array",
7265 names: ["CD"],
7266 props: {
7267 numArgs: 0
7268 },
7269 handler(r) {
7270 return Fe(r), C1(r.parser);
7271 },
7272 htmlBuilder: k0,
7273 mathmlBuilder: S0
7274});
7275m("\\nonumber", "\\gdef\\@eqnsw{0}");
7276m("\\notag", "\\nonumber");
7277B({
7278 type: "text",
7279 // Doesn't matter what this is.
7280 names: ["\\hline", "\\hdashline"],
7281 props: {
7282 numArgs: 0,
7283 allowedInText: !0,
7284 allowedInMath: !0
7285 },
7286 handler(r, e) {
7287 throw new M(r.funcName + " valid only within array environment");
7288 }
7289});
7290var Qt = $r;
7291B({
7292 type: "environment",
7293 names: ["\\begin", "\\end"],
7294 props: {
7295 numArgs: 1,
7296 argTypes: ["text"]
7297 },
7298 handler(r, e) {
7299 var {
7300 parser: t,
7301 funcName: a
7302 } = r, n = e[0];
7303 if (n.type !== "ordgroup")
7304 throw new M("Invalid environment name", n);
7305 for (var s = "", o = 0; o < n.body.length; ++o)
7306 s += F(n.body[o], "textord").text;
7307 if (a === "\\begin") {
7308 if (!Qt.hasOwnProperty(s))
7309 throw new M("No such environment: " + s, n);
7310 var h = Qt[s], {
7311 args: c,
7312 optArgs: p
7313 } = t.parseArguments("\\begin{" + s + "}", h), g = {
7314 mode: t.mode,
7315 envName: s,
7316 parser: t
7317 }, y = h.handler(g, c, p);
7318 t.expect("\\end", !1);
7319 var w = t.nextToken, x = F(t.parseFunction(), "environment");
7320 if (x.name !== s)
7321 throw new M("Mismatch: \\begin{" + s + "} matched by \\end{" + x.name + "}", w);
7322 return y;
7323 }
7324 return {
7325 type: "environment",
7326 mode: t.mode,
7327 name: s,
7328 nameGroup: n
7329 };
7330 }
7331});
7332var Zr = (r, e) => {
7333 var t = r.font, a = e.withFont(t);
7334 return P(r.body, a);
7335}, Kr = (r, e) => {
7336 var t = r.font, a = e.withFont(t);
7337 return X(r.body, a);
7338}, _t = {
7339 "\\Bbb": "\\mathbb",
7340 "\\bold": "\\mathbf",
7341 "\\frak": "\\mathfrak",
7342 "\\bm": "\\boldsymbol"
7343};
7344B({
7345 type: "font",
7346 names: [
7347 // styles, except \boldsymbol defined below
7348 "\\mathrm",
7349 "\\mathit",
7350 "\\mathbf",
7351 "\\mathnormal",
7352 // families
7353 "\\mathbb",
7354 "\\mathcal",
7355 "\\mathfrak",
7356 "\\mathscr",
7357 "\\mathsf",
7358 "\\mathtt",
7359 // aliases, except \bm defined below
7360 "\\Bbb",
7361 "\\bold",
7362 "\\frak"
7363 ],
7364 props: {
7365 numArgs: 1,
7366 allowedInArgument: !0
7367 },
7368 handler: (r, e) => {
7369 var {
7370 parser: t,
7371 funcName: a
7372 } = r, n = qe(e[0]), s = a;
7373 return s in _t && (s = _t[s]), {
7374 type: "font",
7375 mode: t.mode,
7376 font: s.slice(1),
7377 body: n
7378 };
7379 },
7380 htmlBuilder: Zr,
7381 mathmlBuilder: Kr
7382});
7383B({
7384 type: "mclass",
7385 names: ["\\boldsymbol", "\\bm"],
7386 props: {
7387 numArgs: 1
7388 },
7389 handler: (r, e) => {
7390 var {
7391 parser: t
7392 } = r, a = e[0], n = I.isCharacterBox(a);
7393 return {
7394 type: "mclass",
7395 mode: t.mode,
7396 mclass: Oe(a),
7397 body: [{
7398 type: "font",
7399 mode: t.mode,
7400 font: "boldsymbol",
7401 body: a
7402 }],
7403 isCharacterBox: n
7404 };
7405 }
7406});
7407B({
7408 type: "font",
7409 names: ["\\rm", "\\sf", "\\tt", "\\bf", "\\it", "\\cal"],
7410 props: {
7411 numArgs: 0,
7412 allowedInText: !0
7413 },
7414 handler: (r, e) => {
7415 var {
7416 parser: t,
7417 funcName: a,
7418 breakOnTokenText: n
7419 } = r, {
7420 mode: s
7421 } = t, o = t.parseExpression(!0, n), h = "math" + a.slice(1);
7422 return {
7423 type: "font",
7424 mode: s,
7425 font: h,
7426 body: {
7427 type: "ordgroup",
7428 mode: t.mode,
7429 body: o
7430 }
7431 };
7432 },
7433 htmlBuilder: Zr,
7434 mathmlBuilder: Kr
7435});
7436var Jr = (r, e) => {
7437 var t = e;
7438 return r === "display" ? t = t.id >= R.SCRIPT.id ? t.text() : R.DISPLAY : r === "text" && t.size === R.DISPLAY.size ? t = R.TEXT : r === "script" ? t = R.SCRIPT : r === "scriptscript" && (t = R.SCRIPTSCRIPT), t;
7439}, At = (r, e) => {
7440 var t = Jr(r.size, e.style), a = t.fracNum(), n = t.fracDen(), s;
7441 s = e.havingStyle(a);
7442 var o = P(r.numer, s, e);
7443 if (r.continued) {
7444 var h = 8.5 / e.fontMetrics().ptPerEm, c = 3.5 / e.fontMetrics().ptPerEm;
7445 o.height = o.height < h ? h : o.height, o.depth = o.depth < c ? c : o.depth;
7446 }
7447 s = e.havingStyle(n);
7448 var p = P(r.denom, s, e), g, y, w;
7449 r.hasBarLine ? (r.barSize ? (y = K(r.barSize, e), g = b.makeLineSpan("frac-line", e, y)) : g = b.makeLineSpan("frac-line", e), y = g.height, w = g.height) : (g = null, y = 0, w = e.fontMetrics().defaultRuleThickness);
7450 var x, z, T;
7451 t.size === R.DISPLAY.size || r.size === "display" ? (x = e.fontMetrics().num1, y > 0 ? z = 3 * w : z = 7 * w, T = e.fontMetrics().denom1) : (y > 0 ? (x = e.fontMetrics().num2, z = w) : (x = e.fontMetrics().num3, z = 3 * w), T = e.fontMetrics().denom2);
7452 var C;
7453 if (g) {
7454 var O = e.fontMetrics().axisHeight;
7455 x - o.depth - (O + 0.5 * y) < z && (x += z - (x - o.depth - (O + 0.5 * y))), O - 0.5 * y - (p.height - T) < z && (T += z - (O - 0.5 * y - (p.height - T)));
7456 var H = -(O - 0.5 * y);
7457 C = b.makeVList({
7458 positionType: "individualShift",
7459 children: [{
7460 type: "elem",
7461 elem: p,
7462 shift: T
7463 }, {
7464 type: "elem",
7465 elem: g,
7466 shift: H
7467 }, {
7468 type: "elem",
7469 elem: o,
7470 shift: -x
7471 }]
7472 }, e);
7473 } else {
7474 var N = x - o.depth - (p.height - T);
7475 N < z && (x += 0.5 * (z - N), T += 0.5 * (z - N)), C = b.makeVList({
7476 positionType: "individualShift",
7477 children: [{
7478 type: "elem",
7479 elem: p,
7480 shift: T
7481 }, {
7482 type: "elem",
7483 elem: o,
7484 shift: -x
7485 }]
7486 }, e);
7487 }
7488 s = e.havingStyle(t), C.height *= s.sizeMultiplier / e.sizeMultiplier, C.depth *= s.sizeMultiplier / e.sizeMultiplier;
7489 var V;
7490 t.size === R.DISPLAY.size ? V = e.fontMetrics().delim1 : t.size === R.SCRIPTSCRIPT.size ? V = e.havingStyle(R.SCRIPT).fontMetrics().delim2 : V = e.fontMetrics().delim2;
7491 var L, U;
7492 return r.leftDelim == null ? L = oe(e, ["mopen"]) : L = B0.customSizedDelim(r.leftDelim, V, !0, e.havingStyle(t), r.mode, ["mopen"]), r.continued ? U = b.makeSpan([]) : r.rightDelim == null ? U = oe(e, ["mclose"]) : U = B0.customSizedDelim(r.rightDelim, V, !0, e.havingStyle(t), r.mode, ["mclose"]), b.makeSpan(["mord"].concat(s.sizingClasses(e)), [L, b.makeSpan(["mfrac"], [C]), U], e);
7493}, Tt = (r, e) => {
7494 var t = new S.MathNode("mfrac", [X(r.numer, e), X(r.denom, e)]);
7495 if (!r.hasBarLine)
7496 t.setAttribute("linethickness", "0px");
7497 else if (r.barSize) {
7498 var a = K(r.barSize, e);
7499 t.setAttribute("linethickness", A(a));
7500 }
7501 var n = Jr(r.size, e.style);
7502 if (n.size !== e.style.size) {
7503 t = new S.MathNode("mstyle", [t]);
7504 var s = n.size === R.DISPLAY.size ? "true" : "false";
7505 t.setAttribute("displaystyle", s), t.setAttribute("scriptlevel", "0");
7506 }
7507 if (r.leftDelim != null || r.rightDelim != null) {
7508 var o = [];
7509 if (r.leftDelim != null) {
7510 var h = new S.MathNode("mo", [new S.TextNode(r.leftDelim.replace("\\", ""))]);
7511 h.setAttribute("fence", "true"), o.push(h);
7512 }
7513 if (o.push(t), r.rightDelim != null) {
7514 var c = new S.MathNode("mo", [new S.TextNode(r.rightDelim.replace("\\", ""))]);
7515 c.setAttribute("fence", "true"), o.push(c);
7516 }
7517 return gt(o);
7518 }
7519 return t;
7520};
7521B({
7522 type: "genfrac",
7523 names: [
7524 "\\dfrac",
7525 "\\frac",
7526 "\\tfrac",
7527 "\\dbinom",
7528 "\\binom",
7529 "\\tbinom",
7530 "\\\\atopfrac",
7531 // can’t be entered directly
7532 "\\\\bracefrac",
7533 "\\\\brackfrac"
7534 // ditto
7535 ],
7536 props: {
7537 numArgs: 2,
7538 allowedInArgument: !0
7539 },
7540 handler: (r, e) => {
7541 var {
7542 parser: t,
7543 funcName: a
7544 } = r, n = e[0], s = e[1], o, h = null, c = null, p = "auto";
7545 switch (a) {
7546 case "\\dfrac":
7547 case "\\frac":
7548 case "\\tfrac":
7549 o = !0;
7550 break;
7551 case "\\\\atopfrac":
7552 o = !1;
7553 break;
7554 case "\\dbinom":
7555 case "\\binom":
7556 case "\\tbinom":
7557 o = !1, h = "(", c = ")";
7558 break;
7559 case "\\\\bracefrac":
7560 o = !1, h = "\\{", c = "\\}";
7561 break;
7562 case "\\\\brackfrac":
7563 o = !1, h = "[", c = "]";
7564 break;
7565 default:
7566 throw new Error("Unrecognized genfrac command");
7567 }
7568 switch (a) {
7569 case "\\dfrac":
7570 case "\\dbinom":
7571 p = "display";
7572 break;
7573 case "\\tfrac":
7574 case "\\tbinom":
7575 p = "text";
7576 break;
7577 }
7578 return {
7579 type: "genfrac",
7580 mode: t.mode,
7581 continued: !1,
7582 numer: n,
7583 denom: s,
7584 hasBarLine: o,
7585 leftDelim: h,
7586 rightDelim: c,
7587 size: p,
7588 barSize: null
7589 };
7590 },
7591 htmlBuilder: At,
7592 mathmlBuilder: Tt
7593});
7594B({
7595 type: "genfrac",
7596 names: ["\\cfrac"],
7597 props: {
7598 numArgs: 2
7599 },
7600 handler: (r, e) => {
7601 var {
7602 parser: t,
7603 funcName: a
7604 } = r, n = e[0], s = e[1];
7605 return {
7606 type: "genfrac",
7607 mode: t.mode,
7608 continued: !0,
7609 numer: n,
7610 denom: s,
7611 hasBarLine: !0,
7612 leftDelim: null,
7613 rightDelim: null,
7614 size: "display",
7615 barSize: null
7616 };
7617 }
7618});
7619B({
7620 type: "infix",
7621 names: ["\\over", "\\choose", "\\atop", "\\brace", "\\brack"],
7622 props: {
7623 numArgs: 0,
7624 infix: !0
7625 },
7626 handler(r) {
7627 var {
7628 parser: e,
7629 funcName: t,
7630 token: a
7631 } = r, n;
7632 switch (t) {
7633 case "\\over":
7634 n = "\\frac";
7635 break;
7636 case "\\choose":
7637 n = "\\binom";
7638 break;
7639 case "\\atop":
7640 n = "\\\\atopfrac";
7641 break;
7642 case "\\brace":
7643 n = "\\\\bracefrac";
7644 break;
7645 case "\\brack":
7646 n = "\\\\brackfrac";
7647 break;
7648 default:
7649 throw new Error("Unrecognized infix genfrac command");
7650 }
7651 return {
7652 type: "infix",
7653 mode: e.mode,
7654 replaceWith: n,
7655 token: a
7656 };
7657 }
7658});
7659var er = ["display", "text", "script", "scriptscript"], tr = function(e) {
7660 var t = null;
7661 return e.length > 0 && (t = e, t = t === "." ? null : t), t;
7662};
7663B({
7664 type: "genfrac",
7665 names: ["\\genfrac"],
7666 props: {
7667 numArgs: 6,
7668 allowedInArgument: !0,
7669 argTypes: ["math", "math", "size", "text", "math", "math"]
7670 },
7671 handler(r, e) {
7672 var {
7673 parser: t
7674 } = r, a = e[4], n = e[5], s = qe(e[0]), o = s.type === "atom" && s.family === "open" ? tr(s.text) : null, h = qe(e[1]), c = h.type === "atom" && h.family === "close" ? tr(h.text) : null, p = F(e[2], "size"), g, y = null;
7675 p.isBlank ? g = !0 : (y = p.value, g = y.number > 0);
7676 var w = "auto", x = e[3];
7677 if (x.type === "ordgroup") {
7678 if (x.body.length > 0) {
7679 var z = F(x.body[0], "textord");
7680 w = er[Number(z.text)];
7681 }
7682 } else
7683 x = F(x, "textord"), w = er[Number(x.text)];
7684 return {
7685 type: "genfrac",
7686 mode: t.mode,
7687 numer: a,
7688 denom: n,
7689 continued: !1,
7690 hasBarLine: g,
7691 barSize: y,
7692 leftDelim: o,
7693 rightDelim: c,
7694 size: w
7695 };
7696 },
7697 htmlBuilder: At,
7698 mathmlBuilder: Tt
7699});
7700B({
7701 type: "infix",
7702 names: ["\\above"],
7703 props: {
7704 numArgs: 1,
7705 argTypes: ["size"],
7706 infix: !0
7707 },
7708 handler(r, e) {
7709 var {
7710 parser: t,
7711 funcName: a,
7712 token: n
7713 } = r;
7714 return {
7715 type: "infix",
7716 mode: t.mode,
7717 replaceWith: "\\\\abovefrac",
7718 size: F(e[0], "size").value,
7719 token: n
7720 };
7721 }
7722});
7723B({
7724 type: "genfrac",
7725 names: ["\\\\abovefrac"],
7726 props: {
7727 numArgs: 3,
7728 argTypes: ["math", "size", "math"]
7729 },
7730 handler: (r, e) => {
7731 var {
7732 parser: t,
7733 funcName: a
7734 } = r, n = e[0], s = wa(F(e[1], "infix").size), o = e[2], h = s.number > 0;
7735 return {
7736 type: "genfrac",
7737 mode: t.mode,
7738 numer: n,
7739 denom: o,
7740 continued: !1,
7741 hasBarLine: h,
7742 barSize: s,
7743 leftDelim: null,
7744 rightDelim: null,
7745 size: "auto"
7746 };
7747 },
7748 htmlBuilder: At,
7749 mathmlBuilder: Tt
7750});
7751var Qr = (r, e) => {
7752 var t = e.style, a, n;
7753 r.type === "supsub" ? (a = r.sup ? P(r.sup, e.havingStyle(t.sup()), e) : P(r.sub, e.havingStyle(t.sub()), e), n = F(r.base, "horizBrace")) : n = F(r, "horizBrace");
7754 var s = P(n.base, e.havingBaseStyle(R.DISPLAY)), o = N0.svgSpan(n, e), h;
7755 if (n.isOver ? (h = b.makeVList({
7756 positionType: "firstBaseline",
7757 children: [{
7758 type: "elem",
7759 elem: s
7760 }, {
7761 type: "kern",
7762 size: 0.1
7763 }, {
7764 type: "elem",
7765 elem: o
7766 }]
7767 }, e), h.children[0].children[0].children[1].classes.push("svg-align")) : (h = b.makeVList({
7768 positionType: "bottom",
7769 positionData: s.depth + 0.1 + o.height,
7770 children: [{
7771 type: "elem",
7772 elem: o
7773 }, {
7774 type: "kern",
7775 size: 0.1
7776 }, {
7777 type: "elem",
7778 elem: s
7779 }]
7780 }, e), h.children[0].children[0].children[0].classes.push("svg-align")), a) {
7781 var c = b.makeSpan(["mord", n.isOver ? "mover" : "munder"], [h], e);
7782 n.isOver ? h = b.makeVList({
7783 positionType: "firstBaseline",
7784 children: [{
7785 type: "elem",
7786 elem: c
7787 }, {
7788 type: "kern",
7789 size: 0.2
7790 }, {
7791 type: "elem",
7792 elem: a
7793 }]
7794 }, e) : h = b.makeVList({
7795 positionType: "bottom",
7796 positionData: c.depth + 0.2 + a.height + a.depth,
7797 children: [{
7798 type: "elem",
7799 elem: a
7800 }, {
7801 type: "kern",
7802 size: 0.2
7803 }, {
7804 type: "elem",
7805 elem: c
7806 }]
7807 }, e);
7808 }
7809 return b.makeSpan(["mord", n.isOver ? "mover" : "munder"], [h], e);
7810}, X1 = (r, e) => {
7811 var t = N0.mathMLnode(r.label);
7812 return new S.MathNode(r.isOver ? "mover" : "munder", [X(r.base, e), t]);
7813};
7814B({
7815 type: "horizBrace",
7816 names: ["\\overbrace", "\\underbrace"],
7817 props: {
7818 numArgs: 1
7819 },
7820 handler(r, e) {
7821 var {
7822 parser: t,
7823 funcName: a
7824 } = r;
7825 return {
7826 type: "horizBrace",
7827 mode: t.mode,
7828 label: a,
7829 isOver: /^\\over/.test(a),
7830 base: e[0]
7831 };
7832 },
7833 htmlBuilder: Qr,
7834 mathmlBuilder: X1
7835});
7836B({
7837 type: "href",
7838 names: ["\\href"],
7839 props: {
7840 numArgs: 2,
7841 argTypes: ["url", "original"],
7842 allowedInText: !0
7843 },
7844 handler: (r, e) => {
7845 var {
7846 parser: t
7847 } = r, a = e[1], n = F(e[0], "url").url;
7848 return t.settings.isTrusted({
7849 command: "\\href",
7850 url: n
7851 }) ? {
7852 type: "href",
7853 mode: t.mode,
7854 href: n,
7855 body: Q(a)
7856 } : t.formatUnsupportedCmd("\\href");
7857 },
7858 htmlBuilder: (r, e) => {
7859 var t = t0(r.body, e, !1);
7860 return b.makeAnchor(r.href, [], t, e);
7861 },
7862 mathmlBuilder: (r, e) => {
7863 var t = G0(r.body, e);
7864 return t instanceof c0 || (t = new c0("mrow", [t])), t.setAttribute("href", r.href), t;
7865 }
7866});
7867B({
7868 type: "href",
7869 names: ["\\url"],
7870 props: {
7871 numArgs: 1,
7872 argTypes: ["url"],
7873 allowedInText: !0
7874 },
7875 handler: (r, e) => {
7876 var {
7877 parser: t
7878 } = r, a = F(e[0], "url").url;
7879 if (!t.settings.isTrusted({
7880 command: "\\url",
7881 url: a
7882 }))
7883 return t.formatUnsupportedCmd("\\url");
7884 for (var n = [], s = 0; s < a.length; s++) {
7885 var o = a[s];
7886 o === "~" && (o = "\\textasciitilde"), n.push({
7887 type: "textord",
7888 mode: "text",
7889 text: o
7890 });
7891 }
7892 var h = {
7893 type: "text",
7894 mode: t.mode,
7895 font: "\\texttt",
7896 body: n
7897 };
7898 return {
7899 type: "href",
7900 mode: t.mode,
7901 href: a,
7902 body: Q(h)
7903 };
7904 }
7905});
7906B({
7907 type: "hbox",
7908 names: ["\\hbox"],
7909 props: {
7910 numArgs: 1,
7911 argTypes: ["text"],
7912 allowedInText: !0,
7913 primitive: !0
7914 },
7915 handler(r, e) {
7916 var {
7917 parser: t
7918 } = r;
7919 return {
7920 type: "hbox",
7921 mode: t.mode,
7922 body: Q(e[0])
7923 };
7924 },
7925 htmlBuilder(r, e) {
7926 var t = t0(r.body, e, !1);
7927 return b.makeFragment(t);
7928 },
7929 mathmlBuilder(r, e) {
7930 return new S.MathNode("mrow", o0(r.body, e));
7931 }
7932});
7933B({
7934 type: "html",
7935 names: ["\\htmlClass", "\\htmlId", "\\htmlStyle", "\\htmlData"],
7936 props: {
7937 numArgs: 2,
7938 argTypes: ["raw", "original"],
7939 allowedInText: !0
7940 },
7941 handler: (r, e) => {
7942 var {
7943 parser: t,
7944 funcName: a,
7945 token: n
7946 } = r, s = F(e[0], "raw").string, o = e[1];
7947 t.settings.strict && t.settings.reportNonstrict("htmlExtension", "HTML extension is disabled on strict mode");
7948 var h, c = {};
7949 switch (a) {
7950 case "\\htmlClass":
7951 c.class = s, h = {
7952 command: "\\htmlClass",
7953 class: s
7954 };
7955 break;
7956 case "\\htmlId":
7957 c.id = s, h = {
7958 command: "\\htmlId",
7959 id: s
7960 };
7961 break;
7962 case "\\htmlStyle":
7963 c.style = s, h = {
7964 command: "\\htmlStyle",
7965 style: s
7966 };
7967 break;
7968 case "\\htmlData": {
7969 for (var p = s.split(","), g = 0; g < p.length; g++) {
7970 var y = p[g].split("=");
7971 if (y.length !== 2)
7972 throw new M("Error parsing key-value for \\htmlData");
7973 c["data-" + y[0].trim()] = y[1].trim();
7974 }
7975 h = {
7976 command: "\\htmlData",
7977 attributes: c
7978 };
7979 break;
7980 }
7981 default:
7982 throw new Error("Unrecognized html command");
7983 }
7984 return t.settings.isTrusted(h) ? {
7985 type: "html",
7986 mode: t.mode,
7987 attributes: c,
7988 body: Q(o)
7989 } : t.formatUnsupportedCmd(a);
7990 },
7991 htmlBuilder: (r, e) => {
7992 var t = t0(r.body, e, !1), a = ["enclosing"];
7993 r.attributes.class && a.push(...r.attributes.class.trim().split(/\s+/));
7994 var n = b.makeSpan(a, t, e);
7995 for (var s in r.attributes)
7996 s !== "class" && r.attributes.hasOwnProperty(s) && n.setAttribute(s, r.attributes[s]);
7997 return n;
7998 },
7999 mathmlBuilder: (r, e) => G0(r.body, e)
8000});
8001B({
8002 type: "htmlmathml",
8003 names: ["\\html@mathml"],
8004 props: {
8005 numArgs: 2,
8006 allowedInText: !0
8007 },
8008 handler: (r, e) => {
8009 var {
8010 parser: t
8011 } = r;
8012 return {
8013 type: "htmlmathml",
8014 mode: t.mode,
8015 html: Q(e[0]),
8016 mathml: Q(e[1])
8017 };
8018 },
8019 htmlBuilder: (r, e) => {
8020 var t = t0(r.html, e, !1);
8021 return b.makeFragment(t);
8022 },
8023 mathmlBuilder: (r, e) => G0(r.mathml, e)
8024});
8025var _e = function(e) {
8026 if (/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))
8027 return {
8028 number: +e,
8029 unit: "bp"
8030 };
8031 var t = /([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);
8032 if (!t)
8033 throw new M("Invalid size: '" + e + "' in \\includegraphics");
8034 var a = {
8035 number: +(t[1] + t[2]),
8036 // sign + magnitude, cast to number
8037 unit: t[3]
8038 };
8039 if (!gr(a))
8040 throw new M("Invalid unit: '" + a.unit + "' in \\includegraphics.");
8041 return a;
8042};
8043B({
8044 type: "includegraphics",
8045 names: ["\\includegraphics"],
8046 props: {
8047 numArgs: 1,
8048 numOptionalArgs: 1,
8049 argTypes: ["raw", "url"],
8050 allowedInText: !1
8051 },
8052 handler: (r, e, t) => {
8053 var {
8054 parser: a
8055 } = r, n = {
8056 number: 0,
8057 unit: "em"
8058 }, s = {
8059 number: 0.9,
8060 unit: "em"
8061 }, o = {
8062 number: 0,
8063 unit: "em"
8064 }, h = "";
8065 if (t[0])
8066 for (var c = F(t[0], "raw").string, p = c.split(","), g = 0; g < p.length; g++) {
8067 var y = p[g].split("=");
8068 if (y.length === 2) {
8069 var w = y[1].trim();
8070 switch (y[0].trim()) {
8071 case "alt":
8072 h = w;
8073 break;
8074 case "width":
8075 n = _e(w);
8076 break;
8077 case "height":
8078 s = _e(w);
8079 break;
8080 case "totalheight":
8081 o = _e(w);
8082 break;
8083 default:
8084 throw new M("Invalid key: '" + y[0] + "' in \\includegraphics.");
8085 }
8086 }
8087 }
8088 var x = F(e[0], "url").url;
8089 return h === "" && (h = x, h = h.replace(/^.*[\\/]/, ""), h = h.substring(0, h.lastIndexOf("."))), a.settings.isTrusted({
8090 command: "\\includegraphics",
8091 url: x
8092 }) ? {
8093 type: "includegraphics",
8094 mode: a.mode,
8095 alt: h,
8096 width: n,
8097 height: s,
8098 totalheight: o,
8099 src: x
8100 } : a.formatUnsupportedCmd("\\includegraphics");
8101 },
8102 htmlBuilder: (r, e) => {
8103 var t = K(r.height, e), a = 0;
8104 r.totalheight.number > 0 && (a = K(r.totalheight, e) - t);
8105 var n = 0;
8106 r.width.number > 0 && (n = K(r.width, e));
8107 var s = {
8108 height: A(t + a)
8109 };
8110 n > 0 && (s.width = A(n)), a > 0 && (s.verticalAlign = A(-a));
8111 var o = new Xa(r.src, r.alt, s);
8112 return o.height = t, o.depth = a, o;
8113 },
8114 mathmlBuilder: (r, e) => {
8115 var t = new S.MathNode("mglyph", []);
8116 t.setAttribute("alt", r.alt);
8117 var a = K(r.height, e), n = 0;
8118 if (r.totalheight.number > 0 && (n = K(r.totalheight, e) - a, t.setAttribute("valign", A(-n))), t.setAttribute("height", A(a + n)), r.width.number > 0) {
8119 var s = K(r.width, e);
8120 t.setAttribute("width", A(s));
8121 }
8122 return t.setAttribute("src", r.src), t;
8123 }
8124});
8125B({
8126 type: "kern",
8127 names: ["\\kern", "\\mkern", "\\hskip", "\\mskip"],
8128 props: {
8129 numArgs: 1,
8130 argTypes: ["size"],
8131 primitive: !0,
8132 allowedInText: !0
8133 },
8134 handler(r, e) {
8135 var {
8136 parser: t,
8137 funcName: a
8138 } = r, n = F(e[0], "size");
8139 if (t.settings.strict) {
8140 var s = a[1] === "m", o = n.value.unit === "mu";
8141 s ? (o || t.settings.reportNonstrict("mathVsTextUnits", "LaTeX's " + a + " supports only mu units, " + ("not " + n.value.unit + " units")), t.mode !== "math" && t.settings.reportNonstrict("mathVsTextUnits", "LaTeX's " + a + " works only in math mode")) : o && t.settings.reportNonstrict("mathVsTextUnits", "LaTeX's " + a + " doesn't support mu units");
8142 }
8143 return {
8144 type: "kern",
8145 mode: t.mode,
8146 dimension: n.value
8147 };
8148 },
8149 htmlBuilder(r, e) {
8150 return b.makeGlue(r.dimension, e);
8151 },
8152 mathmlBuilder(r, e) {
8153 var t = K(r.dimension, e);
8154 return new S.SpaceNode(t);
8155 }
8156});
8157B({
8158 type: "lap",
8159 names: ["\\mathllap", "\\mathrlap", "\\mathclap"],
8160 props: {
8161 numArgs: 1,
8162 allowedInText: !0
8163 },
8164 handler: (r, e) => {
8165 var {
8166 parser: t,
8167 funcName: a
8168 } = r, n = e[0];
8169 return {
8170 type: "lap",
8171 mode: t.mode,
8172 alignment: a.slice(5),
8173 body: n
8174 };
8175 },
8176 htmlBuilder: (r, e) => {
8177 var t;
8178 r.alignment === "clap" ? (t = b.makeSpan([], [P(r.body, e)]), t = b.makeSpan(["inner"], [t], e)) : t = b.makeSpan(["inner"], [P(r.body, e)]);
8179 var a = b.makeSpan(["fix"], []), n = b.makeSpan([r.alignment], [t, a], e), s = b.makeSpan(["strut"]);
8180 return s.style.height = A(n.height + n.depth), n.depth && (s.style.verticalAlign = A(-n.depth)), n.children.unshift(s), n = b.makeSpan(["thinbox"], [n], e), b.makeSpan(["mord", "vbox"], [n], e);
8181 },
8182 mathmlBuilder: (r, e) => {
8183 var t = new S.MathNode("mpadded", [X(r.body, e)]);
8184 if (r.alignment !== "rlap") {
8185 var a = r.alignment === "llap" ? "-1" : "-0.5";
8186 t.setAttribute("lspace", a + "width");
8187 }
8188 return t.setAttribute("width", "0px"), t;
8189 }
8190});
8191B({
8192 type: "styling",
8193 names: ["\\(", "$"],
8194 props: {
8195 numArgs: 0,
8196 allowedInText: !0,
8197 allowedInMath: !1
8198 },
8199 handler(r, e) {
8200 var {
8201 funcName: t,
8202 parser: a
8203 } = r, n = a.mode;
8204 a.switchMode("math");
8205 var s = t === "\\(" ? "\\)" : "$", o = a.parseExpression(!1, s);
8206 return a.expect(s), a.switchMode(n), {
8207 type: "styling",
8208 mode: a.mode,
8209 style: "text",
8210 body: o
8211 };
8212 }
8213});
8214B({
8215 type: "text",
8216 // Doesn't matter what this is.
8217 names: ["\\)", "\\]"],
8218 props: {
8219 numArgs: 0,
8220 allowedInText: !0,
8221 allowedInMath: !1
8222 },
8223 handler(r, e) {
8224 throw new M("Mismatched " + r.funcName);
8225 }
8226});
8227var rr = (r, e) => {
8228 switch (e.style.size) {
8229 case R.DISPLAY.size:
8230 return r.display;
8231 case R.TEXT.size:
8232 return r.text;
8233 case R.SCRIPT.size:
8234 return r.script;
8235 case R.SCRIPTSCRIPT.size:
8236 return r.scriptscript;
8237 default:
8238 return r.text;
8239 }
8240};
8241B({
8242 type: "mathchoice",
8243 names: ["\\mathchoice"],
8244 props: {
8245 numArgs: 4,
8246 primitive: !0
8247 },
8248 handler: (r, e) => {
8249 var {
8250 parser: t
8251 } = r;
8252 return {
8253 type: "mathchoice",
8254 mode: t.mode,
8255 display: Q(e[0]),
8256 text: Q(e[1]),
8257 script: Q(e[2]),
8258 scriptscript: Q(e[3])
8259 };
8260 },
8261 htmlBuilder: (r, e) => {
8262 var t = rr(r, e), a = t0(t, e, !1);
8263 return b.makeFragment(a);
8264 },
8265 mathmlBuilder: (r, e) => {
8266 var t = rr(r, e);
8267 return G0(t, e);
8268 }
8269});
8270var _r = (r, e, t, a, n, s, o) => {
8271 r = b.makeSpan([], [r]);
8272 var h = t && I.isCharacterBox(t), c, p;
8273 if (e) {
8274 var g = P(e, a.havingStyle(n.sup()), a);
8275 p = {
8276 elem: g,
8277 kern: Math.max(a.fontMetrics().bigOpSpacing1, a.fontMetrics().bigOpSpacing3 - g.depth)
8278 };
8279 }
8280 if (t) {
8281 var y = P(t, a.havingStyle(n.sub()), a);
8282 c = {
8283 elem: y,
8284 kern: Math.max(a.fontMetrics().bigOpSpacing2, a.fontMetrics().bigOpSpacing4 - y.height)
8285 };
8286 }
8287 var w;
8288 if (p && c) {
8289 var x = a.fontMetrics().bigOpSpacing5 + c.elem.height + c.elem.depth + c.kern + r.depth + o;
8290 w = b.makeVList({
8291 positionType: "bottom",
8292 positionData: x,
8293 children: [{
8294 type: "kern",
8295 size: a.fontMetrics().bigOpSpacing5
8296 }, {
8297 type: "elem",
8298 elem: c.elem,
8299 marginLeft: A(-s)
8300 }, {
8301 type: "kern",
8302 size: c.kern
8303 }, {
8304 type: "elem",
8305 elem: r
8306 }, {
8307 type: "kern",
8308 size: p.kern
8309 }, {
8310 type: "elem",
8311 elem: p.elem,
8312 marginLeft: A(s)
8313 }, {
8314 type: "kern",
8315 size: a.fontMetrics().bigOpSpacing5
8316 }]
8317 }, a);
8318 } else if (c) {
8319 var z = r.height - o;
8320 w = b.makeVList({
8321 positionType: "top",
8322 positionData: z,
8323 children: [{
8324 type: "kern",
8325 size: a.fontMetrics().bigOpSpacing5
8326 }, {
8327 type: "elem",
8328 elem: c.elem,
8329 marginLeft: A(-s)
8330 }, {
8331 type: "kern",
8332 size: c.kern
8333 }, {
8334 type: "elem",
8335 elem: r
8336 }]
8337 }, a);
8338 } else if (p) {
8339 var T = r.depth + o;
8340 w = b.makeVList({
8341 positionType: "bottom",
8342 positionData: T,
8343 children: [{
8344 type: "elem",
8345 elem: r
8346 }, {
8347 type: "kern",
8348 size: p.kern
8349 }, {
8350 type: "elem",
8351 elem: p.elem,
8352 marginLeft: A(s)
8353 }, {
8354 type: "kern",
8355 size: a.fontMetrics().bigOpSpacing5
8356 }]
8357 }, a);
8358 } else
8359 return r;
8360 var C = [w];
8361 if (c && s !== 0 && !h) {
8362 var N = b.makeSpan(["mspace"], [], a);
8363 N.style.marginRight = A(s), C.unshift(N);
8364 }
8365 return b.makeSpan(["mop", "op-limits"], C, a);
8366}, ea = ["\\smallint"], re = (r, e) => {
8367 var t, a, n = !1, s;
8368 r.type === "supsub" ? (t = r.sup, a = r.sub, s = F(r.base, "op"), n = !0) : s = F(r, "op");
8369 var o = e.style, h = !1;
8370 o.size === R.DISPLAY.size && s.symbol && !I.contains(ea, s.name) && (h = !0);
8371 var c;
8372 if (s.symbol) {
8373 var p = h ? "Size2-Regular" : "Size1-Regular", g = "";
8374 if ((s.name === "\\oiint" || s.name === "\\oiiint") && (g = s.name.slice(1), s.name = g === "oiint" ? "\\iint" : "\\iiint"), c = b.makeSymbol(s.name, p, "math", e, ["mop", "op-symbol", h ? "large-op" : "small-op"]), g.length > 0) {
8375 var y = c.italic, w = b.staticSvg(g + "Size" + (h ? "2" : "1"), e);
8376 c = b.makeVList({
8377 positionType: "individualShift",
8378 children: [{
8379 type: "elem",
8380 elem: c,
8381 shift: 0
8382 }, {
8383 type: "elem",
8384 elem: w,
8385 shift: h ? 0.08 : 0
8386 }]
8387 }, e), s.name = "\\" + g, c.classes.unshift("mop"), c.italic = y;
8388 }
8389 } else if (s.body) {
8390 var x = t0(s.body, e, !0);
8391 x.length === 1 && x[0] instanceof f0 ? (c = x[0], c.classes[0] = "mop") : c = b.makeSpan(["mop"], x, e);
8392 } else {
8393 for (var z = [], T = 1; T < s.name.length; T++)
8394 z.push(b.mathsym(s.name[T], s.mode, e));
8395 c = b.makeSpan(["mop"], z, e);
8396 }
8397 var C = 0, N = 0;
8398 return (c instanceof f0 || s.name === "\\oiint" || s.name === "\\oiiint") && !s.suppressBaseShift && (C = (c.height - c.depth) / 2 - e.fontMetrics().axisHeight, N = c.italic), n ? _r(c, t, a, e, o, N, C) : (C && (c.style.position = "relative", c.style.top = A(C)), c);
8399}, ce = (r, e) => {
8400 var t;
8401 if (r.symbol)
8402 t = new c0("mo", [p0(r.name, r.mode)]), I.contains(ea, r.name) && t.setAttribute("largeop", "false");
8403 else if (r.body)
8404 t = new c0("mo", o0(r.body, e));
8405 else {
8406 t = new c0("mi", [new ie(r.name.slice(1))]);
8407 var a = new c0("mo", [p0("⁡", "text")]);
8408 r.parentIsSupSub ? t = new c0("mrow", [t, a]) : t = Br([t, a]);
8409 }
8410 return t;
8411}, $1 = {
8412 "∏": "\\prod",
8413 "∐": "\\coprod",
8414 "∑": "\\sum",
8415 "⋀": "\\bigwedge",
8416 "⋁": "\\bigvee",
8417 "⋂": "\\bigcap",
8418 "⋃": "\\bigcup",
8419 "⨀": "\\bigodot",
8420 "⨁": "\\bigoplus",
8421 "⨂": "\\bigotimes",
8422 "⨄": "\\biguplus",
8423 "⨆": "\\bigsqcup"
8424};
8425B({
8426 type: "op",
8427 names: ["\\coprod", "\\bigvee", "\\bigwedge", "\\biguplus", "\\bigcap", "\\bigcup", "\\intop", "\\prod", "\\sum", "\\bigotimes", "\\bigoplus", "\\bigodot", "\\bigsqcup", "\\smallint", "∏", "∐", "∑", "⋀", "⋁", "⋂", "⋃", "⨀", "⨁", "⨂", "⨄", "⨆"],
8428 props: {
8429 numArgs: 0
8430 },
8431 handler: (r, e) => {
8432 var {
8433 parser: t,
8434 funcName: a
8435 } = r, n = a;
8436 return n.length === 1 && (n = $1[n]), {
8437 type: "op",
8438 mode: t.mode,
8439 limits: !0,
8440 parentIsSupSub: !1,
8441 symbol: !0,
8442 name: n
8443 };
8444 },
8445 htmlBuilder: re,
8446 mathmlBuilder: ce
8447});
8448B({
8449 type: "op",
8450 names: ["\\mathop"],
8451 props: {
8452 numArgs: 1,
8453 primitive: !0
8454 },
8455 handler: (r, e) => {
8456 var {
8457 parser: t
8458 } = r, a = e[0];
8459 return {
8460 type: "op",
8461 mode: t.mode,
8462 limits: !1,
8463 parentIsSupSub: !1,
8464 symbol: !1,
8465 body: Q(a)
8466 };
8467 },
8468 htmlBuilder: re,
8469 mathmlBuilder: ce
8470});
8471var W1 = {
8472 "∫": "\\int",
8473 "∬": "\\iint",
8474 "∭": "\\iiint",
8475 "∮": "\\oint",
8476 "∯": "\\oiint",
8477 "∰": "\\oiiint"
8478};
8479B({
8480 type: "op",
8481 names: ["\\arcsin", "\\arccos", "\\arctan", "\\arctg", "\\arcctg", "\\arg", "\\ch", "\\cos", "\\cosec", "\\cosh", "\\cot", "\\cotg", "\\coth", "\\csc", "\\ctg", "\\cth", "\\deg", "\\dim", "\\exp", "\\hom", "\\ker", "\\lg", "\\ln", "\\log", "\\sec", "\\sin", "\\sinh", "\\sh", "\\tan", "\\tanh", "\\tg", "\\th"],
8482 props: {
8483 numArgs: 0
8484 },
8485 handler(r) {
8486 var {
8487 parser: e,
8488 funcName: t
8489 } = r;
8490 return {
8491 type: "op",
8492 mode: e.mode,
8493 limits: !1,
8494 parentIsSupSub: !1,
8495 symbol: !1,
8496 name: t
8497 };
8498 },
8499 htmlBuilder: re,
8500 mathmlBuilder: ce
8501});
8502B({
8503 type: "op",
8504 names: ["\\det", "\\gcd", "\\inf", "\\lim", "\\max", "\\min", "\\Pr", "\\sup"],
8505 props: {
8506 numArgs: 0
8507 },
8508 handler(r) {
8509 var {
8510 parser: e,
8511 funcName: t
8512 } = r;
8513 return {
8514 type: "op",
8515 mode: e.mode,
8516 limits: !0,
8517 parentIsSupSub: !1,
8518 symbol: !1,
8519 name: t
8520 };
8521 },
8522 htmlBuilder: re,
8523 mathmlBuilder: ce
8524});
8525B({
8526 type: "op",
8527 names: ["\\int", "\\iint", "\\iiint", "\\oint", "\\oiint", "\\oiiint", "∫", "∬", "∭", "∮", "∯", "∰"],
8528 props: {
8529 numArgs: 0
8530 },
8531 handler(r) {
8532 var {
8533 parser: e,
8534 funcName: t
8535 } = r, a = t;
8536 return a.length === 1 && (a = W1[a]), {
8537 type: "op",
8538 mode: e.mode,
8539 limits: !1,
8540 parentIsSupSub: !1,
8541 symbol: !0,
8542 name: a
8543 };
8544 },
8545 htmlBuilder: re,
8546 mathmlBuilder: ce
8547});
8548var ta = (r, e) => {
8549 var t, a, n = !1, s;
8550 r.type === "supsub" ? (t = r.sup, a = r.sub, s = F(r.base, "operatorname"), n = !0) : s = F(r, "operatorname");
8551 var o;
8552 if (s.body.length > 0) {
8553 for (var h = s.body.map((y) => {
8554 var w = y.text;
8555 return typeof w == "string" ? {
8556 type: "textord",
8557 mode: y.mode,
8558 text: w
8559 } : y;
8560 }), c = t0(h, e.withFont("mathrm"), !0), p = 0; p < c.length; p++) {
8561 var g = c[p];
8562 g instanceof f0 && (g.text = g.text.replace(/\u2212/, "-").replace(/\u2217/, "*"));
8563 }
8564 o = b.makeSpan(["mop"], c, e);
8565 } else
8566 o = b.makeSpan(["mop"], [], e);
8567 return n ? _r(o, t, a, e, e.style, 0, 0) : o;
8568}, j1 = (r, e) => {
8569 for (var t = o0(r.body, e.withFont("mathrm")), a = !0, n = 0; n < t.length; n++) {
8570 var s = t[n];
8571 if (!(s instanceof S.SpaceNode))
8572 if (s instanceof S.MathNode)
8573 switch (s.type) {
8574 case "mi":
8575 case "mn":
8576 case "ms":
8577 case "mspace":
8578 case "mtext":
8579 break;
8580 case "mo": {
8581 var o = s.children[0];
8582 s.children.length === 1 && o instanceof S.TextNode ? o.text = o.text.replace(/\u2212/, "-").replace(/\u2217/, "*") : a = !1;
8583 break;
8584 }
8585 default:
8586 a = !1;
8587 }
8588 else
8589 a = !1;
8590 }
8591 if (a) {
8592 var h = t.map((g) => g.toText()).join("");
8593 t = [new S.TextNode(h)];
8594 }
8595 var c = new S.MathNode("mi", t);
8596 c.setAttribute("mathvariant", "normal");
8597 var p = new S.MathNode("mo", [p0("⁡", "text")]);
8598 return r.parentIsSupSub ? new S.MathNode("mrow", [c, p]) : S.newDocumentFragment([c, p]);
8599};
8600B({
8601 type: "operatorname",
8602 names: ["\\operatorname@", "\\operatornamewithlimits"],
8603 props: {
8604 numArgs: 1
8605 },
8606 handler: (r, e) => {
8607 var {
8608 parser: t,
8609 funcName: a
8610 } = r, n = e[0];
8611 return {
8612 type: "operatorname",
8613 mode: t.mode,
8614 body: Q(n),
8615 alwaysHandleSupSub: a === "\\operatornamewithlimits",
8616 limits: !1,
8617 parentIsSupSub: !1
8618 };
8619 },
8620 htmlBuilder: ta,
8621 mathmlBuilder: j1
8622});
8623m("\\operatorname", "\\@ifstar\\operatornamewithlimits\\operatorname@");
8624$0({
8625 type: "ordgroup",
8626 htmlBuilder(r, e) {
8627 return r.semisimple ? b.makeFragment(t0(r.body, e, !1)) : b.makeSpan(["mord"], t0(r.body, e, !0), e);
8628 },
8629 mathmlBuilder(r, e) {
8630 return G0(r.body, e, !0);
8631 }
8632});
8633B({
8634 type: "overline",
8635 names: ["\\overline"],
8636 props: {
8637 numArgs: 1
8638 },
8639 handler(r, e) {
8640 var {
8641 parser: t
8642 } = r, a = e[0];
8643 return {
8644 type: "overline",
8645 mode: t.mode,
8646 body: a
8647 };
8648 },
8649 htmlBuilder(r, e) {
8650 var t = P(r.body, e.havingCrampedStyle()), a = b.makeLineSpan("overline-line", e), n = e.fontMetrics().defaultRuleThickness, s = b.makeVList({
8651 positionType: "firstBaseline",
8652 children: [{
8653 type: "elem",
8654 elem: t
8655 }, {
8656 type: "kern",
8657 size: 3 * n
8658 }, {
8659 type: "elem",
8660 elem: a
8661 }, {
8662 type: "kern",
8663 size: n
8664 }]
8665 }, e);
8666 return b.makeSpan(["mord", "overline"], [s], e);
8667 },
8668 mathmlBuilder(r, e) {
8669 var t = new S.MathNode("mo", [new S.TextNode("‾")]);
8670 t.setAttribute("stretchy", "true");
8671 var a = new S.MathNode("mover", [X(r.body, e), t]);
8672 return a.setAttribute("accent", "true"), a;
8673 }
8674});
8675B({
8676 type: "phantom",
8677 names: ["\\phantom"],
8678 props: {
8679 numArgs: 1,
8680 allowedInText: !0
8681 },
8682 handler: (r, e) => {
8683 var {
8684 parser: t
8685 } = r, a = e[0];
8686 return {
8687 type: "phantom",
8688 mode: t.mode,
8689 body: Q(a)
8690 };
8691 },
8692 htmlBuilder: (r, e) => {
8693 var t = t0(r.body, e.withPhantom(), !1);
8694 return b.makeFragment(t);
8695 },
8696 mathmlBuilder: (r, e) => {
8697 var t = o0(r.body, e);
8698 return new S.MathNode("mphantom", t);
8699 }
8700});
8701B({
8702 type: "hphantom",
8703 names: ["\\hphantom"],
8704 props: {
8705 numArgs: 1,
8706 allowedInText: !0
8707 },
8708 handler: (r, e) => {
8709 var {
8710 parser: t
8711 } = r, a = e[0];
8712 return {
8713 type: "hphantom",
8714 mode: t.mode,
8715 body: a
8716 };
8717 },
8718 htmlBuilder: (r, e) => {
8719 var t = b.makeSpan([], [P(r.body, e.withPhantom())]);
8720 if (t.height = 0, t.depth = 0, t.children)
8721 for (var a = 0; a < t.children.length; a++)
8722 t.children[a].height = 0, t.children[a].depth = 0;
8723 return t = b.makeVList({
8724 positionType: "firstBaseline",
8725 children: [{
8726 type: "elem",
8727 elem: t
8728 }]
8729 }, e), b.makeSpan(["mord"], [t], e);
8730 },
8731 mathmlBuilder: (r, e) => {
8732 var t = o0(Q(r.body), e), a = new S.MathNode("mphantom", t), n = new S.MathNode("mpadded", [a]);
8733 return n.setAttribute("height", "0px"), n.setAttribute("depth", "0px"), n;
8734 }
8735});
8736B({
8737 type: "vphantom",
8738 names: ["\\vphantom"],
8739 props: {
8740 numArgs: 1,
8741 allowedInText: !0
8742 },
8743 handler: (r, e) => {
8744 var {
8745 parser: t
8746 } = r, a = e[0];
8747 return {
8748 type: "vphantom",
8749 mode: t.mode,
8750 body: a
8751 };
8752 },
8753 htmlBuilder: (r, e) => {
8754 var t = b.makeSpan(["inner"], [P(r.body, e.withPhantom())]), a = b.makeSpan(["fix"], []);
8755 return b.makeSpan(["mord", "rlap"], [t, a], e);
8756 },
8757 mathmlBuilder: (r, e) => {
8758 var t = o0(Q(r.body), e), a = new S.MathNode("mphantom", t), n = new S.MathNode("mpadded", [a]);
8759 return n.setAttribute("width", "0px"), n;
8760 }
8761});
8762B({
8763 type: "raisebox",
8764 names: ["\\raisebox"],
8765 props: {
8766 numArgs: 2,
8767 argTypes: ["size", "hbox"],
8768 allowedInText: !0
8769 },
8770 handler(r, e) {
8771 var {
8772 parser: t
8773 } = r, a = F(e[0], "size").value, n = e[1];
8774 return {
8775 type: "raisebox",
8776 mode: t.mode,
8777 dy: a,
8778 body: n
8779 };
8780 },
8781 htmlBuilder(r, e) {
8782 var t = P(r.body, e), a = K(r.dy, e);
8783 return b.makeVList({
8784 positionType: "shift",
8785 positionData: -a,
8786 children: [{
8787 type: "elem",
8788 elem: t
8789 }]
8790 }, e);
8791 },
8792 mathmlBuilder(r, e) {
8793 var t = new S.MathNode("mpadded", [X(r.body, e)]), a = r.dy.number + r.dy.unit;
8794 return t.setAttribute("voffset", a), t;
8795 }
8796});
8797B({
8798 type: "internal",
8799 names: ["\\relax"],
8800 props: {
8801 numArgs: 0,
8802 allowedInText: !0
8803 },
8804 handler(r) {
8805 var {
8806 parser: e
8807 } = r;
8808 return {
8809 type: "internal",
8810 mode: e.mode
8811 };
8812 }
8813});
8814B({
8815 type: "rule",
8816 names: ["\\rule"],
8817 props: {
8818 numArgs: 2,
8819 numOptionalArgs: 1,
8820 argTypes: ["size", "size", "size"]
8821 },
8822 handler(r, e, t) {
8823 var {
8824 parser: a
8825 } = r, n = t[0], s = F(e[0], "size"), o = F(e[1], "size");
8826 return {
8827 type: "rule",
8828 mode: a.mode,
8829 shift: n && F(n, "size").value,
8830 width: s.value,
8831 height: o.value
8832 };
8833 },
8834 htmlBuilder(r, e) {
8835 var t = b.makeSpan(["mord", "rule"], [], e), a = K(r.width, e), n = K(r.height, e), s = r.shift ? K(r.shift, e) : 0;
8836 return t.style.borderRightWidth = A(a), t.style.borderTopWidth = A(n), t.style.bottom = A(s), t.width = a, t.height = n + s, t.depth = -s, t.maxFontSize = n * 1.125 * e.sizeMultiplier, t;
8837 },
8838 mathmlBuilder(r, e) {
8839 var t = K(r.width, e), a = K(r.height, e), n = r.shift ? K(r.shift, e) : 0, s = e.color && e.getColor() || "black", o = new S.MathNode("mspace");
8840 o.setAttribute("mathbackground", s), o.setAttribute("width", A(t)), o.setAttribute("height", A(a));
8841 var h = new S.MathNode("mpadded", [o]);
8842 return n >= 0 ? h.setAttribute("height", A(n)) : (h.setAttribute("height", A(n)), h.setAttribute("depth", A(-n))), h.setAttribute("voffset", A(n)), h;
8843 }
8844});
8845function ra(r, e, t) {
8846 for (var a = t0(r, e, !1), n = e.sizeMultiplier / t.sizeMultiplier, s = 0; s < a.length; s++) {
8847 var o = a[s].classes.indexOf("sizing");
8848 o < 0 ? Array.prototype.push.apply(a[s].classes, e.sizingClasses(t)) : a[s].classes[o + 1] === "reset-size" + e.size && (a[s].classes[o + 1] = "reset-size" + t.size), a[s].height *= n, a[s].depth *= n;
8849 }
8850 return b.makeFragment(a);
8851}
8852var ar = ["\\tiny", "\\sixptsize", "\\scriptsize", "\\footnotesize", "\\small", "\\normalsize", "\\large", "\\Large", "\\LARGE", "\\huge", "\\Huge"], Z1 = (r, e) => {
8853 var t = e.havingSize(r.size);
8854 return ra(r.body, t, e);
8855};
8856B({
8857 type: "sizing",
8858 names: ar,
8859 props: {
8860 numArgs: 0,
8861 allowedInText: !0
8862 },
8863 handler: (r, e) => {
8864 var {
8865 breakOnTokenText: t,
8866 funcName: a,
8867 parser: n
8868 } = r, s = n.parseExpression(!1, t);
8869 return {
8870 type: "sizing",
8871 mode: n.mode,
8872 // Figure out what size to use based on the list of functions above
8873 size: ar.indexOf(a) + 1,
8874 body: s
8875 };
8876 },
8877 htmlBuilder: Z1,
8878 mathmlBuilder: (r, e) => {
8879 var t = e.havingSize(r.size), a = o0(r.body, t), n = new S.MathNode("mstyle", a);
8880 return n.setAttribute("mathsize", A(t.sizeMultiplier)), n;
8881 }
8882});
8883B({
8884 type: "smash",
8885 names: ["\\smash"],
8886 props: {
8887 numArgs: 1,
8888 numOptionalArgs: 1,
8889 allowedInText: !0
8890 },
8891 handler: (r, e, t) => {
8892 var {
8893 parser: a
8894 } = r, n = !1, s = !1, o = t[0] && F(t[0], "ordgroup");
8895 if (o)
8896 for (var h = "", c = 0; c < o.body.length; ++c) {
8897 var p = o.body[c];
8898 if (h = p.text, h === "t")
8899 n = !0;
8900 else if (h === "b")
8901 s = !0;
8902 else {
8903 n = !1, s = !1;
8904 break;
8905 }
8906 }
8907 else
8908 n = !0, s = !0;
8909 var g = e[0];
8910 return {
8911 type: "smash",
8912 mode: a.mode,
8913 body: g,
8914 smashHeight: n,
8915 smashDepth: s
8916 };
8917 },
8918 htmlBuilder: (r, e) => {
8919 var t = b.makeSpan([], [P(r.body, e)]);
8920 if (!r.smashHeight && !r.smashDepth)
8921 return t;
8922 if (r.smashHeight && (t.height = 0, t.children))
8923 for (var a = 0; a < t.children.length; a++)
8924 t.children[a].height = 0;
8925 if (r.smashDepth && (t.depth = 0, t.children))
8926 for (var n = 0; n < t.children.length; n++)
8927 t.children[n].depth = 0;
8928 var s = b.makeVList({
8929 positionType: "firstBaseline",
8930 children: [{
8931 type: "elem",
8932 elem: t
8933 }]
8934 }, e);
8935 return b.makeSpan(["mord"], [s], e);
8936 },
8937 mathmlBuilder: (r, e) => {
8938 var t = new S.MathNode("mpadded", [X(r.body, e)]);
8939 return r.smashHeight && t.setAttribute("height", "0px"), r.smashDepth && t.setAttribute("depth", "0px"), t;
8940 }
8941});
8942B({
8943 type: "sqrt",
8944 names: ["\\sqrt"],
8945 props: {
8946 numArgs: 1,
8947 numOptionalArgs: 1
8948 },
8949 handler(r, e, t) {
8950 var {
8951 parser: a
8952 } = r, n = t[0], s = e[0];
8953 return {
8954 type: "sqrt",
8955 mode: a.mode,
8956 body: s,
8957 index: n
8958 };
8959 },
8960 htmlBuilder(r, e) {
8961 var t = P(r.body, e.havingCrampedStyle());
8962 t.height === 0 && (t.height = e.fontMetrics().xHeight), t = b.wrapFragment(t, e);
8963 var a = e.fontMetrics(), n = a.defaultRuleThickness, s = n;
8964 e.style.id < R.TEXT.id && (s = e.fontMetrics().xHeight);
8965 var o = n + s / 4, h = t.height + t.depth + o + n, {
8966 span: c,
8967 ruleWidth: p,
8968 advanceWidth: g
8969 } = B0.sqrtImage(h, e), y = c.height - p;
8970 y > t.height + t.depth + o && (o = (o + y - t.height - t.depth) / 2);
8971 var w = c.height - t.height - o - p;
8972 t.style.paddingLeft = A(g);
8973 var x = b.makeVList({
8974 positionType: "firstBaseline",
8975 children: [{
8976 type: "elem",
8977 elem: t,
8978 wrapperClasses: ["svg-align"]
8979 }, {
8980 type: "kern",
8981 size: -(t.height + w)
8982 }, {
8983 type: "elem",
8984 elem: c
8985 }, {
8986 type: "kern",
8987 size: p
8988 }]
8989 }, e);
8990 if (r.index) {
8991 var z = e.havingStyle(R.SCRIPTSCRIPT), T = P(r.index, z, e), C = 0.6 * (x.height - x.depth), N = b.makeVList({
8992 positionType: "shift",
8993 positionData: -C,
8994 children: [{
8995 type: "elem",
8996 elem: T
8997 }]
8998 }, e), O = b.makeSpan(["root"], [N]);
8999 return b.makeSpan(["mord", "sqrt"], [O, x], e);
9000 } else
9001 return b.makeSpan(["mord", "sqrt"], [x], e);
9002 },
9003 mathmlBuilder(r, e) {
9004 var {
9005 body: t,
9006 index: a
9007 } = r;
9008 return a ? new S.MathNode("mroot", [X(t, e), X(a, e)]) : new S.MathNode("msqrt", [X(t, e)]);
9009 }
9010});
9011var nr = {
9012 display: R.DISPLAY,
9013 text: R.TEXT,
9014 script: R.SCRIPT,
9015 scriptscript: R.SCRIPTSCRIPT
9016};
9017B({
9018 type: "styling",
9019 names: ["\\displaystyle", "\\textstyle", "\\scriptstyle", "\\scriptscriptstyle"],
9020 props: {
9021 numArgs: 0,
9022 allowedInText: !0,
9023 primitive: !0
9024 },
9025 handler(r, e) {
9026 var {
9027 breakOnTokenText: t,
9028 funcName: a,
9029 parser: n
9030 } = r, s = n.parseExpression(!0, t), o = a.slice(1, a.length - 5);
9031 return {
9032 type: "styling",
9033 mode: n.mode,
9034 // Figure out what style to use by pulling out the style from
9035 // the function name
9036 style: o,
9037 body: s
9038 };
9039 },
9040 htmlBuilder(r, e) {
9041 var t = nr[r.style], a = e.havingStyle(t).withFont("");
9042 return ra(r.body, a, e);
9043 },
9044 mathmlBuilder(r, e) {
9045 var t = nr[r.style], a = e.havingStyle(t), n = o0(r.body, a), s = new S.MathNode("mstyle", n), o = {
9046 display: ["0", "true"],
9047 text: ["0", "false"],
9048 script: ["1", "false"],
9049 scriptscript: ["2", "false"]
9050 }, h = o[r.style];
9051 return s.setAttribute("scriptlevel", h[0]), s.setAttribute("displaystyle", h[1]), s;
9052 }
9053});
9054var K1 = function(e, t) {
9055 var a = e.base;
9056 if (a)
9057 if (a.type === "op") {
9058 var n = a.limits && (t.style.size === R.DISPLAY.size || a.alwaysHandleSupSub);
9059 return n ? re : null;
9060 } else if (a.type === "operatorname") {
9061 var s = a.alwaysHandleSupSub && (t.style.size === R.DISPLAY.size || a.limits);
9062 return s ? ta : null;
9063 } else {
9064 if (a.type === "accent")
9065 return I.isCharacterBox(a.base) ? xt : null;
9066 if (a.type === "horizBrace") {
9067 var o = !e.sub;
9068 return o === a.isOver ? Qr : null;
9069 } else
9070 return null;
9071 }
9072 else
9073 return null;
9074};
9075$0({
9076 type: "supsub",
9077 htmlBuilder(r, e) {
9078 var t = K1(r, e);
9079 if (t)
9080 return t(r, e);
9081 var {
9082 base: a,
9083 sup: n,
9084 sub: s
9085 } = r, o = P(a, e), h, c, p = e.fontMetrics(), g = 0, y = 0, w = a && I.isCharacterBox(a);
9086 if (n) {
9087 var x = e.havingStyle(e.style.sup());
9088 h = P(n, x, e), w || (g = o.height - x.fontMetrics().supDrop * x.sizeMultiplier / e.sizeMultiplier);
9089 }
9090 if (s) {
9091 var z = e.havingStyle(e.style.sub());
9092 c = P(s, z, e), w || (y = o.depth + z.fontMetrics().subDrop * z.sizeMultiplier / e.sizeMultiplier);
9093 }
9094 var T;
9095 e.style === R.DISPLAY ? T = p.sup1 : e.style.cramped ? T = p.sup3 : T = p.sup2;
9096 var C = e.sizeMultiplier, N = A(0.5 / p.ptPerEm / C), O = null;
9097 if (c) {
9098 var H = r.base && r.base.type === "op" && r.base.name && (r.base.name === "\\oiint" || r.base.name === "\\oiiint");
9099 (o instanceof f0 || H) && (O = A(-o.italic));
9100 }
9101 var V;
9102 if (h && c) {
9103 g = Math.max(g, T, h.depth + 0.25 * p.xHeight), y = Math.max(y, p.sub2);
9104 var L = p.defaultRuleThickness, U = 4 * L;
9105 if (g - h.depth - (c.height - y) < U) {
9106 y = U - (g - h.depth) + c.height;
9107 var G = 0.8 * p.xHeight - (g - h.depth);
9108 G > 0 && (g += G, y -= G);
9109 }
9110 var j = [{
9111 type: "elem",
9112 elem: c,
9113 shift: y,
9114 marginRight: N,
9115 marginLeft: O
9116 }, {
9117 type: "elem",
9118 elem: h,
9119 shift: -g,
9120 marginRight: N
9121 }];
9122 V = b.makeVList({
9123 positionType: "individualShift",
9124 children: j
9125 }, e);
9126 } else if (c) {
9127 y = Math.max(y, p.sub1, c.height - 0.8 * p.xHeight);
9128 var Y = [{
9129 type: "elem",
9130 elem: c,
9131 marginLeft: O,
9132 marginRight: N
9133 }];
9134 V = b.makeVList({
9135 positionType: "shift",
9136 positionData: y,
9137 children: Y
9138 }, e);
9139 } else if (h)
9140 g = Math.max(g, T, h.depth + 0.25 * p.xHeight), V = b.makeVList({
9141 positionType: "shift",
9142 positionData: -g,
9143 children: [{
9144 type: "elem",
9145 elem: h,
9146 marginRight: N
9147 }]
9148 }, e);
9149 else
9150 throw new Error("supsub must have either sup or sub.");
9151 var M0 = lt(o, "right") || "mord";
9152 return b.makeSpan([M0], [o, b.makeSpan(["msupsub"], [V])], e);
9153 },
9154 mathmlBuilder(r, e) {
9155 var t = !1, a, n;
9156 r.base && r.base.type === "horizBrace" && (n = !!r.sup, n === r.base.isOver && (t = !0, a = r.base.isOver)), r.base && (r.base.type === "op" || r.base.type === "operatorname") && (r.base.parentIsSupSub = !0);
9157 var s = [X(r.base, e)];
9158 r.sub && s.push(X(r.sub, e)), r.sup && s.push(X(r.sup, e));
9159 var o;
9160 if (t)
9161 o = a ? "mover" : "munder";
9162 else if (r.sub)
9163 if (r.sup) {
9164 var p = r.base;
9165 p && p.type === "op" && p.limits && e.style === R.DISPLAY || p && p.type === "operatorname" && p.alwaysHandleSupSub && (e.style === R.DISPLAY || p.limits) ? o = "munderover" : o = "msubsup";
9166 } else {
9167 var c = r.base;
9168 c && c.type === "op" && c.limits && (e.style === R.DISPLAY || c.alwaysHandleSupSub) || c && c.type === "operatorname" && c.alwaysHandleSupSub && (c.limits || e.style === R.DISPLAY) ? o = "munder" : o = "msub";
9169 }
9170 else {
9171 var h = r.base;
9172 h && h.type === "op" && h.limits && (e.style === R.DISPLAY || h.alwaysHandleSupSub) || h && h.type === "operatorname" && h.alwaysHandleSupSub && (h.limits || e.style === R.DISPLAY) ? o = "mover" : o = "msup";
9173 }
9174 return new S.MathNode(o, s);
9175 }
9176});
9177$0({
9178 type: "atom",
9179 htmlBuilder(r, e) {
9180 return b.mathsym(r.text, r.mode, e, ["m" + r.family]);
9181 },
9182 mathmlBuilder(r, e) {
9183 var t = new S.MathNode("mo", [p0(r.text, r.mode)]);
9184 if (r.family === "bin") {
9185 var a = bt(r, e);
9186 a === "bold-italic" && t.setAttribute("mathvariant", a);
9187 } else
9188 r.family === "punct" ? t.setAttribute("separator", "true") : (r.family === "open" || r.family === "close") && t.setAttribute("stretchy", "false");
9189 return t;
9190 }
9191});
9192var aa = {
9193 mi: "italic",
9194 mn: "normal",
9195 mtext: "normal"
9196};
9197$0({
9198 type: "mathord",
9199 htmlBuilder(r, e) {
9200 return b.makeOrd(r, e, "mathord");
9201 },
9202 mathmlBuilder(r, e) {
9203 var t = new S.MathNode("mi", [p0(r.text, r.mode, e)]), a = bt(r, e) || "italic";
9204 return a !== aa[t.type] && t.setAttribute("mathvariant", a), t;
9205 }
9206});
9207$0({
9208 type: "textord",
9209 htmlBuilder(r, e) {
9210 return b.makeOrd(r, e, "textord");
9211 },
9212 mathmlBuilder(r, e) {
9213 var t = p0(r.text, r.mode, e), a = bt(r, e) || "normal", n;
9214 return r.mode === "text" ? n = new S.MathNode("mtext", [t]) : /[0-9]/.test(r.text) ? n = new S.MathNode("mn", [t]) : r.text === "\\prime" ? n = new S.MathNode("mo", [t]) : n = new S.MathNode("mi", [t]), a !== aa[n.type] && n.setAttribute("mathvariant", a), n;
9215 }
9216});
9217var et = {
9218 "\\nobreak": "nobreak",
9219 "\\allowbreak": "allowbreak"
9220}, tt = {
9221 " ": {},
9222 "\\ ": {},
9223 "~": {
9224 className: "nobreak"
9225 },
9226 "\\space": {},
9227 "\\nobreakspace": {
9228 className: "nobreak"
9229 }
9230};
9231$0({
9232 type: "spacing",
9233 htmlBuilder(r, e) {
9234 if (tt.hasOwnProperty(r.text)) {
9235 var t = tt[r.text].className || "";
9236 if (r.mode === "text") {
9237 var a = b.makeOrd(r, e, "textord");
9238 return a.classes.push(t), a;
9239 } else
9240 return b.makeSpan(["mspace", t], [b.mathsym(r.text, r.mode, e)], e);
9241 } else {
9242 if (et.hasOwnProperty(r.text))
9243 return b.makeSpan(["mspace", et[r.text]], [], e);
9244 throw new M('Unknown type of space "' + r.text + '"');
9245 }
9246 },
9247 mathmlBuilder(r, e) {
9248 var t;
9249 if (tt.hasOwnProperty(r.text))
9250 t = new S.MathNode("mtext", [new S.TextNode(" ")]);
9251 else {
9252 if (et.hasOwnProperty(r.text))
9253 return new S.MathNode("mspace");
9254 throw new M('Unknown type of space "' + r.text + '"');
9255 }
9256 return t;
9257 }
9258});
9259var ir = () => {
9260 var r = new S.MathNode("mtd", []);
9261 return r.setAttribute("width", "50%"), r;
9262};
9263$0({
9264 type: "tag",
9265 mathmlBuilder(r, e) {
9266 var t = new S.MathNode("mtable", [new S.MathNode("mtr", [ir(), new S.MathNode("mtd", [G0(r.body, e)]), ir(), new S.MathNode("mtd", [G0(r.tag, e)])])]);
9267 return t.setAttribute("width", "100%"), t;
9268 }
9269});
9270var sr = {
9271 "\\text": void 0,
9272 "\\textrm": "textrm",
9273 "\\textsf": "textsf",
9274 "\\texttt": "texttt",
9275 "\\textnormal": "textrm"
9276}, lr = {
9277 "\\textbf": "textbf",
9278 "\\textmd": "textmd"
9279}, J1 = {
9280 "\\textit": "textit",
9281 "\\textup": "textup"
9282}, or = (r, e) => {
9283 var t = r.font;
9284 return t ? sr[t] ? e.withTextFontFamily(sr[t]) : lr[t] ? e.withTextFontWeight(lr[t]) : e.withTextFontShape(J1[t]) : e;
9285};
9286B({
9287 type: "text",
9288 names: [
9289 // Font families
9290 "\\text",
9291 "\\textrm",
9292 "\\textsf",
9293 "\\texttt",
9294 "\\textnormal",
9295 // Font weights
9296 "\\textbf",
9297 "\\textmd",
9298 // Font Shapes
9299 "\\textit",
9300 "\\textup"
9301 ],
9302 props: {
9303 numArgs: 1,
9304 argTypes: ["text"],
9305 allowedInArgument: !0,
9306 allowedInText: !0
9307 },
9308 handler(r, e) {
9309 var {
9310 parser: t,
9311 funcName: a
9312 } = r, n = e[0];
9313 return {
9314 type: "text",
9315 mode: t.mode,
9316 body: Q(n),
9317 font: a
9318 };
9319 },
9320 htmlBuilder(r, e) {
9321 var t = or(r, e), a = t0(r.body, t, !0);
9322 return b.makeSpan(["mord", "text"], a, t);
9323 },
9324 mathmlBuilder(r, e) {
9325 var t = or(r, e);
9326 return G0(r.body, t);
9327 }
9328});
9329B({
9330 type: "underline",
9331 names: ["\\underline"],
9332 props: {
9333 numArgs: 1,
9334 allowedInText: !0
9335 },
9336 handler(r, e) {
9337 var {
9338 parser: t
9339 } = r;
9340 return {
9341 type: "underline",
9342 mode: t.mode,
9343 body: e[0]
9344 };
9345 },
9346 htmlBuilder(r, e) {
9347 var t = P(r.body, e), a = b.makeLineSpan("underline-line", e), n = e.fontMetrics().defaultRuleThickness, s = b.makeVList({
9348 positionType: "top",
9349 positionData: t.height,
9350 children: [{
9351 type: "kern",
9352 size: n
9353 }, {
9354 type: "elem",
9355 elem: a
9356 }, {
9357 type: "kern",
9358 size: 3 * n
9359 }, {
9360 type: "elem",
9361 elem: t
9362 }]
9363 }, e);
9364 return b.makeSpan(["mord", "underline"], [s], e);
9365 },
9366 mathmlBuilder(r, e) {
9367 var t = new S.MathNode("mo", [new S.TextNode("‾")]);
9368 t.setAttribute("stretchy", "true");
9369 var a = new S.MathNode("munder", [X(r.body, e), t]);
9370 return a.setAttribute("accentunder", "true"), a;
9371 }
9372});
9373B({
9374 type: "vcenter",
9375 names: ["\\vcenter"],
9376 props: {
9377 numArgs: 1,
9378 argTypes: ["original"],
9379 // In LaTeX, \vcenter can act only on a box.
9380 allowedInText: !1
9381 },
9382 handler(r, e) {
9383 var {
9384 parser: t
9385 } = r;
9386 return {
9387 type: "vcenter",
9388 mode: t.mode,
9389 body: e[0]
9390 };
9391 },
9392 htmlBuilder(r, e) {
9393 var t = P(r.body, e), a = e.fontMetrics().axisHeight, n = 0.5 * (t.height - a - (t.depth + a));
9394 return b.makeVList({
9395 positionType: "shift",
9396 positionData: n,
9397 children: [{
9398 type: "elem",
9399 elem: t
9400 }]
9401 }, e);
9402 },
9403 mathmlBuilder(r, e) {
9404 return new S.MathNode("mpadded", [X(r.body, e)], ["vcenter"]);
9405 }
9406});
9407B({
9408 type: "verb",
9409 names: ["\\verb"],
9410 props: {
9411 numArgs: 0,
9412 allowedInText: !0
9413 },
9414 handler(r, e, t) {
9415 throw new M("\\verb ended by end of line instead of matching delimiter");
9416 },
9417 htmlBuilder(r, e) {
9418 for (var t = ur(r), a = [], n = e.havingStyle(e.style.text()), s = 0; s < t.length; s++) {
9419 var o = t[s];
9420 o === "~" && (o = "\\textasciitilde"), a.push(b.makeSymbol(o, "Typewriter-Regular", r.mode, n, ["mord", "texttt"]));
9421 }
9422 return b.makeSpan(["mord", "text"].concat(n.sizingClasses(e)), b.tryCombineChars(a), n);
9423 },
9424 mathmlBuilder(r, e) {
9425 var t = new S.TextNode(ur(r)), a = new S.MathNode("mtext", [t]);
9426 return a.setAttribute("mathvariant", "monospace"), a;
9427 }
9428});
9429var ur = (r) => r.body.replace(/ /g, r.star ? "␣" : " "), F0 = Ar, na = `[ \r
9430 ]`, Q1 = "\\\\[a-zA-Z@]+", _1 = "\\\\[^\uD800-\uDFFF]", e4 = "(" + Q1 + ")" + na + "*", t4 = `\\\\(
9431|[ \r ]+
9432?)[ \r ]*`, mt = "[̀-ͯ]", r4 = new RegExp(mt + "+$"), a4 = "(" + na + "+)|" + // whitespace
9433(t4 + "|") + // \whitespace
9434"([!-\\[\\]-‧‪-퟿豈-￿]" + // single codepoint
9435(mt + "*") + // ...plus accents
9436"|[\uD800-\uDBFF][\uDC00-\uDFFF]" + // surrogate pair
9437(mt + "*") + // ...plus accents
9438"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5" + // \verb unstarred
9439("|" + e4) + // \macroName + spaces
9440("|" + _1 + ")");
9441class hr {
9442 // Category codes. The lexer only supports comment characters (14) for now.
9443 // MacroExpander additionally distinguishes active (13).
9444 constructor(e, t) {
9445 this.input = void 0, this.settings = void 0, this.tokenRegex = void 0, this.catcodes = void 0, this.input = e, this.settings = t, this.tokenRegex = new RegExp(a4, "g"), this.catcodes = {
9446 "%": 14,
9447 // comment character
9448 "~": 13
9449 // active character
9450 };
9451 }
9452 setCatcode(e, t) {
9453 this.catcodes[e] = t;
9454 }
9455 /**
9456 * This function lexes a single token.
9457 */
9458 lex() {
9459 var e = this.input, t = this.tokenRegex.lastIndex;
9460 if (t === e.length)
9461 return new x0("EOF", new u0(this, t, t));
9462 var a = this.tokenRegex.exec(e);
9463 if (a === null || a.index !== t)
9464 throw new M("Unexpected character: '" + e[t] + "'", new x0(e[t], new u0(this, t, t + 1)));
9465 var n = a[6] || a[3] || (a[2] ? "\\ " : " ");
9466 if (this.catcodes[n] === 14) {
9467 var s = e.indexOf(`
9468`, this.tokenRegex.lastIndex);
9469 return s === -1 ? (this.tokenRegex.lastIndex = e.length, this.settings.reportNonstrict("commentAtEnd", "% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")) : this.tokenRegex.lastIndex = s + 1, this.lex();
9470 }
9471 return new x0(n, new u0(this, t, this.tokenRegex.lastIndex));
9472 }
9473}
9474class n4 {
9475 /**
9476 * Both arguments are optional. The first argument is an object of
9477 * built-in mappings which never change. The second argument is an object
9478 * of initial (global-level) mappings, which will constantly change
9479 * according to any global/top-level `set`s done.
9480 */
9481 constructor(e, t) {
9482 e === void 0 && (e = {}), t === void 0 && (t = {}), this.current = void 0, this.builtins = void 0, this.undefStack = void 0, this.current = t, this.builtins = e, this.undefStack = [];
9483 }
9484 /**
9485 * Start a new nested group, affecting future local `set`s.
9486 */
9487 beginGroup() {
9488 this.undefStack.push({});
9489 }
9490 /**
9491 * End current nested group, restoring values before the group began.
9492 */
9493 endGroup() {
9494 if (this.undefStack.length === 0)
9495 throw new M("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");
9496 var e = this.undefStack.pop();
9497 for (var t in e)
9498 e.hasOwnProperty(t) && (e[t] == null ? delete this.current[t] : this.current[t] = e[t]);
9499 }
9500 /**
9501 * Ends all currently nested groups (if any), restoring values before the
9502 * groups began. Useful in case of an error in the middle of parsing.
9503 */
9504 endGroups() {
9505 for (; this.undefStack.length > 0; )
9506 this.endGroup();
9507 }
9508 /**
9509 * Detect whether `name` has a definition. Equivalent to
9510 * `get(name) != null`.
9511 */
9512 has(e) {
9513 return this.current.hasOwnProperty(e) || this.builtins.hasOwnProperty(e);
9514 }
9515 /**
9516 * Get the current value of a name, or `undefined` if there is no value.
9517 *
9518 * Note: Do not use `if (namespace.get(...))` to detect whether a macro
9519 * is defined, as the definition may be the empty string which evaluates
9520 * to `false` in JavaScript. Use `if (namespace.get(...) != null)` or
9521 * `if (namespace.has(...))`.
9522 */
9523 get(e) {
9524 return this.current.hasOwnProperty(e) ? this.current[e] : this.builtins[e];
9525 }
9526 /**
9527 * Set the current value of a name, and optionally set it globally too.
9528 * Local set() sets the current value and (when appropriate) adds an undo
9529 * operation to the undo stack. Global set() may change the undo
9530 * operation at every level, so takes time linear in their number.
9531 * A value of undefined means to delete existing definitions.
9532 */
9533 set(e, t, a) {
9534 if (a === void 0 && (a = !1), a) {
9535 for (var n = 0; n < this.undefStack.length; n++)
9536 delete this.undefStack[n][e];
9537 this.undefStack.length > 0 && (this.undefStack[this.undefStack.length - 1][e] = t);
9538 } else {
9539 var s = this.undefStack[this.undefStack.length - 1];
9540 s && !s.hasOwnProperty(e) && (s[e] = this.current[e]);
9541 }
9542 t == null ? delete this.current[e] : this.current[e] = t;
9543 }
9544}
9545var i4 = Wr;
9546m("\\noexpand", function(r) {
9547 var e = r.popToken();
9548 return r.isExpandable(e.text) && (e.noexpand = !0, e.treatAsRelax = !0), {
9549 tokens: [e],
9550 numArgs: 0
9551 };
9552});
9553m("\\expandafter", function(r) {
9554 var e = r.popToken();
9555 return r.expandOnce(!0), {
9556 tokens: [e],
9557 numArgs: 0
9558 };
9559});
9560m("\\@firstoftwo", function(r) {
9561 var e = r.consumeArgs(2);
9562 return {
9563 tokens: e[0],
9564 numArgs: 0
9565 };
9566});
9567m("\\@secondoftwo", function(r) {
9568 var e = r.consumeArgs(2);
9569 return {
9570 tokens: e[1],
9571 numArgs: 0
9572 };
9573});
9574m("\\@ifnextchar", function(r) {
9575 var e = r.consumeArgs(3);
9576 r.consumeSpaces();
9577 var t = r.future();
9578 return e[0].length === 1 && e[0][0].text === t.text ? {
9579 tokens: e[1],
9580 numArgs: 0
9581 } : {
9582 tokens: e[2],
9583 numArgs: 0
9584 };
9585});
9586m("\\@ifstar", "\\@ifnextchar *{\\@firstoftwo{#1}}");
9587m("\\TextOrMath", function(r) {
9588 var e = r.consumeArgs(2);
9589 return r.mode === "text" ? {
9590 tokens: e[0],
9591 numArgs: 0
9592 } : {
9593 tokens: e[1],
9594 numArgs: 0
9595 };
9596});
9597var mr = {
9598 0: 0,
9599 1: 1,
9600 2: 2,
9601 3: 3,
9602 4: 4,
9603 5: 5,
9604 6: 6,
9605 7: 7,
9606 8: 8,
9607 9: 9,
9608 a: 10,
9609 A: 10,
9610 b: 11,
9611 B: 11,
9612 c: 12,
9613 C: 12,
9614 d: 13,
9615 D: 13,
9616 e: 14,
9617 E: 14,
9618 f: 15,
9619 F: 15
9620};
9621m("\\char", function(r) {
9622 var e = r.popToken(), t, a = "";
9623 if (e.text === "'")
9624 t = 8, e = r.popToken();
9625 else if (e.text === '"')
9626 t = 16, e = r.popToken();
9627 else if (e.text === "`")
9628 if (e = r.popToken(), e.text[0] === "\\")
9629 a = e.text.charCodeAt(1);
9630 else {
9631 if (e.text === "EOF")
9632 throw new M("\\char` missing argument");
9633 a = e.text.charCodeAt(0);
9634 }
9635 else
9636 t = 10;
9637 if (t) {
9638 if (a = mr[e.text], a == null || a >= t)
9639 throw new M("Invalid base-" + t + " digit " + e.text);
9640 for (var n; (n = mr[r.future().text]) != null && n < t; )
9641 a *= t, a += n, r.popToken();
9642 }
9643 return "\\@char{" + a + "}";
9644});
9645var Bt = (r, e, t) => {
9646 var a = r.consumeArg().tokens;
9647 if (a.length !== 1)
9648 throw new M("\\newcommand's first argument must be a macro name");
9649 var n = a[0].text, s = r.isDefined(n);
9650 if (s && !e)
9651 throw new M("\\newcommand{" + n + "} attempting to redefine " + (n + "; use \\renewcommand"));
9652 if (!s && !t)
9653 throw new M("\\renewcommand{" + n + "} when command " + n + " does not yet exist; use \\newcommand");
9654 var o = 0;
9655 if (a = r.consumeArg().tokens, a.length === 1 && a[0].text === "[") {
9656 for (var h = "", c = r.expandNextToken(); c.text !== "]" && c.text !== "EOF"; )
9657 h += c.text, c = r.expandNextToken();
9658 if (!h.match(/^\s*[0-9]+\s*$/))
9659 throw new M("Invalid number of arguments: " + h);
9660 o = parseInt(h), a = r.consumeArg().tokens;
9661 }
9662 return r.macros.set(n, {
9663 tokens: a,
9664 numArgs: o
9665 }), "";
9666};
9667m("\\newcommand", (r) => Bt(r, !1, !0));
9668m("\\renewcommand", (r) => Bt(r, !0, !1));
9669m("\\providecommand", (r) => Bt(r, !0, !0));
9670m("\\message", (r) => {
9671 var e = r.consumeArgs(1)[0];
9672 return console.log(e.reverse().map((t) => t.text).join("")), "";
9673});
9674m("\\errmessage", (r) => {
9675 var e = r.consumeArgs(1)[0];
9676 return console.error(e.reverse().map((t) => t.text).join("")), "";
9677});
9678m("\\show", (r) => {
9679 var e = r.popToken(), t = e.text;
9680 return console.log(e, r.macros.get(t), F0[t], $.math[t], $.text[t]), "";
9681});
9682m("\\bgroup", "{");
9683m("\\egroup", "}");
9684m("~", "\\nobreakspace");
9685m("\\lq", "`");
9686m("\\rq", "'");
9687m("\\aa", "\\r a");
9688m("\\AA", "\\r A");
9689m("\\textcopyright", "\\html@mathml{\\textcircled{c}}{\\char`©}");
9690m("\\copyright", "\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");
9691m("\\textregistered", "\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}");
9692m("ℬ", "\\mathscr{B}");
9693m("ℰ", "\\mathscr{E}");
9694m("ℱ", "\\mathscr{F}");
9695m("ℋ", "\\mathscr{H}");
9696m("ℐ", "\\mathscr{I}");
9697m("ℒ", "\\mathscr{L}");
9698m("ℳ", "\\mathscr{M}");
9699m("ℛ", "\\mathscr{R}");
9700m("ℭ", "\\mathfrak{C}");
9701m("ℌ", "\\mathfrak{H}");
9702m("ℨ", "\\mathfrak{Z}");
9703m("\\Bbbk", "\\Bbb{k}");
9704m("·", "\\cdotp");
9705m("\\llap", "\\mathllap{\\textrm{#1}}");
9706m("\\rlap", "\\mathrlap{\\textrm{#1}}");
9707m("\\clap", "\\mathclap{\\textrm{#1}}");
9708m("\\mathstrut", "\\vphantom{(}");
9709m("\\underbar", "\\underline{\\text{#1}}");
9710m("\\not", '\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}');
9711m("\\neq", "\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}");
9712m("\\ne", "\\neq");
9713m("≠", "\\neq");
9714m("\\notin", "\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`∉}}");
9715m("∉", "\\notin");
9716m("≘", "\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`≘}}");
9717m("≙", "\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`≘}}");
9718m("≚", "\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`≚}}");
9719m("≛", "\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`≛}}");
9720m("≝", "\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`≝}}");
9721m("≞", "\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`≞}}");
9722m("≟", "\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`≟}}");
9723m("⟂", "\\perp");
9724m("‼", "\\mathclose{!\\mkern-0.8mu!}");
9725m("∌", "\\notni");
9726m("⌜", "\\ulcorner");
9727m("⌝", "\\urcorner");
9728m("⌞", "\\llcorner");
9729m("⌟", "\\lrcorner");
9730m("©", "\\copyright");
9731m("®", "\\textregistered");
9732m("️", "\\textregistered");
9733m("\\ulcorner", '\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');
9734m("\\urcorner", '\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');
9735m("\\llcorner", '\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');
9736m("\\lrcorner", '\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');
9737m("\\vdots", "\\mathord{\\varvdots\\rule{0pt}{15pt}}");
9738m("⋮", "\\vdots");
9739m("\\varGamma", "\\mathit{\\Gamma}");
9740m("\\varDelta", "\\mathit{\\Delta}");
9741m("\\varTheta", "\\mathit{\\Theta}");
9742m("\\varLambda", "\\mathit{\\Lambda}");
9743m("\\varXi", "\\mathit{\\Xi}");
9744m("\\varPi", "\\mathit{\\Pi}");
9745m("\\varSigma", "\\mathit{\\Sigma}");
9746m("\\varUpsilon", "\\mathit{\\Upsilon}");
9747m("\\varPhi", "\\mathit{\\Phi}");
9748m("\\varPsi", "\\mathit{\\Psi}");
9749m("\\varOmega", "\\mathit{\\Omega}");
9750m("\\substack", "\\begin{subarray}{c}#1\\end{subarray}");
9751m("\\colon", "\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");
9752m("\\boxed", "\\fbox{$\\displaystyle{#1}$}");
9753m("\\iff", "\\DOTSB\\;\\Longleftrightarrow\\;");
9754m("\\implies", "\\DOTSB\\;\\Longrightarrow\\;");
9755m("\\impliedby", "\\DOTSB\\;\\Longleftarrow\\;");
9756var cr = {
9757 ",": "\\dotsc",
9758 "\\not": "\\dotsb",
9759 // \keybin@ checks for the following:
9760 "+": "\\dotsb",
9761 "=": "\\dotsb",
9762 "<": "\\dotsb",
9763 ">": "\\dotsb",
9764 "-": "\\dotsb",
9765 "*": "\\dotsb",
9766 ":": "\\dotsb",
9767 // Symbols whose definition starts with \DOTSB:
9768 "\\DOTSB": "\\dotsb",
9769 "\\coprod": "\\dotsb",
9770 "\\bigvee": "\\dotsb",
9771 "\\bigwedge": "\\dotsb",
9772 "\\biguplus": "\\dotsb",
9773 "\\bigcap": "\\dotsb",
9774 "\\bigcup": "\\dotsb",
9775 "\\prod": "\\dotsb",
9776 "\\sum": "\\dotsb",
9777 "\\bigotimes": "\\dotsb",
9778 "\\bigoplus": "\\dotsb",
9779 "\\bigodot": "\\dotsb",
9780 "\\bigsqcup": "\\dotsb",
9781 "\\And": "\\dotsb",
9782 "\\longrightarrow": "\\dotsb",
9783 "\\Longrightarrow": "\\dotsb",
9784 "\\longleftarrow": "\\dotsb",
9785 "\\Longleftarrow": "\\dotsb",
9786 "\\longleftrightarrow": "\\dotsb",
9787 "\\Longleftrightarrow": "\\dotsb",
9788 "\\mapsto": "\\dotsb",
9789 "\\longmapsto": "\\dotsb",
9790 "\\hookrightarrow": "\\dotsb",
9791 "\\doteq": "\\dotsb",
9792 // Symbols whose definition starts with \mathbin:
9793 "\\mathbin": "\\dotsb",
9794 // Symbols whose definition starts with \mathrel:
9795 "\\mathrel": "\\dotsb",
9796 "\\relbar": "\\dotsb",
9797 "\\Relbar": "\\dotsb",
9798 "\\xrightarrow": "\\dotsb",
9799 "\\xleftarrow": "\\dotsb",
9800 // Symbols whose definition starts with \DOTSI:
9801 "\\DOTSI": "\\dotsi",
9802 "\\int": "\\dotsi",
9803 "\\oint": "\\dotsi",
9804 "\\iint": "\\dotsi",
9805 "\\iiint": "\\dotsi",
9806 "\\iiiint": "\\dotsi",
9807 "\\idotsint": "\\dotsi",
9808 // Symbols whose definition starts with \DOTSX:
9809 "\\DOTSX": "\\dotsx"
9810};
9811m("\\dots", function(r) {
9812 var e = "\\dotso", t = r.expandAfterFuture().text;
9813 return t in cr ? e = cr[t] : (t.slice(0, 4) === "\\not" || t in $.math && I.contains(["bin", "rel"], $.math[t].group)) && (e = "\\dotsb"), e;
9814});
9815var Dt = {
9816 // \rightdelim@ checks for the following:
9817 ")": !0,
9818 "]": !0,
9819 "\\rbrack": !0,
9820 "\\}": !0,
9821 "\\rbrace": !0,
9822 "\\rangle": !0,
9823 "\\rceil": !0,
9824 "\\rfloor": !0,
9825 "\\rgroup": !0,
9826 "\\rmoustache": !0,
9827 "\\right": !0,
9828 "\\bigr": !0,
9829 "\\biggr": !0,
9830 "\\Bigr": !0,
9831 "\\Biggr": !0,
9832 // \extra@ also tests for the following:
9833 $: !0,
9834 // \extrap@ checks for the following:
9835 ";": !0,
9836 ".": !0,
9837 ",": !0
9838};
9839m("\\dotso", function(r) {
9840 var e = r.future().text;
9841 return e in Dt ? "\\ldots\\," : "\\ldots";
9842});
9843m("\\dotsc", function(r) {
9844 var e = r.future().text;
9845 return e in Dt && e !== "," ? "\\ldots\\," : "\\ldots";
9846});
9847m("\\cdots", function(r) {
9848 var e = r.future().text;
9849 return e in Dt ? "\\@cdots\\," : "\\@cdots";
9850});
9851m("\\dotsb", "\\cdots");
9852m("\\dotsm", "\\cdots");
9853m("\\dotsi", "\\!\\cdots");
9854m("\\dotsx", "\\ldots\\,");
9855m("\\DOTSI", "\\relax");
9856m("\\DOTSB", "\\relax");
9857m("\\DOTSX", "\\relax");
9858m("\\tmspace", "\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");
9859m("\\,", "\\tmspace+{3mu}{.1667em}");
9860m("\\thinspace", "\\,");
9861m("\\>", "\\mskip{4mu}");
9862m("\\:", "\\tmspace+{4mu}{.2222em}");
9863m("\\medspace", "\\:");
9864m("\\;", "\\tmspace+{5mu}{.2777em}");
9865m("\\thickspace", "\\;");
9866m("\\!", "\\tmspace-{3mu}{.1667em}");
9867m("\\negthinspace", "\\!");
9868m("\\negmedspace", "\\tmspace-{4mu}{.2222em}");
9869m("\\negthickspace", "\\tmspace-{5mu}{.277em}");
9870m("\\enspace", "\\kern.5em ");
9871m("\\enskip", "\\hskip.5em\\relax");
9872m("\\quad", "\\hskip1em\\relax");
9873m("\\qquad", "\\hskip2em\\relax");
9874m("\\tag", "\\@ifstar\\tag@literal\\tag@paren");
9875m("\\tag@paren", "\\tag@literal{({#1})}");
9876m("\\tag@literal", (r) => {
9877 if (r.macros.get("\\df@tag"))
9878 throw new M("Multiple \\tag");
9879 return "\\gdef\\df@tag{\\text{#1}}";
9880});
9881m("\\bmod", "\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");
9882m("\\pod", "\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");
9883m("\\pmod", "\\pod{{\\rm mod}\\mkern6mu#1}");
9884m("\\mod", "\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");
9885m("\\newline", "\\\\\\relax");
9886m("\\TeX", "\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");
9887var ia = A(y0["Main-Regular"]["T".charCodeAt(0)][1] - 0.7 * y0["Main-Regular"]["A".charCodeAt(0)][1]);
9888m("\\LaTeX", "\\textrm{\\html@mathml{" + ("L\\kern-.36em\\raisebox{" + ia + "}{\\scriptstyle A}") + "\\kern-.15em\\TeX}{LaTeX}}");
9889m("\\KaTeX", "\\textrm{\\html@mathml{" + ("K\\kern-.17em\\raisebox{" + ia + "}{\\scriptstyle A}") + "\\kern-.15em\\TeX}{KaTeX}}");
9890m("\\hspace", "\\@ifstar\\@hspacer\\@hspace");
9891m("\\@hspace", "\\hskip #1\\relax");
9892m("\\@hspacer", "\\rule{0pt}{0pt}\\hskip #1\\relax");
9893m("\\ordinarycolon", ":");
9894m("\\vcentcolon", "\\mathrel{\\mathop\\ordinarycolon}");
9895m("\\dblcolon", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');
9896m("\\coloneqq", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');
9897m("\\Coloneqq", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');
9898m("\\coloneq", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');
9899m("\\Coloneq", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');
9900m("\\eqqcolon", '\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');
9901m("\\Eqqcolon", '\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');
9902m("\\eqcolon", '\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');
9903m("\\Eqcolon", '\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');
9904m("\\colonapprox", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');
9905m("\\Colonapprox", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');
9906m("\\colonsim", '\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');
9907m("\\Colonsim", '\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');
9908m("∷", "\\dblcolon");
9909m("∹", "\\eqcolon");
9910m("≔", "\\coloneqq");
9911m("≕", "\\eqqcolon");
9912m("⩴", "\\Coloneqq");
9913m("\\ratio", "\\vcentcolon");
9914m("\\coloncolon", "\\dblcolon");
9915m("\\colonequals", "\\coloneqq");
9916m("\\coloncolonequals", "\\Coloneqq");
9917m("\\equalscolon", "\\eqqcolon");
9918m("\\equalscoloncolon", "\\Eqqcolon");
9919m("\\colonminus", "\\coloneq");
9920m("\\coloncolonminus", "\\Coloneq");
9921m("\\minuscolon", "\\eqcolon");
9922m("\\minuscoloncolon", "\\Eqcolon");
9923m("\\coloncolonapprox", "\\Colonapprox");
9924m("\\coloncolonsim", "\\Colonsim");
9925m("\\simcolon", "\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");
9926m("\\simcoloncolon", "\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");
9927m("\\approxcolon", "\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");
9928m("\\approxcoloncolon", "\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");
9929m("\\notni", "\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}");
9930m("\\limsup", "\\DOTSB\\operatorname*{lim\\,sup}");
9931m("\\liminf", "\\DOTSB\\operatorname*{lim\\,inf}");
9932m("\\injlim", "\\DOTSB\\operatorname*{inj\\,lim}");
9933m("\\projlim", "\\DOTSB\\operatorname*{proj\\,lim}");
9934m("\\varlimsup", "\\DOTSB\\operatorname*{\\overline{lim}}");
9935m("\\varliminf", "\\DOTSB\\operatorname*{\\underline{lim}}");
9936m("\\varinjlim", "\\DOTSB\\operatorname*{\\underrightarrow{lim}}");
9937m("\\varprojlim", "\\DOTSB\\operatorname*{\\underleftarrow{lim}}");
9938m("\\gvertneqq", "\\html@mathml{\\@gvertneqq}{≩}");
9939m("\\lvertneqq", "\\html@mathml{\\@lvertneqq}{≨}");
9940m("\\ngeqq", "\\html@mathml{\\@ngeqq}{≱}");
9941m("\\ngeqslant", "\\html@mathml{\\@ngeqslant}{≱}");
9942m("\\nleqq", "\\html@mathml{\\@nleqq}{≰}");
9943m("\\nleqslant", "\\html@mathml{\\@nleqslant}{≰}");
9944m("\\nshortmid", "\\html@mathml{\\@nshortmid}{∤}");
9945m("\\nshortparallel", "\\html@mathml{\\@nshortparallel}{∦}");
9946m("\\nsubseteqq", "\\html@mathml{\\@nsubseteqq}{⊈}");
9947m("\\nsupseteqq", "\\html@mathml{\\@nsupseteqq}{⊉}");
9948m("\\varsubsetneq", "\\html@mathml{\\@varsubsetneq}{⊊}");
9949m("\\varsubsetneqq", "\\html@mathml{\\@varsubsetneqq}{⫋}");
9950m("\\varsupsetneq", "\\html@mathml{\\@varsupsetneq}{⊋}");
9951m("\\varsupsetneqq", "\\html@mathml{\\@varsupsetneqq}{⫌}");
9952m("\\imath", "\\html@mathml{\\@imath}{ı}");
9953m("\\jmath", "\\html@mathml{\\@jmath}{ȷ}");
9954m("\\llbracket", "\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}");
9955m("\\rrbracket", "\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}");
9956m("⟦", "\\llbracket");
9957m("⟧", "\\rrbracket");
9958m("\\lBrace", "\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}");
9959m("\\rBrace", "\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}");
9960m("⦃", "\\lBrace");
9961m("⦄", "\\rBrace");
9962m("\\minuso", "\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`⦵}}");
9963m("⦵", "\\minuso");
9964m("\\darr", "\\downarrow");
9965m("\\dArr", "\\Downarrow");
9966m("\\Darr", "\\Downarrow");
9967m("\\lang", "\\langle");
9968m("\\rang", "\\rangle");
9969m("\\uarr", "\\uparrow");
9970m("\\uArr", "\\Uparrow");
9971m("\\Uarr", "\\Uparrow");
9972m("\\N", "\\mathbb{N}");
9973m("\\R", "\\mathbb{R}");
9974m("\\Z", "\\mathbb{Z}");
9975m("\\alef", "\\aleph");
9976m("\\alefsym", "\\aleph");
9977m("\\Alpha", "\\mathrm{A}");
9978m("\\Beta", "\\mathrm{B}");
9979m("\\bull", "\\bullet");
9980m("\\Chi", "\\mathrm{X}");
9981m("\\clubs", "\\clubsuit");
9982m("\\cnums", "\\mathbb{C}");
9983m("\\Complex", "\\mathbb{C}");
9984m("\\Dagger", "\\ddagger");
9985m("\\diamonds", "\\diamondsuit");
9986m("\\empty", "\\emptyset");
9987m("\\Epsilon", "\\mathrm{E}");
9988m("\\Eta", "\\mathrm{H}");
9989m("\\exist", "\\exists");
9990m("\\harr", "\\leftrightarrow");
9991m("\\hArr", "\\Leftrightarrow");
9992m("\\Harr", "\\Leftrightarrow");
9993m("\\hearts", "\\heartsuit");
9994m("\\image", "\\Im");
9995m("\\infin", "\\infty");
9996m("\\Iota", "\\mathrm{I}");
9997m("\\isin", "\\in");
9998m("\\Kappa", "\\mathrm{K}");
9999m("\\larr", "\\leftarrow");
10000m("\\lArr", "\\Leftarrow");
10001m("\\Larr", "\\Leftarrow");
10002m("\\lrarr", "\\leftrightarrow");
10003m("\\lrArr", "\\Leftrightarrow");
10004m("\\Lrarr", "\\Leftrightarrow");
10005m("\\Mu", "\\mathrm{M}");
10006m("\\natnums", "\\mathbb{N}");
10007m("\\Nu", "\\mathrm{N}");
10008m("\\Omicron", "\\mathrm{O}");
10009m("\\plusmn", "\\pm");
10010m("\\rarr", "\\rightarrow");
10011m("\\rArr", "\\Rightarrow");
10012m("\\Rarr", "\\Rightarrow");
10013m("\\real", "\\Re");
10014m("\\reals", "\\mathbb{R}");
10015m("\\Reals", "\\mathbb{R}");
10016m("\\Rho", "\\mathrm{P}");
10017m("\\sdot", "\\cdot");
10018m("\\sect", "\\S");
10019m("\\spades", "\\spadesuit");
10020m("\\sub", "\\subset");
10021m("\\sube", "\\subseteq");
10022m("\\supe", "\\supseteq");
10023m("\\Tau", "\\mathrm{T}");
10024m("\\thetasym", "\\vartheta");
10025m("\\weierp", "\\wp");
10026m("\\Zeta", "\\mathrm{Z}");
10027m("\\argmin", "\\DOTSB\\operatorname*{arg\\,min}");
10028m("\\argmax", "\\DOTSB\\operatorname*{arg\\,max}");
10029m("\\plim", "\\DOTSB\\mathop{\\operatorname{plim}}\\limits");
10030m("\\bra", "\\mathinner{\\langle{#1}|}");
10031m("\\ket", "\\mathinner{|{#1}\\rangle}");
10032m("\\braket", "\\mathinner{\\langle{#1}\\rangle}");
10033m("\\Bra", "\\left\\langle#1\\right|");
10034m("\\Ket", "\\left|#1\\right\\rangle");
10035var sa = (r) => (e) => {
10036 var t = e.consumeArg().tokens, a = e.consumeArg().tokens, n = e.consumeArg().tokens, s = e.consumeArg().tokens, o = e.macros.get("|"), h = e.macros.get("\\|");
10037 e.macros.beginGroup();
10038 var c = (y) => (w) => {
10039 r && (w.macros.set("|", o), n.length && w.macros.set("\\|", h));
10040 var x = y;
10041 if (!y && n.length) {
10042 var z = w.future();
10043 z.text === "|" && (w.popToken(), x = !0);
10044 }
10045 return {
10046 tokens: x ? n : a,
10047 numArgs: 0
10048 };
10049 };
10050 e.macros.set("|", c(!1)), n.length && e.macros.set("\\|", c(!0));
10051 var p = e.consumeArg().tokens, g = e.expandTokens([
10052 ...s,
10053 ...p,
10054 ...t
10055 // reversed
10056 ]);
10057 return e.macros.endGroup(), {
10058 tokens: g.reverse(),
10059 numArgs: 0
10060 };
10061};
10062m("\\bra@ket", sa(!1));
10063m("\\bra@set", sa(!0));
10064m("\\Braket", "\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");
10065m("\\Set", "\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");
10066m("\\set", "\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");
10067m("\\angln", "{\\angl n}");
10068m("\\blue", "\\textcolor{##6495ed}{#1}");
10069m("\\orange", "\\textcolor{##ffa500}{#1}");
10070m("\\pink", "\\textcolor{##ff00af}{#1}");
10071m("\\red", "\\textcolor{##df0030}{#1}");
10072m("\\green", "\\textcolor{##28ae7b}{#1}");
10073m("\\gray", "\\textcolor{gray}{#1}");
10074m("\\purple", "\\textcolor{##9d38bd}{#1}");
10075m("\\blueA", "\\textcolor{##ccfaff}{#1}");
10076m("\\blueB", "\\textcolor{##80f6ff}{#1}");
10077m("\\blueC", "\\textcolor{##63d9ea}{#1}");
10078m("\\blueD", "\\textcolor{##11accd}{#1}");
10079m("\\blueE", "\\textcolor{##0c7f99}{#1}");
10080m("\\tealA", "\\textcolor{##94fff5}{#1}");
10081m("\\tealB", "\\textcolor{##26edd5}{#1}");
10082m("\\tealC", "\\textcolor{##01d1c1}{#1}");
10083m("\\tealD", "\\textcolor{##01a995}{#1}");
10084m("\\tealE", "\\textcolor{##208170}{#1}");
10085m("\\greenA", "\\textcolor{##b6ffb0}{#1}");
10086m("\\greenB", "\\textcolor{##8af281}{#1}");
10087m("\\greenC", "\\textcolor{##74cf70}{#1}");
10088m("\\greenD", "\\textcolor{##1fab54}{#1}");
10089m("\\greenE", "\\textcolor{##0d923f}{#1}");
10090m("\\goldA", "\\textcolor{##ffd0a9}{#1}");
10091m("\\goldB", "\\textcolor{##ffbb71}{#1}");
10092m("\\goldC", "\\textcolor{##ff9c39}{#1}");
10093m("\\goldD", "\\textcolor{##e07d10}{#1}");
10094m("\\goldE", "\\textcolor{##a75a05}{#1}");
10095m("\\redA", "\\textcolor{##fca9a9}{#1}");
10096m("\\redB", "\\textcolor{##ff8482}{#1}");
10097m("\\redC", "\\textcolor{##f9685d}{#1}");
10098m("\\redD", "\\textcolor{##e84d39}{#1}");
10099m("\\redE", "\\textcolor{##bc2612}{#1}");
10100m("\\maroonA", "\\textcolor{##ffbde0}{#1}");
10101m("\\maroonB", "\\textcolor{##ff92c6}{#1}");
10102m("\\maroonC", "\\textcolor{##ed5fa6}{#1}");
10103m("\\maroonD", "\\textcolor{##ca337c}{#1}");
10104m("\\maroonE", "\\textcolor{##9e034e}{#1}");
10105m("\\purpleA", "\\textcolor{##ddd7ff}{#1}");
10106m("\\purpleB", "\\textcolor{##c6b9fc}{#1}");
10107m("\\purpleC", "\\textcolor{##aa87ff}{#1}");
10108m("\\purpleD", "\\textcolor{##7854ab}{#1}");
10109m("\\purpleE", "\\textcolor{##543b78}{#1}");
10110m("\\mintA", "\\textcolor{##f5f9e8}{#1}");
10111m("\\mintB", "\\textcolor{##edf2df}{#1}");
10112m("\\mintC", "\\textcolor{##e0e5cc}{#1}");
10113m("\\grayA", "\\textcolor{##f6f7f7}{#1}");
10114m("\\grayB", "\\textcolor{##f0f1f2}{#1}");
10115m("\\grayC", "\\textcolor{##e3e5e6}{#1}");
10116m("\\grayD", "\\textcolor{##d6d8da}{#1}");
10117m("\\grayE", "\\textcolor{##babec2}{#1}");
10118m("\\grayF", "\\textcolor{##888d93}{#1}");
10119m("\\grayG", "\\textcolor{##626569}{#1}");
10120m("\\grayH", "\\textcolor{##3b3e40}{#1}");
10121m("\\grayI", "\\textcolor{##21242c}{#1}");
10122m("\\kaBlue", "\\textcolor{##314453}{#1}");
10123m("\\kaGreen", "\\textcolor{##71B307}{#1}");
10124var la = {
10125 "^": !0,
10126 // Parser.js
10127 _: !0,
10128 // Parser.js
10129 "\\limits": !0,
10130 // Parser.js
10131 "\\nolimits": !0
10132 // Parser.js
10133};
10134class s4 {
10135 constructor(e, t, a) {
10136 this.settings = void 0, this.expansionCount = void 0, this.lexer = void 0, this.macros = void 0, this.stack = void 0, this.mode = void 0, this.settings = t, this.expansionCount = 0, this.feed(e), this.macros = new n4(i4, t.macros), this.mode = a, this.stack = [];
10137 }
10138 /**
10139 * Feed a new input string to the same MacroExpander
10140 * (with existing macros etc.).
10141 */
10142 feed(e) {
10143 this.lexer = new hr(e, this.settings);
10144 }
10145 /**
10146 * Switches between "text" and "math" modes.
10147 */
10148 switchMode(e) {
10149 this.mode = e;
10150 }
10151 /**
10152 * Start a new group nesting within all namespaces.
10153 */
10154 beginGroup() {
10155 this.macros.beginGroup();
10156 }
10157 /**
10158 * End current group nesting within all namespaces.
10159 */
10160 endGroup() {
10161 this.macros.endGroup();
10162 }
10163 /**
10164 * Ends all currently nested groups (if any), restoring values before the
10165 * groups began. Useful in case of an error in the middle of parsing.
10166 */
10167 endGroups() {
10168 this.macros.endGroups();
10169 }
10170 /**
10171 * Returns the topmost token on the stack, without expanding it.
10172 * Similar in behavior to TeX's `\futurelet`.
10173 */
10174 future() {
10175 return this.stack.length === 0 && this.pushToken(this.lexer.lex()), this.stack[this.stack.length - 1];
10176 }
10177 /**
10178 * Remove and return the next unexpanded token.
10179 */
10180 popToken() {
10181 return this.future(), this.stack.pop();
10182 }
10183 /**
10184 * Add a given token to the token stack. In particular, this get be used
10185 * to put back a token returned from one of the other methods.
10186 */
10187 pushToken(e) {
10188 this.stack.push(e);
10189 }
10190 /**
10191 * Append an array of tokens to the token stack.
10192 */
10193 pushTokens(e) {
10194 this.stack.push(...e);
10195 }
10196 /**
10197 * Find an macro argument without expanding tokens and append the array of
10198 * tokens to the token stack. Uses Token as a container for the result.
10199 */
10200 scanArgument(e) {
10201 var t, a, n;
10202 if (e) {
10203 if (this.consumeSpaces(), this.future().text !== "[")
10204 return null;
10205 t = this.popToken(), {
10206 tokens: n,
10207 end: a
10208 } = this.consumeArg(["]"]);
10209 } else
10210 ({
10211 tokens: n,
10212 start: t,
10213 end: a
10214 } = this.consumeArg());
10215 return this.pushToken(new x0("EOF", a.loc)), this.pushTokens(n), t.range(a, "");
10216 }
10217 /**
10218 * Consume all following space tokens, without expansion.
10219 */
10220 consumeSpaces() {
10221 for (; ; ) {
10222 var e = this.future();
10223 if (e.text === " ")
10224 this.stack.pop();
10225 else
10226 break;
10227 }
10228 }
10229 /**
10230 * Consume an argument from the token stream, and return the resulting array
10231 * of tokens and start/end token.
10232 */
10233 consumeArg(e) {
10234 var t = [], a = e && e.length > 0;
10235 a || this.consumeSpaces();
10236 var n = this.future(), s, o = 0, h = 0;
10237 do {
10238 if (s = this.popToken(), t.push(s), s.text === "{")
10239 ++o;
10240 else if (s.text === "}") {
10241 if (--o, o === -1)
10242 throw new M("Extra }", s);
10243 } else if (s.text === "EOF")
10244 throw new M("Unexpected end of input in a macro argument, expected '" + (e && a ? e[h] : "}") + "'", s);
10245 if (e && a)
10246 if ((o === 0 || o === 1 && e[h] === "{") && s.text === e[h]) {
10247 if (++h, h === e.length) {
10248 t.splice(-h, h);
10249 break;
10250 }
10251 } else
10252 h = 0;
10253 } while (o !== 0 || a);
10254 return n.text === "{" && t[t.length - 1].text === "}" && (t.pop(), t.shift()), t.reverse(), {
10255 tokens: t,
10256 start: n,
10257 end: s
10258 };
10259 }
10260 /**
10261 * Consume the specified number of (delimited) arguments from the token
10262 * stream and return the resulting array of arguments.
10263 */
10264 consumeArgs(e, t) {
10265 if (t) {
10266 if (t.length !== e + 1)
10267 throw new M("The length of delimiters doesn't match the number of args!");
10268 for (var a = t[0], n = 0; n < a.length; n++) {
10269 var s = this.popToken();
10270 if (a[n] !== s.text)
10271 throw new M("Use of the macro doesn't match its definition", s);
10272 }
10273 }
10274 for (var o = [], h = 0; h < e; h++)
10275 o.push(this.consumeArg(t && t[h + 1]).tokens);
10276 return o;
10277 }
10278 /**
10279 * Expand the next token only once if possible.
10280 *
10281 * If the token is expanded, the resulting tokens will be pushed onto
10282 * the stack in reverse order, and the number of such tokens will be
10283 * returned. This number might be zero or positive.
10284 *
10285 * If not, the return value is `false`, and the next token remains at the
10286 * top of the stack.
10287 *
10288 * In either case, the next token will be on the top of the stack,
10289 * or the stack will be empty (in case of empty expansion
10290 * and no other tokens).
10291 *
10292 * Used to implement `expandAfterFuture` and `expandNextToken`.
10293 *
10294 * If expandableOnly, only expandable tokens are expanded and
10295 * an undefined control sequence results in an error.
10296 */
10297 expandOnce(e) {
10298 var t = this.popToken(), a = t.text, n = t.noexpand ? null : this._getExpansion(a);
10299 if (n == null || e && n.unexpandable) {
10300 if (e && n == null && a[0] === "\\" && !this.isDefined(a))
10301 throw new M("Undefined control sequence: " + a);
10302 return this.pushToken(t), !1;
10303 }
10304 if (this.expansionCount++, this.expansionCount > this.settings.maxExpand)
10305 throw new M("Too many expansions: infinite loop or need to increase maxExpand setting");
10306 var s = n.tokens, o = this.consumeArgs(n.numArgs, n.delimiters);
10307 if (n.numArgs) {
10308 s = s.slice();
10309 for (var h = s.length - 1; h >= 0; --h) {
10310 var c = s[h];
10311 if (c.text === "#") {
10312 if (h === 0)
10313 throw new M("Incomplete placeholder at end of macro body", c);
10314 if (c = s[--h], c.text === "#")
10315 s.splice(h + 1, 1);
10316 else if (/^[1-9]$/.test(c.text))
10317 s.splice(h, 2, ...o[+c.text - 1]);
10318 else
10319 throw new M("Not a valid argument number", c);
10320 }
10321 }
10322 }
10323 return this.pushTokens(s), s.length;
10324 }
10325 /**
10326 * Expand the next token only once (if possible), and return the resulting
10327 * top token on the stack (without removing anything from the stack).
10328 * Similar in behavior to TeX's `\expandafter\futurelet`.
10329 * Equivalent to expandOnce() followed by future().
10330 */
10331 expandAfterFuture() {
10332 return this.expandOnce(), this.future();
10333 }
10334 /**
10335 * Recursively expand first token, then return first non-expandable token.
10336 */
10337 expandNextToken() {
10338 for (; ; )
10339 if (this.expandOnce() === !1) {
10340 var e = this.stack.pop();
10341 return e.treatAsRelax && (e.text = "\\relax"), e;
10342 }
10343 throw new Error();
10344 }
10345 /**
10346 * Fully expand the given macro name and return the resulting list of
10347 * tokens, or return `undefined` if no such macro is defined.
10348 */
10349 expandMacro(e) {
10350 return this.macros.has(e) ? this.expandTokens([new x0(e)]) : void 0;
10351 }
10352 /**
10353 * Fully expand the given token stream and return the resulting list of
10354 * tokens. Note that the input tokens are in reverse order, but the
10355 * output tokens are in forward order.
10356 */
10357 expandTokens(e) {
10358 var t = [], a = this.stack.length;
10359 for (this.pushTokens(e); this.stack.length > a; )
10360 if (this.expandOnce(!0) === !1) {
10361 var n = this.stack.pop();
10362 n.treatAsRelax && (n.noexpand = !1, n.treatAsRelax = !1), t.push(n);
10363 }
10364 return t;
10365 }
10366 /**
10367 * Fully expand the given macro name and return the result as a string,
10368 * or return `undefined` if no such macro is defined.
10369 */
10370 expandMacroAsText(e) {
10371 var t = this.expandMacro(e);
10372 return t && t.map((a) => a.text).join("");
10373 }
10374 /**
10375 * Returns the expanded macro as a reversed array of tokens and a macro
10376 * argument count. Or returns `null` if no such macro.
10377 */
10378 _getExpansion(e) {
10379 var t = this.macros.get(e);
10380 if (t == null)
10381 return t;
10382 if (e.length === 1) {
10383 var a = this.lexer.catcodes[e];
10384 if (a != null && a !== 13)
10385 return;
10386 }
10387 var n = typeof t == "function" ? t(this) : t;
10388 if (typeof n == "string") {
10389 var s = 0;
10390 if (n.indexOf("#") !== -1)
10391 for (var o = n.replace(/##/g, ""); o.indexOf("#" + (s + 1)) !== -1; )
10392 ++s;
10393 for (var h = new hr(n, this.settings), c = [], p = h.lex(); p.text !== "EOF"; )
10394 c.push(p), p = h.lex();
10395 c.reverse();
10396 var g = {
10397 tokens: c,
10398 numArgs: s
10399 };
10400 return g;
10401 }
10402 return n;
10403 }
10404 /**
10405 * Determine whether a command is currently "defined" (has some
10406 * functionality), meaning that it's a macro (in the current group),
10407 * a function, a symbol, or one of the special commands listed in
10408 * `implicitCommands`.
10409 */
10410 isDefined(e) {
10411 return this.macros.has(e) || F0.hasOwnProperty(e) || $.math.hasOwnProperty(e) || $.text.hasOwnProperty(e) || la.hasOwnProperty(e);
10412 }
10413 /**
10414 * Determine whether a command is expandable.
10415 */
10416 isExpandable(e) {
10417 var t = this.macros.get(e);
10418 return t != null ? typeof t == "string" || typeof t == "function" || !t.unexpandable : F0.hasOwnProperty(e) && !F0[e].primitive;
10419 }
10420}
10421var dr = /^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/, ze = Object.freeze({
10422 "₊": "+",
10423 "₋": "-",
10424 "₌": "=",
10425 "₍": "(",
10426 "₎": ")",
10427 "₀": "0",
10428 "₁": "1",
10429 "₂": "2",
10430 "₃": "3",
10431 "₄": "4",
10432 "₅": "5",
10433 "₆": "6",
10434 "₇": "7",
10435 "₈": "8",
10436 "₉": "9",
10437 "ₐ": "a",
10438 "ₑ": "e",
10439 "ₕ": "h",
10440 "ᵢ": "i",
10441 "ⱼ": "j",
10442 "ₖ": "k",
10443 "ₗ": "l",
10444 "ₘ": "m",
10445 "ₙ": "n",
10446 "ₒ": "o",
10447 "ₚ": "p",
10448 "ᵣ": "r",
10449 "ₛ": "s",
10450 "ₜ": "t",
10451 "ᵤ": "u",
10452 "ᵥ": "v",
10453 "ₓ": "x",
10454 "ᵦ": "β",
10455 "ᵧ": "γ",
10456 "ᵨ": "ρ",
10457 "ᵩ": "ϕ",
10458 "ᵪ": "χ",
10459 "⁺": "+",
10460 "⁻": "-",
10461 "⁼": "=",
10462 "⁽": "(",
10463 "⁾": ")",
10464 "⁰": "0",
10465 "¹": "1",
10466 "²": "2",
10467 "³": "3",
10468 "⁴": "4",
10469 "⁵": "5",
10470 "⁶": "6",
10471 "⁷": "7",
10472 "⁸": "8",
10473 "⁹": "9",
10474 "ᴬ": "A",
10475 "ᴮ": "B",
10476 "ᴰ": "D",
10477 "ᴱ": "E",
10478 "ᴳ": "G",
10479 "ᴴ": "H",
10480 "ᴵ": "I",
10481 "ᴶ": "J",
10482 "ᴷ": "K",
10483 "ᴸ": "L",
10484 "ᴹ": "M",
10485 "ᴺ": "N",
10486 "ᴼ": "O",
10487 "ᴾ": "P",
10488 "ᴿ": "R",
10489 "ᵀ": "T",
10490 "ᵁ": "U",
10491 "ⱽ": "V",
10492 "ᵂ": "W",
10493 "ᵃ": "a",
10494 "ᵇ": "b",
10495 "ᶜ": "c",
10496 "ᵈ": "d",
10497 "ᵉ": "e",
10498 "ᶠ": "f",
10499 "ᵍ": "g",
10500 ʰ: "h",
10501 "ⁱ": "i",
10502 ʲ: "j",
10503 "ᵏ": "k",
10504 ˡ: "l",
10505 "ᵐ": "m",
10506 ⁿ: "n",
10507 "ᵒ": "o",
10508 "ᵖ": "p",
10509 ʳ: "r",
10510 ˢ: "s",
10511 "ᵗ": "t",
10512 "ᵘ": "u",
10513 "ᵛ": "v",
10514 ʷ: "w",
10515 ˣ: "x",
10516 ʸ: "y",
10517 "ᶻ": "z",
10518 "ᵝ": "β",
10519 "ᵞ": "γ",
10520 "ᵟ": "δ",
10521 "ᵠ": "ϕ",
10522 "ᵡ": "χ",
10523 "ᶿ": "θ"
10524}), rt = {
10525 "́": {
10526 text: "\\'",
10527 math: "\\acute"
10528 },
10529 "̀": {
10530 text: "\\`",
10531 math: "\\grave"
10532 },
10533 "̈": {
10534 text: '\\"',
10535 math: "\\ddot"
10536 },
10537 "̃": {
10538 text: "\\~",
10539 math: "\\tilde"
10540 },
10541 "̄": {
10542 text: "\\=",
10543 math: "\\bar"
10544 },
10545 "̆": {
10546 text: "\\u",
10547 math: "\\breve"
10548 },
10549 "̌": {
10550 text: "\\v",
10551 math: "\\check"
10552 },
10553 "̂": {
10554 text: "\\^",
10555 math: "\\hat"
10556 },
10557 "̇": {
10558 text: "\\.",
10559 math: "\\dot"
10560 },
10561 "̊": {
10562 text: "\\r",
10563 math: "\\mathring"
10564 },
10565 "̋": {
10566 text: "\\H"
10567 },
10568 "̧": {
10569 text: "\\c"
10570 }
10571}, fr = {
10572 á: "á",
10573 à: "à",
10574 ä: "ä",
10575 ǟ: "ǟ",
10576 ã: "ã",
10577 ā: "ā",
10578 ă: "ă",
10579 ắ: "ắ",
10580 ằ: "ằ",
10581 ẵ: "ẵ",
10582 ǎ: "ǎ",
10583 â: "â",
10584 ấ: "ấ",
10585 ầ: "ầ",
10586 ẫ: "ẫ",
10587 ȧ: "ȧ",
10588 ǡ: "ǡ",
10589 å: "å",
10590 ǻ: "ǻ",
10591 ḃ: "ḃ",
10592 ć: "ć",
10593 ḉ: "ḉ",
10594 č: "č",
10595 ĉ: "ĉ",
10596 ċ: "ċ",
10597 ç: "ç",
10598 ď: "ď",
10599 ḋ: "ḋ",
10600 ḑ: "ḑ",
10601 é: "é",
10602 è: "è",
10603 ë: "ë",
10604 ẽ: "ẽ",
10605 ē: "ē",
10606 ḗ: "ḗ",
10607 ḕ: "ḕ",
10608 ĕ: "ĕ",
10609 ḝ: "ḝ",
10610 ě: "ě",
10611 ê: "ê",
10612 ế: "ế",
10613 ề: "ề",
10614 ễ: "ễ",
10615 ė: "ė",
10616 ȩ: "ȩ",
10617 ḟ: "ḟ",
10618 ǵ: "ǵ",
10619 ḡ: "ḡ",
10620 ğ: "ğ",
10621 ǧ: "ǧ",
10622 ĝ: "ĝ",
10623 ġ: "ġ",
10624 ģ: "ģ",
10625 ḧ: "ḧ",
10626 ȟ: "ȟ",
10627 ĥ: "ĥ",
10628 ḣ: "ḣ",
10629 ḩ: "ḩ",
10630 í: "í",
10631 ì: "ì",
10632 ï: "ï",
10633 ḯ: "ḯ",
10634 ĩ: "ĩ",
10635 ī: "ī",
10636 ĭ: "ĭ",
10637 ǐ: "ǐ",
10638 î: "î",
10639 ǰ: "ǰ",
10640 ĵ: "ĵ",
10641 ḱ: "ḱ",
10642 ǩ: "ǩ",
10643 ķ: "ķ",
10644 ĺ: "ĺ",
10645 ľ: "ľ",
10646 ļ: "ļ",
10647 ḿ: "ḿ",
10648 ṁ: "ṁ",
10649 ń: "ń",
10650 ǹ: "ǹ",
10651 ñ: "ñ",
10652 ň: "ň",
10653 ṅ: "ṅ",
10654 ņ: "ņ",
10655 ó: "ó",
10656 ò: "ò",
10657 ö: "ö",
10658 ȫ: "ȫ",
10659 õ: "õ",
10660 ṍ: "ṍ",
10661 ṏ: "ṏ",
10662 ȭ: "ȭ",
10663 ō: "ō",
10664 ṓ: "ṓ",
10665 ṑ: "ṑ",
10666 ŏ: "ŏ",
10667 ǒ: "ǒ",
10668 ô: "ô",
10669 ố: "ố",
10670 ồ: "ồ",
10671 ỗ: "ỗ",
10672 ȯ: "ȯ",
10673 ȱ: "ȱ",
10674 ő: "ő",
10675 ṕ: "ṕ",
10676 ṗ: "ṗ",
10677 ŕ: "ŕ",
10678 ř: "ř",
10679 ṙ: "ṙ",
10680 ŗ: "ŗ",
10681 ś: "ś",
10682 ṥ: "ṥ",
10683 š: "š",
10684 ṧ: "ṧ",
10685 ŝ: "ŝ",
10686 ṡ: "ṡ",
10687 ş: "ş",
10688 ẗ: "ẗ",
10689 ť: "ť",
10690 ṫ: "ṫ",
10691 ţ: "ţ",
10692 ú: "ú",
10693 ù: "ù",
10694 ü: "ü",
10695 ǘ: "ǘ",
10696 ǜ: "ǜ",
10697 ǖ: "ǖ",
10698 ǚ: "ǚ",
10699 ũ: "ũ",
10700 ṹ: "ṹ",
10701 ū: "ū",
10702 ṻ: "ṻ",
10703 ŭ: "ŭ",
10704 ǔ: "ǔ",
10705 û: "û",
10706 ů: "ů",
10707 ű: "ű",
10708 ṽ: "ṽ",
10709 ẃ: "ẃ",
10710 ẁ: "ẁ",
10711 ẅ: "ẅ",
10712 ŵ: "ŵ",
10713 ẇ: "ẇ",
10714 ẘ: "ẘ",
10715 ẍ: "ẍ",
10716 ẋ: "ẋ",
10717 ý: "ý",
10718 ỳ: "ỳ",
10719 ÿ: "ÿ",
10720 ỹ: "ỹ",
10721 ȳ: "ȳ",
10722 ŷ: "ŷ",
10723 ẏ: "ẏ",
10724 ẙ: "ẙ",
10725 ź: "ź",
10726 ž: "ž",
10727 ẑ: "ẑ",
10728 ż: "ż",
10729 Á: "Á",
10730 À: "À",
10731 Ä: "Ä",
10732 Ǟ: "Ǟ",
10733 Ã: "Ã",
10734 Ā: "Ā",
10735 Ă: "Ă",
10736 Ắ: "Ắ",
10737 Ằ: "Ằ",
10738 Ẵ: "Ẵ",
10739 Ǎ: "Ǎ",
10740 Â: "Â",
10741 Ấ: "Ấ",
10742 Ầ: "Ầ",
10743 Ẫ: "Ẫ",
10744 Ȧ: "Ȧ",
10745 Ǡ: "Ǡ",
10746 Å: "Å",
10747 Ǻ: "Ǻ",
10748 Ḃ: "Ḃ",
10749 Ć: "Ć",
10750 Ḉ: "Ḉ",
10751 Č: "Č",
10752 Ĉ: "Ĉ",
10753 Ċ: "Ċ",
10754 Ç: "Ç",
10755 Ď: "Ď",
10756 Ḋ: "Ḋ",
10757 Ḑ: "Ḑ",
10758 É: "É",
10759 È: "È",
10760 Ë: "Ë",
10761 Ẽ: "Ẽ",
10762 Ē: "Ē",
10763 Ḗ: "Ḗ",
10764 Ḕ: "Ḕ",
10765 Ĕ: "Ĕ",
10766 Ḝ: "Ḝ",
10767 Ě: "Ě",
10768 Ê: "Ê",
10769 Ế: "Ế",
10770 Ề: "Ề",
10771 Ễ: "Ễ",
10772 Ė: "Ė",
10773 Ȩ: "Ȩ",
10774 Ḟ: "Ḟ",
10775 Ǵ: "Ǵ",
10776 Ḡ: "Ḡ",
10777 Ğ: "Ğ",
10778 Ǧ: "Ǧ",
10779 Ĝ: "Ĝ",
10780 Ġ: "Ġ",
10781 Ģ: "Ģ",
10782 Ḧ: "Ḧ",
10783 Ȟ: "Ȟ",
10784 Ĥ: "Ĥ",
10785 Ḣ: "Ḣ",
10786 Ḩ: "Ḩ",
10787 Í: "Í",
10788 Ì: "Ì",
10789 Ï: "Ï",
10790 Ḯ: "Ḯ",
10791 Ĩ: "Ĩ",
10792 Ī: "Ī",
10793 Ĭ: "Ĭ",
10794 Ǐ: "Ǐ",
10795 Î: "Î",
10796 İ: "İ",
10797 Ĵ: "Ĵ",
10798 Ḱ: "Ḱ",
10799 Ǩ: "Ǩ",
10800 Ķ: "Ķ",
10801 Ĺ: "Ĺ",
10802 Ľ: "Ľ",
10803 Ļ: "Ļ",
10804 Ḿ: "Ḿ",
10805 Ṁ: "Ṁ",
10806 Ń: "Ń",
10807 Ǹ: "Ǹ",
10808 Ñ: "Ñ",
10809 Ň: "Ň",
10810 Ṅ: "Ṅ",
10811 Ņ: "Ņ",
10812 Ó: "Ó",
10813 Ò: "Ò",
10814 Ö: "Ö",
10815 Ȫ: "Ȫ",
10816 Õ: "Õ",
10817 Ṍ: "Ṍ",
10818 Ṏ: "Ṏ",
10819 Ȭ: "Ȭ",
10820 Ō: "Ō",
10821 Ṓ: "Ṓ",
10822 Ṑ: "Ṑ",
10823 Ŏ: "Ŏ",
10824 Ǒ: "Ǒ",
10825 Ô: "Ô",
10826 Ố: "Ố",
10827 Ồ: "Ồ",
10828 Ỗ: "Ỗ",
10829 Ȯ: "Ȯ",
10830 Ȱ: "Ȱ",
10831 Ő: "Ő",
10832 Ṕ: "Ṕ",
10833 Ṗ: "Ṗ",
10834 Ŕ: "Ŕ",
10835 Ř: "Ř",
10836 Ṙ: "Ṙ",
10837 Ŗ: "Ŗ",
10838 Ś: "Ś",
10839 Ṥ: "Ṥ",
10840 Š: "Š",
10841 Ṧ: "Ṧ",
10842 Ŝ: "Ŝ",
10843 Ṡ: "Ṡ",
10844 Ş: "Ş",
10845 Ť: "Ť",
10846 Ṫ: "Ṫ",
10847 Ţ: "Ţ",
10848 Ú: "Ú",
10849 Ù: "Ù",
10850 Ü: "Ü",
10851 Ǘ: "Ǘ",
10852 Ǜ: "Ǜ",
10853 Ǖ: "Ǖ",
10854 Ǚ: "Ǚ",
10855 Ũ: "Ũ",
10856 Ṹ: "Ṹ",
10857 Ū: "Ū",
10858 Ṻ: "Ṻ",
10859 Ŭ: "Ŭ",
10860 Ǔ: "Ǔ",
10861 Û: "Û",
10862 Ů: "Ů",
10863 Ű: "Ű",
10864 Ṽ: "Ṽ",
10865 Ẃ: "Ẃ",
10866 Ẁ: "Ẁ",
10867 Ẅ: "Ẅ",
10868 Ŵ: "Ŵ",
10869 Ẇ: "Ẇ",
10870 Ẍ: "Ẍ",
10871 Ẋ: "Ẋ",
10872 Ý: "Ý",
10873 Ỳ: "Ỳ",
10874 Ÿ: "Ÿ",
10875 Ỹ: "Ỹ",
10876 Ȳ: "Ȳ",
10877 Ŷ: "Ŷ",
10878 Ẏ: "Ẏ",
10879 Ź: "Ź",
10880 Ž: "Ž",
10881 Ẑ: "Ẑ",
10882 Ż: "Ż",
10883 ά: "ά",
10884 ὰ: "ὰ",
10885 ᾱ: "ᾱ",
10886 ᾰ: "ᾰ",
10887 έ: "έ",
10888 ὲ: "ὲ",
10889 ή: "ή",
10890 ὴ: "ὴ",
10891 ί: "ί",
10892 ὶ: "ὶ",
10893 ϊ: "ϊ",
10894 ΐ: "ΐ",
10895 ῒ: "ῒ",
10896 ῑ: "ῑ",
10897 ῐ: "ῐ",
10898 ό: "ό",
10899 ὸ: "ὸ",
10900 ύ: "ύ",
10901 ὺ: "ὺ",
10902 ϋ: "ϋ",
10903 ΰ: "ΰ",
10904 ῢ: "ῢ",
10905 ῡ: "ῡ",
10906 ῠ: "ῠ",
10907 ώ: "ώ",
10908 ὼ: "ὼ",
10909 Ύ: "Ύ",
10910 Ὺ: "Ὺ",
10911 Ϋ: "Ϋ",
10912 Ῡ: "Ῡ",
10913 Ῠ: "Ῠ",
10914 Ώ: "Ώ",
10915 Ὼ: "Ὼ"
10916};
10917class ue {
10918 constructor(e, t) {
10919 this.mode = void 0, this.gullet = void 0, this.settings = void 0, this.leftrightDepth = void 0, this.nextToken = void 0, this.mode = "math", this.gullet = new s4(e, t, this.mode), this.settings = t, this.leftrightDepth = 0;
10920 }
10921 /**
10922 * Checks a result to make sure it has the right type, and throws an
10923 * appropriate error otherwise.
10924 */
10925 expect(e, t) {
10926 if (t === void 0 && (t = !0), this.fetch().text !== e)
10927 throw new M("Expected '" + e + "', got '" + this.fetch().text + "'", this.fetch());
10928 t && this.consume();
10929 }
10930 /**
10931 * Discards the current lookahead token, considering it consumed.
10932 */
10933 consume() {
10934 this.nextToken = null;
10935 }
10936 /**
10937 * Return the current lookahead token, or if there isn't one (at the
10938 * beginning, or if the previous lookahead token was consume()d),
10939 * fetch the next token as the new lookahead token and return it.
10940 */
10941 fetch() {
10942 return this.nextToken == null && (this.nextToken = this.gullet.expandNextToken()), this.nextToken;
10943 }
10944 /**
10945 * Switches between "text" and "math" modes.
10946 */
10947 switchMode(e) {
10948 this.mode = e, this.gullet.switchMode(e);
10949 }
10950 /**
10951 * Main parsing function, which parses an entire input.
10952 */
10953 parse() {
10954 this.settings.globalGroup || this.gullet.beginGroup(), this.settings.colorIsTextColor && this.gullet.macros.set("\\color", "\\textcolor");
10955 try {
10956 var e = this.parseExpression(!1);
10957 return this.expect("EOF"), this.settings.globalGroup || this.gullet.endGroup(), e;
10958 } finally {
10959 this.gullet.endGroups();
10960 }
10961 }
10962 /**
10963 * Fully parse a separate sequence of tokens as a separate job.
10964 * Tokens should be specified in reverse order, as in a MacroDefinition.
10965 */
10966 subparse(e) {
10967 var t = this.nextToken;
10968 this.consume(), this.gullet.pushToken(new x0("}")), this.gullet.pushTokens(e);
10969 var a = this.parseExpression(!1);
10970 return this.expect("}"), this.nextToken = t, a;
10971 }
10972 /**
10973 * Parses an "expression", which is a list of atoms.
10974 *
10975 * `breakOnInfix`: Should the parsing stop when we hit infix nodes? This
10976 * happens when functions have higher precedence han infix
10977 * nodes in implicit parses.
10978 *
10979 * `breakOnTokenText`: The text of the token that the expression should end
10980 * with, or `null` if something else should end the
10981 * expression.
10982 */
10983 parseExpression(e, t) {
10984 for (var a = []; ; ) {
10985 this.mode === "math" && this.consumeSpaces();
10986 var n = this.fetch();
10987 if (ue.endOfExpression.indexOf(n.text) !== -1 || t && n.text === t || e && F0[n.text] && F0[n.text].infix)
10988 break;
10989 var s = this.parseAtom(t);
10990 if (s) {
10991 if (s.type === "internal")
10992 continue;
10993 } else
10994 break;
10995 a.push(s);
10996 }
10997 return this.mode === "text" && this.formLigatures(a), this.handleInfixNodes(a);
10998 }
10999 /**
11000 * Rewrites infix operators such as \over with corresponding commands such
11001 * as \frac.
11002 *
11003 * There can only be one infix operator per group. If there's more than one
11004 * then the expression is ambiguous. This can be resolved by adding {}.
11005 */
11006 handleInfixNodes(e) {
11007 for (var t = -1, a, n = 0; n < e.length; n++)
11008 if (e[n].type === "infix") {
11009 if (t !== -1)
11010 throw new M("only one infix operator per group", e[n].token);
11011 t = n, a = e[n].replaceWith;
11012 }
11013 if (t !== -1 && a) {
11014 var s, o, h = e.slice(0, t), c = e.slice(t + 1);
11015 h.length === 1 && h[0].type === "ordgroup" ? s = h[0] : s = {
11016 type: "ordgroup",
11017 mode: this.mode,
11018 body: h
11019 }, c.length === 1 && c[0].type === "ordgroup" ? o = c[0] : o = {
11020 type: "ordgroup",
11021 mode: this.mode,
11022 body: c
11023 };
11024 var p;
11025 return a === "\\\\abovefrac" ? p = this.callFunction(a, [s, e[t], o], []) : p = this.callFunction(a, [s, o], []), [p];
11026 } else
11027 return e;
11028 }
11029 /**
11030 * Handle a subscript or superscript with nice errors.
11031 */
11032 handleSupSubscript(e) {
11033 var t = this.fetch(), a = t.text;
11034 this.consume(), this.consumeSpaces();
11035 var n = this.parseGroup(e);
11036 if (!n)
11037 throw new M("Expected group after '" + a + "'", t);
11038 return n;
11039 }
11040 /**
11041 * Converts the textual input of an unsupported command into a text node
11042 * contained within a color node whose color is determined by errorColor
11043 */
11044 formatUnsupportedCmd(e) {
11045 for (var t = [], a = 0; a < e.length; a++)
11046 t.push({
11047 type: "textord",
11048 mode: "text",
11049 text: e[a]
11050 });
11051 var n = {
11052 type: "text",
11053 mode: this.mode,
11054 body: t
11055 }, s = {
11056 type: "color",
11057 mode: this.mode,
11058 color: this.settings.errorColor,
11059 body: [n]
11060 };
11061 return s;
11062 }
11063 /**
11064 * Parses a group with optional super/subscripts.
11065 */
11066 parseAtom(e) {
11067 var t = this.parseGroup("atom", e);
11068 if (this.mode === "text")
11069 return t;
11070 for (var a, n; ; ) {
11071 this.consumeSpaces();
11072 var s = this.fetch();
11073 if (s.text === "\\limits" || s.text === "\\nolimits") {
11074 if (t && t.type === "op") {
11075 var o = s.text === "\\limits";
11076 t.limits = o, t.alwaysHandleSupSub = !0;
11077 } else if (t && t.type === "operatorname")
11078 t.alwaysHandleSupSub && (t.limits = s.text === "\\limits");
11079 else
11080 throw new M("Limit controls must follow a math operator", s);
11081 this.consume();
11082 } else if (s.text === "^") {
11083 if (a)
11084 throw new M("Double superscript", s);
11085 a = this.handleSupSubscript("superscript");
11086 } else if (s.text === "_") {
11087 if (n)
11088 throw new M("Double subscript", s);
11089 n = this.handleSupSubscript("subscript");
11090 } else if (s.text === "'") {
11091 if (a)
11092 throw new M("Double superscript", s);
11093 var h = {
11094 type: "textord",
11095 mode: this.mode,
11096 text: "\\prime"
11097 }, c = [h];
11098 for (this.consume(); this.fetch().text === "'"; )
11099 c.push(h), this.consume();
11100 this.fetch().text === "^" && c.push(this.handleSupSubscript("superscript")), a = {
11101 type: "ordgroup",
11102 mode: this.mode,
11103 body: c
11104 };
11105 } else if (ze[s.text]) {
11106 var p = ze[s.text], g = dr.test(s.text);
11107 for (this.consume(); ; ) {
11108 var y = this.fetch().text;
11109 if (!ze[y] || dr.test(y) !== g)
11110 break;
11111 this.consume(), p += ze[y];
11112 }
11113 var w = new ue(p, this.settings).parse();
11114 g ? n = {
11115 type: "ordgroup",
11116 mode: "math",
11117 body: w
11118 } : a = {
11119 type: "ordgroup",
11120 mode: "math",
11121 body: w
11122 };
11123 } else
11124 break;
11125 }
11126 return a || n ? {
11127 type: "supsub",
11128 mode: this.mode,
11129 base: t,
11130 sup: a,
11131 sub: n
11132 } : t;
11133 }
11134 /**
11135 * Parses an entire function, including its base and all of its arguments.
11136 */
11137 parseFunction(e, t) {
11138 var a = this.fetch(), n = a.text, s = F0[n];
11139 if (!s)
11140 return null;
11141 if (this.consume(), t && t !== "atom" && !s.allowedInArgument)
11142 throw new M("Got function '" + n + "' with no arguments" + (t ? " as " + t : ""), a);
11143 if (this.mode === "text" && !s.allowedInText)
11144 throw new M("Can't use function '" + n + "' in text mode", a);
11145 if (this.mode === "math" && s.allowedInMath === !1)
11146 throw new M("Can't use function '" + n + "' in math mode", a);
11147 var {
11148 args: o,
11149 optArgs: h
11150 } = this.parseArguments(n, s);
11151 return this.callFunction(n, o, h, a, e);
11152 }
11153 /**
11154 * Call a function handler with a suitable context and arguments.
11155 */
11156 callFunction(e, t, a, n, s) {
11157 var o = {
11158 funcName: e,
11159 parser: this,
11160 token: n,
11161 breakOnTokenText: s
11162 }, h = F0[e];
11163 if (h && h.handler)
11164 return h.handler(o, t, a);
11165 throw new M("No function handler for " + e);
11166 }
11167 /**
11168 * Parses the arguments of a function or environment
11169 */
11170 parseArguments(e, t) {
11171 var a = t.numArgs + t.numOptionalArgs;
11172 if (a === 0)
11173 return {
11174 args: [],
11175 optArgs: []
11176 };
11177 for (var n = [], s = [], o = 0; o < a; o++) {
11178 var h = t.argTypes && t.argTypes[o], c = o < t.numOptionalArgs;
11179 (t.primitive && h == null || // \sqrt expands into primitive if optional argument doesn't exist
11180 t.type === "sqrt" && o === 1 && s[0] == null) && (h = "primitive");
11181 var p = this.parseGroupOfType("argument to '" + e + "'", h, c);
11182 if (c)
11183 s.push(p);
11184 else if (p != null)
11185 n.push(p);
11186 else
11187 throw new M("Null argument, please report this as a bug");
11188 }
11189 return {
11190 args: n,
11191 optArgs: s
11192 };
11193 }
11194 /**
11195 * Parses a group when the mode is changing.
11196 */
11197 parseGroupOfType(e, t, a) {
11198 switch (t) {
11199 case "color":
11200 return this.parseColorGroup(a);
11201 case "size":
11202 return this.parseSizeGroup(a);
11203 case "url":
11204 return this.parseUrlGroup(a);
11205 case "math":
11206 case "text":
11207 return this.parseArgumentGroup(a, t);
11208 case "hbox": {
11209 var n = this.parseArgumentGroup(a, "text");
11210 return n != null ? {
11211 type: "styling",
11212 mode: n.mode,
11213 body: [n],
11214 style: "text"
11215 // simulate \textstyle
11216 } : null;
11217 }
11218 case "raw": {
11219 var s = this.parseStringGroup("raw", a);
11220 return s != null ? {
11221 type: "raw",
11222 mode: "text",
11223 string: s.text
11224 } : null;
11225 }
11226 case "primitive": {
11227 if (a)
11228 throw new M("A primitive argument cannot be optional");
11229 var o = this.parseGroup(e);
11230 if (o == null)
11231 throw new M("Expected group as " + e, this.fetch());
11232 return o;
11233 }
11234 case "original":
11235 case null:
11236 case void 0:
11237 return this.parseArgumentGroup(a);
11238 default:
11239 throw new M("Unknown group type as " + e, this.fetch());
11240 }
11241 }
11242 /**
11243 * Discard any space tokens, fetching the next non-space token.
11244 */
11245 consumeSpaces() {
11246 for (; this.fetch().text === " "; )
11247 this.consume();
11248 }
11249 /**
11250 * Parses a group, essentially returning the string formed by the
11251 * brace-enclosed tokens plus some position information.
11252 */
11253 parseStringGroup(e, t) {
11254 var a = this.gullet.scanArgument(t);
11255 if (a == null)
11256 return null;
11257 for (var n = "", s; (s = this.fetch()).text !== "EOF"; )
11258 n += s.text, this.consume();
11259 return this.consume(), a.text = n, a;
11260 }
11261 /**
11262 * Parses a regex-delimited group: the largest sequence of tokens
11263 * whose concatenated strings match `regex`. Returns the string
11264 * formed by the tokens plus some position information.
11265 */
11266 parseRegexGroup(e, t) {
11267 for (var a = this.fetch(), n = a, s = "", o; (o = this.fetch()).text !== "EOF" && e.test(s + o.text); )
11268 n = o, s += n.text, this.consume();
11269 if (s === "")
11270 throw new M("Invalid " + t + ": '" + a.text + "'", a);
11271 return a.range(n, s);
11272 }
11273 /**
11274 * Parses a color description.
11275 */
11276 parseColorGroup(e) {
11277 var t = this.parseStringGroup("color", e);
11278 if (t == null)
11279 return null;
11280 var a = /^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$/i.exec(t.text);
11281 if (!a)
11282 throw new M("Invalid color: '" + t.text + "'", t);
11283 var n = a[0];
11284 return /^[0-9a-f]{6}$/i.test(n) && (n = "#" + n), {
11285 type: "color-token",
11286 mode: this.mode,
11287 color: n
11288 };
11289 }
11290 /**
11291 * Parses a size specification, consisting of magnitude and unit.
11292 */
11293 parseSizeGroup(e) {
11294 var t, a = !1;
11295 if (this.gullet.consumeSpaces(), !e && this.gullet.future().text !== "{" ? t = this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/, "size") : t = this.parseStringGroup("size", e), !t)
11296 return null;
11297 !e && t.text.length === 0 && (t.text = "0pt", a = !0);
11298 var n = /([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t.text);
11299 if (!n)
11300 throw new M("Invalid size: '" + t.text + "'", t);
11301 var s = {
11302 number: +(n[1] + n[2]),
11303 // sign + magnitude, cast to number
11304 unit: n[3]
11305 };
11306 if (!gr(s))
11307 throw new M("Invalid unit: '" + s.unit + "'", t);
11308 return {
11309 type: "size",
11310 mode: this.mode,
11311 value: s,
11312 isBlank: a
11313 };
11314 }
11315 /**
11316 * Parses an URL, checking escaped letters and allowed protocols,
11317 * and setting the catcode of % as an active character (as in \hyperref).
11318 */
11319 parseUrlGroup(e) {
11320 this.gullet.lexer.setCatcode("%", 13), this.gullet.lexer.setCatcode("~", 12);
11321 var t = this.parseStringGroup("url", e);
11322 if (this.gullet.lexer.setCatcode("%", 14), this.gullet.lexer.setCatcode("~", 13), t == null)
11323 return null;
11324 var a = t.text.replace(/\\([#$%&~_^{}])/g, "$1");
11325 return {
11326 type: "url",
11327 mode: this.mode,
11328 url: a
11329 };
11330 }
11331 /**
11332 * Parses an argument with the mode specified.
11333 */
11334 parseArgumentGroup(e, t) {
11335 var a = this.gullet.scanArgument(e);
11336 if (a == null)
11337 return null;
11338 var n = this.mode;
11339 t && this.switchMode(t), this.gullet.beginGroup();
11340 var s = this.parseExpression(!1, "EOF");
11341 this.expect("EOF"), this.gullet.endGroup();
11342 var o = {
11343 type: "ordgroup",
11344 mode: this.mode,
11345 loc: a.loc,
11346 body: s
11347 };
11348 return t && this.switchMode(n), o;
11349 }
11350 /**
11351 * Parses an ordinary group, which is either a single nucleus (like "x")
11352 * or an expression in braces (like "{x+y}") or an implicit group, a group
11353 * that starts at the current position, and ends right before a higher explicit
11354 * group ends, or at EOF.
11355 */
11356 parseGroup(e, t) {
11357 var a = this.fetch(), n = a.text, s;
11358 if (n === "{" || n === "\\begingroup") {
11359 this.consume();
11360 var o = n === "{" ? "}" : "\\endgroup";
11361 this.gullet.beginGroup();
11362 var h = this.parseExpression(!1, o), c = this.fetch();
11363 this.expect(o), this.gullet.endGroup(), s = {
11364 type: "ordgroup",
11365 mode: this.mode,
11366 loc: u0.range(a, c),
11367 body: h,
11368 // A group formed by \begingroup...\endgroup is a semi-simple group
11369 // which doesn't affect spacing in math mode, i.e., is transparent.
11370 // https://tex.stackexchange.com/questions/1930/when-should-one-
11371 // use-begingroup-instead-of-bgroup
11372 semisimple: n === "\\begingroup" || void 0
11373 };
11374 } else if (s = this.parseFunction(t, e) || this.parseSymbol(), s == null && n[0] === "\\" && !la.hasOwnProperty(n)) {
11375 if (this.settings.throwOnError)
11376 throw new M("Undefined control sequence: " + n, a);
11377 s = this.formatUnsupportedCmd(n), this.consume();
11378 }
11379 return s;
11380 }
11381 /**
11382 * Form ligature-like combinations of characters for text mode.
11383 * This includes inputs like "--", "---", "``" and "''".
11384 * The result will simply replace multiple textord nodes with a single
11385 * character in each value by a single textord node having multiple
11386 * characters in its value. The representation is still ASCII source.
11387 * The group will be modified in place.
11388 */
11389 formLigatures(e) {
11390 for (var t = e.length - 1, a = 0; a < t; ++a) {
11391 var n = e[a], s = n.text;
11392 s === "-" && e[a + 1].text === "-" && (a + 1 < t && e[a + 2].text === "-" ? (e.splice(a, 3, {
11393 type: "textord",
11394 mode: "text",
11395 loc: u0.range(n, e[a + 2]),
11396 text: "---"
11397 }), t -= 2) : (e.splice(a, 2, {
11398 type: "textord",
11399 mode: "text",
11400 loc: u0.range(n, e[a + 1]),
11401 text: "--"
11402 }), t -= 1)), (s === "'" || s === "`") && e[a + 1].text === s && (e.splice(a, 2, {
11403 type: "textord",
11404 mode: "text",
11405 loc: u0.range(n, e[a + 1]),
11406 text: s + s
11407 }), t -= 1);
11408 }
11409 }
11410 /**
11411 * Parse a single symbol out of the string. Here, we handle single character
11412 * symbols and special functions like \verb.
11413 */
11414 parseSymbol() {
11415 var e = this.fetch(), t = e.text;
11416 if (/^\\verb[^a-zA-Z]/.test(t)) {
11417 this.consume();
11418 var a = t.slice(5), n = a.charAt(0) === "*";
11419 if (n && (a = a.slice(1)), a.length < 2 || a.charAt(0) !== a.slice(-1))
11420 throw new M(`\\verb assertion failed --
11421 please report what input caused this bug`);
11422 return a = a.slice(1, -1), {
11423 type: "verb",
11424 mode: "text",
11425 body: a,
11426 star: n
11427 };
11428 }
11429 fr.hasOwnProperty(t[0]) && !$[this.mode][t[0]] && (this.settings.strict && this.mode === "math" && this.settings.reportNonstrict("unicodeTextInMathMode", 'Accented Unicode text character "' + t[0] + '" used in math mode', e), t = fr[t[0]] + t.slice(1));
11430 var s = r4.exec(t);
11431 s && (t = t.substring(0, s.index), t === "i" ? t = "ı" : t === "j" && (t = "ȷ"));
11432 var o;
11433 if ($[this.mode][t]) {
11434 this.settings.strict && this.mode === "math" && st.indexOf(t) >= 0 && this.settings.reportNonstrict("unicodeTextInMathMode", 'Latin-1/Unicode text character "' + t[0] + '" used in math mode', e);
11435 var h = $[this.mode][t].group, c = u0.range(e), p;
11436 if (ja.hasOwnProperty(h)) {
11437 var g = h;
11438 p = {
11439 type: "atom",
11440 mode: this.mode,
11441 family: g,
11442 loc: c,
11443 text: t
11444 };
11445 } else
11446 p = {
11447 type: h,
11448 mode: this.mode,
11449 loc: c,
11450 text: t
11451 };
11452 o = p;
11453 } else if (t.charCodeAt(0) >= 128)
11454 this.settings.strict && (vr(t.charCodeAt(0)) ? this.mode === "math" && this.settings.reportNonstrict("unicodeTextInMathMode", 'Unicode text character "' + t[0] + '" used in math mode', e) : this.settings.reportNonstrict("unknownSymbol", 'Unrecognized Unicode character "' + t[0] + '"' + (" (" + t.charCodeAt(0) + ")"), e)), o = {
11455 type: "textord",
11456 mode: "text",
11457 loc: u0.range(e),
11458 text: t
11459 };
11460 else
11461 return null;
11462 if (this.consume(), s)
11463 for (var y = 0; y < s[0].length; y++) {
11464 var w = s[0][y];
11465 if (!rt[w])
11466 throw new M("Unknown accent ' " + w + "'", e);
11467 var x = rt[w][this.mode] || rt[w].text;
11468 if (!x)
11469 throw new M("Accent " + w + " unsupported in " + this.mode + " mode", e);
11470 o = {
11471 type: "accent",
11472 mode: this.mode,
11473 loc: u0.range(e),
11474 label: x,
11475 isStretchy: !1,
11476 isShifty: !0,
11477 // $FlowFixMe
11478 base: o
11479 };
11480 }
11481 return o;
11482 }
11483}
11484ue.endOfExpression = ["}", "\\endgroup", "\\end", "\\right", "&"];
11485var Ct = function(e, t) {
11486 if (!(typeof e == "string" || e instanceof String))
11487 throw new TypeError("KaTeX can only parse string typed expression");
11488 var a = new ue(e, t);
11489 delete a.gullet.macros.current["\\df@tag"];
11490 var n = a.parse();
11491 if (delete a.gullet.macros.current["\\current@color"], delete a.gullet.macros.current["\\color"], a.gullet.macros.get("\\df@tag")) {
11492 if (!t.displayMode)
11493 throw new M("\\tag works only in display equations");
11494 n = [{
11495 type: "tag",
11496 mode: "text",
11497 body: n,
11498 tag: a.subparse([new x0("\\df@tag")])
11499 }];
11500 }
11501 return n;
11502}, oa = function(e, t, a) {
11503 t.textContent = "";
11504 var n = Nt(e, a).toNode();
11505 t.appendChild(n);
11506};
11507typeof document < "u" && document.compatMode !== "CSS1Compat" && (typeof console < "u" && console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your website has a suitable doctype."), oa = function() {
11508 throw new M("KaTeX doesn't work in quirks mode.");
11509});
11510var l4 = function(e, t) {
11511 var a = Nt(e, t).toMarkup();
11512 return a;
11513}, o4 = function(e, t) {
11514 var a = new ct(t);
11515 return Ct(e, a);
11516}, ua = function(e, t, a) {
11517 if (a.throwOnError || !(e instanceof M))
11518 throw e;
11519 var n = b.makeSpan(["katex-error"], [new f0(t)]);
11520 return n.setAttribute("title", e.toString()), n.setAttribute("style", "color:" + a.errorColor), n;
11521}, Nt = function(e, t) {
11522 var a = new ct(t);
11523 try {
11524 var n = Ct(e, a);
11525 return g1(n, e, a);
11526 } catch (s) {
11527 return ua(s, e, a);
11528 }
11529}, u4 = function(e, t) {
11530 var a = new ct(t);
11531 try {
11532 var n = Ct(e, a);
11533 return b1(n, e, a);
11534 } catch (s) {
11535 return ua(s, e, a);
11536 }
11537}, h4 = {
11538 /**
11539 * Current KaTeX version
11540 */
11541 version: "0.16.9",
11542 /**
11543 * Renders the given LaTeX into an HTML+MathML combination, and adds
11544 * it as a child to the specified DOM node.
11545 */
11546 render: oa,
11547 /**
11548 * Renders the given LaTeX into an HTML+MathML combination string,
11549 * for sending to the client.
11550 */
11551 renderToString: l4,
11552 /**
11553 * KaTeX error, usually during parsing.
11554 */
11555 ParseError: M,
11556 /**
11557 * The shema of Settings
11558 */
11559 SETTINGS_SCHEMA: Ae,
11560 /**
11561 * Parses the given LaTeX into KaTeX's internal parse tree structure,
11562 * without rendering to HTML or MathML.
11563 *
11564 * NOTE: This method is not currently recommended for public use.
11565 * The internal tree representation is unstable and is very likely
11566 * to change. Use at your own risk.
11567 */
11568 __parse: o4,
11569 /**
11570 * Renders the given LaTeX into an HTML+MathML internal DOM tree
11571 * representation, without flattening that representation to a string.
11572 *
11573 * NOTE: This method is not currently recommended for public use.
11574 * The internal tree representation is unstable and is very likely
11575 * to change. Use at your own risk.
11576 */
11577 __renderToDomTree: Nt,
11578 /**
11579 * Renders the given LaTeX into an HTML internal DOM tree representation,
11580 * without MathML and without flattening that representation to a string.
11581 *
11582 * NOTE: This method is not currently recommended for public use.
11583 * The internal tree representation is unstable and is very likely
11584 * to change. Use at your own risk.
11585 */
11586 __renderToHTMLTree: u4,
11587 /**
11588 * extends internal font metrics object with a new object
11589 * each key in the new object represents a font name
11590 */
11591 __setFontMetrics: Ga,
11592 /**
11593 * adds a new symbol to builtin symbols table
11594 */
11595 __defineSymbol: i,
11596 /**
11597 * adds a new function to builtin function list,
11598 * which directly produce parse tree elements
11599 * and have their own html/mathml builders
11600 */
11601 __defineFunction: B,
11602 /**
11603 * adds a new macro to builtin macro list
11604 */
11605 __defineMacro: m,
11606 /**
11607 * Expose the dom tree node types, which can be useful for type checking nodes.
11608 *
11609 * NOTE: This method is not currently recommended for public use.
11610 * The internal tree representation is unstable and is very likely
11611 * to change. Use at your own risk.
11612 */
11613 __domTree: {
11614 Span: me,
11615 Anchor: pt,
11616 SymbolNode: f0,
11617 SvgNode: D0,
11618 PathNode: P0,
11619 LineNode: it
11620 }
11621};
11622export {
11623 h4 as default
11624};