@bluepic/embed 0.4.0-next.187 → 0.4.0-next.189

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3822 +0,0 @@
1
- var Fe = Object.defineProperty;
2
- var Be = (A, e, n) => e in A ? Fe(A, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : A[e] = n;
3
- var E = (A, e, n) => Be(A, typeof e != "symbol" ? e + "" : e, n);
4
- const kA = {};
5
- function ke(A) {
6
- let e = kA[A];
7
- if (e)
8
- return e;
9
- e = kA[A] = [];
10
- for (let n = 0; n < 128; n++) {
11
- const r = String.fromCharCode(n);
12
- e.push(r);
13
- }
14
- for (let n = 0; n < A.length; n++) {
15
- const r = A.charCodeAt(n);
16
- e[r] = "%" + ("0" + r.toString(16).toUpperCase()).slice(-2);
17
- }
18
- return e;
19
- }
20
- function O(A, e) {
21
- typeof e != "string" && (e = O.defaultChars);
22
- const n = ke(e);
23
- return A.replace(/(%[a-f0-9]{2})+/gi, function(r) {
24
- let t = "";
25
- for (let i = 0, o = r.length; i < o; i += 3) {
26
- const s = parseInt(r.slice(i + 1, i + 3), 16);
27
- if (s < 128) {
28
- t += n[s];
29
- continue;
30
- }
31
- if ((s & 224) === 192 && i + 3 < o) {
32
- const c = parseInt(r.slice(i + 4, i + 6), 16);
33
- if ((c & 192) === 128) {
34
- const l = s << 6 & 1984 | c & 63;
35
- l < 128 ? t += "��" : t += String.fromCharCode(l), i += 3;
36
- continue;
37
- }
38
- }
39
- if ((s & 240) === 224 && i + 6 < o) {
40
- const c = parseInt(r.slice(i + 4, i + 6), 16), l = parseInt(r.slice(i + 7, i + 9), 16);
41
- if ((c & 192) === 128 && (l & 192) === 128) {
42
- const a = s << 12 & 61440 | c << 6 & 4032 | l & 63;
43
- a < 2048 || a >= 55296 && a <= 57343 ? t += "���" : t += String.fromCharCode(a), i += 6;
44
- continue;
45
- }
46
- }
47
- if ((s & 248) === 240 && i + 9 < o) {
48
- const c = parseInt(r.slice(i + 4, i + 6), 16), l = parseInt(r.slice(i + 7, i + 9), 16), a = parseInt(r.slice(i + 10, i + 12), 16);
49
- if ((c & 192) === 128 && (l & 192) === 128 && (a & 192) === 128) {
50
- let h = s << 18 & 1835008 | c << 12 & 258048 | l << 6 & 4032 | a & 63;
51
- h < 65536 || h > 1114111 ? t += "����" : (h -= 65536, t += String.fromCharCode(55296 + (h >> 10), 56320 + (h & 1023))), i += 9;
52
- continue;
53
- }
54
- }
55
- t += "�";
56
- }
57
- return t;
58
- });
59
- }
60
- O.defaultChars = ";/?:@&=+$,#";
61
- O.componentChars = "";
62
- const EA = {};
63
- function Ee(A) {
64
- let e = EA[A];
65
- if (e)
66
- return e;
67
- e = EA[A] = [];
68
- for (let n = 0; n < 128; n++) {
69
- const r = String.fromCharCode(n);
70
- /^[0-9a-z]$/i.test(r) ? e.push(r) : e.push("%" + ("0" + n.toString(16).toUpperCase()).slice(-2));
71
- }
72
- for (let n = 0; n < A.length; n++)
73
- e[A.charCodeAt(n)] = A[n];
74
- return e;
75
- }
76
- function Z(A, e, n) {
77
- typeof e != "string" && (n = e, e = Z.defaultChars), typeof n > "u" && (n = !0);
78
- const r = Ee(e);
79
- let t = "";
80
- for (let i = 0, o = A.length; i < o; i++) {
81
- const s = A.charCodeAt(i);
82
- if (n && s === 37 && i + 2 < o && /^[0-9a-f]{2}$/i.test(A.slice(i + 1, i + 3))) {
83
- t += A.slice(i, i + 3), i += 2;
84
- continue;
85
- }
86
- if (s < 128) {
87
- t += r[s];
88
- continue;
89
- }
90
- if (s >= 55296 && s <= 57343) {
91
- if (s >= 55296 && s <= 56319 && i + 1 < o) {
92
- const c = A.charCodeAt(i + 1);
93
- if (c >= 56320 && c <= 57343) {
94
- t += encodeURIComponent(A[i] + A[i + 1]), i++;
95
- continue;
96
- }
97
- }
98
- t += "%EF%BF%BD";
99
- continue;
100
- }
101
- t += encodeURIComponent(A[i]);
102
- }
103
- return t;
104
- }
105
- Z.defaultChars = ";/?:@&=+$,-_.!~*'()#";
106
- Z.componentChars = "-_.!~*'()";
107
- function dA(A) {
108
- let e = "";
109
- return e += A.protocol || "", e += A.slashes ? "//" : "", e += A.auth ? A.auth + "@" : "", A.hostname && A.hostname.indexOf(":") !== -1 ? e += "[" + A.hostname + "]" : e += A.hostname || "", e += A.port ? ":" + A.port : "", e += A.pathname || "", e += A.search || "", e += A.hash || "", e;
110
- }
111
- function tA() {
112
- this.protocol = null, this.slashes = null, this.auth = null, this.port = null, this.hostname = null, this.hash = null, this.search = null, this.pathname = null;
113
- }
114
- const be = /^([a-z0-9.+-]+:)/i, we = /:[0-9]*$/, _e = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/, ye = ["<", ">", '"', "`", " ", "\r", `
115
- `, " "], Qe = ["{", "}", "|", "\\", "^", "`"].concat(ye), xe = ["'"].concat(Qe), bA = ["%", "/", "?", ";", "#"].concat(xe), wA = ["/", "?", "#"], Ke = 255, _A = /^[+a-z0-9A-Z_-]{0,63}$/, Ge = /^([+a-z0-9A-Z_-]{0,63})(.*)$/, yA = {
116
- javascript: !0,
117
- "javascript:": !0
118
- }, QA = {
119
- http: !0,
120
- https: !0,
121
- ftp: !0,
122
- gopher: !0,
123
- file: !0,
124
- "http:": !0,
125
- "https:": !0,
126
- "ftp:": !0,
127
- "gopher:": !0,
128
- "file:": !0
129
- };
130
- function CA(A, e) {
131
- if (A && A instanceof tA) return A;
132
- const n = new tA();
133
- return n.parse(A, e), n;
134
- }
135
- tA.prototype.parse = function(A, e) {
136
- let n, r, t, i = A;
137
- if (i = i.trim(), !e && A.split("#").length === 1) {
138
- const l = _e.exec(i);
139
- if (l)
140
- return this.pathname = l[1], l[2] && (this.search = l[2]), this;
141
- }
142
- let o = be.exec(i);
143
- if (o && (o = o[0], n = o.toLowerCase(), this.protocol = o, i = i.substr(o.length)), (e || o || i.match(/^\/\/[^@\/]+@[^@\/]+/)) && (t = i.substr(0, 2) === "//", t && !(o && yA[o]) && (i = i.substr(2), this.slashes = !0)), !yA[o] && (t || o && !QA[o])) {
144
- let l = -1;
145
- for (let u = 0; u < wA.length; u++)
146
- r = i.indexOf(wA[u]), r !== -1 && (l === -1 || r < l) && (l = r);
147
- let a, h;
148
- l === -1 ? h = i.lastIndexOf("@") : h = i.lastIndexOf("@", l), h !== -1 && (a = i.slice(0, h), i = i.slice(h + 1), this.auth = a), l = -1;
149
- for (let u = 0; u < bA.length; u++)
150
- r = i.indexOf(bA[u]), r !== -1 && (l === -1 || r < l) && (l = r);
151
- l === -1 && (l = i.length), i[l - 1] === ":" && l--;
152
- const f = i.slice(0, l);
153
- i = i.slice(l), this.parseHost(f), this.hostname = this.hostname || "";
154
- const g = this.hostname[0] === "[" && this.hostname[this.hostname.length - 1] === "]";
155
- if (!g) {
156
- const u = this.hostname.split(/\./);
157
- for (let B = 0, m = u.length; B < m; B++) {
158
- const I = u[B];
159
- if (I && !I.match(_A)) {
160
- let D = "";
161
- for (let F = 0, d = I.length; F < d; F++)
162
- I.charCodeAt(F) > 127 ? D += "x" : D += I[F];
163
- if (!D.match(_A)) {
164
- const F = u.slice(0, B), d = u.slice(B + 1), p = I.match(Ge);
165
- p && (F.push(p[1]), d.unshift(p[2])), d.length && (i = d.join(".") + i), this.hostname = F.join(".");
166
- break;
167
- }
168
- }
169
- }
170
- }
171
- this.hostname.length > Ke && (this.hostname = ""), g && (this.hostname = this.hostname.substr(1, this.hostname.length - 2));
172
- }
173
- const s = i.indexOf("#");
174
- s !== -1 && (this.hash = i.substr(s), i = i.slice(0, s));
175
- const c = i.indexOf("?");
176
- return c !== -1 && (this.search = i.substr(c), i = i.slice(0, c)), i && (this.pathname = i), QA[n] && this.hostname && !this.pathname && (this.pathname = ""), this;
177
- };
178
- tA.prototype.parseHost = function(A) {
179
- let e = we.exec(A);
180
- e && (e = e[0], e !== ":" && (this.port = e.substr(1)), A = A.substr(0, A.length - e.length)), A && (this.hostname = A);
181
- };
182
- const We = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
183
- __proto__: null,
184
- decode: O,
185
- encode: Z,
186
- format: dA,
187
- parse: CA
188
- }, Symbol.toStringTag, { value: "Module" })), XA = /[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/, LA = /[\0-\x1F\x7F-\x9F]/, Ye = /[\xAD\u0600-\u0605\u061C\u06DD\u070F\u0890\u0891\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD80D[\uDC30-\uDC3F]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/, mA = /[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061D-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B4E\u1B4F\u1B5A-\u1B60\u1B7D-\u1B7F\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E5D\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDD6E\uDEAD\uDED0\uDF55-\uDF59\uDF86-\uDF89]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9\uDFD4\uDFD5\uDFD7\uDFD8]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDEB9\uDF3C-\uDF3E]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2\uDF00-\uDF09\uDFE1]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDF43-\uDF4F\uDFFF]|\uD809[\uDC70-\uDC74]|\uD80B[\uDFF1\uDFF2]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDD6D-\uDD6F\uDE97-\uDE9A\uDFE2]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD839\uDDFF|\uD83A[\uDD5E\uDD5F]/, zA = /[\$\+<->\^`\|~\xA2-\xA6\xA8\xA9\xAC\xAE-\xB1\xB4\xB8\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u03F6\u0482\u058D-\u058F\u0606-\u0608\u060B\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u07FE\u07FF\u0888\u09F2\u09F3\u09FA\u09FB\u0AF1\u0B70\u0BF3-\u0BFA\u0C7F\u0D4F\u0D79\u0E3F\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u17DB\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2044\u2052\u207A-\u207C\u208A-\u208C\u20A0-\u20C1\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2307\u230C-\u2328\u232B-\u2429\u2440-\u244A\u249C-\u24E9\u2500-\u2767\u2794-\u27C4\u27C7-\u27E5\u27F0-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2B73\u2B76-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFF\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u309B\u309C\u3190\u3191\u3196-\u319F\u31C0-\u31E5\u31EF\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uAA77-\uAA79\uAB5B\uAB6A\uAB6B\uFB29\uFBB2-\uFBD2\uFD40-\uFD4F\uFD90\uFD91\uFDC8-\uFDCF\uFDFC-\uFDFF\uFE62\uFE64-\uFE66\uFE69\uFF04\uFF0B\uFF1C-\uFF1E\uFF3E\uFF40\uFF5C\uFF5E\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD]|\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD803[\uDD8E\uDD8F\uDED1-\uDED8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD833[\uDC00-\uDCEF\uDCFA-\uDCFC\uDD00-\uDEB3\uDEBA-\uDED0\uDEE0-\uDEF0\uDF50-\uDFC3]|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDEA\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838[\uDD4F\uDEFF]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED8\uDEDC-\uDEEC\uDEF0-\uDEFC\uDF00-\uDFD9\uDFE0-\uDFEB\uDFF0]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0-\uDCBB\uDCC0\uDCC1\uDCD0-\uDCD8\uDD00-\uDE57\uDE60-\uDE6D\uDE70-\uDE7C\uDE80-\uDE8A\uDE8E-\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF-\uDEF8\uDF00-\uDF92\uDF94-\uDFEF\uDFFA]/, jA = /[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/, Ze = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
189
- __proto__: null,
190
- Any: XA,
191
- Cc: LA,
192
- Cf: Ye,
193
- P: mA,
194
- S: zA,
195
- Z: jA
196
- }, Symbol.toStringTag, { value: "Module" })), Je = /* @__PURE__ */ new Map([
197
- [0, 65533],
198
- // C1 Unicode control character reference replacements
199
- [128, 8364],
200
- [130, 8218],
201
- [131, 402],
202
- [132, 8222],
203
- [133, 8230],
204
- [134, 8224],
205
- [135, 8225],
206
- [136, 710],
207
- [137, 8240],
208
- [138, 352],
209
- [139, 8249],
210
- [140, 338],
211
- [142, 381],
212
- [145, 8216],
213
- [146, 8217],
214
- [147, 8220],
215
- [148, 8221],
216
- [149, 8226],
217
- [150, 8211],
218
- [151, 8212],
219
- [152, 732],
220
- [153, 8482],
221
- [154, 353],
222
- [155, 8250],
223
- [156, 339],
224
- [158, 382],
225
- [159, 376]
226
- ]);
227
- function Re(A) {
228
- return A >= 55296 && A <= 57343 || A > 1114111 ? 65533 : Je.get(A) ?? A;
229
- }
230
- function Se(A) {
231
- const e = atob(A), n = e.length & -2, r = new Uint16Array(n / 2);
232
- for (let t = 0, i = 0; t < n; t += 2) {
233
- const o = e.charCodeAt(t), s = e.charCodeAt(t + 1);
234
- r[i++] = o | s << 8;
235
- }
236
- return r;
237
- }
238
- const He = /* @__PURE__ */ Se("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IAAOA12J/c8iFvaxBhAAhOVGFjZGZnbG1vcHFzdHV4owOlA6kDsAO/A8IDxgPNA9ID8gP9AwEEFAQeBCAEJQRHAEphSAA7gNAA0EBjAHUAdABlADuAyQDJQIABYWl5ALYDuQO+A/Ihb24aYXIAYwA7gMoAykAtZG8AdAAWYXIAAOA12AjdcgBhAHYAZQA7gMgAyEDlIm1lbnQAoAgiAAFhcNYD2QNjAHIAEmF0AHkAUwLhAwAAAADpA20lYWxsU3F1YXJlAACg+yVlJ3J5U21hbGxTcXVhcmUAAKCrJQABZ3D2A/kDbwBuABhhZgAA4DXYPN3zImlsb26VY3UAAAFhaQYEDgRsAFSgdSppImxkZQAAoEIi7CNpYnJpdW0AoMwhAAFjaRgEGwRyAACgMCFtAACgcyphAJdjbQBsADuAywDLQAABaXApBC0E8yF0cwCgAyLvJG5lbnRpYWxFAKBHIYACY2Zpb3MAPQQ/BEMEXQRyBHkAJGRyAADgNdgJ3WwibGVkAFMCTAQAAAAAVARtJWFsbFNxdWFyZQAAoPwlZSdyeVNtYWxsU3F1YXJlAACgqiVwA2UEAABpBAAAAABtBGYAAOA12D3dwSFsbACgACLyI2llcnRyZgCgMSFjAPIAcQQABkpUYWJjZGZnb3JzdIgEiwSOBJMElwSkBKcEqwStBLIE5QTqBGMAeQADZDuAPgA+QO0hbWFkoJMD3GNyImV2ZQAeYYABZWl5AJ0EoASjBOQhaWwiYXIAYwAcYRNkbwB0ACBhcgAA4DXYCt0AoNkicABmAADgNdg+3eUiYXRlcgADRUZHTFNUvwTIBM8E1QTZBOAEcSJ1YWwATKBlIuUhc3MAoNsidSRsbEVxdWFsAACgZyJyI2VhdGVyAACgoirlIXNzAKB3IuwkYW50RXF1YWwAoH4qaSJsZGUAAKBzImMAcgAA4DXYotwAoGsiAARBYWNmaW9zdfkE/QQFBQgFCwUTBSIFKwVSIkRjeQAqZAABY3QBBQQFZQBrAMdiXmDpIXJjJGFyAACgDCFsJWJlcnRTcGFjZQAAoAsh8AEYBQAAGwVmAACgDSHpJXpvbnRhbExpbmUAoAAlAAFjdCYFKAXyABIF8iFvayZhbQBwAEQBMQU5BW8AdwBuAEgAdQBtAPAAAAFxInVhbAAAoE8iAAdFSk9hY2RmZ21ub3N0dVMFVgVZBVwFYwVtBXAFcwV6BZAFtgXFBckFzQVjAHkAFWTsIWlnMmFjAHkAAWRjAHUAdABlADuAzQDNQAABaXlnBWwFcgBjADuAzgDOQBhkbwB0ADBhcgAAoBEhcgBhAHYAZQA7gMwAzEAAoREhYXB/BYsFAAFjZ4MFhQVyACphaSNuYXJ5SQAAoEghbABpAGUA8wD6AvQBlQUAAKUFZaAsIgABZ3KaBZ4F8iFhbACgKyLzI2VjdGlvbgCgwiJpI3NpYmxlAAABQ1SsBbEFbyJtbWEAAKBjIGkibWVzAACgYiCAAWdwdAC8Bb8FwwVvAG4ALmFmAADgNdhA3WEAmWNjAHIAAKAQIWkibGRlAChh6wHSBQAA1QVjAHkABmRsADuAzwDPQIACY2Zvc3UA4QXpBe0F8gX9BQABaXnlBegFcgBjADRhGWRyAADgNdgN3XAAZgAA4DXYQd3jAfcFAAD7BXIAAOA12KXc8iFjeQhk6yFjeQRkgANISmFjZm9zAAwGDwYSBhUGHQYhBiYGYwB5ACVkYwB5AAxk8CFwYZpjAAFleRkGHAbkIWlsNmEaZHIAAOA12A7dcABmAADgNdhC3WMAcgAA4DXYptyABUpUYWNlZmxtb3N0AD0GQAZDBl4GawZkB2gHcAd0B80H2gdjAHkACWQ7gDwAPECAAmNtbnByAEwGTwZSBlUGWwb1IXRlOWHiIWRhm2NnAACg6ifsI2FjZXRyZgCgEiFyAACgniGAAWFleQBkBmcGagbyIW9uPWHkIWlsO2EbZAABZnNvBjQHdAAABUFDREZSVFVWYXKABp4GpAbGBssG3AYDByEHwQIqBwABbnKEBowGZyVsZUJyYWNrZXQAAKDoJ/Ihb3cAoZAhQlKTBpcGYQByAACg5CHpJGdodEFycm93AKDGIWUjaWxpbmcAAKAII28A9QGqBgAAsgZiJWxlQnJhY2tldAAAoOYnbgDUAbcGAAC+BmUkZVZlY3RvcgAAoGEp5SJjdG9yQqDDIWEAcgAAoFkpbCJvb3IAAKAKI2kiZ2h0AAABQVbSBtcGciJyb3cAAKCUIeUiY3RvcgCgTikAAWVy4AbwBmUAAKGjIkFW5gbrBnIicm93AACgpCHlImN0b3IAoFopaSNhbmdsZQBCorIi+wYAAAAA/wZhAHIAAKDPKXEidWFsAACgtCJwAIABRFRWAAoHEQcYB+8kd25WZWN0b3IAoFEpZSRlVmVjdG9yAACgYCnlImN0b3JCoL8hYQByAACgWCnlImN0b3JCoLwhYQByAACgUilpAGcAaAB0AGEAcgByAG8A9wDMAnMAAANFRkdMU1Q/B0cHTgdUB1gHXwfxJXVhbEdyZWF0ZXIAoNoidSRsbEVxdWFsAACgZiJyI2VhdGVyAACgdiLlIXNzAKChKuwkYW50RXF1YWwAoH0qaSJsZGUAAKByInIAAOA12A/dZaDYIuYjdGFycm93AKDaIWkiZG90AD9hgAFucHcAege1B7kHZwAAAkxSbHKCB5QHmwerB+UhZnQAAUFSiAeNB3Iicm93AACg9SfpJGdodEFycm93AKD3J+kkZ2h0QXJyb3cAoPYn5SFmdAABYXLcAqEHaQBnAGgAdABhAHIAcgBvAPcA5wJpAGcAaAB0AGEAcgByAG8A9wDuAmYAAOA12EPdZQByAAABTFK/B8YHZSRmdEFycm93AACgmSHpJGdodEFycm93AKCYIYABY2h0ANMH1QfXB/IAWgYAoLAh8iFva0FhAKBqIgAEYWNlZmlvc3XpB+wH7gf/BwMICQgOCBEIcAAAoAUpeQAcZAABZGzyB/kHaSR1bVNwYWNlAACgXyBsI2ludHJmAACgMyFyAADgNdgQ3e4jdXNQbHVzAKATInAAZgAA4DXYRN1jAPIA/gecY4AESmFjZWZvc3R1ACEIJAgoCDUIgQiFCDsKQApHCmMAeQAKZGMidXRlAENhgAFhZXkALggxCDQI8iFvbkdh5CFpbEVhHWSAAWdzdwA7CGEIfQjhInRpdmWAAU1UVgBECEwIWQhlJWRpdW1TcGFjZQAAoAsgaABpAAABY25SCFMIawBTAHAAYQBjAOUASwhlAHIAeQBUAGgAaQDuAFQI9CFlZAABR0xnCHUIcgBlAGEAdABlAHIARwByAGUAYQB0AGUA8gDrBGUAcwBzAEwAZQBzAPMA2wdMImluZQAKYHIAAOA12BHdAAJCbnB0jAiRCJkInAhyImVhawAAoGAgwiZyZWFraW5nU3BhY2WgYGYAAKAVIUOq7CqzCMIIzQgAAOcIGwkAAAAAAAAtCQAAbwkAAIcJAACdCcAJGQoAADQKAAFvdbYIvAjuI2dydWVudACgYiJwIkNhcAAAoG0ibyh1YmxlVmVydGljYWxCYXIAAKAmIoABbHF4ANII1wjhCOUibWVudACgCSL1IWFsVKBgImkibGRlAADgQiI4A2kic3RzAACgBCJyI2VhdGVyAACjbyJFRkdMU1T1CPoIAgkJCQ0JFQlxInVhbAAAoHEidSRsbEVxdWFsAADgZyI4A3IjZWF0ZXIAAOBrIjgD5SFzcwCgeSLsJGFudEVxdWFsAOB+KjgDaSJsZGUAAKB1IvUhbXBEASAJJwnvI3duSHVtcADgTiI4A3EidWFsAADgTyI4A2UAAAFmczEJRgn0JFRyaWFuZ2xlQqLqIj0JAAAAAEIJYQByAADgzyk4A3EidWFsAACg7CJzAICibiJFR0xTVABRCVYJXAlhCWkJcSJ1YWwAAKBwInIjZWF0ZXIAAKB4IuUhc3MA4GoiOAPsJGFudEVxdWFsAOB9KjgDaSJsZGUAAKB0IuUic3RlZAABR0x1CX8J8iZlYXRlckdyZWF0ZXIA4KIqOAPlI3NzTGVzcwDgoSo4A/IjZWNlZGVzAKGAIkVTjwmVCXEidWFsAADgryo4A+wkYW50RXF1YWwAoOAiAAFlaaAJqQl2JmVyc2VFbGVtZW50AACgDCLnJWh0VHJpYW5nbGVCousitgkAAAAAuwlhAHIAAODQKTgDcSJ1YWwAAKDtIgABcXXDCeAJdSNhcmVTdQAAAWJwywnVCfMhZXRF4I8iOANxInVhbAAAoOIi5SJyc2V0ReCQIjgDcSJ1YWwAAKDjIoABYmNwAOYJ8AkNCvMhZXRF4IIi0iBxInVhbAAAoIgi4yJlZWRzgKGBIkVTVAD6CQAKBwpxInVhbAAA4LAqOAPsJGFudEVxdWFsAKDhImkibGRlAADgfyI4A+UicnNldEXggyLSIHEidWFsAACgiSJpImxkZQCAoUEiRUZUACIKJwouCnEidWFsAACgRCJ1JGxsRXF1YWwAAKBHImkibGRlAACgSSJlJXJ0aWNhbEJhcgAAoCQiYwByAADgNdip3GkAbABkAGUAO4DRANFAnWMAB0VhY2RmZ21vcHJzdHV2XgphCmgKcgp2CnoKgQqRCpYKqwqtCrsKyArNCuwhaWdSYWMAdQB0AGUAO4DTANNAAAFpeWwKcQpyAGMAO4DUANRAHmRiImxhYwBQYXIAAOA12BLdcgBhAHYAZQA7gNIA0kCAAWFlaQCHCooKjQpjAHIATGFnAGEAqWNjInJvbgCfY3AAZgAA4DXYRt3lI25DdXJseQABRFGeCqYKbyV1YmxlUXVvdGUAAKAcIHUib3RlAACgGCAAoFQqAAFjbLEKtQpyAADgNdiq3GEAcwBoADuA2ADYQGkAbAHACsUKZABlADuA1QDVQGUAcwAAoDcqbQBsADuA1gDWQGUAcgAAAUJQ0wrmCgABYXLXCtoKcgAAoD4gYQBjAAABZWvgCuIKAKDeI2UAdAAAoLQjYSVyZW50aGVzaXMAAKDcI4AEYWNmaGlsb3JzAP0KAwsFCwkLCwsMCxELIwtaC3IjdGlhbEQAAKACInkAH2RyAADgNdgT3WkApmOgY/Ujc01pbnVzsWAAAWlwFQsgC24AYwBhAHIAZQBwAGwAYQBuAOUACgVmAACgGSGAobsqZWlvACoLRQtJC+MiZWRlc4CheiJFU1QANAs5C0ALcSJ1YWwAAKCvKuwkYW50RXF1YWwAoHwiaSJsZGUAAKB+Im0AZQAAoDMgAAFkcE0LUQv1IWN0AKAPIm8jcnRpb24AYaA3ImwAAKAdIgABY2leC2ILcgAA4DXYq9yoYwACVWZvc2oLbwtzC3cLTwBUADuAIgAiQHIAAOA12BTdcABmAACgGiFjAHIAAOA12KzcAAZCRWFjZWZoaW9yc3WPC5MLlwupC7YL2AvbC90LhQyTDJoMowzhIXJyAKAQKUcAO4CuAK5AgAFjbnIAnQugC6ML9SF0ZVRhZwAAoOsncgB0oKAhbAAAoBYpgAFhZXkArwuyC7UL8iFvblhh5CFpbFZhIGR2oBwhZSJyc2UAAAFFVb8LzwsAAWxxwwvIC+UibWVudACgCyL1JGlsaWJyaXVtAKDLIXAmRXF1aWxpYnJpdW0AAKBvKXIAAKAcIW8AoWPnIWh0AARBQ0RGVFVWYewLCgwQDDIMNwxeDHwM9gIAAW5y8Av4C2clbGVCcmFja2V0AACg6SfyIW93AKGSIUJM/wsDDGEAcgAAoOUhZSRmdEFycm93AACgxCFlI2lsaW5nAACgCSNvAPUBFgwAAB4MYiVsZUJyYWNrZXQAAKDnJ24A1AEjDAAAKgxlJGVWZWN0b3IAAKBdKeUiY3RvckKgwiFhAHIAAKBVKWwib29yAACgCyMAAWVyOwxLDGUAAKGiIkFWQQxGDHIicm93AACgpiHlImN0b3IAoFspaSNhbmdsZQBCorMiVgwAAAAAWgxhAHIAAKDQKXEidWFsAACgtSJwAIABRFRWAGUMbAxzDO8kd25WZWN0b3IAoE8pZSRlVmVjdG9yAACgXCnlImN0b3JCoL4hYQByAACgVCnlImN0b3JCoMAhYQByAACgUykAAXB1iQyMDGYAAKAdIe4kZEltcGxpZXMAoHAp6SRnaHRhcnJvdwCg2yEAAWNongyhDHIAAKAbIQCgsSHsJGVEZWxheWVkAKD0KYAGSE9hY2ZoaW1vcXN0dQC/DMgMzAzQDOIM5gwKDQ0NFA0ZDU8NVA1YDQABQ2PDDMYMyCFjeSlkeQAoZEYiVGN5ACxkYyJ1dGUAWmEAorwqYWVpedgM2wzeDOEM8iFvbmBh5CFpbF5hcgBjAFxhIWRyAADgNdgW3e8hcnQAAkRMUlXvDPYM/QwEDW8kd25BcnJvdwAAoJMhZSRmdEFycm93AACgkCHpJGdodEFycm93AKCSIXAjQXJyb3cAAKCRIechbWGjY+EkbGxDaXJjbGUAoBgicABmAADgNdhK3XICHw0AAAAAIg10AACgGiLhIXJlgKGhJUlTVQAqDTINSg3uJXRlcnNlY3Rpb24AoJMidQAAAWJwNw1ADfMhZXRFoI8icSJ1YWwAAKCRIuUicnNldEWgkCJxInVhbAAAoJIibiJpb24AAKCUImMAcgAA4DXYrtxhAHIAAKDGIgACYmNtcF8Nag2ODZANc6DQImUAdABFoNAicSJ1YWwAAKCGIgABY2huDYkNZSJlZHMAgKF7IkVTVAB4DX0NhA1xInVhbAAAoLAq7CRhbnRFcXVhbACgfSJpImxkZQAAoH8iVABoAGEA9ADHCwCgESIAodEiZXOVDZ8NciJzZXQARaCDInEidWFsAACghyJlAHQAAKDRIoAFSFJTYWNmaGlvcnMAtQ27Db8NyA3ODdsN3w3+DRgOHQ4jDk8AUgBOADuA3gDeQMEhREUAoCIhAAFIY8MNxg1jAHkAC2R5ACZkAAFidcwNzQ0JYKRjgAFhZXkA1A3XDdoN8iFvbmRh5CFpbGJhImRyAADgNdgX3QABZWnjDe4N8gHoDQAA7Q3lImZvcmUAoDQiYQCYYwABY27yDfkNayNTcGFjZQAA4F8gCiDTInBhY2UAoAkg7CFkZYChPCJFRlQABw4MDhMOcSJ1YWwAAKBDInUkbGxFcXVhbAAAoEUiaSJsZGUAAKBIInAAZgAA4DXYS93pI3BsZURvdACg2yAAAWN0Jw4rDnIAAOA12K/c8iFva2Zh4QpFDlYOYA5qDgAAbg5yDgAAAAAAAAAAAAB5DnwOqA6zDgAADg8RDxYPGg8AAWNySA5ODnUAdABlADuA2gDaQHIAb6CfIeMhaXIAoEkpcgDjAVsOAABdDnkADmR2AGUAbGEAAWl5Yw5oDnIAYwA7gNsA20AjZGIibGFjAHBhcgAA4DXYGN1yAGEAdgBlADuA2QDZQOEhY3JqYQABZGl/Dp8OZQByAAABQlCFDpcOAAFhcokOiw5yAF9gYQBjAAABZWuRDpMOAKDfI2UAdAAAoLUjYSVyZW50aGVzaXMAAKDdI28AbgBQoMMi7CF1cwCgjiIAAWdwqw6uDm8AbgByYWYAAOA12EzdAARBREVUYWRwc78O0g7ZDuEOBQPqDvMOBw9yInJvdwDCoZEhyA4AAMwOYQByAACgEilvJHduQXJyb3cAAKDFIW8kd25BcnJvdwAAoJUhcSV1aWxpYnJpdW0AAKBuKWUAZQBBoKUiciJyb3cAAKClIW8AdwBuAGEAcgByAG8A9wAQA2UAcgAAAUxS+Q4AD2UkZnRBcnJvdwAAoJYh6SRnaHRBcnJvdwCglyFpAGyg0gNvAG4ApWPpIW5nbmFjAHIAAOA12LDcaSJsZGUAaGFtAGwAO4DcANxAgAREYmNkZWZvc3YALQ8xDzUPNw89D3IPdg97D4AP4SFzaACgqyJhAHIAAKDrKnkAEmThIXNobKCpIgCg5ioAAWVyQQ9DDwCgwSKAAWJ0eQBJD00Paw9hAHIAAKAWIGmgFiDjIWFsAAJCTFNUWA9cD18PZg9hAHIAAKAjIukhbmV8YGUkcGFyYXRvcgAAoFgnaSJsZGUAAKBAItQkaGluU3BhY2UAoAogcgAA4DXYGd1wAGYAAOA12E3dYwByAADgNdix3GQiYXNoAACgqiKAAmNlZm9zAI4PkQ+VD5kPng/pIXJjdGHkIWdlAKDAInIAAOA12BrdcABmAADgNdhO3WMAcgAA4DXYstwAAmZpb3OqD64Prw+0D3IAAOA12BvdnmNwAGYAAOA12E/dYwByAADgNdiz3IAEQUlVYWNmb3N1AMgPyw/OD9EP2A/gD+QP6Q/uD2MAeQAvZGMAeQAHZGMAeQAuZGMAdQB0AGUAO4DdAN1AAAFpedwP3w9yAGMAdmErZHIAAOA12BzdcABmAADgNdhQ3WMAcgAA4DXYtNxtAGwAeGEABEhhY2RlZm9z/g8BEAUQDRAQEB0QIBAkEGMAeQAWZGMidXRlAHlhAAFheQkQDBDyIW9ufWEXZG8AdAB7YfIBFRAAABwQbwBXAGkAZAB0AOgAVAhhAJZjcgAAoCghcABmAACgJCFjAHIAAOA12LXc4QtCEEkQTRAAAGcQbRByEAAAAAAAAAAAeRCKEJcQ8hD9EAAAGxEhETIROREAAD4RYwB1AHQAZQA7gOEA4UByImV2ZQADYYCiPiJFZGl1eQBWEFkQWxBgEGUQAOA+IjMDAKA/InIAYwA7gOIA4kB0AGUAO4C0ALRAMGRsAGkAZwA7gOYA5kByoGEgAOA12B7dcgBhAHYAZQA7gOAA4EAAAWVwfBCGEAABZnCAEIQQ8yF5bQCgNSHoAIMQaABhALFjAAFhcI0QWwAAAWNskRCTEHIAAWFnAACgPypkApwQAAAAALEQAKInImFkc3ajEKcQqRCuEG4AZAAAoFUqAKBcKmwib3BlAACgWCoAoFoqAKMgImVsbXJzersQvRDAEN0Q5RDtEACgpCllAACgICJzAGQAYaAhImEEzhDQENIQ1BDWENgQ2hDcEACgqCkAoKkpAKCqKQCgqykAoKwpAKCtKQCgrikAoK8pdAB2oB8iYgBkoL4iAKCdKQABcHTpEOwQaAAAoCIixWDhIXJyAKB8IwABZ3D1EPgQbwBuAAVhZgAA4DXYUt0Ao0giRWFlaW9wBxEJEQ0RDxESERQRAKBwKuMhaXIAoG8qAKBKImQAAKBLInMAJ2DyIW94ZaBIIvEADhFpAG4AZwA7gOUA5UCAAWN0eQAmESoRKxFyAADgNdi23CpgbQBwAGWgSCLxAPgBaQBsAGQAZQA7gOMA40BtAGwAO4DkAORAAAFjaUERRxFvAG4AaQBuAPQA6AFuAHQAAKARKgAITmFiY2RlZmlrbG5vcHJzdWQRaBGXEZ8RpxGrEdIR1hErEjASexKKEn0RThNbE3oTbwB0AACg7SoAAWNybBGJEWsAAAJjZXBzdBF4EX0RghHvIW5nAKBMInAjc2lsb24A9mNyImltZQAAoDUgaQBtAGWgPSJxAACgzSJ2AY0RkRFlAGUAAKC9ImUAZABnoAUjZQAAoAUjcgBrAHSgtSPiIXJrAKC2IwABb3mjEaYRbgDnAHcRMWTxIXVvAKAeIIACY21wcnQAtBG5Eb4RwRHFEeEhdXPloDUi5ABwInR5dgAAoLApcwDpAH0RbgBvAPUA6gCAAWFodwDLEcwRzhGyYwCgNiHlIWVuAKBsInIAAOA12B/dZwCAA2Nvc3R1dncA4xHyEQUSEhIhEiYSKRKAAWFpdQDpEesR7xHwAKMFcgBjAACg7yVwAACgwyKAAWRwdAD4EfwRABJvAHQAAKAAKuwhdXMAoAEqaSJtZXMAAKACKnECCxIAAAAADxLjIXVwAKAGKmEAcgAAoAUm8iNpYW5nbGUAAWR1GhIeEu8hd24AoL0lcAAAoLMlcCJsdXMAAKAEKmUA5QBCD+UAkg9hInJvdwAAoA0pgAFha28ANhJoEncSAAFjbjoSZRJrAIABbHN0AEESRxJNEm8jemVuZ2UAAKDrKXEAdQBhAHIA5QBcBPIjaWFuZ2xlgKG0JWRscgBYElwSYBLvIXduAKC+JeUhZnQAoMIlaSJnaHQAAKC4JWsAAKAjJLEBbRIAAHUSsgFxEgAAcxIAoJIlAKCRJTQAAKCTJWMAawAAoIglAAFlb38ShxJx4D0A5SD1IWl2AOBhIuUgdAAAoBAjAAJwdHd4kRKVEpsSnxJmAADgNdhT3XSgpSJvAG0AAKClIvQhaWUAoMgiAAZESFVWYmRobXB0dXayEsES0RLgEvcS+xIKExoTHxMjEygTNxMAAkxSbHK5ErsSvRK/EgCgVyUAoFQlAKBWJQCgUyUAolAlRFVkdckSyxLNEs8SAKBmJQCgaSUAoGQlAKBnJQACTFJsctgS2hLcEt4SAKBdJQCgWiUAoFwlAKBZJQCjUSVITFJobHLrEu0S7xLxEvMS9RIAoGwlAKBjJQCgYCUAoGslAKBiJQCgXyVvAHgAAKDJKQACTFJscgITBBMGEwgTAKBVJQCgUiUAoBAlAKAMJQCiACVEVWR1EhMUExYTGBMAoGUlAKBoJQCgLCUAoDQlaSJudXMAAKCfIuwhdXMAoJ4iaSJtZXMAAKCgIgACTFJsci8TMRMzEzUTAKBbJQCgWCUAoBglAKAUJQCjAiVITFJobHJCE0QTRhNIE0oTTBMAoGolAKBhJQCgXiUAoDwlAKAkJQCgHCUAAWV2UhNVE3YA5QD5AGIAYQByADuApgCmQAACY2Vpb2ITZhNqE24TcgAA4DXYt9xtAGkAAKBPIG0A5aA9IogRbAAAoVwAYmh0E3YTAKDFKfMhdWIAoMgnbAF+E4QTbABloCIgdAAAoCIgcAAAoU4iRWWJE4sTAKCuKvGgTyI8BeEMqRMAAN8TABQDFB8UAAAjFDQUAAAAAIUUAAAAAI0UAAAAANcU4xT3FPsUAACIFQAAlhWAAWNwcgCuE7ET1RP1IXRlB2GAoikiYWJjZHMAuxO/E8QTzhPSE24AZAAAoEQqciJjdXAAAKBJKgABYXXIE8sTcAAAoEsqcAAAoEcqbwB0AACgQCoA4CkiAP4AAWVv2RPcE3QAAKBBIO4ABAUAAmFlaXXlE+8T9RP4E/AB6hMAAO0TcwAAoE0qbwBuAA1hZABpAGwAO4DnAOdAcgBjAAlhcABzAHOgTCptAACgUCpvAHQAC2GAAWRtbgAIFA0UEhRpAGwAO4C4ALhAcCJ0eXYAAKCyKXQAAIGiADtlGBQZFKJAcgBkAG8A9ABiAXIAAOA12CDdgAFjZWkAKBQqFDIUeQBHZGMAawBtoBMn4SFyawCgEyfHY3IAAKPLJUVjZWZtcz8UQRRHFHcUfBSAFACgwykAocYCZWxGFEkUcQAAoFciZQBhAlAUAAAAAGAUciJyb3cAAAFsclYUWhTlIWZ0AKC6IWkiZ2h0AACguyGAAlJTYWNkAGgUaRRrFG8UcxSuYACgyCRzAHQAAKCbIukhcmMAoJoi4SFzaACgnSJuImludAAAoBAqaQBkAACg7yrjIWlyAKDCKfUhYnN1oGMmaQB0AACgYybsApMUmhS2FAAAwxRvAG4AZaA6APGgVCKrAG0CnxQAAAAAoxRhAHSgLABAYAChASJmbKcUqRTuABMNZQAAAW14rhSyFOUhbnQAoAEiZQDzANIB5wG6FAAAwBRkoEUibwB0AACgbSpuAPQAzAGAAWZyeQDIFMsUzhQA4DXYVN1vAOQA1wEAgakAO3MeAdMUcgAAoBchAAFhb9oU3hRyAHIAAKC1IXMAcwAAoBcnAAFjdeYU6hRyAADgNdi43AABYnDuFPIUZaDPKgCg0SploNAqAKDSKuQhb3QAoO8igANkZWxwcnZ3AAYVEBUbFSEVRBVlFYQV4SFycgABbHIMFQ4VAKA4KQCgNSlwAhYVAAAAABkVcgAAoN4iYwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWls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ZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg");
239
- var Q;
240
- (function(A) {
241
- A[A.VALUE_LENGTH = 49152] = "VALUE_LENGTH", A[A.FLAG13 = 8192] = "FLAG13", A[A.BRANCH_LENGTH = 8064] = "BRANCH_LENGTH", A[A.JUMP_TABLE = 127] = "JUMP_TABLE";
242
- })(Q || (Q = {}));
243
- var w;
244
- (function(A) {
245
- A[A.NUM = 35] = "NUM", A[A.SEMI = 59] = "SEMI", A[A.EQUALS = 61] = "EQUALS", A[A.ZERO = 48] = "ZERO", A[A.NINE = 57] = "NINE", A[A.LOWER_A = 97] = "LOWER_A", A[A.LOWER_F = 102] = "LOWER_F", A[A.LOWER_X = 120] = "LOWER_X", A[A.LOWER_Z = 122] = "LOWER_Z", A[A.UPPER_A = 65] = "UPPER_A", A[A.UPPER_F = 70] = "UPPER_F", A[A.UPPER_Z = 90] = "UPPER_Z";
246
- })(w || (w = {}));
247
- const xA = 32;
248
- function pA(A) {
249
- return A >= w.ZERO && A <= w.NINE;
250
- }
251
- function Me(A) {
252
- return A >= w.UPPER_A && A <= w.UPPER_F || A >= w.LOWER_A && A <= w.LOWER_F;
253
- }
254
- function ve(A) {
255
- return A >= w.UPPER_A && A <= w.UPPER_Z || A >= w.LOWER_A && A <= w.LOWER_Z || pA(A);
256
- }
257
- function Ne(A) {
258
- return A === w.EQUALS || ve(A);
259
- }
260
- var y;
261
- (function(A) {
262
- A[A.EntityStart = 0] = "EntityStart", A[A.NumericStart = 1] = "NumericStart", A[A.NumericDecimal = 2] = "NumericDecimal", A[A.NumericHex = 3] = "NumericHex", A[A.NamedEntity = 4] = "NamedEntity";
263
- })(y || (y = {}));
264
- var S;
265
- (function(A) {
266
- A[A.Legacy = 0] = "Legacy", A[A.Strict = 1] = "Strict", A[A.Attribute = 2] = "Attribute";
267
- })(S || (S = {}));
268
- class Ue {
269
- constructor(e, n, r) {
270
- E(this, "decodeTree");
271
- E(this, "emitCodePoint");
272
- E(this, "errors");
273
- /** The current state of the decoder. */
274
- E(this, "state", y.EntityStart);
275
- /** Characters that were consumed while parsing an entity. */
276
- E(this, "consumed", 1);
277
- /**
278
- * The result of the entity.
279
- *
280
- * Either the result index of a numeric entity, or the codepoint of a
281
- * numeric entity.
282
- */
283
- E(this, "result", 0);
284
- /** The current index in the decode tree. */
285
- E(this, "treeIndex", 0);
286
- /** The number of characters that were consumed in excess. */
287
- E(this, "excess", 1);
288
- /** The mode in which the decoder is operating. */
289
- E(this, "decodeMode", S.Strict);
290
- /** The number of characters that have been consumed in the current run. */
291
- E(this, "runConsumed", 0);
292
- this.decodeTree = e, this.emitCodePoint = n, this.errors = r;
293
- }
294
- /**
295
- * Resets the instance to make it reusable.
296
- * @param decodeMode Entity decoding mode to use.
297
- */
298
- startEntity(e) {
299
- this.decodeMode = e, this.state = y.EntityStart, this.result = 0, this.treeIndex = 0, this.excess = 1, this.consumed = 1, this.runConsumed = 0;
300
- }
301
- /**
302
- * Write an entity to the decoder. This can be called multiple times with partial entities.
303
- * If the entity is incomplete, the decoder will return -1.
304
- *
305
- * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
306
- * entity is incomplete, and resume when the next string is written.
307
- * @param input The string containing the entity (or a continuation of the entity).
308
- * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
309
- * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
310
- */
311
- write(e, n) {
312
- switch (this.state) {
313
- case y.EntityStart:
314
- return e.charCodeAt(n) === w.NUM ? (this.state = y.NumericStart, this.consumed += 1, this.stateNumericStart(e, n + 1)) : (this.state = y.NamedEntity, this.stateNamedEntity(e, n));
315
- case y.NumericStart:
316
- return this.stateNumericStart(e, n);
317
- case y.NumericDecimal:
318
- return this.stateNumericDecimal(e, n);
319
- case y.NumericHex:
320
- return this.stateNumericHex(e, n);
321
- case y.NamedEntity:
322
- return this.stateNamedEntity(e, n);
323
- }
324
- }
325
- /**
326
- * Switches between the numeric decimal and hexadecimal states.
327
- *
328
- * Equivalent to the `Numeric character reference state` in the HTML spec.
329
- * @param input The string containing the entity (or a continuation of the entity).
330
- * @param offset The current offset.
331
- * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
332
- */
333
- stateNumericStart(e, n) {
334
- return n >= e.length ? -1 : (e.charCodeAt(n) | xA) === w.LOWER_X ? (this.state = y.NumericHex, this.consumed += 1, this.stateNumericHex(e, n + 1)) : (this.state = y.NumericDecimal, this.stateNumericDecimal(e, n));
335
- }
336
- /**
337
- * Parses a hexadecimal numeric entity.
338
- *
339
- * Equivalent to the `Hexademical character reference state` in the HTML spec.
340
- * @param input The string containing the entity (or a continuation of the entity).
341
- * @param offset The current offset.
342
- * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
343
- */
344
- stateNumericHex(e, n) {
345
- for (; n < e.length; ) {
346
- const r = e.charCodeAt(n);
347
- if (pA(r) || Me(r)) {
348
- const t = r <= w.NINE ? r - w.ZERO : (r | xA) - w.LOWER_A + 10;
349
- this.result = this.result * 16 + t, this.consumed++, n++;
350
- } else
351
- return this.emitNumericEntity(r, 3);
352
- }
353
- return -1;
354
- }
355
- /**
356
- * Parses a decimal numeric entity.
357
- *
358
- * Equivalent to the `Decimal character reference state` in the HTML spec.
359
- * @param input The string containing the entity (or a continuation of the entity).
360
- * @param offset The current offset.
361
- * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
362
- */
363
- stateNumericDecimal(e, n) {
364
- for (; n < e.length; ) {
365
- const r = e.charCodeAt(n);
366
- if (pA(r))
367
- this.result = this.result * 10 + (r - w.ZERO), this.consumed++, n++;
368
- else
369
- return this.emitNumericEntity(r, 2);
370
- }
371
- return -1;
372
- }
373
- /**
374
- * Validate and emit a numeric entity.
375
- *
376
- * Implements the logic from the `Hexademical character reference start
377
- * state` and `Numeric character reference end state` in the HTML spec.
378
- * @param lastCp The last code point of the entity. Used to see if the
379
- * entity was terminated with a semicolon.
380
- * @param expectedLength The minimum number of characters that should be
381
- * consumed. Used to validate that at least one digit
382
- * was consumed.
383
- * @returns The number of characters that were consumed.
384
- */
385
- emitNumericEntity(e, n) {
386
- var r;
387
- if (this.consumed <= n)
388
- return (r = this.errors) == null || r.absenceOfDigitsInNumericCharacterReference(this.consumed), 0;
389
- if (e === w.SEMI)
390
- this.consumed += 1;
391
- else if (this.decodeMode === S.Strict)
392
- return 0;
393
- return this.emitCodePoint(Re(this.result), this.consumed), this.errors && (e !== w.SEMI && this.errors.missingSemicolonAfterCharacterReference(), this.errors.validateNumericCharacterReference(this.result)), this.consumed;
394
- }
395
- /**
396
- * Parses a named entity.
397
- *
398
- * Equivalent to the `Named character reference state` in the HTML spec.
399
- * @param input The string containing the entity (or a continuation of the entity).
400
- * @param offset The current offset.
401
- * @returns The number of characters that were consumed, or -1 if the entity is incomplete.
402
- */
403
- stateNamedEntity(e, n) {
404
- const { decodeTree: r } = this;
405
- let t = r[this.treeIndex], i = (t & Q.VALUE_LENGTH) >> 14;
406
- for (; n < e.length; ) {
407
- if (i === 0 && t & Q.FLAG13) {
408
- const s = (t & Q.BRANCH_LENGTH) >> 7;
409
- if (this.runConsumed === 0) {
410
- const c = t & Q.JUMP_TABLE;
411
- if (e.charCodeAt(n) !== c)
412
- return this.result === 0 ? 0 : this.emitNotTerminatedNamedEntity();
413
- n++, this.excess++, this.runConsumed++;
414
- }
415
- for (; this.runConsumed < s; ) {
416
- if (n >= e.length)
417
- return -1;
418
- const c = this.runConsumed - 1, l = r[this.treeIndex + 1 + (c >> 1)], a = c % 2 === 0 ? l & 255 : l >> 8 & 255;
419
- if (e.charCodeAt(n) !== a)
420
- return this.runConsumed = 0, this.result === 0 ? 0 : this.emitNotTerminatedNamedEntity();
421
- n++, this.excess++, this.runConsumed++;
422
- }
423
- this.runConsumed = 0, this.treeIndex += 1 + (s >> 1), t = r[this.treeIndex], i = (t & Q.VALUE_LENGTH) >> 14;
424
- }
425
- if (n >= e.length)
426
- break;
427
- const o = e.charCodeAt(n);
428
- if (o === w.SEMI && i !== 0 && t & Q.FLAG13)
429
- return this.emitNamedEntityData(this.treeIndex, i, this.consumed + this.excess);
430
- if (this.treeIndex = Xe(r, t, this.treeIndex + Math.max(1, i), o), this.treeIndex < 0)
431
- return this.result === 0 || // If we are parsing an attribute
432
- this.decodeMode === S.Attribute && // We shouldn't have consumed any characters after the entity,
433
- (i === 0 || // And there should be no invalid characters.
434
- Ne(o)) ? 0 : this.emitNotTerminatedNamedEntity();
435
- if (t = r[this.treeIndex], i = (t & Q.VALUE_LENGTH) >> 14, i !== 0) {
436
- if (o === w.SEMI)
437
- return this.emitNamedEntityData(this.treeIndex, i, this.consumed + this.excess);
438
- this.decodeMode !== S.Strict && !(t & Q.FLAG13) && (this.result = this.treeIndex, this.consumed += this.excess, this.excess = 0);
439
- }
440
- n++, this.excess++;
441
- }
442
- return -1;
443
- }
444
- /**
445
- * Emit a named entity that was not terminated with a semicolon.
446
- * @returns The number of characters consumed.
447
- */
448
- emitNotTerminatedNamedEntity() {
449
- var t;
450
- const { result: e, decodeTree: n } = this, r = (n[e] & Q.VALUE_LENGTH) >> 14;
451
- return this.emitNamedEntityData(e, r, this.consumed), (t = this.errors) == null || t.missingSemicolonAfterCharacterReference(), this.consumed;
452
- }
453
- /**
454
- * Emit a named entity.
455
- * @param result The index of the entity in the decode tree.
456
- * @param valueLength The number of bytes in the entity.
457
- * @param consumed The number of characters consumed.
458
- * @returns The number of characters consumed.
459
- */
460
- emitNamedEntityData(e, n, r) {
461
- const { decodeTree: t } = this;
462
- return this.emitCodePoint(n === 1 ? t[e] & ~(Q.VALUE_LENGTH | Q.FLAG13) : t[e + 1], r), n === 3 && this.emitCodePoint(t[e + 2], r), r;
463
- }
464
- /**
465
- * Signal to the parser that the end of the input was reached.
466
- *
467
- * Remaining data will be emitted and relevant errors will be produced.
468
- * @returns The number of characters consumed.
469
- */
470
- end() {
471
- var e;
472
- switch (this.state) {
473
- case y.NamedEntity:
474
- return this.result !== 0 && (this.decodeMode !== S.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0;
475
- case y.NumericDecimal:
476
- return this.emitNumericEntity(0, 2);
477
- case y.NumericHex:
478
- return this.emitNumericEntity(0, 3);
479
- case y.NumericStart:
480
- return (e = this.errors) == null || e.absenceOfDigitsInNumericCharacterReference(this.consumed), 0;
481
- case y.EntityStart:
482
- return 0;
483
- }
484
- }
485
- }
486
- function Oe(A) {
487
- let e = "";
488
- const n = new Ue(A, (r) => e += String.fromCodePoint(r));
489
- return function(t, i) {
490
- let o = 0, s = 0;
491
- for (; (s = t.indexOf("&", s)) >= 0; ) {
492
- e += t.slice(o, s), n.startEntity(i);
493
- const l = n.write(
494
- t,
495
- // Skip the "&"
496
- s + 1
497
- );
498
- if (l < 0) {
499
- o = s + n.end();
500
- break;
501
- }
502
- o = s + l, s = l === 0 ? o + 1 : o;
503
- }
504
- const c = e + t.slice(o);
505
- return e = "", c;
506
- };
507
- }
508
- function Xe(A, e, n, r) {
509
- const t = (e & Q.BRANCH_LENGTH) >> 7, i = e & Q.JUMP_TABLE;
510
- if (t === 0)
511
- return i !== 0 && r === i ? n : -1;
512
- if (i) {
513
- const l = r - i;
514
- return l < 0 || l >= t ? -1 : A[n + l] - 1;
515
- }
516
- const o = t + 1 >> 1;
517
- let s = 0, c = t - 1;
518
- for (; s <= c; ) {
519
- const l = s + c >>> 1, a = l >> 1, f = A[n + a] >> (l & 1) * 8 & 255;
520
- if (f < r)
521
- s = l + 1;
522
- else if (f > r)
523
- c = l - 1;
524
- else
525
- return A[n + o + l];
526
- }
527
- return -1;
528
- }
529
- const Le = /* @__PURE__ */ Oe(He);
530
- function VA(A) {
531
- return Le(A, S.Strict);
532
- }
533
- var ze = class {
534
- constructor(A = {}) {
535
- E(this, "src_Any", XA.source);
536
- E(this, "src_Cc", LA.source);
537
- E(this, "src_Z", jA.source);
538
- E(this, "src_P", mA.source);
539
- E(this, "src_ZPCc", [
540
- this.src_Z,
541
- this.src_P,
542
- this.src_Cc
543
- ].join("|"));
544
- E(this, "src_ZCc", [this.src_Z, this.src_Cc].join("|"));
545
- E(this, "cache", {});
546
- E(this, "opts", {
547
- maxLength: 1e4,
548
- urlAuth: !1,
549
- schema_names: []
550
- });
551
- this.opts = {
552
- ...this.opts,
553
- ...A
554
- };
555
- }
556
- set(A = {}) {
557
- return this.opts = {
558
- ...this.opts,
559
- ...A
560
- }, this.cache = {}, this;
561
- }
562
- escapeRE(A) {
563
- return A.replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&");
564
- }
565
- nestedPairRE(A, e, n = 4) {
566
- const r = this.escapeRE(A), t = this.escapeRE(e), i = `(?:(?!${this.src_ZCc}|${r}|${t}).)`;
567
- let o = `${r}${i}{0,1000}${t}`;
568
- for (let s = 2; s <= n; s++) o = `${r}(?:${i}|${o}){0,1000}${t}`;
569
- return o;
570
- }
571
- get_text_separators() {
572
- var A;
573
- return (A = this.cache).text_separators ?? (A.text_separators = /[><\uff5c]/);
574
- }
575
- get_pseudo_letter() {
576
- var A;
577
- return (A = this.cache).src_pseudo_letter ?? (A.src_pseudo_letter = new RegExp(`(?:(?!${this.get_text_separators().source}|${this.src_ZPCc})${this.src_Any})`));
578
- }
579
- get_ipv4_addr() {
580
- var A;
581
- return (A = this.cache).src_ip4 ?? (A.src_ip4 = /* @__PURE__ */ new RegExp("(?:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])[.]){3}(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])"));
582
- }
583
- get_ipv6_addr() {
584
- var n;
585
- const A = "[0-9A-Fa-f]{1,4}", e = `(?:(?:${A}:${A})|${this.get_ipv4_addr().source})`;
586
- return (n = this.cache).src_ip6_addr ?? (n.src_ip6_addr = new RegExp(`(?:(?:${A}:){6}${e}|::(?:${A}:){5}${e}|(?:${A})?::(?:${A}:){4}${e}|(?:(?:${A}:){0,1}${A})?::(?:${A}:){3}${e}|(?:(?:${A}:){0,2}${A})?::(?:${A}:){2}${e}|(?:(?:${A}:){0,3}${A})?::${A}:${e}|(?:(?:${A}:){0,4}${A})?::${e}|(?:(?:${A}:){0,5}${A})?::${A}|(?:(?:${A}:){0,6}${A})?::)`));
587
- }
588
- get_ipv6_url_host() {
589
- var A;
590
- return (A = this.cache).src_ip6_host ?? (A.src_ip6_host = new RegExp(`\\[${this.get_ipv6_addr().source}\\]`));
591
- }
592
- get_ipv6_mail_host() {
593
- var A;
594
- return (A = this.cache).src_ipv6_mail_host ?? (A.src_ipv6_mail_host = new RegExp(`\\[IPv6:${this.get_ipv6_addr().source}\\]`));
595
- }
596
- get_auth() {
597
- var A;
598
- return (A = this.cache).src_auth ?? (A.src_auth = new RegExp(`(?:(?:(?!${this.src_ZCc}|[@/\\[\\]()]).){1,50}@)?`));
599
- }
600
- get_port() {
601
- var A;
602
- return (A = this.cache).src_port ?? (A.src_port = /* @__PURE__ */ new RegExp("(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?"));
603
- }
604
- get_host_terminator() {
605
- var A;
606
- return (A = this.cache).src_host_terminator ?? (A.src_host_terminator = new RegExp(`(?=$|${this.get_text_separators().source}|${this.src_ZPCc})(?!${this.opts["---"] ? "-(?!--)|" : "-|"}_|:\\d|\\.-|\\.(?!$|${this.src_ZPCc}))`));
607
- }
608
- get_path_terminator() {
609
- var A;
610
- return (A = this.cache).src_path_terminator ?? (A.src_path_terminator = new RegExp(`${this.src_ZPCc}|${this.get_text_separators().source}`));
611
- }
612
- get_path() {
613
- var A;
614
- return (A = this.cache).src_path ?? (A.src_path = new RegExp(`(?:[/?#](?:${this.nestedPairRE("[", "]")}|${this.nestedPairRE("(", ")")}|${this.nestedPairRE("{", "}")}|\\"(?:(?!${this.src_ZCc}|["]).){1,100}\\"|\\'(?:(?!${this.src_ZCc}|[']).){1,100}\\'|\\'(?=${this.get_pseudo_letter().source}|[-])|\\.{2,20}[:]?[a-zA-Z0-9%/&]|\\.(?!${this.src_ZCc}|[.]|$)|` + (this.opts["---"] ? "\\-(?!--(?:[^-]|$))(?:-{0,19})|" : "\\-{1,20}|") + `,(?!${this.src_ZCc}|$)|;(?!${this.src_ZCc}|$)|\\!{1,20}(?!${this.src_ZCc}|[!]|$)|\\?(?!${this.src_ZCc}|[?]|$)|` + this.get_path_extra().source + `[\\\\/:%@#&=_~*]|(?!${this.get_path_terminator().source}).){1,${this.opts.maxLength}}|\\/)?`));
615
- }
616
- get_mail_name() {
617
- var A;
618
- return (A = this.cache).src_mail_name ?? (A.src_mail_name = /* @__PURE__ */ new RegExp("[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9](?:[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9]|[.](?=[-!#$%&'*+/=?^_`{|}~a-zA-Z0-9])){0,63}"));
619
- }
620
- get_xn() {
621
- var A;
622
- return (A = this.cache).src_xn ?? (A.src_xn = /* @__PURE__ */ new RegExp("xn--[a-z0-9\\-]{1,59}"));
623
- }
624
- get_tld() {
625
- if (this.cache.tld) return this.cache.tld;
626
- const A = [...new Set(this.opts.tlds || [])].sort().reverse().join("|");
627
- return this.cache.tld = new RegExp(`${A || "$#none#$"}|${this.get_xn().source}`), this.cache.tld;
628
- }
629
- get_domain_root() {
630
- var A;
631
- return (A = this.cache).src_domain_root ?? (A.src_domain_root = new RegExp("(?:" + this.get_xn().source + `|${this.get_pseudo_letter().source}{1,63})`));
632
- }
633
- get_domain() {
634
- var A;
635
- return (A = this.cache).src_domain ?? (A.src_domain = new RegExp("(?:" + this.get_xn().source + `|(?:${this.get_pseudo_letter().source})|(?:${this.get_pseudo_letter().source}(?:-|${this.get_pseudo_letter().source}){0,61}${this.get_pseudo_letter().source}))`));
636
- }
637
- get_url_host_port() {
638
- var A;
639
- return (A = this.cache).url_host_port ?? (A.url_host_port = new RegExp("(?:" + this.get_ipv6_url_host().source + `|(?:(?:(?:${this.get_domain().source})\\.){0,10}${this.get_domain().source}))` + this.get_port().source + this.get_host_terminator().source));
640
- }
641
- get_fuzzy_url_host_port() {
642
- var A;
643
- return (A = this.cache).fuzzy_url_host_port ?? (A.fuzzy_url_host_port = new RegExp("(?:" + (this.opts.fuzzyIP ? this.get_ipv4_addr().source + "|" : "") + `(?:(?:(?:${this.get_domain().source})\\.){1,10}(?:${this.get_tld().source})))` + this.get_host_terminator().source));
644
- }
645
- get_mail_host() {
646
- var A;
647
- return (A = this.cache).src_mail_host ?? (A.src_mail_host = new RegExp("(?:" + this.get_ipv6_mail_host().source + `|(?:(?:(?:${this.get_domain().source})\\.){0,4}${this.get_domain().source}))` + this.get_host_terminator().source));
648
- }
649
- get_fuzzy_mail_host() {
650
- var A;
651
- return (A = this.cache).src_fuzzy_mail_host ?? (A.src_fuzzy_mail_host = new RegExp("(?:" + this.get_ipv6_mail_host().source + `|(?:(?:(?:${this.get_domain().source})[.]){1,4}${this.get_domain_root().source}))` + this.get_host_terminator().source));
652
- }
653
- get_path_extra() {
654
- var A;
655
- return (A = this.cache).src_path_extra ?? (A.src_path_extra = /* @__PURE__ */ new RegExp(""));
656
- }
657
- get_fuzzy_mail_host_search() {
658
- var A;
659
- return (A = this.cache).mail_fuzzy_host_search ?? (A.mail_fuzzy_host_search = new RegExp(`@${this.get_fuzzy_mail_host().source}`, "ig"));
660
- }
661
- get_fuzzy_link_search() {
662
- var A;
663
- return (A = this.cache).link_fuzzy_search ?? (A.link_fuzzy_search = new RegExp(`(^|(?![.:/\\-_@])(?:[$+<=>^\`||]|${this.src_ZPCc}))(?:(?![$+<=>^\`||])${this.get_fuzzy_url_host_port().source}${this.get_path().source})`, "ig"));
664
- }
665
- get_http_validator() {
666
- var A;
667
- return (A = this.cache).http_validator ?? (A.http_validator = new RegExp("\\/\\/" + (this.opts.urlAuth ? this.get_auth().source : "") + this.get_url_host_port().source + this.get_path().source, "iy"));
668
- }
669
- get_relative_proto_validator() {
670
- var A;
671
- return (A = this.cache).relative_proto_validator ?? (A.relative_proto_validator = new RegExp((this.opts.urlAuth ? this.get_auth().source : "") + `(?:localhost|${this.get_ipv6_url_host().source}|(?:(?:${this.get_domain().source})[.]){1,10}${this.get_domain_root().source})` + this.get_port().source + this.get_host_terminator().source + this.get_path().source, "iy"));
672
- }
673
- get_mail_name_validator() {
674
- var A;
675
- return (A = this.cache).mail_name_validator ?? (A.mail_name_validator = new RegExp(`(?:^|${this.get_text_separators().source}|"|\\(|${this.src_ZCc})(${this.get_mail_name().source})$`));
676
- }
677
- get_mailto_validator() {
678
- var A;
679
- return (A = this.cache).mailto_validator ?? (A.mailto_validator = new RegExp(`${this.get_mail_name().source}@${this.get_mail_host().source}`, "iy"));
680
- }
681
- get_schema_names() {
682
- var A;
683
- return (A = this.cache).schema_names ?? (A.schema_names = new RegExp((this.opts.schema_names || []).map((e) => this.escapeRE(e)).join("|")));
684
- }
685
- get_schema_search() {
686
- var A;
687
- return (A = this.cache).schema_search ?? (A.schema_search = new RegExp(`(^|(?!_)(?:[><|]|${this.src_ZPCc}))(${this.get_schema_names().source})`, "ig"));
688
- }
689
- get_schema_at_start() {
690
- var A;
691
- return (A = this.cache).schema_at_start ?? (A.schema_at_start = new RegExp(`^${this.get_schema_search().source}`, "i"));
692
- }
693
- }, cA = {
694
- validate: (A, e, n) => {
695
- const r = n.re.get_http_validator();
696
- r.lastIndex = e;
697
- const t = r.exec(A);
698
- return t ? t[0].length : 0;
699
- },
700
- normalize: (A, e) => e.normalize(A)
701
- }, je = {
702
- "http:": cA,
703
- "https:": cA,
704
- "ftp:": cA,
705
- "//": {
706
- validate: function(A, e, n) {
707
- const r = n.re.get_relative_proto_validator();
708
- r.lastIndex = e;
709
- const t = r.exec(A);
710
- return t ? e >= 3 && A[e - 3] === ":" || e >= 3 && A[e - 3] === "/" ? 0 : t[0].length : 0;
711
- },
712
- normalize: (A, e) => e.normalize(A)
713
- },
714
- "mailto:": {
715
- validate: function(A, e, n) {
716
- const r = n.re.get_mailto_validator();
717
- r.lastIndex = e;
718
- const t = r.exec(A);
719
- return t ? t[0].length : 0;
720
- },
721
- normalize: (A, e) => e.normalize(A)
722
- }
723
- }, Ve = "a:cdefgilmnoqrstuwxz|b:abdefghijmnorstvwyz|c:acdfghiklmnoruvwxyz|d:ejkmoz|e:cegrstu|f:ijkmor|g:abdefghilmnpqrstuwy|h:kmnrtu|i:delmnoqrst|j:emop|k:eghimnprwyz|l:abcikrstuvy|m:acdeghklmnopqrstuvwxyz|n:acefgilopruz|o:m|p:aefghklmnrstwy|q:a|r:eosuw|s:abcdeghijklmnortuvxyz|t:cdfghjklmnortvwz|u:agksyz|v:aceginu|w:fs|y:et|z:amw", Pe = "biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф";
724
- function Te() {
725
- const A = Pe.split("|");
726
- return Ve.split("|").forEach((e) => {
727
- const n = e.indexOf(":"), r = e.slice(0, n);
728
- for (const t of e.slice(n + 1)) A.push(r + t);
729
- }), A;
730
- }
731
- var qe = {
732
- fuzzyLink: !1,
733
- fuzzyEmail: !0,
734
- fuzzyIP: !1,
735
- "---": !1,
736
- tlds: Te(),
737
- urlAuth: !1,
738
- maxLength: 1e4
739
- }, KA = class {
740
- constructor(A, e, n, r) {
741
- /** Prefix (protocol) for matched string. Empty for fuzzy links. */
742
- E(this, "schema");
743
- /** First position of matched string. */
744
- E(this, "index");
745
- /** Next position after matched string. */
746
- E(this, "lastIndex");
747
- /** Matched string. */
748
- E(this, "raw");
749
- /** Normalized text of matched string. */
750
- E(this, "text");
751
- /** Normalized URL of matched string. */
752
- E(this, "url");
753
- const t = A.slice(n, r);
754
- this.schema = e.toLowerCase(), this.index = n, this.lastIndex = r, this.raw = t, this.text = t, this.url = t;
755
- }
756
- }, $e = class {
757
- /**
758
- * Creates new linkifier instance.
759
- *
760
- * By default understands:
761
- *
762
- * - `http(s)://...` , `ftp://...`, `mailto:...` & `//...` links
763
- * - "fuzzy" emails (foo@bar.com).
764
- *
765
- * See {@link LinkifyConstructorOptions} for available options.
766
- *
767
- * @param options Recognition options.
768
- *
769
- * @example
770
- * ```javascript
771
- * import { LinkifyIt } from 'linkify-it'
772
- *
773
- * const linkify = new LinkifyIt({ fuzzyLink: true })
774
- *
775
- * linkify
776
- * .tlds(require('tlds')) // Reload with full TLD list
777
- * .tlds('onion', true) // Add unofficial `.onion` domain
778
- * .add('ftp:', null) // Disable `ftp:` protocol
779
- * .set({ fuzzyIP: true }) // Enable IPs in fuzzy links
780
- *
781
- * console.log(linkify.test('Site github.com!')) // true
782
- * console.log(linkify.match('Site github.com!'))
783
- * ```
784
- */
785
- constructor(A = {}) {
786
- E(this, "__opts__");
787
- E(this, "__schemas__");
788
- E(this, "re");
789
- const { rebuilder: e, ...n } = A;
790
- this.__opts__ = {
791
- ...qe,
792
- ...n
793
- }, this.__schemas__ = { ...je }, this.re = e || new ze(), this.re.set({
794
- ...this.__opts__,
795
- schema_names: Object.keys(this.__schemas__)
796
- });
797
- }
798
- /**
799
- * Add new rule definition.
800
- *
801
- * `schema` is a link prefix (usually, protocol name with `:` at the end,
802
- * `skype:` for example). `linkify-it` makes sure that prefix is not
803
- * preceded with alphanumeric char and symbols. Only whitespaces and
804
- * punctuation allowed.
805
- *
806
- * `definition` is a rule to check tail after link prefix. To disable an
807
- * existing rule, pass `null`.
808
- *
809
- * @param schema Rule name (fixed pattern prefix).
810
- * @param definition Schema definition, or `null` to disable the rule.
811
- *
812
- * See [twitter mentions example](https://github.com/markdown-it/linkify-it/blob/master/examples/twitter.mjs).
813
- */
814
- add(A, e = null) {
815
- if (!e) delete this.__schemas__[A];
816
- else {
817
- const n = {
818
- normalize: (r, t) => t.normalize(r),
819
- ...e
820
- };
821
- this.__schemas__[A] = n;
822
- }
823
- return this.re.set({
824
- ...this.__opts__,
825
- schema_names: Object.keys(this.__schemas__)
826
- }), this;
827
- }
828
- /**
829
- * Set recognition options for links without schema.
830
- *
831
- * @param options Recognition options.
832
- */
833
- set(A = {}) {
834
- return this.__opts__ = {
835
- ...this.__opts__,
836
- ...A
837
- }, this.re.set({
838
- ...this.__opts__,
839
- schema_names: Object.keys(this.__schemas__)
840
- }), this;
841
- }
842
- /**
843
- * Searches linkifiable pattern and returns `true` on success or `false` on fail.
844
- *
845
- * @param text Text to scan.
846
- */
847
- test(A) {
848
- if (!A.length) return !1;
849
- let e, n;
850
- for (n = this.re.get_schema_search(), n.lastIndex = 0; (e = n.exec(A)) !== null; ) if (this.testSchemaAt(A, e[2], n.lastIndex)) return !0;
851
- if (this.__opts__.fuzzyLink && this.__schemas__["http:"] && (n = this.re.get_fuzzy_link_search(), n.lastIndex = 0, n.exec(A) !== null))
852
- return !0;
853
- if (this.__opts__.fuzzyEmail && this.__schemas__["mailto:"] && A.indexOf("@") >= 0) {
854
- const r = this.re.get_fuzzy_mail_host_search(), t = this.re.get_mail_name_validator();
855
- for (r.lastIndex = 0; (e = r.exec(A)) !== null; ) {
856
- const i = A.slice(Math.max(0, e.index - 65), e.index);
857
- if (t.test(i)) return !0;
858
- }
859
- }
860
- return !1;
861
- }
862
- /**
863
- * Similar to {@link LinkifyIt.test} but checks only specific protocol tail exactly
864
- * at given position. Returns length of found pattern (0 on fail).
865
- *
866
- * @param text Text to scan.
867
- * @param schema Rule (schema) name.
868
- * @param pos Text offset to check from.
869
- */
870
- testSchemaAt(A, e, n) {
871
- return this.__schemas__[e.toLowerCase()] ? this.__schemas__[e.toLowerCase()].validate(A.slice(0, n + this.__opts__.maxLength), n, this) : 0;
872
- }
873
- /**
874
- * Returns array of found link descriptions or `null` on fail. We strongly
875
- * recommend to use {@link LinkifyIt.test} first, for best speed.
876
- *
877
- * @param text Text to scan.
878
- */
879
- match(A) {
880
- const e = [], n = this.re.get_schema_search();
881
- let r, t, i, o, s, c, l = !1, a = !1, h = !1, f = 0;
882
- if (!A.length) return null;
883
- for (n.lastIndex = 0, this.__opts__.fuzzyLink && this.__schemas__["http:"] && (r = this.re.get_fuzzy_link_search(), r.lastIndex = 0), this.__opts__.fuzzyEmail && this.__schemas__["mailto:"] && (t = this.re.get_fuzzy_mail_host_search(), t.lastIndex = 0, i = this.re.get_mail_name_validator()); ; ) {
884
- const g = Math.max(f - 1, 0);
885
- if (t && i && !h && (!s || s.index < f))
886
- for (t.lastIndex < g && (t.lastIndex = g); ; ) {
887
- const D = t.exec(A);
888
- if (!D) {
889
- h = !0, s = void 0;
890
- break;
891
- }
892
- const F = i.exec(A.slice(Math.max(0, D.index - 65), D.index));
893
- if (F) {
894
- if (s = {
895
- schema: "mailto:",
896
- index: D.index - F[1].length,
897
- lastIndex: D.index + D[0].length
898
- }, s.index >= f) break;
899
- t.lastIndex < g && (t.lastIndex = g);
900
- }
901
- }
902
- if (r && !a && (!o || o.index < f))
903
- for (r.lastIndex < g && (r.lastIndex = g); ; ) {
904
- const D = r.exec(A);
905
- if (!D) {
906
- a = !0, o = void 0;
907
- break;
908
- }
909
- if (o = {
910
- schema: "",
911
- index: D.index + D[1].length,
912
- lastIndex: D.index + D[0].length
913
- }, o.index >= f) break;
914
- r.lastIndex < g && (r.lastIndex = g);
915
- }
916
- let u = s;
917
- (!u || o && (o.index < u.index || o.index === u.index && o.lastIndex > u.lastIndex)) && (u = o);
918
- let B;
919
- if (!l) for (; ; ) {
920
- if (!c) {
921
- n.lastIndex < g && (n.lastIndex = g);
922
- const d = n.exec(A);
923
- if (!d) {
924
- l = !0;
925
- break;
926
- }
927
- c = {
928
- schema: d[2],
929
- index: d.index + d[1].length,
930
- lastIndex: d.index + d[0].length
931
- };
932
- }
933
- if (c.index < f) {
934
- c = void 0;
935
- continue;
936
- }
937
- if (u && c.index > u.index) break;
938
- const D = c;
939
- c = void 0;
940
- const F = this.testSchemaAt(A, D.schema, D.lastIndex);
941
- if (F) {
942
- B = {
943
- schema: D.schema,
944
- index: D.index,
945
- lastIndex: D.lastIndex + F
946
- };
947
- break;
948
- }
949
- }
950
- let m = B;
951
- if ((!m || s && (s.index < m.index || s.index === m.index && s.lastIndex > m.lastIndex)) && (m = s), (!m || o && (o.index < m.index || o.index === m.index && o.lastIndex > m.lastIndex)) && (m = o), !m) break;
952
- m === s ? s = void 0 : m === o && (o = void 0);
953
- const I = new KA(A, m.schema, m.index, m.lastIndex);
954
- I.schema ? this.__schemas__[I.schema].normalize(I, this) : this.normalize(I), e.push(I), f = m.lastIndex;
955
- }
956
- return e.length ? e : null;
957
- }
958
- /**
959
- * Returns fully-formed (not fuzzy) link if it starts at the beginning
960
- * of the string, and null otherwise.
961
- *
962
- * @param text Text to scan.
963
- */
964
- matchAtStart(A) {
965
- if (!A.length) return null;
966
- const e = this.re.get_schema_at_start().exec(A);
967
- if (!e) return null;
968
- const n = this.testSchemaAt(A, e[2], e[0].length);
969
- if (!n) return null;
970
- const r = new KA(A, e[2], e.index + e[1].length, e.index + e[0].length + n);
971
- return this.__schemas__[r.schema].normalize(r, this), r;
972
- }
973
- /**
974
- * Load (or merge) new TLDs list. Those are used for fuzzy links (without
975
- * prefix) to avoid false positives. By default this algorithm is used:
976
- *
977
- * - hostname with any 2-letter root zones are ok.
978
- * - biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф
979
- * are ok.
980
- * - encoded (`xn--...`) root zones are ok.
981
- *
982
- * If list is replaced, then exact match for 2-chars root zones will be checked.
983
- *
984
- * @param list List of TLDs.
985
- * @param keepOld Merge with current list if `true` (`false` by default).
986
- */
987
- tlds(A, e = !1) {
988
- return A = Array.isArray(A) ? A : [A], e ? this.__opts__.tlds = this.__opts__.tlds.concat(A) : this.__opts__.tlds = A, this.re.set({
989
- ...this.__opts__,
990
- schema_names: Object.keys(this.__schemas__)
991
- }), this;
992
- }
993
- /**
994
- * Default normalizer (if schema does not define its own).
995
- *
996
- * @param match Match to normalize.
997
- */
998
- normalize(A) {
999
- A.schema || (A.url = `http://${A.url}`), A.schema === "mailto:" && !/^mailto:/i.test(A.url) && (A.url = `mailto:${A.url}`);
1000
- }
1001
- };
1002
- const U = 2147483647, K = 36, DA = 1, z = 26, An = 38, en = 700, PA = 72, TA = 128, qA = "-", nn = /^xn--/, tn = /[^\0-\x7F]/, rn = /[\x2E\u3002\uFF0E\uFF61]/g, on = {
1003
- overflow: "Overflow: input needs wider integers to process",
1004
- "not-basic": "Illegal input >= 0x80 (not a basic code point)",
1005
- "invalid-input": "Invalid input"
1006
- }, lA = K - DA, G = Math.floor, uA = String.fromCharCode;
1007
- function R(A) {
1008
- throw new RangeError(on[A]);
1009
- }
1010
- function sn(A, e) {
1011
- const n = [];
1012
- let r = A.length;
1013
- for (; r--; )
1014
- n[r] = e(A[r]);
1015
- return n;
1016
- }
1017
- function $A(A, e) {
1018
- const n = A.split("@");
1019
- let r = "";
1020
- n.length > 1 && (r = n[0] + "@", A = n[1]), A = A.replace(rn, ".");
1021
- const t = A.split("."), i = sn(t, e).join(".");
1022
- return r + i;
1023
- }
1024
- function Ae(A) {
1025
- const e = [];
1026
- let n = 0;
1027
- const r = A.length;
1028
- for (; n < r; ) {
1029
- const t = A.charCodeAt(n++);
1030
- if (t >= 55296 && t <= 56319 && n < r) {
1031
- const i = A.charCodeAt(n++);
1032
- (i & 64512) == 56320 ? e.push(((t & 1023) << 10) + (i & 1023) + 65536) : (e.push(t), n--);
1033
- } else
1034
- e.push(t);
1035
- }
1036
- return e;
1037
- }
1038
- const cn = (A) => String.fromCodePoint(...A), ln = function(A) {
1039
- return A >= 48 && A < 58 ? 26 + (A - 48) : A >= 65 && A < 91 ? A - 65 : A >= 97 && A < 123 ? A - 97 : K;
1040
- }, GA = function(A, e) {
1041
- return A + 22 + 75 * (A < 26) - ((e != 0) << 5);
1042
- }, ee = function(A, e, n) {
1043
- let r = 0;
1044
- for (A = n ? G(A / en) : A >> 1, A += G(A / e); A > lA * z >> 1; r += K)
1045
- A = G(A / lA);
1046
- return G(r + (lA + 1) * A / (A + An));
1047
- }, ne = function(A) {
1048
- const e = [], n = A.length;
1049
- let r = 0, t = TA, i = PA, o = A.lastIndexOf(qA);
1050
- o < 0 && (o = 0);
1051
- for (let s = 0; s < o; ++s)
1052
- A.charCodeAt(s) >= 128 && R("not-basic"), e.push(A.charCodeAt(s));
1053
- for (let s = o > 0 ? o + 1 : 0; s < n; ) {
1054
- const c = r;
1055
- for (let a = 1, h = K; ; h += K) {
1056
- s >= n && R("invalid-input");
1057
- const f = ln(A.charCodeAt(s++));
1058
- f >= K && R("invalid-input"), f > G((U - r) / a) && R("overflow"), r += f * a;
1059
- const g = h <= i ? DA : h >= i + z ? z : h - i;
1060
- if (f < g)
1061
- break;
1062
- const u = K - g;
1063
- a > G(U / u) && R("overflow"), a *= u;
1064
- }
1065
- const l = e.length + 1;
1066
- i = ee(r - c, l, c == 0), G(r / l) > U - t && R("overflow"), t += G(r / l), r %= l, e.splice(r++, 0, t);
1067
- }
1068
- return String.fromCodePoint(...e);
1069
- }, te = function(A) {
1070
- const e = [];
1071
- A = Ae(A);
1072
- const n = A.length;
1073
- let r = TA, t = 0, i = PA;
1074
- for (const c of A)
1075
- c < 128 && e.push(uA(c));
1076
- const o = e.length;
1077
- let s = o;
1078
- for (o && e.push(qA); s < n; ) {
1079
- let c = U;
1080
- for (const a of A)
1081
- a >= r && a < c && (c = a);
1082
- const l = s + 1;
1083
- c - r > G((U - t) / l) && R("overflow"), t += (c - r) * l, r = c;
1084
- for (const a of A)
1085
- if (a < r && ++t > U && R("overflow"), a === r) {
1086
- let h = t;
1087
- for (let f = K; ; f += K) {
1088
- const g = f <= i ? DA : f >= i + z ? z : f - i;
1089
- if (h < g)
1090
- break;
1091
- const u = h - g, B = K - g;
1092
- e.push(
1093
- uA(GA(g + u % B, 0))
1094
- ), h = G(u / B);
1095
- }
1096
- e.push(uA(GA(h, 0))), i = ee(t, l, s === o), t = 0, ++s;
1097
- }
1098
- ++t, ++r;
1099
- }
1100
- return e.join("");
1101
- }, un = function(A) {
1102
- return $A(A, function(e) {
1103
- return nn.test(e) ? ne(e.slice(4).toLowerCase()) : e;
1104
- });
1105
- }, hn = function(A) {
1106
- return $A(A, function(e) {
1107
- return tn.test(e) ? "xn--" + te(e) : e;
1108
- });
1109
- }, WA = {
1110
- /**
1111
- * A string representing the current Punycode.js version number.
1112
- * @memberOf punycode
1113
- * @type String
1114
- */
1115
- version: "2.3.1",
1116
- /**
1117
- * An object of methods to convert from JavaScript's internal character
1118
- * representation (UCS-2) to Unicode code points, and back.
1119
- * @see <https://mathiasbynens.be/notes/javascript-encoding>
1120
- * @memberOf punycode
1121
- * @type Object
1122
- */
1123
- ucs2: {
1124
- decode: Ae,
1125
- encode: cn
1126
- },
1127
- decode: ne,
1128
- encode: te,
1129
- toASCII: hn,
1130
- toUnicode: un
1131
- };
1132
- /*! markdown-it 15.0.1 https://github.com/markdown-it/markdown-it @license MIT */
1133
- var YA = Object.defineProperty, ie = (A, e) => {
1134
- let n = {};
1135
- for (var r in A) YA(n, r, {
1136
- get: A[r],
1137
- enumerable: !0
1138
- });
1139
- return YA(n, Symbol.toStringTag, { value: "Module" }), n;
1140
- }, an = /* @__PURE__ */ ie({
1141
- arrayReplaceAt: () => gn,
1142
- asciiTrim: () => rA,
1143
- callable: () => re,
1144
- escapeHtml: () => H,
1145
- escapeRE: () => kn,
1146
- fromCodePoint: () => j,
1147
- isMdAsciiPunct: () => T,
1148
- isPunctChar: () => se,
1149
- isPunctCharCode: () => P,
1150
- isSpace: () => b,
1151
- isValidEntityCode: () => IA,
1152
- isWhiteSpace: () => V,
1153
- lib: () => En,
1154
- normalizeReference: () => iA,
1155
- unescapeAll: () => X,
1156
- unescapeMd: () => pn
1157
- });
1158
- function re(A) {
1159
- const e = function(...n) {
1160
- return Reflect.construct(A, n, new.target && new.target !== e ? new.target : A);
1161
- };
1162
- return Object.defineProperty(e, "name", { value: A.name }), Object.setPrototypeOf(e, A), e.prototype = A.prototype, e;
1163
- }
1164
- function gn(A, e, n) {
1165
- return [].concat(A.slice(0, e), n, A.slice(e + 1));
1166
- }
1167
- function IA(A) {
1168
- return !(A >= 55296 && A <= 57343 || A >= 64976 && A <= 65007 || (A & 65535) === 65535 || (A & 65535) === 65534 || A >= 0 && A <= 8 || A === 11 || A >= 14 && A <= 31 || A >= 127 && A <= 159 || A > 1114111);
1169
- }
1170
- function j(A) {
1171
- if (A > 65535) {
1172
- A -= 65536;
1173
- const e = 55296 + (A >> 10), n = 56320 + (A & 1023);
1174
- return String.fromCharCode(e, n);
1175
- }
1176
- return String.fromCharCode(A);
1177
- }
1178
- var oe = /\\([!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~])/g, fn = new RegExp(`${oe.source}|${/&([a-z#][a-z0-9]{1,31});/gi.source}`, "gi"), dn = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))$/i;
1179
- function Cn(A, e) {
1180
- if (e.charCodeAt(0) === 35 && dn.test(e)) {
1181
- const r = e[1].toLowerCase() === "x" ? parseInt(e.slice(2), 16) : parseInt(e.slice(1), 10);
1182
- return IA(r) ? j(r) : A;
1183
- }
1184
- const n = VA(A);
1185
- return n !== A ? n : A;
1186
- }
1187
- function pn(A) {
1188
- return A.indexOf("\\") < 0 ? A : A.replace(oe, "$1");
1189
- }
1190
- function X(A) {
1191
- return A.indexOf("\\") < 0 && A.indexOf("&") < 0 ? A : A.replace(fn, function(e, n, r) {
1192
- return n || Cn(e, r);
1193
- });
1194
- }
1195
- var mn = /[&<>"]/, Dn = /[&<>"]/g, In = {
1196
- "&": "&amp;",
1197
- "<": "&lt;",
1198
- ">": "&gt;",
1199
- '"': "&quot;"
1200
- };
1201
- function Fn(A) {
1202
- return In[A];
1203
- }
1204
- function H(A) {
1205
- return mn.test(A) ? A.replace(Dn, Fn) : A;
1206
- }
1207
- var Bn = /[.?*+^$[\]\\(){}|-]/g;
1208
- function kn(A) {
1209
- return A.replace(Bn, "\\$&");
1210
- }
1211
- function b(A) {
1212
- switch (A) {
1213
- case 9:
1214
- case 32:
1215
- return !0;
1216
- }
1217
- return !1;
1218
- }
1219
- function V(A) {
1220
- if (A >= 8192 && A <= 8202) return !0;
1221
- switch (A) {
1222
- case 9:
1223
- case 10:
1224
- case 11:
1225
- case 12:
1226
- case 13:
1227
- case 32:
1228
- case 160:
1229
- case 5760:
1230
- case 8239:
1231
- case 8287:
1232
- case 12288:
1233
- return !0;
1234
- }
1235
- return !1;
1236
- }
1237
- function se(A) {
1238
- return mA.test(A) || zA.test(A);
1239
- }
1240
- function P(A) {
1241
- return se(j(A));
1242
- }
1243
- function T(A) {
1244
- switch (A) {
1245
- case 33:
1246
- case 34:
1247
- case 35:
1248
- case 36:
1249
- case 37:
1250
- case 38:
1251
- case 39:
1252
- case 40:
1253
- case 41:
1254
- case 42:
1255
- case 43:
1256
- case 44:
1257
- case 45:
1258
- case 46:
1259
- case 47:
1260
- case 58:
1261
- case 59:
1262
- case 60:
1263
- case 61:
1264
- case 62:
1265
- case 63:
1266
- case 64:
1267
- case 91:
1268
- case 92:
1269
- case 93:
1270
- case 94:
1271
- case 95:
1272
- case 96:
1273
- case 123:
1274
- case 124:
1275
- case 125:
1276
- case 126:
1277
- return !0;
1278
- default:
1279
- return !1;
1280
- }
1281
- }
1282
- function iA(A) {
1283
- return A = A.trim().replace(/\s+/g, " "), A.toLowerCase().toUpperCase();
1284
- }
1285
- function ZA(A) {
1286
- return A === 32 || A === 9 || A === 10 || A === 13;
1287
- }
1288
- function rA(A) {
1289
- let e = 0;
1290
- for (; e < A.length && ZA(A.charCodeAt(e)); e++) ;
1291
- let n = A.length - 1;
1292
- for (; n >= e && ZA(A.charCodeAt(n)); n--) ;
1293
- return A.slice(e, n + 1);
1294
- }
1295
- var En = {
1296
- mdurl: We,
1297
- ucmicro: Ze
1298
- };
1299
- function bn(A, e, n) {
1300
- let r, t, i, o;
1301
- const s = A.posMax, c = A.pos;
1302
- for (A.pos = e + 1, r = 1; A.pos < s; ) {
1303
- if (i = A.src.charCodeAt(A.pos), i === 93 && (r--, r === 0)) {
1304
- t = !0;
1305
- break;
1306
- }
1307
- if (o = A.pos, A.md.inline.skipToken(A), i === 91) {
1308
- if (o === A.pos - 1) r++;
1309
- else if (n)
1310
- return A.pos = c, -1;
1311
- }
1312
- }
1313
- let l = -1;
1314
- return t && (l = A.pos), A.pos = c, l;
1315
- }
1316
- function wn(A, e, n) {
1317
- let r, t = e;
1318
- const i = {
1319
- ok: !1,
1320
- pos: 0,
1321
- str: ""
1322
- };
1323
- if (A.charCodeAt(t) === 60) {
1324
- for (t++; t < n; ) {
1325
- if (r = A.charCodeAt(t), r === 10 || r === 60) return i;
1326
- if (r === 62)
1327
- return i.pos = t + 1, i.str = X(A.slice(e + 1, t)), i.ok = !0, i;
1328
- if (r === 92 && t + 1 < n) {
1329
- t += 2;
1330
- continue;
1331
- }
1332
- t++;
1333
- }
1334
- return i;
1335
- }
1336
- let o = 0;
1337
- for (; t < n && (r = A.charCodeAt(t), !(r === 32 || r < 32 || r === 127)); ) {
1338
- if (r === 92 && t + 1 < n) {
1339
- if (A.charCodeAt(t + 1) === 32) {
1340
- t++;
1341
- continue;
1342
- }
1343
- t += 2;
1344
- continue;
1345
- }
1346
- if (r === 40 && (o++, o > 32))
1347
- return i;
1348
- if (r === 41) {
1349
- if (o === 0) break;
1350
- o--;
1351
- }
1352
- t++;
1353
- }
1354
- return e === t || o !== 0 || (i.str = X(A.slice(e, t)), i.pos = t, i.ok = !0), i;
1355
- }
1356
- function _n(A, e, n, r) {
1357
- let t, i = e;
1358
- const o = {
1359
- ok: !1,
1360
- can_continue: !1,
1361
- pos: 0,
1362
- str: "",
1363
- marker: 0
1364
- };
1365
- if (r)
1366
- o.str = r.str, o.marker = r.marker;
1367
- else {
1368
- if (i >= n) return o;
1369
- let s = A.charCodeAt(i);
1370
- if (s !== 34 && s !== 39 && s !== 40) return o;
1371
- e++, i++, s === 40 && (s = 41), o.marker = s;
1372
- }
1373
- for (; i < n; ) {
1374
- if (t = A.charCodeAt(i), t === o.marker)
1375
- return o.pos = i + 1, o.str += X(A.slice(e, i)), o.ok = !0, o;
1376
- if (t === 40 && o.marker === 41) return o;
1377
- t === 92 && i + 1 < n && i++, i++;
1378
- }
1379
- return o.can_continue = !0, o.str += X(A.slice(e, i)), o;
1380
- }
1381
- var yn = /* @__PURE__ */ ie({
1382
- parseLinkDestination: () => wn,
1383
- parseLinkLabel: () => bn,
1384
- parseLinkTitle: () => _n
1385
- });
1386
- function q(A) {
1387
- "@babel/helpers - typeof";
1388
- return q = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(e) {
1389
- return typeof e;
1390
- } : function(e) {
1391
- return e && typeof Symbol == "function" && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
1392
- }, q(A);
1393
- }
1394
- function Qn(A, e) {
1395
- if (q(A) != "object" || !A) return A;
1396
- var n = A[Symbol.toPrimitive];
1397
- if (n !== void 0) {
1398
- var r = n.call(A, e);
1399
- if (q(r) != "object") return r;
1400
- throw new TypeError("@@toPrimitive must return a primitive value.");
1401
- }
1402
- return (e === "string" ? String : Number)(A);
1403
- }
1404
- function xn(A) {
1405
- var e = Qn(A, "string");
1406
- return q(e) == "symbol" ? e : e + "";
1407
- }
1408
- function C(A, e, n) {
1409
- return (e = xn(e)) in A ? Object.defineProperty(A, e, {
1410
- value: n,
1411
- enumerable: !0,
1412
- configurable: !0,
1413
- writable: !0
1414
- }) : A[e] = n, A;
1415
- }
1416
- var v = class {
1417
- constructor(A, e, n) {
1418
- C(
1419
- this,
1420
- /**
1421
- * Source map info. Format: `[ line_begin, line_end ]`
1422
- */
1423
- "map",
1424
- null
1425
- ), C(
1426
- this,
1427
- /**
1428
- * nesting level, the same as `state.level`
1429
- */
1430
- "level",
1431
- 0
1432
- ), C(
1433
- this,
1434
- /**
1435
- * An array of child nodes (inline and img tokens)
1436
- */
1437
- "children",
1438
- null
1439
- ), C(
1440
- this,
1441
- /**
1442
- * In a case of self-closing tag (code, html, fence, etc.),
1443
- * it has contents of this tag.
1444
- */
1445
- "content",
1446
- ""
1447
- ), C(
1448
- this,
1449
- /**
1450
- * '*' or '_' for emphasis, fence string for fence, etc.
1451
- */
1452
- "markup",
1453
- ""
1454
- ), C(
1455
- this,
1456
- /**
1457
- * Additional information:
1458
- *
1459
- * - Info string for "fence" tokens
1460
- * - The value "auto" for autolink "link_open" and "link_close" tokens
1461
- * - The string value of the item marker for ordered-list "list_item_open" tokens
1462
- */
1463
- "info",
1464
- ""
1465
- ), C(
1466
- this,
1467
- /**
1468
- * True for block-level tokens, false for inline tokens.
1469
- * Used in renderer to calculate line breaks
1470
- */
1471
- "block",
1472
- !1
1473
- ), C(
1474
- this,
1475
- /**
1476
- * If it's true, ignore this element when rendering. Used for tight lists
1477
- * to hide paragraphs.
1478
- */
1479
- "hidden",
1480
- !1
1481
- ), this.type = A, this.tag = e, this.attrs = null, this.nesting = n, this.meta = null;
1482
- }
1483
- /**
1484
- * Search attribute index by name.
1485
- */
1486
- attrIndex(A) {
1487
- if (!this.attrs) return -1;
1488
- const e = this.attrs;
1489
- for (let n = 0, r = e.length; n < r; n++) if (e[n][0] === A) return n;
1490
- return -1;
1491
- }
1492
- /**
1493
- * Add `[ name, value ]` attribute to list. Init attrs if necessary
1494
- */
1495
- attrPush(A) {
1496
- this.attrs ? this.attrs.push(A) : this.attrs = [A];
1497
- }
1498
- /**
1499
- * Set `name` attribute to `value`. Override old value if exists.
1500
- */
1501
- attrSet(A, e) {
1502
- const n = this.attrIndex(A), r = [A, e];
1503
- n < 0 ? this.attrPush(r) : this.attrs[n] = r;
1504
- }
1505
- /**
1506
- * Get the value of attribute `name`, or null if it does not exist.
1507
- */
1508
- attrGet(A) {
1509
- const e = this.attrIndex(A);
1510
- let n = null;
1511
- return e >= 0 && (n = this.attrs[e][1]), n;
1512
- }
1513
- /**
1514
- * Join value to existing attribute via space. Or create new attribute if not
1515
- * exists. Useful to operate with token classes.
1516
- */
1517
- attrJoin(A, e) {
1518
- const n = this.attrIndex(A);
1519
- n < 0 ? this.attrPush([A, e]) : this.attrs[n][1] = `${this.attrs[n][1]} ${e}`;
1520
- }
1521
- }, $ = class {
1522
- constructor() {
1523
- C(
1524
- this,
1525
- /** @internal */
1526
- "__rules__",
1527
- []
1528
- ), C(
1529
- this,
1530
- /** @internal */
1531
- "__cache__",
1532
- null
1533
- );
1534
- }
1535
- /** @internal */
1536
- __find__(A) {
1537
- for (let e = 0; e < this.__rules__.length; e++) if (this.__rules__[e].name === A) return e;
1538
- return -1;
1539
- }
1540
- /** @internal */
1541
- __compile__() {
1542
- const A = /* @__PURE__ */ new Set();
1543
- this.__rules__.forEach((e) => {
1544
- e.enabled && e.alt.forEach((n) => {
1545
- n && A.add(n);
1546
- });
1547
- }), this.__cache__ = /* @__PURE__ */ Object.create(null), this.__cache__[""] = [], this.__rules__.forEach((e) => {
1548
- e.enabled && this.__cache__[""].push(e.fn);
1549
- }), A.forEach((e) => {
1550
- this.__cache__[e] = [], this.__rules__.forEach((n) => {
1551
- n.enabled && n.alt.indexOf(e) >= 0 && this.__cache__[e].push(n.fn);
1552
- });
1553
- });
1554
- }
1555
- /**
1556
- * Replace rule by name with new function & options. Throws error if name not
1557
- * found.
1558
- *
1559
- * @example Replace existing typographer replacement rule with new one
1560
- * ```javascript
1561
- * import MarkdownIt from 'markdown-it'
1562
- * const md = new MarkdownIt()
1563
- *
1564
- * md.core.ruler.at('replacements', function replace(state) {
1565
- * //...
1566
- * });
1567
- * ```
1568
- */
1569
- at(A, e, n = {}) {
1570
- const r = this.__find__(A);
1571
- if (r === -1) throw new Error(`Parser rule not found: ${A}`);
1572
- this.__rules__[r].fn = e, this.__rules__[r].alt = n.alt || [], this.__cache__ = null;
1573
- }
1574
- /**
1575
- * Add new rule to chain before one with given name. See also
1576
- * {@link Ruler.after}, {@link Ruler.push}.
1577
- *
1578
- * @example
1579
- * ```javascript
1580
- * import MarkdownIt from 'markdown-it'
1581
- * const md = new MarkdownIt()
1582
- *
1583
- * md.block.ruler.before('paragraph', 'my_rule', function replace(state) {
1584
- * //...
1585
- * });
1586
- * ```
1587
- */
1588
- before(A, e, n, r = {}) {
1589
- const t = this.__find__(A);
1590
- if (t === -1) throw new Error(`Parser rule not found: ${A}`);
1591
- this.__rules__.splice(t, 0, {
1592
- name: e,
1593
- enabled: !0,
1594
- fn: n,
1595
- alt: r.alt || []
1596
- }), this.__cache__ = null;
1597
- }
1598
- /**
1599
- * Add new rule to chain after one with given name. See also
1600
- * {@link Ruler.before}, {@link Ruler.push}.
1601
- *
1602
- * @example
1603
- * ```javascript
1604
- * import MarkdownIt from 'markdown-it'
1605
- * const md = new MarkdownIt()
1606
- *
1607
- * md.inline.ruler.after('text', 'my_rule', function replace(state) {
1608
- * //...
1609
- * });
1610
- * ```
1611
- */
1612
- after(A, e, n, r = {}) {
1613
- const t = this.__find__(A);
1614
- if (t === -1) throw new Error(`Parser rule not found: ${A}`);
1615
- this.__rules__.splice(t + 1, 0, {
1616
- name: e,
1617
- enabled: !0,
1618
- fn: n,
1619
- alt: r.alt || []
1620
- }), this.__cache__ = null;
1621
- }
1622
- /**
1623
- * Push new rule to the end of chain. See also
1624
- * {@link Ruler.before}, {@link Ruler.after}.
1625
- *
1626
- * @example
1627
- * ```javascript
1628
- * import MarkdownIt from 'markdown-it'
1629
- * const md = new MarkdownIt()
1630
- *
1631
- * md.core.ruler.push('my_rule', function replace(state) {
1632
- * //...
1633
- * });
1634
- * ```
1635
- */
1636
- push(A, e, n = {}) {
1637
- this.__rules__.push({
1638
- name: A,
1639
- enabled: !0,
1640
- fn: e,
1641
- alt: n.alt || []
1642
- }), this.__cache__ = null;
1643
- }
1644
- /**
1645
- * Enable rules with given names. If any rule name not found - throw Error.
1646
- * Errors can be disabled by second param.
1647
- *
1648
- * See also {@link Ruler.disable}, {@link Ruler.enableOnly}.
1649
- *
1650
- * Returns list of found rule names (if no exception happened).
1651
- */
1652
- enable(A, e = !1) {
1653
- Array.isArray(A) || (A = [A]);
1654
- const n = [];
1655
- return A.forEach((r) => {
1656
- const t = this.__find__(r);
1657
- if (t < 0) {
1658
- if (e) return;
1659
- throw new Error(`Rules manager: invalid rule name ${r}`);
1660
- }
1661
- this.__rules__[t].enabled = !0, n.push(r);
1662
- }), this.__cache__ = null, n;
1663
- }
1664
- /**
1665
- * Enable rules with given names, and disable everything else. If any rule name
1666
- * not found - throw Error. Errors can be disabled by second param.
1667
- *
1668
- * See also {@link Ruler.disable}, {@link Ruler.enable}.
1669
- */
1670
- enableOnly(A, e = !1) {
1671
- Array.isArray(A) || (A = [A]), this.__rules__.forEach((n) => {
1672
- n.enabled = !1;
1673
- }), this.enable(A, e);
1674
- }
1675
- /**
1676
- * Disable rules with given names. If any rule name not found - throw Error.
1677
- * Errors can be disabled by second param.
1678
- *
1679
- * See also {@link Ruler.enable}, {@link Ruler.enableOnly}.
1680
- *
1681
- * Returns list of found rule names (if no exception happened).
1682
- */
1683
- disable(A, e = !1) {
1684
- Array.isArray(A) || (A = [A]);
1685
- const n = [];
1686
- return A.forEach((r) => {
1687
- const t = this.__find__(r);
1688
- if (t < 0) {
1689
- if (e) return;
1690
- throw new Error(`Rules manager: invalid rule name ${r}`);
1691
- }
1692
- this.__rules__[t].enabled = !1, n.push(r);
1693
- }), this.__cache__ = null, n;
1694
- }
1695
- /**
1696
- * Return array of active functions (rules) for given chain name. It analyzes
1697
- * rules configuration, compiles caches if not exists and returns result.
1698
- *
1699
- * Default chain name is `''` (empty string). It can't be skipped. That's
1700
- * done intentionally, to keep signature monomorphic for high speed.
1701
- */
1702
- getRules(A) {
1703
- return this.__cache__ || this.__compile__(), this.__cache__[A] || [];
1704
- }
1705
- }, W = {};
1706
- W.code_inline = function(A, e, n, r, t) {
1707
- const i = A[e];
1708
- return `<code${t.renderAttrs(i)}>${H(i.content)}</code>`;
1709
- };
1710
- W.code_block = function(A, e, n, r, t) {
1711
- const i = A[e];
1712
- return `<pre${t.renderAttrs(i)}><code>${H(A[e].content)}</code></pre>
1713
- `;
1714
- };
1715
- W.fence = function(A, e, n, r, t) {
1716
- const i = A[e], o = i.info ? X(i.info).trim() : "";
1717
- let s = "", c = "";
1718
- if (o) {
1719
- const a = o.split(/(\s+)/g);
1720
- s = a[0], c = a.slice(2).join("");
1721
- }
1722
- let l;
1723
- if (n.highlight ? l = n.highlight(i.content, s, c) || H(i.content) : l = H(i.content), l.indexOf("<pre") === 0) return l + `
1724
- `;
1725
- if (o) {
1726
- const a = i.attrIndex("class"), h = i.attrs ? i.attrs.slice() : [];
1727
- a < 0 ? h.push(["class", `${n.langPrefix}${s}`]) : (h[a] = [h[a][0], h[a][1]], h[a][1] += ` ${n.langPrefix}${s}`);
1728
- const f = { attrs: h };
1729
- return `<pre><code${t.renderAttrs(f)}>${l}</code></pre>
1730
- `;
1731
- }
1732
- return `<pre><code${t.renderAttrs(i)}>${l}</code></pre>
1733
- `;
1734
- };
1735
- W.image = function(A, e, n, r, t) {
1736
- const i = A[e];
1737
- return i.attrs[i.attrIndex("alt")][1] = t.renderInlineAsText(i.children, n, r), t.renderToken(A, e, n);
1738
- };
1739
- W.hardbreak = function(A, e, n) {
1740
- return n.xhtmlOut ? `<br />
1741
- ` : `<br>
1742
- `;
1743
- };
1744
- W.softbreak = function(A, e, n) {
1745
- return n.breaks ? n.xhtmlOut ? `<br />
1746
- ` : `<br>
1747
- ` : `
1748
- `;
1749
- };
1750
- W.text = function(A, e) {
1751
- return H(A[e].content);
1752
- };
1753
- W.html_block = function(A, e) {
1754
- return A[e].content;
1755
- };
1756
- W.html_inline = function(A, e) {
1757
- return A[e].content;
1758
- };
1759
- var ce = class {
1760
- constructor() {
1761
- C(
1762
- this,
1763
- /**
1764
- * Contains render rules for tokens. Can be updated and extended.
1765
- *
1766
- * See [source code](https://github.com/markdown-it/markdown-it/blob/master/src/renderer.ts)
1767
- * for more details and examples.
1768
- *
1769
- * @example Custom render rules
1770
- * ```javascript
1771
- * import MarkdownIt from 'markdown-it'
1772
- * const md = new MarkdownIt()
1773
- *
1774
- * md.renderer.rules.strong_open = function () { return '<b>'; };
1775
- * md.renderer.rules.strong_close = function () { return '</b>'; };
1776
- *
1777
- * const result = md.renderInline(...);
1778
- * ```
1779
- *
1780
- * @example Each rule is called as independent static function with fixed signature
1781
- * ```javascript
1782
- * function my_token_render(tokens, idx, options, env, renderer) {
1783
- * // ...
1784
- * return renderedHTML;
1785
- * }
1786
- * ```
1787
- */
1788
- "rules",
1789
- Object.assign({}, W)
1790
- );
1791
- }
1792
- /**
1793
- * Render token attributes to string.
1794
- */
1795
- renderAttrs(A) {
1796
- let e, n, r;
1797
- if (!A.attrs) return "";
1798
- for (r = "", e = 0, n = A.attrs.length; e < n; e++) r += ` ${H(A.attrs[e][0])}="${H(String(A.attrs[e][1]))}"`;
1799
- return r;
1800
- }
1801
- /**
1802
- * Default token renderer. Can be overriden by custom function
1803
- * in {@link Renderer.rules}.
1804
- */
1805
- renderToken(A, e, n) {
1806
- const r = A[e];
1807
- let t = "";
1808
- if (r.hidden) return "";
1809
- let i = e - 1;
1810
- for (; i >= 0 && A[i].hidden && A[i].nesting === 0; ) i--;
1811
- r.block && r.nesting !== -1 && i >= 0 && A[i].hidden && A[i].nesting === -1 && (t += `
1812
- `), t += (r.nesting === -1 ? "</" : "<") + r.tag, t += this.renderAttrs(r), r.nesting === 0 && n.xhtmlOut && (t += " /");
1813
- let o = !1;
1814
- if (r.block && (o = !0, r.nesting === 1)) {
1815
- let s = e + 1;
1816
- for (; s < A.length && A[s].hidden && A[s].nesting === 0; ) s++;
1817
- if (s < A.length) {
1818
- const c = A[s];
1819
- (c.type === "inline" || c.hidden || c.nesting === -1 && c.tag === r.tag) && (o = !1);
1820
- }
1821
- }
1822
- return t += o ? `>
1823
- ` : ">", t;
1824
- }
1825
- /**
1826
- * The same as {@link Renderer.render}, but for single token of `inline` type.
1827
- */
1828
- renderInline(A, e, n) {
1829
- let r = "";
1830
- const t = this.rules;
1831
- for (let i = 0, o = A.length; i < o; i++) {
1832
- const s = A[i].type;
1833
- typeof t[s] < "u" ? r += t[s](A, i, e, n, this) : r += this.renderToken(A, i, e);
1834
- }
1835
- return r;
1836
- }
1837
- /**
1838
- * Special kludge for image `alt` attributes to conform CommonMark spec.
1839
- * Don't try to use it! Spec requires to show `alt` content with stripped markup,
1840
- * instead of simple escaping.
1841
- */
1842
- renderInlineAsText(A, e, n) {
1843
- let r = "";
1844
- for (let t = 0, i = A.length; t < i; t++) switch (A[t].type) {
1845
- case "text":
1846
- case "code_inline":
1847
- r += A[t].content;
1848
- break;
1849
- case "image":
1850
- r += this.renderInlineAsText(A[t].children, e, n);
1851
- break;
1852
- case "html_inline":
1853
- case "html_block":
1854
- r += A[t].content;
1855
- break;
1856
- case "softbreak":
1857
- case "hardbreak":
1858
- r += `
1859
- `;
1860
- }
1861
- return r;
1862
- }
1863
- /**
1864
- * Takes token stream and generates HTML. Probably, you will never need to call
1865
- * this method directly.
1866
- */
1867
- render(A, e, n) {
1868
- let r = "";
1869
- const t = this.rules;
1870
- for (let i = 0, o = A.length; i < o; i++) {
1871
- const s = A[i].type;
1872
- s === "inline" ? r += this.renderInline(A[i].children, e, n) : typeof t[s] < "u" ? r += t[s](A, i, e, n, this) : r += this.renderToken(A, i, e);
1873
- }
1874
- return r;
1875
- }
1876
- }, le = class {
1877
- constructor(A, e, n) {
1878
- C(this, "tokens", []), C(this, "inlineMode", !1), C(this, "Token", v), this.src = A, this.env = n, this.md = e;
1879
- }
1880
- }, Kn = /\r\n?/g, Gn = /\0/g;
1881
- function Wn(A) {
1882
- let e;
1883
- e = A.src.replace(Kn, `
1884
- `), e = e.replace(Gn, "�"), A.src = e;
1885
- }
1886
- function Yn(A) {
1887
- let e;
1888
- A.inlineMode ? (e = new A.Token("inline", "", 0), e.content = A.src, e.map = [0, 1], e.children = [], A.tokens.push(e)) : A.md.block.parse(A.src, A.md, A.env, A.tokens);
1889
- }
1890
- function Zn(A) {
1891
- const e = A.tokens;
1892
- let n = 0;
1893
- for (let r = 0; r < e.length; r++)
1894
- e[r].type !== "reference_definition" && (r !== n && (e[n] = e[r]), n++);
1895
- e.length !== n && (e.length = n);
1896
- }
1897
- function Jn(A) {
1898
- const e = A.tokens;
1899
- for (let n = 0, r = e.length; n < r; n++) {
1900
- const t = e[n];
1901
- t.type === "inline" && A.md.inline.parse(t.content, A.md, A.env, t.children);
1902
- }
1903
- }
1904
- function Rn(A) {
1905
- return /^<a[>\s]/i.test(A);
1906
- }
1907
- function Sn(A) {
1908
- return /^<\/a\s*>/i.test(A);
1909
- }
1910
- function Hn(A) {
1911
- const e = A.tokens;
1912
- if (A.md.options.linkify)
1913
- for (let n = 0, r = e.length; n < r; n++) {
1914
- if (e[n].type !== "inline" || !A.md.linkify.test(e[n].content)) continue;
1915
- const t = e[n].children, i = [];
1916
- let o = 0;
1917
- for (let s = t.length - 1; s >= 0; s--) {
1918
- const c = t[s];
1919
- if (c.type === "link_close") {
1920
- for (s--; t[s].level !== c.level && t[s].type !== "link_open"; ) s--;
1921
- continue;
1922
- }
1923
- if (c.type === "html_inline" && (Rn(c.content) && o > 0 && o--, Sn(c.content) && o++), !(o > 0) && c.type === "text" && A.md.linkify.test(c.content)) {
1924
- const l = c.content;
1925
- let a = A.md.linkify.match(l);
1926
- const h = [];
1927
- let f = c.level, g = 0;
1928
- a.length > 0 && a[0].index === 0 && s > 0 && t[s - 1].type === "text_special" && (a = a.slice(1));
1929
- for (let u = 0; u < a.length; u++) {
1930
- const B = a[u].url, m = A.md.normalizeLink(B);
1931
- if (!A.md.validateLink(m)) continue;
1932
- let I = a[u].text;
1933
- a[u].schema ? a[u].schema === "mailto:" && !/^mailto:/i.test(I) ? I = A.md.normalizeLinkText(`mailto:${I}`).replace(/^mailto:/, "") : I = A.md.normalizeLinkText(I) : I = A.md.normalizeLinkText(`http://${I}`).replace(/^http:\/\//, "");
1934
- const D = a[u].index;
1935
- if (D > g) {
1936
- const k = new A.Token("text", "", 0);
1937
- k.content = l.slice(g, D), k.level = f, h.push(k);
1938
- }
1939
- const F = new A.Token("link_open", "a", 1);
1940
- F.attrs = [["href", m]], F.level = f++, F.markup = "linkify", F.info = "auto", h.push(F);
1941
- const d = new A.Token("text", "", 0);
1942
- d.content = I, d.level = f, h.push(d);
1943
- const p = new A.Token("link_close", "a", -1);
1944
- p.level = --f, p.markup = "linkify", p.info = "auto", h.push(p), g = a[u].lastIndex;
1945
- }
1946
- if (g < l.length) {
1947
- const u = new A.Token("text", "", 0);
1948
- u.content = l.slice(g), u.level = f, h.push(u);
1949
- }
1950
- i.push({
1951
- index: s,
1952
- nodes: h
1953
- });
1954
- }
1955
- }
1956
- if (i.length > 0) {
1957
- let s = t.length;
1958
- for (const h of i) s += h.nodes.length - 1;
1959
- const c = new Array(s);
1960
- let l = 0, a = 0;
1961
- i.reverse();
1962
- for (let h = 0; h < t.length; h++) {
1963
- const f = i[l];
1964
- if ((f == null ? void 0 : f.index) === h) {
1965
- for (const g of f.nodes) c[a++] = g;
1966
- l++;
1967
- } else c[a++] = t[h];
1968
- }
1969
- e[n].children = c;
1970
- }
1971
- }
1972
- }
1973
- var ue = /\+-|\.\.|\?\?\?\?|!!!!|,,|--/, Mn = /\((c|tm|r)\)/i, vn = /\((c|tm|r)\)/gi, Nn = {
1974
- c: "©",
1975
- r: "®",
1976
- tm: "™"
1977
- };
1978
- function Un(A, e) {
1979
- return Nn[e.toLowerCase()];
1980
- }
1981
- function On(A) {
1982
- let e = 0;
1983
- for (let n = A.length - 1; n >= 0; n--) {
1984
- const r = A[n];
1985
- r.type === "text" && !e && (r.content = r.content.replace(vn, Un)), r.type === "link_open" && r.info === "auto" && e--, r.type === "link_close" && r.info === "auto" && e++;
1986
- }
1987
- }
1988
- function Xn(A) {
1989
- let e = 0;
1990
- for (let n = A.length - 1; n >= 0; n--) {
1991
- const r = A[n];
1992
- r.type === "text" && !e && ue.test(r.content) && (r.content = r.content.replace(/\+-/g, "±").replace(/\.{2,}/g, "…").replace(/([?!])…/g, "$1..").replace(/([?!]){4,}/g, "$1$1$1").replace(/,{2,}/g, ",").replace(/(^|[^-])---(?=[^-]|$)/gm, "$1—").replace(/(^|\s)--(?=\s|$)/gm, "$1–").replace(/(^|[^-\s])--(?=[^-\s]|$)/gm, "$1–")), r.type === "link_open" && r.info === "auto" && e--, r.type === "link_close" && r.info === "auto" && e++;
1993
- }
1994
- }
1995
- function Ln(A) {
1996
- let e;
1997
- if (A.md.options.typographer)
1998
- for (e = A.tokens.length - 1; e >= 0; e--)
1999
- A.tokens[e].type === "inline" && (Mn.test(A.tokens[e].content) && On(A.tokens[e].children), ue.test(A.tokens[e].content) && Xn(A.tokens[e].children));
2000
- }
2001
- var zn = /['"]/, JA = /['"]/g, RA = "’";
2002
- function eA(A, e, n, r) {
2003
- A[e] || (A[e] = []), A[e].push({
2004
- pos: n,
2005
- ch: r
2006
- });
2007
- }
2008
- function jn(A, e) {
2009
- let n = "", r = 0;
2010
- e.sort((t, i) => t.pos - i.pos);
2011
- for (let t = 0; t < e.length; t++) {
2012
- const i = e[t];
2013
- n += A.slice(r, i.pos) + i.ch, r = i.pos + 1;
2014
- }
2015
- return n + A.slice(r);
2016
- }
2017
- function Vn(A, e) {
2018
- let n;
2019
- const r = [], t = {};
2020
- for (let i = 0; i < A.length; i++) {
2021
- const o = A[i], s = A[i].level;
2022
- for (n = r.length - 1; n >= 0 && !(r[n].level <= s); n--) ;
2023
- if (r.length = n + 1, o.type !== "text") continue;
2024
- const c = o.content;
2025
- let l = 0;
2026
- const a = c.length;
2027
- A: for (; l < a; ) {
2028
- JA.lastIndex = l;
2029
- const h = JA.exec(c);
2030
- if (!h) break;
2031
- let f = !0, g = !0;
2032
- l = h.index + 1;
2033
- const u = h[0] === "'";
2034
- let B = 32;
2035
- if (h.index - 1 >= 0) B = c.charCodeAt(h.index - 1);
2036
- else for (n = i - 1; n >= 0 && !(A[n].type === "softbreak" || A[n].type === "hardbreak"); n--)
2037
- if (A[n].content) {
2038
- B = A[n].content.charCodeAt(A[n].content.length - 1);
2039
- break;
2040
- }
2041
- let m = 32;
2042
- if (l < a) m = c.charCodeAt(l);
2043
- else for (n = i + 1; n < A.length && !(A[n].type === "softbreak" || A[n].type === "hardbreak"); n++)
2044
- if (A[n].content) {
2045
- m = A[n].content.charCodeAt(0);
2046
- break;
2047
- }
2048
- const I = T(B) || P(B), D = T(m) || P(m), F = V(B), d = V(m);
2049
- if (d ? f = !1 : D && (F || I || (f = !1)), F ? g = !1 : I && (d || D || (g = !1)), m === 34 && h[0] === '"' && B >= 48 && B <= 57 && (g = f = !1), f && g && (f = I, g = D), !f && !g) {
2050
- u && eA(t, i, h.index, RA);
2051
- continue;
2052
- }
2053
- if (g) for (n = r.length - 1; n >= 0; n--) {
2054
- let p = r[n];
2055
- if (r[n].level < s) break;
2056
- if (p.single === u && r[n].level === s) {
2057
- p = r[n];
2058
- let k, _;
2059
- u ? (k = e.md.options.quotes[2], _ = e.md.options.quotes[3]) : (k = e.md.options.quotes[0], _ = e.md.options.quotes[1]), eA(t, i, h.index, _), eA(t, p.token, p.pos, k), r.length = n;
2060
- continue A;
2061
- }
2062
- }
2063
- f ? r.push({
2064
- token: i,
2065
- pos: h.index,
2066
- single: u,
2067
- level: s
2068
- }) : g && u && eA(t, i, h.index, RA);
2069
- }
2070
- }
2071
- Object.keys(t).forEach(function(i) {
2072
- const o = Number(i);
2073
- A[o].content = jn(A[o].content, t[i]);
2074
- });
2075
- }
2076
- function Pn(A) {
2077
- if (A.md.options.typographer)
2078
- for (let e = A.tokens.length - 1; e >= 0; e--)
2079
- A.tokens[e].type !== "inline" || !zn.test(A.tokens[e].content) || Vn(A.tokens[e].children, A);
2080
- }
2081
- function Tn(A) {
2082
- let e, n;
2083
- const r = A.length;
2084
- for (e = 0; e < r; e++) A[e].type === "text_special" && (A[e].type = "text");
2085
- for (e = n = 0; e < r; e++) A[e].type === "text" && e + 1 < r && A[e + 1].type === "text" ? A[e + 1].content = A[e].content + A[e + 1].content : (e !== n && (A[n] = A[e]), n++);
2086
- e !== n && (A.length = n);
2087
- }
2088
- function qn(A) {
2089
- let e, n;
2090
- const r = A.tokens, t = r.length;
2091
- for (let i = 0; i < t; i++) {
2092
- if (r[i].type !== "inline") continue;
2093
- const o = r[i].children, s = o.length;
2094
- for (e = 0; e < s; e++)
2095
- o[e].type === "text_special" && (o[e].type = "text"), o[e].children && Tn(o[e].children);
2096
- for (e = n = 0; e < s; e++) o[e].type === "text" && e + 1 < s && o[e + 1].type === "text" ? o[e + 1].content = o[e].content + o[e + 1].content : (e !== n && (o[n] = o[e]), n++);
2097
- e !== n && (o.length = n);
2098
- }
2099
- }
2100
- var hA = [
2101
- ["normalize", Wn],
2102
- ["block", Yn],
2103
- ["strip_references", Zn],
2104
- ["inline", Jn],
2105
- ["linkify", Hn],
2106
- ["replacements", Ln],
2107
- ["smartquotes", Pn],
2108
- ["text_join", qn]
2109
- ], he = class {
2110
- constructor() {
2111
- C(
2112
- this,
2113
- /**
2114
- * {@link Ruler} instance. Keep configuration of core rules.
2115
- */
2116
- "ruler",
2117
- new $()
2118
- ), C(this, "State", le);
2119
- for (let A = 0; A < hA.length; A++) this.ruler.push(hA[A][0], hA[A][1]);
2120
- }
2121
- /**
2122
- * Executes core chain rules.
2123
- */
2124
- process(A) {
2125
- const e = this.ruler.getRules("");
2126
- for (let n = 0, r = e.length; n < r; n++) e[n](A);
2127
- }
2128
- }, ae = class {
2129
- constructor(A, e, n, r) {
2130
- C(this, "bMarks", []), C(this, "eMarks", []), C(this, "tShift", []), C(this, "sCount", []), C(this, "bsCount", []), C(this, "blkIndent", 0), C(this, "line", 0), C(this, "lineMax", 0), C(this, "tight", !1), C(this, "listIndent", -1), C(this, "parentType", "root"), C(this, "level", 0), C(this, "Token", v), this.src = A, this.md = e, this.env = n, this.tokens = r;
2131
- const t = this.src;
2132
- for (let i = 0, o = 0, s = 0, c = 0, l = t.length, a = !1; o < l; o++) {
2133
- const h = t.charCodeAt(o);
2134
- if (!a) if (b(h)) {
2135
- s++, h === 9 ? c += 4 - c % 4 : c++;
2136
- continue;
2137
- } else a = !0;
2138
- (h === 10 || o === l - 1) && (h !== 10 && o++, this.bMarks.push(i), this.eMarks.push(o), this.tShift.push(s), this.sCount.push(c), this.bsCount.push(0), a = !1, s = 0, c = 0, i = o + 1);
2139
- }
2140
- this.bMarks.push(t.length), this.eMarks.push(t.length), this.tShift.push(0), this.sCount.push(0), this.bsCount.push(0), this.lineMax = this.bMarks.length - 1;
2141
- }
2142
- push(A, e, n) {
2143
- const r = new v(A, e, n);
2144
- return r.block = !0, n < 0 && this.level--, r.level = this.level, n > 0 && this.level++, this.tokens.push(r), r;
2145
- }
2146
- isEmpty(A) {
2147
- return this.bMarks[A] + this.tShift[A] >= this.eMarks[A];
2148
- }
2149
- skipEmptyLines(A) {
2150
- for (let e = this.lineMax; A < e && !(this.bMarks[A] + this.tShift[A] < this.eMarks[A]); A++) ;
2151
- return A;
2152
- }
2153
- skipSpaces(A) {
2154
- for (let e = this.src.length; A < e && b(this.src.charCodeAt(A)); A++) ;
2155
- return A;
2156
- }
2157
- skipSpacesBack(A, e) {
2158
- if (A <= e) return A;
2159
- for (; A > e; ) if (!b(this.src.charCodeAt(--A))) return A + 1;
2160
- return A;
2161
- }
2162
- skipChars(A, e) {
2163
- for (let n = this.src.length; A < n && this.src.charCodeAt(A) === e; A++) ;
2164
- return A;
2165
- }
2166
- skipCharsBack(A, e, n) {
2167
- if (A <= n) return A;
2168
- for (; A > n; ) if (e !== this.src.charCodeAt(--A)) return A + 1;
2169
- return A;
2170
- }
2171
- getLines(A, e, n, r) {
2172
- if (A >= e) return "";
2173
- const t = new Array(e - A);
2174
- for (let i = 0, o = A; o < e; o++, i++) {
2175
- let s = 0;
2176
- const c = this.bMarks[o];
2177
- let l = c, a;
2178
- for (o + 1 < e || r ? a = this.eMarks[o] + 1 : a = this.eMarks[o]; l < a && s < n; ) {
2179
- const h = this.src.charCodeAt(l);
2180
- if (b(h)) h === 9 ? s += 4 - (s + this.bsCount[o]) % 4 : s++;
2181
- else if (l - c < this.tShift[o]) s++;
2182
- else break;
2183
- l++;
2184
- }
2185
- s > n ? t[i] = new Array(s - n + 1).join(" ") + this.src.slice(l, a) : t[i] = this.src.slice(l, a);
2186
- }
2187
- return t.join("");
2188
- }
2189
- }, $n = 65536;
2190
- function aA(A, e) {
2191
- const n = A.bMarks[e] + A.tShift[e], r = A.eMarks[e];
2192
- return A.src.slice(n, r);
2193
- }
2194
- function SA(A) {
2195
- const e = [], n = A.length;
2196
- let r = 0, t = A.charCodeAt(r), i = !1, o = 0, s = "";
2197
- for (; r < n; )
2198
- t === 124 && (i ? (s += A.substring(o, r - 1), o = r) : (e.push(s + A.substring(o, r)), s = "", o = r + 1)), i = t === 92, r++, t = A.charCodeAt(r);
2199
- return e.push(s + A.substring(o)), e;
2200
- }
2201
- function At(A, e, n, r) {
2202
- if (e + 2 > n) return !1;
2203
- let t = e + 1;
2204
- if (A.sCount[t] < A.blkIndent || A.sCount[t] - A.blkIndent >= 4) return !1;
2205
- let i = A.bMarks[t] + A.tShift[t];
2206
- if (i >= A.eMarks[t]) return !1;
2207
- const o = A.src.charCodeAt(i++);
2208
- if (o !== 124 && o !== 45 && o !== 58 || i >= A.eMarks[t]) return !1;
2209
- const s = A.src.charCodeAt(i++);
2210
- if (s !== 124 && s !== 45 && s !== 58 && !b(s) || o === 45 && b(s)) return !1;
2211
- for (; i < A.eMarks[t]; ) {
2212
- const d = A.src.charCodeAt(i);
2213
- if (d !== 124 && d !== 45 && d !== 58 && !b(d)) return !1;
2214
- i++;
2215
- }
2216
- let c = aA(A, e + 1), l = c.split("|");
2217
- const a = [];
2218
- for (let d = 0; d < l.length; d++) {
2219
- const p = l[d].trim();
2220
- if (!p) {
2221
- if (d === 0 || d === l.length - 1) continue;
2222
- return !1;
2223
- }
2224
- if (!/^:?-+:?$/.test(p)) return !1;
2225
- p.charCodeAt(p.length - 1) === 58 ? a.push(p.charCodeAt(0) === 58 ? "center" : "right") : p.charCodeAt(0) === 58 ? a.push("left") : a.push("");
2226
- }
2227
- if (c = aA(A, e).trim(), c.indexOf("|") === -1 || A.sCount[e] - A.blkIndent >= 4) return !1;
2228
- l = SA(c), l.length && l[0] === "" && l.shift(), l.length && l[l.length - 1] === "" && l.pop();
2229
- const h = l.length;
2230
- if (h === 0 || h !== a.length) return !1;
2231
- if (r) return !0;
2232
- const f = A.parentType;
2233
- A.parentType = "table";
2234
- const g = A.md.block.ruler.getRules("blockquote"), u = A.push("table_open", "table", 1), B = [e, 0];
2235
- u.map = B;
2236
- const m = A.push("thead_open", "thead", 1);
2237
- m.map = [e, e + 1];
2238
- const I = A.push("tr_open", "tr", 1);
2239
- I.map = [e, e + 1];
2240
- for (let d = 0; d < l.length; d++) {
2241
- const p = A.push("th_open", "th", 1);
2242
- a[d] && (p.attrs = [["style", `text-align:${a[d]}`]]);
2243
- const k = A.push("inline", "", 0);
2244
- k.content = l[d].trim(), k.children = [], A.push("th_close", "th", -1);
2245
- }
2246
- A.push("tr_close", "tr", -1), A.push("thead_close", "thead", -1);
2247
- let D, F = 0;
2248
- for (t = e + 2; t < n && !(A.sCount[t] < A.blkIndent); t++) {
2249
- let d = !1;
2250
- for (let k = 0, _ = g.length; k < _; k++) if (g[k](A, t, n, !0)) {
2251
- d = !0;
2252
- break;
2253
- }
2254
- if (d || (c = aA(A, t).trim(), !c) || A.sCount[t] - A.blkIndent >= 4 || (l = SA(c), l.length && l[0] === "" && l.shift(), l.length && l[l.length - 1] === "" && l.pop(), F += h - l.length, F > $n)) break;
2255
- if (t === e + 2) {
2256
- const k = A.push("tbody_open", "tbody", 1);
2257
- k.map = D = [e + 2, 0];
2258
- }
2259
- const p = A.push("tr_open", "tr", 1);
2260
- p.map = [t, t + 1];
2261
- for (let k = 0; k < h; k++) {
2262
- const _ = A.push("td_open", "td", 1);
2263
- a[k] && (_.attrs = [["style", `text-align:${a[k]}`]]);
2264
- const x = A.push("inline", "", 0);
2265
- x.content = l[k] ? l[k].trim() : "", x.children = [], A.push("td_close", "td", -1);
2266
- }
2267
- A.push("tr_close", "tr", -1);
2268
- }
2269
- return D && (A.push("tbody_close", "tbody", -1), D[1] = t), A.push("table_close", "table", -1), B[1] = t, A.parentType = f, A.line = t, !0;
2270
- }
2271
- function et(A, e, n) {
2272
- if (A.sCount[e] - A.blkIndent < 4) return !1;
2273
- let r = e + 1, t = r;
2274
- for (; r < n; ) {
2275
- if (A.isEmpty(r)) {
2276
- r++;
2277
- continue;
2278
- }
2279
- if (A.sCount[r] - A.blkIndent >= 4) {
2280
- r++, t = r;
2281
- continue;
2282
- }
2283
- break;
2284
- }
2285
- A.line = t;
2286
- const i = A.push("code_block", "code", 0);
2287
- return i.content = A.getLines(e, t, 4 + A.blkIndent, !1) + `
2288
- `, i.map = [e, A.line], !0;
2289
- }
2290
- function nt(A, e, n, r) {
2291
- let t = A.bMarks[e] + A.tShift[e], i = A.eMarks[e];
2292
- if (A.sCount[e] - A.blkIndent >= 4 || t + 3 > i) return !1;
2293
- const o = A.src.charCodeAt(t);
2294
- if (o !== 126 && o !== 96) return !1;
2295
- let s = t;
2296
- t = A.skipChars(t, o);
2297
- let c = t - s;
2298
- if (c < 3) return !1;
2299
- const l = A.src.slice(s, t), a = A.src.slice(t, i);
2300
- if (o === 96 && a.indexOf(String.fromCharCode(o)) >= 0)
2301
- return !1;
2302
- if (r) return !0;
2303
- let h = e, f = !1;
2304
- for (; h++, !(h >= n || (t = s = A.bMarks[h] + A.tShift[h], i = A.eMarks[h], t < i && A.sCount[h] < A.blkIndent)); )
2305
- if (A.src.charCodeAt(t) === o && !(A.sCount[h] - A.blkIndent >= 4) && (t = A.skipChars(t, o), !(t - s < c) && (t = A.skipSpaces(t), !(t < i)))) {
2306
- f = !0;
2307
- break;
2308
- }
2309
- c = A.sCount[e], A.line = h + (f ? 1 : 0);
2310
- const g = A.push("fence", "code", 0);
2311
- return g.info = a, g.content = A.getLines(e + 1, h, c, !0), g.markup = l, g.map = [e, A.line], !0;
2312
- }
2313
- function tt(A, e, n, r) {
2314
- let t = A.bMarks[e] + A.tShift[e], i = A.eMarks[e];
2315
- const o = A.lineMax;
2316
- if (A.sCount[e] - A.blkIndent >= 4 || A.src.charCodeAt(t) !== 62) return !1;
2317
- if (r) return !0;
2318
- const s = [], c = [], l = [], a = [], h = A.md.block.ruler.getRules("blockquote"), f = A.parentType;
2319
- A.parentType = "blockquote";
2320
- let g = !1, u;
2321
- for (u = e; u < n; u++) {
2322
- const F = A.sCount[u] < A.blkIndent;
2323
- if (t = A.bMarks[u] + A.tShift[u], i = A.eMarks[u], t >= i) break;
2324
- if (A.src.charCodeAt(t++) === 62 && !F) {
2325
- let p = A.sCount[u] + 1, k, _;
2326
- A.src.charCodeAt(t) === 32 ? (t++, p++, _ = !1, k = !0) : A.src.charCodeAt(t) === 9 ? (k = !0, (A.bsCount[u] + p) % 4 === 3 ? (t++, p++, _ = !1) : _ = !0) : k = !1;
2327
- let x = p;
2328
- for (s.push(A.bMarks[u]), A.bMarks[u] = t; t < i; ) {
2329
- const J = A.src.charCodeAt(t);
2330
- if (b(J)) J === 9 ? x += 4 - (x + A.bsCount[u] + (_ ? 1 : 0)) % 4 : x++;
2331
- else break;
2332
- t++;
2333
- }
2334
- g = t >= i, c.push(A.bsCount[u]), A.bsCount[u] = A.sCount[u] + 1 + (k ? 1 : 0), l.push(A.sCount[u]), A.sCount[u] = x - p, a.push(A.tShift[u]), A.tShift[u] = t - A.bMarks[u];
2335
- continue;
2336
- }
2337
- if (g) break;
2338
- let d = !1;
2339
- for (let p = 0, k = h.length; p < k; p++) if (h[p](A, u, n, !0)) {
2340
- d = !0;
2341
- break;
2342
- }
2343
- if (d) {
2344
- A.lineMax = u, A.blkIndent !== 0 && (s.push(A.bMarks[u]), c.push(A.bsCount[u]), a.push(A.tShift[u]), l.push(A.sCount[u]), A.sCount[u] -= A.blkIndent);
2345
- break;
2346
- }
2347
- s.push(A.bMarks[u]), c.push(A.bsCount[u]), a.push(A.tShift[u]), l.push(A.sCount[u]), A.sCount[u] = -1;
2348
- }
2349
- const B = A.blkIndent;
2350
- A.blkIndent = 0;
2351
- const m = A.push("blockquote_open", "blockquote", 1);
2352
- m.markup = ">";
2353
- const I = [e, 0];
2354
- m.map = I, A.md.block.tokenize(A, e, u);
2355
- const D = A.push("blockquote_close", "blockquote", -1);
2356
- D.markup = ">", A.lineMax = o, A.parentType = f, I[1] = A.line;
2357
- for (let F = 0; F < a.length; F++)
2358
- A.bMarks[F + e] = s[F], A.tShift[F + e] = a[F], A.sCount[F + e] = l[F], A.bsCount[F + e] = c[F];
2359
- return A.blkIndent = B, !0;
2360
- }
2361
- function it(A, e, n, r) {
2362
- const t = A.eMarks[e];
2363
- if (A.sCount[e] - A.blkIndent >= 4) return !1;
2364
- let i = A.bMarks[e] + A.tShift[e];
2365
- const o = A.src.charCodeAt(i++);
2366
- if (o !== 42 && o !== 45 && o !== 95) return !1;
2367
- let s = 1;
2368
- for (; i < t; ) {
2369
- const l = A.src.charCodeAt(i++);
2370
- if (l !== o && !b(l)) return !1;
2371
- l === o && s++;
2372
- }
2373
- if (s < 3) return !1;
2374
- if (r) return !0;
2375
- A.line = e + 1;
2376
- const c = A.push("hr", "hr", 0);
2377
- return c.map = [e, A.line], c.markup = Array(s + 1).join(String.fromCharCode(o)), !0;
2378
- }
2379
- function HA(A, e) {
2380
- const n = A.eMarks[e];
2381
- let r = A.bMarks[e] + A.tShift[e];
2382
- const t = A.src.charCodeAt(r++);
2383
- return t !== 42 && t !== 45 && t !== 43 || r < n && !b(A.src.charCodeAt(r)) ? -1 : r;
2384
- }
2385
- function MA(A, e) {
2386
- const n = A.bMarks[e] + A.tShift[e], r = A.eMarks[e];
2387
- let t = n;
2388
- if (t + 1 >= r) return -1;
2389
- let i = A.src.charCodeAt(t++);
2390
- if (i < 48 || i > 57) return -1;
2391
- for (; ; ) {
2392
- if (t >= r) return -1;
2393
- if (i = A.src.charCodeAt(t++), i >= 48 && i <= 57) {
2394
- if (t - n >= 10) return -1;
2395
- continue;
2396
- }
2397
- if (i === 41 || i === 46) break;
2398
- return -1;
2399
- }
2400
- return t < r && (i = A.src.charCodeAt(t), !b(i)) ? -1 : t;
2401
- }
2402
- function rt(A, e) {
2403
- const n = A.level + 2;
2404
- for (let r = e + 2, t = A.tokens.length - 2; r < t; r++) A.tokens[r].level === n && A.tokens[r].type === "paragraph_open" && (A.tokens[r + 2].hidden = !0, A.tokens[r].hidden = !0, r += 2);
2405
- }
2406
- function ot(A, e, n, r) {
2407
- let t, i, o, s, c = e, l = !0;
2408
- if (A.sCount[c] - A.blkIndent >= 4 || A.listIndent >= 0 && A.sCount[c] - A.listIndent >= 4 && A.sCount[c] < A.blkIndent) return !1;
2409
- let a = !1;
2410
- r && A.parentType === "paragraph" && A.sCount[c] >= A.blkIndent && (a = !0);
2411
- let h, f, g;
2412
- if ((g = MA(A, c)) >= 0) {
2413
- if (h = !0, o = A.bMarks[c] + A.tShift[c], f = Number(A.src.slice(o, g - 1)), a && f !== 1) return !1;
2414
- } else if ((g = HA(A, c)) >= 0) h = !1;
2415
- else return !1;
2416
- if (a && A.skipSpaces(g) >= A.eMarks[c])
2417
- return !1;
2418
- if (r) return !0;
2419
- const u = A.src.charCodeAt(g - 1), B = A.tokens.length;
2420
- h ? (s = A.push("ordered_list_open", "ol", 1), f !== 1 && (s.attrs = [["start", f]])) : s = A.push("bullet_list_open", "ul", 1);
2421
- const m = [c, 0];
2422
- s.map = m, s.markup = String.fromCharCode(u);
2423
- let I = !1;
2424
- const D = A.md.block.ruler.getRules("list"), F = A.parentType;
2425
- for (A.parentType = "list"; c < n; ) {
2426
- i = g, t = A.eMarks[c];
2427
- const d = A.sCount[c] + g - (A.bMarks[c] + A.tShift[c]);
2428
- let p = d;
2429
- for (; i < t; ) {
2430
- const N = A.src.charCodeAt(i);
2431
- if (N === 9) p += 4 - (p + A.bsCount[c]) % 4;
2432
- else if (N === 32) p++;
2433
- else break;
2434
- i++;
2435
- }
2436
- const k = i;
2437
- let _;
2438
- k >= t ? _ = 1 : _ = p - d, _ > 4 && (_ = 1);
2439
- const x = d + _;
2440
- s = A.push("list_item_open", "li", 1), s.markup = String.fromCharCode(u);
2441
- const J = [c, 0];
2442
- s.map = J, h && (s.info = A.src.slice(o, g - 1));
2443
- const oA = A.tight, AA = A.tShift[c], L = A.sCount[c], sA = A.listIndent;
2444
- if (A.listIndent = A.blkIndent, A.blkIndent = x, A.tight = !0, A.tShift[c] = k - A.bMarks[c], A.sCount[c] = p, k >= t && A.isEmpty(c + 1) ? A.line = Math.min(A.line + 2, n) : A.md.block.tokenize(A, c, n), (!A.tight || I) && (l = !1), I = A.line - c > 1 && A.isEmpty(A.line - 1), A.blkIndent = A.listIndent, A.listIndent = sA, A.tShift[c] = AA, A.sCount[c] = L, A.tight = oA, s = A.push("list_item_close", "li", -1), s.markup = String.fromCharCode(u), c = A.line, J[1] = c, c >= n || A.sCount[c] < A.blkIndent || A.sCount[c] - A.blkIndent >= 4) break;
2445
- let BA = !1;
2446
- for (let N = 0, Ie = D.length; N < Ie; N++) if (D[N](A, c, n, !0)) {
2447
- BA = !0;
2448
- break;
2449
- }
2450
- if (BA) break;
2451
- if (h) {
2452
- if (g = MA(A, c), g < 0) break;
2453
- o = A.bMarks[c] + A.tShift[c];
2454
- } else if (g = HA(A, c), g < 0) break;
2455
- if (u !== A.src.charCodeAt(g - 1)) break;
2456
- }
2457
- return h ? s = A.push("ordered_list_close", "ol", -1) : s = A.push("bullet_list_close", "ul", -1), s.markup = String.fromCharCode(u), m[1] = c, A.line = c, A.parentType = F, l && rt(A, B), !0;
2458
- }
2459
- function st(A, e, n, r) {
2460
- let t = A.bMarks[e] + A.tShift[e], i = A.eMarks[e], o = e + 1;
2461
- if (A.sCount[e] - A.blkIndent >= 4 || A.src.charCodeAt(t) !== 91) return !1;
2462
- function s(d) {
2463
- const p = A.lineMax;
2464
- if (d >= p || A.isEmpty(d)) return null;
2465
- let k = !1;
2466
- if (A.sCount[d] - A.blkIndent > 3 && (k = !0), A.sCount[d] < 0 && (k = !0), !k) {
2467
- const J = A.md.block.ruler.getRules("reference"), oA = A.parentType;
2468
- A.parentType = "reference";
2469
- let AA = !1;
2470
- for (let L = 0, sA = J.length; L < sA; L++) if (J[L](A, d, p, !0)) {
2471
- AA = !0;
2472
- break;
2473
- }
2474
- if (A.parentType = oA, AA) return null;
2475
- }
2476
- const _ = A.bMarks[d] + A.tShift[d], x = A.eMarks[d];
2477
- return A.src.slice(_, x + 1);
2478
- }
2479
- let c = A.src.slice(t, i + 1);
2480
- i = c.length;
2481
- let l = -1;
2482
- for (t = 1; t < i; t++) {
2483
- const d = c.charCodeAt(t);
2484
- if (d === 91) return !1;
2485
- if (d === 93) {
2486
- l = t;
2487
- break;
2488
- } else if (d === 10) {
2489
- const p = s(o);
2490
- p !== null && (c += p, i = c.length, o++);
2491
- } else if (d === 92 && (t++, t < i && c.charCodeAt(t) === 10)) {
2492
- const p = s(o);
2493
- p !== null && (c += p, i = c.length, o++);
2494
- }
2495
- }
2496
- if (l < 0 || c.charCodeAt(l + 1) !== 58) return !1;
2497
- for (t = l + 2; t < i; t++) {
2498
- const d = c.charCodeAt(t);
2499
- if (d === 10) {
2500
- const p = s(o);
2501
- p !== null && (c += p, i = c.length, o++);
2502
- } else if (!b(d)) break;
2503
- }
2504
- const a = A.md.helpers.parseLinkDestination(c, t, i);
2505
- if (!a.ok) return !1;
2506
- const h = A.md.normalizeLink(a.str);
2507
- if (!A.md.validateLink(h)) return !1;
2508
- t = a.pos;
2509
- const f = t, g = o, u = t;
2510
- for (; t < i; t++) {
2511
- const d = c.charCodeAt(t);
2512
- if (d === 10) {
2513
- const p = s(o);
2514
- p !== null && (c += p, i = c.length, o++);
2515
- } else if (!b(d)) break;
2516
- }
2517
- let B = A.md.helpers.parseLinkTitle(c, t, i);
2518
- for (; B.can_continue; ) {
2519
- const d = s(o);
2520
- if (d === null) break;
2521
- c += d, t = i, i = c.length, o++, B = A.md.helpers.parseLinkTitle(c, t, i, B);
2522
- }
2523
- let m;
2524
- for (t < i && u !== t && B.ok ? (m = B.str, t = B.pos) : (m = "", t = f, o = g); t < i && b(c.charCodeAt(t)); )
2525
- t++;
2526
- if (t < i && c.charCodeAt(t) !== 10 && m)
2527
- for (m = "", t = f, o = g; t < i && b(c.charCodeAt(t)); )
2528
- t++;
2529
- if (t < i && c.charCodeAt(t) !== 10) return !1;
2530
- const I = iA(c.slice(1, l));
2531
- if (!I) return !1;
2532
- if (r) return !0;
2533
- typeof A.env.references > "u" && (A.env.references = {}), typeof A.env.references[I] > "u" && (A.env.references[I] = {
2534
- title: m,
2535
- href: h
2536
- });
2537
- const D = A.push("reference_definition", "", 0);
2538
- D.map = [e, o], D.hidden = !0;
2539
- const F = /* @__PURE__ */ Object.create(null);
2540
- return F.label = I, D.meta = F, A.line = o, !0;
2541
- }
2542
- var ct = [
2543
- "address",
2544
- "article",
2545
- "aside",
2546
- "base",
2547
- "basefont",
2548
- "blockquote",
2549
- "body",
2550
- "caption",
2551
- "center",
2552
- "col",
2553
- "colgroup",
2554
- "dd",
2555
- "details",
2556
- "dialog",
2557
- "dir",
2558
- "div",
2559
- "dl",
2560
- "dt",
2561
- "fieldset",
2562
- "figcaption",
2563
- "figure",
2564
- "footer",
2565
- "form",
2566
- "frame",
2567
- "frameset",
2568
- "h1",
2569
- "h2",
2570
- "h3",
2571
- "h4",
2572
- "h5",
2573
- "h6",
2574
- "head",
2575
- "header",
2576
- "hr",
2577
- "html",
2578
- "iframe",
2579
- "legend",
2580
- "li",
2581
- "link",
2582
- "main",
2583
- "menu",
2584
- "menuitem",
2585
- "nav",
2586
- "noframes",
2587
- "ol",
2588
- "optgroup",
2589
- "option",
2590
- "p",
2591
- "param",
2592
- "search",
2593
- "section",
2594
- "summary",
2595
- "table",
2596
- "tbody",
2597
- "td",
2598
- "tfoot",
2599
- "th",
2600
- "thead",
2601
- "title",
2602
- "tr",
2603
- "track",
2604
- "ul"
2605
- ], ge = `<[A-Za-z][A-Za-z0-9\\-]*(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*(?:[^"'=<>\`\\x00-\\x20]+|'[^']*'|"[^"]*"))?)*\\s*\\/?>`, fe = "<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>", lt = new RegExp(`^(?:${ge}|${fe}|<!---?>|<!--(?:[^-]|-[^-]|--[^>])*-->|<[?][\\s\\S]*?[?]>|<![A-Za-z][^>]*>|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>)`), ut = new RegExp(`^(?:${ge}|${fe})`), M = [
2606
- [
2607
- /^<(script|pre|style|textarea)(?=(\s|>|$))/i,
2608
- /<\/(script|pre|style|textarea)>/i,
2609
- !0
2610
- ],
2611
- [
2612
- /^<!--/,
2613
- /-->/,
2614
- !0
2615
- ],
2616
- [
2617
- /^<\?/,
2618
- /\?>/,
2619
- !0
2620
- ],
2621
- [
2622
- /^<![A-Za-z]/,
2623
- />/,
2624
- !0
2625
- ],
2626
- [
2627
- /^<!\[CDATA\[/,
2628
- /\]\]>/,
2629
- !0
2630
- ],
2631
- [
2632
- new RegExp(`^</?(${ct.join("|")})(?=(\\s|/?>|$))`, "i"),
2633
- /^$/,
2634
- !0
2635
- ],
2636
- [
2637
- new RegExp(`${ut.source}\\s*$`),
2638
- /^$/,
2639
- !1
2640
- ]
2641
- ];
2642
- function ht(A, e, n, r) {
2643
- let t = A.bMarks[e] + A.tShift[e], i = A.eMarks[e];
2644
- if (A.sCount[e] - A.blkIndent >= 4 || !A.md.options.html || A.src.charCodeAt(t) !== 60) return !1;
2645
- let o = A.src.slice(t, i), s = 0;
2646
- for (; s < M.length && !M[s][0].test(o); s++) ;
2647
- if (s === M.length) return !1;
2648
- if (r) return M[s][2];
2649
- let c = e + 1;
2650
- const l = M[s][1].test("");
2651
- if (!M[s][1].test(o)) {
2652
- for (; c < n && !(A.sCount[c] < A.blkIndent && (l || !A.isEmpty(c))); c++)
2653
- if (t = A.bMarks[c] + A.tShift[c], i = A.eMarks[c], o = A.src.slice(t, i), M[s][1].test(o)) {
2654
- o.length !== 0 && c++;
2655
- break;
2656
- }
2657
- }
2658
- A.line = c;
2659
- const a = A.push("html_block", "", 0);
2660
- return a.map = [e, c], a.content = A.getLines(e, c, A.blkIndent, !0), !0;
2661
- }
2662
- function at(A, e, n, r) {
2663
- let t = A.bMarks[e] + A.tShift[e], i = A.eMarks[e];
2664
- if (A.sCount[e] - A.blkIndent >= 4) return !1;
2665
- let o = A.src.charCodeAt(t);
2666
- if (o !== 35 || t >= i) return !1;
2667
- let s = 1;
2668
- for (o = A.src.charCodeAt(++t); o === 35 && t < i && s <= 6; )
2669
- s++, o = A.src.charCodeAt(++t);
2670
- if (s > 6 || t < i && !b(o)) return !1;
2671
- if (r) return !0;
2672
- i = A.skipSpacesBack(i, t);
2673
- const c = A.skipCharsBack(i, 35, t);
2674
- c > t && b(A.src.charCodeAt(c - 1)) && (i = c), A.line = e + 1;
2675
- const l = A.push("heading_open", `h${s}`, 1);
2676
- l.markup = "########".slice(0, s), l.map = [e, A.line];
2677
- const a = A.push("inline", "", 0);
2678
- a.content = rA(A.src.slice(t, i)), a.map = [e, A.line], a.children = [];
2679
- const h = A.push("heading_close", `h${s}`, -1);
2680
- return h.markup = "########".slice(0, s), !0;
2681
- }
2682
- function gt(A, e, n) {
2683
- const r = A.md.block.ruler.getRules("paragraph");
2684
- if (A.sCount[e] - A.blkIndent >= 4) return !1;
2685
- const t = A.parentType;
2686
- A.parentType = "paragraph";
2687
- let i = 0, o, s = e + 1;
2688
- for (; s < n && !A.isEmpty(s); s++) {
2689
- if (A.sCount[s] - A.blkIndent > 3) continue;
2690
- if (A.sCount[s] >= A.blkIndent) {
2691
- let g = A.bMarks[s] + A.tShift[s];
2692
- const u = A.eMarks[s];
2693
- if (g < u && (o = A.src.charCodeAt(g), (o === 45 || o === 61) && (g = A.skipChars(g, o), g = A.skipSpaces(g), g >= u))) {
2694
- i = o === 61 ? 1 : 2;
2695
- break;
2696
- }
2697
- }
2698
- if (A.sCount[s] < 0) continue;
2699
- let f = !1;
2700
- for (let g = 0, u = r.length; g < u; g++) if (r[g](A, s, n, !0)) {
2701
- f = !0;
2702
- break;
2703
- }
2704
- if (f) break;
2705
- }
2706
- if (!i)
2707
- return A.parentType = t, !1;
2708
- const c = rA(A.getLines(e, s, A.blkIndent, !1));
2709
- A.line = s + 1;
2710
- const l = A.push("heading_open", `h${i}`, 1);
2711
- l.markup = String.fromCharCode(o), l.map = [e, A.line];
2712
- const a = A.push("inline", "", 0);
2713
- a.content = c, a.map = [e, A.line - 1], a.children = [];
2714
- const h = A.push("heading_close", `h${i}`, -1);
2715
- return h.markup = String.fromCharCode(o), A.parentType = t, !0;
2716
- }
2717
- function ft(A, e, n) {
2718
- const r = A.md.block.ruler.getRules("paragraph"), t = A.parentType;
2719
- let i = e + 1;
2720
- for (A.parentType = "paragraph"; i < n && !A.isEmpty(i); i++) {
2721
- if (A.sCount[i] - A.blkIndent > 3 || A.sCount[i] < 0) continue;
2722
- let l = !1;
2723
- for (let a = 0, h = r.length; a < h; a++) if (r[a](A, i, n, !0)) {
2724
- l = !0;
2725
- break;
2726
- }
2727
- if (l) break;
2728
- }
2729
- const o = rA(A.getLines(e, i, A.blkIndent, !1));
2730
- A.line = i;
2731
- const s = A.push("paragraph_open", "p", 1);
2732
- s.map = [e, A.line];
2733
- const c = A.push("inline", "", 0);
2734
- return c.content = o, c.map = [e, A.line], c.children = [], A.push("paragraph_close", "p", -1), A.parentType = t, !0;
2735
- }
2736
- var nA = [
2737
- [
2738
- "table",
2739
- At,
2740
- ["paragraph", "reference"]
2741
- ],
2742
- ["code", et],
2743
- [
2744
- "fence",
2745
- nt,
2746
- [
2747
- "paragraph",
2748
- "reference",
2749
- "blockquote",
2750
- "list"
2751
- ]
2752
- ],
2753
- [
2754
- "blockquote",
2755
- tt,
2756
- [
2757
- "paragraph",
2758
- "reference",
2759
- "blockquote",
2760
- "list"
2761
- ]
2762
- ],
2763
- [
2764
- "hr",
2765
- it,
2766
- [
2767
- "paragraph",
2768
- "reference",
2769
- "blockquote",
2770
- "list"
2771
- ]
2772
- ],
2773
- [
2774
- "list",
2775
- ot,
2776
- [
2777
- "paragraph",
2778
- "reference",
2779
- "blockquote"
2780
- ]
2781
- ],
2782
- ["reference", st],
2783
- [
2784
- "html_block",
2785
- ht,
2786
- [
2787
- "paragraph",
2788
- "reference",
2789
- "blockquote"
2790
- ]
2791
- ],
2792
- [
2793
- "heading",
2794
- at,
2795
- [
2796
- "paragraph",
2797
- "reference",
2798
- "blockquote"
2799
- ]
2800
- ],
2801
- ["lheading", gt],
2802
- ["paragraph", ft]
2803
- ], de = class {
2804
- constructor() {
2805
- C(
2806
- this,
2807
- /**
2808
- * {@link Ruler} instance. Keep configuration of block rules.
2809
- */
2810
- "ruler",
2811
- new $()
2812
- ), C(this, "State", ae);
2813
- for (let A = 0; A < nA.length; A++) this.ruler.push(nA[A][0], nA[A][1], { alt: (nA[A][2] || []).slice() });
2814
- }
2815
- tokenize(A, e, n) {
2816
- const r = this.ruler.getRules(""), t = r.length, i = A.md.options.maxNesting;
2817
- let o = e, s = !1;
2818
- for (; o < n && (A.line = o = A.skipEmptyLines(o), !(o >= n || A.sCount[o] < A.blkIndent)); ) {
2819
- if (A.level >= i) {
2820
- A.line = n;
2821
- break;
2822
- }
2823
- const c = A.line;
2824
- let l = !1;
2825
- for (let a = 0; a < t; a++)
2826
- if (l = r[a](A, o, n, !1), l) {
2827
- if (c >= A.line) throw new Error("block rule didn't increment state.line");
2828
- break;
2829
- }
2830
- if (!l) throw new Error("none of the block rules matched");
2831
- A.tight = !s, A.isEmpty(A.line - 1) && (s = !0), o = A.line, o < n && A.isEmpty(o) && (s = !0, o++, A.line = o);
2832
- }
2833
- }
2834
- /**
2835
- * Process input string and push block tokens into `outTokens`
2836
- */
2837
- parse(A, e, n, r) {
2838
- if (!A) return;
2839
- const t = new this.State(A, e, n, r);
2840
- this.tokenize(t, t.line, t.lineMax);
2841
- }
2842
- }, Ce = class {
2843
- constructor(A, e, n, r) {
2844
- C(this, "pos", 0), C(this, "level", 0), C(this, "pending", ""), C(this, "pendingLevel", 0), C(this, "cache", {}), C(this, "backticks", {}), C(this, "backticksScanned", !1), C(this, "linkLevel", 0), C(this, "delimiters", []), C(this, "_prev_delimiters", []), C(this, "Token", v), this.src = A, this.env = n, this.md = e, this.tokens = r, this.tokens_meta = Array(r.length), this.posMax = this.src.length;
2845
- }
2846
- pushPending() {
2847
- const A = new v("text", "", 0);
2848
- return A.content = this.pending, A.level = this.pendingLevel, this.tokens.push(A), this.pending = "", A;
2849
- }
2850
- push(A, e, n) {
2851
- this.pending && this.pushPending();
2852
- const r = new v(A, e, n);
2853
- let t;
2854
- return n < 0 && (this.level--, this.delimiters = this._prev_delimiters.pop()), r.level = this.level, n > 0 && (this.level++, this._prev_delimiters.push(this.delimiters), this.delimiters = [], t = { delimiters: this.delimiters }), this.pendingLevel = this.level, this.tokens.push(r), this.tokens_meta.push(t), r;
2855
- }
2856
- scanDelims(A, e) {
2857
- const n = this.posMax, r = this.src.charCodeAt(A);
2858
- let t;
2859
- if (A === 0) t = 32;
2860
- else if (A === 1)
2861
- t = this.src.charCodeAt(0), (t & 63488) === 55296 && (t = 65533);
2862
- else if (t = this.src.charCodeAt(A - 1), (t & 64512) === 56320) {
2863
- const u = this.src.charCodeAt(A - 2);
2864
- t = (u & 64512) === 55296 ? 65536 + (u - 55296 << 10) + (t - 56320) : 65533;
2865
- } else (t & 64512) === 55296 && (t = 65533);
2866
- let i = A;
2867
- for (; i < n && this.src.charCodeAt(i) === r; ) i++;
2868
- const o = i - A;
2869
- let s = i < n ? this.src.charCodeAt(i) : 32;
2870
- if ((s & 64512) === 55296) {
2871
- const u = this.src.charCodeAt(i + 1);
2872
- s = (u & 64512) === 56320 ? 65536 + (s - 55296 << 10) + (u - 56320) : 65533;
2873
- } else (s & 64512) === 56320 && (s = 65533);
2874
- const c = T(t) || P(t), l = T(s) || P(s), a = V(t), h = V(s), f = !h && (!l || a || c), g = !a && (!c || h || l);
2875
- return {
2876
- can_open: f && (e || !g || c),
2877
- can_close: g && (e || !f || l),
2878
- length: o
2879
- };
2880
- }
2881
- };
2882
- function dt(A) {
2883
- switch (A) {
2884
- case 10:
2885
- case 33:
2886
- case 35:
2887
- case 36:
2888
- case 37:
2889
- case 38:
2890
- case 42:
2891
- case 43:
2892
- case 45:
2893
- case 58:
2894
- case 60:
2895
- case 61:
2896
- case 62:
2897
- case 64:
2898
- case 91:
2899
- case 92:
2900
- case 93:
2901
- case 94:
2902
- case 95:
2903
- case 96:
2904
- case 123:
2905
- case 125:
2906
- case 126:
2907
- return !0;
2908
- default:
2909
- return !1;
2910
- }
2911
- }
2912
- function Ct(A, e) {
2913
- let n = A.pos;
2914
- for (; n < A.posMax && !dt(A.src.charCodeAt(n)); ) n++;
2915
- return n === A.pos ? !1 : (e || (A.pending += A.src.slice(A.pos, n)), A.pos = n, !0);
2916
- }
2917
- function pt(A) {
2918
- return A >= 65 && A <= 90 || A >= 97 && A <= 122;
2919
- }
2920
- function mt(A) {
2921
- return A >= 65 && A <= 90 || A >= 97 && A <= 122 || A >= 48 && A <= 57 || A === 43 || A === 45 || A === 46;
2922
- }
2923
- function Dt(A, e) {
2924
- if (!A.md.options.linkify || A.linkLevel > 0) return !1;
2925
- const n = A.pos, r = A.posMax;
2926
- if (n + 3 > r || A.src.charCodeAt(n) !== 58 || A.src.charCodeAt(n + 1) !== 47 || A.src.charCodeAt(n + 2) !== 47) return !1;
2927
- const t = n - Math.min(10, A.pending.length, n);
2928
- let i = n;
2929
- for (; i > t && mt(A.src.charCodeAt(i - 1)); ) i--;
2930
- if (i === n || !pt(A.src.charCodeAt(i))) return !1;
2931
- const o = n - i, s = A.md.linkify.matchAtStart(A.src.slice(i));
2932
- if (!s) return !1;
2933
- let c = s.url;
2934
- if (c.length <= o) return !1;
2935
- let l = c.length;
2936
- for (; l > 0 && c.charCodeAt(l - 1) === 42; ) l--;
2937
- l !== c.length && (c = c.slice(0, l));
2938
- const a = A.md.normalizeLink(c);
2939
- if (!A.md.validateLink(a)) return !1;
2940
- if (!e) {
2941
- A.pending = A.pending.slice(0, -o);
2942
- const h = A.push("link_open", "a", 1);
2943
- h.attrs = [["href", a]], h.markup = "linkify", h.info = "auto";
2944
- const f = A.push("text", "", 0);
2945
- f.content = A.md.normalizeLinkText(c);
2946
- const g = A.push("link_close", "a", -1);
2947
- g.markup = "linkify", g.info = "auto";
2948
- }
2949
- return A.pos += c.length - o, !0;
2950
- }
2951
- function It(A, e) {
2952
- let n = A.pos;
2953
- if (A.src.charCodeAt(n) !== 10) return !1;
2954
- const r = A.pending.length - 1, t = A.posMax;
2955
- if (!e) if (r >= 0 && A.pending.charCodeAt(r) === 32) if (r >= 1 && A.pending.charCodeAt(r - 1) === 32) {
2956
- let i = r - 1;
2957
- for (; i >= 1 && A.pending.charCodeAt(i - 1) === 32; ) i--;
2958
- A.pending = A.pending.slice(0, i), A.push("hardbreak", "br", 0);
2959
- } else
2960
- A.pending = A.pending.slice(0, -1), A.push("softbreak", "br", 0);
2961
- else A.push("softbreak", "br", 0);
2962
- for (n++; n < t && b(A.src.charCodeAt(n)); ) n++;
2963
- return A.pos = n, !0;
2964
- }
2965
- var FA = [];
2966
- for (let A = 0; A < 256; A++) FA.push(0);
2967
- "\\!\"#$%&'()*+,./:;<=>?@[]^_`{|}~-".split("").forEach(function(A) {
2968
- FA[A.charCodeAt(0)] = 1;
2969
- });
2970
- function Ft(A, e) {
2971
- let n = A.pos;
2972
- const r = A.posMax;
2973
- if (A.src.charCodeAt(n) !== 92 || (n++, n >= r)) return !1;
2974
- let t = A.src.charCodeAt(n);
2975
- if (t === 10) {
2976
- for (e || A.push("hardbreak", "br", 0), n++; n < r && (t = A.src.charCodeAt(n), !!b(t)); )
2977
- n++;
2978
- return A.pos = n, !0;
2979
- }
2980
- if (t === 32) {
2981
- if (!e) {
2982
- const s = A.push("text_special", "", 0);
2983
- s.content = "\\", s.markup = "\\", s.info = "escape";
2984
- }
2985
- return A.pos = n, !0;
2986
- }
2987
- let i = A.src[n];
2988
- if (t >= 55296 && t <= 56319 && n + 1 < r) {
2989
- const s = A.src.charCodeAt(n + 1);
2990
- s >= 56320 && s <= 57343 && (i += A.src[n + 1], n++);
2991
- }
2992
- const o = "\\" + i;
2993
- if (!e) {
2994
- const s = A.push("text_special", "", 0);
2995
- t < 256 && FA[t] !== 0 ? s.content = i : s.content = o, s.markup = o, s.info = "escape";
2996
- }
2997
- return A.pos = n + 1, !0;
2998
- }
2999
- function Bt(A) {
3000
- const e = {};
3001
- let n = 0;
3002
- for (; (n = A.indexOf("`", n)) !== -1; ) {
3003
- const r = n;
3004
- for (; A.charCodeAt(++n) === 96; ) ;
3005
- e[n - r] = r;
3006
- }
3007
- return e;
3008
- }
3009
- function kt(A, e) {
3010
- var n;
3011
- const r = A.pos;
3012
- if (A.src.charCodeAt(r) !== 96) return !1;
3013
- const t = A.posMax;
3014
- let i = r + 1;
3015
- for (; i < t && A.src.charCodeAt(i) === 96; ) i++;
3016
- const o = A.src.slice(r, i), s = o.length;
3017
- if (A.backticksScanned || (A.backticks = Bt(A.src), A.backticksScanned = !0), ((n = A.backticks[s]) !== null && n !== void 0 ? n : -1) >= i) {
3018
- let c = i, l;
3019
- for (; (l = A.src.indexOf("`", c)) !== -1 && l < t; ) {
3020
- for (c = l + 1; A.src.charCodeAt(c) === 96; ) c++;
3021
- if (c > t) break;
3022
- if (c - l === s) {
3023
- if (!e) {
3024
- const a = A.push("code_inline", "code", 0);
3025
- a.markup = o;
3026
- let h = A.src.slice(i, l).replace(/\n/g, " ");
3027
- h.startsWith(" ") && h.endsWith(" ") && /[^ ]/.test(h) && (h = h.slice(1, -1)), a.content = h;
3028
- }
3029
- return A.pos = c, !0;
3030
- }
3031
- }
3032
- }
3033
- return e || (A.pending += o), A.pos = i, !0;
3034
- }
3035
- function Et(A, e) {
3036
- const n = A.pos, r = A.src.charCodeAt(n);
3037
- if (e || r !== 126) return !1;
3038
- const t = A.scanDelims(A.pos, !0);
3039
- let i = t.length;
3040
- const o = String.fromCharCode(r);
3041
- if (i < 2) return !1;
3042
- let s;
3043
- i % 2 && (s = A.push("text", "", 0), s.content = o, i--);
3044
- for (let c = 0; c < i; c += 2)
3045
- s = A.push("text", "", 0), s.content = o + o, A.delimiters.push({
3046
- marker: r,
3047
- length: 0,
3048
- token: A.tokens.length - 1,
3049
- end: -1,
3050
- open: t.can_open,
3051
- close: t.can_close
3052
- });
3053
- return A.pos += t.length, !0;
3054
- }
3055
- function vA(A, e) {
3056
- let n;
3057
- const r = [], t = e.length;
3058
- for (let i = 0; i < t; i++) {
3059
- const o = e[i];
3060
- if (o.marker !== 126 || o.end === -1) continue;
3061
- const s = e[o.end];
3062
- n = A.tokens[o.token], n.type = "s_open", n.tag = "s", n.nesting = 1, n.markup = "~~", n.content = "", n = A.tokens[s.token], n.type = "s_close", n.tag = "s", n.nesting = -1, n.markup = "~~", n.content = "", A.tokens[s.token - 1].type === "text" && A.tokens[s.token - 1].content === "~" && r.push(s.token - 1);
3063
- }
3064
- for (; r.length; ) {
3065
- const i = r.pop();
3066
- let o = i + 1;
3067
- for (; o < A.tokens.length && A.tokens[o].type === "s_close"; ) o++;
3068
- o--, i !== o && (n = A.tokens[o], A.tokens[o] = A.tokens[i], A.tokens[i] = n);
3069
- }
3070
- }
3071
- function bt(A) {
3072
- const e = A.tokens_meta, n = A.tokens_meta.length;
3073
- vA(A, A.delimiters);
3074
- for (let t = 0; t < n; t++) {
3075
- var r;
3076
- const i = (r = e[t]) === null || r === void 0 ? void 0 : r.delimiters;
3077
- i && vA(A, i);
3078
- }
3079
- }
3080
- var pe = {
3081
- tokenize: Et,
3082
- postProcess: bt
3083
- };
3084
- function wt(A, e) {
3085
- const n = A.pos, r = A.src.charCodeAt(n);
3086
- if (e || r !== 95 && r !== 42) return !1;
3087
- const t = A.scanDelims(A.pos, r === 42);
3088
- for (let i = 0; i < t.length; i++) {
3089
- const o = A.push("text", "", 0);
3090
- o.content = String.fromCharCode(r), A.delimiters.push({
3091
- marker: r,
3092
- length: t.length,
3093
- token: A.tokens.length - 1,
3094
- end: -1,
3095
- open: t.can_open,
3096
- close: t.can_close
3097
- });
3098
- }
3099
- return A.pos += t.length, !0;
3100
- }
3101
- function NA(A, e) {
3102
- const n = e.length;
3103
- for (let r = n - 1; r >= 0; r--) {
3104
- const t = e[r];
3105
- if (t.marker !== 95 && t.marker !== 42 || t.end === -1) continue;
3106
- const i = e[t.end], o = r > 0 && e[r - 1].end === t.end + 1 && e[r - 1].marker === t.marker && e[r - 1].token === t.token - 1 && e[t.end + 1].token === i.token + 1, s = String.fromCharCode(t.marker), c = A.tokens[t.token];
3107
- c.type = o ? "strong_open" : "em_open", c.tag = o ? "strong" : "em", c.nesting = 1, c.markup = o ? s + s : s, c.content = "";
3108
- const l = A.tokens[i.token];
3109
- l.type = o ? "strong_close" : "em_close", l.tag = o ? "strong" : "em", l.nesting = -1, l.markup = o ? s + s : s, l.content = "", o && (A.tokens[e[r - 1].token].content = "", A.tokens[e[t.end + 1].token].content = "", r--);
3110
- }
3111
- }
3112
- function _t(A) {
3113
- const e = A.tokens_meta, n = A.tokens_meta.length;
3114
- NA(A, A.delimiters);
3115
- for (let t = 0; t < n; t++) {
3116
- var r;
3117
- const i = (r = e[t]) === null || r === void 0 ? void 0 : r.delimiters;
3118
- i && NA(A, i);
3119
- }
3120
- }
3121
- var me = {
3122
- tokenize: wt,
3123
- postProcess: _t
3124
- };
3125
- function yt(A, e) {
3126
- let n, r, t, i, o = "", s = "", c = A.pos, l = !0;
3127
- if (A.src.charCodeAt(A.pos) !== 91) return !1;
3128
- const a = A.pos, h = A.posMax, f = A.pos + 1, g = A.md.helpers.parseLinkLabel(A, A.pos, !0);
3129
- if (g < 0) return !1;
3130
- let u = g + 1;
3131
- if (u < h && A.src.charCodeAt(u) === 40) {
3132
- for (l = !1, u++; u < h && (n = A.src.charCodeAt(u), !(!b(n) && n !== 10)); u++)
3133
- ;
3134
- if (u >= h) return !1;
3135
- if (c = u, t = A.md.helpers.parseLinkDestination(A.src, u, A.posMax), t.ok) {
3136
- for (o = A.md.normalizeLink(t.str), A.md.validateLink(o) ? u = t.pos : o = "", c = u; u < h && (n = A.src.charCodeAt(u), !(!b(n) && n !== 10)); u++)
3137
- ;
3138
- if (t = A.md.helpers.parseLinkTitle(A.src, u, A.posMax), u < h && c !== u && t.ok)
3139
- for (s = t.str, u = t.pos; u < h && (n = A.src.charCodeAt(u), !(!b(n) && n !== 10)); u++)
3140
- ;
3141
- }
3142
- (u >= h || A.src.charCodeAt(u) !== 41) && (l = !0), u++;
3143
- }
3144
- if (l) {
3145
- if (typeof A.env.references > "u") return !1;
3146
- if (u < h && A.src.charCodeAt(u) === 91 ? (c = u + 1, u = A.md.helpers.parseLinkLabel(A, u), u >= 0 ? r = A.src.slice(c, u++) : u = g + 1) : u = g + 1, r || (r = A.src.slice(f, g)), r = iA(r), i = A.env.references[r], !i)
3147
- return A.pos = a, !1;
3148
- o = i.href, s = i.title;
3149
- }
3150
- if (!e) {
3151
- A.pos = f, A.posMax = g;
3152
- const B = A.push("link_open", "a", 1), m = [["href", o]];
3153
- if (B.attrs = m, s && m.push(["title", s]), r) {
3154
- const I = /* @__PURE__ */ Object.create(null);
3155
- I.label = r, B.meta = I;
3156
- }
3157
- A.linkLevel++, A.md.inline.tokenize(A), A.linkLevel--, A.push("link_close", "a", -1);
3158
- }
3159
- return A.pos = u, A.posMax = h, !0;
3160
- }
3161
- function Qt(A, e) {
3162
- let n, r, t, i, o, s, c, l, a = "";
3163
- const h = A.pos, f = A.posMax;
3164
- if (A.src.charCodeAt(A.pos) !== 33 || A.src.charCodeAt(A.pos + 1) !== 91) return !1;
3165
- const g = A.pos + 2, u = A.md.helpers.parseLinkLabel(A, A.pos + 1, !1);
3166
- if (u < 0) return !1;
3167
- if (i = u + 1, i < f && A.src.charCodeAt(i) === 40) {
3168
- for (i++; i < f && (n = A.src.charCodeAt(i), !(!b(n) && n !== 10)); i++)
3169
- ;
3170
- if (i >= f) return !1;
3171
- for (l = i, s = A.md.helpers.parseLinkDestination(A.src, i, A.posMax), s.ok && (a = A.md.normalizeLink(s.str), A.md.validateLink(a) ? i = s.pos : a = ""), l = i; i < f && (n = A.src.charCodeAt(i), !(!b(n) && n !== 10)); i++)
3172
- ;
3173
- if (s = A.md.helpers.parseLinkTitle(A.src, i, A.posMax), i < f && l !== i && s.ok)
3174
- for (c = s.str, i = s.pos; i < f && (n = A.src.charCodeAt(i), !(!b(n) && n !== 10)); i++)
3175
- ;
3176
- else c = "";
3177
- if (i >= f || A.src.charCodeAt(i) !== 41)
3178
- return A.pos = h, !1;
3179
- i++;
3180
- } else {
3181
- if (typeof A.env.references > "u") return !1;
3182
- if (i < f && A.src.charCodeAt(i) === 91 ? (l = i + 1, i = A.md.helpers.parseLinkLabel(A, i), i >= 0 ? t = A.src.slice(l, i++) : i = u + 1) : i = u + 1, t || (t = A.src.slice(g, u)), t = iA(t), o = A.env.references[t], !o)
3183
- return A.pos = h, !1;
3184
- a = o.href, c = o.title;
3185
- }
3186
- if (!e) {
3187
- r = A.src.slice(g, u);
3188
- const B = [];
3189
- A.md.inline.parse(r, A.md, A.env, B);
3190
- const m = A.push("image", "img", 0), I = [["src", a], ["alt", ""]];
3191
- if (m.attrs = I, m.children = B, m.content = r, c && I.push(["title", c]), t) {
3192
- const D = /* @__PURE__ */ Object.create(null);
3193
- D.label = t, m.meta = D;
3194
- }
3195
- }
3196
- return A.pos = i, A.posMax = f, !0;
3197
- }
3198
- var xt = /^([a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/, Kt = /^([a-zA-Z][a-zA-Z0-9+.-]{1,31}):([^<>\x00-\x20]*)$/;
3199
- function Gt(A, e) {
3200
- let n = A.pos;
3201
- if (A.src.charCodeAt(n) !== 60) return !1;
3202
- const r = A.pos, t = A.posMax;
3203
- for (; ; ) {
3204
- if (++n >= t) return !1;
3205
- const o = A.src.charCodeAt(n);
3206
- if (o === 60) return !1;
3207
- if (o === 62) break;
3208
- }
3209
- const i = A.src.slice(r + 1, n);
3210
- if (Kt.test(i)) {
3211
- const o = A.md.normalizeLink(i);
3212
- if (!A.md.validateLink(o)) return !1;
3213
- if (!e) {
3214
- const s = A.push("link_open", "a", 1);
3215
- s.attrs = [["href", o]], s.markup = "autolink", s.info = "auto";
3216
- const c = A.push("text", "", 0);
3217
- c.content = A.md.normalizeLinkText(i);
3218
- const l = A.push("link_close", "a", -1);
3219
- l.markup = "autolink", l.info = "auto";
3220
- }
3221
- return A.pos += i.length + 2, !0;
3222
- }
3223
- if (xt.test(i)) {
3224
- const o = A.md.normalizeLink(`mailto:${i}`);
3225
- if (!A.md.validateLink(o)) return !1;
3226
- if (!e) {
3227
- const s = A.push("link_open", "a", 1);
3228
- s.attrs = [["href", o]], s.markup = "autolink", s.info = "auto";
3229
- const c = A.push("text", "", 0);
3230
- c.content = A.md.normalizeLinkText(i);
3231
- const l = A.push("link_close", "a", -1);
3232
- l.markup = "autolink", l.info = "auto";
3233
- }
3234
- return A.pos += i.length + 2, !0;
3235
- }
3236
- return !1;
3237
- }
3238
- function Wt(A) {
3239
- return /^<a[>\s]/i.test(A);
3240
- }
3241
- function Yt(A) {
3242
- return /^<\/a\s*>/i.test(A);
3243
- }
3244
- function Zt(A) {
3245
- const e = A | 32;
3246
- return e >= 97 && e <= 122;
3247
- }
3248
- function Jt(A, e) {
3249
- if (!A.md.options.html) return !1;
3250
- const n = A.posMax, r = A.pos;
3251
- if (A.src.charCodeAt(r) !== 60 || r + 2 >= n) return !1;
3252
- const t = A.src.charCodeAt(r + 1);
3253
- if (t !== 33 && t !== 63 && t !== 47 && !Zt(t)) return !1;
3254
- const i = A.src.slice(r).match(lt);
3255
- if (!i) return !1;
3256
- if (!e) {
3257
- const o = A.push("html_inline", "", 0);
3258
- o.content = i[0], Wt(o.content) && A.linkLevel++, Yt(o.content) && A.linkLevel--;
3259
- }
3260
- return A.pos += i[0].length, !0;
3261
- }
3262
- var Rt = /^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i, St = /^&([a-z][a-z0-9]{1,31});/i;
3263
- function Ht(A, e) {
3264
- const n = A.pos, r = A.posMax;
3265
- if (A.src.charCodeAt(n) !== 38 || n + 1 >= r) return !1;
3266
- if (A.src.charCodeAt(n + 1) === 35) {
3267
- const t = A.src.slice(n).match(Rt);
3268
- if (t) {
3269
- if (!e) {
3270
- const i = t[1][0].toLowerCase() === "x" ? parseInt(t[1].slice(1), 16) : parseInt(t[1], 10), o = A.push("text_special", "", 0);
3271
- o.content = IA(i) ? j(i) : j(65533), o.markup = t[0], o.info = "entity";
3272
- }
3273
- return A.pos += t[0].length, !0;
3274
- }
3275
- } else {
3276
- const t = A.src.slice(n).match(St);
3277
- if (t) {
3278
- const i = VA(t[0]);
3279
- if (i !== t[0]) {
3280
- if (!e) {
3281
- const o = A.push("text_special", "", 0);
3282
- o.content = i, o.markup = t[0], o.info = "entity";
3283
- }
3284
- return A.pos += t[0].length, !0;
3285
- }
3286
- }
3287
- }
3288
- return !1;
3289
- }
3290
- function UA(A) {
3291
- const e = {}, n = A.length;
3292
- if (!n) return;
3293
- let r = 0, t = -2;
3294
- const i = [];
3295
- for (let o = 0; o < n; o++) {
3296
- const s = A[o];
3297
- if (i.push(0), (A[r].marker !== s.marker || t !== s.token - 1) && (r = o), t = s.token, s.length = s.length || 0, !s.close) continue;
3298
- e.hasOwnProperty(s.marker) || (e[s.marker] = [
3299
- -1,
3300
- -1,
3301
- -1,
3302
- -1,
3303
- -1,
3304
- -1
3305
- ]);
3306
- const c = e[s.marker][(s.open ? 3 : 0) + s.length % 3];
3307
- let l = r - i[r] - 1, a = l;
3308
- for (; l > c; l -= i[l] + 1) {
3309
- const h = A[l];
3310
- if (h.marker === s.marker && h.open && h.end < 0) {
3311
- let f = !1;
3312
- if ((h.close || s.open) && (h.length + s.length) % 3 === 0 && (h.length % 3 !== 0 || s.length % 3 !== 0) && (f = !0), !f) {
3313
- const g = l > 0 && !A[l - 1].open ? i[l - 1] + 1 : 0;
3314
- i[o] = o - l + g, i[l] = g, s.open = !1, h.end = o, h.close = !1, a = -1, t = -2;
3315
- break;
3316
- }
3317
- }
3318
- }
3319
- a !== -1 && (e[s.marker][(s.open ? 3 : 0) + (s.length || 0) % 3] = a);
3320
- }
3321
- }
3322
- function Mt(A) {
3323
- const e = A.tokens_meta, n = A.tokens_meta.length;
3324
- UA(A.delimiters);
3325
- for (let t = 0; t < n; t++) {
3326
- var r;
3327
- const i = (r = e[t]) === null || r === void 0 ? void 0 : r.delimiters;
3328
- i && UA(i);
3329
- }
3330
- }
3331
- function vt(A) {
3332
- let e, n, r = 0;
3333
- const t = A.tokens, i = A.tokens.length;
3334
- for (e = n = 0; e < i; e++)
3335
- t[e].nesting < 0 && r--, t[e].level = r, t[e].nesting > 0 && r++, t[e].type === "text" && e + 1 < i && t[e + 1].type === "text" ? t[e + 1].content = t[e].content + t[e + 1].content : (e !== n && (t[n] = t[e]), n++);
3336
- e !== n && (t.length = n);
3337
- }
3338
- var gA = [
3339
- ["text", Ct],
3340
- ["linkify", Dt],
3341
- ["newline", It],
3342
- ["escape", Ft],
3343
- ["backticks", kt],
3344
- ["strikethrough", pe.tokenize],
3345
- ["emphasis", me.tokenize],
3346
- ["link", yt],
3347
- ["image", Qt],
3348
- ["autolink", Gt],
3349
- ["html_inline", Jt],
3350
- ["entity", Ht]
3351
- ], fA = [
3352
- ["balance_pairs", Mt],
3353
- ["strikethrough", pe.postProcess],
3354
- ["emphasis", me.postProcess],
3355
- ["fragments_join", vt]
3356
- ], De = class {
3357
- constructor() {
3358
- C(
3359
- this,
3360
- /**
3361
- * {@link Ruler} instance. Keep configuration of inline rules.
3362
- */
3363
- "ruler",
3364
- new $()
3365
- ), C(
3366
- this,
3367
- /**
3368
- * {@link Ruler} instance. Second ruler used for post-processing
3369
- * (e.g. in emphasis-like rules).
3370
- */
3371
- "ruler2",
3372
- new $()
3373
- ), C(this, "State", Ce);
3374
- for (let A = 0; A < gA.length; A++) this.ruler.push(gA[A][0], gA[A][1]);
3375
- for (let A = 0; A < fA.length; A++) this.ruler2.push(fA[A][0], fA[A][1]);
3376
- }
3377
- skipToken(A) {
3378
- const e = A.pos, n = this.ruler.getRules(""), r = n.length, t = A.md.options.maxNesting, i = A.cache;
3379
- if (typeof i[e] < "u") {
3380
- A.pos = i[e];
3381
- return;
3382
- }
3383
- let o = !1;
3384
- if (A.level < t) {
3385
- for (let s = 0; s < r; s++)
3386
- if (A.level++, o = n[s](A, !0), A.level--, o) {
3387
- if (e >= A.pos) throw new Error("inline rule didn't increment state.pos");
3388
- break;
3389
- }
3390
- } else A.pos = A.posMax;
3391
- o || A.pos++, i[e] = A.pos;
3392
- }
3393
- tokenize(A) {
3394
- const e = this.ruler.getRules(""), n = e.length, r = A.posMax, t = A.md.options.maxNesting;
3395
- for (; A.pos < r; ) {
3396
- const i = A.pos;
3397
- let o = !1;
3398
- if (A.level < t) {
3399
- for (let s = 0; s < n; s++)
3400
- if (o = e[s](A, !1), o) {
3401
- if (i >= A.pos) throw new Error("inline rule didn't increment state.pos");
3402
- break;
3403
- }
3404
- }
3405
- if (o) {
3406
- if (A.pos >= r) break;
3407
- continue;
3408
- }
3409
- A.pending += A.src[A.pos++];
3410
- }
3411
- A.pending && A.pushPending();
3412
- }
3413
- /**
3414
- * Process input string and push inline tokens into `outTokens`
3415
- */
3416
- parse(A, e, n, r) {
3417
- const t = new this.State(A, e, n, r);
3418
- this.tokenize(t);
3419
- const i = this.ruler2.getRules(""), o = i.length;
3420
- for (let s = 0; s < o; s++) i[s](t);
3421
- }
3422
- }, Nt = {
3423
- default: {
3424
- options: {
3425
- html: !1,
3426
- xhtmlOut: !1,
3427
- breaks: !1,
3428
- langPrefix: "language-",
3429
- linkify: !1,
3430
- typographer: !1,
3431
- quotes: "“”‘’",
3432
- highlight: null,
3433
- maxNesting: 100
3434
- },
3435
- components: {
3436
- core: {},
3437
- block: {},
3438
- inline: {}
3439
- }
3440
- },
3441
- zero: {
3442
- options: {
3443
- html: !1,
3444
- xhtmlOut: !1,
3445
- breaks: !1,
3446
- langPrefix: "language-",
3447
- linkify: !1,
3448
- typographer: !1,
3449
- quotes: "“”‘’",
3450
- highlight: null,
3451
- maxNesting: 20
3452
- },
3453
- components: {
3454
- core: { rules: [
3455
- "normalize",
3456
- "block",
3457
- "strip_references",
3458
- "inline",
3459
- "text_join"
3460
- ] },
3461
- block: { rules: ["paragraph"] },
3462
- inline: {
3463
- rules: ["text"],
3464
- rules2: ["balance_pairs", "fragments_join"]
3465
- }
3466
- }
3467
- },
3468
- commonmark: {
3469
- options: {
3470
- html: !0,
3471
- xhtmlOut: !0,
3472
- breaks: !1,
3473
- langPrefix: "language-",
3474
- linkify: !1,
3475
- typographer: !1,
3476
- quotes: "“”‘’",
3477
- highlight: null,
3478
- maxNesting: 20
3479
- },
3480
- components: {
3481
- core: { rules: [
3482
- "normalize",
3483
- "block",
3484
- "strip_references",
3485
- "inline",
3486
- "text_join"
3487
- ] },
3488
- block: { rules: [
3489
- "blockquote",
3490
- "code",
3491
- "fence",
3492
- "heading",
3493
- "hr",
3494
- "html_block",
3495
- "lheading",
3496
- "list",
3497
- "reference",
3498
- "paragraph"
3499
- ] },
3500
- inline: {
3501
- rules: [
3502
- "autolink",
3503
- "backticks",
3504
- "emphasis",
3505
- "entity",
3506
- "escape",
3507
- "html_inline",
3508
- "image",
3509
- "link",
3510
- "newline",
3511
- "text"
3512
- ],
3513
- rules2: [
3514
- "balance_pairs",
3515
- "emphasis",
3516
- "fragments_join"
3517
- ]
3518
- }
3519
- }
3520
- }
3521
- }, Ut = /^(vbscript|javascript|file|data):/, Ot = /^data:image\/(gif|png|jpeg|webp);/, OA = [
3522
- "http:",
3523
- "https:",
3524
- "mailto:"
3525
- ], Y = class {
3526
- /**
3527
- * Link validation function. CommonMark allows too much in links. By default
3528
- * we disable `javascript:`, `vbscript:`, `file:` schemas, and almost all `data:...` schemas
3529
- * except some embedded image types.
3530
- *
3531
- * You can change this behaviour:
3532
- *
3533
- * @example
3534
- * ```javascript
3535
- * import MarkdownIt from 'markdown-it'
3536
- * const md = new MarkdownIt()
3537
- *
3538
- * // enable everything
3539
- * md.validateLink = function () { return true; }
3540
- * ```
3541
- */
3542
- validateLink(A) {
3543
- const e = A.trim().toLowerCase();
3544
- return Ut.test(e) ? Ot.test(e) : !0;
3545
- }
3546
- /**
3547
- * Function used to encode link url to a machine-readable format,
3548
- * which includes url-encoding, punycode, etc.
3549
- */
3550
- normalizeLink(A) {
3551
- const e = CA(A, !0);
3552
- if (e.hostname && (!e.protocol || OA.indexOf(e.protocol) >= 0))
3553
- try {
3554
- e.hostname = WA.toASCII(e.hostname);
3555
- } catch {
3556
- }
3557
- return e.auth && (e.auth = Z(e.auth)), e.hostname && (e.hostname = Z(e.hostname)), e.pathname && (e.pathname = Z(e.pathname)), e.search && (e.search = Z(e.search)), e.hash && (e.hash = Z(e.hash)), dA(e);
3558
- }
3559
- /**
3560
- * Function used to decode link url to a human-readable format`
3561
- */
3562
- normalizeLinkText(A) {
3563
- const e = CA(A, !0);
3564
- if (e.hostname && (!e.protocol || OA.indexOf(e.protocol) >= 0))
3565
- try {
3566
- e.hostname = WA.toUnicode(e.hostname);
3567
- } catch {
3568
- }
3569
- return O(dA(e), O.defaultChars + "%");
3570
- }
3571
- constructor(...A) {
3572
- C(
3573
- this,
3574
- /**
3575
- * Instance of {@link ParserInline}. You may need it to add new rules when
3576
- * writing plugins. For simple rules control use {@link MarkdownIt.disable}
3577
- * and {@link MarkdownIt.enable}.
3578
- */
3579
- "inline",
3580
- new De()
3581
- ), C(
3582
- this,
3583
- /**
3584
- * Instance of {@link ParserBlock}. You may need it to add new rules when
3585
- * writing plugins. For simple rules control use {@link MarkdownIt.disable}
3586
- * and {@link MarkdownIt.enable}.
3587
- */
3588
- "block",
3589
- new de()
3590
- ), C(
3591
- this,
3592
- /**
3593
- * Instance of {@link ParserCore} chain executor. You may need it to add new
3594
- * rules when writing plugins. For simple rules control use
3595
- * {@link MarkdownIt.disable} and {@link MarkdownIt.enable}.
3596
- */
3597
- "core",
3598
- new he()
3599
- ), C(
3600
- this,
3601
- /**
3602
- * Instance of {@link Renderer}. Use it to modify output look. Or to add rendering
3603
- * rules for new token types, generated by plugins.
3604
- *
3605
- * See {@link Renderer} docs and
3606
- * [source code](https://github.com/markdown-it/markdown-it/blob/master/src/renderer.ts).
3607
- *
3608
- * @example
3609
- * ```javascript
3610
- * import MarkdownIt from 'markdown-it'
3611
- * const md = new MarkdownIt()
3612
- *
3613
- * function myToken(tokens, idx, options, env, self) {
3614
- * //...
3615
- * return result;
3616
- * };
3617
- *
3618
- * md.renderer.rules['my_token'] = myToken
3619
- * ```
3620
- */
3621
- "renderer",
3622
- new ce()
3623
- ), C(
3624
- this,
3625
- /**
3626
- * [linkify-it](https://github.com/markdown-it/linkify-it) instance.
3627
- * Used by [linkify](https://github.com/markdown-it/markdown-it/blob/master/src/rules_core/linkify.ts)
3628
- * rule.
3629
- */
3630
- "linkify",
3631
- new $e()
3632
- ), C(
3633
- this,
3634
- /**
3635
- * Assorted utility functions, useful to write plugins. See details
3636
- * [here](https://github.com/markdown-it/markdown-it/blob/master/src/common/utils.ts).
3637
- */
3638
- "utils",
3639
- an
3640
- ), C(
3641
- this,
3642
- /**
3643
- * Link components parser functions, useful to write plugins. See details
3644
- * [here](https://github.com/markdown-it/markdown-it/blob/master/src/helpers).
3645
- */
3646
- "helpers",
3647
- Object.assign({}, yn)
3648
- );
3649
- const [e, n] = A;
3650
- typeof e == "string" ? (this.configure(e), n && this.set(n)) : (this.configure("default"), this.set(e || {}));
3651
- }
3652
- /**
3653
- * Set parser options (in the same format as in constructor). Probably, you
3654
- * will never need it, but you can change options after constructor call.
3655
- *
3656
- * __Note:__ To achieve the best possible performance, don't modify a
3657
- * `markdown-it` instance options on the fly. If you need multiple configurations
3658
- * it's best to create multiple instances and initialize each with separate
3659
- * config.
3660
- *
3661
- * @example
3662
- * ```javascript
3663
- * import MarkdownIt from 'markdown-it'
3664
- *
3665
- * const md = new MarkdownIt()
3666
- * .set({ html: true, breaks: true })
3667
- * .set({ typographer: true })
3668
- * ```
3669
- */
3670
- set(A) {
3671
- return Object.assign(this.options, A), this;
3672
- }
3673
- /**
3674
- * Batch load of all options and compenent settings. This is internal method,
3675
- * and you probably will not need it. But if you will - see available presets
3676
- * and data structure [here](https://github.com/markdown-it/markdown-it/tree/master/src/presets)
3677
- *
3678
- * We strongly recommend to use presets instead of direct config loads. That
3679
- * will give better compatibility with next versions.
3680
- */
3681
- configure(A) {
3682
- let e;
3683
- if (typeof A == "string") {
3684
- const t = A;
3685
- if (e = Nt[t], !e) throw new Error(`Wrong 'markdown-it' preset "${t}", check name`);
3686
- } else e = A;
3687
- if (!e) throw new Error("Wrong `markdown-it` preset, can't be empty");
3688
- e.options && (this.options = { ...e.options });
3689
- const n = e.components;
3690
- if (n) {
3691
- var r;
3692
- [
3693
- "core",
3694
- "block",
3695
- "inline"
3696
- ].forEach((i) => {
3697
- var o;
3698
- const s = (o = n[i]) === null || o === void 0 ? void 0 : o.rules;
3699
- s && this[i].ruler.enableOnly(s);
3700
- });
3701
- const t = (r = n.inline) === null || r === void 0 ? void 0 : r.rules2;
3702
- t && this.inline.ruler2.enableOnly(t);
3703
- }
3704
- return this;
3705
- }
3706
- /**
3707
- * Enable list or rules. It will automatically find appropriate components,
3708
- * containing rules with given names. If rule not found, and `ignoreInvalid`
3709
- * not set - throws exception.
3710
- *
3711
- * @example
3712
- * ```javascript
3713
- * import MarkdownIt from 'markdown-it'
3714
- *
3715
- * const md = new MarkdownIt()
3716
- * .enable(['sub', 'sup'])
3717
- * .disable('smartquotes')
3718
- * ```
3719
- */
3720
- enable(A, e = !1) {
3721
- let n = [];
3722
- Array.isArray(A) || (A = [A]), [
3723
- "core",
3724
- "block",
3725
- "inline"
3726
- ].forEach((t) => {
3727
- n = n.concat(this[t].ruler.enable(A, !0));
3728
- }), n = n.concat(this.inline.ruler2.enable(A, !0));
3729
- const r = A.filter((t) => n.indexOf(t) < 0);
3730
- if (r.length && !e) throw new Error(`MarkdownIt. Failed to enable unknown rule(s): ${r}`);
3731
- return this;
3732
- }
3733
- /**
3734
- * The same as {@link MarkdownIt.enable}, but turn specified rules off.
3735
- */
3736
- disable(A, e = !1) {
3737
- let n = [];
3738
- Array.isArray(A) || (A = [A]), [
3739
- "core",
3740
- "block",
3741
- "inline"
3742
- ].forEach((t) => {
3743
- n = n.concat(this[t].ruler.disable(A, !0));
3744
- }), n = n.concat(this.inline.ruler2.disable(A, !0));
3745
- const r = A.filter((t) => n.indexOf(t) < 0);
3746
- if (r.length && !e) throw new Error(`MarkdownIt. Failed to disable unknown rule(s): ${r}`);
3747
- return this;
3748
- }
3749
- /**
3750
- * Load specified plugin with given params into current parser instance.
3751
- * It's just a sugar to call `plugin(md, params)` with curring.
3752
- *
3753
- * @example
3754
- * ```javascript
3755
- * import MarkdownIt from 'markdown-it'
3756
- * import iterator from 'markdown-it-for-inline'
3757
- *
3758
- * const md = new MarkdownIt()
3759
- * .use(iterator, 'foo_replace', 'text', function (tokens, idx) {
3760
- * tokens[idx].content = tokens[idx].content.replace(/foo/g, 'bar')
3761
- * })
3762
- * ```
3763
- */
3764
- use(A, ...e) {
3765
- return A.apply(A, [this, ...e]), this;
3766
- }
3767
- /**
3768
- * Parse input string and return list of block tokens (special token type
3769
- * "inline" will contain list of inline tokens). You should not call this
3770
- * method directly, until you write custom renderer (for example, to produce
3771
- * AST).
3772
- *
3773
- * `env` is used to pass data between "distributed" rules and return additional
3774
- * metadata like reference info, needed for the renderer. It also can be used to
3775
- * inject data in specific cases. Usually, you will be ok to pass `{}`,
3776
- * and then pass updated object to renderer.
3777
- */
3778
- parse(A, e) {
3779
- if (typeof A != "string") throw new Error("Input data should be a String");
3780
- const n = new this.core.State(A, this, e);
3781
- return this.core.process(n), n.tokens;
3782
- }
3783
- /**
3784
- * Render markdown string into html. It does all magic for you :).
3785
- *
3786
- * `env` can be used to inject additional metadata (`{}` by default).
3787
- * But you will not need it with high probability. See also comment
3788
- * in {@link MarkdownIt.parse}.
3789
- */
3790
- render(A, e = {}) {
3791
- return this.renderer.render(this.parse(A, e), this.options, e);
3792
- }
3793
- /**
3794
- * The same as {@link MarkdownIt.parse} but skip all block rules. It returns
3795
- * the block tokens list with the single `inline` element, containing parsed
3796
- * inline tokens in `children` property. Also updates `env` object.
3797
- */
3798
- parseInline(A, e) {
3799
- const n = new this.core.State(A, this, e);
3800
- return n.inlineMode = !0, this.core.process(n), n.tokens;
3801
- }
3802
- /**
3803
- * Similar to {@link MarkdownIt.render} but for single paragraph content.
3804
- * Result will NOT be wrapped into `<p>` tags.
3805
- */
3806
- renderInline(A, e = {}) {
3807
- return this.renderer.render(this.parseInline(A, e), this.options, e);
3808
- }
3809
- };
3810
- C(Y, "Token", v);
3811
- C(Y, "Ruler", $);
3812
- C(Y, "Renderer", ce);
3813
- C(Y, "ParserCore", he);
3814
- C(Y, "StateCore", le);
3815
- C(Y, "ParserBlock", de);
3816
- C(Y, "StateBlock", ae);
3817
- C(Y, "ParserInline", De);
3818
- C(Y, "StateInline", Ce);
3819
- var Lt = re(Y);
3820
- export {
3821
- Lt as default
3822
- };