@readme/markdown 13.7.0 → 13.7.2
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.
- package/components/TailwindStyle/index.tsx +14 -4
- package/dist/index.d.ts +1 -0
- package/dist/lib/mdxish.d.ts +1 -1
- package/dist/main.js +1949 -1023
- package/dist/main.node.js +1949 -1023
- package/dist/main.node.js.map +1 -1
- package/dist/processor/compile/anchor.d.ts +3 -0
- package/dist/processor/transform/mdxish/magic-blocks/types.d.ts +4 -0
- package/dist/processor/transform/mdxish/mdxish-self-closing-blocks.d.ts +21 -0
- package/dist/processor/transform/mdxish/mdxish-tables-to-jsx.d.ts +11 -0
- package/enums.ts +20 -0
- package/package.json +13 -11
- package/types.d.ts +281 -0
package/dist/main.node.js
CHANGED
|
@@ -19020,6 +19020,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
19020
19020
|
__webpack_require__.d(__webpack_exports__, {
|
|
19021
19021
|
Components: () => (/* reexport */ components_namespaceObject),
|
|
19022
19022
|
FLOW_TYPES: () => (/* reexport */ FLOW_TYPES),
|
|
19023
|
+
NodeTypes: () => (/* reexport */ NodeTypes),
|
|
19023
19024
|
Owlmoji: () => (/* reexport */ Owlmoji),
|
|
19024
19025
|
compile: () => (/* reexport */ lib_compile),
|
|
19025
19026
|
exports: () => (/* reexport */ lib_exports),
|
|
@@ -24904,10 +24905,19 @@ const TailwindStyle = ({ children, darkModeDataAttribute }) => {
|
|
|
24904
24905
|
records.forEach(record => {
|
|
24905
24906
|
if (record.type === 'childList') {
|
|
24906
24907
|
record.addedNodes.forEach(node => {
|
|
24907
|
-
if (!(node instanceof HTMLElement)
|
|
24908
|
+
if (!(node instanceof HTMLElement))
|
|
24908
24909
|
return;
|
|
24909
|
-
|
|
24910
|
-
|
|
24910
|
+
// Check the added node itself
|
|
24911
|
+
if (node.classList.contains(tailwindPrefix)) {
|
|
24912
|
+
traverse(node, addClasses);
|
|
24913
|
+
shouldUpdate = true;
|
|
24914
|
+
}
|
|
24915
|
+
// Also check descendants — React may insert a parent node
|
|
24916
|
+
// whose children contain TailwindRoot elements
|
|
24917
|
+
node.querySelectorAll(`.${tailwindPrefix}`).forEach(child => {
|
|
24918
|
+
traverse(child, addClasses);
|
|
24919
|
+
shouldUpdate = true;
|
|
24920
|
+
});
|
|
24911
24921
|
});
|
|
24912
24922
|
}
|
|
24913
24923
|
else if (record.type === 'attributes') {
|
|
@@ -63747,7 +63757,6 @@ var CODE_POINTS;
|
|
|
63747
63757
|
CODE_POINTS[CODE_POINTS["SPACE"] = 32] = "SPACE";
|
|
63748
63758
|
CODE_POINTS[CODE_POINTS["EXCLAMATION_MARK"] = 33] = "EXCLAMATION_MARK";
|
|
63749
63759
|
CODE_POINTS[CODE_POINTS["QUOTATION_MARK"] = 34] = "QUOTATION_MARK";
|
|
63750
|
-
CODE_POINTS[CODE_POINTS["NUMBER_SIGN"] = 35] = "NUMBER_SIGN";
|
|
63751
63760
|
CODE_POINTS[CODE_POINTS["AMPERSAND"] = 38] = "AMPERSAND";
|
|
63752
63761
|
CODE_POINTS[CODE_POINTS["APOSTROPHE"] = 39] = "APOSTROPHE";
|
|
63753
63762
|
CODE_POINTS[CODE_POINTS["HYPHEN_MINUS"] = 45] = "HYPHEN_MINUS";
|
|
@@ -63760,17 +63769,12 @@ var CODE_POINTS;
|
|
|
63760
63769
|
CODE_POINTS[CODE_POINTS["GREATER_THAN_SIGN"] = 62] = "GREATER_THAN_SIGN";
|
|
63761
63770
|
CODE_POINTS[CODE_POINTS["QUESTION_MARK"] = 63] = "QUESTION_MARK";
|
|
63762
63771
|
CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_A"] = 65] = "LATIN_CAPITAL_A";
|
|
63763
|
-
CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_F"] = 70] = "LATIN_CAPITAL_F";
|
|
63764
|
-
CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_X"] = 88] = "LATIN_CAPITAL_X";
|
|
63765
63772
|
CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_Z"] = 90] = "LATIN_CAPITAL_Z";
|
|
63766
63773
|
CODE_POINTS[CODE_POINTS["RIGHT_SQUARE_BRACKET"] = 93] = "RIGHT_SQUARE_BRACKET";
|
|
63767
63774
|
CODE_POINTS[CODE_POINTS["GRAVE_ACCENT"] = 96] = "GRAVE_ACCENT";
|
|
63768
63775
|
CODE_POINTS[CODE_POINTS["LATIN_SMALL_A"] = 97] = "LATIN_SMALL_A";
|
|
63769
|
-
CODE_POINTS[CODE_POINTS["LATIN_SMALL_F"] = 102] = "LATIN_SMALL_F";
|
|
63770
|
-
CODE_POINTS[CODE_POINTS["LATIN_SMALL_X"] = 120] = "LATIN_SMALL_X";
|
|
63771
63776
|
CODE_POINTS[CODE_POINTS["LATIN_SMALL_Z"] = 122] = "LATIN_SMALL_Z";
|
|
63772
|
-
|
|
63773
|
-
})(CODE_POINTS = CODE_POINTS || (CODE_POINTS = {}));
|
|
63777
|
+
})(CODE_POINTS || (CODE_POINTS = {}));
|
|
63774
63778
|
const SEQUENCES = {
|
|
63775
63779
|
DASH_DASH: '--',
|
|
63776
63780
|
CDATA_START: '[CDATA[',
|
|
@@ -63797,7 +63801,7 @@ function isControlCodePoint(cp) {
|
|
|
63797
63801
|
function isUndefinedCodePoint(cp) {
|
|
63798
63802
|
return (cp >= 64976 && cp <= 65007) || UNDEFINED_CODE_POINTS.has(cp);
|
|
63799
63803
|
}
|
|
63800
|
-
|
|
63804
|
+
|
|
63801
63805
|
;// ./node_modules/parse5/dist/common/error-codes.js
|
|
63802
63806
|
var ERR;
|
|
63803
63807
|
(function (ERR) {
|
|
@@ -63861,8 +63865,8 @@ var ERR;
|
|
|
63861
63865
|
ERR["misplacedStartTagForHeadElement"] = "misplaced-start-tag-for-head-element";
|
|
63862
63866
|
ERR["nestedNoscriptInHead"] = "nested-noscript-in-head";
|
|
63863
63867
|
ERR["eofInElementThatCanContainOnlyText"] = "eof-in-element-that-can-contain-only-text";
|
|
63864
|
-
})(ERR
|
|
63865
|
-
|
|
63868
|
+
})(ERR || (ERR = {}));
|
|
63869
|
+
|
|
63866
63870
|
;// ./node_modules/parse5/dist/tokenizer/preprocessor.js
|
|
63867
63871
|
|
|
63868
63872
|
|
|
@@ -63897,22 +63901,24 @@ class Preprocessor {
|
|
|
63897
63901
|
get offset() {
|
|
63898
63902
|
return this.droppedBufferSize + this.pos;
|
|
63899
63903
|
}
|
|
63900
|
-
getError(code) {
|
|
63904
|
+
getError(code, cpOffset) {
|
|
63901
63905
|
const { line, col, offset } = this;
|
|
63906
|
+
const startCol = col + cpOffset;
|
|
63907
|
+
const startOffset = offset + cpOffset;
|
|
63902
63908
|
return {
|
|
63903
63909
|
code,
|
|
63904
63910
|
startLine: line,
|
|
63905
63911
|
endLine: line,
|
|
63906
|
-
startCol
|
|
63907
|
-
endCol:
|
|
63908
|
-
startOffset
|
|
63909
|
-
endOffset:
|
|
63912
|
+
startCol,
|
|
63913
|
+
endCol: startCol,
|
|
63914
|
+
startOffset,
|
|
63915
|
+
endOffset: startOffset,
|
|
63910
63916
|
};
|
|
63911
63917
|
}
|
|
63912
63918
|
_err(code) {
|
|
63913
63919
|
if (this.handler.onParseError && this.lastErrOffset !== this.offset) {
|
|
63914
63920
|
this.lastErrOffset = this.offset;
|
|
63915
|
-
this.handler.onParseError(this.getError(code));
|
|
63921
|
+
this.handler.onParseError(this.getError(code, 0));
|
|
63916
63922
|
}
|
|
63917
63923
|
}
|
|
63918
63924
|
_addGap() {
|
|
@@ -64058,7 +64064,7 @@ class Preprocessor {
|
|
|
64058
64064
|
this.isEol = false;
|
|
64059
64065
|
}
|
|
64060
64066
|
}
|
|
64061
|
-
|
|
64067
|
+
|
|
64062
64068
|
;// ./node_modules/parse5/dist/common/token.js
|
|
64063
64069
|
var token_TokenType;
|
|
64064
64070
|
(function (TokenType) {
|
|
@@ -64071,7 +64077,7 @@ var token_TokenType;
|
|
|
64071
64077
|
TokenType[TokenType["DOCTYPE"] = 6] = "DOCTYPE";
|
|
64072
64078
|
TokenType[TokenType["EOF"] = 7] = "EOF";
|
|
64073
64079
|
TokenType[TokenType["HIBERNATION"] = 8] = "HIBERNATION";
|
|
64074
|
-
})(token_TokenType
|
|
64080
|
+
})(token_TokenType || (token_TokenType = {}));
|
|
64075
64081
|
function getTokenAttr(token, attrName) {
|
|
64076
64082
|
for (let i = token.attrs.length - 1; i >= 0; i--) {
|
|
64077
64083
|
if (token.attrs[i].name === attrName) {
|
|
@@ -64080,24 +64086,24 @@ function getTokenAttr(token, attrName) {
|
|
|
64080
64086
|
}
|
|
64081
64087
|
return null;
|
|
64082
64088
|
}
|
|
64083
|
-
|
|
64084
|
-
;// ./node_modules/entities/
|
|
64089
|
+
|
|
64090
|
+
;// ./node_modules/parse5/node_modules/entities/dist/esm/generated/decode-data-html.js
|
|
64085
64091
|
// Generated using scripts/write-decode-map.ts
|
|
64086
|
-
|
|
64092
|
+
const decode_data_html_htmlDecodeTree = /* #__PURE__ */ new Uint16Array(
|
|
64087
64093
|
// prettier-ignore
|
|
64088
|
-
"\u1d41<\xd5\u0131\u028a\u049d\u057b\u05d0\u0675\u06de\u07a2\u07d6\u080f\u0a4a\u0a91\u0da1\u0e6d\u0f09\u0f26\u10ca\u1228\u12e1\u1415\u149d\u14c3\u14df\u1525\0\0\0\0\0\0\u156b\u16cd\u198d\u1c12\u1ddd\u1f7e\u2060\u21b0\u228d\u23c0\u23fb\u2442\u2824\u2912\u2d08\u2e48\u2fce\u3016\u32ba\u3639\u37ac\u38fe\u3a28\u3a71\u3ae0\u3b2e\u0800EMabcfglmnoprstu\\bfms\x7f\x84\x8b\x90\x95\x98\xa6\xb3\xb9\xc8\xcflig\u803b\xc6\u40c6P\u803b&\u4026cute\u803b\xc1\u40c1reve;\u4102\u0100iyx}rc\u803b\xc2\u40c2;\u4410r;\uc000\ud835\udd04rave\u803b\xc0\u40c0pha;\u4391acr;\u4100d;\u6a53\u0100gp\x9d\xa1on;\u4104f;\uc000\ud835\udd38plyFunction;\u6061ing\u803b\xc5\u40c5\u0100cs\xbe\xc3r;\uc000\ud835\udc9cign;\u6254ilde\u803b\xc3\u40c3ml\u803b\xc4\u40c4\u0400aceforsu\xe5\xfb\xfe\u0117\u011c\u0122\u0127\u012a\u0100cr\xea\xf2kslash;\u6216\u0176\xf6\xf8;\u6ae7ed;\u6306y;\u4411\u0180crt\u0105\u010b\u0114ause;\u6235noullis;\u612ca;\u4392r;\uc000\ud835\udd05pf;\uc000\ud835\udd39eve;\u42d8c\xf2\u0113mpeq;\u624e\u0700HOacdefhilorsu\u014d\u0151\u0156\u0180\u019e\u01a2\u01b5\u01b7\u01ba\u01dc\u0215\u0273\u0278\u027ecy;\u4427PY\u803b\xa9\u40a9\u0180cpy\u015d\u0162\u017aute;\u4106\u0100;i\u0167\u0168\u62d2talDifferentialD;\u6145leys;\u612d\u0200aeio\u0189\u018e\u0194\u0198ron;\u410cdil\u803b\xc7\u40c7rc;\u4108nint;\u6230ot;\u410a\u0100dn\u01a7\u01adilla;\u40b8terDot;\u40b7\xf2\u017fi;\u43a7rcle\u0200DMPT\u01c7\u01cb\u01d1\u01d6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01e2\u01f8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020foubleQuote;\u601duote;\u6019\u0200lnpu\u021e\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6a74\u0180git\u022f\u0236\u023aruent;\u6261nt;\u622fourIntegral;\u622e\u0100fr\u024c\u024e;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6a2fcr;\uc000\ud835\udc9ep\u0100;C\u0284\u0285\u62d3ap;\u624d\u0580DJSZacefios\u02a0\u02ac\u02b0\u02b4\u02b8\u02cb\u02d7\u02e1\u02e6\u0333\u048d\u0100;o\u0179\u02a5trahd;\u6911cy;\u4402cy;\u4405cy;\u440f\u0180grs\u02bf\u02c4\u02c7ger;\u6021r;\u61a1hv;\u6ae4\u0100ay\u02d0\u02d5ron;\u410e;\u4414l\u0100;t\u02dd\u02de\u6207a;\u4394r;\uc000\ud835\udd07\u0100af\u02eb\u0327\u0100cm\u02f0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031ccute;\u40b4o\u0174\u030b\u030d;\u42d9bleAcute;\u42ddrave;\u4060ilde;\u42dcond;\u62c4ferentialD;\u6146\u0470\u033d\0\0\0\u0342\u0354\0\u0405f;\uc000\ud835\udd3b\u0180;DE\u0348\u0349\u034d\u40a8ot;\u60dcqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03cf\u03e2\u03f8ontourIntegra\xec\u0239o\u0274\u0379\0\0\u037b\xbb\u0349nArrow;\u61d3\u0100eo\u0387\u03a4ft\u0180ART\u0390\u0396\u03a1rrow;\u61d0ightArrow;\u61d4e\xe5\u02cang\u0100LR\u03ab\u03c4eft\u0100AR\u03b3\u03b9rrow;\u67f8ightArrow;\u67faightArrow;\u67f9ight\u0100AT\u03d8\u03derrow;\u61d2ee;\u62a8p\u0241\u03e9\0\0\u03efrrow;\u61d1ownArrow;\u61d5erticalBar;\u6225n\u0300ABLRTa\u0412\u042a\u0430\u045e\u047f\u037crrow\u0180;BU\u041d\u041e\u0422\u6193ar;\u6913pArrow;\u61f5reve;\u4311eft\u02d2\u043a\0\u0446\0\u0450ightVector;\u6950eeVector;\u695eector\u0100;B\u0459\u045a\u61bdar;\u6956ight\u01d4\u0467\0\u0471eeVector;\u695fector\u0100;B\u047a\u047b\u61c1ar;\u6957ee\u0100;A\u0486\u0487\u62a4rrow;\u61a7\u0100ct\u0492\u0497r;\uc000\ud835\udc9frok;\u4110\u0800NTacdfglmopqstux\u04bd\u04c0\u04c4\u04cb\u04de\u04e2\u04e7\u04ee\u04f5\u0521\u052f\u0536\u0552\u055d\u0560\u0565G;\u414aH\u803b\xd0\u40d0cute\u803b\xc9\u40c9\u0180aiy\u04d2\u04d7\u04dcron;\u411arc\u803b\xca\u40ca;\u442dot;\u4116r;\uc000\ud835\udd08rave\u803b\xc8\u40c8ement;\u6208\u0100ap\u04fa\u04fecr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65fberySmallSquare;\u65ab\u0100gp\u0526\u052aon;\u4118f;\uc000\ud835\udd3csilon;\u4395u\u0100ai\u053c\u0549l\u0100;T\u0542\u0543\u6a75ilde;\u6242librium;\u61cc\u0100ci\u0557\u055ar;\u6130m;\u6a73a;\u4397ml\u803b\xcb\u40cb\u0100ip\u056a\u056fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058d\u05b2\u05ccy;\u4424r;\uc000\ud835\udd09lled\u0253\u0597\0\0\u05a3mallSquare;\u65fcerySmallSquare;\u65aa\u0370\u05ba\0\u05bf\0\0\u05c4f;\uc000\ud835\udd3dAll;\u6200riertrf;\u6131c\xf2\u05cb\u0600JTabcdfgorst\u05e8\u05ec\u05ef\u05fa\u0600\u0612\u0616\u061b\u061d\u0623\u066c\u0672cy;\u4403\u803b>\u403emma\u0100;d\u05f7\u05f8\u4393;\u43dcreve;\u411e\u0180eiy\u0607\u060c\u0610dil;\u4122rc;\u411c;\u4413ot;\u4120r;\uc000\ud835\udd0a;\u62d9pf;\uc000\ud835\udd3eeater\u0300EFGLST\u0635\u0644\u064e\u0656\u065b\u0666qual\u0100;L\u063e\u063f\u6265ess;\u62dbullEqual;\u6267reater;\u6aa2ess;\u6277lantEqual;\u6a7eilde;\u6273cr;\uc000\ud835\udca2;\u626b\u0400Aacfiosu\u0685\u068b\u0696\u069b\u069e\u06aa\u06be\u06caRDcy;\u442a\u0100ct\u0690\u0694ek;\u42c7;\u405eirc;\u4124r;\u610clbertSpace;\u610b\u01f0\u06af\0\u06b2f;\u610dizontalLine;\u6500\u0100ct\u06c3\u06c5\xf2\u06a9rok;\u4126mp\u0144\u06d0\u06d8ownHum\xf0\u012fqual;\u624f\u0700EJOacdfgmnostu\u06fa\u06fe\u0703\u0707\u070e\u071a\u071e\u0721\u0728\u0744\u0778\u078b\u078f\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803b\xcd\u40cd\u0100iy\u0713\u0718rc\u803b\xce\u40ce;\u4418ot;\u4130r;\u6111rave\u803b\xcc\u40cc\u0180;ap\u0720\u072f\u073f\u0100cg\u0734\u0737r;\u412ainaryI;\u6148lie\xf3\u03dd\u01f4\u0749\0\u0762\u0100;e\u074d\u074e\u622c\u0100gr\u0753\u0758ral;\u622bsection;\u62c2isible\u0100CT\u076c\u0772omma;\u6063imes;\u6062\u0180gpt\u077f\u0783\u0788on;\u412ef;\uc000\ud835\udd40a;\u4399cr;\u6110ilde;\u4128\u01eb\u079a\0\u079ecy;\u4406l\u803b\xcf\u40cf\u0280cfosu\u07ac\u07b7\u07bc\u07c2\u07d0\u0100iy\u07b1\u07b5rc;\u4134;\u4419r;\uc000\ud835\udd0dpf;\uc000\ud835\udd41\u01e3\u07c7\0\u07ccr;\uc000\ud835\udca5rcy;\u4408kcy;\u4404\u0380HJacfos\u07e4\u07e8\u07ec\u07f1\u07fd\u0802\u0808cy;\u4425cy;\u440cppa;\u439a\u0100ey\u07f6\u07fbdil;\u4136;\u441ar;\uc000\ud835\udd0epf;\uc000\ud835\udd42cr;\uc000\ud835\udca6\u0580JTaceflmost\u0825\u0829\u082c\u0850\u0863\u09b3\u09b8\u09c7\u09cd\u0a37\u0a47cy;\u4409\u803b<\u403c\u0280cmnpr\u0837\u083c\u0841\u0844\u084dute;\u4139bda;\u439bg;\u67ealacetrf;\u6112r;\u619e\u0180aey\u0857\u085c\u0861ron;\u413ddil;\u413b;\u441b\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087e\u08a9\u08b1\u08e0\u08e6\u08fc\u092f\u095b\u0390\u096a\u0100nr\u0883\u088fgleBracket;\u67e8row\u0180;BR\u0899\u089a\u089e\u6190ar;\u61e4ightArrow;\u61c6eiling;\u6308o\u01f5\u08b7\0\u08c3bleBracket;\u67e6n\u01d4\u08c8\0\u08d2eeVector;\u6961ector\u0100;B\u08db\u08dc\u61c3ar;\u6959loor;\u630aight\u0100AV\u08ef\u08f5rrow;\u6194ector;\u694e\u0100er\u0901\u0917e\u0180;AV\u0909\u090a\u0910\u62a3rrow;\u61a4ector;\u695aiangle\u0180;BE\u0924\u0925\u0929\u62b2ar;\u69cfqual;\u62b4p\u0180DTV\u0937\u0942\u094cownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61bfar;\u6958ector\u0100;B\u0965\u0966\u61bcar;\u6952ight\xe1\u039cs\u0300EFGLST\u097e\u098b\u0995\u099d\u09a2\u09adqualGreater;\u62daullEqual;\u6266reater;\u6276ess;\u6aa1lantEqual;\u6a7dilde;\u6272r;\uc000\ud835\udd0f\u0100;e\u09bd\u09be\u62d8ftarrow;\u61daidot;\u413f\u0180npw\u09d4\u0a16\u0a1bg\u0200LRlr\u09de\u09f7\u0a02\u0a10eft\u0100AR\u09e6\u09ecrrow;\u67f5ightArrow;\u67f7ightArrow;\u67f6eft\u0100ar\u03b3\u0a0aight\xe1\u03bfight\xe1\u03caf;\uc000\ud835\udd43er\u0100LR\u0a22\u0a2ceftArrow;\u6199ightArrow;\u6198\u0180cht\u0a3e\u0a40\u0a42\xf2\u084c;\u61b0rok;\u4141;\u626a\u0400acefiosu\u0a5a\u0a5d\u0a60\u0a77\u0a7c\u0a85\u0a8b\u0a8ep;\u6905y;\u441c\u0100dl\u0a65\u0a6fiumSpace;\u605flintrf;\u6133r;\uc000\ud835\udd10nusPlus;\u6213pf;\uc000\ud835\udd44c\xf2\u0a76;\u439c\u0480Jacefostu\u0aa3\u0aa7\u0aad\u0ac0\u0b14\u0b19\u0d91\u0d97\u0d9ecy;\u440acute;\u4143\u0180aey\u0ab4\u0ab9\u0aberon;\u4147dil;\u4145;\u441d\u0180gsw\u0ac7\u0af0\u0b0eative\u0180MTV\u0ad3\u0adf\u0ae8ediumSpace;\u600bhi\u0100cn\u0ae6\u0ad8\xeb\u0ad9eryThi\xee\u0ad9ted\u0100GL\u0af8\u0b06reaterGreate\xf2\u0673essLes\xf3\u0a48Line;\u400ar;\uc000\ud835\udd11\u0200Bnpt\u0b22\u0b28\u0b37\u0b3areak;\u6060BreakingSpace;\u40a0f;\u6115\u0680;CDEGHLNPRSTV\u0b55\u0b56\u0b6a\u0b7c\u0ba1\u0beb\u0c04\u0c5e\u0c84\u0ca6\u0cd8\u0d61\u0d85\u6aec\u0100ou\u0b5b\u0b64ngruent;\u6262pCap;\u626doubleVerticalBar;\u6226\u0180lqx\u0b83\u0b8a\u0b9bement;\u6209ual\u0100;T\u0b92\u0b93\u6260ilde;\uc000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0bb6\u0bb7\u0bbd\u0bc9\u0bd3\u0bd8\u0be5\u626fqual;\u6271ullEqual;\uc000\u2267\u0338reater;\uc000\u226b\u0338ess;\u6279lantEqual;\uc000\u2a7e\u0338ilde;\u6275ump\u0144\u0bf2\u0bfdownHump;\uc000\u224e\u0338qual;\uc000\u224f\u0338e\u0100fs\u0c0a\u0c27tTriangle\u0180;BE\u0c1a\u0c1b\u0c21\u62eaar;\uc000\u29cf\u0338qual;\u62ecs\u0300;EGLST\u0c35\u0c36\u0c3c\u0c44\u0c4b\u0c58\u626equal;\u6270reater;\u6278ess;\uc000\u226a\u0338lantEqual;\uc000\u2a7d\u0338ilde;\u6274ested\u0100GL\u0c68\u0c79reaterGreater;\uc000\u2aa2\u0338essLess;\uc000\u2aa1\u0338recedes\u0180;ES\u0c92\u0c93\u0c9b\u6280qual;\uc000\u2aaf\u0338lantEqual;\u62e0\u0100ei\u0cab\u0cb9verseElement;\u620cghtTriangle\u0180;BE\u0ccb\u0ccc\u0cd2\u62ebar;\uc000\u29d0\u0338qual;\u62ed\u0100qu\u0cdd\u0d0cuareSu\u0100bp\u0ce8\u0cf9set\u0100;E\u0cf0\u0cf3\uc000\u228f\u0338qual;\u62e2erset\u0100;E\u0d03\u0d06\uc000\u2290\u0338qual;\u62e3\u0180bcp\u0d13\u0d24\u0d4eset\u0100;E\u0d1b\u0d1e\uc000\u2282\u20d2qual;\u6288ceeds\u0200;EST\u0d32\u0d33\u0d3b\u0d46\u6281qual;\uc000\u2ab0\u0338lantEqual;\u62e1ilde;\uc000\u227f\u0338erset\u0100;E\u0d58\u0d5b\uc000\u2283\u20d2qual;\u6289ilde\u0200;EFT\u0d6e\u0d6f\u0d75\u0d7f\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uc000\ud835\udca9ilde\u803b\xd1\u40d1;\u439d\u0700Eacdfgmoprstuv\u0dbd\u0dc2\u0dc9\u0dd5\u0ddb\u0de0\u0de7\u0dfc\u0e02\u0e20\u0e22\u0e32\u0e3f\u0e44lig;\u4152cute\u803b\xd3\u40d3\u0100iy\u0dce\u0dd3rc\u803b\xd4\u40d4;\u441eblac;\u4150r;\uc000\ud835\udd12rave\u803b\xd2\u40d2\u0180aei\u0dee\u0df2\u0df6cr;\u414cga;\u43a9cron;\u439fpf;\uc000\ud835\udd46enCurly\u0100DQ\u0e0e\u0e1aoubleQuote;\u601cuote;\u6018;\u6a54\u0100cl\u0e27\u0e2cr;\uc000\ud835\udcaaash\u803b\xd8\u40d8i\u016c\u0e37\u0e3cde\u803b\xd5\u40d5es;\u6a37ml\u803b\xd6\u40d6er\u0100BP\u0e4b\u0e60\u0100ar\u0e50\u0e53r;\u603eac\u0100ek\u0e5a\u0e5c;\u63deet;\u63b4arenthesis;\u63dc\u0480acfhilors\u0e7f\u0e87\u0e8a\u0e8f\u0e92\u0e94\u0e9d\u0eb0\u0efcrtialD;\u6202y;\u441fr;\uc000\ud835\udd13i;\u43a6;\u43a0usMinus;\u40b1\u0100ip\u0ea2\u0eadncareplan\xe5\u069df;\u6119\u0200;eio\u0eb9\u0eba\u0ee0\u0ee4\u6abbcedes\u0200;EST\u0ec8\u0ec9\u0ecf\u0eda\u627aqual;\u6aaflantEqual;\u627cilde;\u627eme;\u6033\u0100dp\u0ee9\u0eeeuct;\u620fortion\u0100;a\u0225\u0ef9l;\u621d\u0100ci\u0f01\u0f06r;\uc000\ud835\udcab;\u43a8\u0200Ufos\u0f11\u0f16\u0f1b\u0f1fOT\u803b\"\u4022r;\uc000\ud835\udd14pf;\u611acr;\uc000\ud835\udcac\u0600BEacefhiorsu\u0f3e\u0f43\u0f47\u0f60\u0f73\u0fa7\u0faa\u0fad\u1096\u10a9\u10b4\u10bearr;\u6910G\u803b\xae\u40ae\u0180cnr\u0f4e\u0f53\u0f56ute;\u4154g;\u67ebr\u0100;t\u0f5c\u0f5d\u61a0l;\u6916\u0180aey\u0f67\u0f6c\u0f71ron;\u4158dil;\u4156;\u4420\u0100;v\u0f78\u0f79\u611cerse\u0100EU\u0f82\u0f99\u0100lq\u0f87\u0f8eement;\u620builibrium;\u61cbpEquilibrium;\u696fr\xbb\u0f79o;\u43a1ght\u0400ACDFTUVa\u0fc1\u0feb\u0ff3\u1022\u1028\u105b\u1087\u03d8\u0100nr\u0fc6\u0fd2gleBracket;\u67e9row\u0180;BL\u0fdc\u0fdd\u0fe1\u6192ar;\u61e5eftArrow;\u61c4eiling;\u6309o\u01f5\u0ff9\0\u1005bleBracket;\u67e7n\u01d4\u100a\0\u1014eeVector;\u695dector\u0100;B\u101d\u101e\u61c2ar;\u6955loor;\u630b\u0100er\u102d\u1043e\u0180;AV\u1035\u1036\u103c\u62a2rrow;\u61a6ector;\u695biangle\u0180;BE\u1050\u1051\u1055\u62b3ar;\u69d0qual;\u62b5p\u0180DTV\u1063\u106e\u1078ownVector;\u694feeVector;\u695cector\u0100;B\u1082\u1083\u61bear;\u6954ector\u0100;B\u1091\u1092\u61c0ar;\u6953\u0100pu\u109b\u109ef;\u611dndImplies;\u6970ightarrow;\u61db\u0100ch\u10b9\u10bcr;\u611b;\u61b1leDelayed;\u69f4\u0680HOacfhimoqstu\u10e4\u10f1\u10f7\u10fd\u1119\u111e\u1151\u1156\u1161\u1167\u11b5\u11bb\u11bf\u0100Cc\u10e9\u10eeHcy;\u4429y;\u4428FTcy;\u442ccute;\u415a\u0280;aeiy\u1108\u1109\u110e\u1113\u1117\u6abcron;\u4160dil;\u415erc;\u415c;\u4421r;\uc000\ud835\udd16ort\u0200DLRU\u112a\u1134\u113e\u1149ownArrow\xbb\u041eeftArrow\xbb\u089aightArrow\xbb\u0fddpArrow;\u6191gma;\u43a3allCircle;\u6218pf;\uc000\ud835\udd4a\u0272\u116d\0\0\u1170t;\u621aare\u0200;ISU\u117b\u117c\u1189\u11af\u65a1ntersection;\u6293u\u0100bp\u118f\u119eset\u0100;E\u1197\u1198\u628fqual;\u6291erset\u0100;E\u11a8\u11a9\u6290qual;\u6292nion;\u6294cr;\uc000\ud835\udcaear;\u62c6\u0200bcmp\u11c8\u11db\u1209\u120b\u0100;s\u11cd\u11ce\u62d0et\u0100;E\u11cd\u11d5qual;\u6286\u0100ch\u11e0\u1205eeds\u0200;EST\u11ed\u11ee\u11f4\u11ff\u627bqual;\u6ab0lantEqual;\u627dilde;\u627fTh\xe1\u0f8c;\u6211\u0180;es\u1212\u1213\u1223\u62d1rset\u0100;E\u121c\u121d\u6283qual;\u6287et\xbb\u1213\u0580HRSacfhiors\u123e\u1244\u1249\u1255\u125e\u1271\u1276\u129f\u12c2\u12c8\u12d1ORN\u803b\xde\u40deADE;\u6122\u0100Hc\u124e\u1252cy;\u440by;\u4426\u0100bu\u125a\u125c;\u4009;\u43a4\u0180aey\u1265\u126a\u126fron;\u4164dil;\u4162;\u4422r;\uc000\ud835\udd17\u0100ei\u127b\u1289\u01f2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128e\u1298kSpace;\uc000\u205f\u200aSpace;\u6009lde\u0200;EFT\u12ab\u12ac\u12b2\u12bc\u623cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uc000\ud835\udd4bipleDot;\u60db\u0100ct\u12d6\u12dbr;\uc000\ud835\udcafrok;\u4166\u0ae1\u12f7\u130e\u131a\u1326\0\u132c\u1331\0\0\0\0\0\u1338\u133d\u1377\u1385\0\u13ff\u1404\u140a\u1410\u0100cr\u12fb\u1301ute\u803b\xda\u40dar\u0100;o\u1307\u1308\u619fcir;\u6949r\u01e3\u1313\0\u1316y;\u440eve;\u416c\u0100iy\u131e\u1323rc\u803b\xdb\u40db;\u4423blac;\u4170r;\uc000\ud835\udd18rave\u803b\xd9\u40d9acr;\u416a\u0100di\u1341\u1369er\u0100BP\u1348\u135d\u0100ar\u134d\u1350r;\u405fac\u0100ek\u1357\u1359;\u63dfet;\u63b5arenthesis;\u63ddon\u0100;P\u1370\u1371\u62c3lus;\u628e\u0100gp\u137b\u137fon;\u4172f;\uc000\ud835\udd4c\u0400ADETadps\u1395\u13ae\u13b8\u13c4\u03e8\u13d2\u13d7\u13f3rrow\u0180;BD\u1150\u13a0\u13a4ar;\u6912ownArrow;\u61c5ownArrow;\u6195quilibrium;\u696eee\u0100;A\u13cb\u13cc\u62a5rrow;\u61a5own\xe1\u03f3er\u0100LR\u13de\u13e8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13f9\u13fa\u43d2on;\u43a5ing;\u416ecr;\uc000\ud835\udcb0ilde;\u4168ml\u803b\xdc\u40dc\u0480Dbcdefosv\u1427\u142c\u1430\u1433\u143e\u1485\u148a\u1490\u1496ash;\u62abar;\u6aeby;\u4412ash\u0100;l\u143b\u143c\u62a9;\u6ae6\u0100er\u1443\u1445;\u62c1\u0180bty\u144c\u1450\u147aar;\u6016\u0100;i\u144f\u1455cal\u0200BLST\u1461\u1465\u146a\u1474ar;\u6223ine;\u407ceparator;\u6758ilde;\u6240ThinSpace;\u600ar;\uc000\ud835\udd19pf;\uc000\ud835\udd4dcr;\uc000\ud835\udcb1dash;\u62aa\u0280cefos\u14a7\u14ac\u14b1\u14b6\u14bcirc;\u4174dge;\u62c0r;\uc000\ud835\udd1apf;\uc000\ud835\udd4ecr;\uc000\ud835\udcb2\u0200fios\u14cb\u14d0\u14d2\u14d8r;\uc000\ud835\udd1b;\u439epf;\uc000\ud835\udd4fcr;\uc000\ud835\udcb3\u0480AIUacfosu\u14f1\u14f5\u14f9\u14fd\u1504\u150f\u1514\u151a\u1520cy;\u442fcy;\u4407cy;\u442ecute\u803b\xdd\u40dd\u0100iy\u1509\u150drc;\u4176;\u442br;\uc000\ud835\udd1cpf;\uc000\ud835\udd50cr;\uc000\ud835\udcb4ml;\u4178\u0400Hacdefos\u1535\u1539\u153f\u154b\u154f\u155d\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417d;\u4417ot;\u417b\u01f2\u1554\0\u155boWidt\xe8\u0ad9a;\u4396r;\u6128pf;\u6124cr;\uc000\ud835\udcb5\u0be1\u1583\u158a\u1590\0\u15b0\u15b6\u15bf\0\0\0\0\u15c6\u15db\u15eb\u165f\u166d\0\u1695\u169b\u16b2\u16b9\0\u16becute\u803b\xe1\u40e1reve;\u4103\u0300;Ediuy\u159c\u159d\u15a1\u15a3\u15a8\u15ad\u623e;\uc000\u223e\u0333;\u623frc\u803b\xe2\u40e2te\u80bb\xb4\u0306;\u4430lig\u803b\xe6\u40e6\u0100;r\xb2\u15ba;\uc000\ud835\udd1erave\u803b\xe0\u40e0\u0100ep\u15ca\u15d6\u0100fp\u15cf\u15d4sym;\u6135\xe8\u15d3ha;\u43b1\u0100ap\u15dfc\u0100cl\u15e4\u15e7r;\u4101g;\u6a3f\u0264\u15f0\0\0\u160a\u0280;adsv\u15fa\u15fb\u15ff\u1601\u1607\u6227nd;\u6a55;\u6a5clope;\u6a58;\u6a5a\u0380;elmrsz\u1618\u1619\u161b\u161e\u163f\u164f\u1659\u6220;\u69a4e\xbb\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163a\u163c\u163e;\u69a8;\u69a9;\u69aa;\u69ab;\u69ac;\u69ad;\u69ae;\u69aft\u0100;v\u1645\u1646\u621fb\u0100;d\u164c\u164d\u62be;\u699d\u0100pt\u1654\u1657h;\u6222\xbb\xb9arr;\u637c\u0100gp\u1663\u1667on;\u4105f;\uc000\ud835\udd52\u0380;Eaeiop\u12c1\u167b\u167d\u1682\u1684\u1687\u168a;\u6a70cir;\u6a6f;\u624ad;\u624bs;\u4027rox\u0100;e\u12c1\u1692\xf1\u1683ing\u803b\xe5\u40e5\u0180cty\u16a1\u16a6\u16a8r;\uc000\ud835\udcb6;\u402amp\u0100;e\u12c1\u16af\xf1\u0288ilde\u803b\xe3\u40e3ml\u803b\xe4\u40e4\u0100ci\u16c2\u16c8onin\xf4\u0272nt;\u6a11\u0800Nabcdefiklnoprsu\u16ed\u16f1\u1730\u173c\u1743\u1748\u1778\u177d\u17e0\u17e6\u1839\u1850\u170d\u193d\u1948\u1970ot;\u6aed\u0100cr\u16f6\u171ek\u0200ceps\u1700\u1705\u170d\u1713ong;\u624cpsilon;\u43f6rime;\u6035im\u0100;e\u171a\u171b\u623dq;\u62cd\u0176\u1722\u1726ee;\u62bded\u0100;g\u172c\u172d\u6305e\xbb\u172drk\u0100;t\u135c\u1737brk;\u63b6\u0100oy\u1701\u1741;\u4431quo;\u601e\u0280cmprt\u1753\u175b\u1761\u1764\u1768aus\u0100;e\u010a\u0109ptyv;\u69b0s\xe9\u170cno\xf5\u0113\u0180ahw\u176f\u1771\u1773;\u43b2;\u6136een;\u626cr;\uc000\ud835\udd1fg\u0380costuvw\u178d\u179d\u17b3\u17c1\u17d5\u17db\u17de\u0180aiu\u1794\u1796\u179a\xf0\u0760rc;\u65efp\xbb\u1371\u0180dpt\u17a4\u17a8\u17adot;\u6a00lus;\u6a01imes;\u6a02\u0271\u17b9\0\0\u17becup;\u6a06ar;\u6605riangle\u0100du\u17cd\u17d2own;\u65bdp;\u65b3plus;\u6a04e\xe5\u1444\xe5\u14adarow;\u690d\u0180ako\u17ed\u1826\u1835\u0100cn\u17f2\u1823k\u0180lst\u17fa\u05ab\u1802ozenge;\u69ebriangle\u0200;dlr\u1812\u1813\u1818\u181d\u65b4own;\u65beeft;\u65c2ight;\u65b8k;\u6423\u01b1\u182b\0\u1833\u01b2\u182f\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183e\u184d\u0100;q\u1843\u1846\uc000=\u20e5uiv;\uc000\u2261\u20e5t;\u6310\u0200ptwx\u1859\u185e\u1867\u186cf;\uc000\ud835\udd53\u0100;t\u13cb\u1863om\xbb\u13cctie;\u62c8\u0600DHUVbdhmptuv\u1885\u1896\u18aa\u18bb\u18d7\u18db\u18ec\u18ff\u1905\u190a\u1910\u1921\u0200LRlr\u188e\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18a1\u18a2\u18a4\u18a6\u18a8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18b3\u18b5\u18b7\u18b9;\u655d;\u655a;\u655c;\u6559\u0380;HLRhlr\u18ca\u18cb\u18cd\u18cf\u18d1\u18d3\u18d5\u6551;\u656c;\u6563;\u6560;\u656b;\u6562;\u655fox;\u69c9\u0200LRlr\u18e4\u18e6\u18e8\u18ea;\u6555;\u6552;\u6510;\u650c\u0280;DUdu\u06bd\u18f7\u18f9\u18fb\u18fd;\u6565;\u6568;\u652c;\u6534inus;\u629flus;\u629eimes;\u62a0\u0200LRlr\u1919\u191b\u191d\u191f;\u655b;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193b\u6502;\u656a;\u6561;\u655e;\u653c;\u6524;\u651c\u0100ev\u0123\u1942bar\u803b\xa6\u40a6\u0200ceio\u1951\u1956\u195a\u1960r;\uc000\ud835\udcb7mi;\u604fm\u0100;e\u171a\u171cl\u0180;bh\u1968\u1969\u196b\u405c;\u69c5sub;\u67c8\u016c\u1974\u197el\u0100;e\u1979\u197a\u6022t\xbb\u197ap\u0180;Ee\u012f\u1985\u1987;\u6aae\u0100;q\u06dc\u06db\u0ce1\u19a7\0\u19e8\u1a11\u1a15\u1a32\0\u1a37\u1a50\0\0\u1ab4\0\0\u1ac1\0\0\u1b21\u1b2e\u1b4d\u1b52\0\u1bfd\0\u1c0c\u0180cpr\u19ad\u19b2\u19ddute;\u4107\u0300;abcds\u19bf\u19c0\u19c4\u19ca\u19d5\u19d9\u6229nd;\u6a44rcup;\u6a49\u0100au\u19cf\u19d2p;\u6a4bp;\u6a47ot;\u6a40;\uc000\u2229\ufe00\u0100eo\u19e2\u19e5t;\u6041\xee\u0693\u0200aeiu\u19f0\u19fb\u1a01\u1a05\u01f0\u19f5\0\u19f8s;\u6a4don;\u410ddil\u803b\xe7\u40e7rc;\u4109ps\u0100;s\u1a0c\u1a0d\u6a4cm;\u6a50ot;\u410b\u0180dmn\u1a1b\u1a20\u1a26il\u80bb\xb8\u01adptyv;\u69b2t\u8100\xa2;e\u1a2d\u1a2e\u40a2r\xe4\u01b2r;\uc000\ud835\udd20\u0180cei\u1a3d\u1a40\u1a4dy;\u4447ck\u0100;m\u1a47\u1a48\u6713ark\xbb\u1a48;\u43c7r\u0380;Ecefms\u1a5f\u1a60\u1a62\u1a6b\u1aa4\u1aaa\u1aae\u65cb;\u69c3\u0180;el\u1a69\u1a6a\u1a6d\u42c6q;\u6257e\u0261\u1a74\0\0\u1a88rrow\u0100lr\u1a7c\u1a81eft;\u61baight;\u61bb\u0280RSacd\u1a92\u1a94\u1a96\u1a9a\u1a9f\xbb\u0f47;\u64c8st;\u629birc;\u629aash;\u629dnint;\u6a10id;\u6aefcir;\u69c2ubs\u0100;u\u1abb\u1abc\u6663it\xbb\u1abc\u02ec\u1ac7\u1ad4\u1afa\0\u1b0aon\u0100;e\u1acd\u1ace\u403a\u0100;q\xc7\xc6\u026d\u1ad9\0\0\u1ae2a\u0100;t\u1ade\u1adf\u402c;\u4040\u0180;fl\u1ae8\u1ae9\u1aeb\u6201\xee\u1160e\u0100mx\u1af1\u1af6ent\xbb\u1ae9e\xf3\u024d\u01e7\u1afe\0\u1b07\u0100;d\u12bb\u1b02ot;\u6a6dn\xf4\u0246\u0180fry\u1b10\u1b14\u1b17;\uc000\ud835\udd54o\xe4\u0254\u8100\xa9;s\u0155\u1b1dr;\u6117\u0100ao\u1b25\u1b29rr;\u61b5ss;\u6717\u0100cu\u1b32\u1b37r;\uc000\ud835\udcb8\u0100bp\u1b3c\u1b44\u0100;e\u1b41\u1b42\u6acf;\u6ad1\u0100;e\u1b49\u1b4a\u6ad0;\u6ad2dot;\u62ef\u0380delprvw\u1b60\u1b6c\u1b77\u1b82\u1bac\u1bd4\u1bf9arr\u0100lr\u1b68\u1b6a;\u6938;\u6935\u0270\u1b72\0\0\u1b75r;\u62dec;\u62dfarr\u0100;p\u1b7f\u1b80\u61b6;\u693d\u0300;bcdos\u1b8f\u1b90\u1b96\u1ba1\u1ba5\u1ba8\u622arcap;\u6a48\u0100au\u1b9b\u1b9ep;\u6a46p;\u6a4aot;\u628dr;\u6a45;\uc000\u222a\ufe00\u0200alrv\u1bb5\u1bbf\u1bde\u1be3rr\u0100;m\u1bbc\u1bbd\u61b7;\u693cy\u0180evw\u1bc7\u1bd4\u1bd8q\u0270\u1bce\0\0\u1bd2re\xe3\u1b73u\xe3\u1b75ee;\u62ceedge;\u62cfen\u803b\xa4\u40a4earrow\u0100lr\u1bee\u1bf3eft\xbb\u1b80ight\xbb\u1bbde\xe4\u1bdd\u0100ci\u1c01\u1c07onin\xf4\u01f7nt;\u6231lcty;\u632d\u0980AHabcdefhijlorstuwz\u1c38\u1c3b\u1c3f\u1c5d\u1c69\u1c75\u1c8a\u1c9e\u1cac\u1cb7\u1cfb\u1cff\u1d0d\u1d7b\u1d91\u1dab\u1dbb\u1dc6\u1dcdr\xf2\u0381ar;\u6965\u0200glrs\u1c48\u1c4d\u1c52\u1c54ger;\u6020eth;\u6138\xf2\u1133h\u0100;v\u1c5a\u1c5b\u6010\xbb\u090a\u016b\u1c61\u1c67arow;\u690fa\xe3\u0315\u0100ay\u1c6e\u1c73ron;\u410f;\u4434\u0180;ao\u0332\u1c7c\u1c84\u0100gr\u02bf\u1c81r;\u61catseq;\u6a77\u0180glm\u1c91\u1c94\u1c98\u803b\xb0\u40b0ta;\u43b4ptyv;\u69b1\u0100ir\u1ca3\u1ca8sht;\u697f;\uc000\ud835\udd21ar\u0100lr\u1cb3\u1cb5\xbb\u08dc\xbb\u101e\u0280aegsv\u1cc2\u0378\u1cd6\u1cdc\u1ce0m\u0180;os\u0326\u1cca\u1cd4nd\u0100;s\u0326\u1cd1uit;\u6666amma;\u43ddin;\u62f2\u0180;io\u1ce7\u1ce8\u1cf8\u40f7de\u8100\xf7;o\u1ce7\u1cf0ntimes;\u62c7n\xf8\u1cf7cy;\u4452c\u026f\u1d06\0\0\u1d0arn;\u631eop;\u630d\u0280lptuw\u1d18\u1d1d\u1d22\u1d49\u1d55lar;\u4024f;\uc000\ud835\udd55\u0280;emps\u030b\u1d2d\u1d37\u1d3d\u1d42q\u0100;d\u0352\u1d33ot;\u6251inus;\u6238lus;\u6214quare;\u62a1blebarwedg\xe5\xfan\u0180adh\u112e\u1d5d\u1d67ownarrow\xf3\u1c83arpoon\u0100lr\u1d72\u1d76ef\xf4\u1cb4igh\xf4\u1cb6\u0162\u1d7f\u1d85karo\xf7\u0f42\u026f\u1d8a\0\0\u1d8ern;\u631fop;\u630c\u0180cot\u1d98\u1da3\u1da6\u0100ry\u1d9d\u1da1;\uc000\ud835\udcb9;\u4455l;\u69f6rok;\u4111\u0100dr\u1db0\u1db4ot;\u62f1i\u0100;f\u1dba\u1816\u65bf\u0100ah\u1dc0\u1dc3r\xf2\u0429a\xf2\u0fa6angle;\u69a6\u0100ci\u1dd2\u1dd5y;\u445fgrarr;\u67ff\u0900Dacdefglmnopqrstux\u1e01\u1e09\u1e19\u1e38\u0578\u1e3c\u1e49\u1e61\u1e7e\u1ea5\u1eaf\u1ebd\u1ee1\u1f2a\u1f37\u1f44\u1f4e\u1f5a\u0100Do\u1e06\u1d34o\xf4\u1c89\u0100cs\u1e0e\u1e14ute\u803b\xe9\u40e9ter;\u6a6e\u0200aioy\u1e22\u1e27\u1e31\u1e36ron;\u411br\u0100;c\u1e2d\u1e2e\u6256\u803b\xea\u40ealon;\u6255;\u444dot;\u4117\u0100Dr\u1e41\u1e45ot;\u6252;\uc000\ud835\udd22\u0180;rs\u1e50\u1e51\u1e57\u6a9aave\u803b\xe8\u40e8\u0100;d\u1e5c\u1e5d\u6a96ot;\u6a98\u0200;ils\u1e6a\u1e6b\u1e72\u1e74\u6a99nters;\u63e7;\u6113\u0100;d\u1e79\u1e7a\u6a95ot;\u6a97\u0180aps\u1e85\u1e89\u1e97cr;\u4113ty\u0180;sv\u1e92\u1e93\u1e95\u6205et\xbb\u1e93p\u01001;\u1e9d\u1ea4\u0133\u1ea1\u1ea3;\u6004;\u6005\u6003\u0100gs\u1eaa\u1eac;\u414bp;\u6002\u0100gp\u1eb4\u1eb8on;\u4119f;\uc000\ud835\udd56\u0180als\u1ec4\u1ece\u1ed2r\u0100;s\u1eca\u1ecb\u62d5l;\u69e3us;\u6a71i\u0180;lv\u1eda\u1edb\u1edf\u43b5on\xbb\u1edb;\u43f5\u0200csuv\u1eea\u1ef3\u1f0b\u1f23\u0100io\u1eef\u1e31rc\xbb\u1e2e\u0269\u1ef9\0\0\u1efb\xed\u0548ant\u0100gl\u1f02\u1f06tr\xbb\u1e5dess\xbb\u1e7a\u0180aei\u1f12\u1f16\u1f1als;\u403dst;\u625fv\u0100;D\u0235\u1f20D;\u6a78parsl;\u69e5\u0100Da\u1f2f\u1f33ot;\u6253rr;\u6971\u0180cdi\u1f3e\u1f41\u1ef8r;\u612fo\xf4\u0352\u0100ah\u1f49\u1f4b;\u43b7\u803b\xf0\u40f0\u0100mr\u1f53\u1f57l\u803b\xeb\u40ebo;\u60ac\u0180cip\u1f61\u1f64\u1f67l;\u4021s\xf4\u056e\u0100eo\u1f6c\u1f74ctatio\xee\u0559nential\xe5\u0579\u09e1\u1f92\0\u1f9e\0\u1fa1\u1fa7\0\0\u1fc6\u1fcc\0\u1fd3\0\u1fe6\u1fea\u2000\0\u2008\u205allingdotse\xf1\u1e44y;\u4444male;\u6640\u0180ilr\u1fad\u1fb3\u1fc1lig;\u8000\ufb03\u0269\u1fb9\0\0\u1fbdg;\u8000\ufb00ig;\u8000\ufb04;\uc000\ud835\udd23lig;\u8000\ufb01lig;\uc000fj\u0180alt\u1fd9\u1fdc\u1fe1t;\u666dig;\u8000\ufb02ns;\u65b1of;\u4192\u01f0\u1fee\0\u1ff3f;\uc000\ud835\udd57\u0100ak\u05bf\u1ff7\u0100;v\u1ffc\u1ffd\u62d4;\u6ad9artint;\u6a0d\u0100ao\u200c\u2055\u0100cs\u2011\u2052\u03b1\u201a\u2030\u2038\u2045\u2048\0\u2050\u03b2\u2022\u2025\u2027\u202a\u202c\0\u202e\u803b\xbd\u40bd;\u6153\u803b\xbc\u40bc;\u6155;\u6159;\u615b\u01b3\u2034\0\u2036;\u6154;\u6156\u02b4\u203e\u2041\0\0\u2043\u803b\xbe\u40be;\u6157;\u615c5;\u6158\u01b6\u204c\0\u204e;\u615a;\u615d8;\u615el;\u6044wn;\u6322cr;\uc000\ud835\udcbb\u0880Eabcdefgijlnorstv\u2082\u2089\u209f\u20a5\u20b0\u20b4\u20f0\u20f5\u20fa\u20ff\u2103\u2112\u2138\u0317\u213e\u2152\u219e\u0100;l\u064d\u2087;\u6a8c\u0180cmp\u2090\u2095\u209dute;\u41f5ma\u0100;d\u209c\u1cda\u43b3;\u6a86reve;\u411f\u0100iy\u20aa\u20aerc;\u411d;\u4433ot;\u4121\u0200;lqs\u063e\u0642\u20bd\u20c9\u0180;qs\u063e\u064c\u20c4lan\xf4\u0665\u0200;cdl\u0665\u20d2\u20d5\u20e5c;\u6aa9ot\u0100;o\u20dc\u20dd\u6a80\u0100;l\u20e2\u20e3\u6a82;\u6a84\u0100;e\u20ea\u20ed\uc000\u22db\ufe00s;\u6a94r;\uc000\ud835\udd24\u0100;g\u0673\u061bmel;\u6137cy;\u4453\u0200;Eaj\u065a\u210c\u210e\u2110;\u6a92;\u6aa5;\u6aa4\u0200Eaes\u211b\u211d\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6a8arox\xbb\u2124\u0100;q\u212e\u212f\u6a88\u0100;q\u212e\u211bim;\u62e7pf;\uc000\ud835\udd58\u0100ci\u2143\u2146r;\u610am\u0180;el\u066b\u214e\u2150;\u6a8e;\u6a90\u8300>;cdlqr\u05ee\u2160\u216a\u216e\u2173\u2179\u0100ci\u2165\u2167;\u6aa7r;\u6a7aot;\u62d7Par;\u6995uest;\u6a7c\u0280adels\u2184\u216a\u2190\u0656\u219b\u01f0\u2189\0\u218epro\xf8\u209er;\u6978q\u0100lq\u063f\u2196les\xf3\u2088i\xed\u066b\u0100en\u21a3\u21adrtneqq;\uc000\u2269\ufe00\xc5\u21aa\u0500Aabcefkosy\u21c4\u21c7\u21f1\u21f5\u21fa\u2218\u221d\u222f\u2268\u227dr\xf2\u03a0\u0200ilmr\u21d0\u21d4\u21d7\u21dbrs\xf0\u1484f\xbb\u2024il\xf4\u06a9\u0100dr\u21e0\u21e4cy;\u444a\u0180;cw\u08f4\u21eb\u21efir;\u6948;\u61adar;\u610firc;\u4125\u0180alr\u2201\u220e\u2213rts\u0100;u\u2209\u220a\u6665it\xbb\u220alip;\u6026con;\u62b9r;\uc000\ud835\udd25s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223a\u223e\u2243\u225e\u2263rr;\u61fftht;\u623bk\u0100lr\u2249\u2253eftarrow;\u61a9ightarrow;\u61aaf;\uc000\ud835\udd59bar;\u6015\u0180clt\u226f\u2274\u2278r;\uc000\ud835\udcbdas\xe8\u21f4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xbb\u1c5b\u0ae1\u22a3\0\u22aa\0\u22b8\u22c5\u22ce\0\u22d5\u22f3\0\0\u22f8\u2322\u2367\u2362\u237f\0\u2386\u23aa\u23b4cute\u803b\xed\u40ed\u0180;iy\u0771\u22b0\u22b5rc\u803b\xee\u40ee;\u4438\u0100cx\u22bc\u22bfy;\u4435cl\u803b\xa1\u40a1\u0100fr\u039f\u22c9;\uc000\ud835\udd26rave\u803b\xec\u40ec\u0200;ino\u073e\u22dd\u22e9\u22ee\u0100in\u22e2\u22e6nt;\u6a0ct;\u622dfin;\u69dcta;\u6129lig;\u4133\u0180aop\u22fe\u231a\u231d\u0180cgt\u2305\u2308\u2317r;\u412b\u0180elp\u071f\u230f\u2313in\xe5\u078ear\xf4\u0720h;\u4131f;\u62b7ed;\u41b5\u0280;cfot\u04f4\u232c\u2331\u233d\u2341are;\u6105in\u0100;t\u2338\u2339\u621eie;\u69dddo\xf4\u2319\u0280;celp\u0757\u234c\u2350\u235b\u2361al;\u62ba\u0100gr\u2355\u2359er\xf3\u1563\xe3\u234darhk;\u6a17rod;\u6a3c\u0200cgpt\u236f\u2372\u2376\u237by;\u4451on;\u412ff;\uc000\ud835\udd5aa;\u43b9uest\u803b\xbf\u40bf\u0100ci\u238a\u238fr;\uc000\ud835\udcben\u0280;Edsv\u04f4\u239b\u239d\u23a1\u04f3;\u62f9ot;\u62f5\u0100;v\u23a6\u23a7\u62f4;\u62f3\u0100;i\u0777\u23aelde;\u4129\u01eb\u23b8\0\u23bccy;\u4456l\u803b\xef\u40ef\u0300cfmosu\u23cc\u23d7\u23dc\u23e1\u23e7\u23f5\u0100iy\u23d1\u23d5rc;\u4135;\u4439r;\uc000\ud835\udd27ath;\u4237pf;\uc000\ud835\udd5b\u01e3\u23ec\0\u23f1r;\uc000\ud835\udcbfrcy;\u4458kcy;\u4454\u0400acfghjos\u240b\u2416\u2422\u2427\u242d\u2431\u2435\u243bppa\u0100;v\u2413\u2414\u43ba;\u43f0\u0100ey\u241b\u2420dil;\u4137;\u443ar;\uc000\ud835\udd28reen;\u4138cy;\u4445cy;\u445cpf;\uc000\ud835\udd5ccr;\uc000\ud835\udcc0\u0b80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248d\u2491\u250e\u253d\u255a\u2580\u264e\u265e\u2665\u2679\u267d\u269a\u26b2\u26d8\u275d\u2768\u278b\u27c0\u2801\u2812\u0180art\u2477\u247a\u247cr\xf2\u09c6\xf2\u0395ail;\u691barr;\u690e\u0100;g\u0994\u248b;\u6a8bar;\u6962\u0963\u24a5\0\u24aa\0\u24b1\0\0\0\0\0\u24b5\u24ba\0\u24c6\u24c8\u24cd\0\u24f9ute;\u413amptyv;\u69b4ra\xee\u084cbda;\u43bbg\u0180;dl\u088e\u24c1\u24c3;\u6991\xe5\u088e;\u6a85uo\u803b\xab\u40abr\u0400;bfhlpst\u0899\u24de\u24e6\u24e9\u24eb\u24ee\u24f1\u24f5\u0100;f\u089d\u24e3s;\u691fs;\u691d\xeb\u2252p;\u61abl;\u6939im;\u6973l;\u61a2\u0180;ae\u24ff\u2500\u2504\u6aabil;\u6919\u0100;s\u2509\u250a\u6aad;\uc000\u2aad\ufe00\u0180abr\u2515\u2519\u251drr;\u690crk;\u6772\u0100ak\u2522\u252cc\u0100ek\u2528\u252a;\u407b;\u405b\u0100es\u2531\u2533;\u698bl\u0100du\u2539\u253b;\u698f;\u698d\u0200aeuy\u2546\u254b\u2556\u2558ron;\u413e\u0100di\u2550\u2554il;\u413c\xec\u08b0\xe2\u2529;\u443b\u0200cqrs\u2563\u2566\u256d\u257da;\u6936uo\u0100;r\u0e19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694bh;\u61b2\u0280;fgqs\u258b\u258c\u0989\u25f3\u25ff\u6264t\u0280ahlrt\u2598\u25a4\u25b7\u25c2\u25e8rrow\u0100;t\u0899\u25a1a\xe9\u24f6arpoon\u0100du\u25af\u25b4own\xbb\u045ap\xbb\u0966eftarrows;\u61c7ight\u0180ahs\u25cd\u25d6\u25derrow\u0100;s\u08f4\u08a7arpoon\xf3\u0f98quigarro\xf7\u21f0hreetimes;\u62cb\u0180;qs\u258b\u0993\u25falan\xf4\u09ac\u0280;cdgs\u09ac\u260a\u260d\u261d\u2628c;\u6aa8ot\u0100;o\u2614\u2615\u6a7f\u0100;r\u261a\u261b\u6a81;\u6a83\u0100;e\u2622\u2625\uc000\u22da\ufe00s;\u6a93\u0280adegs\u2633\u2639\u263d\u2649\u264bppro\xf8\u24c6ot;\u62d6q\u0100gq\u2643\u2645\xf4\u0989gt\xf2\u248c\xf4\u099bi\xed\u09b2\u0180ilr\u2655\u08e1\u265asht;\u697c;\uc000\ud835\udd29\u0100;E\u099c\u2663;\u6a91\u0161\u2669\u2676r\u0100du\u25b2\u266e\u0100;l\u0965\u2673;\u696alk;\u6584cy;\u4459\u0280;acht\u0a48\u2688\u268b\u2691\u2696r\xf2\u25c1orne\xf2\u1d08ard;\u696bri;\u65fa\u0100io\u269f\u26a4dot;\u4140ust\u0100;a\u26ac\u26ad\u63b0che\xbb\u26ad\u0200Eaes\u26bb\u26bd\u26c9\u26d4;\u6268p\u0100;p\u26c3\u26c4\u6a89rox\xbb\u26c4\u0100;q\u26ce\u26cf\u6a87\u0100;q\u26ce\u26bbim;\u62e6\u0400abnoptwz\u26e9\u26f4\u26f7\u271a\u272f\u2741\u2747\u2750\u0100nr\u26ee\u26f1g;\u67ecr;\u61fdr\xeb\u08c1g\u0180lmr\u26ff\u270d\u2714eft\u0100ar\u09e6\u2707ight\xe1\u09f2apsto;\u67fcight\xe1\u09fdparrow\u0100lr\u2725\u2729ef\xf4\u24edight;\u61ac\u0180afl\u2736\u2739\u273dr;\u6985;\uc000\ud835\udd5dus;\u6a2dimes;\u6a34\u0161\u274b\u274fst;\u6217\xe1\u134e\u0180;ef\u2757\u2758\u1800\u65cange\xbb\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277c\u2785\u2787r\xf2\u08a8orne\xf2\u1d8car\u0100;d\u0f98\u2783;\u696d;\u600eri;\u62bf\u0300achiqt\u2798\u279d\u0a40\u27a2\u27ae\u27bbquo;\u6039r;\uc000\ud835\udcc1m\u0180;eg\u09b2\u27aa\u27ac;\u6a8d;\u6a8f\u0100bu\u252a\u27b3o\u0100;r\u0e1f\u27b9;\u601arok;\u4142\u8400<;cdhilqr\u082b\u27d2\u2639\u27dc\u27e0\u27e5\u27ea\u27f0\u0100ci\u27d7\u27d9;\u6aa6r;\u6a79re\xe5\u25f2mes;\u62c9arr;\u6976uest;\u6a7b\u0100Pi\u27f5\u27f9ar;\u6996\u0180;ef\u2800\u092d\u181b\u65c3r\u0100du\u2807\u280dshar;\u694ahar;\u6966\u0100en\u2817\u2821rtneqq;\uc000\u2268\ufe00\xc5\u281e\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288e\u2893\u28a0\u28a5\u28a8\u28da\u28e2\u28e4\u0a83\u28f3\u2902Dot;\u623a\u0200clpr\u284e\u2852\u2863\u287dr\u803b\xaf\u40af\u0100et\u2857\u2859;\u6642\u0100;e\u285e\u285f\u6720se\xbb\u285f\u0100;s\u103b\u2868to\u0200;dlu\u103b\u2873\u2877\u287bow\xee\u048cef\xf4\u090f\xf0\u13d1ker;\u65ae\u0100oy\u2887\u288cmma;\u6a29;\u443cash;\u6014asuredangle\xbb\u1626r;\uc000\ud835\udd2ao;\u6127\u0180cdn\u28af\u28b4\u28c9ro\u803b\xb5\u40b5\u0200;acd\u1464\u28bd\u28c0\u28c4s\xf4\u16a7ir;\u6af0ot\u80bb\xb7\u01b5us\u0180;bd\u28d2\u1903\u28d3\u6212\u0100;u\u1d3c\u28d8;\u6a2a\u0163\u28de\u28e1p;\u6adb\xf2\u2212\xf0\u0a81\u0100dp\u28e9\u28eeels;\u62a7f;\uc000\ud835\udd5e\u0100ct\u28f8\u28fdr;\uc000\ud835\udcc2pos\xbb\u159d\u0180;lm\u2909\u290a\u290d\u43bctimap;\u62b8\u0c00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297e\u2989\u2998\u29da\u29e9\u2a15\u2a1a\u2a58\u2a5d\u2a83\u2a95\u2aa4\u2aa8\u2b04\u2b07\u2b44\u2b7f\u2bae\u2c34\u2c67\u2c7c\u2ce9\u0100gt\u2947\u294b;\uc000\u22d9\u0338\u0100;v\u2950\u0bcf\uc000\u226b\u20d2\u0180elt\u295a\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61cdightarrow;\u61ce;\uc000\u22d8\u0338\u0100;v\u297b\u0c47\uc000\u226a\u20d2ightarrow;\u61cf\u0100Dd\u298e\u2993ash;\u62afash;\u62ae\u0280bcnpt\u29a3\u29a7\u29ac\u29b1\u29ccla\xbb\u02deute;\u4144g;\uc000\u2220\u20d2\u0280;Eiop\u0d84\u29bc\u29c0\u29c5\u29c8;\uc000\u2a70\u0338d;\uc000\u224b\u0338s;\u4149ro\xf8\u0d84ur\u0100;a\u29d3\u29d4\u666el\u0100;s\u29d3\u0b38\u01f3\u29df\0\u29e3p\u80bb\xa0\u0b37mp\u0100;e\u0bf9\u0c00\u0280aeouy\u29f4\u29fe\u2a03\u2a10\u2a13\u01f0\u29f9\0\u29fb;\u6a43on;\u4148dil;\u4146ng\u0100;d\u0d7e\u2a0aot;\uc000\u2a6d\u0338p;\u6a42;\u443dash;\u6013\u0380;Aadqsx\u0b92\u2a29\u2a2d\u2a3b\u2a41\u2a45\u2a50rr;\u61d7r\u0100hr\u2a33\u2a36k;\u6924\u0100;o\u13f2\u13f0ot;\uc000\u2250\u0338ui\xf6\u0b63\u0100ei\u2a4a\u2a4ear;\u6928\xed\u0b98ist\u0100;s\u0ba0\u0b9fr;\uc000\ud835\udd2b\u0200Eest\u0bc5\u2a66\u2a79\u2a7c\u0180;qs\u0bbc\u2a6d\u0be1\u0180;qs\u0bbc\u0bc5\u2a74lan\xf4\u0be2i\xed\u0bea\u0100;r\u0bb6\u2a81\xbb\u0bb7\u0180Aap\u2a8a\u2a8d\u2a91r\xf2\u2971rr;\u61aear;\u6af2\u0180;sv\u0f8d\u2a9c\u0f8c\u0100;d\u2aa1\u2aa2\u62fc;\u62facy;\u445a\u0380AEadest\u2ab7\u2aba\u2abe\u2ac2\u2ac5\u2af6\u2af9r\xf2\u2966;\uc000\u2266\u0338rr;\u619ar;\u6025\u0200;fqs\u0c3b\u2ace\u2ae3\u2aeft\u0100ar\u2ad4\u2ad9rro\xf7\u2ac1ightarro\xf7\u2a90\u0180;qs\u0c3b\u2aba\u2aealan\xf4\u0c55\u0100;s\u0c55\u2af4\xbb\u0c36i\xed\u0c5d\u0100;r\u0c35\u2afei\u0100;e\u0c1a\u0c25i\xe4\u0d90\u0100pt\u2b0c\u2b11f;\uc000\ud835\udd5f\u8180\xac;in\u2b19\u2b1a\u2b36\u40acn\u0200;Edv\u0b89\u2b24\u2b28\u2b2e;\uc000\u22f9\u0338ot;\uc000\u22f5\u0338\u01e1\u0b89\u2b33\u2b35;\u62f7;\u62f6i\u0100;v\u0cb8\u2b3c\u01e1\u0cb8\u2b41\u2b43;\u62fe;\u62fd\u0180aor\u2b4b\u2b63\u2b69r\u0200;ast\u0b7b\u2b55\u2b5a\u2b5flle\xec\u0b7bl;\uc000\u2afd\u20e5;\uc000\u2202\u0338lint;\u6a14\u0180;ce\u0c92\u2b70\u2b73u\xe5\u0ca5\u0100;c\u0c98\u2b78\u0100;e\u0c92\u2b7d\xf1\u0c98\u0200Aait\u2b88\u2b8b\u2b9d\u2ba7r\xf2\u2988rr\u0180;cw\u2b94\u2b95\u2b99\u619b;\uc000\u2933\u0338;\uc000\u219d\u0338ghtarrow\xbb\u2b95ri\u0100;e\u0ccb\u0cd6\u0380chimpqu\u2bbd\u2bcd\u2bd9\u2b04\u0b78\u2be4\u2bef\u0200;cer\u0d32\u2bc6\u0d37\u2bc9u\xe5\u0d45;\uc000\ud835\udcc3ort\u026d\u2b05\0\0\u2bd6ar\xe1\u2b56m\u0100;e\u0d6e\u2bdf\u0100;q\u0d74\u0d73su\u0100bp\u2beb\u2bed\xe5\u0cf8\xe5\u0d0b\u0180bcp\u2bf6\u2c11\u2c19\u0200;Ees\u2bff\u2c00\u0d22\u2c04\u6284;\uc000\u2ac5\u0338et\u0100;e\u0d1b\u2c0bq\u0100;q\u0d23\u2c00c\u0100;e\u0d32\u2c17\xf1\u0d38\u0200;Ees\u2c22\u2c23\u0d5f\u2c27\u6285;\uc000\u2ac6\u0338et\u0100;e\u0d58\u2c2eq\u0100;q\u0d60\u2c23\u0200gilr\u2c3d\u2c3f\u2c45\u2c47\xec\u0bd7lde\u803b\xf1\u40f1\xe7\u0c43iangle\u0100lr\u2c52\u2c5ceft\u0100;e\u0c1a\u2c5a\xf1\u0c26ight\u0100;e\u0ccb\u2c65\xf1\u0cd7\u0100;m\u2c6c\u2c6d\u43bd\u0180;es\u2c74\u2c75\u2c79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2c8f\u2c94\u2c99\u2c9e\u2ca3\u2cb0\u2cb6\u2cd3\u2ce3ash;\u62adarr;\u6904p;\uc000\u224d\u20d2ash;\u62ac\u0100et\u2ca8\u2cac;\uc000\u2265\u20d2;\uc000>\u20d2nfin;\u69de\u0180Aet\u2cbd\u2cc1\u2cc5rr;\u6902;\uc000\u2264\u20d2\u0100;r\u2cca\u2ccd\uc000<\u20d2ie;\uc000\u22b4\u20d2\u0100At\u2cd8\u2cdcrr;\u6903rie;\uc000\u22b5\u20d2im;\uc000\u223c\u20d2\u0180Aan\u2cf0\u2cf4\u2d02rr;\u61d6r\u0100hr\u2cfa\u2cfdk;\u6923\u0100;o\u13e7\u13e5ear;\u6927\u1253\u1a95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2d2d\0\u2d38\u2d48\u2d60\u2d65\u2d72\u2d84\u1b07\0\0\u2d8d\u2dab\0\u2dc8\u2dce\0\u2ddc\u2e19\u2e2b\u2e3e\u2e43\u0100cs\u2d31\u1a97ute\u803b\xf3\u40f3\u0100iy\u2d3c\u2d45r\u0100;c\u1a9e\u2d42\u803b\xf4\u40f4;\u443e\u0280abios\u1aa0\u2d52\u2d57\u01c8\u2d5alac;\u4151v;\u6a38old;\u69bclig;\u4153\u0100cr\u2d69\u2d6dir;\u69bf;\uc000\ud835\udd2c\u036f\u2d79\0\0\u2d7c\0\u2d82n;\u42dbave\u803b\xf2\u40f2;\u69c1\u0100bm\u2d88\u0df4ar;\u69b5\u0200acit\u2d95\u2d98\u2da5\u2da8r\xf2\u1a80\u0100ir\u2d9d\u2da0r;\u69beoss;\u69bbn\xe5\u0e52;\u69c0\u0180aei\u2db1\u2db5\u2db9cr;\u414dga;\u43c9\u0180cdn\u2dc0\u2dc5\u01cdron;\u43bf;\u69b6pf;\uc000\ud835\udd60\u0180ael\u2dd4\u2dd7\u01d2r;\u69b7rp;\u69b9\u0380;adiosv\u2dea\u2deb\u2dee\u2e08\u2e0d\u2e10\u2e16\u6228r\xf2\u1a86\u0200;efm\u2df7\u2df8\u2e02\u2e05\u6a5dr\u0100;o\u2dfe\u2dff\u6134f\xbb\u2dff\u803b\xaa\u40aa\u803b\xba\u40bagof;\u62b6r;\u6a56lope;\u6a57;\u6a5b\u0180clo\u2e1f\u2e21\u2e27\xf2\u2e01ash\u803b\xf8\u40f8l;\u6298i\u016c\u2e2f\u2e34de\u803b\xf5\u40f5es\u0100;a\u01db\u2e3as;\u6a36ml\u803b\xf6\u40f6bar;\u633d\u0ae1\u2e5e\0\u2e7d\0\u2e80\u2e9d\0\u2ea2\u2eb9\0\0\u2ecb\u0e9c\0\u2f13\0\0\u2f2b\u2fbc\0\u2fc8r\u0200;ast\u0403\u2e67\u2e72\u0e85\u8100\xb6;l\u2e6d\u2e6e\u40b6le\xec\u0403\u0269\u2e78\0\0\u2e7bm;\u6af3;\u6afdy;\u443fr\u0280cimpt\u2e8b\u2e8f\u2e93\u1865\u2e97nt;\u4025od;\u402eil;\u6030enk;\u6031r;\uc000\ud835\udd2d\u0180imo\u2ea8\u2eb0\u2eb4\u0100;v\u2ead\u2eae\u43c6;\u43d5ma\xf4\u0a76ne;\u660e\u0180;tv\u2ebf\u2ec0\u2ec8\u43c0chfork\xbb\u1ffd;\u43d6\u0100au\u2ecf\u2edfn\u0100ck\u2ed5\u2eddk\u0100;h\u21f4\u2edb;\u610e\xf6\u21f4s\u0480;abcdemst\u2ef3\u2ef4\u1908\u2ef9\u2efd\u2f04\u2f06\u2f0a\u2f0e\u402bcir;\u6a23ir;\u6a22\u0100ou\u1d40\u2f02;\u6a25;\u6a72n\u80bb\xb1\u0e9dim;\u6a26wo;\u6a27\u0180ipu\u2f19\u2f20\u2f25ntint;\u6a15f;\uc000\ud835\udd61nd\u803b\xa3\u40a3\u0500;Eaceinosu\u0ec8\u2f3f\u2f41\u2f44\u2f47\u2f81\u2f89\u2f92\u2f7e\u2fb6;\u6ab3p;\u6ab7u\xe5\u0ed9\u0100;c\u0ece\u2f4c\u0300;acens\u0ec8\u2f59\u2f5f\u2f66\u2f68\u2f7eppro\xf8\u2f43urlye\xf1\u0ed9\xf1\u0ece\u0180aes\u2f6f\u2f76\u2f7approx;\u6ab9qq;\u6ab5im;\u62e8i\xed\u0edfme\u0100;s\u2f88\u0eae\u6032\u0180Eas\u2f78\u2f90\u2f7a\xf0\u2f75\u0180dfp\u0eec\u2f99\u2faf\u0180als\u2fa0\u2fa5\u2faalar;\u632eine;\u6312urf;\u6313\u0100;t\u0efb\u2fb4\xef\u0efbrel;\u62b0\u0100ci\u2fc0\u2fc5r;\uc000\ud835\udcc5;\u43c8ncsp;\u6008\u0300fiopsu\u2fda\u22e2\u2fdf\u2fe5\u2feb\u2ff1r;\uc000\ud835\udd2epf;\uc000\ud835\udd62rime;\u6057cr;\uc000\ud835\udcc6\u0180aeo\u2ff8\u3009\u3013t\u0100ei\u2ffe\u3005rnion\xf3\u06b0nt;\u6a16st\u0100;e\u3010\u3011\u403f\xf1\u1f19\xf4\u0f14\u0a80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30e0\u310e\u312b\u3147\u3162\u3172\u318e\u3206\u3215\u3224\u3229\u3258\u326e\u3272\u3290\u32b0\u32b7\u0180art\u3047\u304a\u304cr\xf2\u10b3\xf2\u03ddail;\u691car\xf2\u1c65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307f\u308f\u3094\u30cc\u0100eu\u306d\u3071;\uc000\u223d\u0331te;\u4155i\xe3\u116emptyv;\u69b3g\u0200;del\u0fd1\u3089\u308b\u308d;\u6992;\u69a5\xe5\u0fd1uo\u803b\xbb\u40bbr\u0580;abcfhlpstw\u0fdc\u30ac\u30af\u30b7\u30b9\u30bc\u30be\u30c0\u30c3\u30c7\u30cap;\u6975\u0100;f\u0fe0\u30b4s;\u6920;\u6933s;\u691e\xeb\u225d\xf0\u272el;\u6945im;\u6974l;\u61a3;\u619d\u0100ai\u30d1\u30d5il;\u691ao\u0100;n\u30db\u30dc\u6236al\xf3\u0f1e\u0180abr\u30e7\u30ea\u30eer\xf2\u17e5rk;\u6773\u0100ak\u30f3\u30fdc\u0100ek\u30f9\u30fb;\u407d;\u405d\u0100es\u3102\u3104;\u698cl\u0100du\u310a\u310c;\u698e;\u6990\u0200aeuy\u3117\u311c\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xec\u0ff2\xe2\u30fa;\u4440\u0200clqs\u3134\u3137\u313d\u3144a;\u6937dhar;\u6969uo\u0100;r\u020e\u020dh;\u61b3\u0180acg\u314e\u315f\u0f44l\u0200;ips\u0f78\u3158\u315b\u109cn\xe5\u10bbar\xf4\u0fa9t;\u65ad\u0180ilr\u3169\u1023\u316esht;\u697d;\uc000\ud835\udd2f\u0100ao\u3177\u3186r\u0100du\u317d\u317f\xbb\u047b\u0100;l\u1091\u3184;\u696c\u0100;v\u318b\u318c\u43c1;\u43f1\u0180gns\u3195\u31f9\u31fcht\u0300ahlrst\u31a4\u31b0\u31c2\u31d8\u31e4\u31eerrow\u0100;t\u0fdc\u31ada\xe9\u30c8arpoon\u0100du\u31bb\u31bfow\xee\u317ep\xbb\u1092eft\u0100ah\u31ca\u31d0rrow\xf3\u0feaarpoon\xf3\u0551ightarrows;\u61c9quigarro\xf7\u30cbhreetimes;\u62ccg;\u42daingdotse\xf1\u1f32\u0180ahm\u320d\u3210\u3213r\xf2\u0feaa\xf2\u0551;\u600foust\u0100;a\u321e\u321f\u63b1che\xbb\u321fmid;\u6aee\u0200abpt\u3232\u323d\u3240\u3252\u0100nr\u3237\u323ag;\u67edr;\u61fer\xeb\u1003\u0180afl\u3247\u324a\u324er;\u6986;\uc000\ud835\udd63us;\u6a2eimes;\u6a35\u0100ap\u325d\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6a12ar\xf2\u31e3\u0200achq\u327b\u3280\u10bc\u3285quo;\u603ar;\uc000\ud835\udcc7\u0100bu\u30fb\u328ao\u0100;r\u0214\u0213\u0180hir\u3297\u329b\u32a0re\xe5\u31f8mes;\u62cai\u0200;efl\u32aa\u1059\u1821\u32ab\u65b9tri;\u69celuhar;\u6968;\u611e\u0d61\u32d5\u32db\u32df\u332c\u3338\u3371\0\u337a\u33a4\0\0\u33ec\u33f0\0\u3428\u3448\u345a\u34ad\u34b1\u34ca\u34f1\0\u3616\0\0\u3633cute;\u415bqu\xef\u27ba\u0500;Eaceinpsy\u11ed\u32f3\u32f5\u32ff\u3302\u330b\u330f\u331f\u3326\u3329;\u6ab4\u01f0\u32fa\0\u32fc;\u6ab8on;\u4161u\xe5\u11fe\u0100;d\u11f3\u3307il;\u415frc;\u415d\u0180Eas\u3316\u3318\u331b;\u6ab6p;\u6abaim;\u62e9olint;\u6a13i\xed\u1204;\u4441ot\u0180;be\u3334\u1d47\u3335\u62c5;\u6a66\u0380Aacmstx\u3346\u334a\u3357\u335b\u335e\u3363\u336drr;\u61d8r\u0100hr\u3350\u3352\xeb\u2228\u0100;o\u0a36\u0a34t\u803b\xa7\u40a7i;\u403bwar;\u6929m\u0100in\u3369\xf0nu\xf3\xf1t;\u6736r\u0100;o\u3376\u2055\uc000\ud835\udd30\u0200acoy\u3382\u3386\u3391\u33a0rp;\u666f\u0100hy\u338b\u338fcy;\u4449;\u4448rt\u026d\u3399\0\0\u339ci\xe4\u1464ara\xec\u2e6f\u803b\xad\u40ad\u0100gm\u33a8\u33b4ma\u0180;fv\u33b1\u33b2\u33b2\u43c3;\u43c2\u0400;deglnpr\u12ab\u33c5\u33c9\u33ce\u33d6\u33de\u33e1\u33e6ot;\u6a6a\u0100;q\u12b1\u12b0\u0100;E\u33d3\u33d4\u6a9e;\u6aa0\u0100;E\u33db\u33dc\u6a9d;\u6a9fe;\u6246lus;\u6a24arr;\u6972ar\xf2\u113d\u0200aeit\u33f8\u3408\u340f\u3417\u0100ls\u33fd\u3404lsetm\xe9\u336ahp;\u6a33parsl;\u69e4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341c\u341d\u6aaa\u0100;s\u3422\u3423\u6aac;\uc000\u2aac\ufe00\u0180flp\u342e\u3433\u3442tcy;\u444c\u0100;b\u3438\u3439\u402f\u0100;a\u343e\u343f\u69c4r;\u633ff;\uc000\ud835\udd64a\u0100dr\u344d\u0402es\u0100;u\u3454\u3455\u6660it\xbb\u3455\u0180csu\u3460\u3479\u349f\u0100au\u3465\u346fp\u0100;s\u1188\u346b;\uc000\u2293\ufe00p\u0100;s\u11b4\u3475;\uc000\u2294\ufe00u\u0100bp\u347f\u348f\u0180;es\u1197\u119c\u3486et\u0100;e\u1197\u348d\xf1\u119d\u0180;es\u11a8\u11ad\u3496et\u0100;e\u11a8\u349d\xf1\u11ae\u0180;af\u117b\u34a6\u05b0r\u0165\u34ab\u05b1\xbb\u117car\xf2\u1148\u0200cemt\u34b9\u34be\u34c2\u34c5r;\uc000\ud835\udcc8tm\xee\xf1i\xec\u3415ar\xe6\u11be\u0100ar\u34ce\u34d5r\u0100;f\u34d4\u17bf\u6606\u0100an\u34da\u34edight\u0100ep\u34e3\u34eapsilo\xee\u1ee0h\xe9\u2eafs\xbb\u2852\u0280bcmnp\u34fb\u355e\u1209\u358b\u358e\u0480;Edemnprs\u350e\u350f\u3511\u3515\u351e\u3523\u352c\u3531\u3536\u6282;\u6ac5ot;\u6abd\u0100;d\u11da\u351aot;\u6ac3ult;\u6ac1\u0100Ee\u3528\u352a;\u6acb;\u628alus;\u6abfarr;\u6979\u0180eiu\u353d\u3552\u3555t\u0180;en\u350e\u3545\u354bq\u0100;q\u11da\u350feq\u0100;q\u352b\u3528m;\u6ac7\u0100bp\u355a\u355c;\u6ad5;\u6ad3c\u0300;acens\u11ed\u356c\u3572\u3579\u357b\u3326ppro\xf8\u32faurlye\xf1\u11fe\xf1\u11f3\u0180aes\u3582\u3588\u331bppro\xf8\u331aq\xf1\u3317g;\u666a\u0680123;Edehlmnps\u35a9\u35ac\u35af\u121c\u35b2\u35b4\u35c0\u35c9\u35d5\u35da\u35df\u35e8\u35ed\u803b\xb9\u40b9\u803b\xb2\u40b2\u803b\xb3\u40b3;\u6ac6\u0100os\u35b9\u35bct;\u6abeub;\u6ad8\u0100;d\u1222\u35c5ot;\u6ac4s\u0100ou\u35cf\u35d2l;\u67c9b;\u6ad7arr;\u697bult;\u6ac2\u0100Ee\u35e4\u35e6;\u6acc;\u628blus;\u6ac0\u0180eiu\u35f4\u3609\u360ct\u0180;en\u121c\u35fc\u3602q\u0100;q\u1222\u35b2eq\u0100;q\u35e7\u35e4m;\u6ac8\u0100bp\u3611\u3613;\u6ad4;\u6ad6\u0180Aan\u361c\u3620\u362drr;\u61d9r\u0100hr\u3626\u3628\xeb\u222e\u0100;o\u0a2b\u0a29war;\u692alig\u803b\xdf\u40df\u0be1\u3651\u365d\u3660\u12ce\u3673\u3679\0\u367e\u36c2\0\0\0\0\0\u36db\u3703\0\u3709\u376c\0\0\0\u3787\u0272\u3656\0\0\u365bget;\u6316;\u43c4r\xeb\u0e5f\u0180aey\u3666\u366b\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uc000\ud835\udd31\u0200eiko\u3686\u369d\u36b5\u36bc\u01f2\u368b\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369b\u43b8ym;\u43d1\u0100cn\u36a2\u36b2k\u0100as\u36a8\u36aeppro\xf8\u12c1im\xbb\u12acs\xf0\u129e\u0100as\u36ba\u36ae\xf0\u12c1rn\u803b\xfe\u40fe\u01ec\u031f\u36c6\u22e7es\u8180\xd7;bd\u36cf\u36d0\u36d8\u40d7\u0100;a\u190f\u36d5r;\u6a31;\u6a30\u0180eps\u36e1\u36e3\u3700\xe1\u2a4d\u0200;bcf\u0486\u36ec\u36f0\u36f4ot;\u6336ir;\u6af1\u0100;o\u36f9\u36fc\uc000\ud835\udd65rk;\u6ada\xe1\u3362rime;\u6034\u0180aip\u370f\u3712\u3764d\xe5\u1248\u0380adempst\u3721\u374d\u3740\u3751\u3757\u375c\u375fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65b5own\xbb\u1dbbeft\u0100;e\u2800\u373e\xf1\u092e;\u625cight\u0100;e\u32aa\u374b\xf1\u105aot;\u65ecinus;\u6a3alus;\u6a39b;\u69cdime;\u6a3bezium;\u63e2\u0180cht\u3772\u377d\u3781\u0100ry\u3777\u377b;\uc000\ud835\udcc9;\u4446cy;\u445brok;\u4167\u0100io\u378b\u378ex\xf4\u1777head\u0100lr\u3797\u37a0eftarro\xf7\u084fightarrow\xbb\u0f5d\u0900AHabcdfghlmoprstuw\u37d0\u37d3\u37d7\u37e4\u37f0\u37fc\u380e\u381c\u3823\u3834\u3851\u385d\u386b\u38a9\u38cc\u38d2\u38ea\u38f6r\xf2\u03edar;\u6963\u0100cr\u37dc\u37e2ute\u803b\xfa\u40fa\xf2\u1150r\u01e3\u37ea\0\u37edy;\u445eve;\u416d\u0100iy\u37f5\u37farc\u803b\xfb\u40fb;\u4443\u0180abh\u3803\u3806\u380br\xf2\u13adlac;\u4171a\xf2\u13c3\u0100ir\u3813\u3818sht;\u697e;\uc000\ud835\udd32rave\u803b\xf9\u40f9\u0161\u3827\u3831r\u0100lr\u382c\u382e\xbb\u0957\xbb\u1083lk;\u6580\u0100ct\u3839\u384d\u026f\u383f\0\0\u384arn\u0100;e\u3845\u3846\u631cr\xbb\u3846op;\u630fri;\u65f8\u0100al\u3856\u385acr;\u416b\u80bb\xa8\u0349\u0100gp\u3862\u3866on;\u4173f;\uc000\ud835\udd66\u0300adhlsu\u114b\u3878\u387d\u1372\u3891\u38a0own\xe1\u13b3arpoon\u0100lr\u3888\u388cef\xf4\u382digh\xf4\u382fi\u0180;hl\u3899\u389a\u389c\u43c5\xbb\u13faon\xbb\u389aparrows;\u61c8\u0180cit\u38b0\u38c4\u38c8\u026f\u38b6\0\0\u38c1rn\u0100;e\u38bc\u38bd\u631dr\xbb\u38bdop;\u630eng;\u416fri;\u65f9cr;\uc000\ud835\udcca\u0180dir\u38d9\u38dd\u38e2ot;\u62f0lde;\u4169i\u0100;f\u3730\u38e8\xbb\u1813\u0100am\u38ef\u38f2r\xf2\u38a8l\u803b\xfc\u40fcangle;\u69a7\u0780ABDacdeflnoprsz\u391c\u391f\u3929\u392d\u39b5\u39b8\u39bd\u39df\u39e4\u39e8\u39f3\u39f9\u39fd\u3a01\u3a20r\xf2\u03f7ar\u0100;v\u3926\u3927\u6ae8;\u6ae9as\xe8\u03e1\u0100nr\u3932\u3937grt;\u699c\u0380eknprst\u34e3\u3946\u394b\u3952\u395d\u3964\u3996app\xe1\u2415othin\xe7\u1e96\u0180hir\u34eb\u2ec8\u3959op\xf4\u2fb5\u0100;h\u13b7\u3962\xef\u318d\u0100iu\u3969\u396dgm\xe1\u33b3\u0100bp\u3972\u3984setneq\u0100;q\u397d\u3980\uc000\u228a\ufe00;\uc000\u2acb\ufe00setneq\u0100;q\u398f\u3992\uc000\u228b\ufe00;\uc000\u2acc\ufe00\u0100hr\u399b\u399fet\xe1\u369ciangle\u0100lr\u39aa\u39afeft\xbb\u0925ight\xbb\u1051y;\u4432ash\xbb\u1036\u0180elr\u39c4\u39d2\u39d7\u0180;be\u2dea\u39cb\u39cfar;\u62bbq;\u625alip;\u62ee\u0100bt\u39dc\u1468a\xf2\u1469r;\uc000\ud835\udd33tr\xe9\u39aesu\u0100bp\u39ef\u39f1\xbb\u0d1c\xbb\u0d59pf;\uc000\ud835\udd67ro\xf0\u0efbtr\xe9\u39b4\u0100cu\u3a06\u3a0br;\uc000\ud835\udccb\u0100bp\u3a10\u3a18n\u0100Ee\u3980\u3a16\xbb\u397en\u0100Ee\u3992\u3a1e\xbb\u3990igzag;\u699a\u0380cefoprs\u3a36\u3a3b\u3a56\u3a5b\u3a54\u3a61\u3a6airc;\u4175\u0100di\u3a40\u3a51\u0100bg\u3a45\u3a49ar;\u6a5fe\u0100;q\u15fa\u3a4f;\u6259erp;\u6118r;\uc000\ud835\udd34pf;\uc000\ud835\udd68\u0100;e\u1479\u3a66at\xe8\u1479cr;\uc000\ud835\udccc\u0ae3\u178e\u3a87\0\u3a8b\0\u3a90\u3a9b\0\0\u3a9d\u3aa8\u3aab\u3aaf\0\0\u3ac3\u3ace\0\u3ad8\u17dc\u17dftr\xe9\u17d1r;\uc000\ud835\udd35\u0100Aa\u3a94\u3a97r\xf2\u03c3r\xf2\u09f6;\u43be\u0100Aa\u3aa1\u3aa4r\xf2\u03b8r\xf2\u09eba\xf0\u2713is;\u62fb\u0180dpt\u17a4\u3ab5\u3abe\u0100fl\u3aba\u17a9;\uc000\ud835\udd69im\xe5\u17b2\u0100Aa\u3ac7\u3acar\xf2\u03cer\xf2\u0a01\u0100cq\u3ad2\u17b8r;\uc000\ud835\udccd\u0100pt\u17d6\u3adcr\xe9\u17d4\u0400acefiosu\u3af0\u3afd\u3b08\u3b0c\u3b11\u3b15\u3b1b\u3b21c\u0100uy\u3af6\u3afbte\u803b\xfd\u40fd;\u444f\u0100iy\u3b02\u3b06rc;\u4177;\u444bn\u803b\xa5\u40a5r;\uc000\ud835\udd36cy;\u4457pf;\uc000\ud835\udd6acr;\uc000\ud835\udcce\u0100cm\u3b26\u3b29y;\u444el\u803b\xff\u40ff\u0500acdefhiosw\u3b42\u3b48\u3b54\u3b58\u3b64\u3b69\u3b6d\u3b74\u3b7a\u3b80cute;\u417a\u0100ay\u3b4d\u3b52ron;\u417e;\u4437ot;\u417c\u0100et\u3b5d\u3b61tr\xe6\u155fa;\u43b6r;\uc000\ud835\udd37cy;\u4436grarr;\u61ddpf;\uc000\ud835\udd6bcr;\uc000\ud835\udccf\u0100jn\u3b85\u3b87;\u600dj;\u600c"
|
|
64094
|
+
/* #__PURE__ */ "\u1d41<\xd5\u0131\u028a\u049d\u057b\u05d0\u0675\u06de\u07a2\u07d6\u080f\u0a4a\u0a91\u0da1\u0e6d\u0f09\u0f26\u10ca\u1228\u12e1\u1415\u149d\u14c3\u14df\u1525\0\0\0\0\0\0\u156b\u16cd\u198d\u1c12\u1ddd\u1f7e\u2060\u21b0\u228d\u23c0\u23fb\u2442\u2824\u2912\u2d08\u2e48\u2fce\u3016\u32ba\u3639\u37ac\u38fe\u3a28\u3a71\u3ae0\u3b2e\u0800EMabcfglmnoprstu\\bfms\x7f\x84\x8b\x90\x95\x98\xa6\xb3\xb9\xc8\xcflig\u803b\xc6\u40c6P\u803b&\u4026cute\u803b\xc1\u40c1reve;\u4102\u0100iyx}rc\u803b\xc2\u40c2;\u4410r;\uc000\ud835\udd04rave\u803b\xc0\u40c0pha;\u4391acr;\u4100d;\u6a53\u0100gp\x9d\xa1on;\u4104f;\uc000\ud835\udd38plyFunction;\u6061ing\u803b\xc5\u40c5\u0100cs\xbe\xc3r;\uc000\ud835\udc9cign;\u6254ilde\u803b\xc3\u40c3ml\u803b\xc4\u40c4\u0400aceforsu\xe5\xfb\xfe\u0117\u011c\u0122\u0127\u012a\u0100cr\xea\xf2kslash;\u6216\u0176\xf6\xf8;\u6ae7ed;\u6306y;\u4411\u0180crt\u0105\u010b\u0114ause;\u6235noullis;\u612ca;\u4392r;\uc000\ud835\udd05pf;\uc000\ud835\udd39eve;\u42d8c\xf2\u0113mpeq;\u624e\u0700HOacdefhilorsu\u014d\u0151\u0156\u0180\u019e\u01a2\u01b5\u01b7\u01ba\u01dc\u0215\u0273\u0278\u027ecy;\u4427PY\u803b\xa9\u40a9\u0180cpy\u015d\u0162\u017aute;\u4106\u0100;i\u0167\u0168\u62d2talDifferentialD;\u6145leys;\u612d\u0200aeio\u0189\u018e\u0194\u0198ron;\u410cdil\u803b\xc7\u40c7rc;\u4108nint;\u6230ot;\u410a\u0100dn\u01a7\u01adilla;\u40b8terDot;\u40b7\xf2\u017fi;\u43a7rcle\u0200DMPT\u01c7\u01cb\u01d1\u01d6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01e2\u01f8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020foubleQuote;\u601duote;\u6019\u0200lnpu\u021e\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6a74\u0180git\u022f\u0236\u023aruent;\u6261nt;\u622fourIntegral;\u622e\u0100fr\u024c\u024e;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6a2fcr;\uc000\ud835\udc9ep\u0100;C\u0284\u0285\u62d3ap;\u624d\u0580DJSZacefios\u02a0\u02ac\u02b0\u02b4\u02b8\u02cb\u02d7\u02e1\u02e6\u0333\u048d\u0100;o\u0179\u02a5trahd;\u6911cy;\u4402cy;\u4405cy;\u440f\u0180grs\u02bf\u02c4\u02c7ger;\u6021r;\u61a1hv;\u6ae4\u0100ay\u02d0\u02d5ron;\u410e;\u4414l\u0100;t\u02dd\u02de\u6207a;\u4394r;\uc000\ud835\udd07\u0100af\u02eb\u0327\u0100cm\u02f0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031ccute;\u40b4o\u0174\u030b\u030d;\u42d9bleAcute;\u42ddrave;\u4060ilde;\u42dcond;\u62c4ferentialD;\u6146\u0470\u033d\0\0\0\u0342\u0354\0\u0405f;\uc000\ud835\udd3b\u0180;DE\u0348\u0349\u034d\u40a8ot;\u60dcqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03cf\u03e2\u03f8ontourIntegra\xec\u0239o\u0274\u0379\0\0\u037b\xbb\u0349nArrow;\u61d3\u0100eo\u0387\u03a4ft\u0180ART\u0390\u0396\u03a1rrow;\u61d0ightArrow;\u61d4e\xe5\u02cang\u0100LR\u03ab\u03c4eft\u0100AR\u03b3\u03b9rrow;\u67f8ightArrow;\u67faightArrow;\u67f9ight\u0100AT\u03d8\u03derrow;\u61d2ee;\u62a8p\u0241\u03e9\0\0\u03efrrow;\u61d1ownArrow;\u61d5erticalBar;\u6225n\u0300ABLRTa\u0412\u042a\u0430\u045e\u047f\u037crrow\u0180;BU\u041d\u041e\u0422\u6193ar;\u6913pArrow;\u61f5reve;\u4311eft\u02d2\u043a\0\u0446\0\u0450ightVector;\u6950eeVector;\u695eector\u0100;B\u0459\u045a\u61bdar;\u6956ight\u01d4\u0467\0\u0471eeVector;\u695fector\u0100;B\u047a\u047b\u61c1ar;\u6957ee\u0100;A\u0486\u0487\u62a4rrow;\u61a7\u0100ct\u0492\u0497r;\uc000\ud835\udc9frok;\u4110\u0800NTacdfglmopqstux\u04bd\u04c0\u04c4\u04cb\u04de\u04e2\u04e7\u04ee\u04f5\u0521\u052f\u0536\u0552\u055d\u0560\u0565G;\u414aH\u803b\xd0\u40d0cute\u803b\xc9\u40c9\u0180aiy\u04d2\u04d7\u04dcron;\u411arc\u803b\xca\u40ca;\u442dot;\u4116r;\uc000\ud835\udd08rave\u803b\xc8\u40c8ement;\u6208\u0100ap\u04fa\u04fecr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65fberySmallSquare;\u65ab\u0100gp\u0526\u052aon;\u4118f;\uc000\ud835\udd3csilon;\u4395u\u0100ai\u053c\u0549l\u0100;T\u0542\u0543\u6a75ilde;\u6242librium;\u61cc\u0100ci\u0557\u055ar;\u6130m;\u6a73a;\u4397ml\u803b\xcb\u40cb\u0100ip\u056a\u056fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058d\u05b2\u05ccy;\u4424r;\uc000\ud835\udd09lled\u0253\u0597\0\0\u05a3mallSquare;\u65fcerySmallSquare;\u65aa\u0370\u05ba\0\u05bf\0\0\u05c4f;\uc000\ud835\udd3dAll;\u6200riertrf;\u6131c\xf2\u05cb\u0600JTabcdfgorst\u05e8\u05ec\u05ef\u05fa\u0600\u0612\u0616\u061b\u061d\u0623\u066c\u0672cy;\u4403\u803b>\u403emma\u0100;d\u05f7\u05f8\u4393;\u43dcreve;\u411e\u0180eiy\u0607\u060c\u0610dil;\u4122rc;\u411c;\u4413ot;\u4120r;\uc000\ud835\udd0a;\u62d9pf;\uc000\ud835\udd3eeater\u0300EFGLST\u0635\u0644\u064e\u0656\u065b\u0666qual\u0100;L\u063e\u063f\u6265ess;\u62dbullEqual;\u6267reater;\u6aa2ess;\u6277lantEqual;\u6a7eilde;\u6273cr;\uc000\ud835\udca2;\u626b\u0400Aacfiosu\u0685\u068b\u0696\u069b\u069e\u06aa\u06be\u06caRDcy;\u442a\u0100ct\u0690\u0694ek;\u42c7;\u405eirc;\u4124r;\u610clbertSpace;\u610b\u01f0\u06af\0\u06b2f;\u610dizontalLine;\u6500\u0100ct\u06c3\u06c5\xf2\u06a9rok;\u4126mp\u0144\u06d0\u06d8ownHum\xf0\u012fqual;\u624f\u0700EJOacdfgmnostu\u06fa\u06fe\u0703\u0707\u070e\u071a\u071e\u0721\u0728\u0744\u0778\u078b\u078f\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803b\xcd\u40cd\u0100iy\u0713\u0718rc\u803b\xce\u40ce;\u4418ot;\u4130r;\u6111rave\u803b\xcc\u40cc\u0180;ap\u0720\u072f\u073f\u0100cg\u0734\u0737r;\u412ainaryI;\u6148lie\xf3\u03dd\u01f4\u0749\0\u0762\u0100;e\u074d\u074e\u622c\u0100gr\u0753\u0758ral;\u622bsection;\u62c2isible\u0100CT\u076c\u0772omma;\u6063imes;\u6062\u0180gpt\u077f\u0783\u0788on;\u412ef;\uc000\ud835\udd40a;\u4399cr;\u6110ilde;\u4128\u01eb\u079a\0\u079ecy;\u4406l\u803b\xcf\u40cf\u0280cfosu\u07ac\u07b7\u07bc\u07c2\u07d0\u0100iy\u07b1\u07b5rc;\u4134;\u4419r;\uc000\ud835\udd0dpf;\uc000\ud835\udd41\u01e3\u07c7\0\u07ccr;\uc000\ud835\udca5rcy;\u4408kcy;\u4404\u0380HJacfos\u07e4\u07e8\u07ec\u07f1\u07fd\u0802\u0808cy;\u4425cy;\u440cppa;\u439a\u0100ey\u07f6\u07fbdil;\u4136;\u441ar;\uc000\ud835\udd0epf;\uc000\ud835\udd42cr;\uc000\ud835\udca6\u0580JTaceflmost\u0825\u0829\u082c\u0850\u0863\u09b3\u09b8\u09c7\u09cd\u0a37\u0a47cy;\u4409\u803b<\u403c\u0280cmnpr\u0837\u083c\u0841\u0844\u084dute;\u4139bda;\u439bg;\u67ealacetrf;\u6112r;\u619e\u0180aey\u0857\u085c\u0861ron;\u413ddil;\u413b;\u441b\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087e\u08a9\u08b1\u08e0\u08e6\u08fc\u092f\u095b\u0390\u096a\u0100nr\u0883\u088fgleBracket;\u67e8row\u0180;BR\u0899\u089a\u089e\u6190ar;\u61e4ightArrow;\u61c6eiling;\u6308o\u01f5\u08b7\0\u08c3bleBracket;\u67e6n\u01d4\u08c8\0\u08d2eeVector;\u6961ector\u0100;B\u08db\u08dc\u61c3ar;\u6959loor;\u630aight\u0100AV\u08ef\u08f5rrow;\u6194ector;\u694e\u0100er\u0901\u0917e\u0180;AV\u0909\u090a\u0910\u62a3rrow;\u61a4ector;\u695aiangle\u0180;BE\u0924\u0925\u0929\u62b2ar;\u69cfqual;\u62b4p\u0180DTV\u0937\u0942\u094cownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61bfar;\u6958ector\u0100;B\u0965\u0966\u61bcar;\u6952ight\xe1\u039cs\u0300EFGLST\u097e\u098b\u0995\u099d\u09a2\u09adqualGreater;\u62daullEqual;\u6266reater;\u6276ess;\u6aa1lantEqual;\u6a7dilde;\u6272r;\uc000\ud835\udd0f\u0100;e\u09bd\u09be\u62d8ftarrow;\u61daidot;\u413f\u0180npw\u09d4\u0a16\u0a1bg\u0200LRlr\u09de\u09f7\u0a02\u0a10eft\u0100AR\u09e6\u09ecrrow;\u67f5ightArrow;\u67f7ightArrow;\u67f6eft\u0100ar\u03b3\u0a0aight\xe1\u03bfight\xe1\u03caf;\uc000\ud835\udd43er\u0100LR\u0a22\u0a2ceftArrow;\u6199ightArrow;\u6198\u0180cht\u0a3e\u0a40\u0a42\xf2\u084c;\u61b0rok;\u4141;\u626a\u0400acefiosu\u0a5a\u0a5d\u0a60\u0a77\u0a7c\u0a85\u0a8b\u0a8ep;\u6905y;\u441c\u0100dl\u0a65\u0a6fiumSpace;\u605flintrf;\u6133r;\uc000\ud835\udd10nusPlus;\u6213pf;\uc000\ud835\udd44c\xf2\u0a76;\u439c\u0480Jacefostu\u0aa3\u0aa7\u0aad\u0ac0\u0b14\u0b19\u0d91\u0d97\u0d9ecy;\u440acute;\u4143\u0180aey\u0ab4\u0ab9\u0aberon;\u4147dil;\u4145;\u441d\u0180gsw\u0ac7\u0af0\u0b0eative\u0180MTV\u0ad3\u0adf\u0ae8ediumSpace;\u600bhi\u0100cn\u0ae6\u0ad8\xeb\u0ad9eryThi\xee\u0ad9ted\u0100GL\u0af8\u0b06reaterGreate\xf2\u0673essLes\xf3\u0a48Line;\u400ar;\uc000\ud835\udd11\u0200Bnpt\u0b22\u0b28\u0b37\u0b3areak;\u6060BreakingSpace;\u40a0f;\u6115\u0680;CDEGHLNPRSTV\u0b55\u0b56\u0b6a\u0b7c\u0ba1\u0beb\u0c04\u0c5e\u0c84\u0ca6\u0cd8\u0d61\u0d85\u6aec\u0100ou\u0b5b\u0b64ngruent;\u6262pCap;\u626doubleVerticalBar;\u6226\u0180lqx\u0b83\u0b8a\u0b9bement;\u6209ual\u0100;T\u0b92\u0b93\u6260ilde;\uc000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0bb6\u0bb7\u0bbd\u0bc9\u0bd3\u0bd8\u0be5\u626fqual;\u6271ullEqual;\uc000\u2267\u0338reater;\uc000\u226b\u0338ess;\u6279lantEqual;\uc000\u2a7e\u0338ilde;\u6275ump\u0144\u0bf2\u0bfdownHump;\uc000\u224e\u0338qual;\uc000\u224f\u0338e\u0100fs\u0c0a\u0c27tTriangle\u0180;BE\u0c1a\u0c1b\u0c21\u62eaar;\uc000\u29cf\u0338qual;\u62ecs\u0300;EGLST\u0c35\u0c36\u0c3c\u0c44\u0c4b\u0c58\u626equal;\u6270reater;\u6278ess;\uc000\u226a\u0338lantEqual;\uc000\u2a7d\u0338ilde;\u6274ested\u0100GL\u0c68\u0c79reaterGreater;\uc000\u2aa2\u0338essLess;\uc000\u2aa1\u0338recedes\u0180;ES\u0c92\u0c93\u0c9b\u6280qual;\uc000\u2aaf\u0338lantEqual;\u62e0\u0100ei\u0cab\u0cb9verseElement;\u620cghtTriangle\u0180;BE\u0ccb\u0ccc\u0cd2\u62ebar;\uc000\u29d0\u0338qual;\u62ed\u0100qu\u0cdd\u0d0cuareSu\u0100bp\u0ce8\u0cf9set\u0100;E\u0cf0\u0cf3\uc000\u228f\u0338qual;\u62e2erset\u0100;E\u0d03\u0d06\uc000\u2290\u0338qual;\u62e3\u0180bcp\u0d13\u0d24\u0d4eset\u0100;E\u0d1b\u0d1e\uc000\u2282\u20d2qual;\u6288ceeds\u0200;EST\u0d32\u0d33\u0d3b\u0d46\u6281qual;\uc000\u2ab0\u0338lantEqual;\u62e1ilde;\uc000\u227f\u0338erset\u0100;E\u0d58\u0d5b\uc000\u2283\u20d2qual;\u6289ilde\u0200;EFT\u0d6e\u0d6f\u0d75\u0d7f\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uc000\ud835\udca9ilde\u803b\xd1\u40d1;\u439d\u0700Eacdfgmoprstuv\u0dbd\u0dc2\u0dc9\u0dd5\u0ddb\u0de0\u0de7\u0dfc\u0e02\u0e20\u0e22\u0e32\u0e3f\u0e44lig;\u4152cute\u803b\xd3\u40d3\u0100iy\u0dce\u0dd3rc\u803b\xd4\u40d4;\u441eblac;\u4150r;\uc000\ud835\udd12rave\u803b\xd2\u40d2\u0180aei\u0dee\u0df2\u0df6cr;\u414cga;\u43a9cron;\u439fpf;\uc000\ud835\udd46enCurly\u0100DQ\u0e0e\u0e1aoubleQuote;\u601cuote;\u6018;\u6a54\u0100cl\u0e27\u0e2cr;\uc000\ud835\udcaaash\u803b\xd8\u40d8i\u016c\u0e37\u0e3cde\u803b\xd5\u40d5es;\u6a37ml\u803b\xd6\u40d6er\u0100BP\u0e4b\u0e60\u0100ar\u0e50\u0e53r;\u603eac\u0100ek\u0e5a\u0e5c;\u63deet;\u63b4arenthesis;\u63dc\u0480acfhilors\u0e7f\u0e87\u0e8a\u0e8f\u0e92\u0e94\u0e9d\u0eb0\u0efcrtialD;\u6202y;\u441fr;\uc000\ud835\udd13i;\u43a6;\u43a0usMinus;\u40b1\u0100ip\u0ea2\u0eadncareplan\xe5\u069df;\u6119\u0200;eio\u0eb9\u0eba\u0ee0\u0ee4\u6abbcedes\u0200;EST\u0ec8\u0ec9\u0ecf\u0eda\u627aqual;\u6aaflantEqual;\u627cilde;\u627eme;\u6033\u0100dp\u0ee9\u0eeeuct;\u620fortion\u0100;a\u0225\u0ef9l;\u621d\u0100ci\u0f01\u0f06r;\uc000\ud835\udcab;\u43a8\u0200Ufos\u0f11\u0f16\u0f1b\u0f1fOT\u803b\"\u4022r;\uc000\ud835\udd14pf;\u611acr;\uc000\ud835\udcac\u0600BEacefhiorsu\u0f3e\u0f43\u0f47\u0f60\u0f73\u0fa7\u0faa\u0fad\u1096\u10a9\u10b4\u10bearr;\u6910G\u803b\xae\u40ae\u0180cnr\u0f4e\u0f53\u0f56ute;\u4154g;\u67ebr\u0100;t\u0f5c\u0f5d\u61a0l;\u6916\u0180aey\u0f67\u0f6c\u0f71ron;\u4158dil;\u4156;\u4420\u0100;v\u0f78\u0f79\u611cerse\u0100EU\u0f82\u0f99\u0100lq\u0f87\u0f8eement;\u620builibrium;\u61cbpEquilibrium;\u696fr\xbb\u0f79o;\u43a1ght\u0400ACDFTUVa\u0fc1\u0feb\u0ff3\u1022\u1028\u105b\u1087\u03d8\u0100nr\u0fc6\u0fd2gleBracket;\u67e9row\u0180;BL\u0fdc\u0fdd\u0fe1\u6192ar;\u61e5eftArrow;\u61c4eiling;\u6309o\u01f5\u0ff9\0\u1005bleBracket;\u67e7n\u01d4\u100a\0\u1014eeVector;\u695dector\u0100;B\u101d\u101e\u61c2ar;\u6955loor;\u630b\u0100er\u102d\u1043e\u0180;AV\u1035\u1036\u103c\u62a2rrow;\u61a6ector;\u695biangle\u0180;BE\u1050\u1051\u1055\u62b3ar;\u69d0qual;\u62b5p\u0180DTV\u1063\u106e\u1078ownVector;\u694feeVector;\u695cector\u0100;B\u1082\u1083\u61bear;\u6954ector\u0100;B\u1091\u1092\u61c0ar;\u6953\u0100pu\u109b\u109ef;\u611dndImplies;\u6970ightarrow;\u61db\u0100ch\u10b9\u10bcr;\u611b;\u61b1leDelayed;\u69f4\u0680HOacfhimoqstu\u10e4\u10f1\u10f7\u10fd\u1119\u111e\u1151\u1156\u1161\u1167\u11b5\u11bb\u11bf\u0100Cc\u10e9\u10eeHcy;\u4429y;\u4428FTcy;\u442ccute;\u415a\u0280;aeiy\u1108\u1109\u110e\u1113\u1117\u6abcron;\u4160dil;\u415erc;\u415c;\u4421r;\uc000\ud835\udd16ort\u0200DLRU\u112a\u1134\u113e\u1149ownArrow\xbb\u041eeftArrow\xbb\u089aightArrow\xbb\u0fddpArrow;\u6191gma;\u43a3allCircle;\u6218pf;\uc000\ud835\udd4a\u0272\u116d\0\0\u1170t;\u621aare\u0200;ISU\u117b\u117c\u1189\u11af\u65a1ntersection;\u6293u\u0100bp\u118f\u119eset\u0100;E\u1197\u1198\u628fqual;\u6291erset\u0100;E\u11a8\u11a9\u6290qual;\u6292nion;\u6294cr;\uc000\ud835\udcaear;\u62c6\u0200bcmp\u11c8\u11db\u1209\u120b\u0100;s\u11cd\u11ce\u62d0et\u0100;E\u11cd\u11d5qual;\u6286\u0100ch\u11e0\u1205eeds\u0200;EST\u11ed\u11ee\u11f4\u11ff\u627bqual;\u6ab0lantEqual;\u627dilde;\u627fTh\xe1\u0f8c;\u6211\u0180;es\u1212\u1213\u1223\u62d1rset\u0100;E\u121c\u121d\u6283qual;\u6287et\xbb\u1213\u0580HRSacfhiors\u123e\u1244\u1249\u1255\u125e\u1271\u1276\u129f\u12c2\u12c8\u12d1ORN\u803b\xde\u40deADE;\u6122\u0100Hc\u124e\u1252cy;\u440by;\u4426\u0100bu\u125a\u125c;\u4009;\u43a4\u0180aey\u1265\u126a\u126fron;\u4164dil;\u4162;\u4422r;\uc000\ud835\udd17\u0100ei\u127b\u1289\u01f2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128e\u1298kSpace;\uc000\u205f\u200aSpace;\u6009lde\u0200;EFT\u12ab\u12ac\u12b2\u12bc\u623cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uc000\ud835\udd4bipleDot;\u60db\u0100ct\u12d6\u12dbr;\uc000\ud835\udcafrok;\u4166\u0ae1\u12f7\u130e\u131a\u1326\0\u132c\u1331\0\0\0\0\0\u1338\u133d\u1377\u1385\0\u13ff\u1404\u140a\u1410\u0100cr\u12fb\u1301ute\u803b\xda\u40dar\u0100;o\u1307\u1308\u619fcir;\u6949r\u01e3\u1313\0\u1316y;\u440eve;\u416c\u0100iy\u131e\u1323rc\u803b\xdb\u40db;\u4423blac;\u4170r;\uc000\ud835\udd18rave\u803b\xd9\u40d9acr;\u416a\u0100di\u1341\u1369er\u0100BP\u1348\u135d\u0100ar\u134d\u1350r;\u405fac\u0100ek\u1357\u1359;\u63dfet;\u63b5arenthesis;\u63ddon\u0100;P\u1370\u1371\u62c3lus;\u628e\u0100gp\u137b\u137fon;\u4172f;\uc000\ud835\udd4c\u0400ADETadps\u1395\u13ae\u13b8\u13c4\u03e8\u13d2\u13d7\u13f3rrow\u0180;BD\u1150\u13a0\u13a4ar;\u6912ownArrow;\u61c5ownArrow;\u6195quilibrium;\u696eee\u0100;A\u13cb\u13cc\u62a5rrow;\u61a5own\xe1\u03f3er\u0100LR\u13de\u13e8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13f9\u13fa\u43d2on;\u43a5ing;\u416ecr;\uc000\ud835\udcb0ilde;\u4168ml\u803b\xdc\u40dc\u0480Dbcdefosv\u1427\u142c\u1430\u1433\u143e\u1485\u148a\u1490\u1496ash;\u62abar;\u6aeby;\u4412ash\u0100;l\u143b\u143c\u62a9;\u6ae6\u0100er\u1443\u1445;\u62c1\u0180bty\u144c\u1450\u147aar;\u6016\u0100;i\u144f\u1455cal\u0200BLST\u1461\u1465\u146a\u1474ar;\u6223ine;\u407ceparator;\u6758ilde;\u6240ThinSpace;\u600ar;\uc000\ud835\udd19pf;\uc000\ud835\udd4dcr;\uc000\ud835\udcb1dash;\u62aa\u0280cefos\u14a7\u14ac\u14b1\u14b6\u14bcirc;\u4174dge;\u62c0r;\uc000\ud835\udd1apf;\uc000\ud835\udd4ecr;\uc000\ud835\udcb2\u0200fios\u14cb\u14d0\u14d2\u14d8r;\uc000\ud835\udd1b;\u439epf;\uc000\ud835\udd4fcr;\uc000\ud835\udcb3\u0480AIUacfosu\u14f1\u14f5\u14f9\u14fd\u1504\u150f\u1514\u151a\u1520cy;\u442fcy;\u4407cy;\u442ecute\u803b\xdd\u40dd\u0100iy\u1509\u150drc;\u4176;\u442br;\uc000\ud835\udd1cpf;\uc000\ud835\udd50cr;\uc000\ud835\udcb4ml;\u4178\u0400Hacdefos\u1535\u1539\u153f\u154b\u154f\u155d\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417d;\u4417ot;\u417b\u01f2\u1554\0\u155boWidt\xe8\u0ad9a;\u4396r;\u6128pf;\u6124cr;\uc000\ud835\udcb5\u0be1\u1583\u158a\u1590\0\u15b0\u15b6\u15bf\0\0\0\0\u15c6\u15db\u15eb\u165f\u166d\0\u1695\u169b\u16b2\u16b9\0\u16becute\u803b\xe1\u40e1reve;\u4103\u0300;Ediuy\u159c\u159d\u15a1\u15a3\u15a8\u15ad\u623e;\uc000\u223e\u0333;\u623frc\u803b\xe2\u40e2te\u80bb\xb4\u0306;\u4430lig\u803b\xe6\u40e6\u0100;r\xb2\u15ba;\uc000\ud835\udd1erave\u803b\xe0\u40e0\u0100ep\u15ca\u15d6\u0100fp\u15cf\u15d4sym;\u6135\xe8\u15d3ha;\u43b1\u0100ap\u15dfc\u0100cl\u15e4\u15e7r;\u4101g;\u6a3f\u0264\u15f0\0\0\u160a\u0280;adsv\u15fa\u15fb\u15ff\u1601\u1607\u6227nd;\u6a55;\u6a5clope;\u6a58;\u6a5a\u0380;elmrsz\u1618\u1619\u161b\u161e\u163f\u164f\u1659\u6220;\u69a4e\xbb\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163a\u163c\u163e;\u69a8;\u69a9;\u69aa;\u69ab;\u69ac;\u69ad;\u69ae;\u69aft\u0100;v\u1645\u1646\u621fb\u0100;d\u164c\u164d\u62be;\u699d\u0100pt\u1654\u1657h;\u6222\xbb\xb9arr;\u637c\u0100gp\u1663\u1667on;\u4105f;\uc000\ud835\udd52\u0380;Eaeiop\u12c1\u167b\u167d\u1682\u1684\u1687\u168a;\u6a70cir;\u6a6f;\u624ad;\u624bs;\u4027rox\u0100;e\u12c1\u1692\xf1\u1683ing\u803b\xe5\u40e5\u0180cty\u16a1\u16a6\u16a8r;\uc000\ud835\udcb6;\u402amp\u0100;e\u12c1\u16af\xf1\u0288ilde\u803b\xe3\u40e3ml\u803b\xe4\u40e4\u0100ci\u16c2\u16c8onin\xf4\u0272nt;\u6a11\u0800Nabcdefiklnoprsu\u16ed\u16f1\u1730\u173c\u1743\u1748\u1778\u177d\u17e0\u17e6\u1839\u1850\u170d\u193d\u1948\u1970ot;\u6aed\u0100cr\u16f6\u171ek\u0200ceps\u1700\u1705\u170d\u1713ong;\u624cpsilon;\u43f6rime;\u6035im\u0100;e\u171a\u171b\u623dq;\u62cd\u0176\u1722\u1726ee;\u62bded\u0100;g\u172c\u172d\u6305e\xbb\u172drk\u0100;t\u135c\u1737brk;\u63b6\u0100oy\u1701\u1741;\u4431quo;\u601e\u0280cmprt\u1753\u175b\u1761\u1764\u1768aus\u0100;e\u010a\u0109ptyv;\u69b0s\xe9\u170cno\xf5\u0113\u0180ahw\u176f\u1771\u1773;\u43b2;\u6136een;\u626cr;\uc000\ud835\udd1fg\u0380costuvw\u178d\u179d\u17b3\u17c1\u17d5\u17db\u17de\u0180aiu\u1794\u1796\u179a\xf0\u0760rc;\u65efp\xbb\u1371\u0180dpt\u17a4\u17a8\u17adot;\u6a00lus;\u6a01imes;\u6a02\u0271\u17b9\0\0\u17becup;\u6a06ar;\u6605riangle\u0100du\u17cd\u17d2own;\u65bdp;\u65b3plus;\u6a04e\xe5\u1444\xe5\u14adarow;\u690d\u0180ako\u17ed\u1826\u1835\u0100cn\u17f2\u1823k\u0180lst\u17fa\u05ab\u1802ozenge;\u69ebriangle\u0200;dlr\u1812\u1813\u1818\u181d\u65b4own;\u65beeft;\u65c2ight;\u65b8k;\u6423\u01b1\u182b\0\u1833\u01b2\u182f\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183e\u184d\u0100;q\u1843\u1846\uc000=\u20e5uiv;\uc000\u2261\u20e5t;\u6310\u0200ptwx\u1859\u185e\u1867\u186cf;\uc000\ud835\udd53\u0100;t\u13cb\u1863om\xbb\u13cctie;\u62c8\u0600DHUVbdhmptuv\u1885\u1896\u18aa\u18bb\u18d7\u18db\u18ec\u18ff\u1905\u190a\u1910\u1921\u0200LRlr\u188e\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18a1\u18a2\u18a4\u18a6\u18a8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18b3\u18b5\u18b7\u18b9;\u655d;\u655a;\u655c;\u6559\u0380;HLRhlr\u18ca\u18cb\u18cd\u18cf\u18d1\u18d3\u18d5\u6551;\u656c;\u6563;\u6560;\u656b;\u6562;\u655fox;\u69c9\u0200LRlr\u18e4\u18e6\u18e8\u18ea;\u6555;\u6552;\u6510;\u650c\u0280;DUdu\u06bd\u18f7\u18f9\u18fb\u18fd;\u6565;\u6568;\u652c;\u6534inus;\u629flus;\u629eimes;\u62a0\u0200LRlr\u1919\u191b\u191d\u191f;\u655b;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193b\u6502;\u656a;\u6561;\u655e;\u653c;\u6524;\u651c\u0100ev\u0123\u1942bar\u803b\xa6\u40a6\u0200ceio\u1951\u1956\u195a\u1960r;\uc000\ud835\udcb7mi;\u604fm\u0100;e\u171a\u171cl\u0180;bh\u1968\u1969\u196b\u405c;\u69c5sub;\u67c8\u016c\u1974\u197el\u0100;e\u1979\u197a\u6022t\xbb\u197ap\u0180;Ee\u012f\u1985\u1987;\u6aae\u0100;q\u06dc\u06db\u0ce1\u19a7\0\u19e8\u1a11\u1a15\u1a32\0\u1a37\u1a50\0\0\u1ab4\0\0\u1ac1\0\0\u1b21\u1b2e\u1b4d\u1b52\0\u1bfd\0\u1c0c\u0180cpr\u19ad\u19b2\u19ddute;\u4107\u0300;abcds\u19bf\u19c0\u19c4\u19ca\u19d5\u19d9\u6229nd;\u6a44rcup;\u6a49\u0100au\u19cf\u19d2p;\u6a4bp;\u6a47ot;\u6a40;\uc000\u2229\ufe00\u0100eo\u19e2\u19e5t;\u6041\xee\u0693\u0200aeiu\u19f0\u19fb\u1a01\u1a05\u01f0\u19f5\0\u19f8s;\u6a4don;\u410ddil\u803b\xe7\u40e7rc;\u4109ps\u0100;s\u1a0c\u1a0d\u6a4cm;\u6a50ot;\u410b\u0180dmn\u1a1b\u1a20\u1a26il\u80bb\xb8\u01adptyv;\u69b2t\u8100\xa2;e\u1a2d\u1a2e\u40a2r\xe4\u01b2r;\uc000\ud835\udd20\u0180cei\u1a3d\u1a40\u1a4dy;\u4447ck\u0100;m\u1a47\u1a48\u6713ark\xbb\u1a48;\u43c7r\u0380;Ecefms\u1a5f\u1a60\u1a62\u1a6b\u1aa4\u1aaa\u1aae\u65cb;\u69c3\u0180;el\u1a69\u1a6a\u1a6d\u42c6q;\u6257e\u0261\u1a74\0\0\u1a88rrow\u0100lr\u1a7c\u1a81eft;\u61baight;\u61bb\u0280RSacd\u1a92\u1a94\u1a96\u1a9a\u1a9f\xbb\u0f47;\u64c8st;\u629birc;\u629aash;\u629dnint;\u6a10id;\u6aefcir;\u69c2ubs\u0100;u\u1abb\u1abc\u6663it\xbb\u1abc\u02ec\u1ac7\u1ad4\u1afa\0\u1b0aon\u0100;e\u1acd\u1ace\u403a\u0100;q\xc7\xc6\u026d\u1ad9\0\0\u1ae2a\u0100;t\u1ade\u1adf\u402c;\u4040\u0180;fl\u1ae8\u1ae9\u1aeb\u6201\xee\u1160e\u0100mx\u1af1\u1af6ent\xbb\u1ae9e\xf3\u024d\u01e7\u1afe\0\u1b07\u0100;d\u12bb\u1b02ot;\u6a6dn\xf4\u0246\u0180fry\u1b10\u1b14\u1b17;\uc000\ud835\udd54o\xe4\u0254\u8100\xa9;s\u0155\u1b1dr;\u6117\u0100ao\u1b25\u1b29rr;\u61b5ss;\u6717\u0100cu\u1b32\u1b37r;\uc000\ud835\udcb8\u0100bp\u1b3c\u1b44\u0100;e\u1b41\u1b42\u6acf;\u6ad1\u0100;e\u1b49\u1b4a\u6ad0;\u6ad2dot;\u62ef\u0380delprvw\u1b60\u1b6c\u1b77\u1b82\u1bac\u1bd4\u1bf9arr\u0100lr\u1b68\u1b6a;\u6938;\u6935\u0270\u1b72\0\0\u1b75r;\u62dec;\u62dfarr\u0100;p\u1b7f\u1b80\u61b6;\u693d\u0300;bcdos\u1b8f\u1b90\u1b96\u1ba1\u1ba5\u1ba8\u622arcap;\u6a48\u0100au\u1b9b\u1b9ep;\u6a46p;\u6a4aot;\u628dr;\u6a45;\uc000\u222a\ufe00\u0200alrv\u1bb5\u1bbf\u1bde\u1be3rr\u0100;m\u1bbc\u1bbd\u61b7;\u693cy\u0180evw\u1bc7\u1bd4\u1bd8q\u0270\u1bce\0\0\u1bd2re\xe3\u1b73u\xe3\u1b75ee;\u62ceedge;\u62cfen\u803b\xa4\u40a4earrow\u0100lr\u1bee\u1bf3eft\xbb\u1b80ight\xbb\u1bbde\xe4\u1bdd\u0100ci\u1c01\u1c07onin\xf4\u01f7nt;\u6231lcty;\u632d\u0980AHabcdefhijlorstuwz\u1c38\u1c3b\u1c3f\u1c5d\u1c69\u1c75\u1c8a\u1c9e\u1cac\u1cb7\u1cfb\u1cff\u1d0d\u1d7b\u1d91\u1dab\u1dbb\u1dc6\u1dcdr\xf2\u0381ar;\u6965\u0200glrs\u1c48\u1c4d\u1c52\u1c54ger;\u6020eth;\u6138\xf2\u1133h\u0100;v\u1c5a\u1c5b\u6010\xbb\u090a\u016b\u1c61\u1c67arow;\u690fa\xe3\u0315\u0100ay\u1c6e\u1c73ron;\u410f;\u4434\u0180;ao\u0332\u1c7c\u1c84\u0100gr\u02bf\u1c81r;\u61catseq;\u6a77\u0180glm\u1c91\u1c94\u1c98\u803b\xb0\u40b0ta;\u43b4ptyv;\u69b1\u0100ir\u1ca3\u1ca8sht;\u697f;\uc000\ud835\udd21ar\u0100lr\u1cb3\u1cb5\xbb\u08dc\xbb\u101e\u0280aegsv\u1cc2\u0378\u1cd6\u1cdc\u1ce0m\u0180;os\u0326\u1cca\u1cd4nd\u0100;s\u0326\u1cd1uit;\u6666amma;\u43ddin;\u62f2\u0180;io\u1ce7\u1ce8\u1cf8\u40f7de\u8100\xf7;o\u1ce7\u1cf0ntimes;\u62c7n\xf8\u1cf7cy;\u4452c\u026f\u1d06\0\0\u1d0arn;\u631eop;\u630d\u0280lptuw\u1d18\u1d1d\u1d22\u1d49\u1d55lar;\u4024f;\uc000\ud835\udd55\u0280;emps\u030b\u1d2d\u1d37\u1d3d\u1d42q\u0100;d\u0352\u1d33ot;\u6251inus;\u6238lus;\u6214quare;\u62a1blebarwedg\xe5\xfan\u0180adh\u112e\u1d5d\u1d67ownarrow\xf3\u1c83arpoon\u0100lr\u1d72\u1d76ef\xf4\u1cb4igh\xf4\u1cb6\u0162\u1d7f\u1d85karo\xf7\u0f42\u026f\u1d8a\0\0\u1d8ern;\u631fop;\u630c\u0180cot\u1d98\u1da3\u1da6\u0100ry\u1d9d\u1da1;\uc000\ud835\udcb9;\u4455l;\u69f6rok;\u4111\u0100dr\u1db0\u1db4ot;\u62f1i\u0100;f\u1dba\u1816\u65bf\u0100ah\u1dc0\u1dc3r\xf2\u0429a\xf2\u0fa6angle;\u69a6\u0100ci\u1dd2\u1dd5y;\u445fgrarr;\u67ff\u0900Dacdefglmnopqrstux\u1e01\u1e09\u1e19\u1e38\u0578\u1e3c\u1e49\u1e61\u1e7e\u1ea5\u1eaf\u1ebd\u1ee1\u1f2a\u1f37\u1f44\u1f4e\u1f5a\u0100Do\u1e06\u1d34o\xf4\u1c89\u0100cs\u1e0e\u1e14ute\u803b\xe9\u40e9ter;\u6a6e\u0200aioy\u1e22\u1e27\u1e31\u1e36ron;\u411br\u0100;c\u1e2d\u1e2e\u6256\u803b\xea\u40ealon;\u6255;\u444dot;\u4117\u0100Dr\u1e41\u1e45ot;\u6252;\uc000\ud835\udd22\u0180;rs\u1e50\u1e51\u1e57\u6a9aave\u803b\xe8\u40e8\u0100;d\u1e5c\u1e5d\u6a96ot;\u6a98\u0200;ils\u1e6a\u1e6b\u1e72\u1e74\u6a99nters;\u63e7;\u6113\u0100;d\u1e79\u1e7a\u6a95ot;\u6a97\u0180aps\u1e85\u1e89\u1e97cr;\u4113ty\u0180;sv\u1e92\u1e93\u1e95\u6205et\xbb\u1e93p\u01001;\u1e9d\u1ea4\u0133\u1ea1\u1ea3;\u6004;\u6005\u6003\u0100gs\u1eaa\u1eac;\u414bp;\u6002\u0100gp\u1eb4\u1eb8on;\u4119f;\uc000\ud835\udd56\u0180als\u1ec4\u1ece\u1ed2r\u0100;s\u1eca\u1ecb\u62d5l;\u69e3us;\u6a71i\u0180;lv\u1eda\u1edb\u1edf\u43b5on\xbb\u1edb;\u43f5\u0200csuv\u1eea\u1ef3\u1f0b\u1f23\u0100io\u1eef\u1e31rc\xbb\u1e2e\u0269\u1ef9\0\0\u1efb\xed\u0548ant\u0100gl\u1f02\u1f06tr\xbb\u1e5dess\xbb\u1e7a\u0180aei\u1f12\u1f16\u1f1als;\u403dst;\u625fv\u0100;D\u0235\u1f20D;\u6a78parsl;\u69e5\u0100Da\u1f2f\u1f33ot;\u6253rr;\u6971\u0180cdi\u1f3e\u1f41\u1ef8r;\u612fo\xf4\u0352\u0100ah\u1f49\u1f4b;\u43b7\u803b\xf0\u40f0\u0100mr\u1f53\u1f57l\u803b\xeb\u40ebo;\u60ac\u0180cip\u1f61\u1f64\u1f67l;\u4021s\xf4\u056e\u0100eo\u1f6c\u1f74ctatio\xee\u0559nential\xe5\u0579\u09e1\u1f92\0\u1f9e\0\u1fa1\u1fa7\0\0\u1fc6\u1fcc\0\u1fd3\0\u1fe6\u1fea\u2000\0\u2008\u205allingdotse\xf1\u1e44y;\u4444male;\u6640\u0180ilr\u1fad\u1fb3\u1fc1lig;\u8000\ufb03\u0269\u1fb9\0\0\u1fbdg;\u8000\ufb00ig;\u8000\ufb04;\uc000\ud835\udd23lig;\u8000\ufb01lig;\uc000fj\u0180alt\u1fd9\u1fdc\u1fe1t;\u666dig;\u8000\ufb02ns;\u65b1of;\u4192\u01f0\u1fee\0\u1ff3f;\uc000\ud835\udd57\u0100ak\u05bf\u1ff7\u0100;v\u1ffc\u1ffd\u62d4;\u6ad9artint;\u6a0d\u0100ao\u200c\u2055\u0100cs\u2011\u2052\u03b1\u201a\u2030\u2038\u2045\u2048\0\u2050\u03b2\u2022\u2025\u2027\u202a\u202c\0\u202e\u803b\xbd\u40bd;\u6153\u803b\xbc\u40bc;\u6155;\u6159;\u615b\u01b3\u2034\0\u2036;\u6154;\u6156\u02b4\u203e\u2041\0\0\u2043\u803b\xbe\u40be;\u6157;\u615c5;\u6158\u01b6\u204c\0\u204e;\u615a;\u615d8;\u615el;\u6044wn;\u6322cr;\uc000\ud835\udcbb\u0880Eabcdefgijlnorstv\u2082\u2089\u209f\u20a5\u20b0\u20b4\u20f0\u20f5\u20fa\u20ff\u2103\u2112\u2138\u0317\u213e\u2152\u219e\u0100;l\u064d\u2087;\u6a8c\u0180cmp\u2090\u2095\u209dute;\u41f5ma\u0100;d\u209c\u1cda\u43b3;\u6a86reve;\u411f\u0100iy\u20aa\u20aerc;\u411d;\u4433ot;\u4121\u0200;lqs\u063e\u0642\u20bd\u20c9\u0180;qs\u063e\u064c\u20c4lan\xf4\u0665\u0200;cdl\u0665\u20d2\u20d5\u20e5c;\u6aa9ot\u0100;o\u20dc\u20dd\u6a80\u0100;l\u20e2\u20e3\u6a82;\u6a84\u0100;e\u20ea\u20ed\uc000\u22db\ufe00s;\u6a94r;\uc000\ud835\udd24\u0100;g\u0673\u061bmel;\u6137cy;\u4453\u0200;Eaj\u065a\u210c\u210e\u2110;\u6a92;\u6aa5;\u6aa4\u0200Eaes\u211b\u211d\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6a8arox\xbb\u2124\u0100;q\u212e\u212f\u6a88\u0100;q\u212e\u211bim;\u62e7pf;\uc000\ud835\udd58\u0100ci\u2143\u2146r;\u610am\u0180;el\u066b\u214e\u2150;\u6a8e;\u6a90\u8300>;cdlqr\u05ee\u2160\u216a\u216e\u2173\u2179\u0100ci\u2165\u2167;\u6aa7r;\u6a7aot;\u62d7Par;\u6995uest;\u6a7c\u0280adels\u2184\u216a\u2190\u0656\u219b\u01f0\u2189\0\u218epro\xf8\u209er;\u6978q\u0100lq\u063f\u2196les\xf3\u2088i\xed\u066b\u0100en\u21a3\u21adrtneqq;\uc000\u2269\ufe00\xc5\u21aa\u0500Aabcefkosy\u21c4\u21c7\u21f1\u21f5\u21fa\u2218\u221d\u222f\u2268\u227dr\xf2\u03a0\u0200ilmr\u21d0\u21d4\u21d7\u21dbrs\xf0\u1484f\xbb\u2024il\xf4\u06a9\u0100dr\u21e0\u21e4cy;\u444a\u0180;cw\u08f4\u21eb\u21efir;\u6948;\u61adar;\u610firc;\u4125\u0180alr\u2201\u220e\u2213rts\u0100;u\u2209\u220a\u6665it\xbb\u220alip;\u6026con;\u62b9r;\uc000\ud835\udd25s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223a\u223e\u2243\u225e\u2263rr;\u61fftht;\u623bk\u0100lr\u2249\u2253eftarrow;\u61a9ightarrow;\u61aaf;\uc000\ud835\udd59bar;\u6015\u0180clt\u226f\u2274\u2278r;\uc000\ud835\udcbdas\xe8\u21f4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xbb\u1c5b\u0ae1\u22a3\0\u22aa\0\u22b8\u22c5\u22ce\0\u22d5\u22f3\0\0\u22f8\u2322\u2367\u2362\u237f\0\u2386\u23aa\u23b4cute\u803b\xed\u40ed\u0180;iy\u0771\u22b0\u22b5rc\u803b\xee\u40ee;\u4438\u0100cx\u22bc\u22bfy;\u4435cl\u803b\xa1\u40a1\u0100fr\u039f\u22c9;\uc000\ud835\udd26rave\u803b\xec\u40ec\u0200;ino\u073e\u22dd\u22e9\u22ee\u0100in\u22e2\u22e6nt;\u6a0ct;\u622dfin;\u69dcta;\u6129lig;\u4133\u0180aop\u22fe\u231a\u231d\u0180cgt\u2305\u2308\u2317r;\u412b\u0180elp\u071f\u230f\u2313in\xe5\u078ear\xf4\u0720h;\u4131f;\u62b7ed;\u41b5\u0280;cfot\u04f4\u232c\u2331\u233d\u2341are;\u6105in\u0100;t\u2338\u2339\u621eie;\u69dddo\xf4\u2319\u0280;celp\u0757\u234c\u2350\u235b\u2361al;\u62ba\u0100gr\u2355\u2359er\xf3\u1563\xe3\u234darhk;\u6a17rod;\u6a3c\u0200cgpt\u236f\u2372\u2376\u237by;\u4451on;\u412ff;\uc000\ud835\udd5aa;\u43b9uest\u803b\xbf\u40bf\u0100ci\u238a\u238fr;\uc000\ud835\udcben\u0280;Edsv\u04f4\u239b\u239d\u23a1\u04f3;\u62f9ot;\u62f5\u0100;v\u23a6\u23a7\u62f4;\u62f3\u0100;i\u0777\u23aelde;\u4129\u01eb\u23b8\0\u23bccy;\u4456l\u803b\xef\u40ef\u0300cfmosu\u23cc\u23d7\u23dc\u23e1\u23e7\u23f5\u0100iy\u23d1\u23d5rc;\u4135;\u4439r;\uc000\ud835\udd27ath;\u4237pf;\uc000\ud835\udd5b\u01e3\u23ec\0\u23f1r;\uc000\ud835\udcbfrcy;\u4458kcy;\u4454\u0400acfghjos\u240b\u2416\u2422\u2427\u242d\u2431\u2435\u243bppa\u0100;v\u2413\u2414\u43ba;\u43f0\u0100ey\u241b\u2420dil;\u4137;\u443ar;\uc000\ud835\udd28reen;\u4138cy;\u4445cy;\u445cpf;\uc000\ud835\udd5ccr;\uc000\ud835\udcc0\u0b80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248d\u2491\u250e\u253d\u255a\u2580\u264e\u265e\u2665\u2679\u267d\u269a\u26b2\u26d8\u275d\u2768\u278b\u27c0\u2801\u2812\u0180art\u2477\u247a\u247cr\xf2\u09c6\xf2\u0395ail;\u691barr;\u690e\u0100;g\u0994\u248b;\u6a8bar;\u6962\u0963\u24a5\0\u24aa\0\u24b1\0\0\0\0\0\u24b5\u24ba\0\u24c6\u24c8\u24cd\0\u24f9ute;\u413amptyv;\u69b4ra\xee\u084cbda;\u43bbg\u0180;dl\u088e\u24c1\u24c3;\u6991\xe5\u088e;\u6a85uo\u803b\xab\u40abr\u0400;bfhlpst\u0899\u24de\u24e6\u24e9\u24eb\u24ee\u24f1\u24f5\u0100;f\u089d\u24e3s;\u691fs;\u691d\xeb\u2252p;\u61abl;\u6939im;\u6973l;\u61a2\u0180;ae\u24ff\u2500\u2504\u6aabil;\u6919\u0100;s\u2509\u250a\u6aad;\uc000\u2aad\ufe00\u0180abr\u2515\u2519\u251drr;\u690crk;\u6772\u0100ak\u2522\u252cc\u0100ek\u2528\u252a;\u407b;\u405b\u0100es\u2531\u2533;\u698bl\u0100du\u2539\u253b;\u698f;\u698d\u0200aeuy\u2546\u254b\u2556\u2558ron;\u413e\u0100di\u2550\u2554il;\u413c\xec\u08b0\xe2\u2529;\u443b\u0200cqrs\u2563\u2566\u256d\u257da;\u6936uo\u0100;r\u0e19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694bh;\u61b2\u0280;fgqs\u258b\u258c\u0989\u25f3\u25ff\u6264t\u0280ahlrt\u2598\u25a4\u25b7\u25c2\u25e8rrow\u0100;t\u0899\u25a1a\xe9\u24f6arpoon\u0100du\u25af\u25b4own\xbb\u045ap\xbb\u0966eftarrows;\u61c7ight\u0180ahs\u25cd\u25d6\u25derrow\u0100;s\u08f4\u08a7arpoon\xf3\u0f98quigarro\xf7\u21f0hreetimes;\u62cb\u0180;qs\u258b\u0993\u25falan\xf4\u09ac\u0280;cdgs\u09ac\u260a\u260d\u261d\u2628c;\u6aa8ot\u0100;o\u2614\u2615\u6a7f\u0100;r\u261a\u261b\u6a81;\u6a83\u0100;e\u2622\u2625\uc000\u22da\ufe00s;\u6a93\u0280adegs\u2633\u2639\u263d\u2649\u264bppro\xf8\u24c6ot;\u62d6q\u0100gq\u2643\u2645\xf4\u0989gt\xf2\u248c\xf4\u099bi\xed\u09b2\u0180ilr\u2655\u08e1\u265asht;\u697c;\uc000\ud835\udd29\u0100;E\u099c\u2663;\u6a91\u0161\u2669\u2676r\u0100du\u25b2\u266e\u0100;l\u0965\u2673;\u696alk;\u6584cy;\u4459\u0280;acht\u0a48\u2688\u268b\u2691\u2696r\xf2\u25c1orne\xf2\u1d08ard;\u696bri;\u65fa\u0100io\u269f\u26a4dot;\u4140ust\u0100;a\u26ac\u26ad\u63b0che\xbb\u26ad\u0200Eaes\u26bb\u26bd\u26c9\u26d4;\u6268p\u0100;p\u26c3\u26c4\u6a89rox\xbb\u26c4\u0100;q\u26ce\u26cf\u6a87\u0100;q\u26ce\u26bbim;\u62e6\u0400abnoptwz\u26e9\u26f4\u26f7\u271a\u272f\u2741\u2747\u2750\u0100nr\u26ee\u26f1g;\u67ecr;\u61fdr\xeb\u08c1g\u0180lmr\u26ff\u270d\u2714eft\u0100ar\u09e6\u2707ight\xe1\u09f2apsto;\u67fcight\xe1\u09fdparrow\u0100lr\u2725\u2729ef\xf4\u24edight;\u61ac\u0180afl\u2736\u2739\u273dr;\u6985;\uc000\ud835\udd5dus;\u6a2dimes;\u6a34\u0161\u274b\u274fst;\u6217\xe1\u134e\u0180;ef\u2757\u2758\u1800\u65cange\xbb\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277c\u2785\u2787r\xf2\u08a8orne\xf2\u1d8car\u0100;d\u0f98\u2783;\u696d;\u600eri;\u62bf\u0300achiqt\u2798\u279d\u0a40\u27a2\u27ae\u27bbquo;\u6039r;\uc000\ud835\udcc1m\u0180;eg\u09b2\u27aa\u27ac;\u6a8d;\u6a8f\u0100bu\u252a\u27b3o\u0100;r\u0e1f\u27b9;\u601arok;\u4142\u8400<;cdhilqr\u082b\u27d2\u2639\u27dc\u27e0\u27e5\u27ea\u27f0\u0100ci\u27d7\u27d9;\u6aa6r;\u6a79re\xe5\u25f2mes;\u62c9arr;\u6976uest;\u6a7b\u0100Pi\u27f5\u27f9ar;\u6996\u0180;ef\u2800\u092d\u181b\u65c3r\u0100du\u2807\u280dshar;\u694ahar;\u6966\u0100en\u2817\u2821rtneqq;\uc000\u2268\ufe00\xc5\u281e\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288e\u2893\u28a0\u28a5\u28a8\u28da\u28e2\u28e4\u0a83\u28f3\u2902Dot;\u623a\u0200clpr\u284e\u2852\u2863\u287dr\u803b\xaf\u40af\u0100et\u2857\u2859;\u6642\u0100;e\u285e\u285f\u6720se\xbb\u285f\u0100;s\u103b\u2868to\u0200;dlu\u103b\u2873\u2877\u287bow\xee\u048cef\xf4\u090f\xf0\u13d1ker;\u65ae\u0100oy\u2887\u288cmma;\u6a29;\u443cash;\u6014asuredangle\xbb\u1626r;\uc000\ud835\udd2ao;\u6127\u0180cdn\u28af\u28b4\u28c9ro\u803b\xb5\u40b5\u0200;acd\u1464\u28bd\u28c0\u28c4s\xf4\u16a7ir;\u6af0ot\u80bb\xb7\u01b5us\u0180;bd\u28d2\u1903\u28d3\u6212\u0100;u\u1d3c\u28d8;\u6a2a\u0163\u28de\u28e1p;\u6adb\xf2\u2212\xf0\u0a81\u0100dp\u28e9\u28eeels;\u62a7f;\uc000\ud835\udd5e\u0100ct\u28f8\u28fdr;\uc000\ud835\udcc2pos\xbb\u159d\u0180;lm\u2909\u290a\u290d\u43bctimap;\u62b8\u0c00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297e\u2989\u2998\u29da\u29e9\u2a15\u2a1a\u2a58\u2a5d\u2a83\u2a95\u2aa4\u2aa8\u2b04\u2b07\u2b44\u2b7f\u2bae\u2c34\u2c67\u2c7c\u2ce9\u0100gt\u2947\u294b;\uc000\u22d9\u0338\u0100;v\u2950\u0bcf\uc000\u226b\u20d2\u0180elt\u295a\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61cdightarrow;\u61ce;\uc000\u22d8\u0338\u0100;v\u297b\u0c47\uc000\u226a\u20d2ightarrow;\u61cf\u0100Dd\u298e\u2993ash;\u62afash;\u62ae\u0280bcnpt\u29a3\u29a7\u29ac\u29b1\u29ccla\xbb\u02deute;\u4144g;\uc000\u2220\u20d2\u0280;Eiop\u0d84\u29bc\u29c0\u29c5\u29c8;\uc000\u2a70\u0338d;\uc000\u224b\u0338s;\u4149ro\xf8\u0d84ur\u0100;a\u29d3\u29d4\u666el\u0100;s\u29d3\u0b38\u01f3\u29df\0\u29e3p\u80bb\xa0\u0b37mp\u0100;e\u0bf9\u0c00\u0280aeouy\u29f4\u29fe\u2a03\u2a10\u2a13\u01f0\u29f9\0\u29fb;\u6a43on;\u4148dil;\u4146ng\u0100;d\u0d7e\u2a0aot;\uc000\u2a6d\u0338p;\u6a42;\u443dash;\u6013\u0380;Aadqsx\u0b92\u2a29\u2a2d\u2a3b\u2a41\u2a45\u2a50rr;\u61d7r\u0100hr\u2a33\u2a36k;\u6924\u0100;o\u13f2\u13f0ot;\uc000\u2250\u0338ui\xf6\u0b63\u0100ei\u2a4a\u2a4ear;\u6928\xed\u0b98ist\u0100;s\u0ba0\u0b9fr;\uc000\ud835\udd2b\u0200Eest\u0bc5\u2a66\u2a79\u2a7c\u0180;qs\u0bbc\u2a6d\u0be1\u0180;qs\u0bbc\u0bc5\u2a74lan\xf4\u0be2i\xed\u0bea\u0100;r\u0bb6\u2a81\xbb\u0bb7\u0180Aap\u2a8a\u2a8d\u2a91r\xf2\u2971rr;\u61aear;\u6af2\u0180;sv\u0f8d\u2a9c\u0f8c\u0100;d\u2aa1\u2aa2\u62fc;\u62facy;\u445a\u0380AEadest\u2ab7\u2aba\u2abe\u2ac2\u2ac5\u2af6\u2af9r\xf2\u2966;\uc000\u2266\u0338rr;\u619ar;\u6025\u0200;fqs\u0c3b\u2ace\u2ae3\u2aeft\u0100ar\u2ad4\u2ad9rro\xf7\u2ac1ightarro\xf7\u2a90\u0180;qs\u0c3b\u2aba\u2aealan\xf4\u0c55\u0100;s\u0c55\u2af4\xbb\u0c36i\xed\u0c5d\u0100;r\u0c35\u2afei\u0100;e\u0c1a\u0c25i\xe4\u0d90\u0100pt\u2b0c\u2b11f;\uc000\ud835\udd5f\u8180\xac;in\u2b19\u2b1a\u2b36\u40acn\u0200;Edv\u0b89\u2b24\u2b28\u2b2e;\uc000\u22f9\u0338ot;\uc000\u22f5\u0338\u01e1\u0b89\u2b33\u2b35;\u62f7;\u62f6i\u0100;v\u0cb8\u2b3c\u01e1\u0cb8\u2b41\u2b43;\u62fe;\u62fd\u0180aor\u2b4b\u2b63\u2b69r\u0200;ast\u0b7b\u2b55\u2b5a\u2b5flle\xec\u0b7bl;\uc000\u2afd\u20e5;\uc000\u2202\u0338lint;\u6a14\u0180;ce\u0c92\u2b70\u2b73u\xe5\u0ca5\u0100;c\u0c98\u2b78\u0100;e\u0c92\u2b7d\xf1\u0c98\u0200Aait\u2b88\u2b8b\u2b9d\u2ba7r\xf2\u2988rr\u0180;cw\u2b94\u2b95\u2b99\u619b;\uc000\u2933\u0338;\uc000\u219d\u0338ghtarrow\xbb\u2b95ri\u0100;e\u0ccb\u0cd6\u0380chimpqu\u2bbd\u2bcd\u2bd9\u2b04\u0b78\u2be4\u2bef\u0200;cer\u0d32\u2bc6\u0d37\u2bc9u\xe5\u0d45;\uc000\ud835\udcc3ort\u026d\u2b05\0\0\u2bd6ar\xe1\u2b56m\u0100;e\u0d6e\u2bdf\u0100;q\u0d74\u0d73su\u0100bp\u2beb\u2bed\xe5\u0cf8\xe5\u0d0b\u0180bcp\u2bf6\u2c11\u2c19\u0200;Ees\u2bff\u2c00\u0d22\u2c04\u6284;\uc000\u2ac5\u0338et\u0100;e\u0d1b\u2c0bq\u0100;q\u0d23\u2c00c\u0100;e\u0d32\u2c17\xf1\u0d38\u0200;Ees\u2c22\u2c23\u0d5f\u2c27\u6285;\uc000\u2ac6\u0338et\u0100;e\u0d58\u2c2eq\u0100;q\u0d60\u2c23\u0200gilr\u2c3d\u2c3f\u2c45\u2c47\xec\u0bd7lde\u803b\xf1\u40f1\xe7\u0c43iangle\u0100lr\u2c52\u2c5ceft\u0100;e\u0c1a\u2c5a\xf1\u0c26ight\u0100;e\u0ccb\u2c65\xf1\u0cd7\u0100;m\u2c6c\u2c6d\u43bd\u0180;es\u2c74\u2c75\u2c79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2c8f\u2c94\u2c99\u2c9e\u2ca3\u2cb0\u2cb6\u2cd3\u2ce3ash;\u62adarr;\u6904p;\uc000\u224d\u20d2ash;\u62ac\u0100et\u2ca8\u2cac;\uc000\u2265\u20d2;\uc000>\u20d2nfin;\u69de\u0180Aet\u2cbd\u2cc1\u2cc5rr;\u6902;\uc000\u2264\u20d2\u0100;r\u2cca\u2ccd\uc000<\u20d2ie;\uc000\u22b4\u20d2\u0100At\u2cd8\u2cdcrr;\u6903rie;\uc000\u22b5\u20d2im;\uc000\u223c\u20d2\u0180Aan\u2cf0\u2cf4\u2d02rr;\u61d6r\u0100hr\u2cfa\u2cfdk;\u6923\u0100;o\u13e7\u13e5ear;\u6927\u1253\u1a95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2d2d\0\u2d38\u2d48\u2d60\u2d65\u2d72\u2d84\u1b07\0\0\u2d8d\u2dab\0\u2dc8\u2dce\0\u2ddc\u2e19\u2e2b\u2e3e\u2e43\u0100cs\u2d31\u1a97ute\u803b\xf3\u40f3\u0100iy\u2d3c\u2d45r\u0100;c\u1a9e\u2d42\u803b\xf4\u40f4;\u443e\u0280abios\u1aa0\u2d52\u2d57\u01c8\u2d5alac;\u4151v;\u6a38old;\u69bclig;\u4153\u0100cr\u2d69\u2d6dir;\u69bf;\uc000\ud835\udd2c\u036f\u2d79\0\0\u2d7c\0\u2d82n;\u42dbave\u803b\xf2\u40f2;\u69c1\u0100bm\u2d88\u0df4ar;\u69b5\u0200acit\u2d95\u2d98\u2da5\u2da8r\xf2\u1a80\u0100ir\u2d9d\u2da0r;\u69beoss;\u69bbn\xe5\u0e52;\u69c0\u0180aei\u2db1\u2db5\u2db9cr;\u414dga;\u43c9\u0180cdn\u2dc0\u2dc5\u01cdron;\u43bf;\u69b6pf;\uc000\ud835\udd60\u0180ael\u2dd4\u2dd7\u01d2r;\u69b7rp;\u69b9\u0380;adiosv\u2dea\u2deb\u2dee\u2e08\u2e0d\u2e10\u2e16\u6228r\xf2\u1a86\u0200;efm\u2df7\u2df8\u2e02\u2e05\u6a5dr\u0100;o\u2dfe\u2dff\u6134f\xbb\u2dff\u803b\xaa\u40aa\u803b\xba\u40bagof;\u62b6r;\u6a56lope;\u6a57;\u6a5b\u0180clo\u2e1f\u2e21\u2e27\xf2\u2e01ash\u803b\xf8\u40f8l;\u6298i\u016c\u2e2f\u2e34de\u803b\xf5\u40f5es\u0100;a\u01db\u2e3as;\u6a36ml\u803b\xf6\u40f6bar;\u633d\u0ae1\u2e5e\0\u2e7d\0\u2e80\u2e9d\0\u2ea2\u2eb9\0\0\u2ecb\u0e9c\0\u2f13\0\0\u2f2b\u2fbc\0\u2fc8r\u0200;ast\u0403\u2e67\u2e72\u0e85\u8100\xb6;l\u2e6d\u2e6e\u40b6le\xec\u0403\u0269\u2e78\0\0\u2e7bm;\u6af3;\u6afdy;\u443fr\u0280cimpt\u2e8b\u2e8f\u2e93\u1865\u2e97nt;\u4025od;\u402eil;\u6030enk;\u6031r;\uc000\ud835\udd2d\u0180imo\u2ea8\u2eb0\u2eb4\u0100;v\u2ead\u2eae\u43c6;\u43d5ma\xf4\u0a76ne;\u660e\u0180;tv\u2ebf\u2ec0\u2ec8\u43c0chfork\xbb\u1ffd;\u43d6\u0100au\u2ecf\u2edfn\u0100ck\u2ed5\u2eddk\u0100;h\u21f4\u2edb;\u610e\xf6\u21f4s\u0480;abcdemst\u2ef3\u2ef4\u1908\u2ef9\u2efd\u2f04\u2f06\u2f0a\u2f0e\u402bcir;\u6a23ir;\u6a22\u0100ou\u1d40\u2f02;\u6a25;\u6a72n\u80bb\xb1\u0e9dim;\u6a26wo;\u6a27\u0180ipu\u2f19\u2f20\u2f25ntint;\u6a15f;\uc000\ud835\udd61nd\u803b\xa3\u40a3\u0500;Eaceinosu\u0ec8\u2f3f\u2f41\u2f44\u2f47\u2f81\u2f89\u2f92\u2f7e\u2fb6;\u6ab3p;\u6ab7u\xe5\u0ed9\u0100;c\u0ece\u2f4c\u0300;acens\u0ec8\u2f59\u2f5f\u2f66\u2f68\u2f7eppro\xf8\u2f43urlye\xf1\u0ed9\xf1\u0ece\u0180aes\u2f6f\u2f76\u2f7approx;\u6ab9qq;\u6ab5im;\u62e8i\xed\u0edfme\u0100;s\u2f88\u0eae\u6032\u0180Eas\u2f78\u2f90\u2f7a\xf0\u2f75\u0180dfp\u0eec\u2f99\u2faf\u0180als\u2fa0\u2fa5\u2faalar;\u632eine;\u6312urf;\u6313\u0100;t\u0efb\u2fb4\xef\u0efbrel;\u62b0\u0100ci\u2fc0\u2fc5r;\uc000\ud835\udcc5;\u43c8ncsp;\u6008\u0300fiopsu\u2fda\u22e2\u2fdf\u2fe5\u2feb\u2ff1r;\uc000\ud835\udd2epf;\uc000\ud835\udd62rime;\u6057cr;\uc000\ud835\udcc6\u0180aeo\u2ff8\u3009\u3013t\u0100ei\u2ffe\u3005rnion\xf3\u06b0nt;\u6a16st\u0100;e\u3010\u3011\u403f\xf1\u1f19\xf4\u0f14\u0a80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30e0\u310e\u312b\u3147\u3162\u3172\u318e\u3206\u3215\u3224\u3229\u3258\u326e\u3272\u3290\u32b0\u32b7\u0180art\u3047\u304a\u304cr\xf2\u10b3\xf2\u03ddail;\u691car\xf2\u1c65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307f\u308f\u3094\u30cc\u0100eu\u306d\u3071;\uc000\u223d\u0331te;\u4155i\xe3\u116emptyv;\u69b3g\u0200;del\u0fd1\u3089\u308b\u308d;\u6992;\u69a5\xe5\u0fd1uo\u803b\xbb\u40bbr\u0580;abcfhlpstw\u0fdc\u30ac\u30af\u30b7\u30b9\u30bc\u30be\u30c0\u30c3\u30c7\u30cap;\u6975\u0100;f\u0fe0\u30b4s;\u6920;\u6933s;\u691e\xeb\u225d\xf0\u272el;\u6945im;\u6974l;\u61a3;\u619d\u0100ai\u30d1\u30d5il;\u691ao\u0100;n\u30db\u30dc\u6236al\xf3\u0f1e\u0180abr\u30e7\u30ea\u30eer\xf2\u17e5rk;\u6773\u0100ak\u30f3\u30fdc\u0100ek\u30f9\u30fb;\u407d;\u405d\u0100es\u3102\u3104;\u698cl\u0100du\u310a\u310c;\u698e;\u6990\u0200aeuy\u3117\u311c\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xec\u0ff2\xe2\u30fa;\u4440\u0200clqs\u3134\u3137\u313d\u3144a;\u6937dhar;\u6969uo\u0100;r\u020e\u020dh;\u61b3\u0180acg\u314e\u315f\u0f44l\u0200;ips\u0f78\u3158\u315b\u109cn\xe5\u10bbar\xf4\u0fa9t;\u65ad\u0180ilr\u3169\u1023\u316esht;\u697d;\uc000\ud835\udd2f\u0100ao\u3177\u3186r\u0100du\u317d\u317f\xbb\u047b\u0100;l\u1091\u3184;\u696c\u0100;v\u318b\u318c\u43c1;\u43f1\u0180gns\u3195\u31f9\u31fcht\u0300ahlrst\u31a4\u31b0\u31c2\u31d8\u31e4\u31eerrow\u0100;t\u0fdc\u31ada\xe9\u30c8arpoon\u0100du\u31bb\u31bfow\xee\u317ep\xbb\u1092eft\u0100ah\u31ca\u31d0rrow\xf3\u0feaarpoon\xf3\u0551ightarrows;\u61c9quigarro\xf7\u30cbhreetimes;\u62ccg;\u42daingdotse\xf1\u1f32\u0180ahm\u320d\u3210\u3213r\xf2\u0feaa\xf2\u0551;\u600foust\u0100;a\u321e\u321f\u63b1che\xbb\u321fmid;\u6aee\u0200abpt\u3232\u323d\u3240\u3252\u0100nr\u3237\u323ag;\u67edr;\u61fer\xeb\u1003\u0180afl\u3247\u324a\u324er;\u6986;\uc000\ud835\udd63us;\u6a2eimes;\u6a35\u0100ap\u325d\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6a12ar\xf2\u31e3\u0200achq\u327b\u3280\u10bc\u3285quo;\u603ar;\uc000\ud835\udcc7\u0100bu\u30fb\u328ao\u0100;r\u0214\u0213\u0180hir\u3297\u329b\u32a0re\xe5\u31f8mes;\u62cai\u0200;efl\u32aa\u1059\u1821\u32ab\u65b9tri;\u69celuhar;\u6968;\u611e\u0d61\u32d5\u32db\u32df\u332c\u3338\u3371\0\u337a\u33a4\0\0\u33ec\u33f0\0\u3428\u3448\u345a\u34ad\u34b1\u34ca\u34f1\0\u3616\0\0\u3633cute;\u415bqu\xef\u27ba\u0500;Eaceinpsy\u11ed\u32f3\u32f5\u32ff\u3302\u330b\u330f\u331f\u3326\u3329;\u6ab4\u01f0\u32fa\0\u32fc;\u6ab8on;\u4161u\xe5\u11fe\u0100;d\u11f3\u3307il;\u415frc;\u415d\u0180Eas\u3316\u3318\u331b;\u6ab6p;\u6abaim;\u62e9olint;\u6a13i\xed\u1204;\u4441ot\u0180;be\u3334\u1d47\u3335\u62c5;\u6a66\u0380Aacmstx\u3346\u334a\u3357\u335b\u335e\u3363\u336drr;\u61d8r\u0100hr\u3350\u3352\xeb\u2228\u0100;o\u0a36\u0a34t\u803b\xa7\u40a7i;\u403bwar;\u6929m\u0100in\u3369\xf0nu\xf3\xf1t;\u6736r\u0100;o\u3376\u2055\uc000\ud835\udd30\u0200acoy\u3382\u3386\u3391\u33a0rp;\u666f\u0100hy\u338b\u338fcy;\u4449;\u4448rt\u026d\u3399\0\0\u339ci\xe4\u1464ara\xec\u2e6f\u803b\xad\u40ad\u0100gm\u33a8\u33b4ma\u0180;fv\u33b1\u33b2\u33b2\u43c3;\u43c2\u0400;deglnpr\u12ab\u33c5\u33c9\u33ce\u33d6\u33de\u33e1\u33e6ot;\u6a6a\u0100;q\u12b1\u12b0\u0100;E\u33d3\u33d4\u6a9e;\u6aa0\u0100;E\u33db\u33dc\u6a9d;\u6a9fe;\u6246lus;\u6a24arr;\u6972ar\xf2\u113d\u0200aeit\u33f8\u3408\u340f\u3417\u0100ls\u33fd\u3404lsetm\xe9\u336ahp;\u6a33parsl;\u69e4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341c\u341d\u6aaa\u0100;s\u3422\u3423\u6aac;\uc000\u2aac\ufe00\u0180flp\u342e\u3433\u3442tcy;\u444c\u0100;b\u3438\u3439\u402f\u0100;a\u343e\u343f\u69c4r;\u633ff;\uc000\ud835\udd64a\u0100dr\u344d\u0402es\u0100;u\u3454\u3455\u6660it\xbb\u3455\u0180csu\u3460\u3479\u349f\u0100au\u3465\u346fp\u0100;s\u1188\u346b;\uc000\u2293\ufe00p\u0100;s\u11b4\u3475;\uc000\u2294\ufe00u\u0100bp\u347f\u348f\u0180;es\u1197\u119c\u3486et\u0100;e\u1197\u348d\xf1\u119d\u0180;es\u11a8\u11ad\u3496et\u0100;e\u11a8\u349d\xf1\u11ae\u0180;af\u117b\u34a6\u05b0r\u0165\u34ab\u05b1\xbb\u117car\xf2\u1148\u0200cemt\u34b9\u34be\u34c2\u34c5r;\uc000\ud835\udcc8tm\xee\xf1i\xec\u3415ar\xe6\u11be\u0100ar\u34ce\u34d5r\u0100;f\u34d4\u17bf\u6606\u0100an\u34da\u34edight\u0100ep\u34e3\u34eapsilo\xee\u1ee0h\xe9\u2eafs\xbb\u2852\u0280bcmnp\u34fb\u355e\u1209\u358b\u358e\u0480;Edemnprs\u350e\u350f\u3511\u3515\u351e\u3523\u352c\u3531\u3536\u6282;\u6ac5ot;\u6abd\u0100;d\u11da\u351aot;\u6ac3ult;\u6ac1\u0100Ee\u3528\u352a;\u6acb;\u628alus;\u6abfarr;\u6979\u0180eiu\u353d\u3552\u3555t\u0180;en\u350e\u3545\u354bq\u0100;q\u11da\u350feq\u0100;q\u352b\u3528m;\u6ac7\u0100bp\u355a\u355c;\u6ad5;\u6ad3c\u0300;acens\u11ed\u356c\u3572\u3579\u357b\u3326ppro\xf8\u32faurlye\xf1\u11fe\xf1\u11f3\u0180aes\u3582\u3588\u331bppro\xf8\u331aq\xf1\u3317g;\u666a\u0680123;Edehlmnps\u35a9\u35ac\u35af\u121c\u35b2\u35b4\u35c0\u35c9\u35d5\u35da\u35df\u35e8\u35ed\u803b\xb9\u40b9\u803b\xb2\u40b2\u803b\xb3\u40b3;\u6ac6\u0100os\u35b9\u35bct;\u6abeub;\u6ad8\u0100;d\u1222\u35c5ot;\u6ac4s\u0100ou\u35cf\u35d2l;\u67c9b;\u6ad7arr;\u697bult;\u6ac2\u0100Ee\u35e4\u35e6;\u6acc;\u628blus;\u6ac0\u0180eiu\u35f4\u3609\u360ct\u0180;en\u121c\u35fc\u3602q\u0100;q\u1222\u35b2eq\u0100;q\u35e7\u35e4m;\u6ac8\u0100bp\u3611\u3613;\u6ad4;\u6ad6\u0180Aan\u361c\u3620\u362drr;\u61d9r\u0100hr\u3626\u3628\xeb\u222e\u0100;o\u0a2b\u0a29war;\u692alig\u803b\xdf\u40df\u0be1\u3651\u365d\u3660\u12ce\u3673\u3679\0\u367e\u36c2\0\0\0\0\0\u36db\u3703\0\u3709\u376c\0\0\0\u3787\u0272\u3656\0\0\u365bget;\u6316;\u43c4r\xeb\u0e5f\u0180aey\u3666\u366b\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uc000\ud835\udd31\u0200eiko\u3686\u369d\u36b5\u36bc\u01f2\u368b\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369b\u43b8ym;\u43d1\u0100cn\u36a2\u36b2k\u0100as\u36a8\u36aeppro\xf8\u12c1im\xbb\u12acs\xf0\u129e\u0100as\u36ba\u36ae\xf0\u12c1rn\u803b\xfe\u40fe\u01ec\u031f\u36c6\u22e7es\u8180\xd7;bd\u36cf\u36d0\u36d8\u40d7\u0100;a\u190f\u36d5r;\u6a31;\u6a30\u0180eps\u36e1\u36e3\u3700\xe1\u2a4d\u0200;bcf\u0486\u36ec\u36f0\u36f4ot;\u6336ir;\u6af1\u0100;o\u36f9\u36fc\uc000\ud835\udd65rk;\u6ada\xe1\u3362rime;\u6034\u0180aip\u370f\u3712\u3764d\xe5\u1248\u0380adempst\u3721\u374d\u3740\u3751\u3757\u375c\u375fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65b5own\xbb\u1dbbeft\u0100;e\u2800\u373e\xf1\u092e;\u625cight\u0100;e\u32aa\u374b\xf1\u105aot;\u65ecinus;\u6a3alus;\u6a39b;\u69cdime;\u6a3bezium;\u63e2\u0180cht\u3772\u377d\u3781\u0100ry\u3777\u377b;\uc000\ud835\udcc9;\u4446cy;\u445brok;\u4167\u0100io\u378b\u378ex\xf4\u1777head\u0100lr\u3797\u37a0eftarro\xf7\u084fightarrow\xbb\u0f5d\u0900AHabcdfghlmoprstuw\u37d0\u37d3\u37d7\u37e4\u37f0\u37fc\u380e\u381c\u3823\u3834\u3851\u385d\u386b\u38a9\u38cc\u38d2\u38ea\u38f6r\xf2\u03edar;\u6963\u0100cr\u37dc\u37e2ute\u803b\xfa\u40fa\xf2\u1150r\u01e3\u37ea\0\u37edy;\u445eve;\u416d\u0100iy\u37f5\u37farc\u803b\xfb\u40fb;\u4443\u0180abh\u3803\u3806\u380br\xf2\u13adlac;\u4171a\xf2\u13c3\u0100ir\u3813\u3818sht;\u697e;\uc000\ud835\udd32rave\u803b\xf9\u40f9\u0161\u3827\u3831r\u0100lr\u382c\u382e\xbb\u0957\xbb\u1083lk;\u6580\u0100ct\u3839\u384d\u026f\u383f\0\0\u384arn\u0100;e\u3845\u3846\u631cr\xbb\u3846op;\u630fri;\u65f8\u0100al\u3856\u385acr;\u416b\u80bb\xa8\u0349\u0100gp\u3862\u3866on;\u4173f;\uc000\ud835\udd66\u0300adhlsu\u114b\u3878\u387d\u1372\u3891\u38a0own\xe1\u13b3arpoon\u0100lr\u3888\u388cef\xf4\u382digh\xf4\u382fi\u0180;hl\u3899\u389a\u389c\u43c5\xbb\u13faon\xbb\u389aparrows;\u61c8\u0180cit\u38b0\u38c4\u38c8\u026f\u38b6\0\0\u38c1rn\u0100;e\u38bc\u38bd\u631dr\xbb\u38bdop;\u630eng;\u416fri;\u65f9cr;\uc000\ud835\udcca\u0180dir\u38d9\u38dd\u38e2ot;\u62f0lde;\u4169i\u0100;f\u3730\u38e8\xbb\u1813\u0100am\u38ef\u38f2r\xf2\u38a8l\u803b\xfc\u40fcangle;\u69a7\u0780ABDacdeflnoprsz\u391c\u391f\u3929\u392d\u39b5\u39b8\u39bd\u39df\u39e4\u39e8\u39f3\u39f9\u39fd\u3a01\u3a20r\xf2\u03f7ar\u0100;v\u3926\u3927\u6ae8;\u6ae9as\xe8\u03e1\u0100nr\u3932\u3937grt;\u699c\u0380eknprst\u34e3\u3946\u394b\u3952\u395d\u3964\u3996app\xe1\u2415othin\xe7\u1e96\u0180hir\u34eb\u2ec8\u3959op\xf4\u2fb5\u0100;h\u13b7\u3962\xef\u318d\u0100iu\u3969\u396dgm\xe1\u33b3\u0100bp\u3972\u3984setneq\u0100;q\u397d\u3980\uc000\u228a\ufe00;\uc000\u2acb\ufe00setneq\u0100;q\u398f\u3992\uc000\u228b\ufe00;\uc000\u2acc\ufe00\u0100hr\u399b\u399fet\xe1\u369ciangle\u0100lr\u39aa\u39afeft\xbb\u0925ight\xbb\u1051y;\u4432ash\xbb\u1036\u0180elr\u39c4\u39d2\u39d7\u0180;be\u2dea\u39cb\u39cfar;\u62bbq;\u625alip;\u62ee\u0100bt\u39dc\u1468a\xf2\u1469r;\uc000\ud835\udd33tr\xe9\u39aesu\u0100bp\u39ef\u39f1\xbb\u0d1c\xbb\u0d59pf;\uc000\ud835\udd67ro\xf0\u0efbtr\xe9\u39b4\u0100cu\u3a06\u3a0br;\uc000\ud835\udccb\u0100bp\u3a10\u3a18n\u0100Ee\u3980\u3a16\xbb\u397en\u0100Ee\u3992\u3a1e\xbb\u3990igzag;\u699a\u0380cefoprs\u3a36\u3a3b\u3a56\u3a5b\u3a54\u3a61\u3a6airc;\u4175\u0100di\u3a40\u3a51\u0100bg\u3a45\u3a49ar;\u6a5fe\u0100;q\u15fa\u3a4f;\u6259erp;\u6118r;\uc000\ud835\udd34pf;\uc000\ud835\udd68\u0100;e\u1479\u3a66at\xe8\u1479cr;\uc000\ud835\udccc\u0ae3\u178e\u3a87\0\u3a8b\0\u3a90\u3a9b\0\0\u3a9d\u3aa8\u3aab\u3aaf\0\0\u3ac3\u3ace\0\u3ad8\u17dc\u17dftr\xe9\u17d1r;\uc000\ud835\udd35\u0100Aa\u3a94\u3a97r\xf2\u03c3r\xf2\u09f6;\u43be\u0100Aa\u3aa1\u3aa4r\xf2\u03b8r\xf2\u09eba\xf0\u2713is;\u62fb\u0180dpt\u17a4\u3ab5\u3abe\u0100fl\u3aba\u17a9;\uc000\ud835\udd69im\xe5\u17b2\u0100Aa\u3ac7\u3acar\xf2\u03cer\xf2\u0a01\u0100cq\u3ad2\u17b8r;\uc000\ud835\udccd\u0100pt\u17d6\u3adcr\xe9\u17d4\u0400acefiosu\u3af0\u3afd\u3b08\u3b0c\u3b11\u3b15\u3b1b\u3b21c\u0100uy\u3af6\u3afbte\u803b\xfd\u40fd;\u444f\u0100iy\u3b02\u3b06rc;\u4177;\u444bn\u803b\xa5\u40a5r;\uc000\ud835\udd36cy;\u4457pf;\uc000\ud835\udd6acr;\uc000\ud835\udcce\u0100cm\u3b26\u3b29y;\u444el\u803b\xff\u40ff\u0500acdefhiosw\u3b42\u3b48\u3b54\u3b58\u3b64\u3b69\u3b6d\u3b74\u3b7a\u3b80cute;\u417a\u0100ay\u3b4d\u3b52ron;\u417e;\u4437ot;\u417c\u0100et\u3b5d\u3b61tr\xe6\u155fa;\u43b6r;\uc000\ud835\udd37cy;\u4436grarr;\u61ddpf;\uc000\ud835\udd6bcr;\uc000\ud835\udccf\u0100jn\u3b85\u3b87;\u600dj;\u600c"
|
|
64089
64095
|
.split("")
|
|
64090
|
-
.map((c) => c.charCodeAt(0)))
|
|
64096
|
+
.map((c) => c.charCodeAt(0)));
|
|
64091
64097
|
//# sourceMappingURL=decode-data-html.js.map
|
|
64092
|
-
;// ./node_modules/entities/
|
|
64098
|
+
;// ./node_modules/parse5/node_modules/entities/dist/esm/generated/decode-data-xml.js
|
|
64093
64099
|
// Generated using scripts/write-decode-map.ts
|
|
64094
|
-
|
|
64100
|
+
const decode_data_xml_xmlDecodeTree = /* #__PURE__ */ new Uint16Array(
|
|
64095
64101
|
// prettier-ignore
|
|
64096
|
-
"\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022"
|
|
64102
|
+
/* #__PURE__ */ "\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022"
|
|
64097
64103
|
.split("")
|
|
64098
|
-
.map((c) => c.charCodeAt(0)))
|
|
64104
|
+
.map((c) => c.charCodeAt(0)));
|
|
64099
64105
|
//# sourceMappingURL=decode-data-xml.js.map
|
|
64100
|
-
;// ./node_modules/entities/
|
|
64106
|
+
;// ./node_modules/parse5/node_modules/entities/dist/esm/decode-codepoint.js
|
|
64101
64107
|
// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134
|
|
64102
64108
|
var decode_codepoint_a;
|
|
64103
64109
|
const decodeMap = new Map([
|
|
@@ -64134,14 +64140,14 @@ const decodeMap = new Map([
|
|
|
64134
64140
|
/**
|
|
64135
64141
|
* Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.
|
|
64136
64142
|
*/
|
|
64137
|
-
const
|
|
64138
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition,
|
|
64143
|
+
const decode_codepoint_fromCodePoint =
|
|
64144
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins
|
|
64139
64145
|
(decode_codepoint_a = String.fromCodePoint) !== null && decode_codepoint_a !== void 0 ? decode_codepoint_a : function (codePoint) {
|
|
64140
64146
|
let output = "";
|
|
64141
|
-
if (codePoint >
|
|
64142
|
-
codePoint -=
|
|
64143
|
-
output += String.fromCharCode(((codePoint >>> 10) &
|
|
64144
|
-
codePoint =
|
|
64147
|
+
if (codePoint > 65535) {
|
|
64148
|
+
codePoint -= 65536;
|
|
64149
|
+
output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296);
|
|
64150
|
+
codePoint = 56320 | (codePoint & 1023);
|
|
64145
64151
|
}
|
|
64146
64152
|
output += String.fromCharCode(codePoint);
|
|
64147
64153
|
return output;
|
|
@@ -64153,8 +64159,9 @@ const fromCodePoint =
|
|
|
64153
64159
|
*/
|
|
64154
64160
|
function replaceCodePoint(codePoint) {
|
|
64155
64161
|
var _a;
|
|
64156
|
-
if ((codePoint >=
|
|
64157
|
-
|
|
64162
|
+
if ((codePoint >= 55296 && codePoint <= 57343) ||
|
|
64163
|
+
codePoint > 1114111) {
|
|
64164
|
+
return 65533;
|
|
64158
64165
|
}
|
|
64159
64166
|
return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;
|
|
64160
64167
|
}
|
|
@@ -64166,15 +64173,12 @@ function replaceCodePoint(codePoint) {
|
|
|
64166
64173
|
* @returns The decoded code point.
|
|
64167
64174
|
*/
|
|
64168
64175
|
function decodeCodePoint(codePoint) {
|
|
64169
|
-
return
|
|
64176
|
+
return decode_codepoint_fromCodePoint(replaceCodePoint(codePoint));
|
|
64170
64177
|
}
|
|
64171
|
-
//# sourceMappingURL=
|
|
64172
|
-
;// ./node_modules/entities/
|
|
64173
|
-
|
|
64178
|
+
//# sourceMappingURL=decode-codepoint.js.map
|
|
64179
|
+
;// ./node_modules/parse5/node_modules/entities/dist/esm/decode.js
|
|
64174
64180
|
|
|
64175
64181
|
|
|
64176
|
-
// Re-export for use by eg. htmlparser2
|
|
64177
|
-
|
|
64178
64182
|
|
|
64179
64183
|
var CharCodes;
|
|
64180
64184
|
(function (CharCodes) {
|
|
@@ -64192,7 +64196,7 @@ var CharCodes;
|
|
|
64192
64196
|
CharCodes[CharCodes["UPPER_Z"] = 90] = "UPPER_Z";
|
|
64193
64197
|
})(CharCodes || (CharCodes = {}));
|
|
64194
64198
|
/** Bit that needs to be set to convert an upper case ASCII character to lower case */
|
|
64195
|
-
const TO_LOWER_BIT =
|
|
64199
|
+
const TO_LOWER_BIT = 32;
|
|
64196
64200
|
var BinTrieFlags;
|
|
64197
64201
|
(function (BinTrieFlags) {
|
|
64198
64202
|
BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
|
|
@@ -64293,32 +64297,32 @@ class EntityDecoder {
|
|
|
64293
64297
|
* Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
|
|
64294
64298
|
* entity is incomplete, and resume when the next string is written.
|
|
64295
64299
|
*
|
|
64296
|
-
* @param
|
|
64300
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
64297
64301
|
* @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
|
|
64298
64302
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
64299
64303
|
*/
|
|
64300
|
-
write(
|
|
64304
|
+
write(input, offset) {
|
|
64301
64305
|
switch (this.state) {
|
|
64302
64306
|
case EntityDecoderState.EntityStart: {
|
|
64303
|
-
if (
|
|
64307
|
+
if (input.charCodeAt(offset) === CharCodes.NUM) {
|
|
64304
64308
|
this.state = EntityDecoderState.NumericStart;
|
|
64305
64309
|
this.consumed += 1;
|
|
64306
|
-
return this.stateNumericStart(
|
|
64310
|
+
return this.stateNumericStart(input, offset + 1);
|
|
64307
64311
|
}
|
|
64308
64312
|
this.state = EntityDecoderState.NamedEntity;
|
|
64309
|
-
return this.stateNamedEntity(
|
|
64313
|
+
return this.stateNamedEntity(input, offset);
|
|
64310
64314
|
}
|
|
64311
64315
|
case EntityDecoderState.NumericStart: {
|
|
64312
|
-
return this.stateNumericStart(
|
|
64316
|
+
return this.stateNumericStart(input, offset);
|
|
64313
64317
|
}
|
|
64314
64318
|
case EntityDecoderState.NumericDecimal: {
|
|
64315
|
-
return this.stateNumericDecimal(
|
|
64319
|
+
return this.stateNumericDecimal(input, offset);
|
|
64316
64320
|
}
|
|
64317
64321
|
case EntityDecoderState.NumericHex: {
|
|
64318
|
-
return this.stateNumericHex(
|
|
64322
|
+
return this.stateNumericHex(input, offset);
|
|
64319
64323
|
}
|
|
64320
64324
|
case EntityDecoderState.NamedEntity: {
|
|
64321
|
-
return this.stateNamedEntity(
|
|
64325
|
+
return this.stateNamedEntity(input, offset);
|
|
64322
64326
|
}
|
|
64323
64327
|
}
|
|
64324
64328
|
}
|
|
@@ -64327,28 +64331,28 @@ class EntityDecoder {
|
|
|
64327
64331
|
*
|
|
64328
64332
|
* Equivalent to the `Numeric character reference state` in the HTML spec.
|
|
64329
64333
|
*
|
|
64330
|
-
* @param
|
|
64334
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
64331
64335
|
* @param offset The current offset.
|
|
64332
64336
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
64333
64337
|
*/
|
|
64334
|
-
stateNumericStart(
|
|
64335
|
-
if (offset >=
|
|
64338
|
+
stateNumericStart(input, offset) {
|
|
64339
|
+
if (offset >= input.length) {
|
|
64336
64340
|
return -1;
|
|
64337
64341
|
}
|
|
64338
|
-
if ((
|
|
64342
|
+
if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {
|
|
64339
64343
|
this.state = EntityDecoderState.NumericHex;
|
|
64340
64344
|
this.consumed += 1;
|
|
64341
|
-
return this.stateNumericHex(
|
|
64345
|
+
return this.stateNumericHex(input, offset + 1);
|
|
64342
64346
|
}
|
|
64343
64347
|
this.state = EntityDecoderState.NumericDecimal;
|
|
64344
|
-
return this.stateNumericDecimal(
|
|
64348
|
+
return this.stateNumericDecimal(input, offset);
|
|
64345
64349
|
}
|
|
64346
|
-
addToNumericResult(
|
|
64350
|
+
addToNumericResult(input, start, end, base) {
|
|
64347
64351
|
if (start !== end) {
|
|
64348
64352
|
const digitCount = end - start;
|
|
64349
64353
|
this.result =
|
|
64350
64354
|
this.result * Math.pow(base, digitCount) +
|
|
64351
|
-
parseInt(
|
|
64355
|
+
Number.parseInt(input.substr(start, digitCount), base);
|
|
64352
64356
|
this.consumed += digitCount;
|
|
64353
64357
|
}
|
|
64354
64358
|
}
|
|
@@ -64357,23 +64361,23 @@ class EntityDecoder {
|
|
|
64357
64361
|
*
|
|
64358
64362
|
* Equivalent to the `Hexademical character reference state` in the HTML spec.
|
|
64359
64363
|
*
|
|
64360
|
-
* @param
|
|
64364
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
64361
64365
|
* @param offset The current offset.
|
|
64362
64366
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
64363
64367
|
*/
|
|
64364
|
-
stateNumericHex(
|
|
64365
|
-
const
|
|
64366
|
-
while (offset <
|
|
64367
|
-
const char =
|
|
64368
|
+
stateNumericHex(input, offset) {
|
|
64369
|
+
const startIndex = offset;
|
|
64370
|
+
while (offset < input.length) {
|
|
64371
|
+
const char = input.charCodeAt(offset);
|
|
64368
64372
|
if (isNumber(char) || isHexadecimalCharacter(char)) {
|
|
64369
64373
|
offset += 1;
|
|
64370
64374
|
}
|
|
64371
64375
|
else {
|
|
64372
|
-
this.addToNumericResult(
|
|
64376
|
+
this.addToNumericResult(input, startIndex, offset, 16);
|
|
64373
64377
|
return this.emitNumericEntity(char, 3);
|
|
64374
64378
|
}
|
|
64375
64379
|
}
|
|
64376
|
-
this.addToNumericResult(
|
|
64380
|
+
this.addToNumericResult(input, startIndex, offset, 16);
|
|
64377
64381
|
return -1;
|
|
64378
64382
|
}
|
|
64379
64383
|
/**
|
|
@@ -64381,23 +64385,23 @@ class EntityDecoder {
|
|
|
64381
64385
|
*
|
|
64382
64386
|
* Equivalent to the `Decimal character reference state` in the HTML spec.
|
|
64383
64387
|
*
|
|
64384
|
-
* @param
|
|
64388
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
64385
64389
|
* @param offset The current offset.
|
|
64386
64390
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
64387
64391
|
*/
|
|
64388
|
-
stateNumericDecimal(
|
|
64389
|
-
const
|
|
64390
|
-
while (offset <
|
|
64391
|
-
const char =
|
|
64392
|
+
stateNumericDecimal(input, offset) {
|
|
64393
|
+
const startIndex = offset;
|
|
64394
|
+
while (offset < input.length) {
|
|
64395
|
+
const char = input.charCodeAt(offset);
|
|
64392
64396
|
if (isNumber(char)) {
|
|
64393
64397
|
offset += 1;
|
|
64394
64398
|
}
|
|
64395
64399
|
else {
|
|
64396
|
-
this.addToNumericResult(
|
|
64400
|
+
this.addToNumericResult(input, startIndex, offset, 10);
|
|
64397
64401
|
return this.emitNumericEntity(char, 2);
|
|
64398
64402
|
}
|
|
64399
64403
|
}
|
|
64400
|
-
this.addToNumericResult(
|
|
64404
|
+
this.addToNumericResult(input, startIndex, offset, 10);
|
|
64401
64405
|
return -1;
|
|
64402
64406
|
}
|
|
64403
64407
|
/**
|
|
@@ -64441,17 +64445,17 @@ class EntityDecoder {
|
|
|
64441
64445
|
*
|
|
64442
64446
|
* Equivalent to the `Named character reference state` in the HTML spec.
|
|
64443
64447
|
*
|
|
64444
|
-
* @param
|
|
64448
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
64445
64449
|
* @param offset The current offset.
|
|
64446
64450
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
64447
64451
|
*/
|
|
64448
|
-
stateNamedEntity(
|
|
64452
|
+
stateNamedEntity(input, offset) {
|
|
64449
64453
|
const { decodeTree } = this;
|
|
64450
64454
|
let current = decodeTree[this.treeIndex];
|
|
64451
64455
|
// The mask is the number of bytes of the value, including the current byte.
|
|
64452
64456
|
let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
64453
|
-
for (; offset <
|
|
64454
|
-
const char =
|
|
64457
|
+
for (; offset < input.length; offset++, this.excess++) {
|
|
64458
|
+
const char = input.charCodeAt(offset);
|
|
64455
64459
|
this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);
|
|
64456
64460
|
if (this.treeIndex < 0) {
|
|
64457
64461
|
return this.result === 0 ||
|
|
@@ -64558,28 +64562,28 @@ class EntityDecoder {
|
|
|
64558
64562
|
* @returns A function that decodes entities in a string.
|
|
64559
64563
|
*/
|
|
64560
64564
|
function getDecoder(decodeTree) {
|
|
64561
|
-
let
|
|
64562
|
-
const decoder = new EntityDecoder(decodeTree, (
|
|
64563
|
-
return function decodeWithTrie(
|
|
64565
|
+
let returnValue = "";
|
|
64566
|
+
const decoder = new EntityDecoder(decodeTree, (data) => (returnValue += fromCodePoint(data)));
|
|
64567
|
+
return function decodeWithTrie(input, decodeMode) {
|
|
64564
64568
|
let lastIndex = 0;
|
|
64565
64569
|
let offset = 0;
|
|
64566
|
-
while ((offset =
|
|
64567
|
-
|
|
64570
|
+
while ((offset = input.indexOf("&", offset)) >= 0) {
|
|
64571
|
+
returnValue += input.slice(lastIndex, offset);
|
|
64568
64572
|
decoder.startEntity(decodeMode);
|
|
64569
|
-
const
|
|
64573
|
+
const length = decoder.write(input,
|
|
64570
64574
|
// Skip the "&"
|
|
64571
64575
|
offset + 1);
|
|
64572
|
-
if (
|
|
64576
|
+
if (length < 0) {
|
|
64573
64577
|
lastIndex = offset + decoder.end();
|
|
64574
64578
|
break;
|
|
64575
64579
|
}
|
|
64576
|
-
lastIndex = offset +
|
|
64577
|
-
// If `
|
|
64578
|
-
offset =
|
|
64580
|
+
lastIndex = offset + length;
|
|
64581
|
+
// If `length` is 0, skip the current `&` and continue.
|
|
64582
|
+
offset = length === 0 ? lastIndex + 1 : lastIndex;
|
|
64579
64583
|
}
|
|
64580
|
-
const result =
|
|
64584
|
+
const result = returnValue + input.slice(lastIndex);
|
|
64581
64585
|
// Make sure we don't keep a reference to the final string.
|
|
64582
|
-
|
|
64586
|
+
returnValue = "";
|
|
64583
64587
|
return result;
|
|
64584
64588
|
};
|
|
64585
64589
|
}
|
|
@@ -64593,31 +64597,31 @@ function getDecoder(decodeTree) {
|
|
|
64593
64597
|
* @param char The current character.
|
|
64594
64598
|
* @returns The index of the next node, or -1 if no branch is taken.
|
|
64595
64599
|
*/
|
|
64596
|
-
function determineBranch(decodeTree, current,
|
|
64600
|
+
function determineBranch(decodeTree, current, nodeIndex, char) {
|
|
64597
64601
|
const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;
|
|
64598
64602
|
const jumpOffset = current & BinTrieFlags.JUMP_TABLE;
|
|
64599
64603
|
// Case 1: Single branch encoded in jump offset
|
|
64600
64604
|
if (branchCount === 0) {
|
|
64601
|
-
return jumpOffset !== 0 && char === jumpOffset ?
|
|
64605
|
+
return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;
|
|
64602
64606
|
}
|
|
64603
64607
|
// Case 2: Multiple branches encoded in jump table
|
|
64604
64608
|
if (jumpOffset) {
|
|
64605
64609
|
const value = char - jumpOffset;
|
|
64606
64610
|
return value < 0 || value >= branchCount
|
|
64607
64611
|
? -1
|
|
64608
|
-
: decodeTree[
|
|
64612
|
+
: decodeTree[nodeIndex + value] - 1;
|
|
64609
64613
|
}
|
|
64610
64614
|
// Case 3: Multiple branches encoded in dictionary
|
|
64611
64615
|
// Binary search for the character.
|
|
64612
|
-
let lo =
|
|
64616
|
+
let lo = nodeIndex;
|
|
64613
64617
|
let hi = lo + branchCount - 1;
|
|
64614
64618
|
while (lo <= hi) {
|
|
64615
64619
|
const mid = (lo + hi) >>> 1;
|
|
64616
|
-
const
|
|
64617
|
-
if (
|
|
64620
|
+
const midValue = decodeTree[mid];
|
|
64621
|
+
if (midValue < char) {
|
|
64618
64622
|
lo = mid + 1;
|
|
64619
64623
|
}
|
|
64620
|
-
else if (
|
|
64624
|
+
else if (midValue > char) {
|
|
64621
64625
|
hi = mid - 1;
|
|
64622
64626
|
}
|
|
64623
64627
|
else {
|
|
@@ -64626,45 +64630,49 @@ function determineBranch(decodeTree, current, nodeIdx, char) {
|
|
|
64626
64630
|
}
|
|
64627
64631
|
return -1;
|
|
64628
64632
|
}
|
|
64629
|
-
const htmlDecoder = getDecoder(
|
|
64630
|
-
const xmlDecoder = getDecoder(
|
|
64633
|
+
const htmlDecoder = /* #__PURE__ */ (/* unused pure expression or super */ null && (getDecoder(htmlDecodeTree)));
|
|
64634
|
+
const xmlDecoder = /* #__PURE__ */ (/* unused pure expression or super */ null && (getDecoder(xmlDecodeTree)));
|
|
64631
64635
|
/**
|
|
64632
64636
|
* Decodes an HTML string.
|
|
64633
64637
|
*
|
|
64634
|
-
* @param
|
|
64638
|
+
* @param htmlString The string to decode.
|
|
64635
64639
|
* @param mode The decoding mode.
|
|
64636
64640
|
* @returns The decoded string.
|
|
64637
64641
|
*/
|
|
64638
|
-
function decode_decodeHTML(
|
|
64639
|
-
return htmlDecoder(
|
|
64642
|
+
function decode_decodeHTML(htmlString, mode = decode_DecodingMode.Legacy) {
|
|
64643
|
+
return htmlDecoder(htmlString, mode);
|
|
64640
64644
|
}
|
|
64641
64645
|
/**
|
|
64642
64646
|
* Decodes an HTML string in an attribute.
|
|
64643
64647
|
*
|
|
64644
|
-
* @param
|
|
64648
|
+
* @param htmlAttribute The string to decode.
|
|
64645
64649
|
* @returns The decoded string.
|
|
64646
64650
|
*/
|
|
64647
|
-
function decodeHTMLAttribute(
|
|
64648
|
-
return htmlDecoder(
|
|
64651
|
+
function decodeHTMLAttribute(htmlAttribute) {
|
|
64652
|
+
return htmlDecoder(htmlAttribute, decode_DecodingMode.Attribute);
|
|
64649
64653
|
}
|
|
64650
64654
|
/**
|
|
64651
64655
|
* Decodes an HTML string, requiring all entities to be terminated by a semicolon.
|
|
64652
64656
|
*
|
|
64653
|
-
* @param
|
|
64657
|
+
* @param htmlString The string to decode.
|
|
64654
64658
|
* @returns The decoded string.
|
|
64655
64659
|
*/
|
|
64656
|
-
function decodeHTMLStrict(
|
|
64657
|
-
return htmlDecoder(
|
|
64660
|
+
function decodeHTMLStrict(htmlString) {
|
|
64661
|
+
return htmlDecoder(htmlString, decode_DecodingMode.Strict);
|
|
64658
64662
|
}
|
|
64659
64663
|
/**
|
|
64660
64664
|
* Decodes an XML string, requiring all entities to be terminated by a semicolon.
|
|
64661
64665
|
*
|
|
64662
|
-
* @param
|
|
64666
|
+
* @param xmlString The string to decode.
|
|
64663
64667
|
* @returns The decoded string.
|
|
64664
64668
|
*/
|
|
64665
|
-
function decode_decodeXML(
|
|
64666
|
-
return xmlDecoder(
|
|
64669
|
+
function decode_decodeXML(xmlString) {
|
|
64670
|
+
return xmlDecoder(xmlString, decode_DecodingMode.Strict);
|
|
64667
64671
|
}
|
|
64672
|
+
// Re-export for use by eg. htmlparser2
|
|
64673
|
+
|
|
64674
|
+
|
|
64675
|
+
|
|
64668
64676
|
//# sourceMappingURL=decode.js.map
|
|
64669
64677
|
;// ./node_modules/parse5/dist/common/html.js
|
|
64670
64678
|
/** All valid namespaces in HTML. */
|
|
@@ -64676,7 +64684,7 @@ var html_NS;
|
|
|
64676
64684
|
NS["XLINK"] = "http://www.w3.org/1999/xlink";
|
|
64677
64685
|
NS["XML"] = "http://www.w3.org/XML/1998/namespace";
|
|
64678
64686
|
NS["XMLNS"] = "http://www.w3.org/2000/xmlns/";
|
|
64679
|
-
})(html_NS
|
|
64687
|
+
})(html_NS || (html_NS = {}));
|
|
64680
64688
|
var ATTRS;
|
|
64681
64689
|
(function (ATTRS) {
|
|
64682
64690
|
ATTRS["TYPE"] = "type";
|
|
@@ -64687,7 +64695,7 @@ var ATTRS;
|
|
|
64687
64695
|
ATTRS["COLOR"] = "color";
|
|
64688
64696
|
ATTRS["FACE"] = "face";
|
|
64689
64697
|
ATTRS["SIZE"] = "size";
|
|
64690
|
-
})(ATTRS
|
|
64698
|
+
})(ATTRS || (ATTRS = {}));
|
|
64691
64699
|
/**
|
|
64692
64700
|
* The mode of the document.
|
|
64693
64701
|
*
|
|
@@ -64698,7 +64706,7 @@ var DOCUMENT_MODE;
|
|
|
64698
64706
|
DOCUMENT_MODE["NO_QUIRKS"] = "no-quirks";
|
|
64699
64707
|
DOCUMENT_MODE["QUIRKS"] = "quirks";
|
|
64700
64708
|
DOCUMENT_MODE["LIMITED_QUIRKS"] = "limited-quirks";
|
|
64701
|
-
})(DOCUMENT_MODE
|
|
64709
|
+
})(DOCUMENT_MODE || (DOCUMENT_MODE = {}));
|
|
64702
64710
|
var TAG_NAMES;
|
|
64703
64711
|
(function (TAG_NAMES) {
|
|
64704
64712
|
TAG_NAMES["A"] = "a";
|
|
@@ -64794,6 +64802,7 @@ var TAG_NAMES;
|
|
|
64794
64802
|
TAG_NAMES["RUBY"] = "ruby";
|
|
64795
64803
|
TAG_NAMES["S"] = "s";
|
|
64796
64804
|
TAG_NAMES["SCRIPT"] = "script";
|
|
64805
|
+
TAG_NAMES["SEARCH"] = "search";
|
|
64797
64806
|
TAG_NAMES["SECTION"] = "section";
|
|
64798
64807
|
TAG_NAMES["SELECT"] = "select";
|
|
64799
64808
|
TAG_NAMES["SOURCE"] = "source";
|
|
@@ -64823,7 +64832,7 @@ var TAG_NAMES;
|
|
|
64823
64832
|
TAG_NAMES["VAR"] = "var";
|
|
64824
64833
|
TAG_NAMES["WBR"] = "wbr";
|
|
64825
64834
|
TAG_NAMES["XMP"] = "xmp";
|
|
64826
|
-
})(TAG_NAMES
|
|
64835
|
+
})(TAG_NAMES || (TAG_NAMES = {}));
|
|
64827
64836
|
/**
|
|
64828
64837
|
* Tag IDs are numeric IDs for known tag names.
|
|
64829
64838
|
*
|
|
@@ -64925,36 +64934,37 @@ var TAG_ID;
|
|
|
64925
64934
|
TAG_ID[TAG_ID["RUBY"] = 91] = "RUBY";
|
|
64926
64935
|
TAG_ID[TAG_ID["S"] = 92] = "S";
|
|
64927
64936
|
TAG_ID[TAG_ID["SCRIPT"] = 93] = "SCRIPT";
|
|
64928
|
-
TAG_ID[TAG_ID["
|
|
64929
|
-
TAG_ID[TAG_ID["
|
|
64930
|
-
TAG_ID[TAG_ID["
|
|
64931
|
-
TAG_ID[TAG_ID["
|
|
64932
|
-
TAG_ID[TAG_ID["
|
|
64933
|
-
TAG_ID[TAG_ID["
|
|
64934
|
-
TAG_ID[TAG_ID["
|
|
64935
|
-
TAG_ID[TAG_ID["
|
|
64936
|
-
TAG_ID[TAG_ID["
|
|
64937
|
-
TAG_ID[TAG_ID["
|
|
64938
|
-
TAG_ID[TAG_ID["
|
|
64939
|
-
TAG_ID[TAG_ID["
|
|
64940
|
-
TAG_ID[TAG_ID["
|
|
64941
|
-
TAG_ID[TAG_ID["
|
|
64942
|
-
TAG_ID[TAG_ID["
|
|
64943
|
-
TAG_ID[TAG_ID["
|
|
64944
|
-
TAG_ID[TAG_ID["
|
|
64945
|
-
TAG_ID[TAG_ID["
|
|
64946
|
-
TAG_ID[TAG_ID["
|
|
64947
|
-
TAG_ID[TAG_ID["
|
|
64948
|
-
TAG_ID[TAG_ID["
|
|
64949
|
-
TAG_ID[TAG_ID["
|
|
64950
|
-
TAG_ID[TAG_ID["
|
|
64951
|
-
TAG_ID[TAG_ID["
|
|
64952
|
-
TAG_ID[TAG_ID["
|
|
64953
|
-
TAG_ID[TAG_ID["
|
|
64954
|
-
TAG_ID[TAG_ID["
|
|
64955
|
-
TAG_ID[TAG_ID["
|
|
64956
|
-
TAG_ID[TAG_ID["
|
|
64957
|
-
|
|
64937
|
+
TAG_ID[TAG_ID["SEARCH"] = 94] = "SEARCH";
|
|
64938
|
+
TAG_ID[TAG_ID["SECTION"] = 95] = "SECTION";
|
|
64939
|
+
TAG_ID[TAG_ID["SELECT"] = 96] = "SELECT";
|
|
64940
|
+
TAG_ID[TAG_ID["SOURCE"] = 97] = "SOURCE";
|
|
64941
|
+
TAG_ID[TAG_ID["SMALL"] = 98] = "SMALL";
|
|
64942
|
+
TAG_ID[TAG_ID["SPAN"] = 99] = "SPAN";
|
|
64943
|
+
TAG_ID[TAG_ID["STRIKE"] = 100] = "STRIKE";
|
|
64944
|
+
TAG_ID[TAG_ID["STRONG"] = 101] = "STRONG";
|
|
64945
|
+
TAG_ID[TAG_ID["STYLE"] = 102] = "STYLE";
|
|
64946
|
+
TAG_ID[TAG_ID["SUB"] = 103] = "SUB";
|
|
64947
|
+
TAG_ID[TAG_ID["SUMMARY"] = 104] = "SUMMARY";
|
|
64948
|
+
TAG_ID[TAG_ID["SUP"] = 105] = "SUP";
|
|
64949
|
+
TAG_ID[TAG_ID["TABLE"] = 106] = "TABLE";
|
|
64950
|
+
TAG_ID[TAG_ID["TBODY"] = 107] = "TBODY";
|
|
64951
|
+
TAG_ID[TAG_ID["TEMPLATE"] = 108] = "TEMPLATE";
|
|
64952
|
+
TAG_ID[TAG_ID["TEXTAREA"] = 109] = "TEXTAREA";
|
|
64953
|
+
TAG_ID[TAG_ID["TFOOT"] = 110] = "TFOOT";
|
|
64954
|
+
TAG_ID[TAG_ID["TD"] = 111] = "TD";
|
|
64955
|
+
TAG_ID[TAG_ID["TH"] = 112] = "TH";
|
|
64956
|
+
TAG_ID[TAG_ID["THEAD"] = 113] = "THEAD";
|
|
64957
|
+
TAG_ID[TAG_ID["TITLE"] = 114] = "TITLE";
|
|
64958
|
+
TAG_ID[TAG_ID["TR"] = 115] = "TR";
|
|
64959
|
+
TAG_ID[TAG_ID["TRACK"] = 116] = "TRACK";
|
|
64960
|
+
TAG_ID[TAG_ID["TT"] = 117] = "TT";
|
|
64961
|
+
TAG_ID[TAG_ID["U"] = 118] = "U";
|
|
64962
|
+
TAG_ID[TAG_ID["UL"] = 119] = "UL";
|
|
64963
|
+
TAG_ID[TAG_ID["SVG"] = 120] = "SVG";
|
|
64964
|
+
TAG_ID[TAG_ID["VAR"] = 121] = "VAR";
|
|
64965
|
+
TAG_ID[TAG_ID["WBR"] = 122] = "WBR";
|
|
64966
|
+
TAG_ID[TAG_ID["XMP"] = 123] = "XMP";
|
|
64967
|
+
})(TAG_ID || (TAG_ID = {}));
|
|
64958
64968
|
const TAG_NAME_TO_ID = new Map([
|
|
64959
64969
|
[TAG_NAMES.A, TAG_ID.A],
|
|
64960
64970
|
[TAG_NAMES.ADDRESS, TAG_ID.ADDRESS],
|
|
@@ -65049,6 +65059,7 @@ const TAG_NAME_TO_ID = new Map([
|
|
|
65049
65059
|
[TAG_NAMES.RUBY, TAG_ID.RUBY],
|
|
65050
65060
|
[TAG_NAMES.S, TAG_ID.S],
|
|
65051
65061
|
[TAG_NAMES.SCRIPT, TAG_ID.SCRIPT],
|
|
65062
|
+
[TAG_NAMES.SEARCH, TAG_ID.SEARCH],
|
|
65052
65063
|
[TAG_NAMES.SECTION, TAG_ID.SECTION],
|
|
65053
65064
|
[TAG_NAMES.SELECT, TAG_ID.SELECT],
|
|
65054
65065
|
[TAG_NAMES.SOURCE, TAG_ID.SOURCE],
|
|
@@ -65174,9 +65185,7 @@ const SPECIAL_ELEMENTS = {
|
|
|
65174
65185
|
[html_NS.XML]: new Set(),
|
|
65175
65186
|
[html_NS.XMLNS]: new Set(),
|
|
65176
65187
|
};
|
|
65177
|
-
|
|
65178
|
-
return tn === html_$.H1 || tn === html_$.H2 || tn === html_$.H3 || tn === html_$.H4 || tn === html_$.H5 || tn === html_$.H6;
|
|
65179
|
-
}
|
|
65188
|
+
const NUMBERED_HEADERS = new Set([html_$.H1, html_$.H2, html_$.H3, html_$.H4, html_$.H5, html_$.H6]);
|
|
65180
65189
|
const UNESCAPED_TEXT = new Set([
|
|
65181
65190
|
TAG_NAMES.STYLE,
|
|
65182
65191
|
TAG_NAMES.SCRIPT,
|
|
@@ -65189,7 +65198,7 @@ const UNESCAPED_TEXT = new Set([
|
|
|
65189
65198
|
function html_hasUnescapedText(tn, scriptingEnabled) {
|
|
65190
65199
|
return UNESCAPED_TEXT.has(tn) || (scriptingEnabled && tn === TAG_NAMES.NOSCRIPT);
|
|
65191
65200
|
}
|
|
65192
|
-
|
|
65201
|
+
|
|
65193
65202
|
;// ./node_modules/parse5/dist/tokenizer/index.js
|
|
65194
65203
|
|
|
65195
65204
|
|
|
@@ -65197,36 +65206,6 @@ function html_hasUnescapedText(tn, scriptingEnabled) {
|
|
|
65197
65206
|
|
|
65198
65207
|
|
|
65199
65208
|
|
|
65200
|
-
//C1 Unicode control character reference replacements
|
|
65201
|
-
const C1_CONTROLS_REFERENCE_REPLACEMENTS = new Map([
|
|
65202
|
-
[0x80, 8364],
|
|
65203
|
-
[0x82, 8218],
|
|
65204
|
-
[0x83, 402],
|
|
65205
|
-
[0x84, 8222],
|
|
65206
|
-
[0x85, 8230],
|
|
65207
|
-
[0x86, 8224],
|
|
65208
|
-
[0x87, 8225],
|
|
65209
|
-
[0x88, 710],
|
|
65210
|
-
[0x89, 8240],
|
|
65211
|
-
[0x8a, 352],
|
|
65212
|
-
[0x8b, 8249],
|
|
65213
|
-
[0x8c, 338],
|
|
65214
|
-
[0x8e, 381],
|
|
65215
|
-
[0x91, 8216],
|
|
65216
|
-
[0x92, 8217],
|
|
65217
|
-
[0x93, 8220],
|
|
65218
|
-
[0x94, 8221],
|
|
65219
|
-
[0x95, 8226],
|
|
65220
|
-
[0x96, 8211],
|
|
65221
|
-
[0x97, 8212],
|
|
65222
|
-
[0x98, 732],
|
|
65223
|
-
[0x99, 8482],
|
|
65224
|
-
[0x9a, 353],
|
|
65225
|
-
[0x9b, 8250],
|
|
65226
|
-
[0x9c, 339],
|
|
65227
|
-
[0x9e, 382],
|
|
65228
|
-
[0x9f, 376],
|
|
65229
|
-
]);
|
|
65230
65209
|
//States
|
|
65231
65210
|
var State;
|
|
65232
65211
|
(function (State) {
|
|
@@ -65302,13 +65281,7 @@ var State;
|
|
|
65302
65281
|
State[State["CDATA_SECTION_BRACKET"] = 69] = "CDATA_SECTION_BRACKET";
|
|
65303
65282
|
State[State["CDATA_SECTION_END"] = 70] = "CDATA_SECTION_END";
|
|
65304
65283
|
State[State["CHARACTER_REFERENCE"] = 71] = "CHARACTER_REFERENCE";
|
|
65305
|
-
State[State["
|
|
65306
|
-
State[State["AMBIGUOUS_AMPERSAND"] = 73] = "AMBIGUOUS_AMPERSAND";
|
|
65307
|
-
State[State["NUMERIC_CHARACTER_REFERENCE"] = 74] = "NUMERIC_CHARACTER_REFERENCE";
|
|
65308
|
-
State[State["HEXADEMICAL_CHARACTER_REFERENCE_START"] = 75] = "HEXADEMICAL_CHARACTER_REFERENCE_START";
|
|
65309
|
-
State[State["HEXADEMICAL_CHARACTER_REFERENCE"] = 76] = "HEXADEMICAL_CHARACTER_REFERENCE";
|
|
65310
|
-
State[State["DECIMAL_CHARACTER_REFERENCE"] = 77] = "DECIMAL_CHARACTER_REFERENCE";
|
|
65311
|
-
State[State["NUMERIC_CHARACTER_REFERENCE_END"] = 78] = "NUMERIC_CHARACTER_REFERENCE_END";
|
|
65284
|
+
State[State["AMBIGUOUS_AMPERSAND"] = 72] = "AMBIGUOUS_AMPERSAND";
|
|
65312
65285
|
})(State || (State = {}));
|
|
65313
65286
|
//Tokenizer initial states for different modes
|
|
65314
65287
|
const TokenizerMode = {
|
|
@@ -65338,27 +65311,33 @@ function isAsciiLetter(cp) {
|
|
|
65338
65311
|
function tokenizer_isAsciiAlphaNumeric(cp) {
|
|
65339
65312
|
return isAsciiLetter(cp) || isAsciiDigit(cp);
|
|
65340
65313
|
}
|
|
65341
|
-
function isAsciiUpperHexDigit(cp) {
|
|
65342
|
-
return cp >= CODE_POINTS.LATIN_CAPITAL_A && cp <= CODE_POINTS.LATIN_CAPITAL_F;
|
|
65343
|
-
}
|
|
65344
|
-
function isAsciiLowerHexDigit(cp) {
|
|
65345
|
-
return cp >= CODE_POINTS.LATIN_SMALL_A && cp <= CODE_POINTS.LATIN_SMALL_F;
|
|
65346
|
-
}
|
|
65347
|
-
function isAsciiHexDigit(cp) {
|
|
65348
|
-
return isAsciiDigit(cp) || isAsciiUpperHexDigit(cp) || isAsciiLowerHexDigit(cp);
|
|
65349
|
-
}
|
|
65350
65314
|
function toAsciiLower(cp) {
|
|
65351
65315
|
return cp + 32;
|
|
65352
65316
|
}
|
|
65353
65317
|
function isWhitespace(cp) {
|
|
65354
65318
|
return cp === CODE_POINTS.SPACE || cp === CODE_POINTS.LINE_FEED || cp === CODE_POINTS.TABULATION || cp === CODE_POINTS.FORM_FEED;
|
|
65355
65319
|
}
|
|
65356
|
-
function tokenizer_isEntityInAttributeInvalidEnd(nextCp) {
|
|
65357
|
-
return nextCp === CODE_POINTS.EQUALS_SIGN || tokenizer_isAsciiAlphaNumeric(nextCp);
|
|
65358
|
-
}
|
|
65359
65320
|
function isScriptDataDoubleEscapeSequenceEnd(cp) {
|
|
65360
65321
|
return isWhitespace(cp) || cp === CODE_POINTS.SOLIDUS || cp === CODE_POINTS.GREATER_THAN_SIGN;
|
|
65361
65322
|
}
|
|
65323
|
+
function getErrorForNumericCharacterReference(code) {
|
|
65324
|
+
if (code === CODE_POINTS.NULL) {
|
|
65325
|
+
return ERR.nullCharacterReference;
|
|
65326
|
+
}
|
|
65327
|
+
else if (code > 1114111) {
|
|
65328
|
+
return ERR.characterReferenceOutsideUnicodeRange;
|
|
65329
|
+
}
|
|
65330
|
+
else if (isSurrogate(code)) {
|
|
65331
|
+
return ERR.surrogateCharacterReference;
|
|
65332
|
+
}
|
|
65333
|
+
else if (isUndefinedCodePoint(code)) {
|
|
65334
|
+
return ERR.noncharacterCharacterReference;
|
|
65335
|
+
}
|
|
65336
|
+
else if (isControlCodePoint(code) || code === CODE_POINTS.CARRIAGE_RETURN) {
|
|
65337
|
+
return ERR.controlCharacterReference;
|
|
65338
|
+
}
|
|
65339
|
+
return null;
|
|
65340
|
+
}
|
|
65362
65341
|
//Tokenizer
|
|
65363
65342
|
class Tokenizer {
|
|
65364
65343
|
constructor(options, handler) {
|
|
@@ -65378,18 +65357,38 @@ class Tokenizer {
|
|
|
65378
65357
|
this.active = false;
|
|
65379
65358
|
this.state = State.DATA;
|
|
65380
65359
|
this.returnState = State.DATA;
|
|
65381
|
-
this.
|
|
65360
|
+
this.entityStartPos = 0;
|
|
65382
65361
|
this.consumedAfterSnapshot = -1;
|
|
65383
65362
|
this.currentCharacterToken = null;
|
|
65384
65363
|
this.currentToken = null;
|
|
65385
65364
|
this.currentAttr = { name: '', value: '' };
|
|
65386
65365
|
this.preprocessor = new Preprocessor(handler);
|
|
65387
65366
|
this.currentLocation = this.getCurrentLocation(-1);
|
|
65367
|
+
this.entityDecoder = new EntityDecoder(decode_data_html_htmlDecodeTree, (cp, consumed) => {
|
|
65368
|
+
// Note: Set `pos` _before_ flushing, as flushing might drop
|
|
65369
|
+
// the current chunk and invalidate `entityStartPos`.
|
|
65370
|
+
this.preprocessor.pos = this.entityStartPos + consumed - 1;
|
|
65371
|
+
this._flushCodePointConsumedAsCharacterReference(cp);
|
|
65372
|
+
}, handler.onParseError
|
|
65373
|
+
? {
|
|
65374
|
+
missingSemicolonAfterCharacterReference: () => {
|
|
65375
|
+
this._err(ERR.missingSemicolonAfterCharacterReference, 1);
|
|
65376
|
+
},
|
|
65377
|
+
absenceOfDigitsInNumericCharacterReference: (consumed) => {
|
|
65378
|
+
this._err(ERR.absenceOfDigitsInNumericCharacterReference, this.entityStartPos - this.preprocessor.pos + consumed);
|
|
65379
|
+
},
|
|
65380
|
+
validateNumericCharacterReference: (code) => {
|
|
65381
|
+
const error = getErrorForNumericCharacterReference(code);
|
|
65382
|
+
if (error)
|
|
65383
|
+
this._err(error, 1);
|
|
65384
|
+
},
|
|
65385
|
+
}
|
|
65386
|
+
: undefined);
|
|
65388
65387
|
}
|
|
65389
65388
|
//Errors
|
|
65390
|
-
_err(code) {
|
|
65389
|
+
_err(code, cpOffset = 0) {
|
|
65391
65390
|
var _a, _b;
|
|
65392
|
-
(_b = (_a = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a, this.preprocessor.getError(code));
|
|
65391
|
+
(_b = (_a = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a, this.preprocessor.getError(code, cpOffset));
|
|
65393
65392
|
}
|
|
65394
65393
|
// NOTE: `offset` may never run across line boundaries.
|
|
65395
65394
|
getCurrentLocation(offset) {
|
|
@@ -65451,7 +65450,8 @@ class Tokenizer {
|
|
|
65451
65450
|
//Hibernation
|
|
65452
65451
|
_ensureHibernation() {
|
|
65453
65452
|
if (this.preprocessor.endOfChunkHit) {
|
|
65454
|
-
this.
|
|
65453
|
+
this.preprocessor.retreat(this.consumedAfterSnapshot);
|
|
65454
|
+
this.consumedAfterSnapshot = 0;
|
|
65455
65455
|
this.active = false;
|
|
65456
65456
|
return true;
|
|
65457
65457
|
}
|
|
@@ -65462,14 +65462,6 @@ class Tokenizer {
|
|
|
65462
65462
|
this.consumedAfterSnapshot++;
|
|
65463
65463
|
return this.preprocessor.advance();
|
|
65464
65464
|
}
|
|
65465
|
-
_unconsume(count) {
|
|
65466
|
-
this.consumedAfterSnapshot -= count;
|
|
65467
|
-
this.preprocessor.retreat(count);
|
|
65468
|
-
}
|
|
65469
|
-
_reconsumeInState(state, cp) {
|
|
65470
|
-
this.state = state;
|
|
65471
|
-
this._callState(cp);
|
|
65472
|
-
}
|
|
65473
65465
|
_advanceBy(count) {
|
|
65474
65466
|
this.consumedAfterSnapshot += count;
|
|
65475
65467
|
for (let i = 0; i < count; i++) {
|
|
@@ -65641,7 +65633,7 @@ class Tokenizer {
|
|
|
65641
65633
|
this.active = false;
|
|
65642
65634
|
}
|
|
65643
65635
|
//Characters emission
|
|
65644
|
-
//OPTIMIZATION: specification uses only one type of character
|
|
65636
|
+
//OPTIMIZATION: The specification uses only one type of character token (one token per character).
|
|
65645
65637
|
//This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.
|
|
65646
65638
|
//If we have a sequence of characters that belong to the same group, the parser can process it
|
|
65647
65639
|
//as a single solid character token.
|
|
@@ -65651,15 +65643,15 @@ class Tokenizer {
|
|
|
65651
65643
|
//3)TokenType.CHARACTER - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')
|
|
65652
65644
|
_appendCharToCurrentCharacterToken(type, ch) {
|
|
65653
65645
|
if (this.currentCharacterToken) {
|
|
65654
|
-
if (this.currentCharacterToken.type
|
|
65646
|
+
if (this.currentCharacterToken.type === type) {
|
|
65647
|
+
this.currentCharacterToken.chars += ch;
|
|
65648
|
+
return;
|
|
65649
|
+
}
|
|
65650
|
+
else {
|
|
65655
65651
|
this.currentLocation = this.getCurrentLocation(0);
|
|
65656
65652
|
this._emitCurrentCharacterToken(this.currentLocation);
|
|
65657
65653
|
this.preprocessor.dropParsedChunk();
|
|
65658
65654
|
}
|
|
65659
|
-
else {
|
|
65660
|
-
this.currentCharacterToken.chars += ch;
|
|
65661
|
-
return;
|
|
65662
|
-
}
|
|
65663
65655
|
}
|
|
65664
65656
|
this._createCharacterToken(type, ch);
|
|
65665
65657
|
}
|
|
@@ -65677,59 +65669,11 @@ class Tokenizer {
|
|
|
65677
65669
|
this._appendCharToCurrentCharacterToken(token_TokenType.CHARACTER, ch);
|
|
65678
65670
|
}
|
|
65679
65671
|
// Character reference helpers
|
|
65680
|
-
|
|
65681
|
-
|
|
65682
|
-
|
|
65683
|
-
|
|
65684
|
-
|
|
65685
|
-
i = determineBranch(decode_data_html, current, i + 1, cp);
|
|
65686
|
-
if (i < 0)
|
|
65687
|
-
break;
|
|
65688
|
-
excess += 1;
|
|
65689
|
-
current = decode_data_html[i];
|
|
65690
|
-
const masked = current & BinTrieFlags.VALUE_LENGTH;
|
|
65691
|
-
// If the branch is a value, store it and continue
|
|
65692
|
-
if (masked) {
|
|
65693
|
-
// The mask is the number of bytes of the value, including the current byte.
|
|
65694
|
-
const valueLength = (masked >> 14) - 1;
|
|
65695
|
-
// Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.
|
|
65696
|
-
// See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state
|
|
65697
|
-
if (cp !== CODE_POINTS.SEMICOLON &&
|
|
65698
|
-
this._isCharacterReferenceInAttribute() &&
|
|
65699
|
-
tokenizer_isEntityInAttributeInvalidEnd(this.preprocessor.peek(1))) {
|
|
65700
|
-
//NOTE: we don't flush all consumed code points here, and instead switch back to the original state after
|
|
65701
|
-
//emitting an ampersand. This is fine, as alphanumeric characters won't be parsed differently in attributes.
|
|
65702
|
-
result = [CODE_POINTS.AMPERSAND];
|
|
65703
|
-
// Skip over the value.
|
|
65704
|
-
i += valueLength;
|
|
65705
|
-
}
|
|
65706
|
-
else {
|
|
65707
|
-
// If this is a surrogate pair, consume the next two bytes.
|
|
65708
|
-
result =
|
|
65709
|
-
valueLength === 0
|
|
65710
|
-
? [decode_data_html[i] & ~BinTrieFlags.VALUE_LENGTH]
|
|
65711
|
-
: valueLength === 1
|
|
65712
|
-
? [decode_data_html[++i]]
|
|
65713
|
-
: [decode_data_html[++i], decode_data_html[++i]];
|
|
65714
|
-
excess = 0;
|
|
65715
|
-
withoutSemicolon = cp !== CODE_POINTS.SEMICOLON;
|
|
65716
|
-
}
|
|
65717
|
-
if (valueLength === 0) {
|
|
65718
|
-
// If the value is zero-length, we're done.
|
|
65719
|
-
this._consume();
|
|
65720
|
-
break;
|
|
65721
|
-
}
|
|
65722
|
-
}
|
|
65723
|
-
}
|
|
65724
|
-
this._unconsume(excess);
|
|
65725
|
-
if (withoutSemicolon && !this.preprocessor.endOfChunkHit) {
|
|
65726
|
-
this._err(ERR.missingSemicolonAfterCharacterReference);
|
|
65727
|
-
}
|
|
65728
|
-
// We want to emit the error above on the code point after the entity.
|
|
65729
|
-
// We always consume one code point too many in the loop, and we wait to
|
|
65730
|
-
// unconsume it until after the error is emitted.
|
|
65731
|
-
this._unconsume(1);
|
|
65732
|
-
return result;
|
|
65672
|
+
_startCharacterReference() {
|
|
65673
|
+
this.returnState = this.state;
|
|
65674
|
+
this.state = State.CHARACTER_REFERENCE;
|
|
65675
|
+
this.entityStartPos = this.preprocessor.pos;
|
|
65676
|
+
this.entityDecoder.startEntity(this._isCharacterReferenceInAttribute() ? decode_DecodingMode.Attribute : decode_DecodingMode.Legacy);
|
|
65733
65677
|
}
|
|
65734
65678
|
_isCharacterReferenceInAttribute() {
|
|
65735
65679
|
return (this.returnState === State.ATTRIBUTE_VALUE_DOUBLE_QUOTED ||
|
|
@@ -66032,37 +65976,13 @@ class Tokenizer {
|
|
|
66032
65976
|
break;
|
|
66033
65977
|
}
|
|
66034
65978
|
case State.CHARACTER_REFERENCE: {
|
|
66035
|
-
this._stateCharacterReference(
|
|
66036
|
-
break;
|
|
66037
|
-
}
|
|
66038
|
-
case State.NAMED_CHARACTER_REFERENCE: {
|
|
66039
|
-
this._stateNamedCharacterReference(cp);
|
|
65979
|
+
this._stateCharacterReference();
|
|
66040
65980
|
break;
|
|
66041
65981
|
}
|
|
66042
65982
|
case State.AMBIGUOUS_AMPERSAND: {
|
|
66043
65983
|
this._stateAmbiguousAmpersand(cp);
|
|
66044
65984
|
break;
|
|
66045
65985
|
}
|
|
66046
|
-
case State.NUMERIC_CHARACTER_REFERENCE: {
|
|
66047
|
-
this._stateNumericCharacterReference(cp);
|
|
66048
|
-
break;
|
|
66049
|
-
}
|
|
66050
|
-
case State.HEXADEMICAL_CHARACTER_REFERENCE_START: {
|
|
66051
|
-
this._stateHexademicalCharacterReferenceStart(cp);
|
|
66052
|
-
break;
|
|
66053
|
-
}
|
|
66054
|
-
case State.HEXADEMICAL_CHARACTER_REFERENCE: {
|
|
66055
|
-
this._stateHexademicalCharacterReference(cp);
|
|
66056
|
-
break;
|
|
66057
|
-
}
|
|
66058
|
-
case State.DECIMAL_CHARACTER_REFERENCE: {
|
|
66059
|
-
this._stateDecimalCharacterReference(cp);
|
|
66060
|
-
break;
|
|
66061
|
-
}
|
|
66062
|
-
case State.NUMERIC_CHARACTER_REFERENCE_END: {
|
|
66063
|
-
this._stateNumericCharacterReferenceEnd(cp);
|
|
66064
|
-
break;
|
|
66065
|
-
}
|
|
66066
65986
|
default: {
|
|
66067
65987
|
throw new Error('Unknown state');
|
|
66068
65988
|
}
|
|
@@ -66078,8 +65998,7 @@ class Tokenizer {
|
|
|
66078
65998
|
break;
|
|
66079
65999
|
}
|
|
66080
66000
|
case CODE_POINTS.AMPERSAND: {
|
|
66081
|
-
this.
|
|
66082
|
-
this.state = State.CHARACTER_REFERENCE;
|
|
66001
|
+
this._startCharacterReference();
|
|
66083
66002
|
break;
|
|
66084
66003
|
}
|
|
66085
66004
|
case CODE_POINTS.NULL: {
|
|
@@ -66101,8 +66020,7 @@ class Tokenizer {
|
|
|
66101
66020
|
_stateRcdata(cp) {
|
|
66102
66021
|
switch (cp) {
|
|
66103
66022
|
case CODE_POINTS.AMPERSAND: {
|
|
66104
|
-
this.
|
|
66105
|
-
this.state = State.CHARACTER_REFERENCE;
|
|
66023
|
+
this._startCharacterReference();
|
|
66106
66024
|
break;
|
|
66107
66025
|
}
|
|
66108
66026
|
case CODE_POINTS.LESS_THAN_SIGN: {
|
|
@@ -66871,8 +66789,7 @@ class Tokenizer {
|
|
|
66871
66789
|
break;
|
|
66872
66790
|
}
|
|
66873
66791
|
case CODE_POINTS.AMPERSAND: {
|
|
66874
|
-
this.
|
|
66875
|
-
this.state = State.CHARACTER_REFERENCE;
|
|
66792
|
+
this._startCharacterReference();
|
|
66876
66793
|
break;
|
|
66877
66794
|
}
|
|
66878
66795
|
case CODE_POINTS.NULL: {
|
|
@@ -66899,8 +66816,7 @@ class Tokenizer {
|
|
|
66899
66816
|
break;
|
|
66900
66817
|
}
|
|
66901
66818
|
case CODE_POINTS.AMPERSAND: {
|
|
66902
|
-
this.
|
|
66903
|
-
this.state = State.CHARACTER_REFERENCE;
|
|
66819
|
+
this._startCharacterReference();
|
|
66904
66820
|
break;
|
|
66905
66821
|
}
|
|
66906
66822
|
case CODE_POINTS.NULL: {
|
|
@@ -66931,8 +66847,7 @@ class Tokenizer {
|
|
|
66931
66847
|
break;
|
|
66932
66848
|
}
|
|
66933
66849
|
case CODE_POINTS.AMPERSAND: {
|
|
66934
|
-
this.
|
|
66935
|
-
this.state = State.CHARACTER_REFERENCE;
|
|
66850
|
+
this._startCharacterReference();
|
|
66936
66851
|
break;
|
|
66937
66852
|
}
|
|
66938
66853
|
case CODE_POINTS.GREATER_THAN_SIGN: {
|
|
@@ -67949,37 +67864,35 @@ class Tokenizer {
|
|
|
67949
67864
|
}
|
|
67950
67865
|
// Character reference state
|
|
67951
67866
|
//------------------------------------------------------------------
|
|
67952
|
-
_stateCharacterReference(
|
|
67953
|
-
|
|
67954
|
-
|
|
67955
|
-
|
|
67956
|
-
|
|
67957
|
-
|
|
67958
|
-
|
|
67867
|
+
_stateCharacterReference() {
|
|
67868
|
+
let length = this.entityDecoder.write(this.preprocessor.html, this.preprocessor.pos);
|
|
67869
|
+
if (length < 0) {
|
|
67870
|
+
if (this.preprocessor.lastChunkWritten) {
|
|
67871
|
+
length = this.entityDecoder.end();
|
|
67872
|
+
}
|
|
67873
|
+
else {
|
|
67874
|
+
// Wait for the rest of the entity.
|
|
67875
|
+
this.active = false;
|
|
67876
|
+
// Mark the entire buffer as read.
|
|
67877
|
+
this.preprocessor.pos = this.preprocessor.html.length - 1;
|
|
67878
|
+
this.consumedAfterSnapshot = 0;
|
|
67879
|
+
this.preprocessor.endOfChunkHit = true;
|
|
67880
|
+
return;
|
|
67881
|
+
}
|
|
67959
67882
|
}
|
|
67960
|
-
|
|
67883
|
+
if (length === 0) {
|
|
67884
|
+
// This was not a valid entity. Go back to the beginning, and
|
|
67885
|
+
// figure out what to do.
|
|
67886
|
+
this.preprocessor.pos = this.entityStartPos;
|
|
67961
67887
|
this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND);
|
|
67962
|
-
this.
|
|
67963
|
-
|
|
67964
|
-
|
|
67965
|
-
|
|
67966
|
-
//------------------------------------------------------------------
|
|
67967
|
-
_stateNamedCharacterReference(cp) {
|
|
67968
|
-
const matchResult = this._matchNamedCharacterReference(cp);
|
|
67969
|
-
//NOTE: Matching can be abrupted by hibernation. In that case, match
|
|
67970
|
-
//results are no longer valid and we will need to start over.
|
|
67971
|
-
if (this._ensureHibernation()) {
|
|
67972
|
-
// Stay in the state, try again.
|
|
67973
|
-
}
|
|
67974
|
-
else if (matchResult) {
|
|
67975
|
-
for (let i = 0; i < matchResult.length; i++) {
|
|
67976
|
-
this._flushCodePointConsumedAsCharacterReference(matchResult[i]);
|
|
67977
|
-
}
|
|
67978
|
-
this.state = this.returnState;
|
|
67888
|
+
this.state =
|
|
67889
|
+
!this._isCharacterReferenceInAttribute() && tokenizer_isAsciiAlphaNumeric(this.preprocessor.peek(1))
|
|
67890
|
+
? State.AMBIGUOUS_AMPERSAND
|
|
67891
|
+
: this.returnState;
|
|
67979
67892
|
}
|
|
67980
67893
|
else {
|
|
67981
|
-
|
|
67982
|
-
this.state =
|
|
67894
|
+
// We successfully parsed an entity. Switch to the return state.
|
|
67895
|
+
this.state = this.returnState;
|
|
67983
67896
|
}
|
|
67984
67897
|
}
|
|
67985
67898
|
// Ambiguos ampersand state
|
|
@@ -67992,109 +67905,12 @@ class Tokenizer {
|
|
|
67992
67905
|
if (cp === CODE_POINTS.SEMICOLON) {
|
|
67993
67906
|
this._err(ERR.unknownNamedCharacterReference);
|
|
67994
67907
|
}
|
|
67995
|
-
this._reconsumeInState(this.returnState, cp);
|
|
67996
|
-
}
|
|
67997
|
-
}
|
|
67998
|
-
// Numeric character reference state
|
|
67999
|
-
//------------------------------------------------------------------
|
|
68000
|
-
_stateNumericCharacterReference(cp) {
|
|
68001
|
-
this.charRefCode = 0;
|
|
68002
|
-
if (cp === CODE_POINTS.LATIN_SMALL_X || cp === CODE_POINTS.LATIN_CAPITAL_X) {
|
|
68003
|
-
this.state = State.HEXADEMICAL_CHARACTER_REFERENCE_START;
|
|
68004
|
-
}
|
|
68005
|
-
// Inlined decimal character reference start state
|
|
68006
|
-
else if (isAsciiDigit(cp)) {
|
|
68007
|
-
this.state = State.DECIMAL_CHARACTER_REFERENCE;
|
|
68008
|
-
this._stateDecimalCharacterReference(cp);
|
|
68009
|
-
}
|
|
68010
|
-
else {
|
|
68011
|
-
this._err(ERR.absenceOfDigitsInNumericCharacterReference);
|
|
68012
|
-
this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND);
|
|
68013
|
-
this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.NUMBER_SIGN);
|
|
68014
|
-
this._reconsumeInState(this.returnState, cp);
|
|
68015
|
-
}
|
|
68016
|
-
}
|
|
68017
|
-
// Hexademical character reference start state
|
|
68018
|
-
//------------------------------------------------------------------
|
|
68019
|
-
_stateHexademicalCharacterReferenceStart(cp) {
|
|
68020
|
-
if (isAsciiHexDigit(cp)) {
|
|
68021
|
-
this.state = State.HEXADEMICAL_CHARACTER_REFERENCE;
|
|
68022
|
-
this._stateHexademicalCharacterReference(cp);
|
|
68023
|
-
}
|
|
68024
|
-
else {
|
|
68025
|
-
this._err(ERR.absenceOfDigitsInNumericCharacterReference);
|
|
68026
|
-
this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.AMPERSAND);
|
|
68027
|
-
this._flushCodePointConsumedAsCharacterReference(CODE_POINTS.NUMBER_SIGN);
|
|
68028
|
-
this._unconsume(2);
|
|
68029
67908
|
this.state = this.returnState;
|
|
67909
|
+
this._callState(cp);
|
|
68030
67910
|
}
|
|
68031
67911
|
}
|
|
68032
|
-
// Hexademical character reference state
|
|
68033
|
-
//------------------------------------------------------------------
|
|
68034
|
-
_stateHexademicalCharacterReference(cp) {
|
|
68035
|
-
if (isAsciiUpperHexDigit(cp)) {
|
|
68036
|
-
this.charRefCode = this.charRefCode * 16 + cp - 0x37;
|
|
68037
|
-
}
|
|
68038
|
-
else if (isAsciiLowerHexDigit(cp)) {
|
|
68039
|
-
this.charRefCode = this.charRefCode * 16 + cp - 0x57;
|
|
68040
|
-
}
|
|
68041
|
-
else if (isAsciiDigit(cp)) {
|
|
68042
|
-
this.charRefCode = this.charRefCode * 16 + cp - 0x30;
|
|
68043
|
-
}
|
|
68044
|
-
else if (cp === CODE_POINTS.SEMICOLON) {
|
|
68045
|
-
this.state = State.NUMERIC_CHARACTER_REFERENCE_END;
|
|
68046
|
-
}
|
|
68047
|
-
else {
|
|
68048
|
-
this._err(ERR.missingSemicolonAfterCharacterReference);
|
|
68049
|
-
this.state = State.NUMERIC_CHARACTER_REFERENCE_END;
|
|
68050
|
-
this._stateNumericCharacterReferenceEnd(cp);
|
|
68051
|
-
}
|
|
68052
|
-
}
|
|
68053
|
-
// Decimal character reference state
|
|
68054
|
-
//------------------------------------------------------------------
|
|
68055
|
-
_stateDecimalCharacterReference(cp) {
|
|
68056
|
-
if (isAsciiDigit(cp)) {
|
|
68057
|
-
this.charRefCode = this.charRefCode * 10 + cp - 0x30;
|
|
68058
|
-
}
|
|
68059
|
-
else if (cp === CODE_POINTS.SEMICOLON) {
|
|
68060
|
-
this.state = State.NUMERIC_CHARACTER_REFERENCE_END;
|
|
68061
|
-
}
|
|
68062
|
-
else {
|
|
68063
|
-
this._err(ERR.missingSemicolonAfterCharacterReference);
|
|
68064
|
-
this.state = State.NUMERIC_CHARACTER_REFERENCE_END;
|
|
68065
|
-
this._stateNumericCharacterReferenceEnd(cp);
|
|
68066
|
-
}
|
|
68067
|
-
}
|
|
68068
|
-
// Numeric character reference end state
|
|
68069
|
-
//------------------------------------------------------------------
|
|
68070
|
-
_stateNumericCharacterReferenceEnd(cp) {
|
|
68071
|
-
if (this.charRefCode === CODE_POINTS.NULL) {
|
|
68072
|
-
this._err(ERR.nullCharacterReference);
|
|
68073
|
-
this.charRefCode = CODE_POINTS.REPLACEMENT_CHARACTER;
|
|
68074
|
-
}
|
|
68075
|
-
else if (this.charRefCode > 1114111) {
|
|
68076
|
-
this._err(ERR.characterReferenceOutsideUnicodeRange);
|
|
68077
|
-
this.charRefCode = CODE_POINTS.REPLACEMENT_CHARACTER;
|
|
68078
|
-
}
|
|
68079
|
-
else if (isSurrogate(this.charRefCode)) {
|
|
68080
|
-
this._err(ERR.surrogateCharacterReference);
|
|
68081
|
-
this.charRefCode = CODE_POINTS.REPLACEMENT_CHARACTER;
|
|
68082
|
-
}
|
|
68083
|
-
else if (isUndefinedCodePoint(this.charRefCode)) {
|
|
68084
|
-
this._err(ERR.noncharacterCharacterReference);
|
|
68085
|
-
}
|
|
68086
|
-
else if (isControlCodePoint(this.charRefCode) || this.charRefCode === CODE_POINTS.CARRIAGE_RETURN) {
|
|
68087
|
-
this._err(ERR.controlCharacterReference);
|
|
68088
|
-
const replacement = C1_CONTROLS_REFERENCE_REPLACEMENTS.get(this.charRefCode);
|
|
68089
|
-
if (replacement !== undefined) {
|
|
68090
|
-
this.charRefCode = replacement;
|
|
68091
|
-
}
|
|
68092
|
-
}
|
|
68093
|
-
this._flushCodePointConsumedAsCharacterReference(this.charRefCode);
|
|
68094
|
-
this._reconsumeInState(this.returnState, cp);
|
|
68095
|
-
}
|
|
68096
67912
|
}
|
|
68097
|
-
|
|
67913
|
+
|
|
68098
67914
|
;// ./node_modules/parse5/dist/parser/open-element-stack.js
|
|
68099
67915
|
|
|
68100
67916
|
//Element utils
|
|
@@ -68110,31 +67926,25 @@ const IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = new Set([
|
|
|
68110
67926
|
TAG_ID.THEAD,
|
|
68111
67927
|
TAG_ID.TR,
|
|
68112
67928
|
]);
|
|
68113
|
-
const
|
|
68114
|
-
|
|
68115
|
-
|
|
68116
|
-
|
|
68117
|
-
|
|
68118
|
-
|
|
68119
|
-
|
|
68120
|
-
|
|
68121
|
-
|
|
68122
|
-
|
|
68123
|
-
[TAG_ID.ANNOTATION_XML, html_NS.MATHML],
|
|
68124
|
-
[TAG_ID.MI, html_NS.MATHML],
|
|
68125
|
-
[TAG_ID.MN, html_NS.MATHML],
|
|
68126
|
-
[TAG_ID.MO, html_NS.MATHML],
|
|
68127
|
-
[TAG_ID.MS, html_NS.MATHML],
|
|
68128
|
-
[TAG_ID.MTEXT, html_NS.MATHML],
|
|
68129
|
-
[TAG_ID.DESC, html_NS.SVG],
|
|
68130
|
-
[TAG_ID.FOREIGN_OBJECT, html_NS.SVG],
|
|
68131
|
-
[TAG_ID.TITLE, html_NS.SVG],
|
|
67929
|
+
const SCOPING_ELEMENTS_HTML = new Set([
|
|
67930
|
+
TAG_ID.APPLET,
|
|
67931
|
+
TAG_ID.CAPTION,
|
|
67932
|
+
TAG_ID.HTML,
|
|
67933
|
+
TAG_ID.MARQUEE,
|
|
67934
|
+
TAG_ID.OBJECT,
|
|
67935
|
+
TAG_ID.TABLE,
|
|
67936
|
+
TAG_ID.TD,
|
|
67937
|
+
TAG_ID.TEMPLATE,
|
|
67938
|
+
TAG_ID.TH,
|
|
68132
67939
|
]);
|
|
68133
|
-
const
|
|
68134
|
-
const
|
|
68135
|
-
const
|
|
68136
|
-
const
|
|
68137
|
-
const
|
|
67940
|
+
const SCOPING_ELEMENTS_HTML_LIST = new Set([...SCOPING_ELEMENTS_HTML, TAG_ID.OL, TAG_ID.UL]);
|
|
67941
|
+
const SCOPING_ELEMENTS_HTML_BUTTON = new Set([...SCOPING_ELEMENTS_HTML, TAG_ID.BUTTON]);
|
|
67942
|
+
const SCOPING_ELEMENTS_MATHML = new Set([TAG_ID.ANNOTATION_XML, TAG_ID.MI, TAG_ID.MN, TAG_ID.MO, TAG_ID.MS, TAG_ID.MTEXT]);
|
|
67943
|
+
const SCOPING_ELEMENTS_SVG = new Set([TAG_ID.DESC, TAG_ID.FOREIGN_OBJECT, TAG_ID.TITLE]);
|
|
67944
|
+
const TABLE_ROW_CONTEXT = new Set([TAG_ID.TR, TAG_ID.TEMPLATE, TAG_ID.HTML]);
|
|
67945
|
+
const TABLE_BODY_CONTEXT = new Set([TAG_ID.TBODY, TAG_ID.TFOOT, TAG_ID.THEAD, TAG_ID.TEMPLATE, TAG_ID.HTML]);
|
|
67946
|
+
const TABLE_CONTEXT = new Set([TAG_ID.TABLE, TAG_ID.TEMPLATE, TAG_ID.HTML]);
|
|
67947
|
+
const TABLE_CELLS = new Set([TAG_ID.TD, TAG_ID.TH]);
|
|
68138
67948
|
//Stack of open elements
|
|
68139
67949
|
class OpenElementStack {
|
|
68140
67950
|
get currentTmplContentOrNode() {
|
|
@@ -68198,14 +68008,16 @@ class OpenElementStack {
|
|
|
68198
68008
|
if (insertionIdx === this.stackTop) {
|
|
68199
68009
|
this._updateCurrentElement();
|
|
68200
68010
|
}
|
|
68201
|
-
|
|
68011
|
+
if (this.current && this.currentTagId !== undefined) {
|
|
68012
|
+
this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop);
|
|
68013
|
+
}
|
|
68202
68014
|
}
|
|
68203
68015
|
popUntilTagNamePopped(tagName) {
|
|
68204
68016
|
let targetIdx = this.stackTop + 1;
|
|
68205
68017
|
do {
|
|
68206
68018
|
targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1);
|
|
68207
68019
|
} while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== html_NS.HTML);
|
|
68208
|
-
this.shortenToLength(targetIdx
|
|
68020
|
+
this.shortenToLength(Math.max(targetIdx, 0));
|
|
68209
68021
|
}
|
|
68210
68022
|
shortenToLength(idx) {
|
|
68211
68023
|
while (this.stackTop >= idx) {
|
|
@@ -68220,14 +68032,14 @@ class OpenElementStack {
|
|
|
68220
68032
|
}
|
|
68221
68033
|
popUntilElementPopped(element) {
|
|
68222
68034
|
const idx = this._indexOf(element);
|
|
68223
|
-
this.shortenToLength(idx
|
|
68035
|
+
this.shortenToLength(Math.max(idx, 0));
|
|
68224
68036
|
}
|
|
68225
68037
|
popUntilPopped(tagNames, targetNS) {
|
|
68226
68038
|
const idx = this._indexOfTagNames(tagNames, targetNS);
|
|
68227
|
-
this.shortenToLength(idx
|
|
68039
|
+
this.shortenToLength(Math.max(idx, 0));
|
|
68228
68040
|
}
|
|
68229
68041
|
popUntilNumberedHeaderPopped() {
|
|
68230
|
-
this.popUntilPopped(
|
|
68042
|
+
this.popUntilPopped(NUMBERED_HEADERS, html_NS.HTML);
|
|
68231
68043
|
}
|
|
68232
68044
|
popUntilTableCellPopped() {
|
|
68233
68045
|
this.popUntilPopped(TABLE_CELLS, html_NS.HTML);
|
|
@@ -68240,7 +68052,7 @@ class OpenElementStack {
|
|
|
68240
68052
|
}
|
|
68241
68053
|
_indexOfTagNames(tagNames, namespace) {
|
|
68242
68054
|
for (let i = this.stackTop; i >= 0; i--) {
|
|
68243
|
-
if (tagNames.
|
|
68055
|
+
if (tagNames.has(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) {
|
|
68244
68056
|
return i;
|
|
68245
68057
|
}
|
|
68246
68058
|
}
|
|
@@ -68290,124 +68102,141 @@ class OpenElementStack {
|
|
|
68290
68102
|
return this.stackTop === 0 && this.tagIDs[0] === TAG_ID.HTML;
|
|
68291
68103
|
}
|
|
68292
68104
|
//Element in scope
|
|
68293
|
-
|
|
68105
|
+
hasInDynamicScope(tagName, htmlScope) {
|
|
68294
68106
|
for (let i = this.stackTop; i >= 0; i--) {
|
|
68295
68107
|
const tn = this.tagIDs[i];
|
|
68296
|
-
|
|
68297
|
-
|
|
68298
|
-
|
|
68299
|
-
|
|
68300
|
-
|
|
68301
|
-
|
|
68108
|
+
switch (this.treeAdapter.getNamespaceURI(this.items[i])) {
|
|
68109
|
+
case html_NS.HTML: {
|
|
68110
|
+
if (tn === tagName)
|
|
68111
|
+
return true;
|
|
68112
|
+
if (htmlScope.has(tn))
|
|
68113
|
+
return false;
|
|
68114
|
+
break;
|
|
68115
|
+
}
|
|
68116
|
+
case html_NS.SVG: {
|
|
68117
|
+
if (SCOPING_ELEMENTS_SVG.has(tn))
|
|
68118
|
+
return false;
|
|
68119
|
+
break;
|
|
68120
|
+
}
|
|
68121
|
+
case html_NS.MATHML: {
|
|
68122
|
+
if (SCOPING_ELEMENTS_MATHML.has(tn))
|
|
68123
|
+
return false;
|
|
68124
|
+
break;
|
|
68125
|
+
}
|
|
68302
68126
|
}
|
|
68303
68127
|
}
|
|
68304
68128
|
return true;
|
|
68305
68129
|
}
|
|
68306
|
-
|
|
68307
|
-
|
|
68308
|
-
const tn = this.tagIDs[i];
|
|
68309
|
-
const ns = this.treeAdapter.getNamespaceURI(this.items[i]);
|
|
68310
|
-
if (isNumberedHeader(tn) && ns === html_NS.HTML) {
|
|
68311
|
-
return true;
|
|
68312
|
-
}
|
|
68313
|
-
if (SCOPING_ELEMENT_NS.get(tn) === ns) {
|
|
68314
|
-
return false;
|
|
68315
|
-
}
|
|
68316
|
-
}
|
|
68317
|
-
return true;
|
|
68130
|
+
hasInScope(tagName) {
|
|
68131
|
+
return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML);
|
|
68318
68132
|
}
|
|
68319
68133
|
hasInListItemScope(tagName) {
|
|
68320
|
-
|
|
68321
|
-
const tn = this.tagIDs[i];
|
|
68322
|
-
const ns = this.treeAdapter.getNamespaceURI(this.items[i]);
|
|
68323
|
-
if (tn === tagName && ns === html_NS.HTML) {
|
|
68324
|
-
return true;
|
|
68325
|
-
}
|
|
68326
|
-
if (((tn === TAG_ID.UL || tn === TAG_ID.OL) && ns === html_NS.HTML) || SCOPING_ELEMENT_NS.get(tn) === ns) {
|
|
68327
|
-
return false;
|
|
68328
|
-
}
|
|
68329
|
-
}
|
|
68330
|
-
return true;
|
|
68134
|
+
return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_LIST);
|
|
68331
68135
|
}
|
|
68332
68136
|
hasInButtonScope(tagName) {
|
|
68137
|
+
return this.hasInDynamicScope(tagName, SCOPING_ELEMENTS_HTML_BUTTON);
|
|
68138
|
+
}
|
|
68139
|
+
hasNumberedHeaderInScope() {
|
|
68333
68140
|
for (let i = this.stackTop; i >= 0; i--) {
|
|
68334
68141
|
const tn = this.tagIDs[i];
|
|
68335
|
-
|
|
68336
|
-
|
|
68337
|
-
|
|
68338
|
-
|
|
68339
|
-
|
|
68340
|
-
|
|
68142
|
+
switch (this.treeAdapter.getNamespaceURI(this.items[i])) {
|
|
68143
|
+
case html_NS.HTML: {
|
|
68144
|
+
if (NUMBERED_HEADERS.has(tn))
|
|
68145
|
+
return true;
|
|
68146
|
+
if (SCOPING_ELEMENTS_HTML.has(tn))
|
|
68147
|
+
return false;
|
|
68148
|
+
break;
|
|
68149
|
+
}
|
|
68150
|
+
case html_NS.SVG: {
|
|
68151
|
+
if (SCOPING_ELEMENTS_SVG.has(tn))
|
|
68152
|
+
return false;
|
|
68153
|
+
break;
|
|
68154
|
+
}
|
|
68155
|
+
case html_NS.MATHML: {
|
|
68156
|
+
if (SCOPING_ELEMENTS_MATHML.has(tn))
|
|
68157
|
+
return false;
|
|
68158
|
+
break;
|
|
68159
|
+
}
|
|
68341
68160
|
}
|
|
68342
68161
|
}
|
|
68343
68162
|
return true;
|
|
68344
68163
|
}
|
|
68345
68164
|
hasInTableScope(tagName) {
|
|
68346
68165
|
for (let i = this.stackTop; i >= 0; i--) {
|
|
68347
|
-
|
|
68348
|
-
const ns = this.treeAdapter.getNamespaceURI(this.items[i]);
|
|
68349
|
-
if (ns !== html_NS.HTML) {
|
|
68166
|
+
if (this.treeAdapter.getNamespaceURI(this.items[i]) !== html_NS.HTML) {
|
|
68350
68167
|
continue;
|
|
68351
68168
|
}
|
|
68352
|
-
|
|
68353
|
-
|
|
68354
|
-
|
|
68355
|
-
|
|
68356
|
-
|
|
68169
|
+
switch (this.tagIDs[i]) {
|
|
68170
|
+
case tagName: {
|
|
68171
|
+
return true;
|
|
68172
|
+
}
|
|
68173
|
+
case TAG_ID.TABLE:
|
|
68174
|
+
case TAG_ID.HTML: {
|
|
68175
|
+
return false;
|
|
68176
|
+
}
|
|
68357
68177
|
}
|
|
68358
68178
|
}
|
|
68359
68179
|
return true;
|
|
68360
68180
|
}
|
|
68361
68181
|
hasTableBodyContextInTableScope() {
|
|
68362
68182
|
for (let i = this.stackTop; i >= 0; i--) {
|
|
68363
|
-
|
|
68364
|
-
const ns = this.treeAdapter.getNamespaceURI(this.items[i]);
|
|
68365
|
-
if (ns !== html_NS.HTML) {
|
|
68183
|
+
if (this.treeAdapter.getNamespaceURI(this.items[i]) !== html_NS.HTML) {
|
|
68366
68184
|
continue;
|
|
68367
68185
|
}
|
|
68368
|
-
|
|
68369
|
-
|
|
68370
|
-
|
|
68371
|
-
|
|
68372
|
-
|
|
68186
|
+
switch (this.tagIDs[i]) {
|
|
68187
|
+
case TAG_ID.TBODY:
|
|
68188
|
+
case TAG_ID.THEAD:
|
|
68189
|
+
case TAG_ID.TFOOT: {
|
|
68190
|
+
return true;
|
|
68191
|
+
}
|
|
68192
|
+
case TAG_ID.TABLE:
|
|
68193
|
+
case TAG_ID.HTML: {
|
|
68194
|
+
return false;
|
|
68195
|
+
}
|
|
68373
68196
|
}
|
|
68374
68197
|
}
|
|
68375
68198
|
return true;
|
|
68376
68199
|
}
|
|
68377
68200
|
hasInSelectScope(tagName) {
|
|
68378
68201
|
for (let i = this.stackTop; i >= 0; i--) {
|
|
68379
|
-
|
|
68380
|
-
const ns = this.treeAdapter.getNamespaceURI(this.items[i]);
|
|
68381
|
-
if (ns !== html_NS.HTML) {
|
|
68202
|
+
if (this.treeAdapter.getNamespaceURI(this.items[i]) !== html_NS.HTML) {
|
|
68382
68203
|
continue;
|
|
68383
68204
|
}
|
|
68384
|
-
|
|
68385
|
-
|
|
68386
|
-
|
|
68387
|
-
|
|
68388
|
-
|
|
68205
|
+
switch (this.tagIDs[i]) {
|
|
68206
|
+
case tagName: {
|
|
68207
|
+
return true;
|
|
68208
|
+
}
|
|
68209
|
+
case TAG_ID.OPTION:
|
|
68210
|
+
case TAG_ID.OPTGROUP: {
|
|
68211
|
+
break;
|
|
68212
|
+
}
|
|
68213
|
+
default: {
|
|
68214
|
+
return false;
|
|
68215
|
+
}
|
|
68389
68216
|
}
|
|
68390
68217
|
}
|
|
68391
68218
|
return true;
|
|
68392
68219
|
}
|
|
68393
68220
|
//Implied end tags
|
|
68394
68221
|
generateImpliedEndTags() {
|
|
68395
|
-
while (IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) {
|
|
68222
|
+
while (this.currentTagId !== undefined && IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) {
|
|
68396
68223
|
this.pop();
|
|
68397
68224
|
}
|
|
68398
68225
|
}
|
|
68399
68226
|
generateImpliedEndTagsThoroughly() {
|
|
68400
|
-
while (IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {
|
|
68227
|
+
while (this.currentTagId !== undefined && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {
|
|
68401
68228
|
this.pop();
|
|
68402
68229
|
}
|
|
68403
68230
|
}
|
|
68404
68231
|
generateImpliedEndTagsWithExclusion(exclusionId) {
|
|
68405
|
-
while (this.currentTagId !==
|
|
68232
|
+
while (this.currentTagId !== undefined &&
|
|
68233
|
+
this.currentTagId !== exclusionId &&
|
|
68234
|
+
IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {
|
|
68406
68235
|
this.pop();
|
|
68407
68236
|
}
|
|
68408
68237
|
}
|
|
68409
68238
|
}
|
|
68410
|
-
|
|
68239
|
+
|
|
68411
68240
|
;// ./node_modules/parse5/dist/parser/formatting-element-list.js
|
|
68412
68241
|
//Const
|
|
68413
68242
|
const NOAH_ARK_CAPACITY = 3;
|
|
@@ -68415,7 +68244,7 @@ var EntryType;
|
|
|
68415
68244
|
(function (EntryType) {
|
|
68416
68245
|
EntryType[EntryType["Marker"] = 0] = "Marker";
|
|
68417
68246
|
EntryType[EntryType["Element"] = 1] = "Element";
|
|
68418
|
-
})(EntryType
|
|
68247
|
+
})(EntryType || (EntryType = {}));
|
|
68419
68248
|
const MARKER = { type: EntryType.Marker };
|
|
68420
68249
|
//List of formatting elements
|
|
68421
68250
|
class FormattingElementList {
|
|
@@ -68492,7 +68321,7 @@ class FormattingElementList {
|
|
|
68492
68321
|
}
|
|
68493
68322
|
removeEntry(entry) {
|
|
68494
68323
|
const entryIndex = this.entries.indexOf(entry);
|
|
68495
|
-
if (entryIndex
|
|
68324
|
+
if (entryIndex !== -1) {
|
|
68496
68325
|
this.entries.splice(entryIndex, 1);
|
|
68497
68326
|
}
|
|
68498
68327
|
}
|
|
@@ -68503,11 +68332,11 @@ class FormattingElementList {
|
|
|
68503
68332
|
*/
|
|
68504
68333
|
clearToLastMarker() {
|
|
68505
68334
|
const markerIdx = this.entries.indexOf(MARKER);
|
|
68506
|
-
if (markerIdx
|
|
68507
|
-
this.entries.
|
|
68335
|
+
if (markerIdx === -1) {
|
|
68336
|
+
this.entries.length = 0;
|
|
68508
68337
|
}
|
|
68509
68338
|
else {
|
|
68510
|
-
this.entries.
|
|
68339
|
+
this.entries.splice(0, markerIdx + 1);
|
|
68511
68340
|
}
|
|
68512
68341
|
}
|
|
68513
68342
|
//Search
|
|
@@ -68519,16 +68348,9 @@ class FormattingElementList {
|
|
|
68519
68348
|
return this.entries.find((entry) => entry.type === EntryType.Element && entry.element === element);
|
|
68520
68349
|
}
|
|
68521
68350
|
}
|
|
68522
|
-
|
|
68351
|
+
|
|
68523
68352
|
;// ./node_modules/parse5/dist/tree-adapters/default.js
|
|
68524
68353
|
|
|
68525
|
-
function createTextNode(value) {
|
|
68526
|
-
return {
|
|
68527
|
-
nodeName: '#text',
|
|
68528
|
-
value,
|
|
68529
|
-
parentNode: null,
|
|
68530
|
-
};
|
|
68531
|
-
}
|
|
68532
68354
|
const defaultTreeAdapter = {
|
|
68533
68355
|
//Node construction
|
|
68534
68356
|
createDocument() {
|
|
@@ -68561,6 +68383,13 @@ const defaultTreeAdapter = {
|
|
|
68561
68383
|
parentNode: null,
|
|
68562
68384
|
};
|
|
68563
68385
|
},
|
|
68386
|
+
createTextNode(value) {
|
|
68387
|
+
return {
|
|
68388
|
+
nodeName: '#text',
|
|
68389
|
+
value,
|
|
68390
|
+
parentNode: null,
|
|
68391
|
+
};
|
|
68392
|
+
},
|
|
68564
68393
|
//Tree mutation
|
|
68565
68394
|
appendChild(parentNode, newNode) {
|
|
68566
68395
|
parentNode.childNodes.push(newNode);
|
|
@@ -68616,7 +68445,7 @@ const defaultTreeAdapter = {
|
|
|
68616
68445
|
return;
|
|
68617
68446
|
}
|
|
68618
68447
|
}
|
|
68619
|
-
defaultTreeAdapter.appendChild(parentNode, createTextNode(text));
|
|
68448
|
+
defaultTreeAdapter.appendChild(parentNode, defaultTreeAdapter.createTextNode(text));
|
|
68620
68449
|
},
|
|
68621
68450
|
insertTextBefore(parentNode, text, referenceNode) {
|
|
68622
68451
|
const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];
|
|
@@ -68624,7 +68453,7 @@ const defaultTreeAdapter = {
|
|
|
68624
68453
|
prevNode.value += text;
|
|
68625
68454
|
}
|
|
68626
68455
|
else {
|
|
68627
|
-
defaultTreeAdapter.insertBefore(parentNode, createTextNode(text), referenceNode);
|
|
68456
|
+
defaultTreeAdapter.insertBefore(parentNode, defaultTreeAdapter.createTextNode(text), referenceNode);
|
|
68628
68457
|
}
|
|
68629
68458
|
},
|
|
68630
68459
|
adoptAttributes(recipient, attrs) {
|
|
@@ -68694,7 +68523,7 @@ const defaultTreeAdapter = {
|
|
|
68694
68523
|
node.sourceCodeLocation = { ...node.sourceCodeLocation, ...endLocation };
|
|
68695
68524
|
},
|
|
68696
68525
|
};
|
|
68697
|
-
|
|
68526
|
+
|
|
68698
68527
|
;// ./node_modules/parse5/dist/common/doctype.js
|
|
68699
68528
|
|
|
68700
68529
|
//Const
|
|
@@ -68810,7 +68639,7 @@ function getDocumentMode(token) {
|
|
|
68810
68639
|
}
|
|
68811
68640
|
return DOCUMENT_MODE.NO_QUIRKS;
|
|
68812
68641
|
}
|
|
68813
|
-
|
|
68642
|
+
|
|
68814
68643
|
;// ./node_modules/parse5/dist/common/foreign-content.js
|
|
68815
68644
|
|
|
68816
68645
|
//MIME types
|
|
@@ -68889,7 +68718,6 @@ const XML_ATTRS_ADJUSTMENT_MAP = new Map([
|
|
|
68889
68718
|
['xlink:show', { prefix: 'xlink', name: 'show', namespace: html_NS.XLINK }],
|
|
68890
68719
|
['xlink:title', { prefix: 'xlink', name: 'title', namespace: html_NS.XLINK }],
|
|
68891
68720
|
['xlink:type', { prefix: 'xlink', name: 'type', namespace: html_NS.XLINK }],
|
|
68892
|
-
['xml:base', { prefix: 'xml', name: 'base', namespace: html_NS.XML }],
|
|
68893
68721
|
['xml:lang', { prefix: 'xml', name: 'lang', namespace: html_NS.XML }],
|
|
68894
68722
|
['xml:space', { prefix: 'xml', name: 'space', namespace: html_NS.XML }],
|
|
68895
68723
|
['xmlns', { prefix: '', name: 'xmlns', namespace: html_NS.XMLNS }],
|
|
@@ -69041,7 +68869,7 @@ function isIntegrationPoint(tn, ns, attrs, foreignNS) {
|
|
|
69041
68869
|
return (((!foreignNS || foreignNS === html_NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) ||
|
|
69042
68870
|
((!foreignNS || foreignNS === html_NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns)));
|
|
69043
68871
|
}
|
|
69044
|
-
|
|
68872
|
+
|
|
69045
68873
|
;// ./node_modules/parse5/dist/parser/index.js
|
|
69046
68874
|
|
|
69047
68875
|
|
|
@@ -69102,26 +68930,41 @@ const defaultParserOptions = {
|
|
|
69102
68930
|
};
|
|
69103
68931
|
//Parser
|
|
69104
68932
|
class parser_Parser {
|
|
69105
|
-
constructor(options, document,
|
|
68933
|
+
constructor(options, document,
|
|
68934
|
+
/** @internal */
|
|
68935
|
+
fragmentContext = null,
|
|
68936
|
+
/** @internal */
|
|
68937
|
+
scriptHandler = null) {
|
|
69106
68938
|
this.fragmentContext = fragmentContext;
|
|
69107
68939
|
this.scriptHandler = scriptHandler;
|
|
69108
68940
|
this.currentToken = null;
|
|
69109
68941
|
this.stopped = false;
|
|
68942
|
+
/** @internal */
|
|
69110
68943
|
this.insertionMode = InsertionMode.INITIAL;
|
|
68944
|
+
/** @internal */
|
|
69111
68945
|
this.originalInsertionMode = InsertionMode.INITIAL;
|
|
68946
|
+
/** @internal */
|
|
69112
68947
|
this.headElement = null;
|
|
68948
|
+
/** @internal */
|
|
69113
68949
|
this.formElement = null;
|
|
69114
68950
|
/** Indicates that the current node is not an element in the HTML namespace */
|
|
69115
68951
|
this.currentNotInHTML = false;
|
|
69116
68952
|
/**
|
|
69117
68953
|
* The template insertion mode stack is maintained from the left.
|
|
69118
68954
|
* Ie. the topmost element will always have index 0.
|
|
68955
|
+
*
|
|
68956
|
+
* @internal
|
|
69119
68957
|
*/
|
|
69120
68958
|
this.tmplInsertionModeStack = [];
|
|
68959
|
+
/** @internal */
|
|
69121
68960
|
this.pendingCharacterTokens = [];
|
|
68961
|
+
/** @internal */
|
|
69122
68962
|
this.hasNonWhitespacePendingCharacterToken = false;
|
|
68963
|
+
/** @internal */
|
|
69123
68964
|
this.framesetOk = true;
|
|
68965
|
+
/** @internal */
|
|
69124
68966
|
this.skipNextNewLine = false;
|
|
68967
|
+
/** @internal */
|
|
69125
68968
|
this.fosterParentingEnabled = false;
|
|
69126
68969
|
this.options = {
|
|
69127
68970
|
...defaultParserOptions,
|
|
@@ -69175,6 +69018,7 @@ class parser_Parser {
|
|
|
69175
69018
|
return fragment;
|
|
69176
69019
|
}
|
|
69177
69020
|
//Errors
|
|
69021
|
+
/** @internal */
|
|
69178
69022
|
_err(token, code, beforeToken) {
|
|
69179
69023
|
var _a;
|
|
69180
69024
|
if (!this.onParseError)
|
|
@@ -69192,12 +69036,14 @@ class parser_Parser {
|
|
|
69192
69036
|
this.onParseError(err);
|
|
69193
69037
|
}
|
|
69194
69038
|
//Stack events
|
|
69039
|
+
/** @internal */
|
|
69195
69040
|
onItemPush(node, tid, isTop) {
|
|
69196
69041
|
var _a, _b;
|
|
69197
69042
|
(_b = (_a = this.treeAdapter).onItemPush) === null || _b === void 0 ? void 0 : _b.call(_a, node);
|
|
69198
69043
|
if (isTop && this.openElements.stackTop > 0)
|
|
69199
69044
|
this._setContextModes(node, tid);
|
|
69200
69045
|
}
|
|
69046
|
+
/** @internal */
|
|
69201
69047
|
onItemPop(node, isTop) {
|
|
69202
69048
|
var _a, _b;
|
|
69203
69049
|
if (this.options.sourceCodeLocationInfo) {
|
|
@@ -69218,10 +69064,12 @@ class parser_Parser {
|
|
|
69218
69064
|
}
|
|
69219
69065
|
}
|
|
69220
69066
|
_setContextModes(current, tid) {
|
|
69221
|
-
const isHTML = current === this.document || this.treeAdapter.getNamespaceURI(current) === html_NS.HTML;
|
|
69067
|
+
const isHTML = current === this.document || (current && this.treeAdapter.getNamespaceURI(current) === html_NS.HTML);
|
|
69222
69068
|
this.currentNotInHTML = !isHTML;
|
|
69223
|
-
this.tokenizer.inForeignNode =
|
|
69069
|
+
this.tokenizer.inForeignNode =
|
|
69070
|
+
!isHTML && current !== undefined && tid !== undefined && !this._isIntegrationPoint(tid, current);
|
|
69224
69071
|
}
|
|
69072
|
+
/** @protected */
|
|
69225
69073
|
_switchToTextParsing(currentToken, nextTokenizerState) {
|
|
69226
69074
|
this._insertElement(currentToken, html_NS.HTML);
|
|
69227
69075
|
this.tokenizer.state = nextTokenizerState;
|
|
@@ -69234,11 +69082,13 @@ class parser_Parser {
|
|
|
69234
69082
|
this.tokenizer.state = TokenizerMode.PLAINTEXT;
|
|
69235
69083
|
}
|
|
69236
69084
|
//Fragment parsing
|
|
69085
|
+
/** @protected */
|
|
69237
69086
|
_getAdjustedCurrentElement() {
|
|
69238
69087
|
return this.openElements.stackTop === 0 && this.fragmentContext
|
|
69239
69088
|
? this.fragmentContext
|
|
69240
69089
|
: this.openElements.current;
|
|
69241
69090
|
}
|
|
69091
|
+
/** @protected */
|
|
69242
69092
|
_findFormInFragmentContext() {
|
|
69243
69093
|
let node = this.fragmentContext;
|
|
69244
69094
|
while (node) {
|
|
@@ -69281,6 +69131,7 @@ class parser_Parser {
|
|
|
69281
69131
|
}
|
|
69282
69132
|
}
|
|
69283
69133
|
//Tree mutation
|
|
69134
|
+
/** @protected */
|
|
69284
69135
|
_setDocumentType(token) {
|
|
69285
69136
|
const name = token.name || '';
|
|
69286
69137
|
const publicId = token.publicId || '';
|
|
@@ -69294,6 +69145,7 @@ class parser_Parser {
|
|
|
69294
69145
|
}
|
|
69295
69146
|
}
|
|
69296
69147
|
}
|
|
69148
|
+
/** @protected */
|
|
69297
69149
|
_attachElementToTree(element, location) {
|
|
69298
69150
|
if (this.options.sourceCodeLocationInfo) {
|
|
69299
69151
|
const loc = location && {
|
|
@@ -69307,23 +69159,31 @@ class parser_Parser {
|
|
|
69307
69159
|
}
|
|
69308
69160
|
else {
|
|
69309
69161
|
const parent = this.openElements.currentTmplContentOrNode;
|
|
69310
|
-
this.treeAdapter.appendChild(parent, element);
|
|
69162
|
+
this.treeAdapter.appendChild(parent !== null && parent !== void 0 ? parent : this.document, element);
|
|
69311
69163
|
}
|
|
69312
69164
|
}
|
|
69165
|
+
/**
|
|
69166
|
+
* For self-closing tags. Add an element to the tree, but skip adding it
|
|
69167
|
+
* to the stack.
|
|
69168
|
+
*/
|
|
69169
|
+
/** @protected */
|
|
69313
69170
|
_appendElement(token, namespaceURI) {
|
|
69314
69171
|
const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);
|
|
69315
69172
|
this._attachElementToTree(element, token.location);
|
|
69316
69173
|
}
|
|
69174
|
+
/** @protected */
|
|
69317
69175
|
_insertElement(token, namespaceURI) {
|
|
69318
69176
|
const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);
|
|
69319
69177
|
this._attachElementToTree(element, token.location);
|
|
69320
69178
|
this.openElements.push(element, token.tagID);
|
|
69321
69179
|
}
|
|
69180
|
+
/** @protected */
|
|
69322
69181
|
_insertFakeElement(tagName, tagID) {
|
|
69323
69182
|
const element = this.treeAdapter.createElement(tagName, html_NS.HTML, []);
|
|
69324
69183
|
this._attachElementToTree(element, null);
|
|
69325
69184
|
this.openElements.push(element, tagID);
|
|
69326
69185
|
}
|
|
69186
|
+
/** @protected */
|
|
69327
69187
|
_insertTemplate(token) {
|
|
69328
69188
|
const tmpl = this.treeAdapter.createElement(token.tagName, html_NS.HTML, token.attrs);
|
|
69329
69189
|
const content = this.treeAdapter.createDocumentFragment();
|
|
@@ -69333,6 +69193,7 @@ class parser_Parser {
|
|
|
69333
69193
|
if (this.options.sourceCodeLocationInfo)
|
|
69334
69194
|
this.treeAdapter.setNodeSourceCodeLocation(content, null);
|
|
69335
69195
|
}
|
|
69196
|
+
/** @protected */
|
|
69336
69197
|
_insertFakeRootElement() {
|
|
69337
69198
|
const element = this.treeAdapter.createElement(TAG_NAMES.HTML, html_NS.HTML, []);
|
|
69338
69199
|
if (this.options.sourceCodeLocationInfo)
|
|
@@ -69340,6 +69201,7 @@ class parser_Parser {
|
|
|
69340
69201
|
this.treeAdapter.appendChild(this.openElements.current, element);
|
|
69341
69202
|
this.openElements.push(element, TAG_ID.HTML);
|
|
69342
69203
|
}
|
|
69204
|
+
/** @protected */
|
|
69343
69205
|
_appendCommentNode(token, parent) {
|
|
69344
69206
|
const commentNode = this.treeAdapter.createCommentNode(token.data);
|
|
69345
69207
|
this.treeAdapter.appendChild(parent, commentNode);
|
|
@@ -69347,6 +69209,7 @@ class parser_Parser {
|
|
|
69347
69209
|
this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);
|
|
69348
69210
|
}
|
|
69349
69211
|
}
|
|
69212
|
+
/** @protected */
|
|
69350
69213
|
_insertCharacters(token) {
|
|
69351
69214
|
let parent;
|
|
69352
69215
|
let beforeElement;
|
|
@@ -69378,12 +69241,14 @@ class parser_Parser {
|
|
|
69378
69241
|
this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);
|
|
69379
69242
|
}
|
|
69380
69243
|
}
|
|
69244
|
+
/** @protected */
|
|
69381
69245
|
_adoptNodes(donor, recipient) {
|
|
69382
69246
|
for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) {
|
|
69383
69247
|
this.treeAdapter.detachNode(child);
|
|
69384
69248
|
this.treeAdapter.appendChild(recipient, child);
|
|
69385
69249
|
}
|
|
69386
69250
|
}
|
|
69251
|
+
/** @protected */
|
|
69387
69252
|
_setEndLocation(element, closingToken) {
|
|
69388
69253
|
if (this.treeAdapter.getNodeSourceCodeLocation(element) && closingToken.location) {
|
|
69389
69254
|
const ctLoc = closingToken.location;
|
|
@@ -69431,8 +69296,10 @@ class parser_Parser {
|
|
|
69431
69296
|
// If it _is_ an integration point, then we might have to check that it is not an HTML
|
|
69432
69297
|
// integration point.
|
|
69433
69298
|
((token.tagID === TAG_ID.MGLYPH || token.tagID === TAG_ID.MALIGNMARK) &&
|
|
69299
|
+
currentTagId !== undefined &&
|
|
69434
69300
|
!this._isIntegrationPoint(currentTagId, current, html_NS.HTML)));
|
|
69435
69301
|
}
|
|
69302
|
+
/** @protected */
|
|
69436
69303
|
_processToken(token) {
|
|
69437
69304
|
switch (token.type) {
|
|
69438
69305
|
case token_TokenType.CHARACTER: {
|
|
@@ -69470,17 +69337,19 @@ class parser_Parser {
|
|
|
69470
69337
|
}
|
|
69471
69338
|
}
|
|
69472
69339
|
//Integration points
|
|
69340
|
+
/** @protected */
|
|
69473
69341
|
_isIntegrationPoint(tid, element, foreignNS) {
|
|
69474
69342
|
const ns = this.treeAdapter.getNamespaceURI(element);
|
|
69475
69343
|
const attrs = this.treeAdapter.getAttrList(element);
|
|
69476
69344
|
return isIntegrationPoint(tid, ns, attrs, foreignNS);
|
|
69477
69345
|
}
|
|
69478
69346
|
//Active formatting elements reconstruction
|
|
69347
|
+
/** @protected */
|
|
69479
69348
|
_reconstructActiveFormattingElements() {
|
|
69480
69349
|
const listLength = this.activeFormattingElements.entries.length;
|
|
69481
69350
|
if (listLength) {
|
|
69482
69351
|
const endIndex = this.activeFormattingElements.entries.findIndex((entry) => entry.type === EntryType.Marker || this.openElements.contains(entry.element));
|
|
69483
|
-
const unopenIdx = endIndex
|
|
69352
|
+
const unopenIdx = endIndex === -1 ? listLength - 1 : endIndex - 1;
|
|
69484
69353
|
for (let i = unopenIdx; i >= 0; i--) {
|
|
69485
69354
|
const entry = this.activeFormattingElements.entries[i];
|
|
69486
69355
|
this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element));
|
|
@@ -69489,17 +69358,20 @@ class parser_Parser {
|
|
|
69489
69358
|
}
|
|
69490
69359
|
}
|
|
69491
69360
|
//Close elements
|
|
69361
|
+
/** @protected */
|
|
69492
69362
|
_closeTableCell() {
|
|
69493
69363
|
this.openElements.generateImpliedEndTags();
|
|
69494
69364
|
this.openElements.popUntilTableCellPopped();
|
|
69495
69365
|
this.activeFormattingElements.clearToLastMarker();
|
|
69496
69366
|
this.insertionMode = InsertionMode.IN_ROW;
|
|
69497
69367
|
}
|
|
69368
|
+
/** @protected */
|
|
69498
69369
|
_closePElement() {
|
|
69499
69370
|
this.openElements.generateImpliedEndTagsWithExclusion(TAG_ID.P);
|
|
69500
69371
|
this.openElements.popUntilTagNamePopped(TAG_ID.P);
|
|
69501
69372
|
}
|
|
69502
69373
|
//Insertion modes
|
|
69374
|
+
/** @protected */
|
|
69503
69375
|
_resetInsertionMode() {
|
|
69504
69376
|
for (let i = this.openElements.stackTop; i >= 0; i--) {
|
|
69505
69377
|
//Insertion mode reset map
|
|
@@ -69565,6 +69437,7 @@ class parser_Parser {
|
|
|
69565
69437
|
}
|
|
69566
69438
|
this.insertionMode = InsertionMode.IN_BODY;
|
|
69567
69439
|
}
|
|
69440
|
+
/** @protected */
|
|
69568
69441
|
_resetInsertionModeForSelect(selectIdx) {
|
|
69569
69442
|
if (selectIdx > 0) {
|
|
69570
69443
|
for (let i = selectIdx - 1; i > 0; i--) {
|
|
@@ -69581,12 +69454,17 @@ class parser_Parser {
|
|
|
69581
69454
|
this.insertionMode = InsertionMode.IN_SELECT;
|
|
69582
69455
|
}
|
|
69583
69456
|
//Foster parenting
|
|
69457
|
+
/** @protected */
|
|
69584
69458
|
_isElementCausesFosterParenting(tn) {
|
|
69585
69459
|
return TABLE_STRUCTURE_TAGS.has(tn);
|
|
69586
69460
|
}
|
|
69461
|
+
/** @protected */
|
|
69587
69462
|
_shouldFosterParentOnInsertion() {
|
|
69588
|
-
return this.fosterParentingEnabled &&
|
|
69463
|
+
return (this.fosterParentingEnabled &&
|
|
69464
|
+
this.openElements.currentTagId !== undefined &&
|
|
69465
|
+
this._isElementCausesFosterParenting(this.openElements.currentTagId));
|
|
69589
69466
|
}
|
|
69467
|
+
/** @protected */
|
|
69590
69468
|
_findFosterParentingLocation() {
|
|
69591
69469
|
for (let i = this.openElements.stackTop; i >= 0; i--) {
|
|
69592
69470
|
const openElement = this.openElements.items[i];
|
|
@@ -69610,6 +69488,7 @@ class parser_Parser {
|
|
|
69610
69488
|
}
|
|
69611
69489
|
return { parent: this.openElements.items[0], beforeElement: null };
|
|
69612
69490
|
}
|
|
69491
|
+
/** @protected */
|
|
69613
69492
|
_fosterParentElement(element) {
|
|
69614
69493
|
const location = this._findFosterParentingLocation();
|
|
69615
69494
|
if (location.beforeElement) {
|
|
@@ -69620,10 +69499,12 @@ class parser_Parser {
|
|
|
69620
69499
|
}
|
|
69621
69500
|
}
|
|
69622
69501
|
//Special elements
|
|
69502
|
+
/** @protected */
|
|
69623
69503
|
_isSpecialElement(element, id) {
|
|
69624
69504
|
const ns = this.treeAdapter.getNamespaceURI(element);
|
|
69625
69505
|
return SPECIAL_ELEMENTS[ns].has(id);
|
|
69626
69506
|
}
|
|
69507
|
+
/** @internal */
|
|
69627
69508
|
onCharacter(token) {
|
|
69628
69509
|
this.skipNextNewLine = false;
|
|
69629
69510
|
if (this.tokenizer.inForeignNode) {
|
|
@@ -69694,6 +69575,7 @@ class parser_Parser {
|
|
|
69694
69575
|
// Do nothing
|
|
69695
69576
|
}
|
|
69696
69577
|
}
|
|
69578
|
+
/** @internal */
|
|
69697
69579
|
onNullCharacter(token) {
|
|
69698
69580
|
this.skipNextNewLine = false;
|
|
69699
69581
|
if (this.tokenizer.inForeignNode) {
|
|
@@ -69751,6 +69633,7 @@ class parser_Parser {
|
|
|
69751
69633
|
// Do nothing
|
|
69752
69634
|
}
|
|
69753
69635
|
}
|
|
69636
|
+
/** @internal */
|
|
69754
69637
|
onComment(token) {
|
|
69755
69638
|
this.skipNextNewLine = false;
|
|
69756
69639
|
if (this.currentNotInHTML) {
|
|
@@ -69796,6 +69679,7 @@ class parser_Parser {
|
|
|
69796
69679
|
// Do nothing
|
|
69797
69680
|
}
|
|
69798
69681
|
}
|
|
69682
|
+
/** @internal */
|
|
69799
69683
|
onDoctype(token) {
|
|
69800
69684
|
this.skipNextNewLine = false;
|
|
69801
69685
|
switch (this.insertionMode) {
|
|
@@ -69818,6 +69702,7 @@ class parser_Parser {
|
|
|
69818
69702
|
// Do nothing
|
|
69819
69703
|
}
|
|
69820
69704
|
}
|
|
69705
|
+
/** @internal */
|
|
69821
69706
|
onStartTag(token) {
|
|
69822
69707
|
this.skipNextNewLine = false;
|
|
69823
69708
|
this.currentToken = token;
|
|
@@ -69835,6 +69720,7 @@ class parser_Parser {
|
|
|
69835
69720
|
* for nested calls.
|
|
69836
69721
|
*
|
|
69837
69722
|
* @param token The token to process.
|
|
69723
|
+
* @protected
|
|
69838
69724
|
*/
|
|
69839
69725
|
_processStartTag(token) {
|
|
69840
69726
|
if (this.shouldProcessStartTagTokenInForeignContent(token)) {
|
|
@@ -69844,6 +69730,7 @@ class parser_Parser {
|
|
|
69844
69730
|
this._startTagOutsideForeignContent(token);
|
|
69845
69731
|
}
|
|
69846
69732
|
}
|
|
69733
|
+
/** @protected */
|
|
69847
69734
|
_startTagOutsideForeignContent(token) {
|
|
69848
69735
|
switch (this.insertionMode) {
|
|
69849
69736
|
case InsertionMode.INITIAL: {
|
|
@@ -69938,6 +69825,7 @@ class parser_Parser {
|
|
|
69938
69825
|
// Do nothing
|
|
69939
69826
|
}
|
|
69940
69827
|
}
|
|
69828
|
+
/** @internal */
|
|
69941
69829
|
onEndTag(token) {
|
|
69942
69830
|
this.skipNextNewLine = false;
|
|
69943
69831
|
this.currentToken = token;
|
|
@@ -69948,6 +69836,7 @@ class parser_Parser {
|
|
|
69948
69836
|
this._endTagOutsideForeignContent(token);
|
|
69949
69837
|
}
|
|
69950
69838
|
}
|
|
69839
|
+
/** @protected */
|
|
69951
69840
|
_endTagOutsideForeignContent(token) {
|
|
69952
69841
|
switch (this.insertionMode) {
|
|
69953
69842
|
case InsertionMode.INITIAL: {
|
|
@@ -70042,6 +69931,7 @@ class parser_Parser {
|
|
|
70042
69931
|
// Do nothing
|
|
70043
69932
|
}
|
|
70044
69933
|
}
|
|
69934
|
+
/** @internal */
|
|
70045
69935
|
onEof(token) {
|
|
70046
69936
|
switch (this.insertionMode) {
|
|
70047
69937
|
case InsertionMode.INITIAL: {
|
|
@@ -70104,6 +69994,7 @@ class parser_Parser {
|
|
|
70104
69994
|
// Do nothing
|
|
70105
69995
|
}
|
|
70106
69996
|
}
|
|
69997
|
+
/** @internal */
|
|
70107
69998
|
onWhitespaceCharacter(token) {
|
|
70108
69999
|
if (this.skipNextNewLine) {
|
|
70109
70000
|
this.skipNextNewLine = false;
|
|
@@ -70190,7 +70081,7 @@ function aaObtainFurthestBlock(p, formattingElementEntry) {
|
|
|
70190
70081
|
}
|
|
70191
70082
|
}
|
|
70192
70083
|
if (!furthestBlock) {
|
|
70193
|
-
p.openElements.shortenToLength(idx
|
|
70084
|
+
p.openElements.shortenToLength(Math.max(idx, 0));
|
|
70194
70085
|
p.activeFormattingElements.removeEntry(formattingElementEntry);
|
|
70195
70086
|
}
|
|
70196
70087
|
return furthestBlock;
|
|
@@ -70676,7 +70567,7 @@ function numberedHeaderStartTagInBody(p, token) {
|
|
|
70676
70567
|
if (p.openElements.hasInButtonScope(TAG_ID.P)) {
|
|
70677
70568
|
p._closePElement();
|
|
70678
70569
|
}
|
|
70679
|
-
if (
|
|
70570
|
+
if (p.openElements.currentTagId !== undefined && NUMBERED_HEADERS.has(p.openElements.currentTagId)) {
|
|
70680
70571
|
p.openElements.pop();
|
|
70681
70572
|
}
|
|
70682
70573
|
p._insertElement(token, html_NS.HTML);
|
|
@@ -70838,9 +70729,9 @@ function iframeStartTagInBody(p, token) {
|
|
|
70838
70729
|
p.framesetOk = false;
|
|
70839
70730
|
p._switchToTextParsing(token, TokenizerMode.RAWTEXT);
|
|
70840
70731
|
}
|
|
70841
|
-
//NOTE: here we assume that we always act as
|
|
70842
|
-
//<noembed> as rawtext.
|
|
70843
|
-
function
|
|
70732
|
+
//NOTE: here we assume that we always act as a user agent with enabled plugins/frames, so we parse
|
|
70733
|
+
//<noembed>/<noframes> as rawtext.
|
|
70734
|
+
function rawTextStartTagInBody(p, token) {
|
|
70844
70735
|
p._switchToTextParsing(token, TokenizerMode.RAWTEXT);
|
|
70845
70736
|
}
|
|
70846
70737
|
function selectStartTagInBody(p, token) {
|
|
@@ -70952,6 +70843,7 @@ function startTagInBody(p, token) {
|
|
|
70952
70843
|
case TAG_ID.DETAILS:
|
|
70953
70844
|
case TAG_ID.ADDRESS:
|
|
70954
70845
|
case TAG_ID.ARTICLE:
|
|
70846
|
+
case TAG_ID.SEARCH:
|
|
70955
70847
|
case TAG_ID.SECTION:
|
|
70956
70848
|
case TAG_ID.SUMMARY:
|
|
70957
70849
|
case TAG_ID.FIELDSET:
|
|
@@ -71075,8 +70967,9 @@ function startTagInBody(p, token) {
|
|
|
71075
70967
|
optgroupStartTagInBody(p, token);
|
|
71076
70968
|
break;
|
|
71077
70969
|
}
|
|
71078
|
-
case TAG_ID.NOEMBED:
|
|
71079
|
-
|
|
70970
|
+
case TAG_ID.NOEMBED:
|
|
70971
|
+
case TAG_ID.NOFRAMES: {
|
|
70972
|
+
rawTextStartTagInBody(p, token);
|
|
71080
70973
|
break;
|
|
71081
70974
|
}
|
|
71082
70975
|
case TAG_ID.FRAMESET: {
|
|
@@ -71089,7 +70982,7 @@ function startTagInBody(p, token) {
|
|
|
71089
70982
|
}
|
|
71090
70983
|
case TAG_ID.NOSCRIPT: {
|
|
71091
70984
|
if (p.options.scriptingEnabled) {
|
|
71092
|
-
|
|
70985
|
+
rawTextStartTagInBody(p, token);
|
|
71093
70986
|
}
|
|
71094
70987
|
else {
|
|
71095
70988
|
genericStartTagInBody(p, token);
|
|
@@ -71261,6 +71154,7 @@ function endTagInBody(p, token) {
|
|
|
71261
71154
|
case TAG_ID.ADDRESS:
|
|
71262
71155
|
case TAG_ID.ARTICLE:
|
|
71263
71156
|
case TAG_ID.DETAILS:
|
|
71157
|
+
case TAG_ID.SEARCH:
|
|
71264
71158
|
case TAG_ID.SECTION:
|
|
71265
71159
|
case TAG_ID.SUMMARY:
|
|
71266
71160
|
case TAG_ID.LISTING:
|
|
@@ -71346,7 +71240,7 @@ function eofInText(p, token) {
|
|
|
71346
71240
|
// The "in table" insertion mode
|
|
71347
71241
|
//------------------------------------------------------------------
|
|
71348
71242
|
function characterInTable(p, token) {
|
|
71349
|
-
if (TABLE_STRUCTURE_TAGS.has(p.openElements.currentTagId)) {
|
|
71243
|
+
if (p.openElements.currentTagId !== undefined && TABLE_STRUCTURE_TAGS.has(p.openElements.currentTagId)) {
|
|
71350
71244
|
p.pendingCharacterTokens.length = 0;
|
|
71351
71245
|
p.hasNonWhitespacePendingCharacterToken = false;
|
|
71352
71246
|
p.originalInsertionMode = p.insertionMode;
|
|
@@ -71861,6 +71755,17 @@ function startTagInSelect(p, token) {
|
|
|
71861
71755
|
p._insertElement(token, html_NS.HTML);
|
|
71862
71756
|
break;
|
|
71863
71757
|
}
|
|
71758
|
+
case TAG_ID.HR: {
|
|
71759
|
+
if (p.openElements.currentTagId === TAG_ID.OPTION) {
|
|
71760
|
+
p.openElements.pop();
|
|
71761
|
+
}
|
|
71762
|
+
if (p.openElements.currentTagId === TAG_ID.OPTGROUP) {
|
|
71763
|
+
p.openElements.pop();
|
|
71764
|
+
}
|
|
71765
|
+
p._appendElement(token, html_NS.HTML);
|
|
71766
|
+
token.ackSelfClosing = true;
|
|
71767
|
+
break;
|
|
71768
|
+
}
|
|
71864
71769
|
case TAG_ID.INPUT:
|
|
71865
71770
|
case TAG_ID.KEYGEN:
|
|
71866
71771
|
case TAG_ID.TEXTAREA:
|
|
@@ -72160,6 +72065,7 @@ function characterInForeignContent(p, token) {
|
|
|
72160
72065
|
}
|
|
72161
72066
|
function popUntilHtmlOrIntegrationPoint(p) {
|
|
72162
72067
|
while (p.treeAdapter.getNamespaceURI(p.openElements.current) !== html_NS.HTML &&
|
|
72068
|
+
p.openElements.currentTagId !== undefined &&
|
|
72163
72069
|
!p._isIntegrationPoint(p.openElements.currentTagId, p.openElements.current)) {
|
|
72164
72070
|
p.openElements.pop();
|
|
72165
72071
|
}
|
|
@@ -72210,9 +72116,9 @@ function endTagInForeignContent(p, token) {
|
|
|
72210
72116
|
}
|
|
72211
72117
|
}
|
|
72212
72118
|
}
|
|
72213
|
-
|
|
72214
|
-
;// ./node_modules/entities/
|
|
72215
|
-
const escape_xmlReplacer = /["
|
|
72119
|
+
|
|
72120
|
+
;// ./node_modules/parse5/node_modules/entities/dist/esm/escape.js
|
|
72121
|
+
const escape_xmlReplacer = /["$&'<>\u0080-\uFFFF]/g;
|
|
72216
72122
|
const xmlCodeMap = new Map([
|
|
72217
72123
|
[34, """],
|
|
72218
72124
|
[38, "&"],
|
|
@@ -72223,15 +72129,15 @@ const xmlCodeMap = new Map([
|
|
|
72223
72129
|
// For compatibility with node < 4, we wrap `codePointAt`
|
|
72224
72130
|
const escape_getCodePoint =
|
|
72225
72131
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
72226
|
-
String.prototype.codePointAt
|
|
72227
|
-
? (
|
|
72132
|
+
String.prototype.codePointAt == null
|
|
72133
|
+
? (c, index) => (c.charCodeAt(index) & 64512) === 55296
|
|
72134
|
+
? (c.charCodeAt(index) - 55296) * 1024 +
|
|
72135
|
+
c.charCodeAt(index + 1) -
|
|
72136
|
+
56320 +
|
|
72137
|
+
65536
|
|
72138
|
+
: c.charCodeAt(index)
|
|
72228
72139
|
: // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
|
|
72229
|
-
(
|
|
72230
|
-
? (c.charCodeAt(index) - 0xd800) * 0x400 +
|
|
72231
|
-
c.charCodeAt(index + 1) -
|
|
72232
|
-
0xdc00 +
|
|
72233
|
-
0x10000
|
|
72234
|
-
: c.charCodeAt(index);
|
|
72140
|
+
(input, index) => input.codePointAt(index);
|
|
72235
72141
|
/**
|
|
72236
72142
|
* Encodes all non-ASCII characters, as well as characters not valid in XML
|
|
72237
72143
|
* documents using XML entities.
|
|
@@ -72239,25 +72145,25 @@ String.prototype.codePointAt != null
|
|
|
72239
72145
|
* If a character has no equivalent entity, a
|
|
72240
72146
|
* numeric hexadecimal reference (eg. `ü`) will be used.
|
|
72241
72147
|
*/
|
|
72242
|
-
function escape_encodeXML(
|
|
72243
|
-
let
|
|
72244
|
-
let
|
|
72148
|
+
function escape_encodeXML(input) {
|
|
72149
|
+
let returnValue = "";
|
|
72150
|
+
let lastIndex = 0;
|
|
72245
72151
|
let match;
|
|
72246
|
-
while ((match = escape_xmlReplacer.exec(
|
|
72247
|
-
const
|
|
72248
|
-
const char =
|
|
72152
|
+
while ((match = escape_xmlReplacer.exec(input)) !== null) {
|
|
72153
|
+
const { index } = match;
|
|
72154
|
+
const char = input.charCodeAt(index);
|
|
72249
72155
|
const next = xmlCodeMap.get(char);
|
|
72250
|
-
if (next
|
|
72251
|
-
|
|
72252
|
-
|
|
72156
|
+
if (next === undefined) {
|
|
72157
|
+
returnValue += `${input.substring(lastIndex, index)}&#x${escape_getCodePoint(input, index).toString(16)};`;
|
|
72158
|
+
// Increase by 1 if we have a surrogate pair
|
|
72159
|
+
lastIndex = escape_xmlReplacer.lastIndex += Number((char & 64512) === 55296);
|
|
72253
72160
|
}
|
|
72254
72161
|
else {
|
|
72255
|
-
|
|
72256
|
-
|
|
72257
|
-
lastIdx = escape_xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);
|
|
72162
|
+
returnValue += input.substring(lastIndex, index) + next;
|
|
72163
|
+
lastIndex = index + 1;
|
|
72258
72164
|
}
|
|
72259
72165
|
}
|
|
72260
|
-
return
|
|
72166
|
+
return returnValue + input.substr(lastIndex);
|
|
72261
72167
|
}
|
|
72262
72168
|
/**
|
|
72263
72169
|
* Encodes all non-ASCII characters, as well as characters not valid in XML
|
|
@@ -72282,18 +72188,18 @@ const escape_escape = (/* unused pure expression or super */ null && (escape_enc
|
|
|
72282
72188
|
function getEscaper(regex, map) {
|
|
72283
72189
|
return function escape(data) {
|
|
72284
72190
|
let match;
|
|
72285
|
-
let
|
|
72191
|
+
let lastIndex = 0;
|
|
72286
72192
|
let result = "";
|
|
72287
72193
|
while ((match = regex.exec(data))) {
|
|
72288
|
-
if (
|
|
72289
|
-
result += data.substring(
|
|
72194
|
+
if (lastIndex !== match.index) {
|
|
72195
|
+
result += data.substring(lastIndex, match.index);
|
|
72290
72196
|
}
|
|
72291
72197
|
// We know that this character will be in the map.
|
|
72292
72198
|
result += map.get(match[0].charCodeAt(0));
|
|
72293
72199
|
// Every match will be of length 1
|
|
72294
|
-
|
|
72200
|
+
lastIndex = match.index + 1;
|
|
72295
72201
|
}
|
|
72296
|
-
return result + data.substring(
|
|
72202
|
+
return result + data.substring(lastIndex);
|
|
72297
72203
|
};
|
|
72298
72204
|
}
|
|
72299
72205
|
/**
|
|
@@ -72303,14 +72209,15 @@ function getEscaper(regex, map) {
|
|
|
72303
72209
|
*
|
|
72304
72210
|
* @param data String to escape.
|
|
72305
72211
|
*/
|
|
72306
|
-
const escape_escapeUTF8 = getEscaper(/[
|
|
72212
|
+
const escape_escapeUTF8 = /* #__PURE__ */ (/* unused pure expression or super */ null && (getEscaper(/["&'<>]/g, xmlCodeMap)));
|
|
72307
72213
|
/**
|
|
72308
72214
|
* Encodes all characters that have to be escaped in HTML attributes,
|
|
72309
72215
|
* following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
|
|
72310
72216
|
*
|
|
72311
72217
|
* @param data String to escape.
|
|
72312
72218
|
*/
|
|
72313
|
-
const escape_escapeAttribute =
|
|
72219
|
+
const escape_escapeAttribute =
|
|
72220
|
+
/* #__PURE__ */ getEscaper(/["&\u00A0]/g, new Map([
|
|
72314
72221
|
[34, """],
|
|
72315
72222
|
[38, "&"],
|
|
72316
72223
|
[160, " "],
|
|
@@ -72321,7 +72228,7 @@ const escape_escapeAttribute = getEscaper(/["&\u00A0]/g, new Map([
|
|
|
72321
72228
|
*
|
|
72322
72229
|
* @param data String to escape.
|
|
72323
72230
|
*/
|
|
72324
|
-
const escape_escapeText = getEscaper(/[&<>\u00A0]/g, new Map([
|
|
72231
|
+
const escape_escapeText = /* #__PURE__ */ getEscaper(/[&<>\u00A0]/g, new Map([
|
|
72325
72232
|
[38, "&"],
|
|
72326
72233
|
[60, "<"],
|
|
72327
72234
|
[62, ">"],
|
|
@@ -72399,7 +72306,7 @@ function serializer_serialize(node, options) {
|
|
|
72399
72306
|
* const document = parse5.parseFragment('<div>Hello, <b>world</b>!</div>');
|
|
72400
72307
|
*
|
|
72401
72308
|
* // Serializes the <div> element.
|
|
72402
|
-
* const
|
|
72309
|
+
* const str = parse5.serializeOuter(document.childNodes[0]);
|
|
72403
72310
|
*
|
|
72404
72311
|
* console.log(str); //> '<div>Hello, <b>world</b>!</div>'
|
|
72405
72312
|
* ```
|
|
@@ -72451,10 +72358,7 @@ function serializeAttributes(node, { treeAdapter }) {
|
|
|
72451
72358
|
let html = '';
|
|
72452
72359
|
for (const attr of treeAdapter.getAttrList(node)) {
|
|
72453
72360
|
html += ' ';
|
|
72454
|
-
if (
|
|
72455
|
-
html += attr.name;
|
|
72456
|
-
}
|
|
72457
|
-
else
|
|
72361
|
+
if (attr.namespace) {
|
|
72458
72362
|
switch (attr.namespace) {
|
|
72459
72363
|
case NS.XML: {
|
|
72460
72364
|
html += `xml:${attr.name}`;
|
|
@@ -72475,6 +72379,10 @@ function serializeAttributes(node, { treeAdapter }) {
|
|
|
72475
72379
|
html += `${attr.prefix}:${attr.name}`;
|
|
72476
72380
|
}
|
|
72477
72381
|
}
|
|
72382
|
+
}
|
|
72383
|
+
else {
|
|
72384
|
+
html += attr.name;
|
|
72385
|
+
}
|
|
72478
72386
|
html += `="${escapeAttribute(attr.value)}"`;
|
|
72479
72387
|
}
|
|
72480
72388
|
return html;
|
|
@@ -72496,7 +72404,7 @@ function serializeCommentNode(node, { treeAdapter }) {
|
|
|
72496
72404
|
function serializeDocumentTypeNode(node, { treeAdapter }) {
|
|
72497
72405
|
return `<!DOCTYPE ${treeAdapter.getDocumentTypeNodeName(node)}>`;
|
|
72498
72406
|
}
|
|
72499
|
-
|
|
72407
|
+
|
|
72500
72408
|
;// ./node_modules/parse5/dist/index.js
|
|
72501
72409
|
|
|
72502
72410
|
|
|
@@ -72505,9 +72413,7 @@ function serializeDocumentTypeNode(node, { treeAdapter }) {
|
|
|
72505
72413
|
|
|
72506
72414
|
/** @internal */
|
|
72507
72415
|
|
|
72508
|
-
/** @internal */
|
|
72509
72416
|
|
|
72510
|
-
/** @internal */
|
|
72511
72417
|
|
|
72512
72418
|
/** @internal */
|
|
72513
72419
|
|
|
@@ -72542,7 +72448,7 @@ function parseFragment(fragmentContext, html, options) {
|
|
|
72542
72448
|
parser.tokenizer.write(html, true);
|
|
72543
72449
|
return parser.getFragment();
|
|
72544
72450
|
}
|
|
72545
|
-
|
|
72451
|
+
|
|
72546
72452
|
;// ./node_modules/hast-util-from-html/lib/errors.js
|
|
72547
72453
|
/**
|
|
72548
72454
|
* @typedef ErrorInfo
|
|
@@ -90707,9 +90613,416 @@ const mdast = (text, opts = {}) => {
|
|
|
90707
90613
|
};
|
|
90708
90614
|
/* harmony default export */ const lib_mdast = (mdast);
|
|
90709
90615
|
|
|
90616
|
+
;// ./lib/utils/mdxish/protect-code-blocks.ts
|
|
90617
|
+
/**
|
|
90618
|
+
* Replaces code blocks and inline code with placeholders to protect them from preprocessing.
|
|
90619
|
+
*
|
|
90620
|
+
* @param content - The markdown content to process
|
|
90621
|
+
* @returns Object containing protected content and arrays of original code blocks
|
|
90622
|
+
* @example
|
|
90623
|
+
* ```typescript
|
|
90624
|
+
* const input = 'Text with `inline code` and ```fenced block```';
|
|
90625
|
+
* protectCodeBlocks(input)
|
|
90626
|
+
* // Returns: {
|
|
90627
|
+
* // protectedCode: {
|
|
90628
|
+
* // codeBlocks: ['```fenced block```'],
|
|
90629
|
+
* // inlineCode: ['`inline code`']
|
|
90630
|
+
* // },
|
|
90631
|
+
* // protectedContent: 'Text with ___INLINE_CODE_0___ and ___CODE_BLOCK_0___'
|
|
90632
|
+
* // }
|
|
90633
|
+
* ```
|
|
90634
|
+
*/
|
|
90635
|
+
function protectCodeBlocks(content) {
|
|
90636
|
+
const codeBlocks = [];
|
|
90637
|
+
const inlineCode = [];
|
|
90638
|
+
let protectedContent = '';
|
|
90639
|
+
let remaining = content;
|
|
90640
|
+
let codeBlockStart = remaining.indexOf('```');
|
|
90641
|
+
while (codeBlockStart !== -1) {
|
|
90642
|
+
protectedContent += remaining.slice(0, codeBlockStart);
|
|
90643
|
+
remaining = remaining.slice(codeBlockStart);
|
|
90644
|
+
const codeBlockEnd = remaining.indexOf('```', 3);
|
|
90645
|
+
if (codeBlockEnd === -1) {
|
|
90646
|
+
break;
|
|
90647
|
+
}
|
|
90648
|
+
const match = remaining.slice(0, codeBlockEnd + 3);
|
|
90649
|
+
const index = codeBlocks.length;
|
|
90650
|
+
codeBlocks.push(match);
|
|
90651
|
+
protectedContent += `___CODE_BLOCK_${index}___`;
|
|
90652
|
+
remaining = remaining.slice(codeBlockEnd + 3);
|
|
90653
|
+
codeBlockStart = remaining.indexOf('```');
|
|
90654
|
+
}
|
|
90655
|
+
protectedContent += remaining;
|
|
90656
|
+
protectedContent = protectedContent.replace(/`([^`\n]+)`/g, match => {
|
|
90657
|
+
const index = inlineCode.length;
|
|
90658
|
+
inlineCode.push(match);
|
|
90659
|
+
return `___INLINE_CODE_${index}___`;
|
|
90660
|
+
});
|
|
90661
|
+
return { protectedCode: { codeBlocks, inlineCode }, protectedContent };
|
|
90662
|
+
}
|
|
90663
|
+
/**
|
|
90664
|
+
* Restores inline code by replacing placeholders with original content.
|
|
90665
|
+
*
|
|
90666
|
+
* @param content - Content with inline code placeholders
|
|
90667
|
+
* @param protectedCode - The protected code arrays
|
|
90668
|
+
* @returns Content with inline code restored
|
|
90669
|
+
*/
|
|
90670
|
+
function restoreInlineCode(content, protectedCode) {
|
|
90671
|
+
return content.replace(/___INLINE_CODE_(\d+)___/g, (_m, idx) => {
|
|
90672
|
+
return protectedCode.inlineCode[parseInt(idx, 10)];
|
|
90673
|
+
});
|
|
90674
|
+
}
|
|
90675
|
+
/**
|
|
90676
|
+
* Restores fenced code blocks by replacing placeholders with original content.
|
|
90677
|
+
*
|
|
90678
|
+
* @param content - Content with code block placeholders
|
|
90679
|
+
* @param protectedCode - The protected code arrays
|
|
90680
|
+
* @returns Content with code blocks restored
|
|
90681
|
+
*/
|
|
90682
|
+
function restoreFencedCodeBlocks(content, protectedCode) {
|
|
90683
|
+
return content.replace(/___CODE_BLOCK_(\d+)___/g, (_m, idx) => {
|
|
90684
|
+
return protectedCode.codeBlocks[parseInt(idx, 10)];
|
|
90685
|
+
});
|
|
90686
|
+
}
|
|
90687
|
+
/**
|
|
90688
|
+
* Restores all code blocks and inline code by replacing placeholders with original content.
|
|
90689
|
+
*
|
|
90690
|
+
* @param content - Content with code placeholders
|
|
90691
|
+
* @param protectedCode - The protected code arrays
|
|
90692
|
+
* @returns Content with all code blocks and inline code restored
|
|
90693
|
+
* @example
|
|
90694
|
+
* ```typescript
|
|
90695
|
+
* const content = 'Text with ___INLINE_CODE_0___ and ___CODE_BLOCK_0___';
|
|
90696
|
+
* const protectedCode = {
|
|
90697
|
+
* codeBlocks: ['```js\ncode\n```'],
|
|
90698
|
+
* inlineCode: ['`inline`']
|
|
90699
|
+
* };
|
|
90700
|
+
* restoreCodeBlocks(content, protectedCode)
|
|
90701
|
+
* // Returns: 'Text with `inline` and ```js\ncode\n```'
|
|
90702
|
+
* ```
|
|
90703
|
+
*/
|
|
90704
|
+
function restoreCodeBlocks(content, protectedCode) {
|
|
90705
|
+
let restored = restoreFencedCodeBlocks(content, protectedCode);
|
|
90706
|
+
restored = restoreInlineCode(restored, protectedCode);
|
|
90707
|
+
return restored;
|
|
90708
|
+
}
|
|
90709
|
+
|
|
90710
|
+
;// ./processor/transform/mdxish/preprocess-jsx-expressions.ts
|
|
90711
|
+
|
|
90712
|
+
// Base64 encode (Node.js + browser compatible)
|
|
90713
|
+
function base64Encode(str) {
|
|
90714
|
+
if (typeof Buffer !== 'undefined') {
|
|
90715
|
+
return Buffer.from(str, 'utf-8').toString('base64');
|
|
90716
|
+
}
|
|
90717
|
+
return btoa(unescape(encodeURIComponent(str)));
|
|
90718
|
+
}
|
|
90719
|
+
// Base64 decode (Node.js + browser compatible)
|
|
90720
|
+
function base64Decode(str) {
|
|
90721
|
+
if (typeof Buffer !== 'undefined') {
|
|
90722
|
+
return Buffer.from(str, 'base64').toString('utf-8');
|
|
90723
|
+
}
|
|
90724
|
+
return decodeURIComponent(escape(atob(str)));
|
|
90725
|
+
}
|
|
90726
|
+
function escapeHtmlAttribute(value) {
|
|
90727
|
+
return value
|
|
90728
|
+
.replace(/&/g, '&')
|
|
90729
|
+
.replace(/"/g, '"')
|
|
90730
|
+
.replace(/</g, '<')
|
|
90731
|
+
.replace(/>/g, '>')
|
|
90732
|
+
.replace(/\n/g, ' ');
|
|
90733
|
+
}
|
|
90734
|
+
// Marker prefix for JSON-serialized complex values (arrays/objects)
|
|
90735
|
+
// Using a prefix that won't conflict with regular string values
|
|
90736
|
+
const JSON_VALUE_MARKER = '__MDXISH_JSON__';
|
|
90737
|
+
// Markers for protected HTMLBlock content (HTML comments avoid markdown parsing issues)
|
|
90738
|
+
const HTML_BLOCK_CONTENT_START = '<!--RDMX_HTMLBLOCK:';
|
|
90739
|
+
const HTML_BLOCK_CONTENT_END = ':RDMX_HTMLBLOCK-->';
|
|
90740
|
+
/**
|
|
90741
|
+
* Evaluates a JavaScript expression using context variables.
|
|
90742
|
+
*
|
|
90743
|
+
* @param expression
|
|
90744
|
+
* @param context
|
|
90745
|
+
* @returns The evaluated result
|
|
90746
|
+
* @example
|
|
90747
|
+
* ```typescript
|
|
90748
|
+
* const context = { baseUrl: 'https://example.com', path: '/api' };
|
|
90749
|
+
* evaluateExpression('baseUrl + path', context)
|
|
90750
|
+
* // Returns: 'https://example.com/api'
|
|
90751
|
+
* ```
|
|
90752
|
+
*/
|
|
90753
|
+
function evaluateExpression(expression, context) {
|
|
90754
|
+
const contextKeys = Object.keys(context);
|
|
90755
|
+
const contextValues = Object.values(context);
|
|
90756
|
+
// eslint-disable-next-line no-new-func
|
|
90757
|
+
const func = new Function(...contextKeys, `return ${expression}`);
|
|
90758
|
+
return func(...contextValues);
|
|
90759
|
+
}
|
|
90760
|
+
/**
|
|
90761
|
+
* Base64 encodes HTMLBlock template literal content to prevent markdown parser from consuming <script>/<style> tags.
|
|
90762
|
+
*
|
|
90763
|
+
* @param content
|
|
90764
|
+
* @returns Content with HTMLBlock template literals base64 encoded in HTML comments
|
|
90765
|
+
* @example
|
|
90766
|
+
* ```typescript
|
|
90767
|
+
* const input = '<HTMLBlock>{`<script>alert("xss")</script>`}</HTMLBlock>';
|
|
90768
|
+
* protectHTMLBlockContent(input)
|
|
90769
|
+
* // Returns: '<HTMLBlock><!--RDMX_HTMLBLOCK:PHNjcmlwdD5hbGVydCgieHNzIik8L3NjcmlwdD4=:RDMX_HTMLBLOCK--></HTMLBlock>'
|
|
90770
|
+
* ```
|
|
90771
|
+
*/
|
|
90772
|
+
function protectHTMLBlockContent(content) {
|
|
90773
|
+
return content.replace(/(<HTMLBlock[^>]*>)\{\s*`((?:[^`\\]|\\.)*)`\s*\}(<\/HTMLBlock>)/g, (_match, openTag, templateContent, closeTag) => {
|
|
90774
|
+
const encoded = base64Encode(templateContent);
|
|
90775
|
+
return `${openTag}${HTML_BLOCK_CONTENT_START}${encoded}${HTML_BLOCK_CONTENT_END}${closeTag}`;
|
|
90776
|
+
});
|
|
90777
|
+
}
|
|
90778
|
+
/**
|
|
90779
|
+
* Removes JSX-style comments (e.g., { /* comment *\/ }) from content.
|
|
90780
|
+
*
|
|
90781
|
+
* @param content
|
|
90782
|
+
* @returns Content with JSX comments removed
|
|
90783
|
+
* @example
|
|
90784
|
+
* ```typescript
|
|
90785
|
+
* removeJSXComments('Text { /* comment *\/ } more text')
|
|
90786
|
+
* // Returns: 'Text more text'
|
|
90787
|
+
* ```
|
|
90788
|
+
*/
|
|
90789
|
+
function removeJSXComments(content) {
|
|
90790
|
+
return content.replace(/\{\s*\/\*[^*]*(?:\*(?!\/)[^*]*)*\*\/\s*\}/g, '');
|
|
90791
|
+
}
|
|
90792
|
+
/**
|
|
90793
|
+
* Extracts content between balanced braces, handling nested braces.
|
|
90794
|
+
*
|
|
90795
|
+
* @param content
|
|
90796
|
+
* @param start
|
|
90797
|
+
* @returns Object with extracted content and end position, or null if braces are unbalanced
|
|
90798
|
+
* @example
|
|
90799
|
+
* ```typescript
|
|
90800
|
+
* const input = 'foo{bar{baz}qux}end';
|
|
90801
|
+
* extractBalancedBraces(input, 3) // start at position 3 (after '{')
|
|
90802
|
+
* // Returns: { content: 'bar{baz}qux', end: 16 }
|
|
90803
|
+
* ```
|
|
90804
|
+
*/
|
|
90805
|
+
function extractBalancedBraces(content, start) {
|
|
90806
|
+
let depth = 1;
|
|
90807
|
+
let pos = start;
|
|
90808
|
+
while (pos < content.length && depth > 0) {
|
|
90809
|
+
const char = content[pos];
|
|
90810
|
+
if (char === '{')
|
|
90811
|
+
depth += 1;
|
|
90812
|
+
else if (char === '}')
|
|
90813
|
+
depth -= 1;
|
|
90814
|
+
pos += 1;
|
|
90815
|
+
}
|
|
90816
|
+
if (depth !== 0)
|
|
90817
|
+
return null;
|
|
90818
|
+
return { content: content.slice(start, pos - 1), end: pos };
|
|
90819
|
+
}
|
|
90820
|
+
/**
|
|
90821
|
+
* Escapes problematic braces in content to prevent MDX expression parsing errors.
|
|
90822
|
+
* Handles three cases:
|
|
90823
|
+
* 1. Unbalanced braces (e.g., `{foo` without closing `}`)
|
|
90824
|
+
* 2. Paragraph-spanning expressions (e.g., `{\n\n}` where blank line splits paragraphs)
|
|
90825
|
+
* 3. Skips HTML elements to prevent backslashes appearing in output
|
|
90826
|
+
*
|
|
90827
|
+
*/
|
|
90828
|
+
function escapeProblematicBraces(content) {
|
|
90829
|
+
// Skip HTML elements — their content should never be escaped because
|
|
90830
|
+
// rehypeRaw parses them into hast elements, making `\` literal text in output
|
|
90831
|
+
const htmlElements = [];
|
|
90832
|
+
const safe = content.replace(/<([a-z][a-zA-Z0-9]*)(?:\s[^>]*)?>[\s\S]*?<\/\1>/g, match => {
|
|
90833
|
+
const idx = htmlElements.length;
|
|
90834
|
+
htmlElements.push(match);
|
|
90835
|
+
return `___HTML_ELEM_${idx}___`;
|
|
90836
|
+
});
|
|
90837
|
+
const toEscape = new Set();
|
|
90838
|
+
// Convert to array of Unicode code points to handle emojis and multi-byte characters correctly
|
|
90839
|
+
const chars = Array.from(safe);
|
|
90840
|
+
let strDelim = null;
|
|
90841
|
+
let strEscaped = false;
|
|
90842
|
+
// Stack of open braces with their state
|
|
90843
|
+
const openStack = [];
|
|
90844
|
+
// Track position of last newline (outside strings) to detect blank lines
|
|
90845
|
+
let lastNewlinePos = -2; // -2 means no recent newline
|
|
90846
|
+
for (let i = 0; i < chars.length; i += 1) {
|
|
90847
|
+
const ch = chars[i];
|
|
90848
|
+
// Track string delimiters inside expressions to ignore braces within them
|
|
90849
|
+
if (openStack.length > 0) {
|
|
90850
|
+
if (strDelim) {
|
|
90851
|
+
if (strEscaped)
|
|
90852
|
+
strEscaped = false;
|
|
90853
|
+
else if (ch === '\\')
|
|
90854
|
+
strEscaped = true;
|
|
90855
|
+
else if (ch === strDelim)
|
|
90856
|
+
strDelim = null;
|
|
90857
|
+
// eslint-disable-next-line no-continue
|
|
90858
|
+
continue;
|
|
90859
|
+
}
|
|
90860
|
+
if (ch === '"' || ch === "'" || ch === '`') {
|
|
90861
|
+
strDelim = ch;
|
|
90862
|
+
// eslint-disable-next-line no-continue
|
|
90863
|
+
continue;
|
|
90864
|
+
}
|
|
90865
|
+
// Track newlines to detect blank lines (paragraph boundaries)
|
|
90866
|
+
if (ch === '\n') {
|
|
90867
|
+
// Check if this newline creates a blank line (only whitespace since last newline)
|
|
90868
|
+
if (lastNewlinePos >= 0) {
|
|
90869
|
+
const between = chars.slice(lastNewlinePos + 1, i).join('');
|
|
90870
|
+
if (/^[ \t]*$/.test(between)) {
|
|
90871
|
+
// This is a blank line - mark all open expressions as paragraph-spanning
|
|
90872
|
+
openStack.forEach(entry => {
|
|
90873
|
+
entry.hasBlankLine = true;
|
|
90874
|
+
});
|
|
90875
|
+
}
|
|
90876
|
+
}
|
|
90877
|
+
lastNewlinePos = i;
|
|
90878
|
+
}
|
|
90879
|
+
}
|
|
90880
|
+
// Skip already-escaped braces (count preceding backslashes)
|
|
90881
|
+
if (ch === '{' || ch === '}') {
|
|
90882
|
+
let bs = 0;
|
|
90883
|
+
for (let j = i - 1; j >= 0 && chars[j] === '\\'; j -= 1)
|
|
90884
|
+
bs += 1;
|
|
90885
|
+
if (bs % 2 === 1) {
|
|
90886
|
+
// eslint-disable-next-line no-continue
|
|
90887
|
+
continue;
|
|
90888
|
+
}
|
|
90889
|
+
}
|
|
90890
|
+
if (ch === '{') {
|
|
90891
|
+
openStack.push({ pos: i, hasBlankLine: false });
|
|
90892
|
+
lastNewlinePos = -2; // Reset newline tracking for new expression
|
|
90893
|
+
}
|
|
90894
|
+
else if (ch === '}') {
|
|
90895
|
+
if (openStack.length > 0) {
|
|
90896
|
+
const entry = openStack.pop();
|
|
90897
|
+
// If expression spans paragraph boundary, escape both braces
|
|
90898
|
+
if (entry.hasBlankLine) {
|
|
90899
|
+
toEscape.add(entry.pos);
|
|
90900
|
+
toEscape.add(i);
|
|
90901
|
+
}
|
|
90902
|
+
}
|
|
90903
|
+
else {
|
|
90904
|
+
// Unbalanced closing brace (no matching open)
|
|
90905
|
+
toEscape.add(i);
|
|
90906
|
+
}
|
|
90907
|
+
}
|
|
90908
|
+
}
|
|
90909
|
+
// Any remaining open braces are unbalanced
|
|
90910
|
+
openStack.forEach(entry => toEscape.add(entry.pos));
|
|
90911
|
+
// If there are no problematic braces, return safe content as-is;
|
|
90912
|
+
// otherwise, escape each problematic `{` or `}` so MDX doesn't treat them as expressions.
|
|
90913
|
+
let result = toEscape.size === 0
|
|
90914
|
+
? safe
|
|
90915
|
+
: chars.map((ch, i) => (toEscape.has(i) ? `\\${ch}` : ch)).join('');
|
|
90916
|
+
// Restore HTML elements
|
|
90917
|
+
if (htmlElements.length > 0) {
|
|
90918
|
+
result = result.replace(/___HTML_ELEM_(\d+)___/g, (_m, idx) => htmlElements[parseInt(idx, 10)]);
|
|
90919
|
+
}
|
|
90920
|
+
return result;
|
|
90921
|
+
}
|
|
90922
|
+
/**
|
|
90923
|
+
* Converts JSX attribute expressions (attribute={expression}) to HTML attributes (attribute="value").
|
|
90924
|
+
* Handles style objects (camelCase → kebab-case), className → class, and JSON stringifies objects.
|
|
90925
|
+
*
|
|
90926
|
+
* @param content
|
|
90927
|
+
* @param context
|
|
90928
|
+
* @returns Content with attribute expressions evaluated and converted to HTML attributes
|
|
90929
|
+
* @example
|
|
90930
|
+
* ```typescript
|
|
90931
|
+
* const context = { baseUrl: 'https://example.com' };
|
|
90932
|
+
* const input = '<a href={baseUrl}>Link</a>';
|
|
90933
|
+
* evaluateAttributeExpressions(input, context)
|
|
90934
|
+
* // Returns: '<a href="https://example.com">Link</a>'
|
|
90935
|
+
* ```
|
|
90936
|
+
*/
|
|
90937
|
+
function evaluateAttributeExpressions(content, context, protectedCode) {
|
|
90938
|
+
const attrStartRegex = /(\w+)=\{/g;
|
|
90939
|
+
let result = '';
|
|
90940
|
+
let lastEnd = 0;
|
|
90941
|
+
let match = attrStartRegex.exec(content);
|
|
90942
|
+
while (match !== null) {
|
|
90943
|
+
const attributeName = match[1];
|
|
90944
|
+
const braceStart = match.index + match[0].length;
|
|
90945
|
+
const extracted = extractBalancedBraces(content, braceStart);
|
|
90946
|
+
if (extracted) {
|
|
90947
|
+
// The expression might contain template literals in MDX component tag props
|
|
90948
|
+
// E.g. <Component greeting={`Hello World!`} />
|
|
90949
|
+
// that is marked as inline code. So we need to restore the inline codes
|
|
90950
|
+
// in the expression to evaluate it
|
|
90951
|
+
let expression = extracted.content;
|
|
90952
|
+
if (protectedCode) {
|
|
90953
|
+
expression = restoreInlineCode(expression, protectedCode);
|
|
90954
|
+
}
|
|
90955
|
+
const fullMatchEnd = extracted.end;
|
|
90956
|
+
result += content.slice(lastEnd, match.index);
|
|
90957
|
+
try {
|
|
90958
|
+
const evalResult = evaluateExpression(expression, context);
|
|
90959
|
+
if (typeof evalResult === 'object' && evalResult !== null) {
|
|
90960
|
+
if (attributeName === 'style') {
|
|
90961
|
+
const cssString = Object.entries(evalResult)
|
|
90962
|
+
.map(([key, value]) => {
|
|
90963
|
+
const cssKey = key.replace(/([A-Z])/g, '-$1').toLowerCase();
|
|
90964
|
+
return `${cssKey}: ${value}`;
|
|
90965
|
+
})
|
|
90966
|
+
.join('; ');
|
|
90967
|
+
result += `style="${cssString}"`;
|
|
90968
|
+
}
|
|
90969
|
+
else {
|
|
90970
|
+
// These are arrays / objects attribute values
|
|
90971
|
+
// Mark JSON-serialized values with a prefix so they can be parsed back correctly
|
|
90972
|
+
const jsonValue = escapeHtmlAttribute(JSON_VALUE_MARKER + JSON.stringify(evalResult));
|
|
90973
|
+
// Use double quotes so that multi-paragraph values are not split into multiple attributes by the processors
|
|
90974
|
+
result += `${attributeName}="${jsonValue}"`;
|
|
90975
|
+
}
|
|
90976
|
+
}
|
|
90977
|
+
else if (attributeName === 'className') {
|
|
90978
|
+
// Escape special characters so that it doesn't break and split the attribute value to nodes
|
|
90979
|
+
// This will be restored later in the pipeline
|
|
90980
|
+
result += `class="${escapeHtmlAttribute(String(evalResult))}"`;
|
|
90981
|
+
}
|
|
90982
|
+
else {
|
|
90983
|
+
result += `${attributeName}="${escapeHtmlAttribute(String(evalResult))}"`;
|
|
90984
|
+
}
|
|
90985
|
+
}
|
|
90986
|
+
catch (_error) {
|
|
90987
|
+
result += content.slice(match.index, fullMatchEnd);
|
|
90988
|
+
}
|
|
90989
|
+
lastEnd = fullMatchEnd;
|
|
90990
|
+
attrStartRegex.lastIndex = fullMatchEnd;
|
|
90991
|
+
}
|
|
90992
|
+
match = attrStartRegex.exec(content);
|
|
90993
|
+
}
|
|
90994
|
+
result += content.slice(lastEnd);
|
|
90995
|
+
return result;
|
|
90996
|
+
}
|
|
90997
|
+
/**
|
|
90998
|
+
* Preprocesses JSX-like expressions in markdown before parsing.
|
|
90999
|
+
* Inline expressions are handled separately; attribute expressions are processed here.
|
|
91000
|
+
*
|
|
91001
|
+
* @param content
|
|
91002
|
+
* @param context
|
|
91003
|
+
* @returns Preprocessed content ready for markdown parsing
|
|
91004
|
+
*/
|
|
91005
|
+
function preprocessJSXExpressions(content, context = {}) {
|
|
91006
|
+
// Step 0: Base64 encode HTMLBlock content
|
|
91007
|
+
let processed = protectHTMLBlockContent(content);
|
|
91008
|
+
// Step 1: Protect code blocks and inline code
|
|
91009
|
+
const { protectedCode, protectedContent } = protectCodeBlocks(processed);
|
|
91010
|
+
// Step 2: Evaluate attribute expressions (JSX attribute syntax: href={baseUrl})
|
|
91011
|
+
// For inline expressions, we use a library to parse the expression & evaluate it later
|
|
91012
|
+
// For attribute expressions, it was difficult to use a library to parse them, so do it manually
|
|
91013
|
+
processed = evaluateAttributeExpressions(protectedContent, context, protectedCode);
|
|
91014
|
+
// Step 3: Escape problematic braces to prevent MDX expression parsing errors
|
|
91015
|
+
// This handles both unbalanced braces and paragraph-spanning expressions in one pass
|
|
91016
|
+
processed = escapeProblematicBraces(processed);
|
|
91017
|
+
// Step 4: Restore protected code blocks
|
|
91018
|
+
processed = restoreCodeBlocks(processed, protectedCode);
|
|
91019
|
+
return processed;
|
|
91020
|
+
}
|
|
91021
|
+
|
|
90710
91022
|
;// ./processor/utils.ts
|
|
90711
91023
|
|
|
90712
91024
|
|
|
91025
|
+
|
|
90713
91026
|
/**
|
|
90714
91027
|
* Formats the hProperties of a node as a string, so they can be compiled back into JSX/MDX.
|
|
90715
91028
|
* This currently sets all the values to a string since we process/compile the MDX on the fly
|
|
@@ -90765,7 +91078,17 @@ const getHPropKeys = (node) => {
|
|
|
90765
91078
|
const getAttrs = (jsx) => jsx.attributes.reduce((memo, attr) => {
|
|
90766
91079
|
if ('name' in attr) {
|
|
90767
91080
|
if (typeof attr.value === 'string') {
|
|
90768
|
-
|
|
91081
|
+
if (attr.value.startsWith(JSON_VALUE_MARKER)) {
|
|
91082
|
+
try {
|
|
91083
|
+
memo[attr.name] = JSON.parse(attr.value.slice(JSON_VALUE_MARKER.length));
|
|
91084
|
+
}
|
|
91085
|
+
catch {
|
|
91086
|
+
memo[attr.name] = attr.value;
|
|
91087
|
+
}
|
|
91088
|
+
}
|
|
91089
|
+
else {
|
|
91090
|
+
memo[attr.name] = attr.value;
|
|
91091
|
+
}
|
|
90769
91092
|
}
|
|
90770
91093
|
else if (attr.value === null) {
|
|
90771
91094
|
memo[attr.name] = true;
|
|
@@ -91539,10 +91862,10 @@ const hasFlowContent = (nodes) => {
|
|
|
91539
91862
|
* Process a Table node: re-parse text-only cell content, then output as
|
|
91540
91863
|
* a markdown table (phrasing-only) or keep as JSX <Table> (has flow content).
|
|
91541
91864
|
*/
|
|
91542
|
-
const processTableNode = (node, index, parent) => {
|
|
91865
|
+
const processTableNode = (node, index, parent, documentPosition) => {
|
|
91543
91866
|
if (node.name !== 'Table')
|
|
91544
91867
|
return;
|
|
91545
|
-
const
|
|
91868
|
+
const position = documentPosition ?? node.position;
|
|
91546
91869
|
const { align: alignAttr } = getAttrs(node);
|
|
91547
91870
|
const align = Array.isArray(alignAttr) ? alignAttr : null;
|
|
91548
91871
|
let tableHasFlowContent = false;
|
|
@@ -91665,7 +91988,7 @@ const mdxishTables = () => tree => {
|
|
|
91665
91988
|
const parsed = tableNodeProcessor.runSync(tableNodeProcessor.parse(node.value));
|
|
91666
91989
|
visit(parsed, isMDXElement, (tableNode) => {
|
|
91667
91990
|
if (tableNode.name === 'Table') {
|
|
91668
|
-
processTableNode(tableNode, index, parent);
|
|
91991
|
+
processTableNode(tableNode, index, parent, node.position);
|
|
91669
91992
|
// Stop after the outermost Table so nested Tables don't overwrite parent.children[index]
|
|
91670
91993
|
// we let it get handled naturally
|
|
91671
91994
|
return EXIT;
|
|
@@ -97080,6 +97403,12 @@ const deserializer = ($, _) => {
|
|
|
97080
97403
|
return as(BigInt(value), index);
|
|
97081
97404
|
case 'BigInt':
|
|
97082
97405
|
return as(Object(BigInt(value)), index);
|
|
97406
|
+
case 'ArrayBuffer':
|
|
97407
|
+
return as(new Uint8Array(value).buffer, value);
|
|
97408
|
+
case 'DataView': {
|
|
97409
|
+
const { buffer } = new Uint8Array(value);
|
|
97410
|
+
return as(new DataView(buffer), value);
|
|
97411
|
+
}
|
|
97083
97412
|
}
|
|
97084
97413
|
return as(new env[type](value), index);
|
|
97085
97414
|
};
|
|
@@ -97125,6 +97454,8 @@ const typeOf = value => {
|
|
|
97125
97454
|
return [MAP, EMPTY];
|
|
97126
97455
|
case 'Set':
|
|
97127
97456
|
return [SET, EMPTY];
|
|
97457
|
+
case 'DataView':
|
|
97458
|
+
return [ARRAY, asString];
|
|
97128
97459
|
}
|
|
97129
97460
|
|
|
97130
97461
|
if (asString.includes('Array'))
|
|
@@ -97174,9 +97505,17 @@ const serializer = (strict, json, $, _) => {
|
|
|
97174
97505
|
return as([TYPE, entry], value);
|
|
97175
97506
|
}
|
|
97176
97507
|
case ARRAY: {
|
|
97177
|
-
if (type)
|
|
97178
|
-
|
|
97179
|
-
|
|
97508
|
+
if (type) {
|
|
97509
|
+
let spread = value;
|
|
97510
|
+
if (type === 'DataView') {
|
|
97511
|
+
spread = new Uint8Array(value.buffer);
|
|
97512
|
+
}
|
|
97513
|
+
else if (type === 'ArrayBuffer') {
|
|
97514
|
+
spread = new Uint8Array(value);
|
|
97515
|
+
}
|
|
97516
|
+
return as([type, [...spread]], value);
|
|
97517
|
+
}
|
|
97518
|
+
|
|
97180
97519
|
const arr = [];
|
|
97181
97520
|
const index = as([TYPE, arr], value);
|
|
97182
97521
|
for (const entry of value)
|
|
@@ -112004,6 +112343,27 @@ function rehypeRemark(destination, options) {
|
|
|
112004
112343
|
}
|
|
112005
112344
|
}
|
|
112006
112345
|
|
|
112346
|
+
;// ./processor/compile/anchor.ts
|
|
112347
|
+
|
|
112348
|
+
|
|
112349
|
+
const anchor_anchor = (node) => {
|
|
112350
|
+
const { href, label, target, title } = getHProps(node);
|
|
112351
|
+
const attrs = {
|
|
112352
|
+
...(label && { label }),
|
|
112353
|
+
...(target && { target }),
|
|
112354
|
+
href: href ?? '',
|
|
112355
|
+
...(title && { title }),
|
|
112356
|
+
};
|
|
112357
|
+
// Serialize children (phrasing content) back to markdown
|
|
112358
|
+
// Wrap in paragraph to satisfy RootContent type requirement
|
|
112359
|
+
const children = toMarkdown({
|
|
112360
|
+
type: 'paragraph',
|
|
112361
|
+
children: node.children,
|
|
112362
|
+
}).trim();
|
|
112363
|
+
return `<Anchor ${formatProps(attrs)}>${children}</Anchor>`;
|
|
112364
|
+
};
|
|
112365
|
+
/* harmony default export */ const compile_anchor = (anchor_anchor);
|
|
112366
|
+
|
|
112007
112367
|
;// ./processor/compile/callout.ts
|
|
112008
112368
|
|
|
112009
112369
|
const callout = (node, _, state, info) => {
|
|
@@ -112186,10 +112546,12 @@ const plain_plain = (node) => node.value;
|
|
|
112186
112546
|
|
|
112187
112547
|
|
|
112188
112548
|
|
|
112549
|
+
|
|
112189
112550
|
function compilers(mdxish = false) {
|
|
112190
112551
|
const data = this.data();
|
|
112191
112552
|
const toMarkdownExtensions = data.toMarkdownExtensions || (data.toMarkdownExtensions = []);
|
|
112192
112553
|
const handlers = {
|
|
112554
|
+
...(mdxish && { [NodeTypes.anchor]: compile_anchor }),
|
|
112193
112555
|
[NodeTypes.callout]: compile_callout,
|
|
112194
112556
|
[NodeTypes.codeTabs]: compile_code_tabs,
|
|
112195
112557
|
[NodeTypes.embedBlock]: compile_embed,
|
|
@@ -114101,412 +114463,6 @@ const mdxComponentHandlers = {
|
|
|
114101
114463
|
[NodeTypes.htmlBlock]: htmlBlockHandler,
|
|
114102
114464
|
};
|
|
114103
114465
|
|
|
114104
|
-
;// ./lib/utils/mdxish/protect-code-blocks.ts
|
|
114105
|
-
/**
|
|
114106
|
-
* Replaces code blocks and inline code with placeholders to protect them from preprocessing.
|
|
114107
|
-
*
|
|
114108
|
-
* @param content - The markdown content to process
|
|
114109
|
-
* @returns Object containing protected content and arrays of original code blocks
|
|
114110
|
-
* @example
|
|
114111
|
-
* ```typescript
|
|
114112
|
-
* const input = 'Text with `inline code` and ```fenced block```';
|
|
114113
|
-
* protectCodeBlocks(input)
|
|
114114
|
-
* // Returns: {
|
|
114115
|
-
* // protectedCode: {
|
|
114116
|
-
* // codeBlocks: ['```fenced block```'],
|
|
114117
|
-
* // inlineCode: ['`inline code`']
|
|
114118
|
-
* // },
|
|
114119
|
-
* // protectedContent: 'Text with ___INLINE_CODE_0___ and ___CODE_BLOCK_0___'
|
|
114120
|
-
* // }
|
|
114121
|
-
* ```
|
|
114122
|
-
*/
|
|
114123
|
-
function protectCodeBlocks(content) {
|
|
114124
|
-
const codeBlocks = [];
|
|
114125
|
-
const inlineCode = [];
|
|
114126
|
-
let protectedContent = '';
|
|
114127
|
-
let remaining = content;
|
|
114128
|
-
let codeBlockStart = remaining.indexOf('```');
|
|
114129
|
-
while (codeBlockStart !== -1) {
|
|
114130
|
-
protectedContent += remaining.slice(0, codeBlockStart);
|
|
114131
|
-
remaining = remaining.slice(codeBlockStart);
|
|
114132
|
-
const codeBlockEnd = remaining.indexOf('```', 3);
|
|
114133
|
-
if (codeBlockEnd === -1) {
|
|
114134
|
-
break;
|
|
114135
|
-
}
|
|
114136
|
-
const match = remaining.slice(0, codeBlockEnd + 3);
|
|
114137
|
-
const index = codeBlocks.length;
|
|
114138
|
-
codeBlocks.push(match);
|
|
114139
|
-
protectedContent += `___CODE_BLOCK_${index}___`;
|
|
114140
|
-
remaining = remaining.slice(codeBlockEnd + 3);
|
|
114141
|
-
codeBlockStart = remaining.indexOf('```');
|
|
114142
|
-
}
|
|
114143
|
-
protectedContent += remaining;
|
|
114144
|
-
protectedContent = protectedContent.replace(/`([^`\n]+)`/g, match => {
|
|
114145
|
-
const index = inlineCode.length;
|
|
114146
|
-
inlineCode.push(match);
|
|
114147
|
-
return `___INLINE_CODE_${index}___`;
|
|
114148
|
-
});
|
|
114149
|
-
return { protectedCode: { codeBlocks, inlineCode }, protectedContent };
|
|
114150
|
-
}
|
|
114151
|
-
/**
|
|
114152
|
-
* Restores inline code by replacing placeholders with original content.
|
|
114153
|
-
*
|
|
114154
|
-
* @param content - Content with inline code placeholders
|
|
114155
|
-
* @param protectedCode - The protected code arrays
|
|
114156
|
-
* @returns Content with inline code restored
|
|
114157
|
-
*/
|
|
114158
|
-
function restoreInlineCode(content, protectedCode) {
|
|
114159
|
-
return content.replace(/___INLINE_CODE_(\d+)___/g, (_m, idx) => {
|
|
114160
|
-
return protectedCode.inlineCode[parseInt(idx, 10)];
|
|
114161
|
-
});
|
|
114162
|
-
}
|
|
114163
|
-
/**
|
|
114164
|
-
* Restores fenced code blocks by replacing placeholders with original content.
|
|
114165
|
-
*
|
|
114166
|
-
* @param content - Content with code block placeholders
|
|
114167
|
-
* @param protectedCode - The protected code arrays
|
|
114168
|
-
* @returns Content with code blocks restored
|
|
114169
|
-
*/
|
|
114170
|
-
function restoreFencedCodeBlocks(content, protectedCode) {
|
|
114171
|
-
return content.replace(/___CODE_BLOCK_(\d+)___/g, (_m, idx) => {
|
|
114172
|
-
return protectedCode.codeBlocks[parseInt(idx, 10)];
|
|
114173
|
-
});
|
|
114174
|
-
}
|
|
114175
|
-
/**
|
|
114176
|
-
* Restores all code blocks and inline code by replacing placeholders with original content.
|
|
114177
|
-
*
|
|
114178
|
-
* @param content - Content with code placeholders
|
|
114179
|
-
* @param protectedCode - The protected code arrays
|
|
114180
|
-
* @returns Content with all code blocks and inline code restored
|
|
114181
|
-
* @example
|
|
114182
|
-
* ```typescript
|
|
114183
|
-
* const content = 'Text with ___INLINE_CODE_0___ and ___CODE_BLOCK_0___';
|
|
114184
|
-
* const protectedCode = {
|
|
114185
|
-
* codeBlocks: ['```js\ncode\n```'],
|
|
114186
|
-
* inlineCode: ['`inline`']
|
|
114187
|
-
* };
|
|
114188
|
-
* restoreCodeBlocks(content, protectedCode)
|
|
114189
|
-
* // Returns: 'Text with `inline` and ```js\ncode\n```'
|
|
114190
|
-
* ```
|
|
114191
|
-
*/
|
|
114192
|
-
function restoreCodeBlocks(content, protectedCode) {
|
|
114193
|
-
let restored = restoreFencedCodeBlocks(content, protectedCode);
|
|
114194
|
-
restored = restoreInlineCode(restored, protectedCode);
|
|
114195
|
-
return restored;
|
|
114196
|
-
}
|
|
114197
|
-
|
|
114198
|
-
;// ./processor/transform/mdxish/preprocess-jsx-expressions.ts
|
|
114199
|
-
|
|
114200
|
-
// Base64 encode (Node.js + browser compatible)
|
|
114201
|
-
function base64Encode(str) {
|
|
114202
|
-
if (typeof Buffer !== 'undefined') {
|
|
114203
|
-
return Buffer.from(str, 'utf-8').toString('base64');
|
|
114204
|
-
}
|
|
114205
|
-
return btoa(unescape(encodeURIComponent(str)));
|
|
114206
|
-
}
|
|
114207
|
-
// Base64 decode (Node.js + browser compatible)
|
|
114208
|
-
function base64Decode(str) {
|
|
114209
|
-
if (typeof Buffer !== 'undefined') {
|
|
114210
|
-
return Buffer.from(str, 'base64').toString('utf-8');
|
|
114211
|
-
}
|
|
114212
|
-
return decodeURIComponent(escape(atob(str)));
|
|
114213
|
-
}
|
|
114214
|
-
function escapeHtmlAttribute(value) {
|
|
114215
|
-
return value
|
|
114216
|
-
.replace(/&/g, '&')
|
|
114217
|
-
.replace(/"/g, '"')
|
|
114218
|
-
.replace(/</g, '<')
|
|
114219
|
-
.replace(/>/g, '>')
|
|
114220
|
-
.replace(/\n/g, ' ');
|
|
114221
|
-
}
|
|
114222
|
-
// Marker prefix for JSON-serialized complex values (arrays/objects)
|
|
114223
|
-
// Using a prefix that won't conflict with regular string values
|
|
114224
|
-
const JSON_VALUE_MARKER = '__MDXISH_JSON__';
|
|
114225
|
-
// Markers for protected HTMLBlock content (HTML comments avoid markdown parsing issues)
|
|
114226
|
-
const HTML_BLOCK_CONTENT_START = '<!--RDMX_HTMLBLOCK:';
|
|
114227
|
-
const HTML_BLOCK_CONTENT_END = ':RDMX_HTMLBLOCK-->';
|
|
114228
|
-
/**
|
|
114229
|
-
* Evaluates a JavaScript expression using context variables.
|
|
114230
|
-
*
|
|
114231
|
-
* @param expression
|
|
114232
|
-
* @param context
|
|
114233
|
-
* @returns The evaluated result
|
|
114234
|
-
* @example
|
|
114235
|
-
* ```typescript
|
|
114236
|
-
* const context = { baseUrl: 'https://example.com', path: '/api' };
|
|
114237
|
-
* evaluateExpression('baseUrl + path', context)
|
|
114238
|
-
* // Returns: 'https://example.com/api'
|
|
114239
|
-
* ```
|
|
114240
|
-
*/
|
|
114241
|
-
function evaluateExpression(expression, context) {
|
|
114242
|
-
const contextKeys = Object.keys(context);
|
|
114243
|
-
const contextValues = Object.values(context);
|
|
114244
|
-
// eslint-disable-next-line no-new-func
|
|
114245
|
-
const func = new Function(...contextKeys, `return ${expression}`);
|
|
114246
|
-
return func(...contextValues);
|
|
114247
|
-
}
|
|
114248
|
-
/**
|
|
114249
|
-
* Base64 encodes HTMLBlock template literal content to prevent markdown parser from consuming <script>/<style> tags.
|
|
114250
|
-
*
|
|
114251
|
-
* @param content
|
|
114252
|
-
* @returns Content with HTMLBlock template literals base64 encoded in HTML comments
|
|
114253
|
-
* @example
|
|
114254
|
-
* ```typescript
|
|
114255
|
-
* const input = '<HTMLBlock>{`<script>alert("xss")</script>`}</HTMLBlock>';
|
|
114256
|
-
* protectHTMLBlockContent(input)
|
|
114257
|
-
* // Returns: '<HTMLBlock><!--RDMX_HTMLBLOCK:PHNjcmlwdD5hbGVydCgieHNzIik8L3NjcmlwdD4=:RDMX_HTMLBLOCK--></HTMLBlock>'
|
|
114258
|
-
* ```
|
|
114259
|
-
*/
|
|
114260
|
-
function protectHTMLBlockContent(content) {
|
|
114261
|
-
return content.replace(/(<HTMLBlock[^>]*>)\{\s*`((?:[^`\\]|\\.)*)`\s*\}(<\/HTMLBlock>)/g, (_match, openTag, templateContent, closeTag) => {
|
|
114262
|
-
const encoded = base64Encode(templateContent);
|
|
114263
|
-
return `${openTag}${HTML_BLOCK_CONTENT_START}${encoded}${HTML_BLOCK_CONTENT_END}${closeTag}`;
|
|
114264
|
-
});
|
|
114265
|
-
}
|
|
114266
|
-
/**
|
|
114267
|
-
* Removes JSX-style comments (e.g., { /* comment *\/ }) from content.
|
|
114268
|
-
*
|
|
114269
|
-
* @param content
|
|
114270
|
-
* @returns Content with JSX comments removed
|
|
114271
|
-
* @example
|
|
114272
|
-
* ```typescript
|
|
114273
|
-
* removeJSXComments('Text { /* comment *\/ } more text')
|
|
114274
|
-
* // Returns: 'Text more text'
|
|
114275
|
-
* ```
|
|
114276
|
-
*/
|
|
114277
|
-
function removeJSXComments(content) {
|
|
114278
|
-
return content.replace(/\{\s*\/\*[^*]*(?:\*(?!\/)[^*]*)*\*\/\s*\}/g, '');
|
|
114279
|
-
}
|
|
114280
|
-
/**
|
|
114281
|
-
* Extracts content between balanced braces, handling nested braces.
|
|
114282
|
-
*
|
|
114283
|
-
* @param content
|
|
114284
|
-
* @param start
|
|
114285
|
-
* @returns Object with extracted content and end position, or null if braces are unbalanced
|
|
114286
|
-
* @example
|
|
114287
|
-
* ```typescript
|
|
114288
|
-
* const input = 'foo{bar{baz}qux}end';
|
|
114289
|
-
* extractBalancedBraces(input, 3) // start at position 3 (after '{')
|
|
114290
|
-
* // Returns: { content: 'bar{baz}qux', end: 16 }
|
|
114291
|
-
* ```
|
|
114292
|
-
*/
|
|
114293
|
-
function extractBalancedBraces(content, start) {
|
|
114294
|
-
let depth = 1;
|
|
114295
|
-
let pos = start;
|
|
114296
|
-
while (pos < content.length && depth > 0) {
|
|
114297
|
-
const char = content[pos];
|
|
114298
|
-
if (char === '{')
|
|
114299
|
-
depth += 1;
|
|
114300
|
-
else if (char === '}')
|
|
114301
|
-
depth -= 1;
|
|
114302
|
-
pos += 1;
|
|
114303
|
-
}
|
|
114304
|
-
if (depth !== 0)
|
|
114305
|
-
return null;
|
|
114306
|
-
return { content: content.slice(start, pos - 1), end: pos };
|
|
114307
|
-
}
|
|
114308
|
-
/**
|
|
114309
|
-
* Escapes problematic braces in content to prevent MDX expression parsing errors.
|
|
114310
|
-
* Handles three cases:
|
|
114311
|
-
* 1. Unbalanced braces (e.g., `{foo` without closing `}`)
|
|
114312
|
-
* 2. Paragraph-spanning expressions (e.g., `{\n\n}` where blank line splits paragraphs)
|
|
114313
|
-
* 3. Skips HTML elements to prevent backslashes appearing in output
|
|
114314
|
-
*
|
|
114315
|
-
*/
|
|
114316
|
-
function escapeProblematicBraces(content) {
|
|
114317
|
-
// Skip HTML elements — their content should never be escaped because
|
|
114318
|
-
// rehypeRaw parses them into hast elements, making `\` literal text in output
|
|
114319
|
-
const htmlElements = [];
|
|
114320
|
-
const safe = content.replace(/<([a-z][a-zA-Z0-9]*)(?:\s[^>]*)?>[\s\S]*?<\/\1>/g, match => {
|
|
114321
|
-
const idx = htmlElements.length;
|
|
114322
|
-
htmlElements.push(match);
|
|
114323
|
-
return `___HTML_ELEM_${idx}___`;
|
|
114324
|
-
});
|
|
114325
|
-
const toEscape = new Set();
|
|
114326
|
-
// Convert to array of Unicode code points to handle emojis and multi-byte characters correctly
|
|
114327
|
-
const chars = Array.from(safe);
|
|
114328
|
-
let strDelim = null;
|
|
114329
|
-
let strEscaped = false;
|
|
114330
|
-
// Stack of open braces with their state
|
|
114331
|
-
const openStack = [];
|
|
114332
|
-
// Track position of last newline (outside strings) to detect blank lines
|
|
114333
|
-
let lastNewlinePos = -2; // -2 means no recent newline
|
|
114334
|
-
for (let i = 0; i < chars.length; i += 1) {
|
|
114335
|
-
const ch = chars[i];
|
|
114336
|
-
// Track string delimiters inside expressions to ignore braces within them
|
|
114337
|
-
if (openStack.length > 0) {
|
|
114338
|
-
if (strDelim) {
|
|
114339
|
-
if (strEscaped)
|
|
114340
|
-
strEscaped = false;
|
|
114341
|
-
else if (ch === '\\')
|
|
114342
|
-
strEscaped = true;
|
|
114343
|
-
else if (ch === strDelim)
|
|
114344
|
-
strDelim = null;
|
|
114345
|
-
// eslint-disable-next-line no-continue
|
|
114346
|
-
continue;
|
|
114347
|
-
}
|
|
114348
|
-
if (ch === '"' || ch === "'" || ch === '`') {
|
|
114349
|
-
strDelim = ch;
|
|
114350
|
-
// eslint-disable-next-line no-continue
|
|
114351
|
-
continue;
|
|
114352
|
-
}
|
|
114353
|
-
// Track newlines to detect blank lines (paragraph boundaries)
|
|
114354
|
-
if (ch === '\n') {
|
|
114355
|
-
// Check if this newline creates a blank line (only whitespace since last newline)
|
|
114356
|
-
if (lastNewlinePos >= 0) {
|
|
114357
|
-
const between = chars.slice(lastNewlinePos + 1, i).join('');
|
|
114358
|
-
if (/^[ \t]*$/.test(between)) {
|
|
114359
|
-
// This is a blank line - mark all open expressions as paragraph-spanning
|
|
114360
|
-
openStack.forEach(entry => {
|
|
114361
|
-
entry.hasBlankLine = true;
|
|
114362
|
-
});
|
|
114363
|
-
}
|
|
114364
|
-
}
|
|
114365
|
-
lastNewlinePos = i;
|
|
114366
|
-
}
|
|
114367
|
-
}
|
|
114368
|
-
// Skip already-escaped braces (count preceding backslashes)
|
|
114369
|
-
if (ch === '{' || ch === '}') {
|
|
114370
|
-
let bs = 0;
|
|
114371
|
-
for (let j = i - 1; j >= 0 && chars[j] === '\\'; j -= 1)
|
|
114372
|
-
bs += 1;
|
|
114373
|
-
if (bs % 2 === 1) {
|
|
114374
|
-
// eslint-disable-next-line no-continue
|
|
114375
|
-
continue;
|
|
114376
|
-
}
|
|
114377
|
-
}
|
|
114378
|
-
if (ch === '{') {
|
|
114379
|
-
openStack.push({ pos: i, hasBlankLine: false });
|
|
114380
|
-
lastNewlinePos = -2; // Reset newline tracking for new expression
|
|
114381
|
-
}
|
|
114382
|
-
else if (ch === '}') {
|
|
114383
|
-
if (openStack.length > 0) {
|
|
114384
|
-
const entry = openStack.pop();
|
|
114385
|
-
// If expression spans paragraph boundary, escape both braces
|
|
114386
|
-
if (entry.hasBlankLine) {
|
|
114387
|
-
toEscape.add(entry.pos);
|
|
114388
|
-
toEscape.add(i);
|
|
114389
|
-
}
|
|
114390
|
-
}
|
|
114391
|
-
else {
|
|
114392
|
-
// Unbalanced closing brace (no matching open)
|
|
114393
|
-
toEscape.add(i);
|
|
114394
|
-
}
|
|
114395
|
-
}
|
|
114396
|
-
}
|
|
114397
|
-
// Any remaining open braces are unbalanced
|
|
114398
|
-
openStack.forEach(entry => toEscape.add(entry.pos));
|
|
114399
|
-
// If there are no problematic braces, return safe content as-is;
|
|
114400
|
-
// otherwise, escape each problematic `{` or `}` so MDX doesn't treat them as expressions.
|
|
114401
|
-
let result = toEscape.size === 0
|
|
114402
|
-
? safe
|
|
114403
|
-
: chars.map((ch, i) => (toEscape.has(i) ? `\\${ch}` : ch)).join('');
|
|
114404
|
-
// Restore HTML elements
|
|
114405
|
-
if (htmlElements.length > 0) {
|
|
114406
|
-
result = result.replace(/___HTML_ELEM_(\d+)___/g, (_m, idx) => htmlElements[parseInt(idx, 10)]);
|
|
114407
|
-
}
|
|
114408
|
-
return result;
|
|
114409
|
-
}
|
|
114410
|
-
/**
|
|
114411
|
-
* Converts JSX attribute expressions (attribute={expression}) to HTML attributes (attribute="value").
|
|
114412
|
-
* Handles style objects (camelCase → kebab-case), className → class, and JSON stringifies objects.
|
|
114413
|
-
*
|
|
114414
|
-
* @param content
|
|
114415
|
-
* @param context
|
|
114416
|
-
* @returns Content with attribute expressions evaluated and converted to HTML attributes
|
|
114417
|
-
* @example
|
|
114418
|
-
* ```typescript
|
|
114419
|
-
* const context = { baseUrl: 'https://example.com' };
|
|
114420
|
-
* const input = '<a href={baseUrl}>Link</a>';
|
|
114421
|
-
* evaluateAttributeExpressions(input, context)
|
|
114422
|
-
* // Returns: '<a href="https://example.com">Link</a>'
|
|
114423
|
-
* ```
|
|
114424
|
-
*/
|
|
114425
|
-
function evaluateAttributeExpressions(content, context, protectedCode) {
|
|
114426
|
-
const attrStartRegex = /(\w+)=\{/g;
|
|
114427
|
-
let result = '';
|
|
114428
|
-
let lastEnd = 0;
|
|
114429
|
-
let match = attrStartRegex.exec(content);
|
|
114430
|
-
while (match !== null) {
|
|
114431
|
-
const attributeName = match[1];
|
|
114432
|
-
const braceStart = match.index + match[0].length;
|
|
114433
|
-
const extracted = extractBalancedBraces(content, braceStart);
|
|
114434
|
-
if (extracted) {
|
|
114435
|
-
// The expression might contain template literals in MDX component tag props
|
|
114436
|
-
// E.g. <Component greeting={`Hello World!`} />
|
|
114437
|
-
// that is marked as inline code. So we need to restore the inline codes
|
|
114438
|
-
// in the expression to evaluate it
|
|
114439
|
-
let expression = extracted.content;
|
|
114440
|
-
if (protectedCode) {
|
|
114441
|
-
expression = restoreInlineCode(expression, protectedCode);
|
|
114442
|
-
}
|
|
114443
|
-
const fullMatchEnd = extracted.end;
|
|
114444
|
-
result += content.slice(lastEnd, match.index);
|
|
114445
|
-
try {
|
|
114446
|
-
const evalResult = evaluateExpression(expression, context);
|
|
114447
|
-
if (typeof evalResult === 'object' && evalResult !== null) {
|
|
114448
|
-
if (attributeName === 'style') {
|
|
114449
|
-
const cssString = Object.entries(evalResult)
|
|
114450
|
-
.map(([key, value]) => {
|
|
114451
|
-
const cssKey = key.replace(/([A-Z])/g, '-$1').toLowerCase();
|
|
114452
|
-
return `${cssKey}: ${value}`;
|
|
114453
|
-
})
|
|
114454
|
-
.join('; ');
|
|
114455
|
-
result += `style="${cssString}"`;
|
|
114456
|
-
}
|
|
114457
|
-
else {
|
|
114458
|
-
// These are arrays / objects attribute values
|
|
114459
|
-
// Mark JSON-serialized values with a prefix so they can be parsed back correctly
|
|
114460
|
-
const jsonValue = escapeHtmlAttribute(JSON_VALUE_MARKER + JSON.stringify(evalResult));
|
|
114461
|
-
// Use double quotes so that multi-paragraph values are not split into multiple attributes by the processors
|
|
114462
|
-
result += `${attributeName}="${jsonValue}"`;
|
|
114463
|
-
}
|
|
114464
|
-
}
|
|
114465
|
-
else if (attributeName === 'className') {
|
|
114466
|
-
// Escape special characters so that it doesn't break and split the attribute value to nodes
|
|
114467
|
-
// This will be restored later in the pipeline
|
|
114468
|
-
result += `class="${escapeHtmlAttribute(String(evalResult))}"`;
|
|
114469
|
-
}
|
|
114470
|
-
else {
|
|
114471
|
-
result += `${attributeName}="${escapeHtmlAttribute(String(evalResult))}"`;
|
|
114472
|
-
}
|
|
114473
|
-
}
|
|
114474
|
-
catch (_error) {
|
|
114475
|
-
result += content.slice(match.index, fullMatchEnd);
|
|
114476
|
-
}
|
|
114477
|
-
lastEnd = fullMatchEnd;
|
|
114478
|
-
attrStartRegex.lastIndex = fullMatchEnd;
|
|
114479
|
-
}
|
|
114480
|
-
match = attrStartRegex.exec(content);
|
|
114481
|
-
}
|
|
114482
|
-
result += content.slice(lastEnd);
|
|
114483
|
-
return result;
|
|
114484
|
-
}
|
|
114485
|
-
/**
|
|
114486
|
-
* Preprocesses JSX-like expressions in markdown before parsing.
|
|
114487
|
-
* Inline expressions are handled separately; attribute expressions are processed here.
|
|
114488
|
-
*
|
|
114489
|
-
* @param content
|
|
114490
|
-
* @param context
|
|
114491
|
-
* @returns Preprocessed content ready for markdown parsing
|
|
114492
|
-
*/
|
|
114493
|
-
function preprocessJSXExpressions(content, context = {}) {
|
|
114494
|
-
// Step 0: Base64 encode HTMLBlock content
|
|
114495
|
-
let processed = protectHTMLBlockContent(content);
|
|
114496
|
-
// Step 1: Protect code blocks and inline code
|
|
114497
|
-
const { protectedCode, protectedContent } = protectCodeBlocks(processed);
|
|
114498
|
-
// Step 2: Evaluate attribute expressions (JSX attribute syntax: href={baseUrl})
|
|
114499
|
-
// For inline expressions, we use a library to parse the expression & evaluate it later
|
|
114500
|
-
// For attribute expressions, it was difficult to use a library to parse them, so do it manually
|
|
114501
|
-
processed = evaluateAttributeExpressions(protectedContent, context, protectedCode);
|
|
114502
|
-
// Step 3: Escape problematic braces to prevent MDX expression parsing errors
|
|
114503
|
-
// This handles both unbalanced braces and paragraph-spanning expressions in one pass
|
|
114504
|
-
processed = escapeProblematicBraces(processed);
|
|
114505
|
-
// Step 4: Restore protected code blocks
|
|
114506
|
-
processed = restoreCodeBlocks(processed, protectedCode);
|
|
114507
|
-
return processed;
|
|
114508
|
-
}
|
|
114509
|
-
|
|
114510
114466
|
;// ./processor/transform/mdxish/evaluate-expressions.ts
|
|
114511
114467
|
|
|
114512
114468
|
|
|
@@ -115024,6 +114980,591 @@ function legacyVariable() {
|
|
|
115024
114980
|
*/
|
|
115025
114981
|
|
|
115026
114982
|
|
|
114983
|
+
;// ./node_modules/entities/lib/esm/generated/decode-data-html.js
|
|
114984
|
+
// Generated using scripts/write-decode-map.ts
|
|
114985
|
+
/* harmony default export */ const decode_data_html = (new Uint16Array(
|
|
114986
|
+
// prettier-ignore
|
|
114987
|
+
"\u1d41<\xd5\u0131\u028a\u049d\u057b\u05d0\u0675\u06de\u07a2\u07d6\u080f\u0a4a\u0a91\u0da1\u0e6d\u0f09\u0f26\u10ca\u1228\u12e1\u1415\u149d\u14c3\u14df\u1525\0\0\0\0\0\0\u156b\u16cd\u198d\u1c12\u1ddd\u1f7e\u2060\u21b0\u228d\u23c0\u23fb\u2442\u2824\u2912\u2d08\u2e48\u2fce\u3016\u32ba\u3639\u37ac\u38fe\u3a28\u3a71\u3ae0\u3b2e\u0800EMabcfglmnoprstu\\bfms\x7f\x84\x8b\x90\x95\x98\xa6\xb3\xb9\xc8\xcflig\u803b\xc6\u40c6P\u803b&\u4026cute\u803b\xc1\u40c1reve;\u4102\u0100iyx}rc\u803b\xc2\u40c2;\u4410r;\uc000\ud835\udd04rave\u803b\xc0\u40c0pha;\u4391acr;\u4100d;\u6a53\u0100gp\x9d\xa1on;\u4104f;\uc000\ud835\udd38plyFunction;\u6061ing\u803b\xc5\u40c5\u0100cs\xbe\xc3r;\uc000\ud835\udc9cign;\u6254ilde\u803b\xc3\u40c3ml\u803b\xc4\u40c4\u0400aceforsu\xe5\xfb\xfe\u0117\u011c\u0122\u0127\u012a\u0100cr\xea\xf2kslash;\u6216\u0176\xf6\xf8;\u6ae7ed;\u6306y;\u4411\u0180crt\u0105\u010b\u0114ause;\u6235noullis;\u612ca;\u4392r;\uc000\ud835\udd05pf;\uc000\ud835\udd39eve;\u42d8c\xf2\u0113mpeq;\u624e\u0700HOacdefhilorsu\u014d\u0151\u0156\u0180\u019e\u01a2\u01b5\u01b7\u01ba\u01dc\u0215\u0273\u0278\u027ecy;\u4427PY\u803b\xa9\u40a9\u0180cpy\u015d\u0162\u017aute;\u4106\u0100;i\u0167\u0168\u62d2talDifferentialD;\u6145leys;\u612d\u0200aeio\u0189\u018e\u0194\u0198ron;\u410cdil\u803b\xc7\u40c7rc;\u4108nint;\u6230ot;\u410a\u0100dn\u01a7\u01adilla;\u40b8terDot;\u40b7\xf2\u017fi;\u43a7rcle\u0200DMPT\u01c7\u01cb\u01d1\u01d6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01e2\u01f8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020foubleQuote;\u601duote;\u6019\u0200lnpu\u021e\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6a74\u0180git\u022f\u0236\u023aruent;\u6261nt;\u622fourIntegral;\u622e\u0100fr\u024c\u024e;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6a2fcr;\uc000\ud835\udc9ep\u0100;C\u0284\u0285\u62d3ap;\u624d\u0580DJSZacefios\u02a0\u02ac\u02b0\u02b4\u02b8\u02cb\u02d7\u02e1\u02e6\u0333\u048d\u0100;o\u0179\u02a5trahd;\u6911cy;\u4402cy;\u4405cy;\u440f\u0180grs\u02bf\u02c4\u02c7ger;\u6021r;\u61a1hv;\u6ae4\u0100ay\u02d0\u02d5ron;\u410e;\u4414l\u0100;t\u02dd\u02de\u6207a;\u4394r;\uc000\ud835\udd07\u0100af\u02eb\u0327\u0100cm\u02f0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031ccute;\u40b4o\u0174\u030b\u030d;\u42d9bleAcute;\u42ddrave;\u4060ilde;\u42dcond;\u62c4ferentialD;\u6146\u0470\u033d\0\0\0\u0342\u0354\0\u0405f;\uc000\ud835\udd3b\u0180;DE\u0348\u0349\u034d\u40a8ot;\u60dcqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03cf\u03e2\u03f8ontourIntegra\xec\u0239o\u0274\u0379\0\0\u037b\xbb\u0349nArrow;\u61d3\u0100eo\u0387\u03a4ft\u0180ART\u0390\u0396\u03a1rrow;\u61d0ightArrow;\u61d4e\xe5\u02cang\u0100LR\u03ab\u03c4eft\u0100AR\u03b3\u03b9rrow;\u67f8ightArrow;\u67faightArrow;\u67f9ight\u0100AT\u03d8\u03derrow;\u61d2ee;\u62a8p\u0241\u03e9\0\0\u03efrrow;\u61d1ownArrow;\u61d5erticalBar;\u6225n\u0300ABLRTa\u0412\u042a\u0430\u045e\u047f\u037crrow\u0180;BU\u041d\u041e\u0422\u6193ar;\u6913pArrow;\u61f5reve;\u4311eft\u02d2\u043a\0\u0446\0\u0450ightVector;\u6950eeVector;\u695eector\u0100;B\u0459\u045a\u61bdar;\u6956ight\u01d4\u0467\0\u0471eeVector;\u695fector\u0100;B\u047a\u047b\u61c1ar;\u6957ee\u0100;A\u0486\u0487\u62a4rrow;\u61a7\u0100ct\u0492\u0497r;\uc000\ud835\udc9frok;\u4110\u0800NTacdfglmopqstux\u04bd\u04c0\u04c4\u04cb\u04de\u04e2\u04e7\u04ee\u04f5\u0521\u052f\u0536\u0552\u055d\u0560\u0565G;\u414aH\u803b\xd0\u40d0cute\u803b\xc9\u40c9\u0180aiy\u04d2\u04d7\u04dcron;\u411arc\u803b\xca\u40ca;\u442dot;\u4116r;\uc000\ud835\udd08rave\u803b\xc8\u40c8ement;\u6208\u0100ap\u04fa\u04fecr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65fberySmallSquare;\u65ab\u0100gp\u0526\u052aon;\u4118f;\uc000\ud835\udd3csilon;\u4395u\u0100ai\u053c\u0549l\u0100;T\u0542\u0543\u6a75ilde;\u6242librium;\u61cc\u0100ci\u0557\u055ar;\u6130m;\u6a73a;\u4397ml\u803b\xcb\u40cb\u0100ip\u056a\u056fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058d\u05b2\u05ccy;\u4424r;\uc000\ud835\udd09lled\u0253\u0597\0\0\u05a3mallSquare;\u65fcerySmallSquare;\u65aa\u0370\u05ba\0\u05bf\0\0\u05c4f;\uc000\ud835\udd3dAll;\u6200riertrf;\u6131c\xf2\u05cb\u0600JTabcdfgorst\u05e8\u05ec\u05ef\u05fa\u0600\u0612\u0616\u061b\u061d\u0623\u066c\u0672cy;\u4403\u803b>\u403emma\u0100;d\u05f7\u05f8\u4393;\u43dcreve;\u411e\u0180eiy\u0607\u060c\u0610dil;\u4122rc;\u411c;\u4413ot;\u4120r;\uc000\ud835\udd0a;\u62d9pf;\uc000\ud835\udd3eeater\u0300EFGLST\u0635\u0644\u064e\u0656\u065b\u0666qual\u0100;L\u063e\u063f\u6265ess;\u62dbullEqual;\u6267reater;\u6aa2ess;\u6277lantEqual;\u6a7eilde;\u6273cr;\uc000\ud835\udca2;\u626b\u0400Aacfiosu\u0685\u068b\u0696\u069b\u069e\u06aa\u06be\u06caRDcy;\u442a\u0100ct\u0690\u0694ek;\u42c7;\u405eirc;\u4124r;\u610clbertSpace;\u610b\u01f0\u06af\0\u06b2f;\u610dizontalLine;\u6500\u0100ct\u06c3\u06c5\xf2\u06a9rok;\u4126mp\u0144\u06d0\u06d8ownHum\xf0\u012fqual;\u624f\u0700EJOacdfgmnostu\u06fa\u06fe\u0703\u0707\u070e\u071a\u071e\u0721\u0728\u0744\u0778\u078b\u078f\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803b\xcd\u40cd\u0100iy\u0713\u0718rc\u803b\xce\u40ce;\u4418ot;\u4130r;\u6111rave\u803b\xcc\u40cc\u0180;ap\u0720\u072f\u073f\u0100cg\u0734\u0737r;\u412ainaryI;\u6148lie\xf3\u03dd\u01f4\u0749\0\u0762\u0100;e\u074d\u074e\u622c\u0100gr\u0753\u0758ral;\u622bsection;\u62c2isible\u0100CT\u076c\u0772omma;\u6063imes;\u6062\u0180gpt\u077f\u0783\u0788on;\u412ef;\uc000\ud835\udd40a;\u4399cr;\u6110ilde;\u4128\u01eb\u079a\0\u079ecy;\u4406l\u803b\xcf\u40cf\u0280cfosu\u07ac\u07b7\u07bc\u07c2\u07d0\u0100iy\u07b1\u07b5rc;\u4134;\u4419r;\uc000\ud835\udd0dpf;\uc000\ud835\udd41\u01e3\u07c7\0\u07ccr;\uc000\ud835\udca5rcy;\u4408kcy;\u4404\u0380HJacfos\u07e4\u07e8\u07ec\u07f1\u07fd\u0802\u0808cy;\u4425cy;\u440cppa;\u439a\u0100ey\u07f6\u07fbdil;\u4136;\u441ar;\uc000\ud835\udd0epf;\uc000\ud835\udd42cr;\uc000\ud835\udca6\u0580JTaceflmost\u0825\u0829\u082c\u0850\u0863\u09b3\u09b8\u09c7\u09cd\u0a37\u0a47cy;\u4409\u803b<\u403c\u0280cmnpr\u0837\u083c\u0841\u0844\u084dute;\u4139bda;\u439bg;\u67ealacetrf;\u6112r;\u619e\u0180aey\u0857\u085c\u0861ron;\u413ddil;\u413b;\u441b\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087e\u08a9\u08b1\u08e0\u08e6\u08fc\u092f\u095b\u0390\u096a\u0100nr\u0883\u088fgleBracket;\u67e8row\u0180;BR\u0899\u089a\u089e\u6190ar;\u61e4ightArrow;\u61c6eiling;\u6308o\u01f5\u08b7\0\u08c3bleBracket;\u67e6n\u01d4\u08c8\0\u08d2eeVector;\u6961ector\u0100;B\u08db\u08dc\u61c3ar;\u6959loor;\u630aight\u0100AV\u08ef\u08f5rrow;\u6194ector;\u694e\u0100er\u0901\u0917e\u0180;AV\u0909\u090a\u0910\u62a3rrow;\u61a4ector;\u695aiangle\u0180;BE\u0924\u0925\u0929\u62b2ar;\u69cfqual;\u62b4p\u0180DTV\u0937\u0942\u094cownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61bfar;\u6958ector\u0100;B\u0965\u0966\u61bcar;\u6952ight\xe1\u039cs\u0300EFGLST\u097e\u098b\u0995\u099d\u09a2\u09adqualGreater;\u62daullEqual;\u6266reater;\u6276ess;\u6aa1lantEqual;\u6a7dilde;\u6272r;\uc000\ud835\udd0f\u0100;e\u09bd\u09be\u62d8ftarrow;\u61daidot;\u413f\u0180npw\u09d4\u0a16\u0a1bg\u0200LRlr\u09de\u09f7\u0a02\u0a10eft\u0100AR\u09e6\u09ecrrow;\u67f5ightArrow;\u67f7ightArrow;\u67f6eft\u0100ar\u03b3\u0a0aight\xe1\u03bfight\xe1\u03caf;\uc000\ud835\udd43er\u0100LR\u0a22\u0a2ceftArrow;\u6199ightArrow;\u6198\u0180cht\u0a3e\u0a40\u0a42\xf2\u084c;\u61b0rok;\u4141;\u626a\u0400acefiosu\u0a5a\u0a5d\u0a60\u0a77\u0a7c\u0a85\u0a8b\u0a8ep;\u6905y;\u441c\u0100dl\u0a65\u0a6fiumSpace;\u605flintrf;\u6133r;\uc000\ud835\udd10nusPlus;\u6213pf;\uc000\ud835\udd44c\xf2\u0a76;\u439c\u0480Jacefostu\u0aa3\u0aa7\u0aad\u0ac0\u0b14\u0b19\u0d91\u0d97\u0d9ecy;\u440acute;\u4143\u0180aey\u0ab4\u0ab9\u0aberon;\u4147dil;\u4145;\u441d\u0180gsw\u0ac7\u0af0\u0b0eative\u0180MTV\u0ad3\u0adf\u0ae8ediumSpace;\u600bhi\u0100cn\u0ae6\u0ad8\xeb\u0ad9eryThi\xee\u0ad9ted\u0100GL\u0af8\u0b06reaterGreate\xf2\u0673essLes\xf3\u0a48Line;\u400ar;\uc000\ud835\udd11\u0200Bnpt\u0b22\u0b28\u0b37\u0b3areak;\u6060BreakingSpace;\u40a0f;\u6115\u0680;CDEGHLNPRSTV\u0b55\u0b56\u0b6a\u0b7c\u0ba1\u0beb\u0c04\u0c5e\u0c84\u0ca6\u0cd8\u0d61\u0d85\u6aec\u0100ou\u0b5b\u0b64ngruent;\u6262pCap;\u626doubleVerticalBar;\u6226\u0180lqx\u0b83\u0b8a\u0b9bement;\u6209ual\u0100;T\u0b92\u0b93\u6260ilde;\uc000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0bb6\u0bb7\u0bbd\u0bc9\u0bd3\u0bd8\u0be5\u626fqual;\u6271ullEqual;\uc000\u2267\u0338reater;\uc000\u226b\u0338ess;\u6279lantEqual;\uc000\u2a7e\u0338ilde;\u6275ump\u0144\u0bf2\u0bfdownHump;\uc000\u224e\u0338qual;\uc000\u224f\u0338e\u0100fs\u0c0a\u0c27tTriangle\u0180;BE\u0c1a\u0c1b\u0c21\u62eaar;\uc000\u29cf\u0338qual;\u62ecs\u0300;EGLST\u0c35\u0c36\u0c3c\u0c44\u0c4b\u0c58\u626equal;\u6270reater;\u6278ess;\uc000\u226a\u0338lantEqual;\uc000\u2a7d\u0338ilde;\u6274ested\u0100GL\u0c68\u0c79reaterGreater;\uc000\u2aa2\u0338essLess;\uc000\u2aa1\u0338recedes\u0180;ES\u0c92\u0c93\u0c9b\u6280qual;\uc000\u2aaf\u0338lantEqual;\u62e0\u0100ei\u0cab\u0cb9verseElement;\u620cghtTriangle\u0180;BE\u0ccb\u0ccc\u0cd2\u62ebar;\uc000\u29d0\u0338qual;\u62ed\u0100qu\u0cdd\u0d0cuareSu\u0100bp\u0ce8\u0cf9set\u0100;E\u0cf0\u0cf3\uc000\u228f\u0338qual;\u62e2erset\u0100;E\u0d03\u0d06\uc000\u2290\u0338qual;\u62e3\u0180bcp\u0d13\u0d24\u0d4eset\u0100;E\u0d1b\u0d1e\uc000\u2282\u20d2qual;\u6288ceeds\u0200;EST\u0d32\u0d33\u0d3b\u0d46\u6281qual;\uc000\u2ab0\u0338lantEqual;\u62e1ilde;\uc000\u227f\u0338erset\u0100;E\u0d58\u0d5b\uc000\u2283\u20d2qual;\u6289ilde\u0200;EFT\u0d6e\u0d6f\u0d75\u0d7f\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uc000\ud835\udca9ilde\u803b\xd1\u40d1;\u439d\u0700Eacdfgmoprstuv\u0dbd\u0dc2\u0dc9\u0dd5\u0ddb\u0de0\u0de7\u0dfc\u0e02\u0e20\u0e22\u0e32\u0e3f\u0e44lig;\u4152cute\u803b\xd3\u40d3\u0100iy\u0dce\u0dd3rc\u803b\xd4\u40d4;\u441eblac;\u4150r;\uc000\ud835\udd12rave\u803b\xd2\u40d2\u0180aei\u0dee\u0df2\u0df6cr;\u414cga;\u43a9cron;\u439fpf;\uc000\ud835\udd46enCurly\u0100DQ\u0e0e\u0e1aoubleQuote;\u601cuote;\u6018;\u6a54\u0100cl\u0e27\u0e2cr;\uc000\ud835\udcaaash\u803b\xd8\u40d8i\u016c\u0e37\u0e3cde\u803b\xd5\u40d5es;\u6a37ml\u803b\xd6\u40d6er\u0100BP\u0e4b\u0e60\u0100ar\u0e50\u0e53r;\u603eac\u0100ek\u0e5a\u0e5c;\u63deet;\u63b4arenthesis;\u63dc\u0480acfhilors\u0e7f\u0e87\u0e8a\u0e8f\u0e92\u0e94\u0e9d\u0eb0\u0efcrtialD;\u6202y;\u441fr;\uc000\ud835\udd13i;\u43a6;\u43a0usMinus;\u40b1\u0100ip\u0ea2\u0eadncareplan\xe5\u069df;\u6119\u0200;eio\u0eb9\u0eba\u0ee0\u0ee4\u6abbcedes\u0200;EST\u0ec8\u0ec9\u0ecf\u0eda\u627aqual;\u6aaflantEqual;\u627cilde;\u627eme;\u6033\u0100dp\u0ee9\u0eeeuct;\u620fortion\u0100;a\u0225\u0ef9l;\u621d\u0100ci\u0f01\u0f06r;\uc000\ud835\udcab;\u43a8\u0200Ufos\u0f11\u0f16\u0f1b\u0f1fOT\u803b\"\u4022r;\uc000\ud835\udd14pf;\u611acr;\uc000\ud835\udcac\u0600BEacefhiorsu\u0f3e\u0f43\u0f47\u0f60\u0f73\u0fa7\u0faa\u0fad\u1096\u10a9\u10b4\u10bearr;\u6910G\u803b\xae\u40ae\u0180cnr\u0f4e\u0f53\u0f56ute;\u4154g;\u67ebr\u0100;t\u0f5c\u0f5d\u61a0l;\u6916\u0180aey\u0f67\u0f6c\u0f71ron;\u4158dil;\u4156;\u4420\u0100;v\u0f78\u0f79\u611cerse\u0100EU\u0f82\u0f99\u0100lq\u0f87\u0f8eement;\u620builibrium;\u61cbpEquilibrium;\u696fr\xbb\u0f79o;\u43a1ght\u0400ACDFTUVa\u0fc1\u0feb\u0ff3\u1022\u1028\u105b\u1087\u03d8\u0100nr\u0fc6\u0fd2gleBracket;\u67e9row\u0180;BL\u0fdc\u0fdd\u0fe1\u6192ar;\u61e5eftArrow;\u61c4eiling;\u6309o\u01f5\u0ff9\0\u1005bleBracket;\u67e7n\u01d4\u100a\0\u1014eeVector;\u695dector\u0100;B\u101d\u101e\u61c2ar;\u6955loor;\u630b\u0100er\u102d\u1043e\u0180;AV\u1035\u1036\u103c\u62a2rrow;\u61a6ector;\u695biangle\u0180;BE\u1050\u1051\u1055\u62b3ar;\u69d0qual;\u62b5p\u0180DTV\u1063\u106e\u1078ownVector;\u694feeVector;\u695cector\u0100;B\u1082\u1083\u61bear;\u6954ector\u0100;B\u1091\u1092\u61c0ar;\u6953\u0100pu\u109b\u109ef;\u611dndImplies;\u6970ightarrow;\u61db\u0100ch\u10b9\u10bcr;\u611b;\u61b1leDelayed;\u69f4\u0680HOacfhimoqstu\u10e4\u10f1\u10f7\u10fd\u1119\u111e\u1151\u1156\u1161\u1167\u11b5\u11bb\u11bf\u0100Cc\u10e9\u10eeHcy;\u4429y;\u4428FTcy;\u442ccute;\u415a\u0280;aeiy\u1108\u1109\u110e\u1113\u1117\u6abcron;\u4160dil;\u415erc;\u415c;\u4421r;\uc000\ud835\udd16ort\u0200DLRU\u112a\u1134\u113e\u1149ownArrow\xbb\u041eeftArrow\xbb\u089aightArrow\xbb\u0fddpArrow;\u6191gma;\u43a3allCircle;\u6218pf;\uc000\ud835\udd4a\u0272\u116d\0\0\u1170t;\u621aare\u0200;ISU\u117b\u117c\u1189\u11af\u65a1ntersection;\u6293u\u0100bp\u118f\u119eset\u0100;E\u1197\u1198\u628fqual;\u6291erset\u0100;E\u11a8\u11a9\u6290qual;\u6292nion;\u6294cr;\uc000\ud835\udcaear;\u62c6\u0200bcmp\u11c8\u11db\u1209\u120b\u0100;s\u11cd\u11ce\u62d0et\u0100;E\u11cd\u11d5qual;\u6286\u0100ch\u11e0\u1205eeds\u0200;EST\u11ed\u11ee\u11f4\u11ff\u627bqual;\u6ab0lantEqual;\u627dilde;\u627fTh\xe1\u0f8c;\u6211\u0180;es\u1212\u1213\u1223\u62d1rset\u0100;E\u121c\u121d\u6283qual;\u6287et\xbb\u1213\u0580HRSacfhiors\u123e\u1244\u1249\u1255\u125e\u1271\u1276\u129f\u12c2\u12c8\u12d1ORN\u803b\xde\u40deADE;\u6122\u0100Hc\u124e\u1252cy;\u440by;\u4426\u0100bu\u125a\u125c;\u4009;\u43a4\u0180aey\u1265\u126a\u126fron;\u4164dil;\u4162;\u4422r;\uc000\ud835\udd17\u0100ei\u127b\u1289\u01f2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128e\u1298kSpace;\uc000\u205f\u200aSpace;\u6009lde\u0200;EFT\u12ab\u12ac\u12b2\u12bc\u623cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uc000\ud835\udd4bipleDot;\u60db\u0100ct\u12d6\u12dbr;\uc000\ud835\udcafrok;\u4166\u0ae1\u12f7\u130e\u131a\u1326\0\u132c\u1331\0\0\0\0\0\u1338\u133d\u1377\u1385\0\u13ff\u1404\u140a\u1410\u0100cr\u12fb\u1301ute\u803b\xda\u40dar\u0100;o\u1307\u1308\u619fcir;\u6949r\u01e3\u1313\0\u1316y;\u440eve;\u416c\u0100iy\u131e\u1323rc\u803b\xdb\u40db;\u4423blac;\u4170r;\uc000\ud835\udd18rave\u803b\xd9\u40d9acr;\u416a\u0100di\u1341\u1369er\u0100BP\u1348\u135d\u0100ar\u134d\u1350r;\u405fac\u0100ek\u1357\u1359;\u63dfet;\u63b5arenthesis;\u63ddon\u0100;P\u1370\u1371\u62c3lus;\u628e\u0100gp\u137b\u137fon;\u4172f;\uc000\ud835\udd4c\u0400ADETadps\u1395\u13ae\u13b8\u13c4\u03e8\u13d2\u13d7\u13f3rrow\u0180;BD\u1150\u13a0\u13a4ar;\u6912ownArrow;\u61c5ownArrow;\u6195quilibrium;\u696eee\u0100;A\u13cb\u13cc\u62a5rrow;\u61a5own\xe1\u03f3er\u0100LR\u13de\u13e8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13f9\u13fa\u43d2on;\u43a5ing;\u416ecr;\uc000\ud835\udcb0ilde;\u4168ml\u803b\xdc\u40dc\u0480Dbcdefosv\u1427\u142c\u1430\u1433\u143e\u1485\u148a\u1490\u1496ash;\u62abar;\u6aeby;\u4412ash\u0100;l\u143b\u143c\u62a9;\u6ae6\u0100er\u1443\u1445;\u62c1\u0180bty\u144c\u1450\u147aar;\u6016\u0100;i\u144f\u1455cal\u0200BLST\u1461\u1465\u146a\u1474ar;\u6223ine;\u407ceparator;\u6758ilde;\u6240ThinSpace;\u600ar;\uc000\ud835\udd19pf;\uc000\ud835\udd4dcr;\uc000\ud835\udcb1dash;\u62aa\u0280cefos\u14a7\u14ac\u14b1\u14b6\u14bcirc;\u4174dge;\u62c0r;\uc000\ud835\udd1apf;\uc000\ud835\udd4ecr;\uc000\ud835\udcb2\u0200fios\u14cb\u14d0\u14d2\u14d8r;\uc000\ud835\udd1b;\u439epf;\uc000\ud835\udd4fcr;\uc000\ud835\udcb3\u0480AIUacfosu\u14f1\u14f5\u14f9\u14fd\u1504\u150f\u1514\u151a\u1520cy;\u442fcy;\u4407cy;\u442ecute\u803b\xdd\u40dd\u0100iy\u1509\u150drc;\u4176;\u442br;\uc000\ud835\udd1cpf;\uc000\ud835\udd50cr;\uc000\ud835\udcb4ml;\u4178\u0400Hacdefos\u1535\u1539\u153f\u154b\u154f\u155d\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417d;\u4417ot;\u417b\u01f2\u1554\0\u155boWidt\xe8\u0ad9a;\u4396r;\u6128pf;\u6124cr;\uc000\ud835\udcb5\u0be1\u1583\u158a\u1590\0\u15b0\u15b6\u15bf\0\0\0\0\u15c6\u15db\u15eb\u165f\u166d\0\u1695\u169b\u16b2\u16b9\0\u16becute\u803b\xe1\u40e1reve;\u4103\u0300;Ediuy\u159c\u159d\u15a1\u15a3\u15a8\u15ad\u623e;\uc000\u223e\u0333;\u623frc\u803b\xe2\u40e2te\u80bb\xb4\u0306;\u4430lig\u803b\xe6\u40e6\u0100;r\xb2\u15ba;\uc000\ud835\udd1erave\u803b\xe0\u40e0\u0100ep\u15ca\u15d6\u0100fp\u15cf\u15d4sym;\u6135\xe8\u15d3ha;\u43b1\u0100ap\u15dfc\u0100cl\u15e4\u15e7r;\u4101g;\u6a3f\u0264\u15f0\0\0\u160a\u0280;adsv\u15fa\u15fb\u15ff\u1601\u1607\u6227nd;\u6a55;\u6a5clope;\u6a58;\u6a5a\u0380;elmrsz\u1618\u1619\u161b\u161e\u163f\u164f\u1659\u6220;\u69a4e\xbb\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163a\u163c\u163e;\u69a8;\u69a9;\u69aa;\u69ab;\u69ac;\u69ad;\u69ae;\u69aft\u0100;v\u1645\u1646\u621fb\u0100;d\u164c\u164d\u62be;\u699d\u0100pt\u1654\u1657h;\u6222\xbb\xb9arr;\u637c\u0100gp\u1663\u1667on;\u4105f;\uc000\ud835\udd52\u0380;Eaeiop\u12c1\u167b\u167d\u1682\u1684\u1687\u168a;\u6a70cir;\u6a6f;\u624ad;\u624bs;\u4027rox\u0100;e\u12c1\u1692\xf1\u1683ing\u803b\xe5\u40e5\u0180cty\u16a1\u16a6\u16a8r;\uc000\ud835\udcb6;\u402amp\u0100;e\u12c1\u16af\xf1\u0288ilde\u803b\xe3\u40e3ml\u803b\xe4\u40e4\u0100ci\u16c2\u16c8onin\xf4\u0272nt;\u6a11\u0800Nabcdefiklnoprsu\u16ed\u16f1\u1730\u173c\u1743\u1748\u1778\u177d\u17e0\u17e6\u1839\u1850\u170d\u193d\u1948\u1970ot;\u6aed\u0100cr\u16f6\u171ek\u0200ceps\u1700\u1705\u170d\u1713ong;\u624cpsilon;\u43f6rime;\u6035im\u0100;e\u171a\u171b\u623dq;\u62cd\u0176\u1722\u1726ee;\u62bded\u0100;g\u172c\u172d\u6305e\xbb\u172drk\u0100;t\u135c\u1737brk;\u63b6\u0100oy\u1701\u1741;\u4431quo;\u601e\u0280cmprt\u1753\u175b\u1761\u1764\u1768aus\u0100;e\u010a\u0109ptyv;\u69b0s\xe9\u170cno\xf5\u0113\u0180ahw\u176f\u1771\u1773;\u43b2;\u6136een;\u626cr;\uc000\ud835\udd1fg\u0380costuvw\u178d\u179d\u17b3\u17c1\u17d5\u17db\u17de\u0180aiu\u1794\u1796\u179a\xf0\u0760rc;\u65efp\xbb\u1371\u0180dpt\u17a4\u17a8\u17adot;\u6a00lus;\u6a01imes;\u6a02\u0271\u17b9\0\0\u17becup;\u6a06ar;\u6605riangle\u0100du\u17cd\u17d2own;\u65bdp;\u65b3plus;\u6a04e\xe5\u1444\xe5\u14adarow;\u690d\u0180ako\u17ed\u1826\u1835\u0100cn\u17f2\u1823k\u0180lst\u17fa\u05ab\u1802ozenge;\u69ebriangle\u0200;dlr\u1812\u1813\u1818\u181d\u65b4own;\u65beeft;\u65c2ight;\u65b8k;\u6423\u01b1\u182b\0\u1833\u01b2\u182f\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183e\u184d\u0100;q\u1843\u1846\uc000=\u20e5uiv;\uc000\u2261\u20e5t;\u6310\u0200ptwx\u1859\u185e\u1867\u186cf;\uc000\ud835\udd53\u0100;t\u13cb\u1863om\xbb\u13cctie;\u62c8\u0600DHUVbdhmptuv\u1885\u1896\u18aa\u18bb\u18d7\u18db\u18ec\u18ff\u1905\u190a\u1910\u1921\u0200LRlr\u188e\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18a1\u18a2\u18a4\u18a6\u18a8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18b3\u18b5\u18b7\u18b9;\u655d;\u655a;\u655c;\u6559\u0380;HLRhlr\u18ca\u18cb\u18cd\u18cf\u18d1\u18d3\u18d5\u6551;\u656c;\u6563;\u6560;\u656b;\u6562;\u655fox;\u69c9\u0200LRlr\u18e4\u18e6\u18e8\u18ea;\u6555;\u6552;\u6510;\u650c\u0280;DUdu\u06bd\u18f7\u18f9\u18fb\u18fd;\u6565;\u6568;\u652c;\u6534inus;\u629flus;\u629eimes;\u62a0\u0200LRlr\u1919\u191b\u191d\u191f;\u655b;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193b\u6502;\u656a;\u6561;\u655e;\u653c;\u6524;\u651c\u0100ev\u0123\u1942bar\u803b\xa6\u40a6\u0200ceio\u1951\u1956\u195a\u1960r;\uc000\ud835\udcb7mi;\u604fm\u0100;e\u171a\u171cl\u0180;bh\u1968\u1969\u196b\u405c;\u69c5sub;\u67c8\u016c\u1974\u197el\u0100;e\u1979\u197a\u6022t\xbb\u197ap\u0180;Ee\u012f\u1985\u1987;\u6aae\u0100;q\u06dc\u06db\u0ce1\u19a7\0\u19e8\u1a11\u1a15\u1a32\0\u1a37\u1a50\0\0\u1ab4\0\0\u1ac1\0\0\u1b21\u1b2e\u1b4d\u1b52\0\u1bfd\0\u1c0c\u0180cpr\u19ad\u19b2\u19ddute;\u4107\u0300;abcds\u19bf\u19c0\u19c4\u19ca\u19d5\u19d9\u6229nd;\u6a44rcup;\u6a49\u0100au\u19cf\u19d2p;\u6a4bp;\u6a47ot;\u6a40;\uc000\u2229\ufe00\u0100eo\u19e2\u19e5t;\u6041\xee\u0693\u0200aeiu\u19f0\u19fb\u1a01\u1a05\u01f0\u19f5\0\u19f8s;\u6a4don;\u410ddil\u803b\xe7\u40e7rc;\u4109ps\u0100;s\u1a0c\u1a0d\u6a4cm;\u6a50ot;\u410b\u0180dmn\u1a1b\u1a20\u1a26il\u80bb\xb8\u01adptyv;\u69b2t\u8100\xa2;e\u1a2d\u1a2e\u40a2r\xe4\u01b2r;\uc000\ud835\udd20\u0180cei\u1a3d\u1a40\u1a4dy;\u4447ck\u0100;m\u1a47\u1a48\u6713ark\xbb\u1a48;\u43c7r\u0380;Ecefms\u1a5f\u1a60\u1a62\u1a6b\u1aa4\u1aaa\u1aae\u65cb;\u69c3\u0180;el\u1a69\u1a6a\u1a6d\u42c6q;\u6257e\u0261\u1a74\0\0\u1a88rrow\u0100lr\u1a7c\u1a81eft;\u61baight;\u61bb\u0280RSacd\u1a92\u1a94\u1a96\u1a9a\u1a9f\xbb\u0f47;\u64c8st;\u629birc;\u629aash;\u629dnint;\u6a10id;\u6aefcir;\u69c2ubs\u0100;u\u1abb\u1abc\u6663it\xbb\u1abc\u02ec\u1ac7\u1ad4\u1afa\0\u1b0aon\u0100;e\u1acd\u1ace\u403a\u0100;q\xc7\xc6\u026d\u1ad9\0\0\u1ae2a\u0100;t\u1ade\u1adf\u402c;\u4040\u0180;fl\u1ae8\u1ae9\u1aeb\u6201\xee\u1160e\u0100mx\u1af1\u1af6ent\xbb\u1ae9e\xf3\u024d\u01e7\u1afe\0\u1b07\u0100;d\u12bb\u1b02ot;\u6a6dn\xf4\u0246\u0180fry\u1b10\u1b14\u1b17;\uc000\ud835\udd54o\xe4\u0254\u8100\xa9;s\u0155\u1b1dr;\u6117\u0100ao\u1b25\u1b29rr;\u61b5ss;\u6717\u0100cu\u1b32\u1b37r;\uc000\ud835\udcb8\u0100bp\u1b3c\u1b44\u0100;e\u1b41\u1b42\u6acf;\u6ad1\u0100;e\u1b49\u1b4a\u6ad0;\u6ad2dot;\u62ef\u0380delprvw\u1b60\u1b6c\u1b77\u1b82\u1bac\u1bd4\u1bf9arr\u0100lr\u1b68\u1b6a;\u6938;\u6935\u0270\u1b72\0\0\u1b75r;\u62dec;\u62dfarr\u0100;p\u1b7f\u1b80\u61b6;\u693d\u0300;bcdos\u1b8f\u1b90\u1b96\u1ba1\u1ba5\u1ba8\u622arcap;\u6a48\u0100au\u1b9b\u1b9ep;\u6a46p;\u6a4aot;\u628dr;\u6a45;\uc000\u222a\ufe00\u0200alrv\u1bb5\u1bbf\u1bde\u1be3rr\u0100;m\u1bbc\u1bbd\u61b7;\u693cy\u0180evw\u1bc7\u1bd4\u1bd8q\u0270\u1bce\0\0\u1bd2re\xe3\u1b73u\xe3\u1b75ee;\u62ceedge;\u62cfen\u803b\xa4\u40a4earrow\u0100lr\u1bee\u1bf3eft\xbb\u1b80ight\xbb\u1bbde\xe4\u1bdd\u0100ci\u1c01\u1c07onin\xf4\u01f7nt;\u6231lcty;\u632d\u0980AHabcdefhijlorstuwz\u1c38\u1c3b\u1c3f\u1c5d\u1c69\u1c75\u1c8a\u1c9e\u1cac\u1cb7\u1cfb\u1cff\u1d0d\u1d7b\u1d91\u1dab\u1dbb\u1dc6\u1dcdr\xf2\u0381ar;\u6965\u0200glrs\u1c48\u1c4d\u1c52\u1c54ger;\u6020eth;\u6138\xf2\u1133h\u0100;v\u1c5a\u1c5b\u6010\xbb\u090a\u016b\u1c61\u1c67arow;\u690fa\xe3\u0315\u0100ay\u1c6e\u1c73ron;\u410f;\u4434\u0180;ao\u0332\u1c7c\u1c84\u0100gr\u02bf\u1c81r;\u61catseq;\u6a77\u0180glm\u1c91\u1c94\u1c98\u803b\xb0\u40b0ta;\u43b4ptyv;\u69b1\u0100ir\u1ca3\u1ca8sht;\u697f;\uc000\ud835\udd21ar\u0100lr\u1cb3\u1cb5\xbb\u08dc\xbb\u101e\u0280aegsv\u1cc2\u0378\u1cd6\u1cdc\u1ce0m\u0180;os\u0326\u1cca\u1cd4nd\u0100;s\u0326\u1cd1uit;\u6666amma;\u43ddin;\u62f2\u0180;io\u1ce7\u1ce8\u1cf8\u40f7de\u8100\xf7;o\u1ce7\u1cf0ntimes;\u62c7n\xf8\u1cf7cy;\u4452c\u026f\u1d06\0\0\u1d0arn;\u631eop;\u630d\u0280lptuw\u1d18\u1d1d\u1d22\u1d49\u1d55lar;\u4024f;\uc000\ud835\udd55\u0280;emps\u030b\u1d2d\u1d37\u1d3d\u1d42q\u0100;d\u0352\u1d33ot;\u6251inus;\u6238lus;\u6214quare;\u62a1blebarwedg\xe5\xfan\u0180adh\u112e\u1d5d\u1d67ownarrow\xf3\u1c83arpoon\u0100lr\u1d72\u1d76ef\xf4\u1cb4igh\xf4\u1cb6\u0162\u1d7f\u1d85karo\xf7\u0f42\u026f\u1d8a\0\0\u1d8ern;\u631fop;\u630c\u0180cot\u1d98\u1da3\u1da6\u0100ry\u1d9d\u1da1;\uc000\ud835\udcb9;\u4455l;\u69f6rok;\u4111\u0100dr\u1db0\u1db4ot;\u62f1i\u0100;f\u1dba\u1816\u65bf\u0100ah\u1dc0\u1dc3r\xf2\u0429a\xf2\u0fa6angle;\u69a6\u0100ci\u1dd2\u1dd5y;\u445fgrarr;\u67ff\u0900Dacdefglmnopqrstux\u1e01\u1e09\u1e19\u1e38\u0578\u1e3c\u1e49\u1e61\u1e7e\u1ea5\u1eaf\u1ebd\u1ee1\u1f2a\u1f37\u1f44\u1f4e\u1f5a\u0100Do\u1e06\u1d34o\xf4\u1c89\u0100cs\u1e0e\u1e14ute\u803b\xe9\u40e9ter;\u6a6e\u0200aioy\u1e22\u1e27\u1e31\u1e36ron;\u411br\u0100;c\u1e2d\u1e2e\u6256\u803b\xea\u40ealon;\u6255;\u444dot;\u4117\u0100Dr\u1e41\u1e45ot;\u6252;\uc000\ud835\udd22\u0180;rs\u1e50\u1e51\u1e57\u6a9aave\u803b\xe8\u40e8\u0100;d\u1e5c\u1e5d\u6a96ot;\u6a98\u0200;ils\u1e6a\u1e6b\u1e72\u1e74\u6a99nters;\u63e7;\u6113\u0100;d\u1e79\u1e7a\u6a95ot;\u6a97\u0180aps\u1e85\u1e89\u1e97cr;\u4113ty\u0180;sv\u1e92\u1e93\u1e95\u6205et\xbb\u1e93p\u01001;\u1e9d\u1ea4\u0133\u1ea1\u1ea3;\u6004;\u6005\u6003\u0100gs\u1eaa\u1eac;\u414bp;\u6002\u0100gp\u1eb4\u1eb8on;\u4119f;\uc000\ud835\udd56\u0180als\u1ec4\u1ece\u1ed2r\u0100;s\u1eca\u1ecb\u62d5l;\u69e3us;\u6a71i\u0180;lv\u1eda\u1edb\u1edf\u43b5on\xbb\u1edb;\u43f5\u0200csuv\u1eea\u1ef3\u1f0b\u1f23\u0100io\u1eef\u1e31rc\xbb\u1e2e\u0269\u1ef9\0\0\u1efb\xed\u0548ant\u0100gl\u1f02\u1f06tr\xbb\u1e5dess\xbb\u1e7a\u0180aei\u1f12\u1f16\u1f1als;\u403dst;\u625fv\u0100;D\u0235\u1f20D;\u6a78parsl;\u69e5\u0100Da\u1f2f\u1f33ot;\u6253rr;\u6971\u0180cdi\u1f3e\u1f41\u1ef8r;\u612fo\xf4\u0352\u0100ah\u1f49\u1f4b;\u43b7\u803b\xf0\u40f0\u0100mr\u1f53\u1f57l\u803b\xeb\u40ebo;\u60ac\u0180cip\u1f61\u1f64\u1f67l;\u4021s\xf4\u056e\u0100eo\u1f6c\u1f74ctatio\xee\u0559nential\xe5\u0579\u09e1\u1f92\0\u1f9e\0\u1fa1\u1fa7\0\0\u1fc6\u1fcc\0\u1fd3\0\u1fe6\u1fea\u2000\0\u2008\u205allingdotse\xf1\u1e44y;\u4444male;\u6640\u0180ilr\u1fad\u1fb3\u1fc1lig;\u8000\ufb03\u0269\u1fb9\0\0\u1fbdg;\u8000\ufb00ig;\u8000\ufb04;\uc000\ud835\udd23lig;\u8000\ufb01lig;\uc000fj\u0180alt\u1fd9\u1fdc\u1fe1t;\u666dig;\u8000\ufb02ns;\u65b1of;\u4192\u01f0\u1fee\0\u1ff3f;\uc000\ud835\udd57\u0100ak\u05bf\u1ff7\u0100;v\u1ffc\u1ffd\u62d4;\u6ad9artint;\u6a0d\u0100ao\u200c\u2055\u0100cs\u2011\u2052\u03b1\u201a\u2030\u2038\u2045\u2048\0\u2050\u03b2\u2022\u2025\u2027\u202a\u202c\0\u202e\u803b\xbd\u40bd;\u6153\u803b\xbc\u40bc;\u6155;\u6159;\u615b\u01b3\u2034\0\u2036;\u6154;\u6156\u02b4\u203e\u2041\0\0\u2043\u803b\xbe\u40be;\u6157;\u615c5;\u6158\u01b6\u204c\0\u204e;\u615a;\u615d8;\u615el;\u6044wn;\u6322cr;\uc000\ud835\udcbb\u0880Eabcdefgijlnorstv\u2082\u2089\u209f\u20a5\u20b0\u20b4\u20f0\u20f5\u20fa\u20ff\u2103\u2112\u2138\u0317\u213e\u2152\u219e\u0100;l\u064d\u2087;\u6a8c\u0180cmp\u2090\u2095\u209dute;\u41f5ma\u0100;d\u209c\u1cda\u43b3;\u6a86reve;\u411f\u0100iy\u20aa\u20aerc;\u411d;\u4433ot;\u4121\u0200;lqs\u063e\u0642\u20bd\u20c9\u0180;qs\u063e\u064c\u20c4lan\xf4\u0665\u0200;cdl\u0665\u20d2\u20d5\u20e5c;\u6aa9ot\u0100;o\u20dc\u20dd\u6a80\u0100;l\u20e2\u20e3\u6a82;\u6a84\u0100;e\u20ea\u20ed\uc000\u22db\ufe00s;\u6a94r;\uc000\ud835\udd24\u0100;g\u0673\u061bmel;\u6137cy;\u4453\u0200;Eaj\u065a\u210c\u210e\u2110;\u6a92;\u6aa5;\u6aa4\u0200Eaes\u211b\u211d\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6a8arox\xbb\u2124\u0100;q\u212e\u212f\u6a88\u0100;q\u212e\u211bim;\u62e7pf;\uc000\ud835\udd58\u0100ci\u2143\u2146r;\u610am\u0180;el\u066b\u214e\u2150;\u6a8e;\u6a90\u8300>;cdlqr\u05ee\u2160\u216a\u216e\u2173\u2179\u0100ci\u2165\u2167;\u6aa7r;\u6a7aot;\u62d7Par;\u6995uest;\u6a7c\u0280adels\u2184\u216a\u2190\u0656\u219b\u01f0\u2189\0\u218epro\xf8\u209er;\u6978q\u0100lq\u063f\u2196les\xf3\u2088i\xed\u066b\u0100en\u21a3\u21adrtneqq;\uc000\u2269\ufe00\xc5\u21aa\u0500Aabcefkosy\u21c4\u21c7\u21f1\u21f5\u21fa\u2218\u221d\u222f\u2268\u227dr\xf2\u03a0\u0200ilmr\u21d0\u21d4\u21d7\u21dbrs\xf0\u1484f\xbb\u2024il\xf4\u06a9\u0100dr\u21e0\u21e4cy;\u444a\u0180;cw\u08f4\u21eb\u21efir;\u6948;\u61adar;\u610firc;\u4125\u0180alr\u2201\u220e\u2213rts\u0100;u\u2209\u220a\u6665it\xbb\u220alip;\u6026con;\u62b9r;\uc000\ud835\udd25s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223a\u223e\u2243\u225e\u2263rr;\u61fftht;\u623bk\u0100lr\u2249\u2253eftarrow;\u61a9ightarrow;\u61aaf;\uc000\ud835\udd59bar;\u6015\u0180clt\u226f\u2274\u2278r;\uc000\ud835\udcbdas\xe8\u21f4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xbb\u1c5b\u0ae1\u22a3\0\u22aa\0\u22b8\u22c5\u22ce\0\u22d5\u22f3\0\0\u22f8\u2322\u2367\u2362\u237f\0\u2386\u23aa\u23b4cute\u803b\xed\u40ed\u0180;iy\u0771\u22b0\u22b5rc\u803b\xee\u40ee;\u4438\u0100cx\u22bc\u22bfy;\u4435cl\u803b\xa1\u40a1\u0100fr\u039f\u22c9;\uc000\ud835\udd26rave\u803b\xec\u40ec\u0200;ino\u073e\u22dd\u22e9\u22ee\u0100in\u22e2\u22e6nt;\u6a0ct;\u622dfin;\u69dcta;\u6129lig;\u4133\u0180aop\u22fe\u231a\u231d\u0180cgt\u2305\u2308\u2317r;\u412b\u0180elp\u071f\u230f\u2313in\xe5\u078ear\xf4\u0720h;\u4131f;\u62b7ed;\u41b5\u0280;cfot\u04f4\u232c\u2331\u233d\u2341are;\u6105in\u0100;t\u2338\u2339\u621eie;\u69dddo\xf4\u2319\u0280;celp\u0757\u234c\u2350\u235b\u2361al;\u62ba\u0100gr\u2355\u2359er\xf3\u1563\xe3\u234darhk;\u6a17rod;\u6a3c\u0200cgpt\u236f\u2372\u2376\u237by;\u4451on;\u412ff;\uc000\ud835\udd5aa;\u43b9uest\u803b\xbf\u40bf\u0100ci\u238a\u238fr;\uc000\ud835\udcben\u0280;Edsv\u04f4\u239b\u239d\u23a1\u04f3;\u62f9ot;\u62f5\u0100;v\u23a6\u23a7\u62f4;\u62f3\u0100;i\u0777\u23aelde;\u4129\u01eb\u23b8\0\u23bccy;\u4456l\u803b\xef\u40ef\u0300cfmosu\u23cc\u23d7\u23dc\u23e1\u23e7\u23f5\u0100iy\u23d1\u23d5rc;\u4135;\u4439r;\uc000\ud835\udd27ath;\u4237pf;\uc000\ud835\udd5b\u01e3\u23ec\0\u23f1r;\uc000\ud835\udcbfrcy;\u4458kcy;\u4454\u0400acfghjos\u240b\u2416\u2422\u2427\u242d\u2431\u2435\u243bppa\u0100;v\u2413\u2414\u43ba;\u43f0\u0100ey\u241b\u2420dil;\u4137;\u443ar;\uc000\ud835\udd28reen;\u4138cy;\u4445cy;\u445cpf;\uc000\ud835\udd5ccr;\uc000\ud835\udcc0\u0b80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248d\u2491\u250e\u253d\u255a\u2580\u264e\u265e\u2665\u2679\u267d\u269a\u26b2\u26d8\u275d\u2768\u278b\u27c0\u2801\u2812\u0180art\u2477\u247a\u247cr\xf2\u09c6\xf2\u0395ail;\u691barr;\u690e\u0100;g\u0994\u248b;\u6a8bar;\u6962\u0963\u24a5\0\u24aa\0\u24b1\0\0\0\0\0\u24b5\u24ba\0\u24c6\u24c8\u24cd\0\u24f9ute;\u413amptyv;\u69b4ra\xee\u084cbda;\u43bbg\u0180;dl\u088e\u24c1\u24c3;\u6991\xe5\u088e;\u6a85uo\u803b\xab\u40abr\u0400;bfhlpst\u0899\u24de\u24e6\u24e9\u24eb\u24ee\u24f1\u24f5\u0100;f\u089d\u24e3s;\u691fs;\u691d\xeb\u2252p;\u61abl;\u6939im;\u6973l;\u61a2\u0180;ae\u24ff\u2500\u2504\u6aabil;\u6919\u0100;s\u2509\u250a\u6aad;\uc000\u2aad\ufe00\u0180abr\u2515\u2519\u251drr;\u690crk;\u6772\u0100ak\u2522\u252cc\u0100ek\u2528\u252a;\u407b;\u405b\u0100es\u2531\u2533;\u698bl\u0100du\u2539\u253b;\u698f;\u698d\u0200aeuy\u2546\u254b\u2556\u2558ron;\u413e\u0100di\u2550\u2554il;\u413c\xec\u08b0\xe2\u2529;\u443b\u0200cqrs\u2563\u2566\u256d\u257da;\u6936uo\u0100;r\u0e19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694bh;\u61b2\u0280;fgqs\u258b\u258c\u0989\u25f3\u25ff\u6264t\u0280ahlrt\u2598\u25a4\u25b7\u25c2\u25e8rrow\u0100;t\u0899\u25a1a\xe9\u24f6arpoon\u0100du\u25af\u25b4own\xbb\u045ap\xbb\u0966eftarrows;\u61c7ight\u0180ahs\u25cd\u25d6\u25derrow\u0100;s\u08f4\u08a7arpoon\xf3\u0f98quigarro\xf7\u21f0hreetimes;\u62cb\u0180;qs\u258b\u0993\u25falan\xf4\u09ac\u0280;cdgs\u09ac\u260a\u260d\u261d\u2628c;\u6aa8ot\u0100;o\u2614\u2615\u6a7f\u0100;r\u261a\u261b\u6a81;\u6a83\u0100;e\u2622\u2625\uc000\u22da\ufe00s;\u6a93\u0280adegs\u2633\u2639\u263d\u2649\u264bppro\xf8\u24c6ot;\u62d6q\u0100gq\u2643\u2645\xf4\u0989gt\xf2\u248c\xf4\u099bi\xed\u09b2\u0180ilr\u2655\u08e1\u265asht;\u697c;\uc000\ud835\udd29\u0100;E\u099c\u2663;\u6a91\u0161\u2669\u2676r\u0100du\u25b2\u266e\u0100;l\u0965\u2673;\u696alk;\u6584cy;\u4459\u0280;acht\u0a48\u2688\u268b\u2691\u2696r\xf2\u25c1orne\xf2\u1d08ard;\u696bri;\u65fa\u0100io\u269f\u26a4dot;\u4140ust\u0100;a\u26ac\u26ad\u63b0che\xbb\u26ad\u0200Eaes\u26bb\u26bd\u26c9\u26d4;\u6268p\u0100;p\u26c3\u26c4\u6a89rox\xbb\u26c4\u0100;q\u26ce\u26cf\u6a87\u0100;q\u26ce\u26bbim;\u62e6\u0400abnoptwz\u26e9\u26f4\u26f7\u271a\u272f\u2741\u2747\u2750\u0100nr\u26ee\u26f1g;\u67ecr;\u61fdr\xeb\u08c1g\u0180lmr\u26ff\u270d\u2714eft\u0100ar\u09e6\u2707ight\xe1\u09f2apsto;\u67fcight\xe1\u09fdparrow\u0100lr\u2725\u2729ef\xf4\u24edight;\u61ac\u0180afl\u2736\u2739\u273dr;\u6985;\uc000\ud835\udd5dus;\u6a2dimes;\u6a34\u0161\u274b\u274fst;\u6217\xe1\u134e\u0180;ef\u2757\u2758\u1800\u65cange\xbb\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277c\u2785\u2787r\xf2\u08a8orne\xf2\u1d8car\u0100;d\u0f98\u2783;\u696d;\u600eri;\u62bf\u0300achiqt\u2798\u279d\u0a40\u27a2\u27ae\u27bbquo;\u6039r;\uc000\ud835\udcc1m\u0180;eg\u09b2\u27aa\u27ac;\u6a8d;\u6a8f\u0100bu\u252a\u27b3o\u0100;r\u0e1f\u27b9;\u601arok;\u4142\u8400<;cdhilqr\u082b\u27d2\u2639\u27dc\u27e0\u27e5\u27ea\u27f0\u0100ci\u27d7\u27d9;\u6aa6r;\u6a79re\xe5\u25f2mes;\u62c9arr;\u6976uest;\u6a7b\u0100Pi\u27f5\u27f9ar;\u6996\u0180;ef\u2800\u092d\u181b\u65c3r\u0100du\u2807\u280dshar;\u694ahar;\u6966\u0100en\u2817\u2821rtneqq;\uc000\u2268\ufe00\xc5\u281e\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288e\u2893\u28a0\u28a5\u28a8\u28da\u28e2\u28e4\u0a83\u28f3\u2902Dot;\u623a\u0200clpr\u284e\u2852\u2863\u287dr\u803b\xaf\u40af\u0100et\u2857\u2859;\u6642\u0100;e\u285e\u285f\u6720se\xbb\u285f\u0100;s\u103b\u2868to\u0200;dlu\u103b\u2873\u2877\u287bow\xee\u048cef\xf4\u090f\xf0\u13d1ker;\u65ae\u0100oy\u2887\u288cmma;\u6a29;\u443cash;\u6014asuredangle\xbb\u1626r;\uc000\ud835\udd2ao;\u6127\u0180cdn\u28af\u28b4\u28c9ro\u803b\xb5\u40b5\u0200;acd\u1464\u28bd\u28c0\u28c4s\xf4\u16a7ir;\u6af0ot\u80bb\xb7\u01b5us\u0180;bd\u28d2\u1903\u28d3\u6212\u0100;u\u1d3c\u28d8;\u6a2a\u0163\u28de\u28e1p;\u6adb\xf2\u2212\xf0\u0a81\u0100dp\u28e9\u28eeels;\u62a7f;\uc000\ud835\udd5e\u0100ct\u28f8\u28fdr;\uc000\ud835\udcc2pos\xbb\u159d\u0180;lm\u2909\u290a\u290d\u43bctimap;\u62b8\u0c00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297e\u2989\u2998\u29da\u29e9\u2a15\u2a1a\u2a58\u2a5d\u2a83\u2a95\u2aa4\u2aa8\u2b04\u2b07\u2b44\u2b7f\u2bae\u2c34\u2c67\u2c7c\u2ce9\u0100gt\u2947\u294b;\uc000\u22d9\u0338\u0100;v\u2950\u0bcf\uc000\u226b\u20d2\u0180elt\u295a\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61cdightarrow;\u61ce;\uc000\u22d8\u0338\u0100;v\u297b\u0c47\uc000\u226a\u20d2ightarrow;\u61cf\u0100Dd\u298e\u2993ash;\u62afash;\u62ae\u0280bcnpt\u29a3\u29a7\u29ac\u29b1\u29ccla\xbb\u02deute;\u4144g;\uc000\u2220\u20d2\u0280;Eiop\u0d84\u29bc\u29c0\u29c5\u29c8;\uc000\u2a70\u0338d;\uc000\u224b\u0338s;\u4149ro\xf8\u0d84ur\u0100;a\u29d3\u29d4\u666el\u0100;s\u29d3\u0b38\u01f3\u29df\0\u29e3p\u80bb\xa0\u0b37mp\u0100;e\u0bf9\u0c00\u0280aeouy\u29f4\u29fe\u2a03\u2a10\u2a13\u01f0\u29f9\0\u29fb;\u6a43on;\u4148dil;\u4146ng\u0100;d\u0d7e\u2a0aot;\uc000\u2a6d\u0338p;\u6a42;\u443dash;\u6013\u0380;Aadqsx\u0b92\u2a29\u2a2d\u2a3b\u2a41\u2a45\u2a50rr;\u61d7r\u0100hr\u2a33\u2a36k;\u6924\u0100;o\u13f2\u13f0ot;\uc000\u2250\u0338ui\xf6\u0b63\u0100ei\u2a4a\u2a4ear;\u6928\xed\u0b98ist\u0100;s\u0ba0\u0b9fr;\uc000\ud835\udd2b\u0200Eest\u0bc5\u2a66\u2a79\u2a7c\u0180;qs\u0bbc\u2a6d\u0be1\u0180;qs\u0bbc\u0bc5\u2a74lan\xf4\u0be2i\xed\u0bea\u0100;r\u0bb6\u2a81\xbb\u0bb7\u0180Aap\u2a8a\u2a8d\u2a91r\xf2\u2971rr;\u61aear;\u6af2\u0180;sv\u0f8d\u2a9c\u0f8c\u0100;d\u2aa1\u2aa2\u62fc;\u62facy;\u445a\u0380AEadest\u2ab7\u2aba\u2abe\u2ac2\u2ac5\u2af6\u2af9r\xf2\u2966;\uc000\u2266\u0338rr;\u619ar;\u6025\u0200;fqs\u0c3b\u2ace\u2ae3\u2aeft\u0100ar\u2ad4\u2ad9rro\xf7\u2ac1ightarro\xf7\u2a90\u0180;qs\u0c3b\u2aba\u2aealan\xf4\u0c55\u0100;s\u0c55\u2af4\xbb\u0c36i\xed\u0c5d\u0100;r\u0c35\u2afei\u0100;e\u0c1a\u0c25i\xe4\u0d90\u0100pt\u2b0c\u2b11f;\uc000\ud835\udd5f\u8180\xac;in\u2b19\u2b1a\u2b36\u40acn\u0200;Edv\u0b89\u2b24\u2b28\u2b2e;\uc000\u22f9\u0338ot;\uc000\u22f5\u0338\u01e1\u0b89\u2b33\u2b35;\u62f7;\u62f6i\u0100;v\u0cb8\u2b3c\u01e1\u0cb8\u2b41\u2b43;\u62fe;\u62fd\u0180aor\u2b4b\u2b63\u2b69r\u0200;ast\u0b7b\u2b55\u2b5a\u2b5flle\xec\u0b7bl;\uc000\u2afd\u20e5;\uc000\u2202\u0338lint;\u6a14\u0180;ce\u0c92\u2b70\u2b73u\xe5\u0ca5\u0100;c\u0c98\u2b78\u0100;e\u0c92\u2b7d\xf1\u0c98\u0200Aait\u2b88\u2b8b\u2b9d\u2ba7r\xf2\u2988rr\u0180;cw\u2b94\u2b95\u2b99\u619b;\uc000\u2933\u0338;\uc000\u219d\u0338ghtarrow\xbb\u2b95ri\u0100;e\u0ccb\u0cd6\u0380chimpqu\u2bbd\u2bcd\u2bd9\u2b04\u0b78\u2be4\u2bef\u0200;cer\u0d32\u2bc6\u0d37\u2bc9u\xe5\u0d45;\uc000\ud835\udcc3ort\u026d\u2b05\0\0\u2bd6ar\xe1\u2b56m\u0100;e\u0d6e\u2bdf\u0100;q\u0d74\u0d73su\u0100bp\u2beb\u2bed\xe5\u0cf8\xe5\u0d0b\u0180bcp\u2bf6\u2c11\u2c19\u0200;Ees\u2bff\u2c00\u0d22\u2c04\u6284;\uc000\u2ac5\u0338et\u0100;e\u0d1b\u2c0bq\u0100;q\u0d23\u2c00c\u0100;e\u0d32\u2c17\xf1\u0d38\u0200;Ees\u2c22\u2c23\u0d5f\u2c27\u6285;\uc000\u2ac6\u0338et\u0100;e\u0d58\u2c2eq\u0100;q\u0d60\u2c23\u0200gilr\u2c3d\u2c3f\u2c45\u2c47\xec\u0bd7lde\u803b\xf1\u40f1\xe7\u0c43iangle\u0100lr\u2c52\u2c5ceft\u0100;e\u0c1a\u2c5a\xf1\u0c26ight\u0100;e\u0ccb\u2c65\xf1\u0cd7\u0100;m\u2c6c\u2c6d\u43bd\u0180;es\u2c74\u2c75\u2c79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2c8f\u2c94\u2c99\u2c9e\u2ca3\u2cb0\u2cb6\u2cd3\u2ce3ash;\u62adarr;\u6904p;\uc000\u224d\u20d2ash;\u62ac\u0100et\u2ca8\u2cac;\uc000\u2265\u20d2;\uc000>\u20d2nfin;\u69de\u0180Aet\u2cbd\u2cc1\u2cc5rr;\u6902;\uc000\u2264\u20d2\u0100;r\u2cca\u2ccd\uc000<\u20d2ie;\uc000\u22b4\u20d2\u0100At\u2cd8\u2cdcrr;\u6903rie;\uc000\u22b5\u20d2im;\uc000\u223c\u20d2\u0180Aan\u2cf0\u2cf4\u2d02rr;\u61d6r\u0100hr\u2cfa\u2cfdk;\u6923\u0100;o\u13e7\u13e5ear;\u6927\u1253\u1a95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2d2d\0\u2d38\u2d48\u2d60\u2d65\u2d72\u2d84\u1b07\0\0\u2d8d\u2dab\0\u2dc8\u2dce\0\u2ddc\u2e19\u2e2b\u2e3e\u2e43\u0100cs\u2d31\u1a97ute\u803b\xf3\u40f3\u0100iy\u2d3c\u2d45r\u0100;c\u1a9e\u2d42\u803b\xf4\u40f4;\u443e\u0280abios\u1aa0\u2d52\u2d57\u01c8\u2d5alac;\u4151v;\u6a38old;\u69bclig;\u4153\u0100cr\u2d69\u2d6dir;\u69bf;\uc000\ud835\udd2c\u036f\u2d79\0\0\u2d7c\0\u2d82n;\u42dbave\u803b\xf2\u40f2;\u69c1\u0100bm\u2d88\u0df4ar;\u69b5\u0200acit\u2d95\u2d98\u2da5\u2da8r\xf2\u1a80\u0100ir\u2d9d\u2da0r;\u69beoss;\u69bbn\xe5\u0e52;\u69c0\u0180aei\u2db1\u2db5\u2db9cr;\u414dga;\u43c9\u0180cdn\u2dc0\u2dc5\u01cdron;\u43bf;\u69b6pf;\uc000\ud835\udd60\u0180ael\u2dd4\u2dd7\u01d2r;\u69b7rp;\u69b9\u0380;adiosv\u2dea\u2deb\u2dee\u2e08\u2e0d\u2e10\u2e16\u6228r\xf2\u1a86\u0200;efm\u2df7\u2df8\u2e02\u2e05\u6a5dr\u0100;o\u2dfe\u2dff\u6134f\xbb\u2dff\u803b\xaa\u40aa\u803b\xba\u40bagof;\u62b6r;\u6a56lope;\u6a57;\u6a5b\u0180clo\u2e1f\u2e21\u2e27\xf2\u2e01ash\u803b\xf8\u40f8l;\u6298i\u016c\u2e2f\u2e34de\u803b\xf5\u40f5es\u0100;a\u01db\u2e3as;\u6a36ml\u803b\xf6\u40f6bar;\u633d\u0ae1\u2e5e\0\u2e7d\0\u2e80\u2e9d\0\u2ea2\u2eb9\0\0\u2ecb\u0e9c\0\u2f13\0\0\u2f2b\u2fbc\0\u2fc8r\u0200;ast\u0403\u2e67\u2e72\u0e85\u8100\xb6;l\u2e6d\u2e6e\u40b6le\xec\u0403\u0269\u2e78\0\0\u2e7bm;\u6af3;\u6afdy;\u443fr\u0280cimpt\u2e8b\u2e8f\u2e93\u1865\u2e97nt;\u4025od;\u402eil;\u6030enk;\u6031r;\uc000\ud835\udd2d\u0180imo\u2ea8\u2eb0\u2eb4\u0100;v\u2ead\u2eae\u43c6;\u43d5ma\xf4\u0a76ne;\u660e\u0180;tv\u2ebf\u2ec0\u2ec8\u43c0chfork\xbb\u1ffd;\u43d6\u0100au\u2ecf\u2edfn\u0100ck\u2ed5\u2eddk\u0100;h\u21f4\u2edb;\u610e\xf6\u21f4s\u0480;abcdemst\u2ef3\u2ef4\u1908\u2ef9\u2efd\u2f04\u2f06\u2f0a\u2f0e\u402bcir;\u6a23ir;\u6a22\u0100ou\u1d40\u2f02;\u6a25;\u6a72n\u80bb\xb1\u0e9dim;\u6a26wo;\u6a27\u0180ipu\u2f19\u2f20\u2f25ntint;\u6a15f;\uc000\ud835\udd61nd\u803b\xa3\u40a3\u0500;Eaceinosu\u0ec8\u2f3f\u2f41\u2f44\u2f47\u2f81\u2f89\u2f92\u2f7e\u2fb6;\u6ab3p;\u6ab7u\xe5\u0ed9\u0100;c\u0ece\u2f4c\u0300;acens\u0ec8\u2f59\u2f5f\u2f66\u2f68\u2f7eppro\xf8\u2f43urlye\xf1\u0ed9\xf1\u0ece\u0180aes\u2f6f\u2f76\u2f7approx;\u6ab9qq;\u6ab5im;\u62e8i\xed\u0edfme\u0100;s\u2f88\u0eae\u6032\u0180Eas\u2f78\u2f90\u2f7a\xf0\u2f75\u0180dfp\u0eec\u2f99\u2faf\u0180als\u2fa0\u2fa5\u2faalar;\u632eine;\u6312urf;\u6313\u0100;t\u0efb\u2fb4\xef\u0efbrel;\u62b0\u0100ci\u2fc0\u2fc5r;\uc000\ud835\udcc5;\u43c8ncsp;\u6008\u0300fiopsu\u2fda\u22e2\u2fdf\u2fe5\u2feb\u2ff1r;\uc000\ud835\udd2epf;\uc000\ud835\udd62rime;\u6057cr;\uc000\ud835\udcc6\u0180aeo\u2ff8\u3009\u3013t\u0100ei\u2ffe\u3005rnion\xf3\u06b0nt;\u6a16st\u0100;e\u3010\u3011\u403f\xf1\u1f19\xf4\u0f14\u0a80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30e0\u310e\u312b\u3147\u3162\u3172\u318e\u3206\u3215\u3224\u3229\u3258\u326e\u3272\u3290\u32b0\u32b7\u0180art\u3047\u304a\u304cr\xf2\u10b3\xf2\u03ddail;\u691car\xf2\u1c65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307f\u308f\u3094\u30cc\u0100eu\u306d\u3071;\uc000\u223d\u0331te;\u4155i\xe3\u116emptyv;\u69b3g\u0200;del\u0fd1\u3089\u308b\u308d;\u6992;\u69a5\xe5\u0fd1uo\u803b\xbb\u40bbr\u0580;abcfhlpstw\u0fdc\u30ac\u30af\u30b7\u30b9\u30bc\u30be\u30c0\u30c3\u30c7\u30cap;\u6975\u0100;f\u0fe0\u30b4s;\u6920;\u6933s;\u691e\xeb\u225d\xf0\u272el;\u6945im;\u6974l;\u61a3;\u619d\u0100ai\u30d1\u30d5il;\u691ao\u0100;n\u30db\u30dc\u6236al\xf3\u0f1e\u0180abr\u30e7\u30ea\u30eer\xf2\u17e5rk;\u6773\u0100ak\u30f3\u30fdc\u0100ek\u30f9\u30fb;\u407d;\u405d\u0100es\u3102\u3104;\u698cl\u0100du\u310a\u310c;\u698e;\u6990\u0200aeuy\u3117\u311c\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xec\u0ff2\xe2\u30fa;\u4440\u0200clqs\u3134\u3137\u313d\u3144a;\u6937dhar;\u6969uo\u0100;r\u020e\u020dh;\u61b3\u0180acg\u314e\u315f\u0f44l\u0200;ips\u0f78\u3158\u315b\u109cn\xe5\u10bbar\xf4\u0fa9t;\u65ad\u0180ilr\u3169\u1023\u316esht;\u697d;\uc000\ud835\udd2f\u0100ao\u3177\u3186r\u0100du\u317d\u317f\xbb\u047b\u0100;l\u1091\u3184;\u696c\u0100;v\u318b\u318c\u43c1;\u43f1\u0180gns\u3195\u31f9\u31fcht\u0300ahlrst\u31a4\u31b0\u31c2\u31d8\u31e4\u31eerrow\u0100;t\u0fdc\u31ada\xe9\u30c8arpoon\u0100du\u31bb\u31bfow\xee\u317ep\xbb\u1092eft\u0100ah\u31ca\u31d0rrow\xf3\u0feaarpoon\xf3\u0551ightarrows;\u61c9quigarro\xf7\u30cbhreetimes;\u62ccg;\u42daingdotse\xf1\u1f32\u0180ahm\u320d\u3210\u3213r\xf2\u0feaa\xf2\u0551;\u600foust\u0100;a\u321e\u321f\u63b1che\xbb\u321fmid;\u6aee\u0200abpt\u3232\u323d\u3240\u3252\u0100nr\u3237\u323ag;\u67edr;\u61fer\xeb\u1003\u0180afl\u3247\u324a\u324er;\u6986;\uc000\ud835\udd63us;\u6a2eimes;\u6a35\u0100ap\u325d\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6a12ar\xf2\u31e3\u0200achq\u327b\u3280\u10bc\u3285quo;\u603ar;\uc000\ud835\udcc7\u0100bu\u30fb\u328ao\u0100;r\u0214\u0213\u0180hir\u3297\u329b\u32a0re\xe5\u31f8mes;\u62cai\u0200;efl\u32aa\u1059\u1821\u32ab\u65b9tri;\u69celuhar;\u6968;\u611e\u0d61\u32d5\u32db\u32df\u332c\u3338\u3371\0\u337a\u33a4\0\0\u33ec\u33f0\0\u3428\u3448\u345a\u34ad\u34b1\u34ca\u34f1\0\u3616\0\0\u3633cute;\u415bqu\xef\u27ba\u0500;Eaceinpsy\u11ed\u32f3\u32f5\u32ff\u3302\u330b\u330f\u331f\u3326\u3329;\u6ab4\u01f0\u32fa\0\u32fc;\u6ab8on;\u4161u\xe5\u11fe\u0100;d\u11f3\u3307il;\u415frc;\u415d\u0180Eas\u3316\u3318\u331b;\u6ab6p;\u6abaim;\u62e9olint;\u6a13i\xed\u1204;\u4441ot\u0180;be\u3334\u1d47\u3335\u62c5;\u6a66\u0380Aacmstx\u3346\u334a\u3357\u335b\u335e\u3363\u336drr;\u61d8r\u0100hr\u3350\u3352\xeb\u2228\u0100;o\u0a36\u0a34t\u803b\xa7\u40a7i;\u403bwar;\u6929m\u0100in\u3369\xf0nu\xf3\xf1t;\u6736r\u0100;o\u3376\u2055\uc000\ud835\udd30\u0200acoy\u3382\u3386\u3391\u33a0rp;\u666f\u0100hy\u338b\u338fcy;\u4449;\u4448rt\u026d\u3399\0\0\u339ci\xe4\u1464ara\xec\u2e6f\u803b\xad\u40ad\u0100gm\u33a8\u33b4ma\u0180;fv\u33b1\u33b2\u33b2\u43c3;\u43c2\u0400;deglnpr\u12ab\u33c5\u33c9\u33ce\u33d6\u33de\u33e1\u33e6ot;\u6a6a\u0100;q\u12b1\u12b0\u0100;E\u33d3\u33d4\u6a9e;\u6aa0\u0100;E\u33db\u33dc\u6a9d;\u6a9fe;\u6246lus;\u6a24arr;\u6972ar\xf2\u113d\u0200aeit\u33f8\u3408\u340f\u3417\u0100ls\u33fd\u3404lsetm\xe9\u336ahp;\u6a33parsl;\u69e4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341c\u341d\u6aaa\u0100;s\u3422\u3423\u6aac;\uc000\u2aac\ufe00\u0180flp\u342e\u3433\u3442tcy;\u444c\u0100;b\u3438\u3439\u402f\u0100;a\u343e\u343f\u69c4r;\u633ff;\uc000\ud835\udd64a\u0100dr\u344d\u0402es\u0100;u\u3454\u3455\u6660it\xbb\u3455\u0180csu\u3460\u3479\u349f\u0100au\u3465\u346fp\u0100;s\u1188\u346b;\uc000\u2293\ufe00p\u0100;s\u11b4\u3475;\uc000\u2294\ufe00u\u0100bp\u347f\u348f\u0180;es\u1197\u119c\u3486et\u0100;e\u1197\u348d\xf1\u119d\u0180;es\u11a8\u11ad\u3496et\u0100;e\u11a8\u349d\xf1\u11ae\u0180;af\u117b\u34a6\u05b0r\u0165\u34ab\u05b1\xbb\u117car\xf2\u1148\u0200cemt\u34b9\u34be\u34c2\u34c5r;\uc000\ud835\udcc8tm\xee\xf1i\xec\u3415ar\xe6\u11be\u0100ar\u34ce\u34d5r\u0100;f\u34d4\u17bf\u6606\u0100an\u34da\u34edight\u0100ep\u34e3\u34eapsilo\xee\u1ee0h\xe9\u2eafs\xbb\u2852\u0280bcmnp\u34fb\u355e\u1209\u358b\u358e\u0480;Edemnprs\u350e\u350f\u3511\u3515\u351e\u3523\u352c\u3531\u3536\u6282;\u6ac5ot;\u6abd\u0100;d\u11da\u351aot;\u6ac3ult;\u6ac1\u0100Ee\u3528\u352a;\u6acb;\u628alus;\u6abfarr;\u6979\u0180eiu\u353d\u3552\u3555t\u0180;en\u350e\u3545\u354bq\u0100;q\u11da\u350feq\u0100;q\u352b\u3528m;\u6ac7\u0100bp\u355a\u355c;\u6ad5;\u6ad3c\u0300;acens\u11ed\u356c\u3572\u3579\u357b\u3326ppro\xf8\u32faurlye\xf1\u11fe\xf1\u11f3\u0180aes\u3582\u3588\u331bppro\xf8\u331aq\xf1\u3317g;\u666a\u0680123;Edehlmnps\u35a9\u35ac\u35af\u121c\u35b2\u35b4\u35c0\u35c9\u35d5\u35da\u35df\u35e8\u35ed\u803b\xb9\u40b9\u803b\xb2\u40b2\u803b\xb3\u40b3;\u6ac6\u0100os\u35b9\u35bct;\u6abeub;\u6ad8\u0100;d\u1222\u35c5ot;\u6ac4s\u0100ou\u35cf\u35d2l;\u67c9b;\u6ad7arr;\u697bult;\u6ac2\u0100Ee\u35e4\u35e6;\u6acc;\u628blus;\u6ac0\u0180eiu\u35f4\u3609\u360ct\u0180;en\u121c\u35fc\u3602q\u0100;q\u1222\u35b2eq\u0100;q\u35e7\u35e4m;\u6ac8\u0100bp\u3611\u3613;\u6ad4;\u6ad6\u0180Aan\u361c\u3620\u362drr;\u61d9r\u0100hr\u3626\u3628\xeb\u222e\u0100;o\u0a2b\u0a29war;\u692alig\u803b\xdf\u40df\u0be1\u3651\u365d\u3660\u12ce\u3673\u3679\0\u367e\u36c2\0\0\0\0\0\u36db\u3703\0\u3709\u376c\0\0\0\u3787\u0272\u3656\0\0\u365bget;\u6316;\u43c4r\xeb\u0e5f\u0180aey\u3666\u366b\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uc000\ud835\udd31\u0200eiko\u3686\u369d\u36b5\u36bc\u01f2\u368b\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369b\u43b8ym;\u43d1\u0100cn\u36a2\u36b2k\u0100as\u36a8\u36aeppro\xf8\u12c1im\xbb\u12acs\xf0\u129e\u0100as\u36ba\u36ae\xf0\u12c1rn\u803b\xfe\u40fe\u01ec\u031f\u36c6\u22e7es\u8180\xd7;bd\u36cf\u36d0\u36d8\u40d7\u0100;a\u190f\u36d5r;\u6a31;\u6a30\u0180eps\u36e1\u36e3\u3700\xe1\u2a4d\u0200;bcf\u0486\u36ec\u36f0\u36f4ot;\u6336ir;\u6af1\u0100;o\u36f9\u36fc\uc000\ud835\udd65rk;\u6ada\xe1\u3362rime;\u6034\u0180aip\u370f\u3712\u3764d\xe5\u1248\u0380adempst\u3721\u374d\u3740\u3751\u3757\u375c\u375fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65b5own\xbb\u1dbbeft\u0100;e\u2800\u373e\xf1\u092e;\u625cight\u0100;e\u32aa\u374b\xf1\u105aot;\u65ecinus;\u6a3alus;\u6a39b;\u69cdime;\u6a3bezium;\u63e2\u0180cht\u3772\u377d\u3781\u0100ry\u3777\u377b;\uc000\ud835\udcc9;\u4446cy;\u445brok;\u4167\u0100io\u378b\u378ex\xf4\u1777head\u0100lr\u3797\u37a0eftarro\xf7\u084fightarrow\xbb\u0f5d\u0900AHabcdfghlmoprstuw\u37d0\u37d3\u37d7\u37e4\u37f0\u37fc\u380e\u381c\u3823\u3834\u3851\u385d\u386b\u38a9\u38cc\u38d2\u38ea\u38f6r\xf2\u03edar;\u6963\u0100cr\u37dc\u37e2ute\u803b\xfa\u40fa\xf2\u1150r\u01e3\u37ea\0\u37edy;\u445eve;\u416d\u0100iy\u37f5\u37farc\u803b\xfb\u40fb;\u4443\u0180abh\u3803\u3806\u380br\xf2\u13adlac;\u4171a\xf2\u13c3\u0100ir\u3813\u3818sht;\u697e;\uc000\ud835\udd32rave\u803b\xf9\u40f9\u0161\u3827\u3831r\u0100lr\u382c\u382e\xbb\u0957\xbb\u1083lk;\u6580\u0100ct\u3839\u384d\u026f\u383f\0\0\u384arn\u0100;e\u3845\u3846\u631cr\xbb\u3846op;\u630fri;\u65f8\u0100al\u3856\u385acr;\u416b\u80bb\xa8\u0349\u0100gp\u3862\u3866on;\u4173f;\uc000\ud835\udd66\u0300adhlsu\u114b\u3878\u387d\u1372\u3891\u38a0own\xe1\u13b3arpoon\u0100lr\u3888\u388cef\xf4\u382digh\xf4\u382fi\u0180;hl\u3899\u389a\u389c\u43c5\xbb\u13faon\xbb\u389aparrows;\u61c8\u0180cit\u38b0\u38c4\u38c8\u026f\u38b6\0\0\u38c1rn\u0100;e\u38bc\u38bd\u631dr\xbb\u38bdop;\u630eng;\u416fri;\u65f9cr;\uc000\ud835\udcca\u0180dir\u38d9\u38dd\u38e2ot;\u62f0lde;\u4169i\u0100;f\u3730\u38e8\xbb\u1813\u0100am\u38ef\u38f2r\xf2\u38a8l\u803b\xfc\u40fcangle;\u69a7\u0780ABDacdeflnoprsz\u391c\u391f\u3929\u392d\u39b5\u39b8\u39bd\u39df\u39e4\u39e8\u39f3\u39f9\u39fd\u3a01\u3a20r\xf2\u03f7ar\u0100;v\u3926\u3927\u6ae8;\u6ae9as\xe8\u03e1\u0100nr\u3932\u3937grt;\u699c\u0380eknprst\u34e3\u3946\u394b\u3952\u395d\u3964\u3996app\xe1\u2415othin\xe7\u1e96\u0180hir\u34eb\u2ec8\u3959op\xf4\u2fb5\u0100;h\u13b7\u3962\xef\u318d\u0100iu\u3969\u396dgm\xe1\u33b3\u0100bp\u3972\u3984setneq\u0100;q\u397d\u3980\uc000\u228a\ufe00;\uc000\u2acb\ufe00setneq\u0100;q\u398f\u3992\uc000\u228b\ufe00;\uc000\u2acc\ufe00\u0100hr\u399b\u399fet\xe1\u369ciangle\u0100lr\u39aa\u39afeft\xbb\u0925ight\xbb\u1051y;\u4432ash\xbb\u1036\u0180elr\u39c4\u39d2\u39d7\u0180;be\u2dea\u39cb\u39cfar;\u62bbq;\u625alip;\u62ee\u0100bt\u39dc\u1468a\xf2\u1469r;\uc000\ud835\udd33tr\xe9\u39aesu\u0100bp\u39ef\u39f1\xbb\u0d1c\xbb\u0d59pf;\uc000\ud835\udd67ro\xf0\u0efbtr\xe9\u39b4\u0100cu\u3a06\u3a0br;\uc000\ud835\udccb\u0100bp\u3a10\u3a18n\u0100Ee\u3980\u3a16\xbb\u397en\u0100Ee\u3992\u3a1e\xbb\u3990igzag;\u699a\u0380cefoprs\u3a36\u3a3b\u3a56\u3a5b\u3a54\u3a61\u3a6airc;\u4175\u0100di\u3a40\u3a51\u0100bg\u3a45\u3a49ar;\u6a5fe\u0100;q\u15fa\u3a4f;\u6259erp;\u6118r;\uc000\ud835\udd34pf;\uc000\ud835\udd68\u0100;e\u1479\u3a66at\xe8\u1479cr;\uc000\ud835\udccc\u0ae3\u178e\u3a87\0\u3a8b\0\u3a90\u3a9b\0\0\u3a9d\u3aa8\u3aab\u3aaf\0\0\u3ac3\u3ace\0\u3ad8\u17dc\u17dftr\xe9\u17d1r;\uc000\ud835\udd35\u0100Aa\u3a94\u3a97r\xf2\u03c3r\xf2\u09f6;\u43be\u0100Aa\u3aa1\u3aa4r\xf2\u03b8r\xf2\u09eba\xf0\u2713is;\u62fb\u0180dpt\u17a4\u3ab5\u3abe\u0100fl\u3aba\u17a9;\uc000\ud835\udd69im\xe5\u17b2\u0100Aa\u3ac7\u3acar\xf2\u03cer\xf2\u0a01\u0100cq\u3ad2\u17b8r;\uc000\ud835\udccd\u0100pt\u17d6\u3adcr\xe9\u17d4\u0400acefiosu\u3af0\u3afd\u3b08\u3b0c\u3b11\u3b15\u3b1b\u3b21c\u0100uy\u3af6\u3afbte\u803b\xfd\u40fd;\u444f\u0100iy\u3b02\u3b06rc;\u4177;\u444bn\u803b\xa5\u40a5r;\uc000\ud835\udd36cy;\u4457pf;\uc000\ud835\udd6acr;\uc000\ud835\udcce\u0100cm\u3b26\u3b29y;\u444el\u803b\xff\u40ff\u0500acdefhiosw\u3b42\u3b48\u3b54\u3b58\u3b64\u3b69\u3b6d\u3b74\u3b7a\u3b80cute;\u417a\u0100ay\u3b4d\u3b52ron;\u417e;\u4437ot;\u417c\u0100et\u3b5d\u3b61tr\xe6\u155fa;\u43b6r;\uc000\ud835\udd37cy;\u4436grarr;\u61ddpf;\uc000\ud835\udd6bcr;\uc000\ud835\udccf\u0100jn\u3b85\u3b87;\u600dj;\u600c"
|
|
114988
|
+
.split("")
|
|
114989
|
+
.map((c) => c.charCodeAt(0))));
|
|
114990
|
+
//# sourceMappingURL=decode-data-html.js.map
|
|
114991
|
+
;// ./node_modules/entities/lib/esm/generated/decode-data-xml.js
|
|
114992
|
+
// Generated using scripts/write-decode-map.ts
|
|
114993
|
+
/* harmony default export */ const decode_data_xml = (new Uint16Array(
|
|
114994
|
+
// prettier-ignore
|
|
114995
|
+
"\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022"
|
|
114996
|
+
.split("")
|
|
114997
|
+
.map((c) => c.charCodeAt(0))));
|
|
114998
|
+
//# sourceMappingURL=decode-data-xml.js.map
|
|
114999
|
+
;// ./node_modules/entities/lib/esm/decode_codepoint.js
|
|
115000
|
+
// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134
|
|
115001
|
+
var esm_decode_codepoint_a;
|
|
115002
|
+
const decode_codepoint_decodeMap = new Map([
|
|
115003
|
+
[0, 65533],
|
|
115004
|
+
// C1 Unicode control character reference replacements
|
|
115005
|
+
[128, 8364],
|
|
115006
|
+
[130, 8218],
|
|
115007
|
+
[131, 402],
|
|
115008
|
+
[132, 8222],
|
|
115009
|
+
[133, 8230],
|
|
115010
|
+
[134, 8224],
|
|
115011
|
+
[135, 8225],
|
|
115012
|
+
[136, 710],
|
|
115013
|
+
[137, 8240],
|
|
115014
|
+
[138, 352],
|
|
115015
|
+
[139, 8249],
|
|
115016
|
+
[140, 338],
|
|
115017
|
+
[142, 381],
|
|
115018
|
+
[145, 8216],
|
|
115019
|
+
[146, 8217],
|
|
115020
|
+
[147, 8220],
|
|
115021
|
+
[148, 8221],
|
|
115022
|
+
[149, 8226],
|
|
115023
|
+
[150, 8211],
|
|
115024
|
+
[151, 8212],
|
|
115025
|
+
[152, 732],
|
|
115026
|
+
[153, 8482],
|
|
115027
|
+
[154, 353],
|
|
115028
|
+
[155, 8250],
|
|
115029
|
+
[156, 339],
|
|
115030
|
+
[158, 382],
|
|
115031
|
+
[159, 376],
|
|
115032
|
+
]);
|
|
115033
|
+
/**
|
|
115034
|
+
* Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.
|
|
115035
|
+
*/
|
|
115036
|
+
const esm_decode_codepoint_fromCodePoint =
|
|
115037
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins
|
|
115038
|
+
(esm_decode_codepoint_a = String.fromCodePoint) !== null && esm_decode_codepoint_a !== void 0 ? esm_decode_codepoint_a : function (codePoint) {
|
|
115039
|
+
let output = "";
|
|
115040
|
+
if (codePoint > 0xffff) {
|
|
115041
|
+
codePoint -= 0x10000;
|
|
115042
|
+
output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);
|
|
115043
|
+
codePoint = 0xdc00 | (codePoint & 0x3ff);
|
|
115044
|
+
}
|
|
115045
|
+
output += String.fromCharCode(codePoint);
|
|
115046
|
+
return output;
|
|
115047
|
+
};
|
|
115048
|
+
/**
|
|
115049
|
+
* Replace the given code point with a replacement character if it is a
|
|
115050
|
+
* surrogate or is outside the valid range. Otherwise return the code
|
|
115051
|
+
* point unchanged.
|
|
115052
|
+
*/
|
|
115053
|
+
function decode_codepoint_replaceCodePoint(codePoint) {
|
|
115054
|
+
var _a;
|
|
115055
|
+
if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {
|
|
115056
|
+
return 0xfffd;
|
|
115057
|
+
}
|
|
115058
|
+
return (_a = decode_codepoint_decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;
|
|
115059
|
+
}
|
|
115060
|
+
/**
|
|
115061
|
+
* Replace the code point if relevant, then convert it to a string.
|
|
115062
|
+
*
|
|
115063
|
+
* @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.
|
|
115064
|
+
* @param codePoint The code point to decode.
|
|
115065
|
+
* @returns The decoded code point.
|
|
115066
|
+
*/
|
|
115067
|
+
function decode_codepoint_decodeCodePoint(codePoint) {
|
|
115068
|
+
return esm_decode_codepoint_fromCodePoint(decode_codepoint_replaceCodePoint(codePoint));
|
|
115069
|
+
}
|
|
115070
|
+
//# sourceMappingURL=decode_codepoint.js.map
|
|
115071
|
+
;// ./node_modules/entities/lib/esm/decode.js
|
|
115072
|
+
|
|
115073
|
+
|
|
115074
|
+
|
|
115075
|
+
// Re-export for use by eg. htmlparser2
|
|
115076
|
+
|
|
115077
|
+
|
|
115078
|
+
var decode_CharCodes;
|
|
115079
|
+
(function (CharCodes) {
|
|
115080
|
+
CharCodes[CharCodes["NUM"] = 35] = "NUM";
|
|
115081
|
+
CharCodes[CharCodes["SEMI"] = 59] = "SEMI";
|
|
115082
|
+
CharCodes[CharCodes["EQUALS"] = 61] = "EQUALS";
|
|
115083
|
+
CharCodes[CharCodes["ZERO"] = 48] = "ZERO";
|
|
115084
|
+
CharCodes[CharCodes["NINE"] = 57] = "NINE";
|
|
115085
|
+
CharCodes[CharCodes["LOWER_A"] = 97] = "LOWER_A";
|
|
115086
|
+
CharCodes[CharCodes["LOWER_F"] = 102] = "LOWER_F";
|
|
115087
|
+
CharCodes[CharCodes["LOWER_X"] = 120] = "LOWER_X";
|
|
115088
|
+
CharCodes[CharCodes["LOWER_Z"] = 122] = "LOWER_Z";
|
|
115089
|
+
CharCodes[CharCodes["UPPER_A"] = 65] = "UPPER_A";
|
|
115090
|
+
CharCodes[CharCodes["UPPER_F"] = 70] = "UPPER_F";
|
|
115091
|
+
CharCodes[CharCodes["UPPER_Z"] = 90] = "UPPER_Z";
|
|
115092
|
+
})(decode_CharCodes || (decode_CharCodes = {}));
|
|
115093
|
+
/** Bit that needs to be set to convert an upper case ASCII character to lower case */
|
|
115094
|
+
const decode_TO_LOWER_BIT = 0b100000;
|
|
115095
|
+
var decode_BinTrieFlags;
|
|
115096
|
+
(function (BinTrieFlags) {
|
|
115097
|
+
BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
|
|
115098
|
+
BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH";
|
|
115099
|
+
BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE";
|
|
115100
|
+
})(decode_BinTrieFlags || (decode_BinTrieFlags = {}));
|
|
115101
|
+
function decode_isNumber(code) {
|
|
115102
|
+
return code >= decode_CharCodes.ZERO && code <= decode_CharCodes.NINE;
|
|
115103
|
+
}
|
|
115104
|
+
function decode_isHexadecimalCharacter(code) {
|
|
115105
|
+
return ((code >= decode_CharCodes.UPPER_A && code <= decode_CharCodes.UPPER_F) ||
|
|
115106
|
+
(code >= decode_CharCodes.LOWER_A && code <= decode_CharCodes.LOWER_F));
|
|
115107
|
+
}
|
|
115108
|
+
function decode_isAsciiAlphaNumeric(code) {
|
|
115109
|
+
return ((code >= decode_CharCodes.UPPER_A && code <= decode_CharCodes.UPPER_Z) ||
|
|
115110
|
+
(code >= decode_CharCodes.LOWER_A && code <= decode_CharCodes.LOWER_Z) ||
|
|
115111
|
+
decode_isNumber(code));
|
|
115112
|
+
}
|
|
115113
|
+
/**
|
|
115114
|
+
* Checks if the given character is a valid end character for an entity in an attribute.
|
|
115115
|
+
*
|
|
115116
|
+
* Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.
|
|
115117
|
+
* See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state
|
|
115118
|
+
*/
|
|
115119
|
+
function decode_isEntityInAttributeInvalidEnd(code) {
|
|
115120
|
+
return code === decode_CharCodes.EQUALS || decode_isAsciiAlphaNumeric(code);
|
|
115121
|
+
}
|
|
115122
|
+
var decode_EntityDecoderState;
|
|
115123
|
+
(function (EntityDecoderState) {
|
|
115124
|
+
EntityDecoderState[EntityDecoderState["EntityStart"] = 0] = "EntityStart";
|
|
115125
|
+
EntityDecoderState[EntityDecoderState["NumericStart"] = 1] = "NumericStart";
|
|
115126
|
+
EntityDecoderState[EntityDecoderState["NumericDecimal"] = 2] = "NumericDecimal";
|
|
115127
|
+
EntityDecoderState[EntityDecoderState["NumericHex"] = 3] = "NumericHex";
|
|
115128
|
+
EntityDecoderState[EntityDecoderState["NamedEntity"] = 4] = "NamedEntity";
|
|
115129
|
+
})(decode_EntityDecoderState || (decode_EntityDecoderState = {}));
|
|
115130
|
+
var esm_decode_DecodingMode;
|
|
115131
|
+
(function (DecodingMode) {
|
|
115132
|
+
/** Entities in text nodes that can end with any character. */
|
|
115133
|
+
DecodingMode[DecodingMode["Legacy"] = 0] = "Legacy";
|
|
115134
|
+
/** Only allow entities terminated with a semicolon. */
|
|
115135
|
+
DecodingMode[DecodingMode["Strict"] = 1] = "Strict";
|
|
115136
|
+
/** Entities in attributes have limitations on ending characters. */
|
|
115137
|
+
DecodingMode[DecodingMode["Attribute"] = 2] = "Attribute";
|
|
115138
|
+
})(esm_decode_DecodingMode || (esm_decode_DecodingMode = {}));
|
|
115139
|
+
/**
|
|
115140
|
+
* Token decoder with support of writing partial entities.
|
|
115141
|
+
*/
|
|
115142
|
+
class decode_EntityDecoder {
|
|
115143
|
+
constructor(
|
|
115144
|
+
/** The tree used to decode entities. */
|
|
115145
|
+
decodeTree,
|
|
115146
|
+
/**
|
|
115147
|
+
* The function that is called when a codepoint is decoded.
|
|
115148
|
+
*
|
|
115149
|
+
* For multi-byte named entities, this will be called multiple times,
|
|
115150
|
+
* with the second codepoint, and the same `consumed` value.
|
|
115151
|
+
*
|
|
115152
|
+
* @param codepoint The decoded codepoint.
|
|
115153
|
+
* @param consumed The number of bytes consumed by the decoder.
|
|
115154
|
+
*/
|
|
115155
|
+
emitCodePoint,
|
|
115156
|
+
/** An object that is used to produce errors. */
|
|
115157
|
+
errors) {
|
|
115158
|
+
this.decodeTree = decodeTree;
|
|
115159
|
+
this.emitCodePoint = emitCodePoint;
|
|
115160
|
+
this.errors = errors;
|
|
115161
|
+
/** The current state of the decoder. */
|
|
115162
|
+
this.state = decode_EntityDecoderState.EntityStart;
|
|
115163
|
+
/** Characters that were consumed while parsing an entity. */
|
|
115164
|
+
this.consumed = 1;
|
|
115165
|
+
/**
|
|
115166
|
+
* The result of the entity.
|
|
115167
|
+
*
|
|
115168
|
+
* Either the result index of a numeric entity, or the codepoint of a
|
|
115169
|
+
* numeric entity.
|
|
115170
|
+
*/
|
|
115171
|
+
this.result = 0;
|
|
115172
|
+
/** The current index in the decode tree. */
|
|
115173
|
+
this.treeIndex = 0;
|
|
115174
|
+
/** The number of characters that were consumed in excess. */
|
|
115175
|
+
this.excess = 1;
|
|
115176
|
+
/** The mode in which the decoder is operating. */
|
|
115177
|
+
this.decodeMode = esm_decode_DecodingMode.Strict;
|
|
115178
|
+
}
|
|
115179
|
+
/** Resets the instance to make it reusable. */
|
|
115180
|
+
startEntity(decodeMode) {
|
|
115181
|
+
this.decodeMode = decodeMode;
|
|
115182
|
+
this.state = decode_EntityDecoderState.EntityStart;
|
|
115183
|
+
this.result = 0;
|
|
115184
|
+
this.treeIndex = 0;
|
|
115185
|
+
this.excess = 1;
|
|
115186
|
+
this.consumed = 1;
|
|
115187
|
+
}
|
|
115188
|
+
/**
|
|
115189
|
+
* Write an entity to the decoder. This can be called multiple times with partial entities.
|
|
115190
|
+
* If the entity is incomplete, the decoder will return -1.
|
|
115191
|
+
*
|
|
115192
|
+
* Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
|
|
115193
|
+
* entity is incomplete, and resume when the next string is written.
|
|
115194
|
+
*
|
|
115195
|
+
* @param string The string containing the entity (or a continuation of the entity).
|
|
115196
|
+
* @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
|
|
115197
|
+
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
115198
|
+
*/
|
|
115199
|
+
write(str, offset) {
|
|
115200
|
+
switch (this.state) {
|
|
115201
|
+
case decode_EntityDecoderState.EntityStart: {
|
|
115202
|
+
if (str.charCodeAt(offset) === decode_CharCodes.NUM) {
|
|
115203
|
+
this.state = decode_EntityDecoderState.NumericStart;
|
|
115204
|
+
this.consumed += 1;
|
|
115205
|
+
return this.stateNumericStart(str, offset + 1);
|
|
115206
|
+
}
|
|
115207
|
+
this.state = decode_EntityDecoderState.NamedEntity;
|
|
115208
|
+
return this.stateNamedEntity(str, offset);
|
|
115209
|
+
}
|
|
115210
|
+
case decode_EntityDecoderState.NumericStart: {
|
|
115211
|
+
return this.stateNumericStart(str, offset);
|
|
115212
|
+
}
|
|
115213
|
+
case decode_EntityDecoderState.NumericDecimal: {
|
|
115214
|
+
return this.stateNumericDecimal(str, offset);
|
|
115215
|
+
}
|
|
115216
|
+
case decode_EntityDecoderState.NumericHex: {
|
|
115217
|
+
return this.stateNumericHex(str, offset);
|
|
115218
|
+
}
|
|
115219
|
+
case decode_EntityDecoderState.NamedEntity: {
|
|
115220
|
+
return this.stateNamedEntity(str, offset);
|
|
115221
|
+
}
|
|
115222
|
+
}
|
|
115223
|
+
}
|
|
115224
|
+
/**
|
|
115225
|
+
* Switches between the numeric decimal and hexadecimal states.
|
|
115226
|
+
*
|
|
115227
|
+
* Equivalent to the `Numeric character reference state` in the HTML spec.
|
|
115228
|
+
*
|
|
115229
|
+
* @param str The string containing the entity (or a continuation of the entity).
|
|
115230
|
+
* @param offset The current offset.
|
|
115231
|
+
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
115232
|
+
*/
|
|
115233
|
+
stateNumericStart(str, offset) {
|
|
115234
|
+
if (offset >= str.length) {
|
|
115235
|
+
return -1;
|
|
115236
|
+
}
|
|
115237
|
+
if ((str.charCodeAt(offset) | decode_TO_LOWER_BIT) === decode_CharCodes.LOWER_X) {
|
|
115238
|
+
this.state = decode_EntityDecoderState.NumericHex;
|
|
115239
|
+
this.consumed += 1;
|
|
115240
|
+
return this.stateNumericHex(str, offset + 1);
|
|
115241
|
+
}
|
|
115242
|
+
this.state = decode_EntityDecoderState.NumericDecimal;
|
|
115243
|
+
return this.stateNumericDecimal(str, offset);
|
|
115244
|
+
}
|
|
115245
|
+
addToNumericResult(str, start, end, base) {
|
|
115246
|
+
if (start !== end) {
|
|
115247
|
+
const digitCount = end - start;
|
|
115248
|
+
this.result =
|
|
115249
|
+
this.result * Math.pow(base, digitCount) +
|
|
115250
|
+
parseInt(str.substr(start, digitCount), base);
|
|
115251
|
+
this.consumed += digitCount;
|
|
115252
|
+
}
|
|
115253
|
+
}
|
|
115254
|
+
/**
|
|
115255
|
+
* Parses a hexadecimal numeric entity.
|
|
115256
|
+
*
|
|
115257
|
+
* Equivalent to the `Hexademical character reference state` in the HTML spec.
|
|
115258
|
+
*
|
|
115259
|
+
* @param str The string containing the entity (or a continuation of the entity).
|
|
115260
|
+
* @param offset The current offset.
|
|
115261
|
+
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
115262
|
+
*/
|
|
115263
|
+
stateNumericHex(str, offset) {
|
|
115264
|
+
const startIdx = offset;
|
|
115265
|
+
while (offset < str.length) {
|
|
115266
|
+
const char = str.charCodeAt(offset);
|
|
115267
|
+
if (decode_isNumber(char) || decode_isHexadecimalCharacter(char)) {
|
|
115268
|
+
offset += 1;
|
|
115269
|
+
}
|
|
115270
|
+
else {
|
|
115271
|
+
this.addToNumericResult(str, startIdx, offset, 16);
|
|
115272
|
+
return this.emitNumericEntity(char, 3);
|
|
115273
|
+
}
|
|
115274
|
+
}
|
|
115275
|
+
this.addToNumericResult(str, startIdx, offset, 16);
|
|
115276
|
+
return -1;
|
|
115277
|
+
}
|
|
115278
|
+
/**
|
|
115279
|
+
* Parses a decimal numeric entity.
|
|
115280
|
+
*
|
|
115281
|
+
* Equivalent to the `Decimal character reference state` in the HTML spec.
|
|
115282
|
+
*
|
|
115283
|
+
* @param str The string containing the entity (or a continuation of the entity).
|
|
115284
|
+
* @param offset The current offset.
|
|
115285
|
+
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
115286
|
+
*/
|
|
115287
|
+
stateNumericDecimal(str, offset) {
|
|
115288
|
+
const startIdx = offset;
|
|
115289
|
+
while (offset < str.length) {
|
|
115290
|
+
const char = str.charCodeAt(offset);
|
|
115291
|
+
if (decode_isNumber(char)) {
|
|
115292
|
+
offset += 1;
|
|
115293
|
+
}
|
|
115294
|
+
else {
|
|
115295
|
+
this.addToNumericResult(str, startIdx, offset, 10);
|
|
115296
|
+
return this.emitNumericEntity(char, 2);
|
|
115297
|
+
}
|
|
115298
|
+
}
|
|
115299
|
+
this.addToNumericResult(str, startIdx, offset, 10);
|
|
115300
|
+
return -1;
|
|
115301
|
+
}
|
|
115302
|
+
/**
|
|
115303
|
+
* Validate and emit a numeric entity.
|
|
115304
|
+
*
|
|
115305
|
+
* Implements the logic from the `Hexademical character reference start
|
|
115306
|
+
* state` and `Numeric character reference end state` in the HTML spec.
|
|
115307
|
+
*
|
|
115308
|
+
* @param lastCp The last code point of the entity. Used to see if the
|
|
115309
|
+
* entity was terminated with a semicolon.
|
|
115310
|
+
* @param expectedLength The minimum number of characters that should be
|
|
115311
|
+
* consumed. Used to validate that at least one digit
|
|
115312
|
+
* was consumed.
|
|
115313
|
+
* @returns The number of characters that were consumed.
|
|
115314
|
+
*/
|
|
115315
|
+
emitNumericEntity(lastCp, expectedLength) {
|
|
115316
|
+
var _a;
|
|
115317
|
+
// Ensure we consumed at least one digit.
|
|
115318
|
+
if (this.consumed <= expectedLength) {
|
|
115319
|
+
(_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);
|
|
115320
|
+
return 0;
|
|
115321
|
+
}
|
|
115322
|
+
// Figure out if this is a legit end of the entity
|
|
115323
|
+
if (lastCp === decode_CharCodes.SEMI) {
|
|
115324
|
+
this.consumed += 1;
|
|
115325
|
+
}
|
|
115326
|
+
else if (this.decodeMode === esm_decode_DecodingMode.Strict) {
|
|
115327
|
+
return 0;
|
|
115328
|
+
}
|
|
115329
|
+
this.emitCodePoint(decode_codepoint_replaceCodePoint(this.result), this.consumed);
|
|
115330
|
+
if (this.errors) {
|
|
115331
|
+
if (lastCp !== decode_CharCodes.SEMI) {
|
|
115332
|
+
this.errors.missingSemicolonAfterCharacterReference();
|
|
115333
|
+
}
|
|
115334
|
+
this.errors.validateNumericCharacterReference(this.result);
|
|
115335
|
+
}
|
|
115336
|
+
return this.consumed;
|
|
115337
|
+
}
|
|
115338
|
+
/**
|
|
115339
|
+
* Parses a named entity.
|
|
115340
|
+
*
|
|
115341
|
+
* Equivalent to the `Named character reference state` in the HTML spec.
|
|
115342
|
+
*
|
|
115343
|
+
* @param str The string containing the entity (or a continuation of the entity).
|
|
115344
|
+
* @param offset The current offset.
|
|
115345
|
+
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
115346
|
+
*/
|
|
115347
|
+
stateNamedEntity(str, offset) {
|
|
115348
|
+
const { decodeTree } = this;
|
|
115349
|
+
let current = decodeTree[this.treeIndex];
|
|
115350
|
+
// The mask is the number of bytes of the value, including the current byte.
|
|
115351
|
+
let valueLength = (current & decode_BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
115352
|
+
for (; offset < str.length; offset++, this.excess++) {
|
|
115353
|
+
const char = str.charCodeAt(offset);
|
|
115354
|
+
this.treeIndex = decode_determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);
|
|
115355
|
+
if (this.treeIndex < 0) {
|
|
115356
|
+
return this.result === 0 ||
|
|
115357
|
+
// If we are parsing an attribute
|
|
115358
|
+
(this.decodeMode === esm_decode_DecodingMode.Attribute &&
|
|
115359
|
+
// We shouldn't have consumed any characters after the entity,
|
|
115360
|
+
(valueLength === 0 ||
|
|
115361
|
+
// And there should be no invalid characters.
|
|
115362
|
+
decode_isEntityInAttributeInvalidEnd(char)))
|
|
115363
|
+
? 0
|
|
115364
|
+
: this.emitNotTerminatedNamedEntity();
|
|
115365
|
+
}
|
|
115366
|
+
current = decodeTree[this.treeIndex];
|
|
115367
|
+
valueLength = (current & decode_BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
115368
|
+
// If the branch is a value, store it and continue
|
|
115369
|
+
if (valueLength !== 0) {
|
|
115370
|
+
// If the entity is terminated by a semicolon, we are done.
|
|
115371
|
+
if (char === decode_CharCodes.SEMI) {
|
|
115372
|
+
return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
|
|
115373
|
+
}
|
|
115374
|
+
// If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.
|
|
115375
|
+
if (this.decodeMode !== esm_decode_DecodingMode.Strict) {
|
|
115376
|
+
this.result = this.treeIndex;
|
|
115377
|
+
this.consumed += this.excess;
|
|
115378
|
+
this.excess = 0;
|
|
115379
|
+
}
|
|
115380
|
+
}
|
|
115381
|
+
}
|
|
115382
|
+
return -1;
|
|
115383
|
+
}
|
|
115384
|
+
/**
|
|
115385
|
+
* Emit a named entity that was not terminated with a semicolon.
|
|
115386
|
+
*
|
|
115387
|
+
* @returns The number of characters consumed.
|
|
115388
|
+
*/
|
|
115389
|
+
emitNotTerminatedNamedEntity() {
|
|
115390
|
+
var _a;
|
|
115391
|
+
const { result, decodeTree } = this;
|
|
115392
|
+
const valueLength = (decodeTree[result] & decode_BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
115393
|
+
this.emitNamedEntityData(result, valueLength, this.consumed);
|
|
115394
|
+
(_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();
|
|
115395
|
+
return this.consumed;
|
|
115396
|
+
}
|
|
115397
|
+
/**
|
|
115398
|
+
* Emit a named entity.
|
|
115399
|
+
*
|
|
115400
|
+
* @param result The index of the entity in the decode tree.
|
|
115401
|
+
* @param valueLength The number of bytes in the entity.
|
|
115402
|
+
* @param consumed The number of characters consumed.
|
|
115403
|
+
*
|
|
115404
|
+
* @returns The number of characters consumed.
|
|
115405
|
+
*/
|
|
115406
|
+
emitNamedEntityData(result, valueLength, consumed) {
|
|
115407
|
+
const { decodeTree } = this;
|
|
115408
|
+
this.emitCodePoint(valueLength === 1
|
|
115409
|
+
? decodeTree[result] & ~decode_BinTrieFlags.VALUE_LENGTH
|
|
115410
|
+
: decodeTree[result + 1], consumed);
|
|
115411
|
+
if (valueLength === 3) {
|
|
115412
|
+
// For multi-byte values, we need to emit the second byte.
|
|
115413
|
+
this.emitCodePoint(decodeTree[result + 2], consumed);
|
|
115414
|
+
}
|
|
115415
|
+
return consumed;
|
|
115416
|
+
}
|
|
115417
|
+
/**
|
|
115418
|
+
* Signal to the parser that the end of the input was reached.
|
|
115419
|
+
*
|
|
115420
|
+
* Remaining data will be emitted and relevant errors will be produced.
|
|
115421
|
+
*
|
|
115422
|
+
* @returns The number of characters consumed.
|
|
115423
|
+
*/
|
|
115424
|
+
end() {
|
|
115425
|
+
var _a;
|
|
115426
|
+
switch (this.state) {
|
|
115427
|
+
case decode_EntityDecoderState.NamedEntity: {
|
|
115428
|
+
// Emit a named entity if we have one.
|
|
115429
|
+
return this.result !== 0 &&
|
|
115430
|
+
(this.decodeMode !== esm_decode_DecodingMode.Attribute ||
|
|
115431
|
+
this.result === this.treeIndex)
|
|
115432
|
+
? this.emitNotTerminatedNamedEntity()
|
|
115433
|
+
: 0;
|
|
115434
|
+
}
|
|
115435
|
+
// Otherwise, emit a numeric entity if we have one.
|
|
115436
|
+
case decode_EntityDecoderState.NumericDecimal: {
|
|
115437
|
+
return this.emitNumericEntity(0, 2);
|
|
115438
|
+
}
|
|
115439
|
+
case decode_EntityDecoderState.NumericHex: {
|
|
115440
|
+
return this.emitNumericEntity(0, 3);
|
|
115441
|
+
}
|
|
115442
|
+
case decode_EntityDecoderState.NumericStart: {
|
|
115443
|
+
(_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);
|
|
115444
|
+
return 0;
|
|
115445
|
+
}
|
|
115446
|
+
case decode_EntityDecoderState.EntityStart: {
|
|
115447
|
+
// Return 0 if we have no entity.
|
|
115448
|
+
return 0;
|
|
115449
|
+
}
|
|
115450
|
+
}
|
|
115451
|
+
}
|
|
115452
|
+
}
|
|
115453
|
+
/**
|
|
115454
|
+
* Creates a function that decodes entities in a string.
|
|
115455
|
+
*
|
|
115456
|
+
* @param decodeTree The decode tree.
|
|
115457
|
+
* @returns A function that decodes entities in a string.
|
|
115458
|
+
*/
|
|
115459
|
+
function decode_getDecoder(decodeTree) {
|
|
115460
|
+
let ret = "";
|
|
115461
|
+
const decoder = new decode_EntityDecoder(decodeTree, (str) => (ret += esm_decode_codepoint_fromCodePoint(str)));
|
|
115462
|
+
return function decodeWithTrie(str, decodeMode) {
|
|
115463
|
+
let lastIndex = 0;
|
|
115464
|
+
let offset = 0;
|
|
115465
|
+
while ((offset = str.indexOf("&", offset)) >= 0) {
|
|
115466
|
+
ret += str.slice(lastIndex, offset);
|
|
115467
|
+
decoder.startEntity(decodeMode);
|
|
115468
|
+
const len = decoder.write(str,
|
|
115469
|
+
// Skip the "&"
|
|
115470
|
+
offset + 1);
|
|
115471
|
+
if (len < 0) {
|
|
115472
|
+
lastIndex = offset + decoder.end();
|
|
115473
|
+
break;
|
|
115474
|
+
}
|
|
115475
|
+
lastIndex = offset + len;
|
|
115476
|
+
// If `len` is 0, skip the current `&` and continue.
|
|
115477
|
+
offset = len === 0 ? lastIndex + 1 : lastIndex;
|
|
115478
|
+
}
|
|
115479
|
+
const result = ret + str.slice(lastIndex);
|
|
115480
|
+
// Make sure we don't keep a reference to the final string.
|
|
115481
|
+
ret = "";
|
|
115482
|
+
return result;
|
|
115483
|
+
};
|
|
115484
|
+
}
|
|
115485
|
+
/**
|
|
115486
|
+
* Determines the branch of the current node that is taken given the current
|
|
115487
|
+
* character. This function is used to traverse the trie.
|
|
115488
|
+
*
|
|
115489
|
+
* @param decodeTree The trie.
|
|
115490
|
+
* @param current The current node.
|
|
115491
|
+
* @param nodeIdx The index right after the current node and its value.
|
|
115492
|
+
* @param char The current character.
|
|
115493
|
+
* @returns The index of the next node, or -1 if no branch is taken.
|
|
115494
|
+
*/
|
|
115495
|
+
function decode_determineBranch(decodeTree, current, nodeIdx, char) {
|
|
115496
|
+
const branchCount = (current & decode_BinTrieFlags.BRANCH_LENGTH) >> 7;
|
|
115497
|
+
const jumpOffset = current & decode_BinTrieFlags.JUMP_TABLE;
|
|
115498
|
+
// Case 1: Single branch encoded in jump offset
|
|
115499
|
+
if (branchCount === 0) {
|
|
115500
|
+
return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1;
|
|
115501
|
+
}
|
|
115502
|
+
// Case 2: Multiple branches encoded in jump table
|
|
115503
|
+
if (jumpOffset) {
|
|
115504
|
+
const value = char - jumpOffset;
|
|
115505
|
+
return value < 0 || value >= branchCount
|
|
115506
|
+
? -1
|
|
115507
|
+
: decodeTree[nodeIdx + value] - 1;
|
|
115508
|
+
}
|
|
115509
|
+
// Case 3: Multiple branches encoded in dictionary
|
|
115510
|
+
// Binary search for the character.
|
|
115511
|
+
let lo = nodeIdx;
|
|
115512
|
+
let hi = lo + branchCount - 1;
|
|
115513
|
+
while (lo <= hi) {
|
|
115514
|
+
const mid = (lo + hi) >>> 1;
|
|
115515
|
+
const midVal = decodeTree[mid];
|
|
115516
|
+
if (midVal < char) {
|
|
115517
|
+
lo = mid + 1;
|
|
115518
|
+
}
|
|
115519
|
+
else if (midVal > char) {
|
|
115520
|
+
hi = mid - 1;
|
|
115521
|
+
}
|
|
115522
|
+
else {
|
|
115523
|
+
return decodeTree[mid + branchCount];
|
|
115524
|
+
}
|
|
115525
|
+
}
|
|
115526
|
+
return -1;
|
|
115527
|
+
}
|
|
115528
|
+
const decode_htmlDecoder = decode_getDecoder(decode_data_html);
|
|
115529
|
+
const decode_xmlDecoder = decode_getDecoder(decode_data_xml);
|
|
115530
|
+
/**
|
|
115531
|
+
* Decodes an HTML string.
|
|
115532
|
+
*
|
|
115533
|
+
* @param str The string to decode.
|
|
115534
|
+
* @param mode The decoding mode.
|
|
115535
|
+
* @returns The decoded string.
|
|
115536
|
+
*/
|
|
115537
|
+
function esm_decode_decodeHTML(str, mode = esm_decode_DecodingMode.Legacy) {
|
|
115538
|
+
return decode_htmlDecoder(str, mode);
|
|
115539
|
+
}
|
|
115540
|
+
/**
|
|
115541
|
+
* Decodes an HTML string in an attribute.
|
|
115542
|
+
*
|
|
115543
|
+
* @param str The string to decode.
|
|
115544
|
+
* @returns The decoded string.
|
|
115545
|
+
*/
|
|
115546
|
+
function decode_decodeHTMLAttribute(str) {
|
|
115547
|
+
return decode_htmlDecoder(str, esm_decode_DecodingMode.Attribute);
|
|
115548
|
+
}
|
|
115549
|
+
/**
|
|
115550
|
+
* Decodes an HTML string, requiring all entities to be terminated by a semicolon.
|
|
115551
|
+
*
|
|
115552
|
+
* @param str The string to decode.
|
|
115553
|
+
* @returns The decoded string.
|
|
115554
|
+
*/
|
|
115555
|
+
function decode_decodeHTMLStrict(str) {
|
|
115556
|
+
return decode_htmlDecoder(str, esm_decode_DecodingMode.Strict);
|
|
115557
|
+
}
|
|
115558
|
+
/**
|
|
115559
|
+
* Decodes an XML string, requiring all entities to be terminated by a semicolon.
|
|
115560
|
+
*
|
|
115561
|
+
* @param str The string to decode.
|
|
115562
|
+
* @returns The decoded string.
|
|
115563
|
+
*/
|
|
115564
|
+
function esm_decode_decodeXML(str) {
|
|
115565
|
+
return decode_xmlDecoder(str, esm_decode_DecodingMode.Strict);
|
|
115566
|
+
}
|
|
115567
|
+
//# sourceMappingURL=decode.js.map
|
|
115027
115568
|
;// ./node_modules/entities/lib/esm/generated/encode-html.js
|
|
115028
115569
|
// Generated using scripts/write-encode-map.ts
|
|
115029
115570
|
function restoreDiff(arr) {
|
|
@@ -115035,6 +115576,123 @@ function restoreDiff(arr) {
|
|
|
115035
115576
|
// prettier-ignore
|
|
115036
115577
|
/* harmony default export */ const encode_html = (new Map(/* #__PURE__ */ restoreDiff([[9, "	"], [0, "
"], [22, "!"], [0, """], [0, "#"], [0, "$"], [0, "%"], [0, "&"], [0, "'"], [0, "("], [0, ")"], [0, "*"], [0, "+"], [0, ","], [1, "."], [0, "/"], [10, ":"], [0, ";"], [0, { v: "<", n: 8402, o: "<⃒" }], [0, { v: "=", n: 8421, o: "=⃥" }], [0, { v: ">", n: 8402, o: ">⃒" }], [0, "?"], [0, "@"], [26, "["], [0, "\"], [0, "]"], [0, "^"], [0, "_"], [0, "`"], [5, { n: 106, o: "fj" }], [20, "{"], [0, "|"], [0, "}"], [34, " "], [0, "¡"], [0, "¢"], [0, "£"], [0, "¤"], [0, "¥"], [0, "¦"], [0, "§"], [0, "¨"], [0, "©"], [0, "ª"], [0, "«"], [0, "¬"], [0, "­"], [0, "®"], [0, "¯"], [0, "°"], [0, "±"], [0, "²"], [0, "³"], [0, "´"], [0, "µ"], [0, "¶"], [0, "·"], [0, "¸"], [0, "¹"], [0, "º"], [0, "»"], [0, "¼"], [0, "½"], [0, "¾"], [0, "¿"], [0, "À"], [0, "Á"], [0, "Â"], [0, "Ã"], [0, "Ä"], [0, "Å"], [0, "Æ"], [0, "Ç"], [0, "È"], [0, "É"], [0, "Ê"], [0, "Ë"], [0, "Ì"], [0, "Í"], [0, "Î"], [0, "Ï"], [0, "Ð"], [0, "Ñ"], [0, "Ò"], [0, "Ó"], [0, "Ô"], [0, "Õ"], [0, "Ö"], [0, "×"], [0, "Ø"], [0, "Ù"], [0, "Ú"], [0, "Û"], [0, "Ü"], [0, "Ý"], [0, "Þ"], [0, "ß"], [0, "à"], [0, "á"], [0, "â"], [0, "ã"], [0, "ä"], [0, "å"], [0, "æ"], [0, "ç"], [0, "è"], [0, "é"], [0, "ê"], [0, "ë"], [0, "ì"], [0, "í"], [0, "î"], [0, "ï"], [0, "ð"], [0, "ñ"], [0, "ò"], [0, "ó"], [0, "ô"], [0, "õ"], [0, "ö"], [0, "÷"], [0, "ø"], [0, "ù"], [0, "ú"], [0, "û"], [0, "ü"], [0, "ý"], [0, "þ"], [0, "ÿ"], [0, "Ā"], [0, "ā"], [0, "Ă"], [0, "ă"], [0, "Ą"], [0, "ą"], [0, "Ć"], [0, "ć"], [0, "Ĉ"], [0, "ĉ"], [0, "Ċ"], [0, "ċ"], [0, "Č"], [0, "č"], [0, "Ď"], [0, "ď"], [0, "Đ"], [0, "đ"], [0, "Ē"], [0, "ē"], [2, "Ė"], [0, "ė"], [0, "Ę"], [0, "ę"], [0, "Ě"], [0, "ě"], [0, "Ĝ"], [0, "ĝ"], [0, "Ğ"], [0, "ğ"], [0, "Ġ"], [0, "ġ"], [0, "Ģ"], [1, "Ĥ"], [0, "ĥ"], [0, "Ħ"], [0, "ħ"], [0, "Ĩ"], [0, "ĩ"], [0, "Ī"], [0, "ī"], [2, "Į"], [0, "į"], [0, "İ"], [0, "ı"], [0, "IJ"], [0, "ij"], [0, "Ĵ"], [0, "ĵ"], [0, "Ķ"], [0, "ķ"], [0, "ĸ"], [0, "Ĺ"], [0, "ĺ"], [0, "Ļ"], [0, "ļ"], [0, "Ľ"], [0, "ľ"], [0, "Ŀ"], [0, "ŀ"], [0, "Ł"], [0, "ł"], [0, "Ń"], [0, "ń"], [0, "Ņ"], [0, "ņ"], [0, "Ň"], [0, "ň"], [0, "ʼn"], [0, "Ŋ"], [0, "ŋ"], [0, "Ō"], [0, "ō"], [2, "Ő"], [0, "ő"], [0, "Œ"], [0, "œ"], [0, "Ŕ"], [0, "ŕ"], [0, "Ŗ"], [0, "ŗ"], [0, "Ř"], [0, "ř"], [0, "Ś"], [0, "ś"], [0, "Ŝ"], [0, "ŝ"], [0, "Ş"], [0, "ş"], [0, "Š"], [0, "š"], [0, "Ţ"], [0, "ţ"], [0, "Ť"], [0, "ť"], [0, "Ŧ"], [0, "ŧ"], [0, "Ũ"], [0, "ũ"], [0, "Ū"], [0, "ū"], [0, "Ŭ"], [0, "ŭ"], [0, "Ů"], [0, "ů"], [0, "Ű"], [0, "ű"], [0, "Ų"], [0, "ų"], [0, "Ŵ"], [0, "ŵ"], [0, "Ŷ"], [0, "ŷ"], [0, "Ÿ"], [0, "Ź"], [0, "ź"], [0, "Ż"], [0, "ż"], [0, "Ž"], [0, "ž"], [19, "ƒ"], [34, "Ƶ"], [63, "ǵ"], [65, "ȷ"], [142, "ˆ"], [0, "ˇ"], [16, "˘"], [0, "˙"], [0, "˚"], [0, "˛"], [0, "˜"], [0, "˝"], [51, "̑"], [127, "Α"], [0, "Β"], [0, "Γ"], [0, "Δ"], [0, "Ε"], [0, "Ζ"], [0, "Η"], [0, "Θ"], [0, "Ι"], [0, "Κ"], [0, "Λ"], [0, "Μ"], [0, "Ν"], [0, "Ξ"], [0, "Ο"], [0, "Π"], [0, "Ρ"], [1, "Σ"], [0, "Τ"], [0, "Υ"], [0, "Φ"], [0, "Χ"], [0, "Ψ"], [0, "Ω"], [7, "α"], [0, "β"], [0, "γ"], [0, "δ"], [0, "ε"], [0, "ζ"], [0, "η"], [0, "θ"], [0, "ι"], [0, "κ"], [0, "λ"], [0, "μ"], [0, "ν"], [0, "ξ"], [0, "ο"], [0, "π"], [0, "ρ"], [0, "ς"], [0, "σ"], [0, "τ"], [0, "υ"], [0, "φ"], [0, "χ"], [0, "ψ"], [0, "ω"], [7, "ϑ"], [0, "ϒ"], [2, "ϕ"], [0, "ϖ"], [5, "Ϝ"], [0, "ϝ"], [18, "ϰ"], [0, "ϱ"], [3, "ϵ"], [0, "϶"], [10, "Ё"], [0, "Ђ"], [0, "Ѓ"], [0, "Є"], [0, "Ѕ"], [0, "І"], [0, "Ї"], [0, "Ј"], [0, "Љ"], [0, "Њ"], [0, "Ћ"], [0, "Ќ"], [1, "Ў"], [0, "Џ"], [0, "А"], [0, "Б"], [0, "В"], [0, "Г"], [0, "Д"], [0, "Е"], [0, "Ж"], [0, "З"], [0, "И"], [0, "Й"], [0, "К"], [0, "Л"], [0, "М"], [0, "Н"], [0, "О"], [0, "П"], [0, "Р"], [0, "С"], [0, "Т"], [0, "У"], [0, "Ф"], [0, "Х"], [0, "Ц"], [0, "Ч"], [0, "Ш"], [0, "Щ"], [0, "Ъ"], [0, "Ы"], [0, "Ь"], [0, "Э"], [0, "Ю"], [0, "Я"], [0, "а"], [0, "б"], [0, "в"], [0, "г"], [0, "д"], [0, "е"], [0, "ж"], [0, "з"], [0, "и"], [0, "й"], [0, "к"], [0, "л"], [0, "м"], [0, "н"], [0, "о"], [0, "п"], [0, "р"], [0, "с"], [0, "т"], [0, "у"], [0, "ф"], [0, "х"], [0, "ц"], [0, "ч"], [0, "ш"], [0, "щ"], [0, "ъ"], [0, "ы"], [0, "ь"], [0, "э"], [0, "ю"], [0, "я"], [1, "ё"], [0, "ђ"], [0, "ѓ"], [0, "є"], [0, "ѕ"], [0, "і"], [0, "ї"], [0, "ј"], [0, "љ"], [0, "њ"], [0, "ћ"], [0, "ќ"], [1, "ў"], [0, "џ"], [7074, " "], [0, " "], [0, " "], [0, " "], [1, " "], [0, " "], [0, " "], [0, " "], [0, "​"], [0, "‌"], [0, "‍"], [0, "‎"], [0, "‏"], [0, "‐"], [2, "–"], [0, "—"], [0, "―"], [0, "‖"], [1, "‘"], [0, "’"], [0, "‚"], [1, "“"], [0, "”"], [0, "„"], [1, "†"], [0, "‡"], [0, "•"], [2, "‥"], [0, "…"], [9, "‰"], [0, "‱"], [0, "′"], [0, "″"], [0, "‴"], [0, "‵"], [3, "‹"], [0, "›"], [3, "‾"], [2, "⁁"], [1, "⁃"], [0, "⁄"], [10, "⁏"], [7, "⁗"], [7, { v: " ", n: 8202, o: "  " }], [0, "⁠"], [0, "⁡"], [0, "⁢"], [0, "⁣"], [72, "€"], [46, "⃛"], [0, "⃜"], [37, "ℂ"], [2, "℅"], [4, "ℊ"], [0, "ℋ"], [0, "ℌ"], [0, "ℍ"], [0, "ℎ"], [0, "ℏ"], [0, "ℐ"], [0, "ℑ"], [0, "ℒ"], [0, "ℓ"], [1, "ℕ"], [0, "№"], [0, "℗"], [0, "℘"], [0, "ℙ"], [0, "ℚ"], [0, "ℛ"], [0, "ℜ"], [0, "ℝ"], [0, "℞"], [3, "™"], [1, "ℤ"], [2, "℧"], [0, "ℨ"], [0, "℩"], [2, "ℬ"], [0, "ℭ"], [1, "ℯ"], [0, "ℰ"], [0, "ℱ"], [1, "ℳ"], [0, "ℴ"], [0, "ℵ"], [0, "ℶ"], [0, "ℷ"], [0, "ℸ"], [12, "ⅅ"], [0, "ⅆ"], [0, "ⅇ"], [0, "ⅈ"], [10, "⅓"], [0, "⅔"], [0, "⅕"], [0, "⅖"], [0, "⅗"], [0, "⅘"], [0, "⅙"], [0, "⅚"], [0, "⅛"], [0, "⅜"], [0, "⅝"], [0, "⅞"], [49, "←"], [0, "↑"], [0, "→"], [0, "↓"], [0, "↔"], [0, "↕"], [0, "↖"], [0, "↗"], [0, "↘"], [0, "↙"], [0, "↚"], [0, "↛"], [1, { v: "↝", n: 824, o: "↝̸" }], [0, "↞"], [0, "↟"], [0, "↠"], [0, "↡"], [0, "↢"], [0, "↣"], [0, "↤"], [0, "↥"], [0, "↦"], [0, "↧"], [1, "↩"], [0, "↪"], [0, "↫"], [0, "↬"], [0, "↭"], [0, "↮"], [1, "↰"], [0, "↱"], [0, "↲"], [0, "↳"], [1, "↵"], [0, "↶"], [0, "↷"], [2, "↺"], [0, "↻"], [0, "↼"], [0, "↽"], [0, "↾"], [0, "↿"], [0, "⇀"], [0, "⇁"], [0, "⇂"], [0, "⇃"], [0, "⇄"], [0, "⇅"], [0, "⇆"], [0, "⇇"], [0, "⇈"], [0, "⇉"], [0, "⇊"], [0, "⇋"], [0, "⇌"], [0, "⇍"], [0, "⇎"], [0, "⇏"], [0, "⇐"], [0, "⇑"], [0, "⇒"], [0, "⇓"], [0, "⇔"], [0, "⇕"], [0, "⇖"], [0, "⇗"], [0, "⇘"], [0, "⇙"], [0, "⇚"], [0, "⇛"], [1, "⇝"], [6, "⇤"], [0, "⇥"], [15, "⇵"], [7, "⇽"], [0, "⇾"], [0, "⇿"], [0, "∀"], [0, "∁"], [0, { v: "∂", n: 824, o: "∂̸" }], [0, "∃"], [0, "∄"], [0, "∅"], [1, "∇"], [0, "∈"], [0, "∉"], [1, "∋"], [0, "∌"], [2, "∏"], [0, "∐"], [0, "∑"], [0, "−"], [0, "∓"], [0, "∔"], [1, "∖"], [0, "∗"], [0, "∘"], [1, "√"], [2, "∝"], [0, "∞"], [0, "∟"], [0, { v: "∠", n: 8402, o: "∠⃒" }], [0, "∡"], [0, "∢"], [0, "∣"], [0, "∤"], [0, "∥"], [0, "∦"], [0, "∧"], [0, "∨"], [0, { v: "∩", n: 65024, o: "∩︀" }], [0, { v: "∪", n: 65024, o: "∪︀" }], [0, "∫"], [0, "∬"], [0, "∭"], [0, "∮"], [0, "∯"], [0, "∰"], [0, "∱"], [0, "∲"], [0, "∳"], [0, "∴"], [0, "∵"], [0, "∶"], [0, "∷"], [0, "∸"], [1, "∺"], [0, "∻"], [0, { v: "∼", n: 8402, o: "∼⃒" }], [0, { v: "∽", n: 817, o: "∽̱" }], [0, { v: "∾", n: 819, o: "∾̳" }], [0, "∿"], [0, "≀"], [0, "≁"], [0, { v: "≂", n: 824, o: "≂̸" }], [0, "≃"], [0, "≄"], [0, "≅"], [0, "≆"], [0, "≇"], [0, "≈"], [0, "≉"], [0, "≊"], [0, { v: "≋", n: 824, o: "≋̸" }], [0, "≌"], [0, { v: "≍", n: 8402, o: "≍⃒" }], [0, { v: "≎", n: 824, o: "≎̸" }], [0, { v: "≏", n: 824, o: "≏̸" }], [0, { v: "≐", n: 824, o: "≐̸" }], [0, "≑"], [0, "≒"], [0, "≓"], [0, "≔"], [0, "≕"], [0, "≖"], [0, "≗"], [1, "≙"], [0, "≚"], [1, "≜"], [2, "≟"], [0, "≠"], [0, { v: "≡", n: 8421, o: "≡⃥" }], [0, "≢"], [1, { v: "≤", n: 8402, o: "≤⃒" }], [0, { v: "≥", n: 8402, o: "≥⃒" }], [0, { v: "≦", n: 824, o: "≦̸" }], [0, { v: "≧", n: 824, o: "≧̸" }], [0, { v: "≨", n: 65024, o: "≨︀" }], [0, { v: "≩", n: 65024, o: "≩︀" }], [0, { v: "≪", n: new Map(/* #__PURE__ */ restoreDiff([[824, "≪̸"], [7577, "≪⃒"]])) }], [0, { v: "≫", n: new Map(/* #__PURE__ */ restoreDiff([[824, "≫̸"], [7577, "≫⃒"]])) }], [0, "≬"], [0, "≭"], [0, "≮"], [0, "≯"], [0, "≰"], [0, "≱"], [0, "≲"], [0, "≳"], [0, "≴"], [0, "≵"], [0, "≶"], [0, "≷"], [0, "≸"], [0, "≹"], [0, "≺"], [0, "≻"], [0, "≼"], [0, "≽"], [0, "≾"], [0, { v: "≿", n: 824, o: "≿̸" }], [0, "⊀"], [0, "⊁"], [0, { v: "⊂", n: 8402, o: "⊂⃒" }], [0, { v: "⊃", n: 8402, o: "⊃⃒" }], [0, "⊄"], [0, "⊅"], [0, "⊆"], [0, "⊇"], [0, "⊈"], [0, "⊉"], [0, { v: "⊊", n: 65024, o: "⊊︀" }], [0, { v: "⊋", n: 65024, o: "⊋︀" }], [1, "⊍"], [0, "⊎"], [0, { v: "⊏", n: 824, o: "⊏̸" }], [0, { v: "⊐", n: 824, o: "⊐̸" }], [0, "⊑"], [0, "⊒"], [0, { v: "⊓", n: 65024, o: "⊓︀" }], [0, { v: "⊔", n: 65024, o: "⊔︀" }], [0, "⊕"], [0, "⊖"], [0, "⊗"], [0, "⊘"], [0, "⊙"], [0, "⊚"], [0, "⊛"], [1, "⊝"], [0, "⊞"], [0, "⊟"], [0, "⊠"], [0, "⊡"], [0, "⊢"], [0, "⊣"], [0, "⊤"], [0, "⊥"], [1, "⊧"], [0, "⊨"], [0, "⊩"], [0, "⊪"], [0, "⊫"], [0, "⊬"], [0, "⊭"], [0, "⊮"], [0, "⊯"], [0, "⊰"], [1, "⊲"], [0, "⊳"], [0, { v: "⊴", n: 8402, o: "⊴⃒" }], [0, { v: "⊵", n: 8402, o: "⊵⃒" }], [0, "⊶"], [0, "⊷"], [0, "⊸"], [0, "⊹"], [0, "⊺"], [0, "⊻"], [1, "⊽"], [0, "⊾"], [0, "⊿"], [0, "⋀"], [0, "⋁"], [0, "⋂"], [0, "⋃"], [0, "⋄"], [0, "⋅"], [0, "⋆"], [0, "⋇"], [0, "⋈"], [0, "⋉"], [0, "⋊"], [0, "⋋"], [0, "⋌"], [0, "⋍"], [0, "⋎"], [0, "⋏"], [0, "⋐"], [0, "⋑"], [0, "⋒"], [0, "⋓"], [0, "⋔"], [0, "⋕"], [0, "⋖"], [0, "⋗"], [0, { v: "⋘", n: 824, o: "⋘̸" }], [0, { v: "⋙", n: 824, o: "⋙̸" }], [0, { v: "⋚", n: 65024, o: "⋚︀" }], [0, { v: "⋛", n: 65024, o: "⋛︀" }], [2, "⋞"], [0, "⋟"], [0, "⋠"], [0, "⋡"], [0, "⋢"], [0, "⋣"], [2, "⋦"], [0, "⋧"], [0, "⋨"], [0, "⋩"], [0, "⋪"], [0, "⋫"], [0, "⋬"], [0, "⋭"], [0, "⋮"], [0, "⋯"], [0, "⋰"], [0, "⋱"], [0, "⋲"], [0, "⋳"], [0, "⋴"], [0, { v: "⋵", n: 824, o: "⋵̸" }], [0, "⋶"], [0, "⋷"], [1, { v: "⋹", n: 824, o: "⋹̸" }], [0, "⋺"], [0, "⋻"], [0, "⋼"], [0, "⋽"], [0, "⋾"], [6, "⌅"], [0, "⌆"], [1, "⌈"], [0, "⌉"], [0, "⌊"], [0, "⌋"], [0, "⌌"], [0, "⌍"], [0, "⌎"], [0, "⌏"], [0, "⌐"], [1, "⌒"], [0, "⌓"], [1, "⌕"], [0, "⌖"], [5, "⌜"], [0, "⌝"], [0, "⌞"], [0, "⌟"], [2, "⌢"], [0, "⌣"], [9, "⌭"], [0, "⌮"], [7, "⌶"], [6, "⌽"], [1, "⌿"], [60, "⍼"], [51, "⎰"], [0, "⎱"], [2, "⎴"], [0, "⎵"], [0, "⎶"], [37, "⏜"], [0, "⏝"], [0, "⏞"], [0, "⏟"], [2, "⏢"], [4, "⏧"], [59, "␣"], [164, "Ⓢ"], [55, "─"], [1, "│"], [9, "┌"], [3, "┐"], [3, "└"], [3, "┘"], [3, "├"], [7, "┤"], [7, "┬"], [7, "┴"], [7, "┼"], [19, "═"], [0, "║"], [0, "╒"], [0, "╓"], [0, "╔"], [0, "╕"], [0, "╖"], [0, "╗"], [0, "╘"], [0, "╙"], [0, "╚"], [0, "╛"], [0, "╜"], [0, "╝"], [0, "╞"], [0, "╟"], [0, "╠"], [0, "╡"], [0, "╢"], [0, "╣"], [0, "╤"], [0, "╥"], [0, "╦"], [0, "╧"], [0, "╨"], [0, "╩"], [0, "╪"], [0, "╫"], [0, "╬"], [19, "▀"], [3, "▄"], [3, "█"], [8, "░"], [0, "▒"], [0, "▓"], [13, "□"], [8, "▪"], [0, "▫"], [1, "▭"], [0, "▮"], [2, "▱"], [1, "△"], [0, "▴"], [0, "▵"], [2, "▸"], [0, "▹"], [3, "▽"], [0, "▾"], [0, "▿"], [2, "◂"], [0, "◃"], [6, "◊"], [0, "○"], [32, "◬"], [2, "◯"], [8, "◸"], [0, "◹"], [0, "◺"], [0, "◻"], [0, "◼"], [8, "★"], [0, "☆"], [7, "☎"], [49, "♀"], [1, "♂"], [29, "♠"], [2, "♣"], [1, "♥"], [0, "♦"], [3, "♪"], [2, "♭"], [0, "♮"], [0, "♯"], [163, "✓"], [3, "✗"], [8, "✠"], [21, "✶"], [33, "❘"], [25, "❲"], [0, "❳"], [84, "⟈"], [0, "⟉"], [28, "⟦"], [0, "⟧"], [0, "⟨"], [0, "⟩"], [0, "⟪"], [0, "⟫"], [0, "⟬"], [0, "⟭"], [7, "⟵"], [0, "⟶"], [0, "⟷"], [0, "⟸"], [0, "⟹"], [0, "⟺"], [1, "⟼"], [2, "⟿"], [258, "⤂"], [0, "⤃"], [0, "⤄"], [0, "⤅"], [6, "⤌"], [0, "⤍"], [0, "⤎"], [0, "⤏"], [0, "⤐"], [0, "⤑"], [0, "⤒"], [0, "⤓"], [2, "⤖"], [2, "⤙"], [0, "⤚"], [0, "⤛"], [0, "⤜"], [0, "⤝"], [0, "⤞"], [0, "⤟"], [0, "⤠"], [2, "⤣"], [0, "⤤"], [0, "⤥"], [0, "⤦"], [0, "⤧"], [0, "⤨"], [0, "⤩"], [0, "⤪"], [8, { v: "⤳", n: 824, o: "⤳̸" }], [1, "⤵"], [0, "⤶"], [0, "⤷"], [0, "⤸"], [0, "⤹"], [2, "⤼"], [0, "⤽"], [7, "⥅"], [2, "⥈"], [0, "⥉"], [0, "⥊"], [0, "⥋"], [2, "⥎"], [0, "⥏"], [0, "⥐"], [0, "⥑"], [0, "⥒"], [0, "⥓"], [0, "⥔"], [0, "⥕"], [0, "⥖"], [0, "⥗"], [0, "⥘"], [0, "⥙"], [0, "⥚"], [0, "⥛"], [0, "⥜"], [0, "⥝"], [0, "⥞"], [0, "⥟"], [0, "⥠"], [0, "⥡"], [0, "⥢"], [0, "⥣"], [0, "⥤"], [0, "⥥"], [0, "⥦"], [0, "⥧"], [0, "⥨"], [0, "⥩"], [0, "⥪"], [0, "⥫"], [0, "⥬"], [0, "⥭"], [0, "⥮"], [0, "⥯"], [0, "⥰"], [0, "⥱"], [0, "⥲"], [0, "⥳"], [0, "⥴"], [0, "⥵"], [0, "⥶"], [1, "⥸"], [0, "⥹"], [1, "⥻"], [0, "⥼"], [0, "⥽"], [0, "⥾"], [0, "⥿"], [5, "⦅"], [0, "⦆"], [4, "⦋"], [0, "⦌"], [0, "⦍"], [0, "⦎"], [0, "⦏"], [0, "⦐"], [0, "⦑"], [0, "⦒"], [0, "⦓"], [0, "⦔"], [0, "⦕"], [0, "⦖"], [3, "⦚"], [1, "⦜"], [0, "⦝"], [6, "⦤"], [0, "⦥"], [0, "⦦"], [0, "⦧"], [0, "⦨"], [0, "⦩"], [0, "⦪"], [0, "⦫"], [0, "⦬"], [0, "⦭"], [0, "⦮"], [0, "⦯"], [0, "⦰"], [0, "⦱"], [0, "⦲"], [0, "⦳"], [0, "⦴"], [0, "⦵"], [0, "⦶"], [0, "⦷"], [1, "⦹"], [1, "⦻"], [0, "⦼"], [1, "⦾"], [0, "⦿"], [0, "⧀"], [0, "⧁"], [0, "⧂"], [0, "⧃"], [0, "⧄"], [0, "⧅"], [3, "⧉"], [3, "⧍"], [0, "⧎"], [0, { v: "⧏", n: 824, o: "⧏̸" }], [0, { v: "⧐", n: 824, o: "⧐̸" }], [11, "⧜"], [0, "⧝"], [0, "⧞"], [4, "⧣"], [0, "⧤"], [0, "⧥"], [5, "⧫"], [8, "⧴"], [1, "⧶"], [9, "⨀"], [0, "⨁"], [0, "⨂"], [1, "⨄"], [1, "⨆"], [5, "⨌"], [0, "⨍"], [2, "⨐"], [0, "⨑"], [0, "⨒"], [0, "⨓"], [0, "⨔"], [0, "⨕"], [0, "⨖"], [0, "⨗"], [10, "⨢"], [0, "⨣"], [0, "⨤"], [0, "⨥"], [0, "⨦"], [0, "⨧"], [1, "⨩"], [0, "⨪"], [2, "⨭"], [0, "⨮"], [0, "⨯"], [0, "⨰"], [0, "⨱"], [1, "⨳"], [0, "⨴"], [0, "⨵"], [0, "⨶"], [0, "⨷"], [0, "⨸"], [0, "⨹"], [0, "⨺"], [0, "⨻"], [0, "⨼"], [2, "⨿"], [0, "⩀"], [1, "⩂"], [0, "⩃"], [0, "⩄"], [0, "⩅"], [0, "⩆"], [0, "⩇"], [0, "⩈"], [0, "⩉"], [0, "⩊"], [0, "⩋"], [0, "⩌"], [0, "⩍"], [2, "⩐"], [2, "⩓"], [0, "⩔"], [0, "⩕"], [0, "⩖"], [0, "⩗"], [0, "⩘"], [1, "⩚"], [0, "⩛"], [0, "⩜"], [0, "⩝"], [1, "⩟"], [6, "⩦"], [3, "⩪"], [2, { v: "⩭", n: 824, o: "⩭̸" }], [0, "⩮"], [0, "⩯"], [0, { v: "⩰", n: 824, o: "⩰̸" }], [0, "⩱"], [0, "⩲"], [0, "⩳"], [0, "⩴"], [0, "⩵"], [1, "⩷"], [0, "⩸"], [0, "⩹"], [0, "⩺"], [0, "⩻"], [0, "⩼"], [0, { v: "⩽", n: 824, o: "⩽̸" }], [0, { v: "⩾", n: 824, o: "⩾̸" }], [0, "⩿"], [0, "⪀"], [0, "⪁"], [0, "⪂"], [0, "⪃"], [0, "⪄"], [0, "⪅"], [0, "⪆"], [0, "⪇"], [0, "⪈"], [0, "⪉"], [0, "⪊"], [0, "⪋"], [0, "⪌"], [0, "⪍"], [0, "⪎"], [0, "⪏"], [0, "⪐"], [0, "⪑"], [0, "⪒"], [0, "⪓"], [0, "⪔"], [0, "⪕"], [0, "⪖"], [0, "⪗"], [0, "⪘"], [0, "⪙"], [0, "⪚"], [2, "⪝"], [0, "⪞"], [0, "⪟"], [0, "⪠"], [0, { v: "⪡", n: 824, o: "⪡̸" }], [0, { v: "⪢", n: 824, o: "⪢̸" }], [1, "⪤"], [0, "⪥"], [0, "⪦"], [0, "⪧"], [0, "⪨"], [0, "⪩"], [0, "⪪"], [0, "⪫"], [0, { v: "⪬", n: 65024, o: "⪬︀" }], [0, { v: "⪭", n: 65024, o: "⪭︀" }], [0, "⪮"], [0, { v: "⪯", n: 824, o: "⪯̸" }], [0, { v: "⪰", n: 824, o: "⪰̸" }], [2, "⪳"], [0, "⪴"], [0, "⪵"], [0, "⪶"], [0, "⪷"], [0, "⪸"], [0, "⪹"], [0, "⪺"], [0, "⪻"], [0, "⪼"], [0, "⪽"], [0, "⪾"], [0, "⪿"], [0, "⫀"], [0, "⫁"], [0, "⫂"], [0, "⫃"], [0, "⫄"], [0, { v: "⫅", n: 824, o: "⫅̸" }], [0, { v: "⫆", n: 824, o: "⫆̸" }], [0, "⫇"], [0, "⫈"], [2, { v: "⫋", n: 65024, o: "⫋︀" }], [0, { v: "⫌", n: 65024, o: "⫌︀" }], [2, "⫏"], [0, "⫐"], [0, "⫑"], [0, "⫒"], [0, "⫓"], [0, "⫔"], [0, "⫕"], [0, "⫖"], [0, "⫗"], [0, "⫘"], [0, "⫙"], [0, "⫚"], [0, "⫛"], [8, "⫤"], [1, "⫦"], [0, "⫧"], [0, "⫨"], [0, "⫩"], [1, "⫫"], [0, "⫬"], [0, "⫭"], [0, "⫮"], [0, "⫯"], [0, "⫰"], [0, "⫱"], [0, "⫲"], [0, "⫳"], [9, { v: "⫽", n: 8421, o: "⫽⃥" }], [44343, { n: new Map(/* #__PURE__ */ restoreDiff([[56476, "𝒜"], [1, "𝒞"], [0, "𝒟"], [2, "𝒢"], [2, "𝒥"], [0, "𝒦"], [2, "𝒩"], [0, "𝒪"], [0, "𝒫"], [0, "𝒬"], [1, "𝒮"], [0, "𝒯"], [0, "𝒰"], [0, "𝒱"], [0, "𝒲"], [0, "𝒳"], [0, "𝒴"], [0, "𝒵"], [0, "𝒶"], [0, "𝒷"], [0, "𝒸"], [0, "𝒹"], [1, "𝒻"], [1, "𝒽"], [0, "𝒾"], [0, "𝒿"], [0, "𝓀"], [0, "𝓁"], [0, "𝓂"], [0, "𝓃"], [1, "𝓅"], [0, "𝓆"], [0, "𝓇"], [0, "𝓈"], [0, "𝓉"], [0, "𝓊"], [0, "𝓋"], [0, "𝓌"], [0, "𝓍"], [0, "𝓎"], [0, "𝓏"], [52, "𝔄"], [0, "𝔅"], [1, "𝔇"], [0, "𝔈"], [0, "𝔉"], [0, "𝔊"], [2, "𝔍"], [0, "𝔎"], [0, "𝔏"], [0, "𝔐"], [0, "𝔑"], [0, "𝔒"], [0, "𝔓"], [0, "𝔔"], [1, "𝔖"], [0, "𝔗"], [0, "𝔘"], [0, "𝔙"], [0, "𝔚"], [0, "𝔛"], [0, "𝔜"], [1, "𝔞"], [0, "𝔟"], [0, "𝔠"], [0, "𝔡"], [0, "𝔢"], [0, "𝔣"], [0, "𝔤"], [0, "𝔥"], [0, "𝔦"], [0, "𝔧"], [0, "𝔨"], [0, "𝔩"], [0, "𝔪"], [0, "𝔫"], [0, "𝔬"], [0, "𝔭"], [0, "𝔮"], [0, "𝔯"], [0, "𝔰"], [0, "𝔱"], [0, "𝔲"], [0, "𝔳"], [0, "𝔴"], [0, "𝔵"], [0, "𝔶"], [0, "𝔷"], [0, "𝔸"], [0, "𝔹"], [1, "𝔻"], [0, "𝔼"], [0, "𝔽"], [0, "𝔾"], [1, "𝕀"], [0, "𝕁"], [0, "𝕂"], [0, "𝕃"], [0, "𝕄"], [1, "𝕆"], [3, "𝕊"], [0, "𝕋"], [0, "𝕌"], [0, "𝕍"], [0, "𝕎"], [0, "𝕏"], [0, "𝕐"], [1, "𝕒"], [0, "𝕓"], [0, "𝕔"], [0, "𝕕"], [0, "𝕖"], [0, "𝕗"], [0, "𝕘"], [0, "𝕙"], [0, "𝕚"], [0, "𝕛"], [0, "𝕜"], [0, "𝕝"], [0, "𝕞"], [0, "𝕟"], [0, "𝕠"], [0, "𝕡"], [0, "𝕢"], [0, "𝕣"], [0, "𝕤"], [0, "𝕥"], [0, "𝕦"], [0, "𝕧"], [0, "𝕨"], [0, "𝕩"], [0, "𝕪"], [0, "𝕫"]])) }], [8906, "ff"], [0, "fi"], [0, "fl"], [0, "ffi"], [0, "ffl"]])));
|
|
115037
115578
|
//# sourceMappingURL=encode-html.js.map
|
|
115579
|
+
;// ./node_modules/entities/lib/esm/escape.js
|
|
115580
|
+
const esm_escape_xmlReplacer = /["&'<>$\x80-\uFFFF]/g;
|
|
115581
|
+
const escape_xmlCodeMap = new Map([
|
|
115582
|
+
[34, """],
|
|
115583
|
+
[38, "&"],
|
|
115584
|
+
[39, "'"],
|
|
115585
|
+
[60, "<"],
|
|
115586
|
+
[62, ">"],
|
|
115587
|
+
]);
|
|
115588
|
+
// For compatibility with node < 4, we wrap `codePointAt`
|
|
115589
|
+
const esm_escape_getCodePoint =
|
|
115590
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
115591
|
+
String.prototype.codePointAt != null
|
|
115592
|
+
? (str, index) => str.codePointAt(index)
|
|
115593
|
+
: // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
|
|
115594
|
+
(c, index) => (c.charCodeAt(index) & 0xfc00) === 0xd800
|
|
115595
|
+
? (c.charCodeAt(index) - 0xd800) * 0x400 +
|
|
115596
|
+
c.charCodeAt(index + 1) -
|
|
115597
|
+
0xdc00 +
|
|
115598
|
+
0x10000
|
|
115599
|
+
: c.charCodeAt(index);
|
|
115600
|
+
/**
|
|
115601
|
+
* Encodes all non-ASCII characters, as well as characters not valid in XML
|
|
115602
|
+
* documents using XML entities.
|
|
115603
|
+
*
|
|
115604
|
+
* If a character has no equivalent entity, a
|
|
115605
|
+
* numeric hexadecimal reference (eg. `ü`) will be used.
|
|
115606
|
+
*/
|
|
115607
|
+
function esm_escape_encodeXML(str) {
|
|
115608
|
+
let ret = "";
|
|
115609
|
+
let lastIdx = 0;
|
|
115610
|
+
let match;
|
|
115611
|
+
while ((match = esm_escape_xmlReplacer.exec(str)) !== null) {
|
|
115612
|
+
const i = match.index;
|
|
115613
|
+
const char = str.charCodeAt(i);
|
|
115614
|
+
const next = escape_xmlCodeMap.get(char);
|
|
115615
|
+
if (next !== undefined) {
|
|
115616
|
+
ret += str.substring(lastIdx, i) + next;
|
|
115617
|
+
lastIdx = i + 1;
|
|
115618
|
+
}
|
|
115619
|
+
else {
|
|
115620
|
+
ret += `${str.substring(lastIdx, i)}&#x${esm_escape_getCodePoint(str, i).toString(16)};`;
|
|
115621
|
+
// Increase by 1 if we have a surrogate pair
|
|
115622
|
+
lastIdx = esm_escape_xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800);
|
|
115623
|
+
}
|
|
115624
|
+
}
|
|
115625
|
+
return ret + str.substr(lastIdx);
|
|
115626
|
+
}
|
|
115627
|
+
/**
|
|
115628
|
+
* Encodes all non-ASCII characters, as well as characters not valid in XML
|
|
115629
|
+
* documents using numeric hexadecimal reference (eg. `ü`).
|
|
115630
|
+
*
|
|
115631
|
+
* Have a look at `escapeUTF8` if you want a more concise output at the expense
|
|
115632
|
+
* of reduced transportability.
|
|
115633
|
+
*
|
|
115634
|
+
* @param data String to escape.
|
|
115635
|
+
*/
|
|
115636
|
+
const esm_escape_escape = (/* unused pure expression or super */ null && (esm_escape_encodeXML));
|
|
115637
|
+
/**
|
|
115638
|
+
* Creates a function that escapes all characters matched by the given regular
|
|
115639
|
+
* expression using the given map of characters to escape to their entities.
|
|
115640
|
+
*
|
|
115641
|
+
* @param regex Regular expression to match characters to escape.
|
|
115642
|
+
* @param map Map of characters to escape to their entities.
|
|
115643
|
+
*
|
|
115644
|
+
* @returns Function that escapes all characters matched by the given regular
|
|
115645
|
+
* expression using the given map of characters to escape to their entities.
|
|
115646
|
+
*/
|
|
115647
|
+
function escape_getEscaper(regex, map) {
|
|
115648
|
+
return function escape(data) {
|
|
115649
|
+
let match;
|
|
115650
|
+
let lastIdx = 0;
|
|
115651
|
+
let result = "";
|
|
115652
|
+
while ((match = regex.exec(data))) {
|
|
115653
|
+
if (lastIdx !== match.index) {
|
|
115654
|
+
result += data.substring(lastIdx, match.index);
|
|
115655
|
+
}
|
|
115656
|
+
// We know that this character will be in the map.
|
|
115657
|
+
result += map.get(match[0].charCodeAt(0));
|
|
115658
|
+
// Every match will be of length 1
|
|
115659
|
+
lastIdx = match.index + 1;
|
|
115660
|
+
}
|
|
115661
|
+
return result + data.substring(lastIdx);
|
|
115662
|
+
};
|
|
115663
|
+
}
|
|
115664
|
+
/**
|
|
115665
|
+
* Encodes all characters not valid in XML documents using XML entities.
|
|
115666
|
+
*
|
|
115667
|
+
* Note that the output will be character-set dependent.
|
|
115668
|
+
*
|
|
115669
|
+
* @param data String to escape.
|
|
115670
|
+
*/
|
|
115671
|
+
const esm_escape_escapeUTF8 = escape_getEscaper(/[&<>'"]/g, escape_xmlCodeMap);
|
|
115672
|
+
/**
|
|
115673
|
+
* Encodes all characters that have to be escaped in HTML attributes,
|
|
115674
|
+
* following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
|
|
115675
|
+
*
|
|
115676
|
+
* @param data String to escape.
|
|
115677
|
+
*/
|
|
115678
|
+
const esm_escape_escapeAttribute = escape_getEscaper(/["&\u00A0]/g, new Map([
|
|
115679
|
+
[34, """],
|
|
115680
|
+
[38, "&"],
|
|
115681
|
+
[160, " "],
|
|
115682
|
+
]));
|
|
115683
|
+
/**
|
|
115684
|
+
* Encodes all characters that have to be escaped in HTML text,
|
|
115685
|
+
* following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.
|
|
115686
|
+
*
|
|
115687
|
+
* @param data String to escape.
|
|
115688
|
+
*/
|
|
115689
|
+
const esm_escape_escapeText = escape_getEscaper(/[&<>\u00A0]/g, new Map([
|
|
115690
|
+
[38, "&"],
|
|
115691
|
+
[60, "<"],
|
|
115692
|
+
[62, ">"],
|
|
115693
|
+
[160, " "],
|
|
115694
|
+
]));
|
|
115695
|
+
//# sourceMappingURL=escape.js.map
|
|
115038
115696
|
;// ./node_modules/entities/lib/esm/encode.js
|
|
115039
115697
|
|
|
115040
115698
|
|
|
@@ -115212,7 +115870,7 @@ const looseHtmlEntityConstruct = {
|
|
|
115212
115870
|
};
|
|
115213
115871
|
function resolveEntity(name) {
|
|
115214
115872
|
const input = `&${name};`;
|
|
115215
|
-
const decoded =
|
|
115873
|
+
const decoded = decode_decodeHTMLStrict(input);
|
|
115216
115874
|
return decoded !== input ? decoded : undefined;
|
|
115217
115875
|
}
|
|
115218
115876
|
function tokenizeLooseHtmlEntity(effects, ok, nok) {
|
|
@@ -116785,7 +117443,7 @@ const transformCallout = (jsx) => {
|
|
|
116785
117443
|
};
|
|
116786
117444
|
const transformEmbed = (jsx) => {
|
|
116787
117445
|
const attrs = getAttrs(jsx);
|
|
116788
|
-
const { favicon, height, html, iframe, image, providerName, providerUrl, title = '', typeOfEmbed, url = '', width, } = attrs;
|
|
117446
|
+
const { favicon, height, href, html, iframe, image, providerName, providerUrl, provider, title = '', typeOfEmbed, url = '', width, } = attrs;
|
|
116789
117447
|
return {
|
|
116790
117448
|
type: NodeTypes.embedBlock,
|
|
116791
117449
|
title,
|
|
@@ -116797,11 +117455,13 @@ const transformEmbed = (jsx) => {
|
|
|
116797
117455
|
url,
|
|
116798
117456
|
...(favicon && { favicon }),
|
|
116799
117457
|
...(height && { height }),
|
|
117458
|
+
...(href && { href }),
|
|
116800
117459
|
...(html && { html }),
|
|
116801
117460
|
...(iframe !== undefined && { iframe }),
|
|
116802
117461
|
...(image && { image }),
|
|
116803
117462
|
...(providerName && { providerName }),
|
|
116804
117463
|
...(providerUrl && { providerUrl }),
|
|
117464
|
+
...(provider && { provider }),
|
|
116805
117465
|
...(typeOfEmbed && { typeOfEmbed }),
|
|
116806
117466
|
...(width && { width }),
|
|
116807
117467
|
},
|
|
@@ -116865,7 +117525,7 @@ const transformMagicBlockImage = (node) => {
|
|
|
116865
117525
|
const transformMagicBlockEmbed = (node) => {
|
|
116866
117526
|
const { data, position } = node;
|
|
116867
117527
|
const hProps = data?.hProperties || {};
|
|
116868
|
-
const { favicon, html, image, providerName, providerUrl, title = '', url = '' } = hProps;
|
|
117528
|
+
const { favicon, height, href, html, iframe, image, provider, providerName, providerUrl, title = '', typeOfEmbed, url = '', width, } = hProps;
|
|
116869
117529
|
return {
|
|
116870
117530
|
type: NodeTypes.embedBlock,
|
|
116871
117531
|
title,
|
|
@@ -116876,20 +117536,81 @@ const transformMagicBlockEmbed = (node) => {
|
|
|
116876
117536
|
title,
|
|
116877
117537
|
url,
|
|
116878
117538
|
...(favicon && { favicon }),
|
|
117539
|
+
...(height && { height }),
|
|
117540
|
+
...(href && { href }),
|
|
116879
117541
|
...(html && { html }),
|
|
117542
|
+
...(iframe !== undefined && { iframe }),
|
|
116880
117543
|
...(image && { image }),
|
|
117544
|
+
...(typeOfEmbed && { typeOfEmbed }),
|
|
116881
117545
|
...(providerName && { providerName }),
|
|
116882
117546
|
...(providerUrl && { providerUrl }),
|
|
117547
|
+
...(provider && { provider }),
|
|
117548
|
+
...(width && { width }),
|
|
116883
117549
|
},
|
|
116884
117550
|
},
|
|
116885
117551
|
position,
|
|
116886
117552
|
};
|
|
116887
117553
|
};
|
|
117554
|
+
const mdxish_jsx_to_mdast_isTableCell = (node) => isMDXElement(node) && ['th', 'td'].includes(node.name);
|
|
117555
|
+
/**
|
|
117556
|
+
* Converts a JSX <Table> element to an MDAST table node with alignment.
|
|
117557
|
+
* Returns null for header-less tables since MDAST always promotes the first row to <thead>.
|
|
117558
|
+
*/
|
|
117559
|
+
const transformTable = (jsx) => {
|
|
117560
|
+
let hasThead = false;
|
|
117561
|
+
visit(jsx, isMDXElement, (child) => {
|
|
117562
|
+
if (child.name === 'thead')
|
|
117563
|
+
hasThead = true;
|
|
117564
|
+
});
|
|
117565
|
+
if (!hasThead)
|
|
117566
|
+
return null;
|
|
117567
|
+
const { align: alignAttr } = getAttrs(jsx);
|
|
117568
|
+
const align = Array.isArray(alignAttr) ? alignAttr : null;
|
|
117569
|
+
const rows = [];
|
|
117570
|
+
visit(jsx, isMDXElement, (child) => {
|
|
117571
|
+
if (child.name !== 'thead' && child.name !== 'tbody')
|
|
117572
|
+
return;
|
|
117573
|
+
visit(child, isMDXElement, (row) => {
|
|
117574
|
+
if (row.name !== 'tr')
|
|
117575
|
+
return;
|
|
117576
|
+
const cells = [];
|
|
117577
|
+
visit(row, mdxish_jsx_to_mdast_isTableCell, (cell) => {
|
|
117578
|
+
const parsedChildren = cell.children.flatMap(parsedNode => {
|
|
117579
|
+
if (parsedNode.type === 'paragraph' && 'children' in parsedNode && parsedNode.children) {
|
|
117580
|
+
return parsedNode.children;
|
|
117581
|
+
}
|
|
117582
|
+
return [parsedNode];
|
|
117583
|
+
});
|
|
117584
|
+
cells.push({
|
|
117585
|
+
type: 'tableCell',
|
|
117586
|
+
children: parsedChildren,
|
|
117587
|
+
position: cell.position,
|
|
117588
|
+
});
|
|
117589
|
+
});
|
|
117590
|
+
rows.push({
|
|
117591
|
+
type: 'tableRow',
|
|
117592
|
+
children: cells,
|
|
117593
|
+
position: row.position,
|
|
117594
|
+
});
|
|
117595
|
+
});
|
|
117596
|
+
});
|
|
117597
|
+
const columnCount = rows[0]?.children?.length || 0;
|
|
117598
|
+
const alignArray = align && columnCount > 0
|
|
117599
|
+
? align.slice(0, columnCount).concat(Array.from({ length: Math.max(0, columnCount - align.length) }, () => null))
|
|
117600
|
+
: Array.from({ length: columnCount }, () => null);
|
|
117601
|
+
return {
|
|
117602
|
+
type: 'table',
|
|
117603
|
+
align: alignArray,
|
|
117604
|
+
position: jsx.position,
|
|
117605
|
+
children: rows,
|
|
117606
|
+
};
|
|
117607
|
+
};
|
|
116888
117608
|
const COMPONENT_MAP = {
|
|
116889
117609
|
Callout: transformCallout,
|
|
116890
117610
|
Embed: transformEmbed,
|
|
116891
117611
|
Image: transformImage,
|
|
116892
117612
|
Recipe: transformRecipe,
|
|
117613
|
+
Table: transformTable,
|
|
116893
117614
|
};
|
|
116894
117615
|
/**
|
|
116895
117616
|
* Transform mdxJsxFlowElement nodes and magic block nodes into proper MDAST node types.
|
|
@@ -116912,6 +117633,8 @@ const mdxishJsxToMdast = () => tree => {
|
|
|
116912
117633
|
if (!transformer)
|
|
116913
117634
|
return;
|
|
116914
117635
|
const newNode = transformer(node);
|
|
117636
|
+
if (!newNode)
|
|
117637
|
+
return;
|
|
116915
117638
|
// Replace the JSX node with the MDAST node
|
|
116916
117639
|
parent.children[index] = newNode;
|
|
116917
117640
|
});
|
|
@@ -117048,6 +117771,74 @@ const mdxishMermaidTransformer = () => (tree) => {
|
|
|
117048
117771
|
};
|
|
117049
117772
|
/* harmony default export */ const mdxish_mermaid = (mdxishMermaidTransformer);
|
|
117050
117773
|
|
|
117774
|
+
;// ./processor/transform/mdxish/mdxish-self-closing-blocks.ts
|
|
117775
|
+
|
|
117776
|
+
|
|
117777
|
+
/**
|
|
117778
|
+
* Tags to process as self-closing blocks.
|
|
117779
|
+
* These components use simple string attributes (no JSX expressions like `data={[...]}`).
|
|
117780
|
+
* Components with JSX expression attributes should NOT be added here as parseAttributes
|
|
117781
|
+
* cannot handle them correctly.
|
|
117782
|
+
*/
|
|
117783
|
+
const SELF_CLOSING_BLOCK_TAGS = new Set(['Embed', 'Recipe']);
|
|
117784
|
+
// Regex to match self-closing PascalCase tags (handles multi-line)
|
|
117785
|
+
const selfClosingTagPattern = /^<([A-Z][A-Za-z0-9_]*)([\s\S]*?)\/>$/;
|
|
117786
|
+
/**
|
|
117787
|
+
* Try to convert a paragraph node containing a self-closing JSX component into an mdxJsxFlowElement.
|
|
117788
|
+
* Returns the new node if conversion succeeded, or null if the node doesn't match.
|
|
117789
|
+
*/
|
|
117790
|
+
const tryConvertToMdxNode = (node) => {
|
|
117791
|
+
if (node.children.length !== 1)
|
|
117792
|
+
return null;
|
|
117793
|
+
const child = node.children[0];
|
|
117794
|
+
if (child.type !== 'html')
|
|
117795
|
+
return null;
|
|
117796
|
+
const value = child.value?.trim();
|
|
117797
|
+
if (!value)
|
|
117798
|
+
return null;
|
|
117799
|
+
const match = value.match(selfClosingTagPattern);
|
|
117800
|
+
if (!match)
|
|
117801
|
+
return null;
|
|
117802
|
+
const [, tag, attrString] = match;
|
|
117803
|
+
if (!SELF_CLOSING_BLOCK_TAGS.has(tag))
|
|
117804
|
+
return null;
|
|
117805
|
+
return {
|
|
117806
|
+
type: 'mdxJsxFlowElement',
|
|
117807
|
+
name: tag,
|
|
117808
|
+
attributes: parseAttributes(attrString),
|
|
117809
|
+
children: [],
|
|
117810
|
+
position: node.position,
|
|
117811
|
+
};
|
|
117812
|
+
};
|
|
117813
|
+
/**
|
|
117814
|
+
* Transform paragraph-wrapped self-closing JSX components into mdxJsxFlowElement nodes.
|
|
117815
|
+
*
|
|
117816
|
+
* CommonMark wraps multi-line JSX in paragraphs when the opening tag isn't complete
|
|
117817
|
+
* on one line. This plugin detects these structures and unwraps them for components
|
|
117818
|
+
* in the SELF_CLOSING_BLOCK_TAGS allowlist.
|
|
117819
|
+
*
|
|
117820
|
+
* Input structure:
|
|
117821
|
+
* ```
|
|
117822
|
+
* paragraph > html: "<Embed\n typeOfEmbed=\"youtube\"\n/>"
|
|
117823
|
+
* ```
|
|
117824
|
+
*
|
|
117825
|
+
* Output structure:
|
|
117826
|
+
* ```
|
|
117827
|
+
* mdxJsxFlowElement: { name: "Embed", attributes: [...], children: [] }
|
|
117828
|
+
* ```
|
|
117829
|
+
*/
|
|
117830
|
+
const mdxishSelfClosingBlocks = () => tree => {
|
|
117831
|
+
visit(tree, 'paragraph', (node, index, parent) => {
|
|
117832
|
+
if (index === undefined || !parent)
|
|
117833
|
+
return;
|
|
117834
|
+
const mdxNode = tryConvertToMdxNode(node);
|
|
117835
|
+
if (mdxNode) {
|
|
117836
|
+
parent.children.splice(index, 1, mdxNode);
|
|
117837
|
+
}
|
|
117838
|
+
});
|
|
117839
|
+
};
|
|
117840
|
+
/* harmony default export */ const mdxish_self_closing_blocks = (mdxishSelfClosingBlocks);
|
|
117841
|
+
|
|
117051
117842
|
;// ./processor/transform/mdxish/mdxish-snake-case-components.ts
|
|
117052
117843
|
|
|
117053
117844
|
|
|
@@ -117124,6 +117915,126 @@ function restoreSnakeCase(placeholderName, mapping) {
|
|
|
117124
117915
|
return matchingKey ? mapping[matchingKey] : placeholderName;
|
|
117125
117916
|
}
|
|
117126
117917
|
|
|
117918
|
+
;// ./processor/transform/mdxish/mdxish-tables-to-jsx.ts
|
|
117919
|
+
|
|
117920
|
+
|
|
117921
|
+
const mdxish_tables_to_jsx_alignToStyle = (align) => {
|
|
117922
|
+
if (!align || align === 'left')
|
|
117923
|
+
return null;
|
|
117924
|
+
return {
|
|
117925
|
+
type: 'mdxJsxAttribute',
|
|
117926
|
+
name: 'style',
|
|
117927
|
+
value: {
|
|
117928
|
+
type: 'mdxJsxAttributeValueExpression',
|
|
117929
|
+
value: `{ textAlign: "${align}" }`,
|
|
117930
|
+
},
|
|
117931
|
+
};
|
|
117932
|
+
};
|
|
117933
|
+
const mdxish_tables_to_jsx_isTableCell = (node) => ['tableHead', 'tableCell'].includes(node.type);
|
|
117934
|
+
const mdxish_tables_to_jsx_isLiteral = (node) => 'value' in node;
|
|
117935
|
+
/**
|
|
117936
|
+
* Mdxish-specific version of `tablesToJsx`. Differs from the shared MDX version:
|
|
117937
|
+
*
|
|
117938
|
+
* - Excludes `html` nodes from triggering JSX conversion because raw HTML
|
|
117939
|
+
* inside JSX `<Table>` breaks remarkMdx parsing on the deserialization roundtrip.
|
|
117940
|
+
* - Skips empty cells instead of aborting the entire visit so that flow content
|
|
117941
|
+
* in later cells is still detected.
|
|
117942
|
+
*/
|
|
117943
|
+
const mdxishTablesToJsx = () => tree => {
|
|
117944
|
+
visit(tree, (node) => ['table', 'tableau'].includes(node.type), (table, index, parent) => {
|
|
117945
|
+
let hasFlowContent = false;
|
|
117946
|
+
visit(table, mdxish_tables_to_jsx_isTableCell, (cell) => {
|
|
117947
|
+
if (cell.children.length === 0)
|
|
117948
|
+
return;
|
|
117949
|
+
const content = cell.children.length === 1 && cell.children[0].type === 'paragraph'
|
|
117950
|
+
? cell.children[0].children[0]
|
|
117951
|
+
: cell.children[0];
|
|
117952
|
+
if (!content)
|
|
117953
|
+
return;
|
|
117954
|
+
visit(cell, 'break', (_, breakIndex, breakParent) => {
|
|
117955
|
+
breakParent.children.splice(breakIndex, 1, { type: 'text', value: '\n' });
|
|
117956
|
+
});
|
|
117957
|
+
if (!(phrasing(content) || content.type === 'plain') && content.type !== 'escape') {
|
|
117958
|
+
if (content.type === 'html')
|
|
117959
|
+
return;
|
|
117960
|
+
hasFlowContent = true;
|
|
117961
|
+
return EXIT;
|
|
117962
|
+
}
|
|
117963
|
+
visit(cell, mdxish_tables_to_jsx_isLiteral, (node) => {
|
|
117964
|
+
if (node.value.match(/\n/)) {
|
|
117965
|
+
hasFlowContent = true;
|
|
117966
|
+
return EXIT;
|
|
117967
|
+
}
|
|
117968
|
+
});
|
|
117969
|
+
});
|
|
117970
|
+
if (!hasFlowContent) {
|
|
117971
|
+
table.type = 'table';
|
|
117972
|
+
return;
|
|
117973
|
+
}
|
|
117974
|
+
const styles = table.align.map(mdxish_tables_to_jsx_alignToStyle);
|
|
117975
|
+
const head = {
|
|
117976
|
+
attributes: [],
|
|
117977
|
+
type: 'mdxJsxFlowElement',
|
|
117978
|
+
name: 'thead',
|
|
117979
|
+
children: [
|
|
117980
|
+
{
|
|
117981
|
+
attributes: [],
|
|
117982
|
+
type: 'mdxJsxFlowElement',
|
|
117983
|
+
name: 'tr',
|
|
117984
|
+
children: table.children[0].children.map((cell, cellIndex) => {
|
|
117985
|
+
return {
|
|
117986
|
+
attributes: [],
|
|
117987
|
+
type: 'mdxJsxFlowElement',
|
|
117988
|
+
name: 'th',
|
|
117989
|
+
children: cell.children,
|
|
117990
|
+
...(styles[cellIndex] && { attributes: [styles[cellIndex]] }),
|
|
117991
|
+
};
|
|
117992
|
+
}),
|
|
117993
|
+
},
|
|
117994
|
+
],
|
|
117995
|
+
};
|
|
117996
|
+
const body = {
|
|
117997
|
+
attributes: [],
|
|
117998
|
+
type: 'mdxJsxFlowElement',
|
|
117999
|
+
name: 'tbody',
|
|
118000
|
+
children: table.children.splice(1).map(row => {
|
|
118001
|
+
return {
|
|
118002
|
+
attributes: [],
|
|
118003
|
+
type: 'mdxJsxFlowElement',
|
|
118004
|
+
name: 'tr',
|
|
118005
|
+
children: row.children.map((cell, cellIndex) => {
|
|
118006
|
+
return {
|
|
118007
|
+
type: 'mdxJsxFlowElement',
|
|
118008
|
+
name: 'td',
|
|
118009
|
+
children: cell.children,
|
|
118010
|
+
...(styles[cellIndex] && { attributes: [styles[cellIndex]] }),
|
|
118011
|
+
};
|
|
118012
|
+
}),
|
|
118013
|
+
};
|
|
118014
|
+
}),
|
|
118015
|
+
};
|
|
118016
|
+
const attributes = [
|
|
118017
|
+
{
|
|
118018
|
+
type: 'mdxJsxAttribute',
|
|
118019
|
+
name: 'align',
|
|
118020
|
+
value: {
|
|
118021
|
+
type: 'mdxJsxAttributeValueExpression',
|
|
118022
|
+
value: JSON.stringify(table.align),
|
|
118023
|
+
},
|
|
118024
|
+
},
|
|
118025
|
+
];
|
|
118026
|
+
const jsx = {
|
|
118027
|
+
type: 'mdxJsxFlowElement',
|
|
118028
|
+
name: 'Table',
|
|
118029
|
+
attributes: table.align.find(a => a) ? attributes : [],
|
|
118030
|
+
children: [head, body],
|
|
118031
|
+
};
|
|
118032
|
+
parent.children[index] = jsx;
|
|
118033
|
+
});
|
|
118034
|
+
return tree;
|
|
118035
|
+
};
|
|
118036
|
+
/* harmony default export */ const mdxish_tables_to_jsx = (mdxishTablesToJsx);
|
|
118037
|
+
|
|
117127
118038
|
;// ./processor/transform/mdxish/normalize-table-separator.ts
|
|
117128
118039
|
/**
|
|
117129
118040
|
* Preprocessor to normalize malformed GFM table separator syntax.
|
|
@@ -119290,6 +120201,9 @@ function loadComponents() {
|
|
|
119290
120201
|
|
|
119291
120202
|
|
|
119292
120203
|
|
|
120204
|
+
|
|
120205
|
+
|
|
120206
|
+
|
|
119293
120207
|
|
|
119294
120208
|
|
|
119295
120209
|
|
|
@@ -119367,6 +120281,7 @@ function mdxishAstProcessor(mdContent, opts = {}) {
|
|
|
119367
120281
|
.use(magic_block_transformer)
|
|
119368
120282
|
.use(transform_images, { isMdxish: true })
|
|
119369
120283
|
.use(defaultTransformers)
|
|
120284
|
+
.use(mdxish_self_closing_blocks)
|
|
119370
120285
|
.use(mdxish_component_blocks)
|
|
119371
120286
|
.use(restore_snake_case_component_name, { mapping: snakeCaseMapping })
|
|
119372
120287
|
.use(mdxish_tables)
|
|
@@ -119387,18 +120302,28 @@ function mdxishAstProcessor(mdContent, opts = {}) {
|
|
|
119387
120302
|
};
|
|
119388
120303
|
}
|
|
119389
120304
|
/**
|
|
119390
|
-
*
|
|
120305
|
+
* Registers the mdx-jsx serialization extension so remark-stringify
|
|
120306
|
+
* can convert JSX nodes (e.g. `<Table>`) to markdown.
|
|
120307
|
+
*/
|
|
120308
|
+
function mdxJsxStringify() {
|
|
120309
|
+
const data = this.data();
|
|
120310
|
+
const extensions = data.toMarkdownExtensions || (data.toMarkdownExtensions = []);
|
|
120311
|
+
extensions.push({ extensions: [mdxJsxToMarkdown()] });
|
|
120312
|
+
}
|
|
120313
|
+
/**
|
|
120314
|
+
* Serializes an Mdast back into a markdown string.
|
|
119391
120315
|
*/
|
|
119392
120316
|
function mdxishMdastToMd(mdast) {
|
|
119393
|
-
const
|
|
120317
|
+
const processor = unified()
|
|
119394
120318
|
.use(remarkGfm)
|
|
120319
|
+
.use(mdxish_tables_to_jsx)
|
|
119395
120320
|
.use(mdxishCompilers)
|
|
120321
|
+
.use(mdxJsxStringify)
|
|
119396
120322
|
.use(remarkStringify, {
|
|
119397
120323
|
bullet: '-',
|
|
119398
120324
|
emphasis: '_',
|
|
119399
|
-
})
|
|
119400
|
-
|
|
119401
|
-
return md;
|
|
120325
|
+
});
|
|
120326
|
+
return processor.stringify(processor.runSync(mdast));
|
|
119402
120327
|
}
|
|
119403
120328
|
/**
|
|
119404
120329
|
* Processes markdown content with MDX syntax support and returns a HAST.
|
|
@@ -120072,6 +120997,7 @@ const utils = {
|
|
|
120072
120997
|
|
|
120073
120998
|
|
|
120074
120999
|
|
|
121000
|
+
|
|
120075
121001
|
})();
|
|
120076
121002
|
|
|
120077
121003
|
module.exports = __webpack_exports__;
|