@vue/compiler-vapor 3.6.0-alpha.7 → 3.6.0-beta.1
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/dist/compiler-vapor.cjs.js +150 -39
- package/dist/compiler-vapor.esm-browser.js +2464 -266
- package/package.json +3 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @vue/compiler-vapor v3.6.0-
|
|
2
|
+
* @vue/compiler-vapor v3.6.0-beta.1
|
|
3
3
|
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
4
4
|
* @license MIT
|
|
5
5
|
**/
|
|
@@ -21,7 +21,7 @@ const remove = (arr, el) => {
|
|
|
21
21
|
arr.splice(i, 1);
|
|
22
22
|
}
|
|
23
23
|
};
|
|
24
|
-
const isArray = Array.isArray;
|
|
24
|
+
const isArray$1 = Array.isArray;
|
|
25
25
|
const isString = (val) => typeof val === "string";
|
|
26
26
|
const isBuiltInDirective = /* @__PURE__ */ makeMap(
|
|
27
27
|
"bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"
|
|
@@ -133,10 +133,10 @@ function escapeHtml(string) {
|
|
|
133
133
|
return lastIndex !== index ? html + str.slice(lastIndex, index) : html;
|
|
134
134
|
}
|
|
135
135
|
|
|
136
|
-
const TELEPORT = Symbol(`Teleport` );
|
|
137
|
-
const SUSPENSE = Symbol(`Suspense` );
|
|
138
|
-
const KEEP_ALIVE = Symbol(`KeepAlive` );
|
|
139
|
-
const BASE_TRANSITION = Symbol(
|
|
136
|
+
const TELEPORT = /* @__PURE__ */ Symbol(`Teleport` );
|
|
137
|
+
const SUSPENSE = /* @__PURE__ */ Symbol(`Suspense` );
|
|
138
|
+
const KEEP_ALIVE = /* @__PURE__ */ Symbol(`KeepAlive` );
|
|
139
|
+
const BASE_TRANSITION = /* @__PURE__ */ Symbol(
|
|
140
140
|
`BaseTransition`
|
|
141
141
|
);
|
|
142
142
|
function registerRuntimeHelpers(helpers) {
|
|
@@ -175,81 +175,2098 @@ function createSimpleExpression(content, isStatic = false, loc = locStub, constT
|
|
|
175
175
|
};
|
|
176
176
|
}
|
|
177
177
|
|
|
178
|
-
//
|
|
179
|
-
var
|
|
180
|
-
|
|
181
|
-
"\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"
|
|
182
|
-
|
|
183
|
-
|
|
178
|
+
// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134
|
|
179
|
+
var _a;
|
|
180
|
+
const decodeMap = new Map([
|
|
181
|
+
[0, 65533],
|
|
182
|
+
// C1 Unicode control character reference replacements
|
|
183
|
+
[128, 8364],
|
|
184
|
+
[130, 8218],
|
|
185
|
+
[131, 402],
|
|
186
|
+
[132, 8222],
|
|
187
|
+
[133, 8230],
|
|
188
|
+
[134, 8224],
|
|
189
|
+
[135, 8225],
|
|
190
|
+
[136, 710],
|
|
191
|
+
[137, 8240],
|
|
192
|
+
[138, 352],
|
|
193
|
+
[139, 8249],
|
|
194
|
+
[140, 338],
|
|
195
|
+
[142, 381],
|
|
196
|
+
[145, 8216],
|
|
197
|
+
[146, 8217],
|
|
198
|
+
[147, 8220],
|
|
199
|
+
[148, 8221],
|
|
200
|
+
[149, 8226],
|
|
201
|
+
[150, 8211],
|
|
202
|
+
[151, 8212],
|
|
203
|
+
[152, 732],
|
|
204
|
+
[153, 8482],
|
|
205
|
+
[154, 353],
|
|
206
|
+
[155, 8250],
|
|
207
|
+
[156, 339],
|
|
208
|
+
[158, 382],
|
|
209
|
+
[159, 376],
|
|
210
|
+
]);
|
|
211
|
+
/**
|
|
212
|
+
* Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.
|
|
213
|
+
*/
|
|
214
|
+
const fromCodePoint =
|
|
215
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins
|
|
216
|
+
(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : ((codePoint) => {
|
|
217
|
+
let output = "";
|
|
218
|
+
if (codePoint > 65535) {
|
|
219
|
+
codePoint -= 65536;
|
|
220
|
+
output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296);
|
|
221
|
+
codePoint = 56320 | (codePoint & 1023);
|
|
222
|
+
}
|
|
223
|
+
output += String.fromCharCode(codePoint);
|
|
224
|
+
return output;
|
|
225
|
+
});
|
|
226
|
+
/**
|
|
227
|
+
* Replace the given code point with a replacement character if it is a
|
|
228
|
+
* surrogate or is outside the valid range. Otherwise return the code
|
|
229
|
+
* point unchanged.
|
|
230
|
+
*/
|
|
231
|
+
function replaceCodePoint(codePoint) {
|
|
232
|
+
var _a;
|
|
233
|
+
if ((codePoint >= 55296 && codePoint <= 57343) ||
|
|
234
|
+
codePoint > 1114111) {
|
|
235
|
+
return 65533;
|
|
236
|
+
}
|
|
237
|
+
return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
var global$1 = (typeof global !== "undefined" ? global :
|
|
241
|
+
typeof self !== "undefined" ? self :
|
|
242
|
+
typeof window !== "undefined" ? window : {});
|
|
243
|
+
|
|
244
|
+
var lookup = [];
|
|
245
|
+
var revLookup = [];
|
|
246
|
+
var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;
|
|
247
|
+
var inited = false;
|
|
248
|
+
function init () {
|
|
249
|
+
inited = true;
|
|
250
|
+
var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
|
251
|
+
for (var i = 0, len = code.length; i < len; ++i) {
|
|
252
|
+
lookup[i] = code[i];
|
|
253
|
+
revLookup[code.charCodeAt(i)] = i;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
revLookup['-'.charCodeAt(0)] = 62;
|
|
257
|
+
revLookup['_'.charCodeAt(0)] = 63;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
function toByteArray (b64) {
|
|
261
|
+
if (!inited) {
|
|
262
|
+
init();
|
|
263
|
+
}
|
|
264
|
+
var i, j, l, tmp, placeHolders, arr;
|
|
265
|
+
var len = b64.length;
|
|
266
|
+
|
|
267
|
+
if (len % 4 > 0) {
|
|
268
|
+
throw new Error('Invalid string. Length must be a multiple of 4')
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
// the number of equal signs (place holders)
|
|
272
|
+
// if there are two placeholders, than the two characters before it
|
|
273
|
+
// represent one byte
|
|
274
|
+
// if there is only one, then the three characters before it represent 2 bytes
|
|
275
|
+
// this is just a cheap hack to not do indexOf twice
|
|
276
|
+
placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0;
|
|
277
|
+
|
|
278
|
+
// base64 is 4/3 + up to two characters of the original data
|
|
279
|
+
arr = new Arr(len * 3 / 4 - placeHolders);
|
|
280
|
+
|
|
281
|
+
// if there are placeholders, only get up to the last complete 4 chars
|
|
282
|
+
l = placeHolders > 0 ? len - 4 : len;
|
|
283
|
+
|
|
284
|
+
var L = 0;
|
|
285
|
+
|
|
286
|
+
for (i = 0, j = 0; i < l; i += 4, j += 3) {
|
|
287
|
+
tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)];
|
|
288
|
+
arr[L++] = (tmp >> 16) & 0xFF;
|
|
289
|
+
arr[L++] = (tmp >> 8) & 0xFF;
|
|
290
|
+
arr[L++] = tmp & 0xFF;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
if (placeHolders === 2) {
|
|
294
|
+
tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4);
|
|
295
|
+
arr[L++] = tmp & 0xFF;
|
|
296
|
+
} else if (placeHolders === 1) {
|
|
297
|
+
tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2);
|
|
298
|
+
arr[L++] = (tmp >> 8) & 0xFF;
|
|
299
|
+
arr[L++] = tmp & 0xFF;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
return arr
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
function tripletToBase64 (num) {
|
|
306
|
+
return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
function encodeChunk (uint8, start, end) {
|
|
310
|
+
var tmp;
|
|
311
|
+
var output = [];
|
|
312
|
+
for (var i = start; i < end; i += 3) {
|
|
313
|
+
tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]);
|
|
314
|
+
output.push(tripletToBase64(tmp));
|
|
315
|
+
}
|
|
316
|
+
return output.join('')
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
function fromByteArray (uint8) {
|
|
320
|
+
if (!inited) {
|
|
321
|
+
init();
|
|
322
|
+
}
|
|
323
|
+
var tmp;
|
|
324
|
+
var len = uint8.length;
|
|
325
|
+
var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes
|
|
326
|
+
var output = '';
|
|
327
|
+
var parts = [];
|
|
328
|
+
var maxChunkLength = 16383; // must be multiple of 3
|
|
329
|
+
|
|
330
|
+
// go through the array every three bytes, we'll deal with trailing stuff later
|
|
331
|
+
for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
|
|
332
|
+
parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
// pad the end with zeros, but make sure to not forget the extra bytes
|
|
336
|
+
if (extraBytes === 1) {
|
|
337
|
+
tmp = uint8[len - 1];
|
|
338
|
+
output += lookup[tmp >> 2];
|
|
339
|
+
output += lookup[(tmp << 4) & 0x3F];
|
|
340
|
+
output += '==';
|
|
341
|
+
} else if (extraBytes === 2) {
|
|
342
|
+
tmp = (uint8[len - 2] << 8) + (uint8[len - 1]);
|
|
343
|
+
output += lookup[tmp >> 10];
|
|
344
|
+
output += lookup[(tmp >> 4) & 0x3F];
|
|
345
|
+
output += lookup[(tmp << 2) & 0x3F];
|
|
346
|
+
output += '=';
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
parts.push(output);
|
|
350
|
+
|
|
351
|
+
return parts.join('')
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
function read (buffer, offset, isLE, mLen, nBytes) {
|
|
355
|
+
var e, m;
|
|
356
|
+
var eLen = nBytes * 8 - mLen - 1;
|
|
357
|
+
var eMax = (1 << eLen) - 1;
|
|
358
|
+
var eBias = eMax >> 1;
|
|
359
|
+
var nBits = -7;
|
|
360
|
+
var i = isLE ? (nBytes - 1) : 0;
|
|
361
|
+
var d = isLE ? -1 : 1;
|
|
362
|
+
var s = buffer[offset + i];
|
|
363
|
+
|
|
364
|
+
i += d;
|
|
365
|
+
|
|
366
|
+
e = s & ((1 << (-nBits)) - 1);
|
|
367
|
+
s >>= (-nBits);
|
|
368
|
+
nBits += eLen;
|
|
369
|
+
for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
|
|
370
|
+
|
|
371
|
+
m = e & ((1 << (-nBits)) - 1);
|
|
372
|
+
e >>= (-nBits);
|
|
373
|
+
nBits += mLen;
|
|
374
|
+
for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
|
|
375
|
+
|
|
376
|
+
if (e === 0) {
|
|
377
|
+
e = 1 - eBias;
|
|
378
|
+
} else if (e === eMax) {
|
|
379
|
+
return m ? NaN : ((s ? -1 : 1) * Infinity)
|
|
380
|
+
} else {
|
|
381
|
+
m = m + Math.pow(2, mLen);
|
|
382
|
+
e = e - eBias;
|
|
383
|
+
}
|
|
384
|
+
return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
function write (buffer, value, offset, isLE, mLen, nBytes) {
|
|
388
|
+
var e, m, c;
|
|
389
|
+
var eLen = nBytes * 8 - mLen - 1;
|
|
390
|
+
var eMax = (1 << eLen) - 1;
|
|
391
|
+
var eBias = eMax >> 1;
|
|
392
|
+
var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);
|
|
393
|
+
var i = isLE ? 0 : (nBytes - 1);
|
|
394
|
+
var d = isLE ? 1 : -1;
|
|
395
|
+
var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;
|
|
396
|
+
|
|
397
|
+
value = Math.abs(value);
|
|
398
|
+
|
|
399
|
+
if (isNaN(value) || value === Infinity) {
|
|
400
|
+
m = isNaN(value) ? 1 : 0;
|
|
401
|
+
e = eMax;
|
|
402
|
+
} else {
|
|
403
|
+
e = Math.floor(Math.log(value) / Math.LN2);
|
|
404
|
+
if (value * (c = Math.pow(2, -e)) < 1) {
|
|
405
|
+
e--;
|
|
406
|
+
c *= 2;
|
|
407
|
+
}
|
|
408
|
+
if (e + eBias >= 1) {
|
|
409
|
+
value += rt / c;
|
|
410
|
+
} else {
|
|
411
|
+
value += rt * Math.pow(2, 1 - eBias);
|
|
412
|
+
}
|
|
413
|
+
if (value * c >= 2) {
|
|
414
|
+
e++;
|
|
415
|
+
c /= 2;
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
if (e + eBias >= eMax) {
|
|
419
|
+
m = 0;
|
|
420
|
+
e = eMax;
|
|
421
|
+
} else if (e + eBias >= 1) {
|
|
422
|
+
m = (value * c - 1) * Math.pow(2, mLen);
|
|
423
|
+
e = e + eBias;
|
|
424
|
+
} else {
|
|
425
|
+
m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);
|
|
426
|
+
e = 0;
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
|
|
431
|
+
|
|
432
|
+
e = (e << mLen) | m;
|
|
433
|
+
eLen += mLen;
|
|
434
|
+
for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
|
|
435
|
+
|
|
436
|
+
buffer[offset + i - d] |= s * 128;
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
var toString = {}.toString;
|
|
440
|
+
|
|
441
|
+
var isArray = Array.isArray || function (arr) {
|
|
442
|
+
return toString.call(arr) == '[object Array]';
|
|
443
|
+
};
|
|
444
|
+
|
|
445
|
+
/*!
|
|
446
|
+
* The buffer module from node.js, for the browser.
|
|
447
|
+
*
|
|
448
|
+
* @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
|
|
449
|
+
* @license MIT
|
|
450
|
+
*/
|
|
451
|
+
/* eslint-disable no-proto */
|
|
452
|
+
|
|
453
|
+
|
|
454
|
+
var INSPECT_MAX_BYTES = 50;
|
|
455
|
+
|
|
456
|
+
/**
|
|
457
|
+
* If `Buffer.TYPED_ARRAY_SUPPORT`:
|
|
458
|
+
* === true Use Uint8Array implementation (fastest)
|
|
459
|
+
* === false Use Object implementation (most compatible, even IE6)
|
|
460
|
+
*
|
|
461
|
+
* Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
|
|
462
|
+
* Opera 11.6+, iOS 4.2+.
|
|
463
|
+
*
|
|
464
|
+
* Due to various browser bugs, sometimes the Object implementation will be used even
|
|
465
|
+
* when the browser supports typed arrays.
|
|
466
|
+
*
|
|
467
|
+
* Note:
|
|
468
|
+
*
|
|
469
|
+
* - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
|
|
470
|
+
* See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
|
|
471
|
+
*
|
|
472
|
+
* - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
|
|
473
|
+
*
|
|
474
|
+
* - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
|
|
475
|
+
* incorrect length in some situations.
|
|
476
|
+
|
|
477
|
+
* We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
|
|
478
|
+
* get the Object implementation, which is slower but behaves correctly.
|
|
479
|
+
*/
|
|
480
|
+
Buffer.TYPED_ARRAY_SUPPORT = global$1.TYPED_ARRAY_SUPPORT !== undefined
|
|
481
|
+
? global$1.TYPED_ARRAY_SUPPORT
|
|
482
|
+
: true;
|
|
483
|
+
|
|
484
|
+
/*
|
|
485
|
+
* Export kMaxLength after typed array support is determined.
|
|
486
|
+
*/
|
|
487
|
+
kMaxLength();
|
|
488
|
+
|
|
489
|
+
function kMaxLength () {
|
|
490
|
+
return Buffer.TYPED_ARRAY_SUPPORT
|
|
491
|
+
? 0x7fffffff
|
|
492
|
+
: 0x3fffffff
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
function createBuffer (that, length) {
|
|
496
|
+
if (kMaxLength() < length) {
|
|
497
|
+
throw new RangeError('Invalid typed array length')
|
|
498
|
+
}
|
|
499
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
|
500
|
+
// Return an augmented `Uint8Array` instance, for best performance
|
|
501
|
+
that = new Uint8Array(length);
|
|
502
|
+
that.__proto__ = Buffer.prototype;
|
|
503
|
+
} else {
|
|
504
|
+
// Fallback: Return an object instance of the Buffer class
|
|
505
|
+
if (that === null) {
|
|
506
|
+
that = new Buffer(length);
|
|
507
|
+
}
|
|
508
|
+
that.length = length;
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
return that
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
/**
|
|
515
|
+
* The Buffer constructor returns instances of `Uint8Array` that have their
|
|
516
|
+
* prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
|
|
517
|
+
* `Uint8Array`, so the returned instances will have all the node `Buffer` methods
|
|
518
|
+
* and the `Uint8Array` methods. Square bracket notation works as expected -- it
|
|
519
|
+
* returns a single octet.
|
|
520
|
+
*
|
|
521
|
+
* The `Uint8Array` prototype remains unmodified.
|
|
522
|
+
*/
|
|
523
|
+
|
|
524
|
+
function Buffer (arg, encodingOrOffset, length) {
|
|
525
|
+
if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {
|
|
526
|
+
return new Buffer(arg, encodingOrOffset, length)
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
// Common case.
|
|
530
|
+
if (typeof arg === 'number') {
|
|
531
|
+
if (typeof encodingOrOffset === 'string') {
|
|
532
|
+
throw new Error(
|
|
533
|
+
'If encoding is specified then the first argument must be a string'
|
|
534
|
+
)
|
|
535
|
+
}
|
|
536
|
+
return allocUnsafe(this, arg)
|
|
537
|
+
}
|
|
538
|
+
return from(this, arg, encodingOrOffset, length)
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
Buffer.poolSize = 8192; // not used by this implementation
|
|
542
|
+
|
|
543
|
+
// TODO: Legacy, not needed anymore. Remove in next major version.
|
|
544
|
+
Buffer._augment = function (arr) {
|
|
545
|
+
arr.__proto__ = Buffer.prototype;
|
|
546
|
+
return arr
|
|
547
|
+
};
|
|
548
|
+
|
|
549
|
+
function from (that, value, encodingOrOffset, length) {
|
|
550
|
+
if (typeof value === 'number') {
|
|
551
|
+
throw new TypeError('"value" argument must not be a number')
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
|
|
555
|
+
return fromArrayBuffer(that, value, encodingOrOffset, length)
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
if (typeof value === 'string') {
|
|
559
|
+
return fromString(that, value, encodingOrOffset)
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
return fromObject(that, value)
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
/**
|
|
566
|
+
* Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
|
|
567
|
+
* if value is a number.
|
|
568
|
+
* Buffer.from(str[, encoding])
|
|
569
|
+
* Buffer.from(array)
|
|
570
|
+
* Buffer.from(buffer)
|
|
571
|
+
* Buffer.from(arrayBuffer[, byteOffset[, length]])
|
|
572
|
+
**/
|
|
573
|
+
Buffer.from = function (value, encodingOrOffset, length) {
|
|
574
|
+
return from(null, value, encodingOrOffset, length)
|
|
575
|
+
};
|
|
576
|
+
|
|
577
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
|
578
|
+
Buffer.prototype.__proto__ = Uint8Array.prototype;
|
|
579
|
+
Buffer.__proto__ = Uint8Array;
|
|
580
|
+
if (typeof Symbol !== 'undefined' && Symbol.species &&
|
|
581
|
+
Buffer[Symbol.species] === Buffer) ;
|
|
582
|
+
}
|
|
583
|
+
|
|
584
|
+
function assertSize (size) {
|
|
585
|
+
if (typeof size !== 'number') {
|
|
586
|
+
throw new TypeError('"size" argument must be a number')
|
|
587
|
+
} else if (size < 0) {
|
|
588
|
+
throw new RangeError('"size" argument must not be negative')
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
function alloc (that, size, fill, encoding) {
|
|
593
|
+
assertSize(size);
|
|
594
|
+
if (size <= 0) {
|
|
595
|
+
return createBuffer(that, size)
|
|
596
|
+
}
|
|
597
|
+
if (fill !== undefined) {
|
|
598
|
+
// Only pay attention to encoding if it's a string. This
|
|
599
|
+
// prevents accidentally sending in a number that would
|
|
600
|
+
// be interpretted as a start offset.
|
|
601
|
+
return typeof encoding === 'string'
|
|
602
|
+
? createBuffer(that, size).fill(fill, encoding)
|
|
603
|
+
: createBuffer(that, size).fill(fill)
|
|
604
|
+
}
|
|
605
|
+
return createBuffer(that, size)
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
/**
|
|
609
|
+
* Creates a new filled Buffer instance.
|
|
610
|
+
* alloc(size[, fill[, encoding]])
|
|
611
|
+
**/
|
|
612
|
+
Buffer.alloc = function (size, fill, encoding) {
|
|
613
|
+
return alloc(null, size, fill, encoding)
|
|
614
|
+
};
|
|
615
|
+
|
|
616
|
+
function allocUnsafe (that, size) {
|
|
617
|
+
assertSize(size);
|
|
618
|
+
that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);
|
|
619
|
+
if (!Buffer.TYPED_ARRAY_SUPPORT) {
|
|
620
|
+
for (var i = 0; i < size; ++i) {
|
|
621
|
+
that[i] = 0;
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
return that
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
/**
|
|
628
|
+
* Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
|
|
629
|
+
* */
|
|
630
|
+
Buffer.allocUnsafe = function (size) {
|
|
631
|
+
return allocUnsafe(null, size)
|
|
632
|
+
};
|
|
633
|
+
/**
|
|
634
|
+
* Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
|
|
635
|
+
*/
|
|
636
|
+
Buffer.allocUnsafeSlow = function (size) {
|
|
637
|
+
return allocUnsafe(null, size)
|
|
638
|
+
};
|
|
639
|
+
|
|
640
|
+
function fromString (that, string, encoding) {
|
|
641
|
+
if (typeof encoding !== 'string' || encoding === '') {
|
|
642
|
+
encoding = 'utf8';
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
if (!Buffer.isEncoding(encoding)) {
|
|
646
|
+
throw new TypeError('"encoding" must be a valid string encoding')
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
var length = byteLength(string, encoding) | 0;
|
|
650
|
+
that = createBuffer(that, length);
|
|
651
|
+
|
|
652
|
+
var actual = that.write(string, encoding);
|
|
653
|
+
|
|
654
|
+
if (actual !== length) {
|
|
655
|
+
// Writing a hex string, for example, that contains invalid characters will
|
|
656
|
+
// cause everything after the first invalid character to be ignored. (e.g.
|
|
657
|
+
// 'abxxcd' will be treated as 'ab')
|
|
658
|
+
that = that.slice(0, actual);
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
return that
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
function fromArrayLike (that, array) {
|
|
665
|
+
var length = array.length < 0 ? 0 : checked(array.length) | 0;
|
|
666
|
+
that = createBuffer(that, length);
|
|
667
|
+
for (var i = 0; i < length; i += 1) {
|
|
668
|
+
that[i] = array[i] & 255;
|
|
669
|
+
}
|
|
670
|
+
return that
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
function fromArrayBuffer (that, array, byteOffset, length) {
|
|
674
|
+
array.byteLength; // this throws if `array` is not a valid ArrayBuffer
|
|
675
|
+
|
|
676
|
+
if (byteOffset < 0 || array.byteLength < byteOffset) {
|
|
677
|
+
throw new RangeError('\'offset\' is out of bounds')
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
if (array.byteLength < byteOffset + (length || 0)) {
|
|
681
|
+
throw new RangeError('\'length\' is out of bounds')
|
|
682
|
+
}
|
|
683
|
+
|
|
684
|
+
if (byteOffset === undefined && length === undefined) {
|
|
685
|
+
array = new Uint8Array(array);
|
|
686
|
+
} else if (length === undefined) {
|
|
687
|
+
array = new Uint8Array(array, byteOffset);
|
|
688
|
+
} else {
|
|
689
|
+
array = new Uint8Array(array, byteOffset, length);
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
|
693
|
+
// Return an augmented `Uint8Array` instance, for best performance
|
|
694
|
+
that = array;
|
|
695
|
+
that.__proto__ = Buffer.prototype;
|
|
696
|
+
} else {
|
|
697
|
+
// Fallback: Return an object instance of the Buffer class
|
|
698
|
+
that = fromArrayLike(that, array);
|
|
699
|
+
}
|
|
700
|
+
return that
|
|
701
|
+
}
|
|
702
|
+
|
|
703
|
+
function fromObject (that, obj) {
|
|
704
|
+
if (internalIsBuffer(obj)) {
|
|
705
|
+
var len = checked(obj.length) | 0;
|
|
706
|
+
that = createBuffer(that, len);
|
|
707
|
+
|
|
708
|
+
if (that.length === 0) {
|
|
709
|
+
return that
|
|
710
|
+
}
|
|
711
|
+
|
|
712
|
+
obj.copy(that, 0, 0, len);
|
|
713
|
+
return that
|
|
714
|
+
}
|
|
715
|
+
|
|
716
|
+
if (obj) {
|
|
717
|
+
if ((typeof ArrayBuffer !== 'undefined' &&
|
|
718
|
+
obj.buffer instanceof ArrayBuffer) || 'length' in obj) {
|
|
719
|
+
if (typeof obj.length !== 'number' || isnan(obj.length)) {
|
|
720
|
+
return createBuffer(that, 0)
|
|
721
|
+
}
|
|
722
|
+
return fromArrayLike(that, obj)
|
|
723
|
+
}
|
|
724
|
+
|
|
725
|
+
if (obj.type === 'Buffer' && isArray(obj.data)) {
|
|
726
|
+
return fromArrayLike(that, obj.data)
|
|
727
|
+
}
|
|
728
|
+
}
|
|
729
|
+
|
|
730
|
+
throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
function checked (length) {
|
|
734
|
+
// Note: cannot use `length < kMaxLength()` here because that fails when
|
|
735
|
+
// length is NaN (which is otherwise coerced to zero.)
|
|
736
|
+
if (length >= kMaxLength()) {
|
|
737
|
+
throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
|
|
738
|
+
'size: 0x' + kMaxLength().toString(16) + ' bytes')
|
|
739
|
+
}
|
|
740
|
+
return length | 0
|
|
741
|
+
}
|
|
742
|
+
Buffer.isBuffer = isBuffer;
|
|
743
|
+
function internalIsBuffer (b) {
|
|
744
|
+
return !!(b != null && b._isBuffer)
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
Buffer.compare = function compare (a, b) {
|
|
748
|
+
if (!internalIsBuffer(a) || !internalIsBuffer(b)) {
|
|
749
|
+
throw new TypeError('Arguments must be Buffers')
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
if (a === b) return 0
|
|
753
|
+
|
|
754
|
+
var x = a.length;
|
|
755
|
+
var y = b.length;
|
|
756
|
+
|
|
757
|
+
for (var i = 0, len = Math.min(x, y); i < len; ++i) {
|
|
758
|
+
if (a[i] !== b[i]) {
|
|
759
|
+
x = a[i];
|
|
760
|
+
y = b[i];
|
|
761
|
+
break
|
|
762
|
+
}
|
|
763
|
+
}
|
|
764
|
+
|
|
765
|
+
if (x < y) return -1
|
|
766
|
+
if (y < x) return 1
|
|
767
|
+
return 0
|
|
768
|
+
};
|
|
769
|
+
|
|
770
|
+
Buffer.isEncoding = function isEncoding (encoding) {
|
|
771
|
+
switch (String(encoding).toLowerCase()) {
|
|
772
|
+
case 'hex':
|
|
773
|
+
case 'utf8':
|
|
774
|
+
case 'utf-8':
|
|
775
|
+
case 'ascii':
|
|
776
|
+
case 'latin1':
|
|
777
|
+
case 'binary':
|
|
778
|
+
case 'base64':
|
|
779
|
+
case 'ucs2':
|
|
780
|
+
case 'ucs-2':
|
|
781
|
+
case 'utf16le':
|
|
782
|
+
case 'utf-16le':
|
|
783
|
+
return true
|
|
784
|
+
default:
|
|
785
|
+
return false
|
|
786
|
+
}
|
|
787
|
+
};
|
|
788
|
+
|
|
789
|
+
Buffer.concat = function concat (list, length) {
|
|
790
|
+
if (!isArray(list)) {
|
|
791
|
+
throw new TypeError('"list" argument must be an Array of Buffers')
|
|
792
|
+
}
|
|
793
|
+
|
|
794
|
+
if (list.length === 0) {
|
|
795
|
+
return Buffer.alloc(0)
|
|
796
|
+
}
|
|
797
|
+
|
|
798
|
+
var i;
|
|
799
|
+
if (length === undefined) {
|
|
800
|
+
length = 0;
|
|
801
|
+
for (i = 0; i < list.length; ++i) {
|
|
802
|
+
length += list[i].length;
|
|
803
|
+
}
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
var buffer = Buffer.allocUnsafe(length);
|
|
807
|
+
var pos = 0;
|
|
808
|
+
for (i = 0; i < list.length; ++i) {
|
|
809
|
+
var buf = list[i];
|
|
810
|
+
if (!internalIsBuffer(buf)) {
|
|
811
|
+
throw new TypeError('"list" argument must be an Array of Buffers')
|
|
812
|
+
}
|
|
813
|
+
buf.copy(buffer, pos);
|
|
814
|
+
pos += buf.length;
|
|
815
|
+
}
|
|
816
|
+
return buffer
|
|
817
|
+
};
|
|
818
|
+
|
|
819
|
+
function byteLength (string, encoding) {
|
|
820
|
+
if (internalIsBuffer(string)) {
|
|
821
|
+
return string.length
|
|
822
|
+
}
|
|
823
|
+
if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&
|
|
824
|
+
(ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {
|
|
825
|
+
return string.byteLength
|
|
826
|
+
}
|
|
827
|
+
if (typeof string !== 'string') {
|
|
828
|
+
string = '' + string;
|
|
829
|
+
}
|
|
830
|
+
|
|
831
|
+
var len = string.length;
|
|
832
|
+
if (len === 0) return 0
|
|
833
|
+
|
|
834
|
+
// Use a for loop to avoid recursion
|
|
835
|
+
var loweredCase = false;
|
|
836
|
+
for (;;) {
|
|
837
|
+
switch (encoding) {
|
|
838
|
+
case 'ascii':
|
|
839
|
+
case 'latin1':
|
|
840
|
+
case 'binary':
|
|
841
|
+
return len
|
|
842
|
+
case 'utf8':
|
|
843
|
+
case 'utf-8':
|
|
844
|
+
case undefined:
|
|
845
|
+
return utf8ToBytes(string).length
|
|
846
|
+
case 'ucs2':
|
|
847
|
+
case 'ucs-2':
|
|
848
|
+
case 'utf16le':
|
|
849
|
+
case 'utf-16le':
|
|
850
|
+
return len * 2
|
|
851
|
+
case 'hex':
|
|
852
|
+
return len >>> 1
|
|
853
|
+
case 'base64':
|
|
854
|
+
return base64ToBytes(string).length
|
|
855
|
+
default:
|
|
856
|
+
if (loweredCase) return utf8ToBytes(string).length // assume utf8
|
|
857
|
+
encoding = ('' + encoding).toLowerCase();
|
|
858
|
+
loweredCase = true;
|
|
859
|
+
}
|
|
860
|
+
}
|
|
861
|
+
}
|
|
862
|
+
Buffer.byteLength = byteLength;
|
|
863
|
+
|
|
864
|
+
function slowToString (encoding, start, end) {
|
|
865
|
+
var loweredCase = false;
|
|
866
|
+
|
|
867
|
+
// No need to verify that "this.length <= MAX_UINT32" since it's a read-only
|
|
868
|
+
// property of a typed array.
|
|
869
|
+
|
|
870
|
+
// This behaves neither like String nor Uint8Array in that we set start/end
|
|
871
|
+
// to their upper/lower bounds if the value passed is out of range.
|
|
872
|
+
// undefined is handled specially as per ECMA-262 6th Edition,
|
|
873
|
+
// Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
|
|
874
|
+
if (start === undefined || start < 0) {
|
|
875
|
+
start = 0;
|
|
876
|
+
}
|
|
877
|
+
// Return early if start > this.length. Done here to prevent potential uint32
|
|
878
|
+
// coercion fail below.
|
|
879
|
+
if (start > this.length) {
|
|
880
|
+
return ''
|
|
881
|
+
}
|
|
882
|
+
|
|
883
|
+
if (end === undefined || end > this.length) {
|
|
884
|
+
end = this.length;
|
|
885
|
+
}
|
|
886
|
+
|
|
887
|
+
if (end <= 0) {
|
|
888
|
+
return ''
|
|
889
|
+
}
|
|
890
|
+
|
|
891
|
+
// Force coersion to uint32. This will also coerce falsey/NaN values to 0.
|
|
892
|
+
end >>>= 0;
|
|
893
|
+
start >>>= 0;
|
|
894
|
+
|
|
895
|
+
if (end <= start) {
|
|
896
|
+
return ''
|
|
897
|
+
}
|
|
898
|
+
|
|
899
|
+
if (!encoding) encoding = 'utf8';
|
|
900
|
+
|
|
901
|
+
while (true) {
|
|
902
|
+
switch (encoding) {
|
|
903
|
+
case 'hex':
|
|
904
|
+
return hexSlice(this, start, end)
|
|
905
|
+
|
|
906
|
+
case 'utf8':
|
|
907
|
+
case 'utf-8':
|
|
908
|
+
return utf8Slice(this, start, end)
|
|
909
|
+
|
|
910
|
+
case 'ascii':
|
|
911
|
+
return asciiSlice(this, start, end)
|
|
912
|
+
|
|
913
|
+
case 'latin1':
|
|
914
|
+
case 'binary':
|
|
915
|
+
return latin1Slice(this, start, end)
|
|
916
|
+
|
|
917
|
+
case 'base64':
|
|
918
|
+
return base64Slice(this, start, end)
|
|
919
|
+
|
|
920
|
+
case 'ucs2':
|
|
921
|
+
case 'ucs-2':
|
|
922
|
+
case 'utf16le':
|
|
923
|
+
case 'utf-16le':
|
|
924
|
+
return utf16leSlice(this, start, end)
|
|
925
|
+
|
|
926
|
+
default:
|
|
927
|
+
if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
|
|
928
|
+
encoding = (encoding + '').toLowerCase();
|
|
929
|
+
loweredCase = true;
|
|
930
|
+
}
|
|
931
|
+
}
|
|
932
|
+
}
|
|
933
|
+
|
|
934
|
+
// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect
|
|
935
|
+
// Buffer instances.
|
|
936
|
+
Buffer.prototype._isBuffer = true;
|
|
937
|
+
|
|
938
|
+
function swap (b, n, m) {
|
|
939
|
+
var i = b[n];
|
|
940
|
+
b[n] = b[m];
|
|
941
|
+
b[m] = i;
|
|
942
|
+
}
|
|
943
|
+
|
|
944
|
+
Buffer.prototype.swap16 = function swap16 () {
|
|
945
|
+
var len = this.length;
|
|
946
|
+
if (len % 2 !== 0) {
|
|
947
|
+
throw new RangeError('Buffer size must be a multiple of 16-bits')
|
|
948
|
+
}
|
|
949
|
+
for (var i = 0; i < len; i += 2) {
|
|
950
|
+
swap(this, i, i + 1);
|
|
951
|
+
}
|
|
952
|
+
return this
|
|
953
|
+
};
|
|
954
|
+
|
|
955
|
+
Buffer.prototype.swap32 = function swap32 () {
|
|
956
|
+
var len = this.length;
|
|
957
|
+
if (len % 4 !== 0) {
|
|
958
|
+
throw new RangeError('Buffer size must be a multiple of 32-bits')
|
|
959
|
+
}
|
|
960
|
+
for (var i = 0; i < len; i += 4) {
|
|
961
|
+
swap(this, i, i + 3);
|
|
962
|
+
swap(this, i + 1, i + 2);
|
|
963
|
+
}
|
|
964
|
+
return this
|
|
965
|
+
};
|
|
966
|
+
|
|
967
|
+
Buffer.prototype.swap64 = function swap64 () {
|
|
968
|
+
var len = this.length;
|
|
969
|
+
if (len % 8 !== 0) {
|
|
970
|
+
throw new RangeError('Buffer size must be a multiple of 64-bits')
|
|
971
|
+
}
|
|
972
|
+
for (var i = 0; i < len; i += 8) {
|
|
973
|
+
swap(this, i, i + 7);
|
|
974
|
+
swap(this, i + 1, i + 6);
|
|
975
|
+
swap(this, i + 2, i + 5);
|
|
976
|
+
swap(this, i + 3, i + 4);
|
|
977
|
+
}
|
|
978
|
+
return this
|
|
979
|
+
};
|
|
980
|
+
|
|
981
|
+
Buffer.prototype.toString = function toString () {
|
|
982
|
+
var length = this.length | 0;
|
|
983
|
+
if (length === 0) return ''
|
|
984
|
+
if (arguments.length === 0) return utf8Slice(this, 0, length)
|
|
985
|
+
return slowToString.apply(this, arguments)
|
|
986
|
+
};
|
|
987
|
+
|
|
988
|
+
Buffer.prototype.equals = function equals (b) {
|
|
989
|
+
if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer')
|
|
990
|
+
if (this === b) return true
|
|
991
|
+
return Buffer.compare(this, b) === 0
|
|
992
|
+
};
|
|
993
|
+
|
|
994
|
+
Buffer.prototype.inspect = function inspect () {
|
|
995
|
+
var str = '';
|
|
996
|
+
var max = INSPECT_MAX_BYTES;
|
|
997
|
+
if (this.length > 0) {
|
|
998
|
+
str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');
|
|
999
|
+
if (this.length > max) str += ' ... ';
|
|
1000
|
+
}
|
|
1001
|
+
return '<Buffer ' + str + '>'
|
|
1002
|
+
};
|
|
1003
|
+
|
|
1004
|
+
Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
|
|
1005
|
+
if (!internalIsBuffer(target)) {
|
|
1006
|
+
throw new TypeError('Argument must be a Buffer')
|
|
1007
|
+
}
|
|
1008
|
+
|
|
1009
|
+
if (start === undefined) {
|
|
1010
|
+
start = 0;
|
|
1011
|
+
}
|
|
1012
|
+
if (end === undefined) {
|
|
1013
|
+
end = target ? target.length : 0;
|
|
1014
|
+
}
|
|
1015
|
+
if (thisStart === undefined) {
|
|
1016
|
+
thisStart = 0;
|
|
1017
|
+
}
|
|
1018
|
+
if (thisEnd === undefined) {
|
|
1019
|
+
thisEnd = this.length;
|
|
1020
|
+
}
|
|
1021
|
+
|
|
1022
|
+
if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
|
|
1023
|
+
throw new RangeError('out of range index')
|
|
1024
|
+
}
|
|
1025
|
+
|
|
1026
|
+
if (thisStart >= thisEnd && start >= end) {
|
|
1027
|
+
return 0
|
|
1028
|
+
}
|
|
1029
|
+
if (thisStart >= thisEnd) {
|
|
1030
|
+
return -1
|
|
1031
|
+
}
|
|
1032
|
+
if (start >= end) {
|
|
1033
|
+
return 1
|
|
1034
|
+
}
|
|
1035
|
+
|
|
1036
|
+
start >>>= 0;
|
|
1037
|
+
end >>>= 0;
|
|
1038
|
+
thisStart >>>= 0;
|
|
1039
|
+
thisEnd >>>= 0;
|
|
1040
|
+
|
|
1041
|
+
if (this === target) return 0
|
|
1042
|
+
|
|
1043
|
+
var x = thisEnd - thisStart;
|
|
1044
|
+
var y = end - start;
|
|
1045
|
+
var len = Math.min(x, y);
|
|
1046
|
+
|
|
1047
|
+
var thisCopy = this.slice(thisStart, thisEnd);
|
|
1048
|
+
var targetCopy = target.slice(start, end);
|
|
1049
|
+
|
|
1050
|
+
for (var i = 0; i < len; ++i) {
|
|
1051
|
+
if (thisCopy[i] !== targetCopy[i]) {
|
|
1052
|
+
x = thisCopy[i];
|
|
1053
|
+
y = targetCopy[i];
|
|
1054
|
+
break
|
|
1055
|
+
}
|
|
1056
|
+
}
|
|
1057
|
+
|
|
1058
|
+
if (x < y) return -1
|
|
1059
|
+
if (y < x) return 1
|
|
1060
|
+
return 0
|
|
1061
|
+
};
|
|
1062
|
+
|
|
1063
|
+
// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
|
|
1064
|
+
// OR the last index of `val` in `buffer` at offset <= `byteOffset`.
|
|
1065
|
+
//
|
|
1066
|
+
// Arguments:
|
|
1067
|
+
// - buffer - a Buffer to search
|
|
1068
|
+
// - val - a string, Buffer, or number
|
|
1069
|
+
// - byteOffset - an index into `buffer`; will be clamped to an int32
|
|
1070
|
+
// - encoding - an optional encoding, relevant is val is a string
|
|
1071
|
+
// - dir - true for indexOf, false for lastIndexOf
|
|
1072
|
+
function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
|
|
1073
|
+
// Empty buffer means no match
|
|
1074
|
+
if (buffer.length === 0) return -1
|
|
1075
|
+
|
|
1076
|
+
// Normalize byteOffset
|
|
1077
|
+
if (typeof byteOffset === 'string') {
|
|
1078
|
+
encoding = byteOffset;
|
|
1079
|
+
byteOffset = 0;
|
|
1080
|
+
} else if (byteOffset > 0x7fffffff) {
|
|
1081
|
+
byteOffset = 0x7fffffff;
|
|
1082
|
+
} else if (byteOffset < -2147483648) {
|
|
1083
|
+
byteOffset = -2147483648;
|
|
1084
|
+
}
|
|
1085
|
+
byteOffset = +byteOffset; // Coerce to Number.
|
|
1086
|
+
if (isNaN(byteOffset)) {
|
|
1087
|
+
// byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
|
|
1088
|
+
byteOffset = dir ? 0 : (buffer.length - 1);
|
|
1089
|
+
}
|
|
1090
|
+
|
|
1091
|
+
// Normalize byteOffset: negative offsets start from the end of the buffer
|
|
1092
|
+
if (byteOffset < 0) byteOffset = buffer.length + byteOffset;
|
|
1093
|
+
if (byteOffset >= buffer.length) {
|
|
1094
|
+
if (dir) return -1
|
|
1095
|
+
else byteOffset = buffer.length - 1;
|
|
1096
|
+
} else if (byteOffset < 0) {
|
|
1097
|
+
if (dir) byteOffset = 0;
|
|
1098
|
+
else return -1
|
|
1099
|
+
}
|
|
1100
|
+
|
|
1101
|
+
// Normalize val
|
|
1102
|
+
if (typeof val === 'string') {
|
|
1103
|
+
val = Buffer.from(val, encoding);
|
|
1104
|
+
}
|
|
1105
|
+
|
|
1106
|
+
// Finally, search either indexOf (if dir is true) or lastIndexOf
|
|
1107
|
+
if (internalIsBuffer(val)) {
|
|
1108
|
+
// Special case: looking for empty string/buffer always fails
|
|
1109
|
+
if (val.length === 0) {
|
|
1110
|
+
return -1
|
|
1111
|
+
}
|
|
1112
|
+
return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
|
|
1113
|
+
} else if (typeof val === 'number') {
|
|
1114
|
+
val = val & 0xFF; // Search for a byte value [0-255]
|
|
1115
|
+
if (Buffer.TYPED_ARRAY_SUPPORT &&
|
|
1116
|
+
typeof Uint8Array.prototype.indexOf === 'function') {
|
|
1117
|
+
if (dir) {
|
|
1118
|
+
return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
|
|
1119
|
+
} else {
|
|
1120
|
+
return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
|
|
1121
|
+
}
|
|
1122
|
+
}
|
|
1123
|
+
return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
|
|
1124
|
+
}
|
|
1125
|
+
|
|
1126
|
+
throw new TypeError('val must be string, number or Buffer')
|
|
1127
|
+
}
|
|
1128
|
+
|
|
1129
|
+
function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
|
|
1130
|
+
var indexSize = 1;
|
|
1131
|
+
var arrLength = arr.length;
|
|
1132
|
+
var valLength = val.length;
|
|
1133
|
+
|
|
1134
|
+
if (encoding !== undefined) {
|
|
1135
|
+
encoding = String(encoding).toLowerCase();
|
|
1136
|
+
if (encoding === 'ucs2' || encoding === 'ucs-2' ||
|
|
1137
|
+
encoding === 'utf16le' || encoding === 'utf-16le') {
|
|
1138
|
+
if (arr.length < 2 || val.length < 2) {
|
|
1139
|
+
return -1
|
|
1140
|
+
}
|
|
1141
|
+
indexSize = 2;
|
|
1142
|
+
arrLength /= 2;
|
|
1143
|
+
valLength /= 2;
|
|
1144
|
+
byteOffset /= 2;
|
|
1145
|
+
}
|
|
1146
|
+
}
|
|
1147
|
+
|
|
1148
|
+
function read (buf, i) {
|
|
1149
|
+
if (indexSize === 1) {
|
|
1150
|
+
return buf[i]
|
|
1151
|
+
} else {
|
|
1152
|
+
return buf.readUInt16BE(i * indexSize)
|
|
1153
|
+
}
|
|
1154
|
+
}
|
|
1155
|
+
|
|
1156
|
+
var i;
|
|
1157
|
+
if (dir) {
|
|
1158
|
+
var foundIndex = -1;
|
|
1159
|
+
for (i = byteOffset; i < arrLength; i++) {
|
|
1160
|
+
if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
|
|
1161
|
+
if (foundIndex === -1) foundIndex = i;
|
|
1162
|
+
if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
|
|
1163
|
+
} else {
|
|
1164
|
+
if (foundIndex !== -1) i -= i - foundIndex;
|
|
1165
|
+
foundIndex = -1;
|
|
1166
|
+
}
|
|
1167
|
+
}
|
|
1168
|
+
} else {
|
|
1169
|
+
if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;
|
|
1170
|
+
for (i = byteOffset; i >= 0; i--) {
|
|
1171
|
+
var found = true;
|
|
1172
|
+
for (var j = 0; j < valLength; j++) {
|
|
1173
|
+
if (read(arr, i + j) !== read(val, j)) {
|
|
1174
|
+
found = false;
|
|
1175
|
+
break
|
|
1176
|
+
}
|
|
1177
|
+
}
|
|
1178
|
+
if (found) return i
|
|
1179
|
+
}
|
|
1180
|
+
}
|
|
1181
|
+
|
|
1182
|
+
return -1
|
|
1183
|
+
}
|
|
1184
|
+
|
|
1185
|
+
Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
|
|
1186
|
+
return this.indexOf(val, byteOffset, encoding) !== -1
|
|
1187
|
+
};
|
|
1188
|
+
|
|
1189
|
+
Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
|
|
1190
|
+
return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
|
|
1191
|
+
};
|
|
1192
|
+
|
|
1193
|
+
Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
|
|
1194
|
+
return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
|
|
1195
|
+
};
|
|
1196
|
+
|
|
1197
|
+
function hexWrite (buf, string, offset, length) {
|
|
1198
|
+
offset = Number(offset) || 0;
|
|
1199
|
+
var remaining = buf.length - offset;
|
|
1200
|
+
if (!length) {
|
|
1201
|
+
length = remaining;
|
|
1202
|
+
} else {
|
|
1203
|
+
length = Number(length);
|
|
1204
|
+
if (length > remaining) {
|
|
1205
|
+
length = remaining;
|
|
1206
|
+
}
|
|
1207
|
+
}
|
|
1208
|
+
|
|
1209
|
+
// must be an even number of digits
|
|
1210
|
+
var strLen = string.length;
|
|
1211
|
+
if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
|
|
1212
|
+
|
|
1213
|
+
if (length > strLen / 2) {
|
|
1214
|
+
length = strLen / 2;
|
|
1215
|
+
}
|
|
1216
|
+
for (var i = 0; i < length; ++i) {
|
|
1217
|
+
var parsed = parseInt(string.substr(i * 2, 2), 16);
|
|
1218
|
+
if (isNaN(parsed)) return i
|
|
1219
|
+
buf[offset + i] = parsed;
|
|
1220
|
+
}
|
|
1221
|
+
return i
|
|
1222
|
+
}
|
|
1223
|
+
|
|
1224
|
+
function utf8Write (buf, string, offset, length) {
|
|
1225
|
+
return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
|
|
1226
|
+
}
|
|
1227
|
+
|
|
1228
|
+
function asciiWrite (buf, string, offset, length) {
|
|
1229
|
+
return blitBuffer(asciiToBytes(string), buf, offset, length)
|
|
1230
|
+
}
|
|
1231
|
+
|
|
1232
|
+
function latin1Write (buf, string, offset, length) {
|
|
1233
|
+
return asciiWrite(buf, string, offset, length)
|
|
1234
|
+
}
|
|
1235
|
+
|
|
1236
|
+
function base64Write (buf, string, offset, length) {
|
|
1237
|
+
return blitBuffer(base64ToBytes(string), buf, offset, length)
|
|
1238
|
+
}
|
|
1239
|
+
|
|
1240
|
+
function ucs2Write (buf, string, offset, length) {
|
|
1241
|
+
return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
|
|
1242
|
+
}
|
|
1243
|
+
|
|
1244
|
+
Buffer.prototype.write = function write (string, offset, length, encoding) {
|
|
1245
|
+
// Buffer#write(string)
|
|
1246
|
+
if (offset === undefined) {
|
|
1247
|
+
encoding = 'utf8';
|
|
1248
|
+
length = this.length;
|
|
1249
|
+
offset = 0;
|
|
1250
|
+
// Buffer#write(string, encoding)
|
|
1251
|
+
} else if (length === undefined && typeof offset === 'string') {
|
|
1252
|
+
encoding = offset;
|
|
1253
|
+
length = this.length;
|
|
1254
|
+
offset = 0;
|
|
1255
|
+
// Buffer#write(string, offset[, length][, encoding])
|
|
1256
|
+
} else if (isFinite(offset)) {
|
|
1257
|
+
offset = offset | 0;
|
|
1258
|
+
if (isFinite(length)) {
|
|
1259
|
+
length = length | 0;
|
|
1260
|
+
if (encoding === undefined) encoding = 'utf8';
|
|
1261
|
+
} else {
|
|
1262
|
+
encoding = length;
|
|
1263
|
+
length = undefined;
|
|
1264
|
+
}
|
|
1265
|
+
// legacy write(string, encoding, offset, length) - remove in v0.13
|
|
1266
|
+
} else {
|
|
1267
|
+
throw new Error(
|
|
1268
|
+
'Buffer.write(string, encoding, offset[, length]) is no longer supported'
|
|
1269
|
+
)
|
|
1270
|
+
}
|
|
1271
|
+
|
|
1272
|
+
var remaining = this.length - offset;
|
|
1273
|
+
if (length === undefined || length > remaining) length = remaining;
|
|
1274
|
+
|
|
1275
|
+
if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
|
|
1276
|
+
throw new RangeError('Attempt to write outside buffer bounds')
|
|
1277
|
+
}
|
|
1278
|
+
|
|
1279
|
+
if (!encoding) encoding = 'utf8';
|
|
1280
|
+
|
|
1281
|
+
var loweredCase = false;
|
|
1282
|
+
for (;;) {
|
|
1283
|
+
switch (encoding) {
|
|
1284
|
+
case 'hex':
|
|
1285
|
+
return hexWrite(this, string, offset, length)
|
|
1286
|
+
|
|
1287
|
+
case 'utf8':
|
|
1288
|
+
case 'utf-8':
|
|
1289
|
+
return utf8Write(this, string, offset, length)
|
|
1290
|
+
|
|
1291
|
+
case 'ascii':
|
|
1292
|
+
return asciiWrite(this, string, offset, length)
|
|
1293
|
+
|
|
1294
|
+
case 'latin1':
|
|
1295
|
+
case 'binary':
|
|
1296
|
+
return latin1Write(this, string, offset, length)
|
|
1297
|
+
|
|
1298
|
+
case 'base64':
|
|
1299
|
+
// Warning: maxLength not taken into account in base64Write
|
|
1300
|
+
return base64Write(this, string, offset, length)
|
|
1301
|
+
|
|
1302
|
+
case 'ucs2':
|
|
1303
|
+
case 'ucs-2':
|
|
1304
|
+
case 'utf16le':
|
|
1305
|
+
case 'utf-16le':
|
|
1306
|
+
return ucs2Write(this, string, offset, length)
|
|
1307
|
+
|
|
1308
|
+
default:
|
|
1309
|
+
if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
|
|
1310
|
+
encoding = ('' + encoding).toLowerCase();
|
|
1311
|
+
loweredCase = true;
|
|
1312
|
+
}
|
|
1313
|
+
}
|
|
1314
|
+
};
|
|
1315
|
+
|
|
1316
|
+
Buffer.prototype.toJSON = function toJSON () {
|
|
1317
|
+
return {
|
|
1318
|
+
type: 'Buffer',
|
|
1319
|
+
data: Array.prototype.slice.call(this._arr || this, 0)
|
|
1320
|
+
}
|
|
1321
|
+
};
|
|
1322
|
+
|
|
1323
|
+
function base64Slice (buf, start, end) {
|
|
1324
|
+
if (start === 0 && end === buf.length) {
|
|
1325
|
+
return fromByteArray(buf)
|
|
1326
|
+
} else {
|
|
1327
|
+
return fromByteArray(buf.slice(start, end))
|
|
1328
|
+
}
|
|
1329
|
+
}
|
|
1330
|
+
|
|
1331
|
+
function utf8Slice (buf, start, end) {
|
|
1332
|
+
end = Math.min(buf.length, end);
|
|
1333
|
+
var res = [];
|
|
1334
|
+
|
|
1335
|
+
var i = start;
|
|
1336
|
+
while (i < end) {
|
|
1337
|
+
var firstByte = buf[i];
|
|
1338
|
+
var codePoint = null;
|
|
1339
|
+
var bytesPerSequence = (firstByte > 0xEF) ? 4
|
|
1340
|
+
: (firstByte > 0xDF) ? 3
|
|
1341
|
+
: (firstByte > 0xBF) ? 2
|
|
1342
|
+
: 1;
|
|
1343
|
+
|
|
1344
|
+
if (i + bytesPerSequence <= end) {
|
|
1345
|
+
var secondByte, thirdByte, fourthByte, tempCodePoint;
|
|
1346
|
+
|
|
1347
|
+
switch (bytesPerSequence) {
|
|
1348
|
+
case 1:
|
|
1349
|
+
if (firstByte < 0x80) {
|
|
1350
|
+
codePoint = firstByte;
|
|
1351
|
+
}
|
|
1352
|
+
break
|
|
1353
|
+
case 2:
|
|
1354
|
+
secondByte = buf[i + 1];
|
|
1355
|
+
if ((secondByte & 0xC0) === 0x80) {
|
|
1356
|
+
tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);
|
|
1357
|
+
if (tempCodePoint > 0x7F) {
|
|
1358
|
+
codePoint = tempCodePoint;
|
|
1359
|
+
}
|
|
1360
|
+
}
|
|
1361
|
+
break
|
|
1362
|
+
case 3:
|
|
1363
|
+
secondByte = buf[i + 1];
|
|
1364
|
+
thirdByte = buf[i + 2];
|
|
1365
|
+
if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
|
|
1366
|
+
tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);
|
|
1367
|
+
if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
|
|
1368
|
+
codePoint = tempCodePoint;
|
|
1369
|
+
}
|
|
1370
|
+
}
|
|
1371
|
+
break
|
|
1372
|
+
case 4:
|
|
1373
|
+
secondByte = buf[i + 1];
|
|
1374
|
+
thirdByte = buf[i + 2];
|
|
1375
|
+
fourthByte = buf[i + 3];
|
|
1376
|
+
if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
|
|
1377
|
+
tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);
|
|
1378
|
+
if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
|
|
1379
|
+
codePoint = tempCodePoint;
|
|
1380
|
+
}
|
|
1381
|
+
}
|
|
1382
|
+
}
|
|
1383
|
+
}
|
|
1384
|
+
|
|
1385
|
+
if (codePoint === null) {
|
|
1386
|
+
// we did not generate a valid codePoint so insert a
|
|
1387
|
+
// replacement char (U+FFFD) and advance only 1 byte
|
|
1388
|
+
codePoint = 0xFFFD;
|
|
1389
|
+
bytesPerSequence = 1;
|
|
1390
|
+
} else if (codePoint > 0xFFFF) {
|
|
1391
|
+
// encode to utf16 (surrogate pair dance)
|
|
1392
|
+
codePoint -= 0x10000;
|
|
1393
|
+
res.push(codePoint >>> 10 & 0x3FF | 0xD800);
|
|
1394
|
+
codePoint = 0xDC00 | codePoint & 0x3FF;
|
|
1395
|
+
}
|
|
1396
|
+
|
|
1397
|
+
res.push(codePoint);
|
|
1398
|
+
i += bytesPerSequence;
|
|
1399
|
+
}
|
|
1400
|
+
|
|
1401
|
+
return decodeCodePointsArray(res)
|
|
1402
|
+
}
|
|
1403
|
+
|
|
1404
|
+
// Based on http://stackoverflow.com/a/22747272/680742, the browser with
|
|
1405
|
+
// the lowest limit is Chrome, with 0x10000 args.
|
|
1406
|
+
// We go 1 magnitude less, for safety
|
|
1407
|
+
var MAX_ARGUMENTS_LENGTH = 0x1000;
|
|
1408
|
+
|
|
1409
|
+
function decodeCodePointsArray (codePoints) {
|
|
1410
|
+
var len = codePoints.length;
|
|
1411
|
+
if (len <= MAX_ARGUMENTS_LENGTH) {
|
|
1412
|
+
return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
|
|
1413
|
+
}
|
|
1414
|
+
|
|
1415
|
+
// Decode in chunks to avoid "call stack size exceeded".
|
|
1416
|
+
var res = '';
|
|
1417
|
+
var i = 0;
|
|
1418
|
+
while (i < len) {
|
|
1419
|
+
res += String.fromCharCode.apply(
|
|
1420
|
+
String,
|
|
1421
|
+
codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
|
|
1422
|
+
);
|
|
1423
|
+
}
|
|
1424
|
+
return res
|
|
1425
|
+
}
|
|
1426
|
+
|
|
1427
|
+
function asciiSlice (buf, start, end) {
|
|
1428
|
+
var ret = '';
|
|
1429
|
+
end = Math.min(buf.length, end);
|
|
1430
|
+
|
|
1431
|
+
for (var i = start; i < end; ++i) {
|
|
1432
|
+
ret += String.fromCharCode(buf[i] & 0x7F);
|
|
1433
|
+
}
|
|
1434
|
+
return ret
|
|
1435
|
+
}
|
|
1436
|
+
|
|
1437
|
+
function latin1Slice (buf, start, end) {
|
|
1438
|
+
var ret = '';
|
|
1439
|
+
end = Math.min(buf.length, end);
|
|
1440
|
+
|
|
1441
|
+
for (var i = start; i < end; ++i) {
|
|
1442
|
+
ret += String.fromCharCode(buf[i]);
|
|
1443
|
+
}
|
|
1444
|
+
return ret
|
|
1445
|
+
}
|
|
1446
|
+
|
|
1447
|
+
function hexSlice (buf, start, end) {
|
|
1448
|
+
var len = buf.length;
|
|
1449
|
+
|
|
1450
|
+
if (!start || start < 0) start = 0;
|
|
1451
|
+
if (!end || end < 0 || end > len) end = len;
|
|
1452
|
+
|
|
1453
|
+
var out = '';
|
|
1454
|
+
for (var i = start; i < end; ++i) {
|
|
1455
|
+
out += toHex(buf[i]);
|
|
1456
|
+
}
|
|
1457
|
+
return out
|
|
1458
|
+
}
|
|
1459
|
+
|
|
1460
|
+
function utf16leSlice (buf, start, end) {
|
|
1461
|
+
var bytes = buf.slice(start, end);
|
|
1462
|
+
var res = '';
|
|
1463
|
+
for (var i = 0; i < bytes.length; i += 2) {
|
|
1464
|
+
res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);
|
|
1465
|
+
}
|
|
1466
|
+
return res
|
|
1467
|
+
}
|
|
1468
|
+
|
|
1469
|
+
Buffer.prototype.slice = function slice (start, end) {
|
|
1470
|
+
var len = this.length;
|
|
1471
|
+
start = ~~start;
|
|
1472
|
+
end = end === undefined ? len : ~~end;
|
|
1473
|
+
|
|
1474
|
+
if (start < 0) {
|
|
1475
|
+
start += len;
|
|
1476
|
+
if (start < 0) start = 0;
|
|
1477
|
+
} else if (start > len) {
|
|
1478
|
+
start = len;
|
|
1479
|
+
}
|
|
1480
|
+
|
|
1481
|
+
if (end < 0) {
|
|
1482
|
+
end += len;
|
|
1483
|
+
if (end < 0) end = 0;
|
|
1484
|
+
} else if (end > len) {
|
|
1485
|
+
end = len;
|
|
1486
|
+
}
|
|
1487
|
+
|
|
1488
|
+
if (end < start) end = start;
|
|
1489
|
+
|
|
1490
|
+
var newBuf;
|
|
1491
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
|
1492
|
+
newBuf = this.subarray(start, end);
|
|
1493
|
+
newBuf.__proto__ = Buffer.prototype;
|
|
1494
|
+
} else {
|
|
1495
|
+
var sliceLen = end - start;
|
|
1496
|
+
newBuf = new Buffer(sliceLen, undefined);
|
|
1497
|
+
for (var i = 0; i < sliceLen; ++i) {
|
|
1498
|
+
newBuf[i] = this[i + start];
|
|
1499
|
+
}
|
|
1500
|
+
}
|
|
1501
|
+
|
|
1502
|
+
return newBuf
|
|
1503
|
+
};
|
|
1504
|
+
|
|
1505
|
+
/*
|
|
1506
|
+
* Need to make sure that buffer isn't trying to write out of bounds.
|
|
1507
|
+
*/
|
|
1508
|
+
function checkOffset (offset, ext, length) {
|
|
1509
|
+
if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
|
|
1510
|
+
if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
|
|
1511
|
+
}
|
|
1512
|
+
|
|
1513
|
+
Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
|
|
1514
|
+
offset = offset | 0;
|
|
1515
|
+
byteLength = byteLength | 0;
|
|
1516
|
+
if (!noAssert) checkOffset(offset, byteLength, this.length);
|
|
1517
|
+
|
|
1518
|
+
var val = this[offset];
|
|
1519
|
+
var mul = 1;
|
|
1520
|
+
var i = 0;
|
|
1521
|
+
while (++i < byteLength && (mul *= 0x100)) {
|
|
1522
|
+
val += this[offset + i] * mul;
|
|
1523
|
+
}
|
|
1524
|
+
|
|
1525
|
+
return val
|
|
1526
|
+
};
|
|
1527
|
+
|
|
1528
|
+
Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
|
|
1529
|
+
offset = offset | 0;
|
|
1530
|
+
byteLength = byteLength | 0;
|
|
1531
|
+
if (!noAssert) {
|
|
1532
|
+
checkOffset(offset, byteLength, this.length);
|
|
1533
|
+
}
|
|
1534
|
+
|
|
1535
|
+
var val = this[offset + --byteLength];
|
|
1536
|
+
var mul = 1;
|
|
1537
|
+
while (byteLength > 0 && (mul *= 0x100)) {
|
|
1538
|
+
val += this[offset + --byteLength] * mul;
|
|
1539
|
+
}
|
|
1540
|
+
|
|
1541
|
+
return val
|
|
1542
|
+
};
|
|
1543
|
+
|
|
1544
|
+
Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
|
|
1545
|
+
if (!noAssert) checkOffset(offset, 1, this.length);
|
|
1546
|
+
return this[offset]
|
|
1547
|
+
};
|
|
1548
|
+
|
|
1549
|
+
Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
|
|
1550
|
+
if (!noAssert) checkOffset(offset, 2, this.length);
|
|
1551
|
+
return this[offset] | (this[offset + 1] << 8)
|
|
1552
|
+
};
|
|
1553
|
+
|
|
1554
|
+
Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
|
|
1555
|
+
if (!noAssert) checkOffset(offset, 2, this.length);
|
|
1556
|
+
return (this[offset] << 8) | this[offset + 1]
|
|
1557
|
+
};
|
|
1558
|
+
|
|
1559
|
+
Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
|
|
1560
|
+
if (!noAssert) checkOffset(offset, 4, this.length);
|
|
1561
|
+
|
|
1562
|
+
return ((this[offset]) |
|
|
1563
|
+
(this[offset + 1] << 8) |
|
|
1564
|
+
(this[offset + 2] << 16)) +
|
|
1565
|
+
(this[offset + 3] * 0x1000000)
|
|
1566
|
+
};
|
|
1567
|
+
|
|
1568
|
+
Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
|
|
1569
|
+
if (!noAssert) checkOffset(offset, 4, this.length);
|
|
1570
|
+
|
|
1571
|
+
return (this[offset] * 0x1000000) +
|
|
1572
|
+
((this[offset + 1] << 16) |
|
|
1573
|
+
(this[offset + 2] << 8) |
|
|
1574
|
+
this[offset + 3])
|
|
1575
|
+
};
|
|
1576
|
+
|
|
1577
|
+
Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
|
|
1578
|
+
offset = offset | 0;
|
|
1579
|
+
byteLength = byteLength | 0;
|
|
1580
|
+
if (!noAssert) checkOffset(offset, byteLength, this.length);
|
|
1581
|
+
|
|
1582
|
+
var val = this[offset];
|
|
1583
|
+
var mul = 1;
|
|
1584
|
+
var i = 0;
|
|
1585
|
+
while (++i < byteLength && (mul *= 0x100)) {
|
|
1586
|
+
val += this[offset + i] * mul;
|
|
1587
|
+
}
|
|
1588
|
+
mul *= 0x80;
|
|
1589
|
+
|
|
1590
|
+
if (val >= mul) val -= Math.pow(2, 8 * byteLength);
|
|
1591
|
+
|
|
1592
|
+
return val
|
|
1593
|
+
};
|
|
1594
|
+
|
|
1595
|
+
Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
|
|
1596
|
+
offset = offset | 0;
|
|
1597
|
+
byteLength = byteLength | 0;
|
|
1598
|
+
if (!noAssert) checkOffset(offset, byteLength, this.length);
|
|
1599
|
+
|
|
1600
|
+
var i = byteLength;
|
|
1601
|
+
var mul = 1;
|
|
1602
|
+
var val = this[offset + --i];
|
|
1603
|
+
while (i > 0 && (mul *= 0x100)) {
|
|
1604
|
+
val += this[offset + --i] * mul;
|
|
1605
|
+
}
|
|
1606
|
+
mul *= 0x80;
|
|
1607
|
+
|
|
1608
|
+
if (val >= mul) val -= Math.pow(2, 8 * byteLength);
|
|
1609
|
+
|
|
1610
|
+
return val
|
|
1611
|
+
};
|
|
1612
|
+
|
|
1613
|
+
Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
|
|
1614
|
+
if (!noAssert) checkOffset(offset, 1, this.length);
|
|
1615
|
+
if (!(this[offset] & 0x80)) return (this[offset])
|
|
1616
|
+
return ((0xff - this[offset] + 1) * -1)
|
|
1617
|
+
};
|
|
1618
|
+
|
|
1619
|
+
Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
|
|
1620
|
+
if (!noAssert) checkOffset(offset, 2, this.length);
|
|
1621
|
+
var val = this[offset] | (this[offset + 1] << 8);
|
|
1622
|
+
return (val & 0x8000) ? val | 0xFFFF0000 : val
|
|
1623
|
+
};
|
|
1624
|
+
|
|
1625
|
+
Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
|
|
1626
|
+
if (!noAssert) checkOffset(offset, 2, this.length);
|
|
1627
|
+
var val = this[offset + 1] | (this[offset] << 8);
|
|
1628
|
+
return (val & 0x8000) ? val | 0xFFFF0000 : val
|
|
1629
|
+
};
|
|
1630
|
+
|
|
1631
|
+
Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
|
|
1632
|
+
if (!noAssert) checkOffset(offset, 4, this.length);
|
|
1633
|
+
|
|
1634
|
+
return (this[offset]) |
|
|
1635
|
+
(this[offset + 1] << 8) |
|
|
1636
|
+
(this[offset + 2] << 16) |
|
|
1637
|
+
(this[offset + 3] << 24)
|
|
1638
|
+
};
|
|
1639
|
+
|
|
1640
|
+
Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
|
|
1641
|
+
if (!noAssert) checkOffset(offset, 4, this.length);
|
|
1642
|
+
|
|
1643
|
+
return (this[offset] << 24) |
|
|
1644
|
+
(this[offset + 1] << 16) |
|
|
1645
|
+
(this[offset + 2] << 8) |
|
|
1646
|
+
(this[offset + 3])
|
|
1647
|
+
};
|
|
1648
|
+
|
|
1649
|
+
Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
|
|
1650
|
+
if (!noAssert) checkOffset(offset, 4, this.length);
|
|
1651
|
+
return read(this, offset, true, 23, 4)
|
|
1652
|
+
};
|
|
1653
|
+
|
|
1654
|
+
Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
|
|
1655
|
+
if (!noAssert) checkOffset(offset, 4, this.length);
|
|
1656
|
+
return read(this, offset, false, 23, 4)
|
|
1657
|
+
};
|
|
1658
|
+
|
|
1659
|
+
Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
|
|
1660
|
+
if (!noAssert) checkOffset(offset, 8, this.length);
|
|
1661
|
+
return read(this, offset, true, 52, 8)
|
|
1662
|
+
};
|
|
1663
|
+
|
|
1664
|
+
Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
|
|
1665
|
+
if (!noAssert) checkOffset(offset, 8, this.length);
|
|
1666
|
+
return read(this, offset, false, 52, 8)
|
|
1667
|
+
};
|
|
1668
|
+
|
|
1669
|
+
function checkInt (buf, value, offset, ext, max, min) {
|
|
1670
|
+
if (!internalIsBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
|
|
1671
|
+
if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
|
|
1672
|
+
if (offset + ext > buf.length) throw new RangeError('Index out of range')
|
|
1673
|
+
}
|
|
1674
|
+
|
|
1675
|
+
Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
|
|
1676
|
+
value = +value;
|
|
1677
|
+
offset = offset | 0;
|
|
1678
|
+
byteLength = byteLength | 0;
|
|
1679
|
+
if (!noAssert) {
|
|
1680
|
+
var maxBytes = Math.pow(2, 8 * byteLength) - 1;
|
|
1681
|
+
checkInt(this, value, offset, byteLength, maxBytes, 0);
|
|
1682
|
+
}
|
|
1683
|
+
|
|
1684
|
+
var mul = 1;
|
|
1685
|
+
var i = 0;
|
|
1686
|
+
this[offset] = value & 0xFF;
|
|
1687
|
+
while (++i < byteLength && (mul *= 0x100)) {
|
|
1688
|
+
this[offset + i] = (value / mul) & 0xFF;
|
|
1689
|
+
}
|
|
1690
|
+
|
|
1691
|
+
return offset + byteLength
|
|
1692
|
+
};
|
|
1693
|
+
|
|
1694
|
+
Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
|
|
1695
|
+
value = +value;
|
|
1696
|
+
offset = offset | 0;
|
|
1697
|
+
byteLength = byteLength | 0;
|
|
1698
|
+
if (!noAssert) {
|
|
1699
|
+
var maxBytes = Math.pow(2, 8 * byteLength) - 1;
|
|
1700
|
+
checkInt(this, value, offset, byteLength, maxBytes, 0);
|
|
1701
|
+
}
|
|
1702
|
+
|
|
1703
|
+
var i = byteLength - 1;
|
|
1704
|
+
var mul = 1;
|
|
1705
|
+
this[offset + i] = value & 0xFF;
|
|
1706
|
+
while (--i >= 0 && (mul *= 0x100)) {
|
|
1707
|
+
this[offset + i] = (value / mul) & 0xFF;
|
|
1708
|
+
}
|
|
1709
|
+
|
|
1710
|
+
return offset + byteLength
|
|
1711
|
+
};
|
|
1712
|
+
|
|
1713
|
+
Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
|
|
1714
|
+
value = +value;
|
|
1715
|
+
offset = offset | 0;
|
|
1716
|
+
if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);
|
|
1717
|
+
if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);
|
|
1718
|
+
this[offset] = (value & 0xff);
|
|
1719
|
+
return offset + 1
|
|
1720
|
+
};
|
|
1721
|
+
|
|
1722
|
+
function objectWriteUInt16 (buf, value, offset, littleEndian) {
|
|
1723
|
+
if (value < 0) value = 0xffff + value + 1;
|
|
1724
|
+
for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {
|
|
1725
|
+
buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
|
|
1726
|
+
(littleEndian ? i : 1 - i) * 8;
|
|
1727
|
+
}
|
|
1728
|
+
}
|
|
1729
|
+
|
|
1730
|
+
Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
|
|
1731
|
+
value = +value;
|
|
1732
|
+
offset = offset | 0;
|
|
1733
|
+
if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);
|
|
1734
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
|
1735
|
+
this[offset] = (value & 0xff);
|
|
1736
|
+
this[offset + 1] = (value >>> 8);
|
|
1737
|
+
} else {
|
|
1738
|
+
objectWriteUInt16(this, value, offset, true);
|
|
1739
|
+
}
|
|
1740
|
+
return offset + 2
|
|
1741
|
+
};
|
|
1742
|
+
|
|
1743
|
+
Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
|
|
1744
|
+
value = +value;
|
|
1745
|
+
offset = offset | 0;
|
|
1746
|
+
if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);
|
|
1747
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
|
1748
|
+
this[offset] = (value >>> 8);
|
|
1749
|
+
this[offset + 1] = (value & 0xff);
|
|
1750
|
+
} else {
|
|
1751
|
+
objectWriteUInt16(this, value, offset, false);
|
|
1752
|
+
}
|
|
1753
|
+
return offset + 2
|
|
1754
|
+
};
|
|
1755
|
+
|
|
1756
|
+
function objectWriteUInt32 (buf, value, offset, littleEndian) {
|
|
1757
|
+
if (value < 0) value = 0xffffffff + value + 1;
|
|
1758
|
+
for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {
|
|
1759
|
+
buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff;
|
|
1760
|
+
}
|
|
1761
|
+
}
|
|
1762
|
+
|
|
1763
|
+
Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
|
|
1764
|
+
value = +value;
|
|
1765
|
+
offset = offset | 0;
|
|
1766
|
+
if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);
|
|
1767
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
|
1768
|
+
this[offset + 3] = (value >>> 24);
|
|
1769
|
+
this[offset + 2] = (value >>> 16);
|
|
1770
|
+
this[offset + 1] = (value >>> 8);
|
|
1771
|
+
this[offset] = (value & 0xff);
|
|
1772
|
+
} else {
|
|
1773
|
+
objectWriteUInt32(this, value, offset, true);
|
|
1774
|
+
}
|
|
1775
|
+
return offset + 4
|
|
1776
|
+
};
|
|
1777
|
+
|
|
1778
|
+
Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
|
|
1779
|
+
value = +value;
|
|
1780
|
+
offset = offset | 0;
|
|
1781
|
+
if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);
|
|
1782
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
|
1783
|
+
this[offset] = (value >>> 24);
|
|
1784
|
+
this[offset + 1] = (value >>> 16);
|
|
1785
|
+
this[offset + 2] = (value >>> 8);
|
|
1786
|
+
this[offset + 3] = (value & 0xff);
|
|
1787
|
+
} else {
|
|
1788
|
+
objectWriteUInt32(this, value, offset, false);
|
|
1789
|
+
}
|
|
1790
|
+
return offset + 4
|
|
1791
|
+
};
|
|
1792
|
+
|
|
1793
|
+
Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
|
|
1794
|
+
value = +value;
|
|
1795
|
+
offset = offset | 0;
|
|
1796
|
+
if (!noAssert) {
|
|
1797
|
+
var limit = Math.pow(2, 8 * byteLength - 1);
|
|
1798
|
+
|
|
1799
|
+
checkInt(this, value, offset, byteLength, limit - 1, -limit);
|
|
1800
|
+
}
|
|
184
1801
|
|
|
185
|
-
|
|
186
|
-
var
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
1802
|
+
var i = 0;
|
|
1803
|
+
var mul = 1;
|
|
1804
|
+
var sub = 0;
|
|
1805
|
+
this[offset] = value & 0xFF;
|
|
1806
|
+
while (++i < byteLength && (mul *= 0x100)) {
|
|
1807
|
+
if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
|
|
1808
|
+
sub = 1;
|
|
1809
|
+
}
|
|
1810
|
+
this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;
|
|
1811
|
+
}
|
|
191
1812
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
[
|
|
210
|
-
|
|
211
|
-
[146, 8217],
|
|
212
|
-
[147, 8220],
|
|
213
|
-
[148, 8221],
|
|
214
|
-
[149, 8226],
|
|
215
|
-
[150, 8211],
|
|
216
|
-
[151, 8212],
|
|
217
|
-
[152, 732],
|
|
218
|
-
[153, 8482],
|
|
219
|
-
[154, 353],
|
|
220
|
-
[155, 8250],
|
|
221
|
-
[156, 339],
|
|
222
|
-
[158, 382],
|
|
223
|
-
[159, 376],
|
|
224
|
-
]);
|
|
225
|
-
/**
|
|
226
|
-
* Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.
|
|
227
|
-
*/
|
|
228
|
-
const fromCodePoint =
|
|
229
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins
|
|
230
|
-
(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {
|
|
231
|
-
let output = "";
|
|
232
|
-
if (codePoint > 0xffff) {
|
|
233
|
-
codePoint -= 0x10000;
|
|
234
|
-
output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800);
|
|
235
|
-
codePoint = 0xdc00 | (codePoint & 0x3ff);
|
|
1813
|
+
return offset + byteLength
|
|
1814
|
+
};
|
|
1815
|
+
|
|
1816
|
+
Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
|
|
1817
|
+
value = +value;
|
|
1818
|
+
offset = offset | 0;
|
|
1819
|
+
if (!noAssert) {
|
|
1820
|
+
var limit = Math.pow(2, 8 * byteLength - 1);
|
|
1821
|
+
|
|
1822
|
+
checkInt(this, value, offset, byteLength, limit - 1, -limit);
|
|
1823
|
+
}
|
|
1824
|
+
|
|
1825
|
+
var i = byteLength - 1;
|
|
1826
|
+
var mul = 1;
|
|
1827
|
+
var sub = 0;
|
|
1828
|
+
this[offset + i] = value & 0xFF;
|
|
1829
|
+
while (--i >= 0 && (mul *= 0x100)) {
|
|
1830
|
+
if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
|
|
1831
|
+
sub = 1;
|
|
236
1832
|
}
|
|
237
|
-
|
|
238
|
-
|
|
1833
|
+
this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;
|
|
1834
|
+
}
|
|
1835
|
+
|
|
1836
|
+
return offset + byteLength
|
|
239
1837
|
};
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
1838
|
+
|
|
1839
|
+
Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
|
|
1840
|
+
value = +value;
|
|
1841
|
+
offset = offset | 0;
|
|
1842
|
+
if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -128);
|
|
1843
|
+
if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);
|
|
1844
|
+
if (value < 0) value = 0xff + value + 1;
|
|
1845
|
+
this[offset] = (value & 0xff);
|
|
1846
|
+
return offset + 1
|
|
1847
|
+
};
|
|
1848
|
+
|
|
1849
|
+
Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
|
|
1850
|
+
value = +value;
|
|
1851
|
+
offset = offset | 0;
|
|
1852
|
+
if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -32768);
|
|
1853
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
|
1854
|
+
this[offset] = (value & 0xff);
|
|
1855
|
+
this[offset + 1] = (value >>> 8);
|
|
1856
|
+
} else {
|
|
1857
|
+
objectWriteUInt16(this, value, offset, true);
|
|
1858
|
+
}
|
|
1859
|
+
return offset + 2
|
|
1860
|
+
};
|
|
1861
|
+
|
|
1862
|
+
Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
|
|
1863
|
+
value = +value;
|
|
1864
|
+
offset = offset | 0;
|
|
1865
|
+
if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -32768);
|
|
1866
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
|
1867
|
+
this[offset] = (value >>> 8);
|
|
1868
|
+
this[offset + 1] = (value & 0xff);
|
|
1869
|
+
} else {
|
|
1870
|
+
objectWriteUInt16(this, value, offset, false);
|
|
1871
|
+
}
|
|
1872
|
+
return offset + 2
|
|
1873
|
+
};
|
|
1874
|
+
|
|
1875
|
+
Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
|
|
1876
|
+
value = +value;
|
|
1877
|
+
offset = offset | 0;
|
|
1878
|
+
if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -2147483648);
|
|
1879
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
|
1880
|
+
this[offset] = (value & 0xff);
|
|
1881
|
+
this[offset + 1] = (value >>> 8);
|
|
1882
|
+
this[offset + 2] = (value >>> 16);
|
|
1883
|
+
this[offset + 3] = (value >>> 24);
|
|
1884
|
+
} else {
|
|
1885
|
+
objectWriteUInt32(this, value, offset, true);
|
|
1886
|
+
}
|
|
1887
|
+
return offset + 4
|
|
1888
|
+
};
|
|
1889
|
+
|
|
1890
|
+
Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
|
|
1891
|
+
value = +value;
|
|
1892
|
+
offset = offset | 0;
|
|
1893
|
+
if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -2147483648);
|
|
1894
|
+
if (value < 0) value = 0xffffffff + value + 1;
|
|
1895
|
+
if (Buffer.TYPED_ARRAY_SUPPORT) {
|
|
1896
|
+
this[offset] = (value >>> 24);
|
|
1897
|
+
this[offset + 1] = (value >>> 16);
|
|
1898
|
+
this[offset + 2] = (value >>> 8);
|
|
1899
|
+
this[offset + 3] = (value & 0xff);
|
|
1900
|
+
} else {
|
|
1901
|
+
objectWriteUInt32(this, value, offset, false);
|
|
1902
|
+
}
|
|
1903
|
+
return offset + 4
|
|
1904
|
+
};
|
|
1905
|
+
|
|
1906
|
+
function checkIEEE754 (buf, value, offset, ext, max, min) {
|
|
1907
|
+
if (offset + ext > buf.length) throw new RangeError('Index out of range')
|
|
1908
|
+
if (offset < 0) throw new RangeError('Index out of range')
|
|
1909
|
+
}
|
|
1910
|
+
|
|
1911
|
+
function writeFloat (buf, value, offset, littleEndian, noAssert) {
|
|
1912
|
+
if (!noAssert) {
|
|
1913
|
+
checkIEEE754(buf, value, offset, 4);
|
|
1914
|
+
}
|
|
1915
|
+
write(buf, value, offset, littleEndian, 23, 4);
|
|
1916
|
+
return offset + 4
|
|
1917
|
+
}
|
|
1918
|
+
|
|
1919
|
+
Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
|
|
1920
|
+
return writeFloat(this, value, offset, true, noAssert)
|
|
1921
|
+
};
|
|
1922
|
+
|
|
1923
|
+
Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
|
|
1924
|
+
return writeFloat(this, value, offset, false, noAssert)
|
|
1925
|
+
};
|
|
1926
|
+
|
|
1927
|
+
function writeDouble (buf, value, offset, littleEndian, noAssert) {
|
|
1928
|
+
if (!noAssert) {
|
|
1929
|
+
checkIEEE754(buf, value, offset, 8);
|
|
1930
|
+
}
|
|
1931
|
+
write(buf, value, offset, littleEndian, 52, 8);
|
|
1932
|
+
return offset + 8
|
|
1933
|
+
}
|
|
1934
|
+
|
|
1935
|
+
Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
|
|
1936
|
+
return writeDouble(this, value, offset, true, noAssert)
|
|
1937
|
+
};
|
|
1938
|
+
|
|
1939
|
+
Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
|
|
1940
|
+
return writeDouble(this, value, offset, false, noAssert)
|
|
1941
|
+
};
|
|
1942
|
+
|
|
1943
|
+
// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
|
|
1944
|
+
Buffer.prototype.copy = function copy (target, targetStart, start, end) {
|
|
1945
|
+
if (!start) start = 0;
|
|
1946
|
+
if (!end && end !== 0) end = this.length;
|
|
1947
|
+
if (targetStart >= target.length) targetStart = target.length;
|
|
1948
|
+
if (!targetStart) targetStart = 0;
|
|
1949
|
+
if (end > 0 && end < start) end = start;
|
|
1950
|
+
|
|
1951
|
+
// Copy 0 bytes; we're done
|
|
1952
|
+
if (end === start) return 0
|
|
1953
|
+
if (target.length === 0 || this.length === 0) return 0
|
|
1954
|
+
|
|
1955
|
+
// Fatal error conditions
|
|
1956
|
+
if (targetStart < 0) {
|
|
1957
|
+
throw new RangeError('targetStart out of bounds')
|
|
1958
|
+
}
|
|
1959
|
+
if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
|
|
1960
|
+
if (end < 0) throw new RangeError('sourceEnd out of bounds')
|
|
1961
|
+
|
|
1962
|
+
// Are we oob?
|
|
1963
|
+
if (end > this.length) end = this.length;
|
|
1964
|
+
if (target.length - targetStart < end - start) {
|
|
1965
|
+
end = target.length - targetStart + start;
|
|
1966
|
+
}
|
|
1967
|
+
|
|
1968
|
+
var len = end - start;
|
|
1969
|
+
var i;
|
|
1970
|
+
|
|
1971
|
+
if (this === target && start < targetStart && targetStart < end) {
|
|
1972
|
+
// descending copy from end
|
|
1973
|
+
for (i = len - 1; i >= 0; --i) {
|
|
1974
|
+
target[i + targetStart] = this[i + start];
|
|
1975
|
+
}
|
|
1976
|
+
} else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
|
|
1977
|
+
// ascending copy from start
|
|
1978
|
+
for (i = 0; i < len; ++i) {
|
|
1979
|
+
target[i + targetStart] = this[i + start];
|
|
1980
|
+
}
|
|
1981
|
+
} else {
|
|
1982
|
+
Uint8Array.prototype.set.call(
|
|
1983
|
+
target,
|
|
1984
|
+
this.subarray(start, start + len),
|
|
1985
|
+
targetStart
|
|
1986
|
+
);
|
|
1987
|
+
}
|
|
1988
|
+
|
|
1989
|
+
return len
|
|
1990
|
+
};
|
|
1991
|
+
|
|
1992
|
+
// Usage:
|
|
1993
|
+
// buffer.fill(number[, offset[, end]])
|
|
1994
|
+
// buffer.fill(buffer[, offset[, end]])
|
|
1995
|
+
// buffer.fill(string[, offset[, end]][, encoding])
|
|
1996
|
+
Buffer.prototype.fill = function fill (val, start, end, encoding) {
|
|
1997
|
+
// Handle string cases:
|
|
1998
|
+
if (typeof val === 'string') {
|
|
1999
|
+
if (typeof start === 'string') {
|
|
2000
|
+
encoding = start;
|
|
2001
|
+
start = 0;
|
|
2002
|
+
end = this.length;
|
|
2003
|
+
} else if (typeof end === 'string') {
|
|
2004
|
+
encoding = end;
|
|
2005
|
+
end = this.length;
|
|
2006
|
+
}
|
|
2007
|
+
if (val.length === 1) {
|
|
2008
|
+
var code = val.charCodeAt(0);
|
|
2009
|
+
if (code < 256) {
|
|
2010
|
+
val = code;
|
|
2011
|
+
}
|
|
2012
|
+
}
|
|
2013
|
+
if (encoding !== undefined && typeof encoding !== 'string') {
|
|
2014
|
+
throw new TypeError('encoding must be a string')
|
|
2015
|
+
}
|
|
2016
|
+
if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
|
|
2017
|
+
throw new TypeError('Unknown encoding: ' + encoding)
|
|
2018
|
+
}
|
|
2019
|
+
} else if (typeof val === 'number') {
|
|
2020
|
+
val = val & 255;
|
|
2021
|
+
}
|
|
2022
|
+
|
|
2023
|
+
// Invalid ranges are not set to a default, so can range check early.
|
|
2024
|
+
if (start < 0 || this.length < start || this.length < end) {
|
|
2025
|
+
throw new RangeError('Out of range index')
|
|
2026
|
+
}
|
|
2027
|
+
|
|
2028
|
+
if (end <= start) {
|
|
2029
|
+
return this
|
|
2030
|
+
}
|
|
2031
|
+
|
|
2032
|
+
start = start >>> 0;
|
|
2033
|
+
end = end === undefined ? this.length : end >>> 0;
|
|
2034
|
+
|
|
2035
|
+
if (!val) val = 0;
|
|
2036
|
+
|
|
2037
|
+
var i;
|
|
2038
|
+
if (typeof val === 'number') {
|
|
2039
|
+
for (i = start; i < end; ++i) {
|
|
2040
|
+
this[i] = val;
|
|
2041
|
+
}
|
|
2042
|
+
} else {
|
|
2043
|
+
var bytes = internalIsBuffer(val)
|
|
2044
|
+
? val
|
|
2045
|
+
: utf8ToBytes(new Buffer(val, encoding).toString());
|
|
2046
|
+
var len = bytes.length;
|
|
2047
|
+
for (i = 0; i < end - start; ++i) {
|
|
2048
|
+
this[i + start] = bytes[i % len];
|
|
2049
|
+
}
|
|
2050
|
+
}
|
|
2051
|
+
|
|
2052
|
+
return this
|
|
2053
|
+
};
|
|
2054
|
+
|
|
2055
|
+
// HELPER FUNCTIONS
|
|
2056
|
+
// ================
|
|
2057
|
+
|
|
2058
|
+
var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g;
|
|
2059
|
+
|
|
2060
|
+
function base64clean (str) {
|
|
2061
|
+
// Node strips out invalid characters like \n and \t from the string, base64-js does not
|
|
2062
|
+
str = stringtrim(str).replace(INVALID_BASE64_RE, '');
|
|
2063
|
+
// Node converts strings with length < 2 to ''
|
|
2064
|
+
if (str.length < 2) return ''
|
|
2065
|
+
// Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
|
|
2066
|
+
while (str.length % 4 !== 0) {
|
|
2067
|
+
str = str + '=';
|
|
2068
|
+
}
|
|
2069
|
+
return str
|
|
2070
|
+
}
|
|
2071
|
+
|
|
2072
|
+
function stringtrim (str) {
|
|
2073
|
+
if (str.trim) return str.trim()
|
|
2074
|
+
return str.replace(/^\s+|\s+$/g, '')
|
|
2075
|
+
}
|
|
2076
|
+
|
|
2077
|
+
function toHex (n) {
|
|
2078
|
+
if (n < 16) return '0' + n.toString(16)
|
|
2079
|
+
return n.toString(16)
|
|
2080
|
+
}
|
|
2081
|
+
|
|
2082
|
+
function utf8ToBytes (string, units) {
|
|
2083
|
+
units = units || Infinity;
|
|
2084
|
+
var codePoint;
|
|
2085
|
+
var length = string.length;
|
|
2086
|
+
var leadSurrogate = null;
|
|
2087
|
+
var bytes = [];
|
|
2088
|
+
|
|
2089
|
+
for (var i = 0; i < length; ++i) {
|
|
2090
|
+
codePoint = string.charCodeAt(i);
|
|
2091
|
+
|
|
2092
|
+
// is surrogate component
|
|
2093
|
+
if (codePoint > 0xD7FF && codePoint < 0xE000) {
|
|
2094
|
+
// last char was a lead
|
|
2095
|
+
if (!leadSurrogate) {
|
|
2096
|
+
// no lead yet
|
|
2097
|
+
if (codePoint > 0xDBFF) {
|
|
2098
|
+
// unexpected trail
|
|
2099
|
+
if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
|
|
2100
|
+
continue
|
|
2101
|
+
} else if (i + 1 === length) {
|
|
2102
|
+
// unpaired lead
|
|
2103
|
+
if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
|
|
2104
|
+
continue
|
|
2105
|
+
}
|
|
2106
|
+
|
|
2107
|
+
// valid lead
|
|
2108
|
+
leadSurrogate = codePoint;
|
|
2109
|
+
|
|
2110
|
+
continue
|
|
2111
|
+
}
|
|
2112
|
+
|
|
2113
|
+
// 2 leads in a row
|
|
2114
|
+
if (codePoint < 0xDC00) {
|
|
2115
|
+
if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
|
|
2116
|
+
leadSurrogate = codePoint;
|
|
2117
|
+
continue
|
|
2118
|
+
}
|
|
2119
|
+
|
|
2120
|
+
// valid surrogate pair
|
|
2121
|
+
codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;
|
|
2122
|
+
} else if (leadSurrogate) {
|
|
2123
|
+
// valid bmp char, but last char was a lead
|
|
2124
|
+
if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
|
|
2125
|
+
}
|
|
2126
|
+
|
|
2127
|
+
leadSurrogate = null;
|
|
2128
|
+
|
|
2129
|
+
// encode utf8
|
|
2130
|
+
if (codePoint < 0x80) {
|
|
2131
|
+
if ((units -= 1) < 0) break
|
|
2132
|
+
bytes.push(codePoint);
|
|
2133
|
+
} else if (codePoint < 0x800) {
|
|
2134
|
+
if ((units -= 2) < 0) break
|
|
2135
|
+
bytes.push(
|
|
2136
|
+
codePoint >> 0x6 | 0xC0,
|
|
2137
|
+
codePoint & 0x3F | 0x80
|
|
2138
|
+
);
|
|
2139
|
+
} else if (codePoint < 0x10000) {
|
|
2140
|
+
if ((units -= 3) < 0) break
|
|
2141
|
+
bytes.push(
|
|
2142
|
+
codePoint >> 0xC | 0xE0,
|
|
2143
|
+
codePoint >> 0x6 & 0x3F | 0x80,
|
|
2144
|
+
codePoint & 0x3F | 0x80
|
|
2145
|
+
);
|
|
2146
|
+
} else if (codePoint < 0x110000) {
|
|
2147
|
+
if ((units -= 4) < 0) break
|
|
2148
|
+
bytes.push(
|
|
2149
|
+
codePoint >> 0x12 | 0xF0,
|
|
2150
|
+
codePoint >> 0xC & 0x3F | 0x80,
|
|
2151
|
+
codePoint >> 0x6 & 0x3F | 0x80,
|
|
2152
|
+
codePoint & 0x3F | 0x80
|
|
2153
|
+
);
|
|
2154
|
+
} else {
|
|
2155
|
+
throw new Error('Invalid code point')
|
|
2156
|
+
}
|
|
2157
|
+
}
|
|
2158
|
+
|
|
2159
|
+
return bytes
|
|
2160
|
+
}
|
|
2161
|
+
|
|
2162
|
+
function asciiToBytes (str) {
|
|
2163
|
+
var byteArray = [];
|
|
2164
|
+
for (var i = 0; i < str.length; ++i) {
|
|
2165
|
+
// Node's code seems to be doing this and not & 0x7F..
|
|
2166
|
+
byteArray.push(str.charCodeAt(i) & 0xFF);
|
|
2167
|
+
}
|
|
2168
|
+
return byteArray
|
|
2169
|
+
}
|
|
2170
|
+
|
|
2171
|
+
function utf16leToBytes (str, units) {
|
|
2172
|
+
var c, hi, lo;
|
|
2173
|
+
var byteArray = [];
|
|
2174
|
+
for (var i = 0; i < str.length; ++i) {
|
|
2175
|
+
if ((units -= 2) < 0) break
|
|
2176
|
+
|
|
2177
|
+
c = str.charCodeAt(i);
|
|
2178
|
+
hi = c >> 8;
|
|
2179
|
+
lo = c % 256;
|
|
2180
|
+
byteArray.push(lo);
|
|
2181
|
+
byteArray.push(hi);
|
|
2182
|
+
}
|
|
2183
|
+
|
|
2184
|
+
return byteArray
|
|
2185
|
+
}
|
|
2186
|
+
|
|
2187
|
+
|
|
2188
|
+
function base64ToBytes (str) {
|
|
2189
|
+
return toByteArray(base64clean(str))
|
|
2190
|
+
}
|
|
2191
|
+
|
|
2192
|
+
function blitBuffer (src, dst, offset, length) {
|
|
2193
|
+
for (var i = 0; i < length; ++i) {
|
|
2194
|
+
if ((i + offset >= dst.length) || (i >= src.length)) break
|
|
2195
|
+
dst[i + offset] = src[i];
|
|
2196
|
+
}
|
|
2197
|
+
return i
|
|
2198
|
+
}
|
|
2199
|
+
|
|
2200
|
+
function isnan (val) {
|
|
2201
|
+
return val !== val // eslint-disable-line no-self-compare
|
|
2202
|
+
}
|
|
2203
|
+
|
|
2204
|
+
|
|
2205
|
+
// the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence
|
|
2206
|
+
// The _isBuffer check is for Safari 5-7 support, because it's missing
|
|
2207
|
+
// Object.prototype.constructor. Remove this eventually
|
|
2208
|
+
function isBuffer(obj) {
|
|
2209
|
+
return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj))
|
|
2210
|
+
}
|
|
2211
|
+
|
|
2212
|
+
function isFastBuffer (obj) {
|
|
2213
|
+
return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
|
|
2214
|
+
}
|
|
2215
|
+
|
|
2216
|
+
// For Node v0.10 support. Remove this eventually.
|
|
2217
|
+
function isSlowBuffer (obj) {
|
|
2218
|
+
return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0))
|
|
2219
|
+
}
|
|
2220
|
+
|
|
2221
|
+
/*
|
|
2222
|
+
* Shared base64 decode helper for generated decode data.
|
|
2223
|
+
* Assumes global atob is available.
|
|
244
2224
|
*/
|
|
245
|
-
function
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
2225
|
+
function decodeBase64(input) {
|
|
2226
|
+
const binary =
|
|
2227
|
+
// eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
2228
|
+
typeof atob === "function"
|
|
2229
|
+
? // Browser (and Node >=16)
|
|
2230
|
+
// eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
2231
|
+
atob(input)
|
|
2232
|
+
: // Older Node versions (<16)
|
|
2233
|
+
// eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
2234
|
+
typeof Buffer.from === "function"
|
|
2235
|
+
? // eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
2236
|
+
Buffer.from(input, "base64").toString("binary")
|
|
2237
|
+
: // eslint-disable-next-line unicorn/no-new-buffer, n/no-deprecated-api
|
|
2238
|
+
new Buffer(input, "base64").toString("binary");
|
|
2239
|
+
const evenLength = binary.length & -2; // Round down to even length
|
|
2240
|
+
const out = new Uint16Array(evenLength / 2);
|
|
2241
|
+
for (let index = 0, outIndex = 0; index < evenLength; index += 2) {
|
|
2242
|
+
const lo = binary.charCodeAt(index);
|
|
2243
|
+
const hi = binary.charCodeAt(index + 1);
|
|
2244
|
+
out[outIndex++] = lo | (hi << 8);
|
|
249
2245
|
}
|
|
250
|
-
return
|
|
2246
|
+
return out;
|
|
251
2247
|
}
|
|
252
2248
|
|
|
2249
|
+
// Generated using scripts/write-decode-map.ts
|
|
2250
|
+
const htmlDecodeTree = /* #__PURE__ */ decodeBase64("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IA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YwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWls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ZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg");
|
|
2251
|
+
|
|
2252
|
+
/**
|
|
2253
|
+
* Bit flags & masks for the binary trie encoding used for entity decoding.
|
|
2254
|
+
*
|
|
2255
|
+
* Bit layout (16 bits total):
|
|
2256
|
+
* 15..14 VALUE_LENGTH (+1 encoding; 0 => no value)
|
|
2257
|
+
* 13 FLAG13. If valueLength>0: semicolon required flag (implicit ';').
|
|
2258
|
+
* If valueLength==0: compact run flag.
|
|
2259
|
+
* 12..7 BRANCH_LENGTH Branch length (0 => single branch in 6..0 if jumpOffset==char) OR run length (when compact run)
|
|
2260
|
+
* 6..0 JUMP_TABLE Jump offset (jump table) OR single-branch char code OR first run char
|
|
2261
|
+
*/
|
|
2262
|
+
var BinTrieFlags;
|
|
2263
|
+
(function (BinTrieFlags) {
|
|
2264
|
+
BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
|
|
2265
|
+
BinTrieFlags[BinTrieFlags["FLAG13"] = 8192] = "FLAG13";
|
|
2266
|
+
BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 8064] = "BRANCH_LENGTH";
|
|
2267
|
+
BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE";
|
|
2268
|
+
})(BinTrieFlags || (BinTrieFlags = {}));
|
|
2269
|
+
|
|
253
2270
|
var CharCodes;
|
|
254
2271
|
(function (CharCodes) {
|
|
255
2272
|
CharCodes[CharCodes["NUM"] = 35] = "NUM";
|
|
@@ -266,13 +2283,7 @@ var CharCodes;
|
|
|
266
2283
|
CharCodes[CharCodes["UPPER_Z"] = 90] = "UPPER_Z";
|
|
267
2284
|
})(CharCodes || (CharCodes = {}));
|
|
268
2285
|
/** Bit that needs to be set to convert an upper case ASCII character to lower case */
|
|
269
|
-
const TO_LOWER_BIT =
|
|
270
|
-
var BinTrieFlags;
|
|
271
|
-
(function (BinTrieFlags) {
|
|
272
|
-
BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
|
|
273
|
-
BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH";
|
|
274
|
-
BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE";
|
|
275
|
-
})(BinTrieFlags || (BinTrieFlags = {}));
|
|
2286
|
+
const TO_LOWER_BIT = 32;
|
|
276
2287
|
function isNumber(code) {
|
|
277
2288
|
return code >= CharCodes.ZERO && code <= CharCodes.NINE;
|
|
278
2289
|
}
|
|
@@ -317,6 +2328,7 @@ var DecodingMode;
|
|
|
317
2328
|
class EntityDecoder {
|
|
318
2329
|
constructor(
|
|
319
2330
|
/** The tree used to decode entities. */
|
|
2331
|
+
// biome-ignore lint/correctness/noUnusedPrivateClassMembers: False positive
|
|
320
2332
|
decodeTree,
|
|
321
2333
|
/**
|
|
322
2334
|
* The function that is called when a codepoint is decoded.
|
|
@@ -367,32 +2379,32 @@ class EntityDecoder {
|
|
|
367
2379
|
* Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the
|
|
368
2380
|
* entity is incomplete, and resume when the next string is written.
|
|
369
2381
|
*
|
|
370
|
-
* @param
|
|
2382
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
371
2383
|
* @param offset The offset at which the entity begins. Should be 0 if this is not the first call.
|
|
372
2384
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
373
2385
|
*/
|
|
374
|
-
write(
|
|
2386
|
+
write(input, offset) {
|
|
375
2387
|
switch (this.state) {
|
|
376
2388
|
case EntityDecoderState.EntityStart: {
|
|
377
|
-
if (
|
|
2389
|
+
if (input.charCodeAt(offset) === CharCodes.NUM) {
|
|
378
2390
|
this.state = EntityDecoderState.NumericStart;
|
|
379
2391
|
this.consumed += 1;
|
|
380
|
-
return this.stateNumericStart(
|
|
2392
|
+
return this.stateNumericStart(input, offset + 1);
|
|
381
2393
|
}
|
|
382
2394
|
this.state = EntityDecoderState.NamedEntity;
|
|
383
|
-
return this.stateNamedEntity(
|
|
2395
|
+
return this.stateNamedEntity(input, offset);
|
|
384
2396
|
}
|
|
385
2397
|
case EntityDecoderState.NumericStart: {
|
|
386
|
-
return this.stateNumericStart(
|
|
2398
|
+
return this.stateNumericStart(input, offset);
|
|
387
2399
|
}
|
|
388
2400
|
case EntityDecoderState.NumericDecimal: {
|
|
389
|
-
return this.stateNumericDecimal(
|
|
2401
|
+
return this.stateNumericDecimal(input, offset);
|
|
390
2402
|
}
|
|
391
2403
|
case EntityDecoderState.NumericHex: {
|
|
392
|
-
return this.stateNumericHex(
|
|
2404
|
+
return this.stateNumericHex(input, offset);
|
|
393
2405
|
}
|
|
394
2406
|
case EntityDecoderState.NamedEntity: {
|
|
395
|
-
return this.stateNamedEntity(
|
|
2407
|
+
return this.stateNamedEntity(input, offset);
|
|
396
2408
|
}
|
|
397
2409
|
}
|
|
398
2410
|
}
|
|
@@ -401,78 +2413,71 @@ class EntityDecoder {
|
|
|
401
2413
|
*
|
|
402
2414
|
* Equivalent to the `Numeric character reference state` in the HTML spec.
|
|
403
2415
|
*
|
|
404
|
-
* @param
|
|
2416
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
405
2417
|
* @param offset The current offset.
|
|
406
2418
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
407
2419
|
*/
|
|
408
|
-
stateNumericStart(
|
|
409
|
-
if (offset >=
|
|
2420
|
+
stateNumericStart(input, offset) {
|
|
2421
|
+
if (offset >= input.length) {
|
|
410
2422
|
return -1;
|
|
411
2423
|
}
|
|
412
|
-
if ((
|
|
2424
|
+
if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {
|
|
413
2425
|
this.state = EntityDecoderState.NumericHex;
|
|
414
2426
|
this.consumed += 1;
|
|
415
|
-
return this.stateNumericHex(
|
|
2427
|
+
return this.stateNumericHex(input, offset + 1);
|
|
416
2428
|
}
|
|
417
2429
|
this.state = EntityDecoderState.NumericDecimal;
|
|
418
|
-
return this.stateNumericDecimal(
|
|
419
|
-
}
|
|
420
|
-
addToNumericResult(str, start, end, base) {
|
|
421
|
-
if (start !== end) {
|
|
422
|
-
const digitCount = end - start;
|
|
423
|
-
this.result =
|
|
424
|
-
this.result * Math.pow(base, digitCount) +
|
|
425
|
-
parseInt(str.substr(start, digitCount), base);
|
|
426
|
-
this.consumed += digitCount;
|
|
427
|
-
}
|
|
2430
|
+
return this.stateNumericDecimal(input, offset);
|
|
428
2431
|
}
|
|
429
2432
|
/**
|
|
430
2433
|
* Parses a hexadecimal numeric entity.
|
|
431
2434
|
*
|
|
432
2435
|
* Equivalent to the `Hexademical character reference state` in the HTML spec.
|
|
433
2436
|
*
|
|
434
|
-
* @param
|
|
2437
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
435
2438
|
* @param offset The current offset.
|
|
436
2439
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
437
2440
|
*/
|
|
438
|
-
stateNumericHex(
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
const char = str.charCodeAt(offset);
|
|
2441
|
+
stateNumericHex(input, offset) {
|
|
2442
|
+
while (offset < input.length) {
|
|
2443
|
+
const char = input.charCodeAt(offset);
|
|
442
2444
|
if (isNumber(char) || isHexadecimalCharacter(char)) {
|
|
443
|
-
|
|
2445
|
+
// Convert hex digit to value (0-15); 'a'/'A' -> 10.
|
|
2446
|
+
const digit = char <= CharCodes.NINE
|
|
2447
|
+
? char - CharCodes.ZERO
|
|
2448
|
+
: (char | TO_LOWER_BIT) - CharCodes.LOWER_A + 10;
|
|
2449
|
+
this.result = this.result * 16 + digit;
|
|
2450
|
+
this.consumed++;
|
|
2451
|
+
offset++;
|
|
444
2452
|
}
|
|
445
2453
|
else {
|
|
446
|
-
this.addToNumericResult(str, startIdx, offset, 16);
|
|
447
2454
|
return this.emitNumericEntity(char, 3);
|
|
448
2455
|
}
|
|
449
2456
|
}
|
|
450
|
-
|
|
451
|
-
return -1;
|
|
2457
|
+
return -1; // Incomplete entity
|
|
452
2458
|
}
|
|
453
2459
|
/**
|
|
454
2460
|
* Parses a decimal numeric entity.
|
|
455
2461
|
*
|
|
456
2462
|
* Equivalent to the `Decimal character reference state` in the HTML spec.
|
|
457
2463
|
*
|
|
458
|
-
* @param
|
|
2464
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
459
2465
|
* @param offset The current offset.
|
|
460
2466
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
461
2467
|
*/
|
|
462
|
-
stateNumericDecimal(
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
const char = str.charCodeAt(offset);
|
|
2468
|
+
stateNumericDecimal(input, offset) {
|
|
2469
|
+
while (offset < input.length) {
|
|
2470
|
+
const char = input.charCodeAt(offset);
|
|
466
2471
|
if (isNumber(char)) {
|
|
467
|
-
|
|
2472
|
+
this.result = this.result * 10 + (char - CharCodes.ZERO);
|
|
2473
|
+
this.consumed++;
|
|
2474
|
+
offset++;
|
|
468
2475
|
}
|
|
469
2476
|
else {
|
|
470
|
-
this.addToNumericResult(str, startIdx, offset, 10);
|
|
471
2477
|
return this.emitNumericEntity(char, 2);
|
|
472
2478
|
}
|
|
473
2479
|
}
|
|
474
|
-
|
|
475
|
-
return -1;
|
|
2480
|
+
return -1; // Incomplete entity
|
|
476
2481
|
}
|
|
477
2482
|
/**
|
|
478
2483
|
* Validate and emit a numeric entity.
|
|
@@ -515,17 +2520,74 @@ class EntityDecoder {
|
|
|
515
2520
|
*
|
|
516
2521
|
* Equivalent to the `Named character reference state` in the HTML spec.
|
|
517
2522
|
*
|
|
518
|
-
* @param
|
|
2523
|
+
* @param input The string containing the entity (or a continuation of the entity).
|
|
519
2524
|
* @param offset The current offset.
|
|
520
2525
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
521
2526
|
*/
|
|
522
|
-
stateNamedEntity(
|
|
2527
|
+
stateNamedEntity(input, offset) {
|
|
523
2528
|
const { decodeTree } = this;
|
|
524
2529
|
let current = decodeTree[this.treeIndex];
|
|
525
|
-
// The
|
|
2530
|
+
// The length is the number of bytes of the value, including the current byte.
|
|
526
2531
|
let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
527
|
-
|
|
528
|
-
|
|
2532
|
+
while (offset < input.length) {
|
|
2533
|
+
// Handle compact runs (possibly inline): valueLength == 0 and SEMI_REQUIRED bit set.
|
|
2534
|
+
if (valueLength === 0 && (current & BinTrieFlags.FLAG13) !== 0) {
|
|
2535
|
+
const runLength = (current & BinTrieFlags.BRANCH_LENGTH) >> 7; /* 2..63 */
|
|
2536
|
+
const firstChar = current & BinTrieFlags.JUMP_TABLE;
|
|
2537
|
+
// Fast-fail if we don't have enough remaining input for the full run (incomplete entity)
|
|
2538
|
+
if (offset + runLength > input.length)
|
|
2539
|
+
return -1;
|
|
2540
|
+
// Verify first char
|
|
2541
|
+
if (input.charCodeAt(offset) !== firstChar) {
|
|
2542
|
+
return this.result === 0
|
|
2543
|
+
? 0
|
|
2544
|
+
: this.emitNotTerminatedNamedEntity();
|
|
2545
|
+
}
|
|
2546
|
+
offset++;
|
|
2547
|
+
this.excess++;
|
|
2548
|
+
// Remaining characters after the first
|
|
2549
|
+
const remaining = runLength - 1;
|
|
2550
|
+
// Iterate over packed 2-char words
|
|
2551
|
+
for (let runPos = 1; runPos < runLength; runPos += 2) {
|
|
2552
|
+
const packedWord = decodeTree[this.treeIndex + 1 + ((runPos - 1) >> 1)];
|
|
2553
|
+
const low = packedWord & 0xff;
|
|
2554
|
+
if (input.charCodeAt(offset) !== low) {
|
|
2555
|
+
return this.result === 0
|
|
2556
|
+
? 0
|
|
2557
|
+
: this.emitNotTerminatedNamedEntity();
|
|
2558
|
+
}
|
|
2559
|
+
offset++;
|
|
2560
|
+
this.excess++;
|
|
2561
|
+
const high = (packedWord >> 8) & 0xff;
|
|
2562
|
+
if (runPos + 1 < runLength) {
|
|
2563
|
+
if (input.charCodeAt(offset) !== high) {
|
|
2564
|
+
return this.result === 0
|
|
2565
|
+
? 0
|
|
2566
|
+
: this.emitNotTerminatedNamedEntity();
|
|
2567
|
+
}
|
|
2568
|
+
offset++;
|
|
2569
|
+
this.excess++;
|
|
2570
|
+
}
|
|
2571
|
+
}
|
|
2572
|
+
this.treeIndex += 1 + ((remaining + 1) >> 1);
|
|
2573
|
+
current = decodeTree[this.treeIndex];
|
|
2574
|
+
valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
2575
|
+
}
|
|
2576
|
+
if (offset >= input.length)
|
|
2577
|
+
break;
|
|
2578
|
+
const char = input.charCodeAt(offset);
|
|
2579
|
+
/*
|
|
2580
|
+
* Implicit semicolon handling for nodes that require a semicolon but
|
|
2581
|
+
* don't have an explicit ';' branch stored in the trie. If we have
|
|
2582
|
+
* a value on the current node, it requires a semicolon, and the
|
|
2583
|
+
* current input character is a semicolon, emit the entity using the
|
|
2584
|
+
* current node (without descending further).
|
|
2585
|
+
*/
|
|
2586
|
+
if (char === CharCodes.SEMI &&
|
|
2587
|
+
valueLength !== 0 &&
|
|
2588
|
+
(current & BinTrieFlags.FLAG13) !== 0) {
|
|
2589
|
+
return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
|
|
2590
|
+
}
|
|
529
2591
|
this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);
|
|
530
2592
|
if (this.treeIndex < 0) {
|
|
531
2593
|
return this.result === 0 ||
|
|
@@ -547,12 +2609,16 @@ class EntityDecoder {
|
|
|
547
2609
|
return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
|
|
548
2610
|
}
|
|
549
2611
|
// If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.
|
|
550
|
-
if (this.decodeMode !== DecodingMode.Strict
|
|
2612
|
+
if (this.decodeMode !== DecodingMode.Strict &&
|
|
2613
|
+
(current & BinTrieFlags.FLAG13) === 0) {
|
|
551
2614
|
this.result = this.treeIndex;
|
|
552
2615
|
this.consumed += this.excess;
|
|
553
2616
|
this.excess = 0;
|
|
554
2617
|
}
|
|
555
2618
|
}
|
|
2619
|
+
// Increment offset & excess for next iteration
|
|
2620
|
+
offset++;
|
|
2621
|
+
this.excess++;
|
|
556
2622
|
}
|
|
557
2623
|
return -1;
|
|
558
2624
|
}
|
|
@@ -581,7 +2647,8 @@ class EntityDecoder {
|
|
|
581
2647
|
emitNamedEntityData(result, valueLength, consumed) {
|
|
582
2648
|
const { decodeTree } = this;
|
|
583
2649
|
this.emitCodePoint(valueLength === 1
|
|
584
|
-
? decodeTree[result] &
|
|
2650
|
+
? decodeTree[result] &
|
|
2651
|
+
~(BinTrieFlags.VALUE_LENGTH | BinTrieFlags.FLAG13)
|
|
585
2652
|
: decodeTree[result + 1], consumed);
|
|
586
2653
|
if (valueLength === 3) {
|
|
587
2654
|
// For multi-byte values, we need to emit the second byte.
|
|
@@ -632,28 +2699,28 @@ class EntityDecoder {
|
|
|
632
2699
|
* @returns A function that decodes entities in a string.
|
|
633
2700
|
*/
|
|
634
2701
|
function getDecoder(decodeTree) {
|
|
635
|
-
let
|
|
636
|
-
const decoder = new EntityDecoder(decodeTree, (
|
|
637
|
-
return function decodeWithTrie(
|
|
2702
|
+
let returnValue = "";
|
|
2703
|
+
const decoder = new EntityDecoder(decodeTree, (data) => (returnValue += fromCodePoint(data)));
|
|
2704
|
+
return function decodeWithTrie(input, decodeMode) {
|
|
638
2705
|
let lastIndex = 0;
|
|
639
2706
|
let offset = 0;
|
|
640
|
-
while ((offset =
|
|
641
|
-
|
|
2707
|
+
while ((offset = input.indexOf("&", offset)) >= 0) {
|
|
2708
|
+
returnValue += input.slice(lastIndex, offset);
|
|
642
2709
|
decoder.startEntity(decodeMode);
|
|
643
|
-
const
|
|
2710
|
+
const length = decoder.write(input,
|
|
644
2711
|
// Skip the "&"
|
|
645
2712
|
offset + 1);
|
|
646
|
-
if (
|
|
2713
|
+
if (length < 0) {
|
|
647
2714
|
lastIndex = offset + decoder.end();
|
|
648
2715
|
break;
|
|
649
2716
|
}
|
|
650
|
-
lastIndex = offset +
|
|
651
|
-
// If `
|
|
652
|
-
offset =
|
|
2717
|
+
lastIndex = offset + length;
|
|
2718
|
+
// If `length` is 0, skip the current `&` and continue.
|
|
2719
|
+
offset = length === 0 ? lastIndex + 1 : lastIndex;
|
|
653
2720
|
}
|
|
654
|
-
const result =
|
|
2721
|
+
const result = returnValue + input.slice(lastIndex);
|
|
655
2722
|
// Make sure we don't keep a reference to the final string.
|
|
656
|
-
|
|
2723
|
+
returnValue = "";
|
|
657
2724
|
return result;
|
|
658
2725
|
};
|
|
659
2726
|
}
|
|
@@ -667,50 +2734,55 @@ function getDecoder(decodeTree) {
|
|
|
667
2734
|
* @param char The current character.
|
|
668
2735
|
* @returns The index of the next node, or -1 if no branch is taken.
|
|
669
2736
|
*/
|
|
670
|
-
function determineBranch(decodeTree, current,
|
|
2737
|
+
function determineBranch(decodeTree, current, nodeIndex, char) {
|
|
671
2738
|
const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;
|
|
672
2739
|
const jumpOffset = current & BinTrieFlags.JUMP_TABLE;
|
|
673
2740
|
// Case 1: Single branch encoded in jump offset
|
|
674
2741
|
if (branchCount === 0) {
|
|
675
|
-
return jumpOffset !== 0 && char === jumpOffset ?
|
|
2742
|
+
return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;
|
|
676
2743
|
}
|
|
677
2744
|
// Case 2: Multiple branches encoded in jump table
|
|
678
2745
|
if (jumpOffset) {
|
|
679
2746
|
const value = char - jumpOffset;
|
|
680
2747
|
return value < 0 || value >= branchCount
|
|
681
2748
|
? -1
|
|
682
|
-
: decodeTree[
|
|
2749
|
+
: decodeTree[nodeIndex + value] - 1;
|
|
683
2750
|
}
|
|
684
|
-
// Case 3: Multiple branches encoded in dictionary
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
2751
|
+
// Case 3: Multiple branches encoded in packed dictionary (two keys per uint16)
|
|
2752
|
+
const packedKeySlots = (branchCount + 1) >> 1;
|
|
2753
|
+
/*
|
|
2754
|
+
* Treat packed keys as a virtual sorted array of length `branchCount`.
|
|
2755
|
+
* Key(i) = low byte for even i, high byte for odd i in slot i>>1.
|
|
2756
|
+
*/
|
|
2757
|
+
let lo = 0;
|
|
2758
|
+
let hi = branchCount - 1;
|
|
688
2759
|
while (lo <= hi) {
|
|
689
2760
|
const mid = (lo + hi) >>> 1;
|
|
690
|
-
const
|
|
691
|
-
|
|
2761
|
+
const slot = mid >> 1;
|
|
2762
|
+
const packed = decodeTree[nodeIndex + slot];
|
|
2763
|
+
const midKey = (packed >> ((mid & 1) * 8)) & 0xff;
|
|
2764
|
+
if (midKey < char) {
|
|
692
2765
|
lo = mid + 1;
|
|
693
2766
|
}
|
|
694
|
-
else if (
|
|
2767
|
+
else if (midKey > char) {
|
|
695
2768
|
hi = mid - 1;
|
|
696
2769
|
}
|
|
697
2770
|
else {
|
|
698
|
-
return decodeTree[
|
|
2771
|
+
return decodeTree[nodeIndex + packedKeySlots + mid];
|
|
699
2772
|
}
|
|
700
2773
|
}
|
|
701
2774
|
return -1;
|
|
702
2775
|
}
|
|
703
|
-
const htmlDecoder = getDecoder(htmlDecodeTree);
|
|
704
|
-
getDecoder(xmlDecodeTree);
|
|
2776
|
+
const htmlDecoder = /* #__PURE__ */ getDecoder(htmlDecodeTree);
|
|
705
2777
|
/**
|
|
706
2778
|
* Decodes an HTML string.
|
|
707
2779
|
*
|
|
708
|
-
* @param
|
|
2780
|
+
* @param htmlString The string to decode.
|
|
709
2781
|
* @param mode The decoding mode.
|
|
710
2782
|
* @returns The decoded string.
|
|
711
2783
|
*/
|
|
712
|
-
function decodeHTML(
|
|
713
|
-
return htmlDecoder(
|
|
2784
|
+
function decodeHTML(htmlString, mode = DecodingMode.Legacy) {
|
|
2785
|
+
return htmlDecoder(htmlString, mode);
|
|
714
2786
|
}
|
|
715
2787
|
|
|
716
2788
|
const defaultDelimitersOpen = new Uint8Array([123, 123]);
|
|
@@ -820,14 +2892,28 @@ class Tokenizer {
|
|
|
820
2892
|
getPos(index) {
|
|
821
2893
|
let line = 1;
|
|
822
2894
|
let column = index + 1;
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
2895
|
+
const length = this.newlines.length;
|
|
2896
|
+
let j = -1;
|
|
2897
|
+
if (length > 100) {
|
|
2898
|
+
let l = -1;
|
|
2899
|
+
let r = length;
|
|
2900
|
+
while (l + 1 < r) {
|
|
2901
|
+
const m = l + r >>> 1;
|
|
2902
|
+
this.newlines[m] < index ? l = m : r = m;
|
|
2903
|
+
}
|
|
2904
|
+
j = l;
|
|
2905
|
+
} else {
|
|
2906
|
+
for (let i = length - 1; i >= 0; i--) {
|
|
2907
|
+
if (index > this.newlines[i]) {
|
|
2908
|
+
j = i;
|
|
2909
|
+
break;
|
|
2910
|
+
}
|
|
829
2911
|
}
|
|
830
2912
|
}
|
|
2913
|
+
if (j >= 0) {
|
|
2914
|
+
line = j + 2;
|
|
2915
|
+
column = index - this.newlines[j];
|
|
2916
|
+
}
|
|
831
2917
|
return {
|
|
832
2918
|
column,
|
|
833
2919
|
line,
|
|
@@ -1631,7 +3717,7 @@ const errorMessages = {
|
|
|
1631
3717
|
[32]: `v-for has invalid expression.`,
|
|
1632
3718
|
[33]: `<template v-for> key should be placed on the <template> tag.`,
|
|
1633
3719
|
[34]: `v-bind is missing expression.`,
|
|
1634
|
-
[
|
|
3720
|
+
[53]: `v-bind with same-name shorthand only allows static argument.`,
|
|
1635
3721
|
[35]: `v-on is missing expression.`,
|
|
1636
3722
|
[36]: `Unexpected custom directive on <slot> outlet.`,
|
|
1637
3723
|
[37]: `Mixed v-slot usage on both the component and nested <template>. When there are multiple named slots, all slots should use <template> syntax to avoid scope ambiguity.`,
|
|
@@ -1643,16 +3729,17 @@ const errorMessages = {
|
|
|
1643
3729
|
[43]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`,
|
|
1644
3730
|
[44]: `v-model cannot be used on a prop, because local prop bindings are not writable.
|
|
1645
3731
|
Use a v-bind binding combined with a v-on listener that emits update:x event instead.`,
|
|
1646
|
-
[45]: `
|
|
1647
|
-
[46]:
|
|
1648
|
-
[
|
|
3732
|
+
[45]: `v-model cannot be used on a const binding because it is not writable.`,
|
|
3733
|
+
[46]: `Error parsing JavaScript expression: `,
|
|
3734
|
+
[47]: `<KeepAlive> expects exactly one child component.`,
|
|
3735
|
+
[52]: `@vnode-* hooks in templates are no longer supported. Use the vue: prefix instead. For example, @vnode-mounted should be changed to @vue:mounted. @vnode-* hooks support has been removed in 3.4.`,
|
|
1649
3736
|
// generic errors
|
|
1650
|
-
[
|
|
1651
|
-
[
|
|
1652
|
-
[
|
|
1653
|
-
[
|
|
3737
|
+
[48]: `"prefixIdentifiers" option is not supported in this build of compiler.`,
|
|
3738
|
+
[49]: `ES module mode is not supported in this build of compiler.`,
|
|
3739
|
+
[50]: `"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.`,
|
|
3740
|
+
[51]: `"scopeId" option is only supported in module mode.`,
|
|
1654
3741
|
// just to fulfill types
|
|
1655
|
-
[
|
|
3742
|
+
[54]: ``
|
|
1656
3743
|
};
|
|
1657
3744
|
|
|
1658
3745
|
var lib = {};
|
|
@@ -17085,7 +19172,7 @@ function toValidAssetId(name, type) {
|
|
|
17085
19172
|
})}`;
|
|
17086
19173
|
}
|
|
17087
19174
|
function filterNonCommentChildren(node) {
|
|
17088
|
-
return node.children.filter((n) => n
|
|
19175
|
+
return node.children.filter((n) => !isCommentOrWhitespace(n));
|
|
17089
19176
|
}
|
|
17090
19177
|
function hasSingleChild(node) {
|
|
17091
19178
|
return filterNonCommentChildren(node).length === 1;
|
|
@@ -17746,7 +19833,7 @@ function createExp(content, isStatic = false, loc, constType = 0, parseMode = 0
|
|
|
17746
19833
|
}
|
|
17747
19834
|
} catch (e) {
|
|
17748
19835
|
exp.ast = false;
|
|
17749
|
-
emitError(
|
|
19836
|
+
emitError(46, loc.start.offset, e.message);
|
|
17750
19837
|
}
|
|
17751
19838
|
}
|
|
17752
19839
|
return exp;
|
|
@@ -18046,7 +20133,7 @@ var hasRequiredUtil;
|
|
|
18046
20133
|
function requireUtil () {
|
|
18047
20134
|
if (hasRequiredUtil) return util;
|
|
18048
20135
|
hasRequiredUtil = 1;
|
|
18049
|
-
(function (exports) {
|
|
20136
|
+
(function (exports$1) {
|
|
18050
20137
|
/*
|
|
18051
20138
|
* Copyright 2011 Mozilla Foundation and contributors
|
|
18052
20139
|
* Licensed under the New BSD license. See LICENSE or:
|
|
@@ -18072,7 +20159,7 @@ function requireUtil () {
|
|
|
18072
20159
|
throw new Error('"' + aName + '" is a required argument.');
|
|
18073
20160
|
}
|
|
18074
20161
|
}
|
|
18075
|
-
exports.getArg = getArg;
|
|
20162
|
+
exports$1.getArg = getArg;
|
|
18076
20163
|
|
|
18077
20164
|
var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/;
|
|
18078
20165
|
var dataUrlRegexp = /^data:.+\,.+$/;
|
|
@@ -18090,7 +20177,7 @@ function requireUtil () {
|
|
|
18090
20177
|
path: match[5]
|
|
18091
20178
|
};
|
|
18092
20179
|
}
|
|
18093
|
-
exports.urlParse = urlParse;
|
|
20180
|
+
exports$1.urlParse = urlParse;
|
|
18094
20181
|
|
|
18095
20182
|
function urlGenerate(aParsedUrl) {
|
|
18096
20183
|
var url = '';
|
|
@@ -18112,7 +20199,7 @@ function requireUtil () {
|
|
|
18112
20199
|
}
|
|
18113
20200
|
return url;
|
|
18114
20201
|
}
|
|
18115
|
-
exports.urlGenerate = urlGenerate;
|
|
20202
|
+
exports$1.urlGenerate = urlGenerate;
|
|
18116
20203
|
|
|
18117
20204
|
var MAX_CACHED_INPUTS = 32;
|
|
18118
20205
|
|
|
@@ -18171,7 +20258,7 @@ function requireUtil () {
|
|
|
18171
20258
|
}
|
|
18172
20259
|
path = url.path;
|
|
18173
20260
|
}
|
|
18174
|
-
var isAbsolute = exports.isAbsolute(path);
|
|
20261
|
+
var isAbsolute = exports$1.isAbsolute(path);
|
|
18175
20262
|
// Split the path into parts between `/` characters. This is much faster than
|
|
18176
20263
|
// using `.split(/\/+/g)`.
|
|
18177
20264
|
var parts = [];
|
|
@@ -18222,7 +20309,7 @@ function requireUtil () {
|
|
|
18222
20309
|
}
|
|
18223
20310
|
return path;
|
|
18224
20311
|
});
|
|
18225
|
-
exports.normalize = normalize;
|
|
20312
|
+
exports$1.normalize = normalize;
|
|
18226
20313
|
|
|
18227
20314
|
/**
|
|
18228
20315
|
* Joins two paths/URLs.
|
|
@@ -18281,9 +20368,9 @@ function requireUtil () {
|
|
|
18281
20368
|
}
|
|
18282
20369
|
return joined;
|
|
18283
20370
|
}
|
|
18284
|
-
exports.join = join;
|
|
20371
|
+
exports$1.join = join;
|
|
18285
20372
|
|
|
18286
|
-
exports.isAbsolute = function (aPath) {
|
|
20373
|
+
exports$1.isAbsolute = function (aPath) {
|
|
18287
20374
|
return aPath.charAt(0) === '/' || urlRegexp.test(aPath);
|
|
18288
20375
|
};
|
|
18289
20376
|
|
|
@@ -18325,7 +20412,7 @@ function requireUtil () {
|
|
|
18325
20412
|
// Make sure we add a "../" for each component we removed from the root.
|
|
18326
20413
|
return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1);
|
|
18327
20414
|
}
|
|
18328
|
-
exports.relative = relative;
|
|
20415
|
+
exports$1.relative = relative;
|
|
18329
20416
|
|
|
18330
20417
|
var supportsNullProto = (function () {
|
|
18331
20418
|
var obj = Object.create(null);
|
|
@@ -18352,7 +20439,7 @@ function requireUtil () {
|
|
|
18352
20439
|
|
|
18353
20440
|
return aStr;
|
|
18354
20441
|
}
|
|
18355
|
-
exports.toSetString = supportsNullProto ? identity : toSetString;
|
|
20442
|
+
exports$1.toSetString = supportsNullProto ? identity : toSetString;
|
|
18356
20443
|
|
|
18357
20444
|
function fromSetString(aStr) {
|
|
18358
20445
|
if (isProtoString(aStr)) {
|
|
@@ -18361,7 +20448,7 @@ function requireUtil () {
|
|
|
18361
20448
|
|
|
18362
20449
|
return aStr;
|
|
18363
20450
|
}
|
|
18364
|
-
exports.fromSetString = supportsNullProto ? identity : fromSetString;
|
|
20451
|
+
exports$1.fromSetString = supportsNullProto ? identity : fromSetString;
|
|
18365
20452
|
|
|
18366
20453
|
function isProtoString(s) {
|
|
18367
20454
|
if (!s) {
|
|
@@ -18431,7 +20518,7 @@ function requireUtil () {
|
|
|
18431
20518
|
|
|
18432
20519
|
return strcmp(mappingA.name, mappingB.name);
|
|
18433
20520
|
}
|
|
18434
|
-
exports.compareByOriginalPositions = compareByOriginalPositions;
|
|
20521
|
+
exports$1.compareByOriginalPositions = compareByOriginalPositions;
|
|
18435
20522
|
|
|
18436
20523
|
function compareByOriginalPositionsNoSource(mappingA, mappingB, onlyCompareOriginal) {
|
|
18437
20524
|
var cmp;
|
|
@@ -18458,7 +20545,7 @@ function requireUtil () {
|
|
|
18458
20545
|
|
|
18459
20546
|
return strcmp(mappingA.name, mappingB.name);
|
|
18460
20547
|
}
|
|
18461
|
-
exports.compareByOriginalPositionsNoSource = compareByOriginalPositionsNoSource;
|
|
20548
|
+
exports$1.compareByOriginalPositionsNoSource = compareByOriginalPositionsNoSource;
|
|
18462
20549
|
|
|
18463
20550
|
/**
|
|
18464
20551
|
* Comparator between two mappings with deflated source and name indices where
|
|
@@ -18497,7 +20584,7 @@ function requireUtil () {
|
|
|
18497
20584
|
|
|
18498
20585
|
return strcmp(mappingA.name, mappingB.name);
|
|
18499
20586
|
}
|
|
18500
|
-
exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
|
|
20587
|
+
exports$1.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
|
|
18501
20588
|
|
|
18502
20589
|
function compareByGeneratedPositionsDeflatedNoLine(mappingA, mappingB, onlyCompareGenerated) {
|
|
18503
20590
|
var cmp = mappingA.generatedColumn - mappingB.generatedColumn;
|
|
@@ -18522,7 +20609,7 @@ function requireUtil () {
|
|
|
18522
20609
|
|
|
18523
20610
|
return strcmp(mappingA.name, mappingB.name);
|
|
18524
20611
|
}
|
|
18525
|
-
exports.compareByGeneratedPositionsDeflatedNoLine = compareByGeneratedPositionsDeflatedNoLine;
|
|
20612
|
+
exports$1.compareByGeneratedPositionsDeflatedNoLine = compareByGeneratedPositionsDeflatedNoLine;
|
|
18526
20613
|
|
|
18527
20614
|
function strcmp(aStr1, aStr2) {
|
|
18528
20615
|
if (aStr1 === aStr2) {
|
|
@@ -18576,7 +20663,7 @@ function requireUtil () {
|
|
|
18576
20663
|
|
|
18577
20664
|
return strcmp(mappingA.name, mappingB.name);
|
|
18578
20665
|
}
|
|
18579
|
-
exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
|
|
20666
|
+
exports$1.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
|
|
18580
20667
|
|
|
18581
20668
|
/**
|
|
18582
20669
|
* Strip any JSON XSSI avoidance prefix from the string (as documented
|
|
@@ -18586,7 +20673,7 @@ function requireUtil () {
|
|
|
18586
20673
|
function parseSourceMapInput(str) {
|
|
18587
20674
|
return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, ''));
|
|
18588
20675
|
}
|
|
18589
|
-
exports.parseSourceMapInput = parseSourceMapInput;
|
|
20676
|
+
exports$1.parseSourceMapInput = parseSourceMapInput;
|
|
18590
20677
|
|
|
18591
20678
|
/**
|
|
18592
20679
|
* Compute the URL of a source given the the source root, the source's
|
|
@@ -18639,7 +20726,7 @@ function requireUtil () {
|
|
|
18639
20726
|
|
|
18640
20727
|
return normalize(sourceURL);
|
|
18641
20728
|
}
|
|
18642
|
-
exports.computeSourceURL = computeSourceURL;
|
|
20729
|
+
exports$1.computeSourceURL = computeSourceURL;
|
|
18643
20730
|
} (util));
|
|
18644
20731
|
return util;
|
|
18645
20732
|
}
|
|
@@ -19330,15 +21417,15 @@ var hasRequiredBinarySearch;
|
|
|
19330
21417
|
function requireBinarySearch () {
|
|
19331
21418
|
if (hasRequiredBinarySearch) return binarySearch;
|
|
19332
21419
|
hasRequiredBinarySearch = 1;
|
|
19333
|
-
(function (exports) {
|
|
21420
|
+
(function (exports$1) {
|
|
19334
21421
|
/*
|
|
19335
21422
|
* Copyright 2011 Mozilla Foundation and contributors
|
|
19336
21423
|
* Licensed under the New BSD license. See LICENSE or:
|
|
19337
21424
|
* http://opensource.org/licenses/BSD-3-Clause
|
|
19338
21425
|
*/
|
|
19339
21426
|
|
|
19340
|
-
exports.GREATEST_LOWER_BOUND = 1;
|
|
19341
|
-
exports.LEAST_UPPER_BOUND = 2;
|
|
21427
|
+
exports$1.GREATEST_LOWER_BOUND = 1;
|
|
21428
|
+
exports$1.LEAST_UPPER_BOUND = 2;
|
|
19342
21429
|
|
|
19343
21430
|
/**
|
|
19344
21431
|
* Recursive implementation of binary search.
|
|
@@ -19378,7 +21465,7 @@ function requireBinarySearch () {
|
|
|
19378
21465
|
|
|
19379
21466
|
// The exact needle element was not found in this haystack. Determine if
|
|
19380
21467
|
// we are in termination case (3) or (2) and return the appropriate thing.
|
|
19381
|
-
if (aBias == exports.LEAST_UPPER_BOUND) {
|
|
21468
|
+
if (aBias == exports$1.LEAST_UPPER_BOUND) {
|
|
19382
21469
|
return aHigh < aHaystack.length ? aHigh : -1;
|
|
19383
21470
|
} else {
|
|
19384
21471
|
return mid;
|
|
@@ -19392,7 +21479,7 @@ function requireBinarySearch () {
|
|
|
19392
21479
|
}
|
|
19393
21480
|
|
|
19394
21481
|
// we are in termination case (3) or (2) and return the appropriate thing.
|
|
19395
|
-
if (aBias == exports.LEAST_UPPER_BOUND) {
|
|
21482
|
+
if (aBias == exports$1.LEAST_UPPER_BOUND) {
|
|
19396
21483
|
return mid;
|
|
19397
21484
|
} else {
|
|
19398
21485
|
return aLow < 0 ? -1 : aLow;
|
|
@@ -19418,13 +21505,13 @@ function requireBinarySearch () {
|
|
|
19418
21505
|
* searching for, respectively, if the exact element cannot be found.
|
|
19419
21506
|
* Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.
|
|
19420
21507
|
*/
|
|
19421
|
-
exports.search = function search(aNeedle, aHaystack, aCompare, aBias) {
|
|
21508
|
+
exports$1.search = function search(aNeedle, aHaystack, aCompare, aBias) {
|
|
19422
21509
|
if (aHaystack.length === 0) {
|
|
19423
21510
|
return -1;
|
|
19424
21511
|
}
|
|
19425
21512
|
|
|
19426
21513
|
var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,
|
|
19427
|
-
aCompare, aBias || exports.GREATEST_LOWER_BOUND);
|
|
21514
|
+
aCompare, aBias || exports$1.GREATEST_LOWER_BOUND);
|
|
19428
21515
|
if (index < 0) {
|
|
19429
21516
|
return -1;
|
|
19430
21517
|
}
|
|
@@ -21229,26 +23316,26 @@ var sourceMapExports = /*@__PURE__*/ requireSourceMap();
|
|
|
21229
23316
|
|
|
21230
23317
|
const isLiteralWhitelisted = /* @__PURE__ */ makeMap("true,false,null,this");
|
|
21231
23318
|
|
|
21232
|
-
const V_MODEL_RADIO = Symbol(`vModelRadio` );
|
|
21233
|
-
const V_MODEL_CHECKBOX = Symbol(
|
|
23319
|
+
const V_MODEL_RADIO = /* @__PURE__ */ Symbol(`vModelRadio` );
|
|
23320
|
+
const V_MODEL_CHECKBOX = /* @__PURE__ */ Symbol(
|
|
21234
23321
|
`vModelCheckbox`
|
|
21235
23322
|
);
|
|
21236
|
-
const V_MODEL_TEXT = Symbol(`vModelText` );
|
|
21237
|
-
const V_MODEL_SELECT = Symbol(
|
|
23323
|
+
const V_MODEL_TEXT = /* @__PURE__ */ Symbol(`vModelText` );
|
|
23324
|
+
const V_MODEL_SELECT = /* @__PURE__ */ Symbol(
|
|
21238
23325
|
`vModelSelect`
|
|
21239
23326
|
);
|
|
21240
|
-
const V_MODEL_DYNAMIC = Symbol(
|
|
23327
|
+
const V_MODEL_DYNAMIC = /* @__PURE__ */ Symbol(
|
|
21241
23328
|
`vModelDynamic`
|
|
21242
23329
|
);
|
|
21243
|
-
const V_ON_WITH_MODIFIERS = Symbol(
|
|
23330
|
+
const V_ON_WITH_MODIFIERS = /* @__PURE__ */ Symbol(
|
|
21244
23331
|
`vOnModifiersGuard`
|
|
21245
23332
|
);
|
|
21246
|
-
const V_ON_WITH_KEYS = Symbol(
|
|
23333
|
+
const V_ON_WITH_KEYS = /* @__PURE__ */ Symbol(
|
|
21247
23334
|
`vOnKeysGuard`
|
|
21248
23335
|
);
|
|
21249
|
-
const V_SHOW = Symbol(`vShow` );
|
|
21250
|
-
const TRANSITION = Symbol(`Transition` );
|
|
21251
|
-
const TRANSITION_GROUP = Symbol(
|
|
23336
|
+
const V_SHOW = /* @__PURE__ */ Symbol(`vShow` );
|
|
23337
|
+
const TRANSITION = /* @__PURE__ */ Symbol(`Transition` );
|
|
23338
|
+
const TRANSITION_GROUP = /* @__PURE__ */ Symbol(
|
|
21252
23339
|
`TransitionGroup`
|
|
21253
23340
|
);
|
|
21254
23341
|
registerRuntimeHelpers({
|
|
@@ -21319,19 +23406,19 @@ function createDOMCompilerError(code, loc) {
|
|
|
21319
23406
|
);
|
|
21320
23407
|
}
|
|
21321
23408
|
const DOMErrorMessages = {
|
|
21322
|
-
[
|
|
21323
|
-
[
|
|
21324
|
-
[
|
|
21325
|
-
[
|
|
21326
|
-
[
|
|
21327
|
-
[
|
|
21328
|
-
[
|
|
21329
|
-
[
|
|
21330
|
-
[
|
|
21331
|
-
[
|
|
21332
|
-
[
|
|
23409
|
+
[54]: `v-html is missing expression.`,
|
|
23410
|
+
[55]: `v-html will override element children.`,
|
|
23411
|
+
[56]: `v-text is missing expression.`,
|
|
23412
|
+
[57]: `v-text will override element children.`,
|
|
23413
|
+
[58]: `v-model can only be used on <input>, <textarea> and <select> elements.`,
|
|
23414
|
+
[59]: `v-model argument is not supported on plain elements.`,
|
|
23415
|
+
[60]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`,
|
|
23416
|
+
[61]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`,
|
|
23417
|
+
[62]: `v-show is missing expression.`,
|
|
23418
|
+
[63]: `<Transition> expects exactly one child element or component.`,
|
|
23419
|
+
[64]: `Tags with side effect (<script> and <style>) are ignored in client component templates.`,
|
|
21333
23420
|
// just to fulfill types
|
|
21334
|
-
[
|
|
23421
|
+
[65]: ``
|
|
21335
23422
|
};
|
|
21336
23423
|
|
|
21337
23424
|
const isEventOptionModifier = /* @__PURE__ */ makeMap(`passive,once,capture`);
|
|
@@ -21387,7 +23474,7 @@ function postTransformTransition(node, onError, hasMultipleChildren = defaultHas
|
|
|
21387
23474
|
}
|
|
21388
23475
|
if (hasMultipleChildren(node)) {
|
|
21389
23476
|
onError(
|
|
21390
|
-
createDOMCompilerError(
|
|
23477
|
+
createDOMCompilerError(63, {
|
|
21391
23478
|
start: node.children[0].loc.start,
|
|
21392
23479
|
end: node.children[node.children.length - 1].loc.end,
|
|
21393
23480
|
source: ""
|
|
@@ -21874,7 +23961,7 @@ function transformNode(context) {
|
|
|
21874
23961
|
for (const nodeTransform of nodeTransforms) {
|
|
21875
23962
|
const onExit = nodeTransform(node, context);
|
|
21876
23963
|
if (onExit) {
|
|
21877
|
-
if (isArray(onExit)) {
|
|
23964
|
+
if (isArray$1(onExit)) {
|
|
21878
23965
|
exitFns.push(...onExit);
|
|
21879
23966
|
} else {
|
|
21880
23967
|
exitFns.push(onExit);
|
|
@@ -21944,10 +24031,10 @@ const IMPORT_EXPR_RE = new RegExp(
|
|
|
21944
24031
|
`${IMPORT_EXP_START}(.*?)${IMPORT_EXP_END}`,
|
|
21945
24032
|
"g"
|
|
21946
24033
|
);
|
|
21947
|
-
const NEWLINE = Symbol(`newline` );
|
|
21948
|
-
const LF = Symbol(`line feed` );
|
|
21949
|
-
const INDENT_START = Symbol(`indent start` );
|
|
21950
|
-
const INDENT_END = Symbol(`indent end` );
|
|
24034
|
+
const NEWLINE = /* @__PURE__ */ Symbol(`newline` );
|
|
24035
|
+
const LF = /* @__PURE__ */ Symbol(`line feed` );
|
|
24036
|
+
const INDENT_START = /* @__PURE__ */ Symbol(`indent start` );
|
|
24037
|
+
const INDENT_END = /* @__PURE__ */ Symbol(`indent end` );
|
|
21951
24038
|
function buildCodeFragment(...frag) {
|
|
21952
24039
|
const push = frag.push.bind(frag);
|
|
21953
24040
|
const unshift = frag.unshift.bind(frag);
|
|
@@ -21971,7 +24058,7 @@ function genMulti([left, right, seg, placeholder], ...frags) {
|
|
|
21971
24058
|
push(right);
|
|
21972
24059
|
return frag;
|
|
21973
24060
|
function push(fn) {
|
|
21974
|
-
if (!isArray(fn)) fn = [fn];
|
|
24061
|
+
if (!isArray$1(fn)) fn = [fn];
|
|
21975
24062
|
frag.push(...fn);
|
|
21976
24063
|
}
|
|
21977
24064
|
}
|
|
@@ -21988,7 +24075,7 @@ const DELIMITERS_OBJECT_NEWLINE = [
|
|
|
21988
24075
|
[",", NEWLINE]
|
|
21989
24076
|
];
|
|
21990
24077
|
function genCall(name, ...frags) {
|
|
21991
|
-
const hasPlaceholder = isArray(name);
|
|
24078
|
+
const hasPlaceholder = isArray$1(name);
|
|
21992
24079
|
const fnName = hasPlaceholder ? name[0] : name;
|
|
21993
24080
|
const placeholder = hasPlaceholder ? name[1] : "null";
|
|
21994
24081
|
return [fnName, ...genMulti(["(", ")", ", ", placeholder], ...frags)];
|
|
@@ -22658,7 +24745,7 @@ function genSetDynamicEvents(oper, context) {
|
|
|
22658
24745
|
)
|
|
22659
24746
|
];
|
|
22660
24747
|
}
|
|
22661
|
-
function genEventHandler(context, values, modifiers = { nonKeys: [], keys: [] }, extraWrap = false) {
|
|
24748
|
+
function genEventHandler(context, values, modifiers = { nonKeys: [], keys: [] }, asComponentProp = false, extraWrap = false) {
|
|
22662
24749
|
let handlerExp = [];
|
|
22663
24750
|
if (values) {
|
|
22664
24751
|
values.forEach((value, index) => {
|
|
@@ -22666,7 +24753,7 @@ function genEventHandler(context, values, modifiers = { nonKeys: [], keys: [] },
|
|
|
22666
24753
|
if (value && value.content.trim()) {
|
|
22667
24754
|
if (isMemberExpression$1(value, context.options)) {
|
|
22668
24755
|
exp = genExpression(value, context);
|
|
22669
|
-
if (!isConstantBinding(value, context) && !
|
|
24756
|
+
if (!isConstantBinding(value, context) && !asComponentProp) {
|
|
22670
24757
|
const isTSNode = value.ast && TS_NODE_TYPES.includes(value.ast.type);
|
|
22671
24758
|
exp = [
|
|
22672
24759
|
`e => `,
|
|
@@ -23196,7 +25283,7 @@ function genPropKey({ key: node, modifier, runtimeCamelize, handler, handlerModi
|
|
|
23196
25283
|
const { helper } = context;
|
|
23197
25284
|
const handlerModifierPostfix = handlerModifiers && handlerModifiers.options ? handlerModifiers.options.map(capitalize).join("") : "";
|
|
23198
25285
|
if (node.isStatic) {
|
|
23199
|
-
const keyName = (handler ? toHandlerKey(node.content) : node.content) + handlerModifierPostfix;
|
|
25286
|
+
const keyName = (handler ? toHandlerKey(camelize(node.content)) : node.content) + handlerModifierPostfix;
|
|
23200
25287
|
return [
|
|
23201
25288
|
[
|
|
23202
25289
|
isSimpleIdentifier(keyName) ? keyName : JSON.stringify(keyName),
|
|
@@ -23449,7 +25536,7 @@ function genCreateComponent(operation, context) {
|
|
|
23449
25536
|
const rawProps = context.withId(() => genRawProps(props, context), ids);
|
|
23450
25537
|
const inlineHandlers = handlers.reduce(
|
|
23451
25538
|
(acc, { name, value }) => {
|
|
23452
|
-
const handler = genEventHandler(context, [value], void 0, false);
|
|
25539
|
+
const handler = genEventHandler(context, [value], void 0, false, false);
|
|
23453
25540
|
return [...acc, `const ${name} = `, ...handler, NEWLINE];
|
|
23454
25541
|
},
|
|
23455
25542
|
[]
|
|
@@ -23507,7 +25594,7 @@ function processInlineHandlers(props, context) {
|
|
|
23507
25594
|
const ids = /* @__PURE__ */ Object.create(null);
|
|
23508
25595
|
const handlers = [];
|
|
23509
25596
|
const staticProps = props[0];
|
|
23510
|
-
if (isArray(staticProps)) {
|
|
25597
|
+
if (isArray$1(staticProps)) {
|
|
23511
25598
|
for (let i = 0; i < staticProps.length; i++) {
|
|
23512
25599
|
const prop = staticProps[i];
|
|
23513
25600
|
if (!prop.handler) continue;
|
|
@@ -23529,7 +25616,7 @@ function processInlineHandlers(props, context) {
|
|
|
23529
25616
|
}
|
|
23530
25617
|
function genRawProps(props, context) {
|
|
23531
25618
|
const staticProps = props[0];
|
|
23532
|
-
if (isArray(staticProps)) {
|
|
25619
|
+
if (isArray$1(staticProps)) {
|
|
23533
25620
|
if (!staticProps.length && props.length === 1) {
|
|
23534
25621
|
return;
|
|
23535
25622
|
}
|
|
@@ -23543,7 +25630,89 @@ function genRawProps(props, context) {
|
|
|
23543
25630
|
}
|
|
23544
25631
|
}
|
|
23545
25632
|
function genStaticProps(props, context, dynamicProps) {
|
|
23546
|
-
const args =
|
|
25633
|
+
const args = [];
|
|
25634
|
+
const handlerGroups = /* @__PURE__ */ new Map();
|
|
25635
|
+
const ensureHandlerGroup = (keyName, keyFrag) => {
|
|
25636
|
+
let group = handlerGroups.get(keyName);
|
|
25637
|
+
if (!group) {
|
|
25638
|
+
const index = args.length;
|
|
25639
|
+
args.push([]);
|
|
25640
|
+
group = { keyFrag, handlers: [], index };
|
|
25641
|
+
handlerGroups.set(keyName, group);
|
|
25642
|
+
}
|
|
25643
|
+
return group;
|
|
25644
|
+
};
|
|
25645
|
+
const addHandler = (keyName, keyFrag, handlerExp) => {
|
|
25646
|
+
ensureHandlerGroup(keyName, keyFrag).handlers.push(handlerExp);
|
|
25647
|
+
};
|
|
25648
|
+
const getStaticPropKeyName = (prop) => {
|
|
25649
|
+
if (!prop.key.isStatic) return;
|
|
25650
|
+
const handlerModifierPostfix = prop.handlerModifiers && prop.handlerModifiers.options ? prop.handlerModifiers.options.map((m) => m.charAt(0).toUpperCase() + m.slice(1)).join("") : "";
|
|
25651
|
+
const keyName = (prop.handler ? toHandlerKey(camelize(prop.key.content)) : prop.key.content) + handlerModifierPostfix;
|
|
25652
|
+
return keyName;
|
|
25653
|
+
};
|
|
25654
|
+
for (const prop of props) {
|
|
25655
|
+
if (prop.handler) {
|
|
25656
|
+
const keyName = getStaticPropKeyName(prop);
|
|
25657
|
+
if (!keyName) {
|
|
25658
|
+
args.push(genProp(prop, context, true));
|
|
25659
|
+
continue;
|
|
25660
|
+
}
|
|
25661
|
+
const keyFrag = genPropKey(prop, context);
|
|
25662
|
+
const hasModifiers = !!prop.handlerModifiers && (prop.handlerModifiers.keys.length > 0 || prop.handlerModifiers.nonKeys.length > 0);
|
|
25663
|
+
if (hasModifiers || prop.values.length <= 1) {
|
|
25664
|
+
const handlerExp = genEventHandler(
|
|
25665
|
+
context,
|
|
25666
|
+
prop.values,
|
|
25667
|
+
prop.handlerModifiers,
|
|
25668
|
+
true,
|
|
25669
|
+
false
|
|
25670
|
+
);
|
|
25671
|
+
addHandler(keyName, keyFrag, handlerExp);
|
|
25672
|
+
} else {
|
|
25673
|
+
for (const value of prop.values) {
|
|
25674
|
+
const handlerExp = genEventHandler(
|
|
25675
|
+
context,
|
|
25676
|
+
[value],
|
|
25677
|
+
prop.handlerModifiers,
|
|
25678
|
+
true,
|
|
25679
|
+
false
|
|
25680
|
+
);
|
|
25681
|
+
addHandler(keyName, keyFrag, handlerExp);
|
|
25682
|
+
}
|
|
25683
|
+
}
|
|
25684
|
+
continue;
|
|
25685
|
+
}
|
|
25686
|
+
args.push(genProp(prop, context, true));
|
|
25687
|
+
if (prop.model) {
|
|
25688
|
+
if (prop.key.isStatic) {
|
|
25689
|
+
const keyName = `onUpdate:${camelize(prop.key.content)}`;
|
|
25690
|
+
const keyFrag = [JSON.stringify(keyName)];
|
|
25691
|
+
addHandler(keyName, keyFrag, genModelHandler(prop.values[0], context));
|
|
25692
|
+
} else {
|
|
25693
|
+
const keyFrag = [
|
|
25694
|
+
'["onUpdate:" + ',
|
|
25695
|
+
...genExpression(prop.key, context),
|
|
25696
|
+
"]"
|
|
25697
|
+
];
|
|
25698
|
+
args.push([
|
|
25699
|
+
...keyFrag,
|
|
25700
|
+
": () => ",
|
|
25701
|
+
...genModelHandler(prop.values[0], context)
|
|
25702
|
+
]);
|
|
25703
|
+
}
|
|
25704
|
+
const { key, modelModifiers } = prop;
|
|
25705
|
+
if (modelModifiers && modelModifiers.length) {
|
|
25706
|
+
const modifiersKey = key.isStatic ? [getModifierPropName(key.content)] : ["[", ...genExpression(key, context), ' + "Modifiers"]'];
|
|
25707
|
+
const modifiersVal = genDirectiveModifiers(modelModifiers);
|
|
25708
|
+
args.push([...modifiersKey, `: () => ({ ${modifiersVal} })`]);
|
|
25709
|
+
}
|
|
25710
|
+
}
|
|
25711
|
+
}
|
|
25712
|
+
for (const group of handlerGroups.values()) {
|
|
25713
|
+
const handlerValue = group.handlers.length > 1 ? genMulti(DELIMITERS_ARRAY_NEWLINE, ...group.handlers) : group.handlers[0];
|
|
25714
|
+
args[group.index] = [...group.keyFrag, ": () => ", ...handlerValue];
|
|
25715
|
+
}
|
|
23547
25716
|
if (dynamicProps) {
|
|
23548
25717
|
args.push([`$: `, ...dynamicProps]);
|
|
23549
25718
|
}
|
|
@@ -23557,17 +25726,52 @@ function genDynamicProps(props, context) {
|
|
|
23557
25726
|
const frags = [];
|
|
23558
25727
|
for (const p of props) {
|
|
23559
25728
|
let expr;
|
|
23560
|
-
if (isArray(p)) {
|
|
25729
|
+
if (isArray$1(p)) {
|
|
23561
25730
|
if (p.length) {
|
|
23562
25731
|
frags.push(genStaticProps(p, context));
|
|
23563
25732
|
}
|
|
23564
25733
|
continue;
|
|
23565
25734
|
} else {
|
|
23566
|
-
if (p.kind === 1)
|
|
23567
|
-
|
|
23568
|
-
|
|
25735
|
+
if (p.kind === 1) {
|
|
25736
|
+
if (p.model) {
|
|
25737
|
+
const entries = [genProp(p, context)];
|
|
25738
|
+
const updateKey = p.key.isStatic ? [
|
|
25739
|
+
JSON.stringify(`onUpdate:${camelize(p.key.content)}`)
|
|
25740
|
+
] : [
|
|
25741
|
+
'["onUpdate:" + ',
|
|
25742
|
+
...genExpression(p.key, context),
|
|
25743
|
+
"]"
|
|
25744
|
+
];
|
|
25745
|
+
entries.push([
|
|
25746
|
+
...updateKey,
|
|
25747
|
+
": () => ",
|
|
25748
|
+
...genModelHandler(p.values[0], context)
|
|
25749
|
+
]);
|
|
25750
|
+
const { modelModifiers } = p;
|
|
25751
|
+
if (modelModifiers && modelModifiers.length) {
|
|
25752
|
+
const modifiersKey = p.key.isStatic ? [getModifierPropName(p.key.content)] : [
|
|
25753
|
+
"[",
|
|
25754
|
+
...genExpression(p.key, context),
|
|
25755
|
+
' + "Modifiers"]'
|
|
25756
|
+
];
|
|
25757
|
+
const modifiersVal = genDirectiveModifiers(modelModifiers);
|
|
25758
|
+
entries.push([...modifiersKey, `: () => ({ ${modifiersVal} })`]);
|
|
25759
|
+
}
|
|
25760
|
+
expr = genMulti(DELIMITERS_OBJECT_NEWLINE, ...entries);
|
|
25761
|
+
} else {
|
|
25762
|
+
expr = genMulti(DELIMITERS_OBJECT, genProp(p, context));
|
|
25763
|
+
}
|
|
25764
|
+
} else {
|
|
23569
25765
|
expr = genExpression(p.value, context);
|
|
23570
|
-
if (p.handler)
|
|
25766
|
+
if (p.handler)
|
|
25767
|
+
expr = genCall(
|
|
25768
|
+
helper("toHandlers"),
|
|
25769
|
+
expr,
|
|
25770
|
+
`false`,
|
|
25771
|
+
// preserveCaseIfNecessary: false, not needed for component
|
|
25772
|
+
`true`
|
|
25773
|
+
// wrap handler values in functions
|
|
25774
|
+
);
|
|
23571
25775
|
}
|
|
23572
25776
|
}
|
|
23573
25777
|
frags.push(["() => (", ...expr, ")"]);
|
|
@@ -23585,23 +25789,11 @@ function genProp(prop, context, isStatic) {
|
|
|
23585
25789
|
context,
|
|
23586
25790
|
prop.values,
|
|
23587
25791
|
prop.handlerModifiers,
|
|
25792
|
+
true,
|
|
23588
25793
|
true
|
|
23589
|
-
) : isStatic ? ["() => (", ...values, ")"] : values
|
|
23590
|
-
...prop.model ? [...genModelEvent(prop, context), ...genModelModifiers(prop, context)] : []
|
|
25794
|
+
) : isStatic ? ["() => (", ...values, ")"] : values
|
|
23591
25795
|
];
|
|
23592
25796
|
}
|
|
23593
|
-
function genModelEvent(prop, context) {
|
|
23594
|
-
const name = prop.key.isStatic ? [JSON.stringify(`onUpdate:${camelize(prop.key.content)}`)] : ['["onUpdate:" + ', ...genExpression(prop.key, context), "]"];
|
|
23595
|
-
const handler = genModelHandler(prop.values[0], context);
|
|
23596
|
-
return [",", NEWLINE, ...name, ": () => ", ...handler];
|
|
23597
|
-
}
|
|
23598
|
-
function genModelModifiers(prop, context) {
|
|
23599
|
-
const { key, modelModifiers } = prop;
|
|
23600
|
-
if (!modelModifiers || !modelModifiers.length) return [];
|
|
23601
|
-
const modifiersKey = key.isStatic ? [getModifierPropName(key.content)] : ["[", ...genExpression(key, context), ' + "Modifiers"]'];
|
|
23602
|
-
const modifiersVal = genDirectiveModifiers(modelModifiers);
|
|
23603
|
-
return [",", NEWLINE, ...modifiersKey, `: () => ({ ${modifiersVal} })`];
|
|
23604
|
-
}
|
|
23605
25797
|
function genRawSlots(slots, context) {
|
|
23606
25798
|
if (!slots.length) return;
|
|
23607
25799
|
const staticSlots = slots[0];
|
|
@@ -24040,7 +26232,13 @@ function genChildren(dynamic, context, pushBlock, from = `n${dynamic.id}`) {
|
|
|
24040
26232
|
}
|
|
24041
26233
|
} else {
|
|
24042
26234
|
if (elementIndex === 0) {
|
|
24043
|
-
pushBlock(
|
|
26235
|
+
pushBlock(
|
|
26236
|
+
...genCall(
|
|
26237
|
+
helper("child"),
|
|
26238
|
+
from,
|
|
26239
|
+
logicalIndex !== 0 ? String(logicalIndex) : void 0
|
|
26240
|
+
)
|
|
26241
|
+
);
|
|
24044
26242
|
} else {
|
|
24045
26243
|
let init = genCall(helper("child"), from);
|
|
24046
26244
|
if (elementIndex === 1) {
|
|
@@ -24767,13 +26965,13 @@ const transformVHtml = (dir, node, context) => {
|
|
|
24767
26965
|
let { exp, loc } = dir;
|
|
24768
26966
|
if (!exp) {
|
|
24769
26967
|
context.options.onError(
|
|
24770
|
-
createDOMCompilerError(
|
|
26968
|
+
createDOMCompilerError(54, loc)
|
|
24771
26969
|
);
|
|
24772
26970
|
exp = EMPTY_EXPRESSION;
|
|
24773
26971
|
}
|
|
24774
26972
|
if (node.children.length) {
|
|
24775
26973
|
context.options.onError(
|
|
24776
|
-
createDOMCompilerError(
|
|
26974
|
+
createDOMCompilerError(55, loc)
|
|
24777
26975
|
);
|
|
24778
26976
|
context.childrenTemplate.length = 0;
|
|
24779
26977
|
}
|
|
@@ -24789,13 +26987,13 @@ const transformVText = (dir, node, context) => {
|
|
|
24789
26987
|
let { exp, loc } = dir;
|
|
24790
26988
|
if (!exp) {
|
|
24791
26989
|
context.options.onError(
|
|
24792
|
-
createDOMCompilerError(
|
|
26990
|
+
createDOMCompilerError(56, loc)
|
|
24793
26991
|
);
|
|
24794
26992
|
exp = EMPTY_EXPRESSION;
|
|
24795
26993
|
}
|
|
24796
26994
|
if (node.children.length) {
|
|
24797
26995
|
context.options.onError(
|
|
24798
|
-
createDOMCompilerError(
|
|
26996
|
+
createDOMCompilerError(57, loc)
|
|
24799
26997
|
);
|
|
24800
26998
|
context.childrenTemplate.length = 0;
|
|
24801
26999
|
}
|
|
@@ -24828,7 +27026,7 @@ function normalizeBindShorthand(arg, context) {
|
|
|
24828
27026
|
if (arg.type !== 4 || !arg.isStatic) {
|
|
24829
27027
|
context.options.onError(
|
|
24830
27028
|
createCompilerError(
|
|
24831
|
-
|
|
27029
|
+
53,
|
|
24832
27030
|
arg.loc
|
|
24833
27031
|
)
|
|
24834
27032
|
);
|
|
@@ -24942,7 +27140,7 @@ const transformVShow = (dir, node, context) => {
|
|
|
24942
27140
|
const { exp, loc } = dir;
|
|
24943
27141
|
if (!exp) {
|
|
24944
27142
|
context.options.onError(
|
|
24945
|
-
createDOMCompilerError(
|
|
27143
|
+
createDOMCompilerError(62, loc)
|
|
24946
27144
|
);
|
|
24947
27145
|
return;
|
|
24948
27146
|
}
|
|
@@ -25141,7 +27339,7 @@ const transformVModel = (dir, node, context) => {
|
|
|
25141
27339
|
if (dir.arg)
|
|
25142
27340
|
context.options.onError(
|
|
25143
27341
|
createDOMCompilerError(
|
|
25144
|
-
|
|
27342
|
+
59,
|
|
25145
27343
|
dir.arg.loc
|
|
25146
27344
|
)
|
|
25147
27345
|
);
|
|
@@ -25166,7 +27364,7 @@ const transformVModel = (dir, node, context) => {
|
|
|
25166
27364
|
modelType = void 0;
|
|
25167
27365
|
context.options.onError(
|
|
25168
27366
|
createDOMCompilerError(
|
|
25169
|
-
|
|
27367
|
+
60,
|
|
25170
27368
|
dir.loc
|
|
25171
27369
|
)
|
|
25172
27370
|
);
|
|
@@ -25189,7 +27387,7 @@ const transformVModel = (dir, node, context) => {
|
|
|
25189
27387
|
} else {
|
|
25190
27388
|
context.options.onError(
|
|
25191
27389
|
createDOMCompilerError(
|
|
25192
|
-
|
|
27390
|
+
58,
|
|
25193
27391
|
dir.loc
|
|
25194
27392
|
)
|
|
25195
27393
|
);
|
|
@@ -25208,7 +27406,7 @@ const transformVModel = (dir, node, context) => {
|
|
|
25208
27406
|
if (value && isStaticArgOf(value.arg, "value")) {
|
|
25209
27407
|
context.options.onError(
|
|
25210
27408
|
createDOMCompilerError(
|
|
25211
|
-
|
|
27409
|
+
61,
|
|
25212
27410
|
value.loc
|
|
25213
27411
|
)
|
|
25214
27412
|
);
|