@m2c2kit/build-helpers 0.3.29 → 0.3.31
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/index.js +324 -1464
- package/package.json +12 -12
package/dist/index.js
CHANGED
|
@@ -19,20 +19,6 @@ import { fileURLToPath as fileURLToPath$1 } from 'node:url';
|
|
|
19
19
|
import 'node:stream';
|
|
20
20
|
import child_process$2 from 'child_process';
|
|
21
21
|
|
|
22
|
-
// Generated using scripts/write-decode-map.ts
|
|
23
|
-
const htmlDecodeTree = /* #__PURE__ */ new Uint16Array(
|
|
24
|
-
// prettier-ignore
|
|
25
|
-
/* #__PURE__ */ "\u1d41<\xd5\u0131\u028a\u049d\u057b\u05d0\u0675\u06de\u07a2\u07d6\u080f\u0a4a\u0a91\u0da1\u0e6d\u0f09\u0f26\u10ca\u1228\u12e1\u1415\u149d\u14c3\u14df\u1525\0\0\0\0\0\0\u156b\u16cd\u198d\u1c12\u1ddd\u1f7e\u2060\u21b0\u228d\u23c0\u23fb\u2442\u2824\u2912\u2d08\u2e48\u2fce\u3016\u32ba\u3639\u37ac\u38fe\u3a28\u3a71\u3ae0\u3b2e\u0800EMabcfglmnoprstu\\bfms\x7f\x84\x8b\x90\x95\x98\xa6\xb3\xb9\xc8\xcflig\u803b\xc6\u40c6P\u803b&\u4026cute\u803b\xc1\u40c1reve;\u4102\u0100iyx}rc\u803b\xc2\u40c2;\u4410r;\uc000\ud835\udd04rave\u803b\xc0\u40c0pha;\u4391acr;\u4100d;\u6a53\u0100gp\x9d\xa1on;\u4104f;\uc000\ud835\udd38plyFunction;\u6061ing\u803b\xc5\u40c5\u0100cs\xbe\xc3r;\uc000\ud835\udc9cign;\u6254ilde\u803b\xc3\u40c3ml\u803b\xc4\u40c4\u0400aceforsu\xe5\xfb\xfe\u0117\u011c\u0122\u0127\u012a\u0100cr\xea\xf2kslash;\u6216\u0176\xf6\xf8;\u6ae7ed;\u6306y;\u4411\u0180crt\u0105\u010b\u0114ause;\u6235noullis;\u612ca;\u4392r;\uc000\ud835\udd05pf;\uc000\ud835\udd39eve;\u42d8c\xf2\u0113mpeq;\u624e\u0700HOacdefhilorsu\u014d\u0151\u0156\u0180\u019e\u01a2\u01b5\u01b7\u01ba\u01dc\u0215\u0273\u0278\u027ecy;\u4427PY\u803b\xa9\u40a9\u0180cpy\u015d\u0162\u017aute;\u4106\u0100;i\u0167\u0168\u62d2talDifferentialD;\u6145leys;\u612d\u0200aeio\u0189\u018e\u0194\u0198ron;\u410cdil\u803b\xc7\u40c7rc;\u4108nint;\u6230ot;\u410a\u0100dn\u01a7\u01adilla;\u40b8terDot;\u40b7\xf2\u017fi;\u43a7rcle\u0200DMPT\u01c7\u01cb\u01d1\u01d6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01e2\u01f8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020foubleQuote;\u601duote;\u6019\u0200lnpu\u021e\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6a74\u0180git\u022f\u0236\u023aruent;\u6261nt;\u622fourIntegral;\u622e\u0100fr\u024c\u024e;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6a2fcr;\uc000\ud835\udc9ep\u0100;C\u0284\u0285\u62d3ap;\u624d\u0580DJSZacefios\u02a0\u02ac\u02b0\u02b4\u02b8\u02cb\u02d7\u02e1\u02e6\u0333\u048d\u0100;o\u0179\u02a5trahd;\u6911cy;\u4402cy;\u4405cy;\u440f\u0180grs\u02bf\u02c4\u02c7ger;\u6021r;\u61a1hv;\u6ae4\u0100ay\u02d0\u02d5ron;\u410e;\u4414l\u0100;t\u02dd\u02de\u6207a;\u4394r;\uc000\ud835\udd07\u0100af\u02eb\u0327\u0100cm\u02f0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031ccute;\u40b4o\u0174\u030b\u030d;\u42d9bleAcute;\u42ddrave;\u4060ilde;\u42dcond;\u62c4ferentialD;\u6146\u0470\u033d\0\0\0\u0342\u0354\0\u0405f;\uc000\ud835\udd3b\u0180;DE\u0348\u0349\u034d\u40a8ot;\u60dcqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03cf\u03e2\u03f8ontourIntegra\xec\u0239o\u0274\u0379\0\0\u037b\xbb\u0349nArrow;\u61d3\u0100eo\u0387\u03a4ft\u0180ART\u0390\u0396\u03a1rrow;\u61d0ightArrow;\u61d4e\xe5\u02cang\u0100LR\u03ab\u03c4eft\u0100AR\u03b3\u03b9rrow;\u67f8ightArrow;\u67faightArrow;\u67f9ight\u0100AT\u03d8\u03derrow;\u61d2ee;\u62a8p\u0241\u03e9\0\0\u03efrrow;\u61d1ownArrow;\u61d5erticalBar;\u6225n\u0300ABLRTa\u0412\u042a\u0430\u045e\u047f\u037crrow\u0180;BU\u041d\u041e\u0422\u6193ar;\u6913pArrow;\u61f5reve;\u4311eft\u02d2\u043a\0\u0446\0\u0450ightVector;\u6950eeVector;\u695eector\u0100;B\u0459\u045a\u61bdar;\u6956ight\u01d4\u0467\0\u0471eeVector;\u695fector\u0100;B\u047a\u047b\u61c1ar;\u6957ee\u0100;A\u0486\u0487\u62a4rrow;\u61a7\u0100ct\u0492\u0497r;\uc000\ud835\udc9frok;\u4110\u0800NTacdfglmopqstux\u04bd\u04c0\u04c4\u04cb\u04de\u04e2\u04e7\u04ee\u04f5\u0521\u052f\u0536\u0552\u055d\u0560\u0565G;\u414aH\u803b\xd0\u40d0cute\u803b\xc9\u40c9\u0180aiy\u04d2\u04d7\u04dcron;\u411arc\u803b\xca\u40ca;\u442dot;\u4116r;\uc000\ud835\udd08rave\u803b\xc8\u40c8ement;\u6208\u0100ap\u04fa\u04fecr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65fberySmallSquare;\u65ab\u0100gp\u0526\u052aon;\u4118f;\uc000\ud835\udd3csilon;\u4395u\u0100ai\u053c\u0549l\u0100;T\u0542\u0543\u6a75ilde;\u6242librium;\u61cc\u0100ci\u0557\u055ar;\u6130m;\u6a73a;\u4397ml\u803b\xcb\u40cb\u0100ip\u056a\u056fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058d\u05b2\u05ccy;\u4424r;\uc000\ud835\udd09lled\u0253\u0597\0\0\u05a3mallSquare;\u65fcerySmallSquare;\u65aa\u0370\u05ba\0\u05bf\0\0\u05c4f;\uc000\ud835\udd3dAll;\u6200riertrf;\u6131c\xf2\u05cb\u0600JTabcdfgorst\u05e8\u05ec\u05ef\u05fa\u0600\u0612\u0616\u061b\u061d\u0623\u066c\u0672cy;\u4403\u803b>\u403emma\u0100;d\u05f7\u05f8\u4393;\u43dcreve;\u411e\u0180eiy\u0607\u060c\u0610dil;\u4122rc;\u411c;\u4413ot;\u4120r;\uc000\ud835\udd0a;\u62d9pf;\uc000\ud835\udd3eeater\u0300EFGLST\u0635\u0644\u064e\u0656\u065b\u0666qual\u0100;L\u063e\u063f\u6265ess;\u62dbullEqual;\u6267reater;\u6aa2ess;\u6277lantEqual;\u6a7eilde;\u6273cr;\uc000\ud835\udca2;\u626b\u0400Aacfiosu\u0685\u068b\u0696\u069b\u069e\u06aa\u06be\u06caRDcy;\u442a\u0100ct\u0690\u0694ek;\u42c7;\u405eirc;\u4124r;\u610clbertSpace;\u610b\u01f0\u06af\0\u06b2f;\u610dizontalLine;\u6500\u0100ct\u06c3\u06c5\xf2\u06a9rok;\u4126mp\u0144\u06d0\u06d8ownHum\xf0\u012fqual;\u624f\u0700EJOacdfgmnostu\u06fa\u06fe\u0703\u0707\u070e\u071a\u071e\u0721\u0728\u0744\u0778\u078b\u078f\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803b\xcd\u40cd\u0100iy\u0713\u0718rc\u803b\xce\u40ce;\u4418ot;\u4130r;\u6111rave\u803b\xcc\u40cc\u0180;ap\u0720\u072f\u073f\u0100cg\u0734\u0737r;\u412ainaryI;\u6148lie\xf3\u03dd\u01f4\u0749\0\u0762\u0100;e\u074d\u074e\u622c\u0100gr\u0753\u0758ral;\u622bsection;\u62c2isible\u0100CT\u076c\u0772omma;\u6063imes;\u6062\u0180gpt\u077f\u0783\u0788on;\u412ef;\uc000\ud835\udd40a;\u4399cr;\u6110ilde;\u4128\u01eb\u079a\0\u079ecy;\u4406l\u803b\xcf\u40cf\u0280cfosu\u07ac\u07b7\u07bc\u07c2\u07d0\u0100iy\u07b1\u07b5rc;\u4134;\u4419r;\uc000\ud835\udd0dpf;\uc000\ud835\udd41\u01e3\u07c7\0\u07ccr;\uc000\ud835\udca5rcy;\u4408kcy;\u4404\u0380HJacfos\u07e4\u07e8\u07ec\u07f1\u07fd\u0802\u0808cy;\u4425cy;\u440cppa;\u439a\u0100ey\u07f6\u07fbdil;\u4136;\u441ar;\uc000\ud835\udd0epf;\uc000\ud835\udd42cr;\uc000\ud835\udca6\u0580JTaceflmost\u0825\u0829\u082c\u0850\u0863\u09b3\u09b8\u09c7\u09cd\u0a37\u0a47cy;\u4409\u803b<\u403c\u0280cmnpr\u0837\u083c\u0841\u0844\u084dute;\u4139bda;\u439bg;\u67ealacetrf;\u6112r;\u619e\u0180aey\u0857\u085c\u0861ron;\u413ddil;\u413b;\u441b\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087e\u08a9\u08b1\u08e0\u08e6\u08fc\u092f\u095b\u0390\u096a\u0100nr\u0883\u088fgleBracket;\u67e8row\u0180;BR\u0899\u089a\u089e\u6190ar;\u61e4ightArrow;\u61c6eiling;\u6308o\u01f5\u08b7\0\u08c3bleBracket;\u67e6n\u01d4\u08c8\0\u08d2eeVector;\u6961ector\u0100;B\u08db\u08dc\u61c3ar;\u6959loor;\u630aight\u0100AV\u08ef\u08f5rrow;\u6194ector;\u694e\u0100er\u0901\u0917e\u0180;AV\u0909\u090a\u0910\u62a3rrow;\u61a4ector;\u695aiangle\u0180;BE\u0924\u0925\u0929\u62b2ar;\u69cfqual;\u62b4p\u0180DTV\u0937\u0942\u094cownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61bfar;\u6958ector\u0100;B\u0965\u0966\u61bcar;\u6952ight\xe1\u039cs\u0300EFGLST\u097e\u098b\u0995\u099d\u09a2\u09adqualGreater;\u62daullEqual;\u6266reater;\u6276ess;\u6aa1lantEqual;\u6a7dilde;\u6272r;\uc000\ud835\udd0f\u0100;e\u09bd\u09be\u62d8ftarrow;\u61daidot;\u413f\u0180npw\u09d4\u0a16\u0a1bg\u0200LRlr\u09de\u09f7\u0a02\u0a10eft\u0100AR\u09e6\u09ecrrow;\u67f5ightArrow;\u67f7ightArrow;\u67f6eft\u0100ar\u03b3\u0a0aight\xe1\u03bfight\xe1\u03caf;\uc000\ud835\udd43er\u0100LR\u0a22\u0a2ceftArrow;\u6199ightArrow;\u6198\u0180cht\u0a3e\u0a40\u0a42\xf2\u084c;\u61b0rok;\u4141;\u626a\u0400acefiosu\u0a5a\u0a5d\u0a60\u0a77\u0a7c\u0a85\u0a8b\u0a8ep;\u6905y;\u441c\u0100dl\u0a65\u0a6fiumSpace;\u605flintrf;\u6133r;\uc000\ud835\udd10nusPlus;\u6213pf;\uc000\ud835\udd44c\xf2\u0a76;\u439c\u0480Jacefostu\u0aa3\u0aa7\u0aad\u0ac0\u0b14\u0b19\u0d91\u0d97\u0d9ecy;\u440acute;\u4143\u0180aey\u0ab4\u0ab9\u0aberon;\u4147dil;\u4145;\u441d\u0180gsw\u0ac7\u0af0\u0b0eative\u0180MTV\u0ad3\u0adf\u0ae8ediumSpace;\u600bhi\u0100cn\u0ae6\u0ad8\xeb\u0ad9eryThi\xee\u0ad9ted\u0100GL\u0af8\u0b06reaterGreate\xf2\u0673essLes\xf3\u0a48Line;\u400ar;\uc000\ud835\udd11\u0200Bnpt\u0b22\u0b28\u0b37\u0b3areak;\u6060BreakingSpace;\u40a0f;\u6115\u0680;CDEGHLNPRSTV\u0b55\u0b56\u0b6a\u0b7c\u0ba1\u0beb\u0c04\u0c5e\u0c84\u0ca6\u0cd8\u0d61\u0d85\u6aec\u0100ou\u0b5b\u0b64ngruent;\u6262pCap;\u626doubleVerticalBar;\u6226\u0180lqx\u0b83\u0b8a\u0b9bement;\u6209ual\u0100;T\u0b92\u0b93\u6260ilde;\uc000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0bb6\u0bb7\u0bbd\u0bc9\u0bd3\u0bd8\u0be5\u626fqual;\u6271ullEqual;\uc000\u2267\u0338reater;\uc000\u226b\u0338ess;\u6279lantEqual;\uc000\u2a7e\u0338ilde;\u6275ump\u0144\u0bf2\u0bfdownHump;\uc000\u224e\u0338qual;\uc000\u224f\u0338e\u0100fs\u0c0a\u0c27tTriangle\u0180;BE\u0c1a\u0c1b\u0c21\u62eaar;\uc000\u29cf\u0338qual;\u62ecs\u0300;EGLST\u0c35\u0c36\u0c3c\u0c44\u0c4b\u0c58\u626equal;\u6270reater;\u6278ess;\uc000\u226a\u0338lantEqual;\uc000\u2a7d\u0338ilde;\u6274ested\u0100GL\u0c68\u0c79reaterGreater;\uc000\u2aa2\u0338essLess;\uc000\u2aa1\u0338recedes\u0180;ES\u0c92\u0c93\u0c9b\u6280qual;\uc000\u2aaf\u0338lantEqual;\u62e0\u0100ei\u0cab\u0cb9verseElement;\u620cghtTriangle\u0180;BE\u0ccb\u0ccc\u0cd2\u62ebar;\uc000\u29d0\u0338qual;\u62ed\u0100qu\u0cdd\u0d0cuareSu\u0100bp\u0ce8\u0cf9set\u0100;E\u0cf0\u0cf3\uc000\u228f\u0338qual;\u62e2erset\u0100;E\u0d03\u0d06\uc000\u2290\u0338qual;\u62e3\u0180bcp\u0d13\u0d24\u0d4eset\u0100;E\u0d1b\u0d1e\uc000\u2282\u20d2qual;\u6288ceeds\u0200;EST\u0d32\u0d33\u0d3b\u0d46\u6281qual;\uc000\u2ab0\u0338lantEqual;\u62e1ilde;\uc000\u227f\u0338erset\u0100;E\u0d58\u0d5b\uc000\u2283\u20d2qual;\u6289ilde\u0200;EFT\u0d6e\u0d6f\u0d75\u0d7f\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uc000\ud835\udca9ilde\u803b\xd1\u40d1;\u439d\u0700Eacdfgmoprstuv\u0dbd\u0dc2\u0dc9\u0dd5\u0ddb\u0de0\u0de7\u0dfc\u0e02\u0e20\u0e22\u0e32\u0e3f\u0e44lig;\u4152cute\u803b\xd3\u40d3\u0100iy\u0dce\u0dd3rc\u803b\xd4\u40d4;\u441eblac;\u4150r;\uc000\ud835\udd12rave\u803b\xd2\u40d2\u0180aei\u0dee\u0df2\u0df6cr;\u414cga;\u43a9cron;\u439fpf;\uc000\ud835\udd46enCurly\u0100DQ\u0e0e\u0e1aoubleQuote;\u601cuote;\u6018;\u6a54\u0100cl\u0e27\u0e2cr;\uc000\ud835\udcaaash\u803b\xd8\u40d8i\u016c\u0e37\u0e3cde\u803b\xd5\u40d5es;\u6a37ml\u803b\xd6\u40d6er\u0100BP\u0e4b\u0e60\u0100ar\u0e50\u0e53r;\u603eac\u0100ek\u0e5a\u0e5c;\u63deet;\u63b4arenthesis;\u63dc\u0480acfhilors\u0e7f\u0e87\u0e8a\u0e8f\u0e92\u0e94\u0e9d\u0eb0\u0efcrtialD;\u6202y;\u441fr;\uc000\ud835\udd13i;\u43a6;\u43a0usMinus;\u40b1\u0100ip\u0ea2\u0eadncareplan\xe5\u069df;\u6119\u0200;eio\u0eb9\u0eba\u0ee0\u0ee4\u6abbcedes\u0200;EST\u0ec8\u0ec9\u0ecf\u0eda\u627aqual;\u6aaflantEqual;\u627cilde;\u627eme;\u6033\u0100dp\u0ee9\u0eeeuct;\u620fortion\u0100;a\u0225\u0ef9l;\u621d\u0100ci\u0f01\u0f06r;\uc000\ud835\udcab;\u43a8\u0200Ufos\u0f11\u0f16\u0f1b\u0f1fOT\u803b\"\u4022r;\uc000\ud835\udd14pf;\u611acr;\uc000\ud835\udcac\u0600BEacefhiorsu\u0f3e\u0f43\u0f47\u0f60\u0f73\u0fa7\u0faa\u0fad\u1096\u10a9\u10b4\u10bearr;\u6910G\u803b\xae\u40ae\u0180cnr\u0f4e\u0f53\u0f56ute;\u4154g;\u67ebr\u0100;t\u0f5c\u0f5d\u61a0l;\u6916\u0180aey\u0f67\u0f6c\u0f71ron;\u4158dil;\u4156;\u4420\u0100;v\u0f78\u0f79\u611cerse\u0100EU\u0f82\u0f99\u0100lq\u0f87\u0f8eement;\u620builibrium;\u61cbpEquilibrium;\u696fr\xbb\u0f79o;\u43a1ght\u0400ACDFTUVa\u0fc1\u0feb\u0ff3\u1022\u1028\u105b\u1087\u03d8\u0100nr\u0fc6\u0fd2gleBracket;\u67e9row\u0180;BL\u0fdc\u0fdd\u0fe1\u6192ar;\u61e5eftArrow;\u61c4eiling;\u6309o\u01f5\u0ff9\0\u1005bleBracket;\u67e7n\u01d4\u100a\0\u1014eeVector;\u695dector\u0100;B\u101d\u101e\u61c2ar;\u6955loor;\u630b\u0100er\u102d\u1043e\u0180;AV\u1035\u1036\u103c\u62a2rrow;\u61a6ector;\u695biangle\u0180;BE\u1050\u1051\u1055\u62b3ar;\u69d0qual;\u62b5p\u0180DTV\u1063\u106e\u1078ownVector;\u694feeVector;\u695cector\u0100;B\u1082\u1083\u61bear;\u6954ector\u0100;B\u1091\u1092\u61c0ar;\u6953\u0100pu\u109b\u109ef;\u611dndImplies;\u6970ightarrow;\u61db\u0100ch\u10b9\u10bcr;\u611b;\u61b1leDelayed;\u69f4\u0680HOacfhimoqstu\u10e4\u10f1\u10f7\u10fd\u1119\u111e\u1151\u1156\u1161\u1167\u11b5\u11bb\u11bf\u0100Cc\u10e9\u10eeHcy;\u4429y;\u4428FTcy;\u442ccute;\u415a\u0280;aeiy\u1108\u1109\u110e\u1113\u1117\u6abcron;\u4160dil;\u415erc;\u415c;\u4421r;\uc000\ud835\udd16ort\u0200DLRU\u112a\u1134\u113e\u1149ownArrow\xbb\u041eeftArrow\xbb\u089aightArrow\xbb\u0fddpArrow;\u6191gma;\u43a3allCircle;\u6218pf;\uc000\ud835\udd4a\u0272\u116d\0\0\u1170t;\u621aare\u0200;ISU\u117b\u117c\u1189\u11af\u65a1ntersection;\u6293u\u0100bp\u118f\u119eset\u0100;E\u1197\u1198\u628fqual;\u6291erset\u0100;E\u11a8\u11a9\u6290qual;\u6292nion;\u6294cr;\uc000\ud835\udcaear;\u62c6\u0200bcmp\u11c8\u11db\u1209\u120b\u0100;s\u11cd\u11ce\u62d0et\u0100;E\u11cd\u11d5qual;\u6286\u0100ch\u11e0\u1205eeds\u0200;EST\u11ed\u11ee\u11f4\u11ff\u627bqual;\u6ab0lantEqual;\u627dilde;\u627fTh\xe1\u0f8c;\u6211\u0180;es\u1212\u1213\u1223\u62d1rset\u0100;E\u121c\u121d\u6283qual;\u6287et\xbb\u1213\u0580HRSacfhiors\u123e\u1244\u1249\u1255\u125e\u1271\u1276\u129f\u12c2\u12c8\u12d1ORN\u803b\xde\u40deADE;\u6122\u0100Hc\u124e\u1252cy;\u440by;\u4426\u0100bu\u125a\u125c;\u4009;\u43a4\u0180aey\u1265\u126a\u126fron;\u4164dil;\u4162;\u4422r;\uc000\ud835\udd17\u0100ei\u127b\u1289\u01f2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128e\u1298kSpace;\uc000\u205f\u200aSpace;\u6009lde\u0200;EFT\u12ab\u12ac\u12b2\u12bc\u623cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uc000\ud835\udd4bipleDot;\u60db\u0100ct\u12d6\u12dbr;\uc000\ud835\udcafrok;\u4166\u0ae1\u12f7\u130e\u131a\u1326\0\u132c\u1331\0\0\0\0\0\u1338\u133d\u1377\u1385\0\u13ff\u1404\u140a\u1410\u0100cr\u12fb\u1301ute\u803b\xda\u40dar\u0100;o\u1307\u1308\u619fcir;\u6949r\u01e3\u1313\0\u1316y;\u440eve;\u416c\u0100iy\u131e\u1323rc\u803b\xdb\u40db;\u4423blac;\u4170r;\uc000\ud835\udd18rave\u803b\xd9\u40d9acr;\u416a\u0100di\u1341\u1369er\u0100BP\u1348\u135d\u0100ar\u134d\u1350r;\u405fac\u0100ek\u1357\u1359;\u63dfet;\u63b5arenthesis;\u63ddon\u0100;P\u1370\u1371\u62c3lus;\u628e\u0100gp\u137b\u137fon;\u4172f;\uc000\ud835\udd4c\u0400ADETadps\u1395\u13ae\u13b8\u13c4\u03e8\u13d2\u13d7\u13f3rrow\u0180;BD\u1150\u13a0\u13a4ar;\u6912ownArrow;\u61c5ownArrow;\u6195quilibrium;\u696eee\u0100;A\u13cb\u13cc\u62a5rrow;\u61a5own\xe1\u03f3er\u0100LR\u13de\u13e8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13f9\u13fa\u43d2on;\u43a5ing;\u416ecr;\uc000\ud835\udcb0ilde;\u4168ml\u803b\xdc\u40dc\u0480Dbcdefosv\u1427\u142c\u1430\u1433\u143e\u1485\u148a\u1490\u1496ash;\u62abar;\u6aeby;\u4412ash\u0100;l\u143b\u143c\u62a9;\u6ae6\u0100er\u1443\u1445;\u62c1\u0180bty\u144c\u1450\u147aar;\u6016\u0100;i\u144f\u1455cal\u0200BLST\u1461\u1465\u146a\u1474ar;\u6223ine;\u407ceparator;\u6758ilde;\u6240ThinSpace;\u600ar;\uc000\ud835\udd19pf;\uc000\ud835\udd4dcr;\uc000\ud835\udcb1dash;\u62aa\u0280cefos\u14a7\u14ac\u14b1\u14b6\u14bcirc;\u4174dge;\u62c0r;\uc000\ud835\udd1apf;\uc000\ud835\udd4ecr;\uc000\ud835\udcb2\u0200fios\u14cb\u14d0\u14d2\u14d8r;\uc000\ud835\udd1b;\u439epf;\uc000\ud835\udd4fcr;\uc000\ud835\udcb3\u0480AIUacfosu\u14f1\u14f5\u14f9\u14fd\u1504\u150f\u1514\u151a\u1520cy;\u442fcy;\u4407cy;\u442ecute\u803b\xdd\u40dd\u0100iy\u1509\u150drc;\u4176;\u442br;\uc000\ud835\udd1cpf;\uc000\ud835\udd50cr;\uc000\ud835\udcb4ml;\u4178\u0400Hacdefos\u1535\u1539\u153f\u154b\u154f\u155d\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417d;\u4417ot;\u417b\u01f2\u1554\0\u155boWidt\xe8\u0ad9a;\u4396r;\u6128pf;\u6124cr;\uc000\ud835\udcb5\u0be1\u1583\u158a\u1590\0\u15b0\u15b6\u15bf\0\0\0\0\u15c6\u15db\u15eb\u165f\u166d\0\u1695\u169b\u16b2\u16b9\0\u16becute\u803b\xe1\u40e1reve;\u4103\u0300;Ediuy\u159c\u159d\u15a1\u15a3\u15a8\u15ad\u623e;\uc000\u223e\u0333;\u623frc\u803b\xe2\u40e2te\u80bb\xb4\u0306;\u4430lig\u803b\xe6\u40e6\u0100;r\xb2\u15ba;\uc000\ud835\udd1erave\u803b\xe0\u40e0\u0100ep\u15ca\u15d6\u0100fp\u15cf\u15d4sym;\u6135\xe8\u15d3ha;\u43b1\u0100ap\u15dfc\u0100cl\u15e4\u15e7r;\u4101g;\u6a3f\u0264\u15f0\0\0\u160a\u0280;adsv\u15fa\u15fb\u15ff\u1601\u1607\u6227nd;\u6a55;\u6a5clope;\u6a58;\u6a5a\u0380;elmrsz\u1618\u1619\u161b\u161e\u163f\u164f\u1659\u6220;\u69a4e\xbb\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163a\u163c\u163e;\u69a8;\u69a9;\u69aa;\u69ab;\u69ac;\u69ad;\u69ae;\u69aft\u0100;v\u1645\u1646\u621fb\u0100;d\u164c\u164d\u62be;\u699d\u0100pt\u1654\u1657h;\u6222\xbb\xb9arr;\u637c\u0100gp\u1663\u1667on;\u4105f;\uc000\ud835\udd52\u0380;Eaeiop\u12c1\u167b\u167d\u1682\u1684\u1687\u168a;\u6a70cir;\u6a6f;\u624ad;\u624bs;\u4027rox\u0100;e\u12c1\u1692\xf1\u1683ing\u803b\xe5\u40e5\u0180cty\u16a1\u16a6\u16a8r;\uc000\ud835\udcb6;\u402amp\u0100;e\u12c1\u16af\xf1\u0288ilde\u803b\xe3\u40e3ml\u803b\xe4\u40e4\u0100ci\u16c2\u16c8onin\xf4\u0272nt;\u6a11\u0800Nabcdefiklnoprsu\u16ed\u16f1\u1730\u173c\u1743\u1748\u1778\u177d\u17e0\u17e6\u1839\u1850\u170d\u193d\u1948\u1970ot;\u6aed\u0100cr\u16f6\u171ek\u0200ceps\u1700\u1705\u170d\u1713ong;\u624cpsilon;\u43f6rime;\u6035im\u0100;e\u171a\u171b\u623dq;\u62cd\u0176\u1722\u1726ee;\u62bded\u0100;g\u172c\u172d\u6305e\xbb\u172drk\u0100;t\u135c\u1737brk;\u63b6\u0100oy\u1701\u1741;\u4431quo;\u601e\u0280cmprt\u1753\u175b\u1761\u1764\u1768aus\u0100;e\u010a\u0109ptyv;\u69b0s\xe9\u170cno\xf5\u0113\u0180ahw\u176f\u1771\u1773;\u43b2;\u6136een;\u626cr;\uc000\ud835\udd1fg\u0380costuvw\u178d\u179d\u17b3\u17c1\u17d5\u17db\u17de\u0180aiu\u1794\u1796\u179a\xf0\u0760rc;\u65efp\xbb\u1371\u0180dpt\u17a4\u17a8\u17adot;\u6a00lus;\u6a01imes;\u6a02\u0271\u17b9\0\0\u17becup;\u6a06ar;\u6605riangle\u0100du\u17cd\u17d2own;\u65bdp;\u65b3plus;\u6a04e\xe5\u1444\xe5\u14adarow;\u690d\u0180ako\u17ed\u1826\u1835\u0100cn\u17f2\u1823k\u0180lst\u17fa\u05ab\u1802ozenge;\u69ebriangle\u0200;dlr\u1812\u1813\u1818\u181d\u65b4own;\u65beeft;\u65c2ight;\u65b8k;\u6423\u01b1\u182b\0\u1833\u01b2\u182f\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183e\u184d\u0100;q\u1843\u1846\uc000=\u20e5uiv;\uc000\u2261\u20e5t;\u6310\u0200ptwx\u1859\u185e\u1867\u186cf;\uc000\ud835\udd53\u0100;t\u13cb\u1863om\xbb\u13cctie;\u62c8\u0600DHUVbdhmptuv\u1885\u1896\u18aa\u18bb\u18d7\u18db\u18ec\u18ff\u1905\u190a\u1910\u1921\u0200LRlr\u188e\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18a1\u18a2\u18a4\u18a6\u18a8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18b3\u18b5\u18b7\u18b9;\u655d;\u655a;\u655c;\u6559\u0380;HLRhlr\u18ca\u18cb\u18cd\u18cf\u18d1\u18d3\u18d5\u6551;\u656c;\u6563;\u6560;\u656b;\u6562;\u655fox;\u69c9\u0200LRlr\u18e4\u18e6\u18e8\u18ea;\u6555;\u6552;\u6510;\u650c\u0280;DUdu\u06bd\u18f7\u18f9\u18fb\u18fd;\u6565;\u6568;\u652c;\u6534inus;\u629flus;\u629eimes;\u62a0\u0200LRlr\u1919\u191b\u191d\u191f;\u655b;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193b\u6502;\u656a;\u6561;\u655e;\u653c;\u6524;\u651c\u0100ev\u0123\u1942bar\u803b\xa6\u40a6\u0200ceio\u1951\u1956\u195a\u1960r;\uc000\ud835\udcb7mi;\u604fm\u0100;e\u171a\u171cl\u0180;bh\u1968\u1969\u196b\u405c;\u69c5sub;\u67c8\u016c\u1974\u197el\u0100;e\u1979\u197a\u6022t\xbb\u197ap\u0180;Ee\u012f\u1985\u1987;\u6aae\u0100;q\u06dc\u06db\u0ce1\u19a7\0\u19e8\u1a11\u1a15\u1a32\0\u1a37\u1a50\0\0\u1ab4\0\0\u1ac1\0\0\u1b21\u1b2e\u1b4d\u1b52\0\u1bfd\0\u1c0c\u0180cpr\u19ad\u19b2\u19ddute;\u4107\u0300;abcds\u19bf\u19c0\u19c4\u19ca\u19d5\u19d9\u6229nd;\u6a44rcup;\u6a49\u0100au\u19cf\u19d2p;\u6a4bp;\u6a47ot;\u6a40;\uc000\u2229\ufe00\u0100eo\u19e2\u19e5t;\u6041\xee\u0693\u0200aeiu\u19f0\u19fb\u1a01\u1a05\u01f0\u19f5\0\u19f8s;\u6a4don;\u410ddil\u803b\xe7\u40e7rc;\u4109ps\u0100;s\u1a0c\u1a0d\u6a4cm;\u6a50ot;\u410b\u0180dmn\u1a1b\u1a20\u1a26il\u80bb\xb8\u01adptyv;\u69b2t\u8100\xa2;e\u1a2d\u1a2e\u40a2r\xe4\u01b2r;\uc000\ud835\udd20\u0180cei\u1a3d\u1a40\u1a4dy;\u4447ck\u0100;m\u1a47\u1a48\u6713ark\xbb\u1a48;\u43c7r\u0380;Ecefms\u1a5f\u1a60\u1a62\u1a6b\u1aa4\u1aaa\u1aae\u65cb;\u69c3\u0180;el\u1a69\u1a6a\u1a6d\u42c6q;\u6257e\u0261\u1a74\0\0\u1a88rrow\u0100lr\u1a7c\u1a81eft;\u61baight;\u61bb\u0280RSacd\u1a92\u1a94\u1a96\u1a9a\u1a9f\xbb\u0f47;\u64c8st;\u629birc;\u629aash;\u629dnint;\u6a10id;\u6aefcir;\u69c2ubs\u0100;u\u1abb\u1abc\u6663it\xbb\u1abc\u02ec\u1ac7\u1ad4\u1afa\0\u1b0aon\u0100;e\u1acd\u1ace\u403a\u0100;q\xc7\xc6\u026d\u1ad9\0\0\u1ae2a\u0100;t\u1ade\u1adf\u402c;\u4040\u0180;fl\u1ae8\u1ae9\u1aeb\u6201\xee\u1160e\u0100mx\u1af1\u1af6ent\xbb\u1ae9e\xf3\u024d\u01e7\u1afe\0\u1b07\u0100;d\u12bb\u1b02ot;\u6a6dn\xf4\u0246\u0180fry\u1b10\u1b14\u1b17;\uc000\ud835\udd54o\xe4\u0254\u8100\xa9;s\u0155\u1b1dr;\u6117\u0100ao\u1b25\u1b29rr;\u61b5ss;\u6717\u0100cu\u1b32\u1b37r;\uc000\ud835\udcb8\u0100bp\u1b3c\u1b44\u0100;e\u1b41\u1b42\u6acf;\u6ad1\u0100;e\u1b49\u1b4a\u6ad0;\u6ad2dot;\u62ef\u0380delprvw\u1b60\u1b6c\u1b77\u1b82\u1bac\u1bd4\u1bf9arr\u0100lr\u1b68\u1b6a;\u6938;\u6935\u0270\u1b72\0\0\u1b75r;\u62dec;\u62dfarr\u0100;p\u1b7f\u1b80\u61b6;\u693d\u0300;bcdos\u1b8f\u1b90\u1b96\u1ba1\u1ba5\u1ba8\u622arcap;\u6a48\u0100au\u1b9b\u1b9ep;\u6a46p;\u6a4aot;\u628dr;\u6a45;\uc000\u222a\ufe00\u0200alrv\u1bb5\u1bbf\u1bde\u1be3rr\u0100;m\u1bbc\u1bbd\u61b7;\u693cy\u0180evw\u1bc7\u1bd4\u1bd8q\u0270\u1bce\0\0\u1bd2re\xe3\u1b73u\xe3\u1b75ee;\u62ceedge;\u62cfen\u803b\xa4\u40a4earrow\u0100lr\u1bee\u1bf3eft\xbb\u1b80ight\xbb\u1bbde\xe4\u1bdd\u0100ci\u1c01\u1c07onin\xf4\u01f7nt;\u6231lcty;\u632d\u0980AHabcdefhijlorstuwz\u1c38\u1c3b\u1c3f\u1c5d\u1c69\u1c75\u1c8a\u1c9e\u1cac\u1cb7\u1cfb\u1cff\u1d0d\u1d7b\u1d91\u1dab\u1dbb\u1dc6\u1dcdr\xf2\u0381ar;\u6965\u0200glrs\u1c48\u1c4d\u1c52\u1c54ger;\u6020eth;\u6138\xf2\u1133h\u0100;v\u1c5a\u1c5b\u6010\xbb\u090a\u016b\u1c61\u1c67arow;\u690fa\xe3\u0315\u0100ay\u1c6e\u1c73ron;\u410f;\u4434\u0180;ao\u0332\u1c7c\u1c84\u0100gr\u02bf\u1c81r;\u61catseq;\u6a77\u0180glm\u1c91\u1c94\u1c98\u803b\xb0\u40b0ta;\u43b4ptyv;\u69b1\u0100ir\u1ca3\u1ca8sht;\u697f;\uc000\ud835\udd21ar\u0100lr\u1cb3\u1cb5\xbb\u08dc\xbb\u101e\u0280aegsv\u1cc2\u0378\u1cd6\u1cdc\u1ce0m\u0180;os\u0326\u1cca\u1cd4nd\u0100;s\u0326\u1cd1uit;\u6666amma;\u43ddin;\u62f2\u0180;io\u1ce7\u1ce8\u1cf8\u40f7de\u8100\xf7;o\u1ce7\u1cf0ntimes;\u62c7n\xf8\u1cf7cy;\u4452c\u026f\u1d06\0\0\u1d0arn;\u631eop;\u630d\u0280lptuw\u1d18\u1d1d\u1d22\u1d49\u1d55lar;\u4024f;\uc000\ud835\udd55\u0280;emps\u030b\u1d2d\u1d37\u1d3d\u1d42q\u0100;d\u0352\u1d33ot;\u6251inus;\u6238lus;\u6214quare;\u62a1blebarwedg\xe5\xfan\u0180adh\u112e\u1d5d\u1d67ownarrow\xf3\u1c83arpoon\u0100lr\u1d72\u1d76ef\xf4\u1cb4igh\xf4\u1cb6\u0162\u1d7f\u1d85karo\xf7\u0f42\u026f\u1d8a\0\0\u1d8ern;\u631fop;\u630c\u0180cot\u1d98\u1da3\u1da6\u0100ry\u1d9d\u1da1;\uc000\ud835\udcb9;\u4455l;\u69f6rok;\u4111\u0100dr\u1db0\u1db4ot;\u62f1i\u0100;f\u1dba\u1816\u65bf\u0100ah\u1dc0\u1dc3r\xf2\u0429a\xf2\u0fa6angle;\u69a6\u0100ci\u1dd2\u1dd5y;\u445fgrarr;\u67ff\u0900Dacdefglmnopqrstux\u1e01\u1e09\u1e19\u1e38\u0578\u1e3c\u1e49\u1e61\u1e7e\u1ea5\u1eaf\u1ebd\u1ee1\u1f2a\u1f37\u1f44\u1f4e\u1f5a\u0100Do\u1e06\u1d34o\xf4\u1c89\u0100cs\u1e0e\u1e14ute\u803b\xe9\u40e9ter;\u6a6e\u0200aioy\u1e22\u1e27\u1e31\u1e36ron;\u411br\u0100;c\u1e2d\u1e2e\u6256\u803b\xea\u40ealon;\u6255;\u444dot;\u4117\u0100Dr\u1e41\u1e45ot;\u6252;\uc000\ud835\udd22\u0180;rs\u1e50\u1e51\u1e57\u6a9aave\u803b\xe8\u40e8\u0100;d\u1e5c\u1e5d\u6a96ot;\u6a98\u0200;ils\u1e6a\u1e6b\u1e72\u1e74\u6a99nters;\u63e7;\u6113\u0100;d\u1e79\u1e7a\u6a95ot;\u6a97\u0180aps\u1e85\u1e89\u1e97cr;\u4113ty\u0180;sv\u1e92\u1e93\u1e95\u6205et\xbb\u1e93p\u01001;\u1e9d\u1ea4\u0133\u1ea1\u1ea3;\u6004;\u6005\u6003\u0100gs\u1eaa\u1eac;\u414bp;\u6002\u0100gp\u1eb4\u1eb8on;\u4119f;\uc000\ud835\udd56\u0180als\u1ec4\u1ece\u1ed2r\u0100;s\u1eca\u1ecb\u62d5l;\u69e3us;\u6a71i\u0180;lv\u1eda\u1edb\u1edf\u43b5on\xbb\u1edb;\u43f5\u0200csuv\u1eea\u1ef3\u1f0b\u1f23\u0100io\u1eef\u1e31rc\xbb\u1e2e\u0269\u1ef9\0\0\u1efb\xed\u0548ant\u0100gl\u1f02\u1f06tr\xbb\u1e5dess\xbb\u1e7a\u0180aei\u1f12\u1f16\u1f1als;\u403dst;\u625fv\u0100;D\u0235\u1f20D;\u6a78parsl;\u69e5\u0100Da\u1f2f\u1f33ot;\u6253rr;\u6971\u0180cdi\u1f3e\u1f41\u1ef8r;\u612fo\xf4\u0352\u0100ah\u1f49\u1f4b;\u43b7\u803b\xf0\u40f0\u0100mr\u1f53\u1f57l\u803b\xeb\u40ebo;\u60ac\u0180cip\u1f61\u1f64\u1f67l;\u4021s\xf4\u056e\u0100eo\u1f6c\u1f74ctatio\xee\u0559nential\xe5\u0579\u09e1\u1f92\0\u1f9e\0\u1fa1\u1fa7\0\0\u1fc6\u1fcc\0\u1fd3\0\u1fe6\u1fea\u2000\0\u2008\u205allingdotse\xf1\u1e44y;\u4444male;\u6640\u0180ilr\u1fad\u1fb3\u1fc1lig;\u8000\ufb03\u0269\u1fb9\0\0\u1fbdg;\u8000\ufb00ig;\u8000\ufb04;\uc000\ud835\udd23lig;\u8000\ufb01lig;\uc000fj\u0180alt\u1fd9\u1fdc\u1fe1t;\u666dig;\u8000\ufb02ns;\u65b1of;\u4192\u01f0\u1fee\0\u1ff3f;\uc000\ud835\udd57\u0100ak\u05bf\u1ff7\u0100;v\u1ffc\u1ffd\u62d4;\u6ad9artint;\u6a0d\u0100ao\u200c\u2055\u0100cs\u2011\u2052\u03b1\u201a\u2030\u2038\u2045\u2048\0\u2050\u03b2\u2022\u2025\u2027\u202a\u202c\0\u202e\u803b\xbd\u40bd;\u6153\u803b\xbc\u40bc;\u6155;\u6159;\u615b\u01b3\u2034\0\u2036;\u6154;\u6156\u02b4\u203e\u2041\0\0\u2043\u803b\xbe\u40be;\u6157;\u615c5;\u6158\u01b6\u204c\0\u204e;\u615a;\u615d8;\u615el;\u6044wn;\u6322cr;\uc000\ud835\udcbb\u0880Eabcdefgijlnorstv\u2082\u2089\u209f\u20a5\u20b0\u20b4\u20f0\u20f5\u20fa\u20ff\u2103\u2112\u2138\u0317\u213e\u2152\u219e\u0100;l\u064d\u2087;\u6a8c\u0180cmp\u2090\u2095\u209dute;\u41f5ma\u0100;d\u209c\u1cda\u43b3;\u6a86reve;\u411f\u0100iy\u20aa\u20aerc;\u411d;\u4433ot;\u4121\u0200;lqs\u063e\u0642\u20bd\u20c9\u0180;qs\u063e\u064c\u20c4lan\xf4\u0665\u0200;cdl\u0665\u20d2\u20d5\u20e5c;\u6aa9ot\u0100;o\u20dc\u20dd\u6a80\u0100;l\u20e2\u20e3\u6a82;\u6a84\u0100;e\u20ea\u20ed\uc000\u22db\ufe00s;\u6a94r;\uc000\ud835\udd24\u0100;g\u0673\u061bmel;\u6137cy;\u4453\u0200;Eaj\u065a\u210c\u210e\u2110;\u6a92;\u6aa5;\u6aa4\u0200Eaes\u211b\u211d\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6a8arox\xbb\u2124\u0100;q\u212e\u212f\u6a88\u0100;q\u212e\u211bim;\u62e7pf;\uc000\ud835\udd58\u0100ci\u2143\u2146r;\u610am\u0180;el\u066b\u214e\u2150;\u6a8e;\u6a90\u8300>;cdlqr\u05ee\u2160\u216a\u216e\u2173\u2179\u0100ci\u2165\u2167;\u6aa7r;\u6a7aot;\u62d7Par;\u6995uest;\u6a7c\u0280adels\u2184\u216a\u2190\u0656\u219b\u01f0\u2189\0\u218epro\xf8\u209er;\u6978q\u0100lq\u063f\u2196les\xf3\u2088i\xed\u066b\u0100en\u21a3\u21adrtneqq;\uc000\u2269\ufe00\xc5\u21aa\u0500Aabcefkosy\u21c4\u21c7\u21f1\u21f5\u21fa\u2218\u221d\u222f\u2268\u227dr\xf2\u03a0\u0200ilmr\u21d0\u21d4\u21d7\u21dbrs\xf0\u1484f\xbb\u2024il\xf4\u06a9\u0100dr\u21e0\u21e4cy;\u444a\u0180;cw\u08f4\u21eb\u21efir;\u6948;\u61adar;\u610firc;\u4125\u0180alr\u2201\u220e\u2213rts\u0100;u\u2209\u220a\u6665it\xbb\u220alip;\u6026con;\u62b9r;\uc000\ud835\udd25s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223a\u223e\u2243\u225e\u2263rr;\u61fftht;\u623bk\u0100lr\u2249\u2253eftarrow;\u61a9ightarrow;\u61aaf;\uc000\ud835\udd59bar;\u6015\u0180clt\u226f\u2274\u2278r;\uc000\ud835\udcbdas\xe8\u21f4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xbb\u1c5b\u0ae1\u22a3\0\u22aa\0\u22b8\u22c5\u22ce\0\u22d5\u22f3\0\0\u22f8\u2322\u2367\u2362\u237f\0\u2386\u23aa\u23b4cute\u803b\xed\u40ed\u0180;iy\u0771\u22b0\u22b5rc\u803b\xee\u40ee;\u4438\u0100cx\u22bc\u22bfy;\u4435cl\u803b\xa1\u40a1\u0100fr\u039f\u22c9;\uc000\ud835\udd26rave\u803b\xec\u40ec\u0200;ino\u073e\u22dd\u22e9\u22ee\u0100in\u22e2\u22e6nt;\u6a0ct;\u622dfin;\u69dcta;\u6129lig;\u4133\u0180aop\u22fe\u231a\u231d\u0180cgt\u2305\u2308\u2317r;\u412b\u0180elp\u071f\u230f\u2313in\xe5\u078ear\xf4\u0720h;\u4131f;\u62b7ed;\u41b5\u0280;cfot\u04f4\u232c\u2331\u233d\u2341are;\u6105in\u0100;t\u2338\u2339\u621eie;\u69dddo\xf4\u2319\u0280;celp\u0757\u234c\u2350\u235b\u2361al;\u62ba\u0100gr\u2355\u2359er\xf3\u1563\xe3\u234darhk;\u6a17rod;\u6a3c\u0200cgpt\u236f\u2372\u2376\u237by;\u4451on;\u412ff;\uc000\ud835\udd5aa;\u43b9uest\u803b\xbf\u40bf\u0100ci\u238a\u238fr;\uc000\ud835\udcben\u0280;Edsv\u04f4\u239b\u239d\u23a1\u04f3;\u62f9ot;\u62f5\u0100;v\u23a6\u23a7\u62f4;\u62f3\u0100;i\u0777\u23aelde;\u4129\u01eb\u23b8\0\u23bccy;\u4456l\u803b\xef\u40ef\u0300cfmosu\u23cc\u23d7\u23dc\u23e1\u23e7\u23f5\u0100iy\u23d1\u23d5rc;\u4135;\u4439r;\uc000\ud835\udd27ath;\u4237pf;\uc000\ud835\udd5b\u01e3\u23ec\0\u23f1r;\uc000\ud835\udcbfrcy;\u4458kcy;\u4454\u0400acfghjos\u240b\u2416\u2422\u2427\u242d\u2431\u2435\u243bppa\u0100;v\u2413\u2414\u43ba;\u43f0\u0100ey\u241b\u2420dil;\u4137;\u443ar;\uc000\ud835\udd28reen;\u4138cy;\u4445cy;\u445cpf;\uc000\ud835\udd5ccr;\uc000\ud835\udcc0\u0b80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248d\u2491\u250e\u253d\u255a\u2580\u264e\u265e\u2665\u2679\u267d\u269a\u26b2\u26d8\u275d\u2768\u278b\u27c0\u2801\u2812\u0180art\u2477\u247a\u247cr\xf2\u09c6\xf2\u0395ail;\u691barr;\u690e\u0100;g\u0994\u248b;\u6a8bar;\u6962\u0963\u24a5\0\u24aa\0\u24b1\0\0\0\0\0\u24b5\u24ba\0\u24c6\u24c8\u24cd\0\u24f9ute;\u413amptyv;\u69b4ra\xee\u084cbda;\u43bbg\u0180;dl\u088e\u24c1\u24c3;\u6991\xe5\u088e;\u6a85uo\u803b\xab\u40abr\u0400;bfhlpst\u0899\u24de\u24e6\u24e9\u24eb\u24ee\u24f1\u24f5\u0100;f\u089d\u24e3s;\u691fs;\u691d\xeb\u2252p;\u61abl;\u6939im;\u6973l;\u61a2\u0180;ae\u24ff\u2500\u2504\u6aabil;\u6919\u0100;s\u2509\u250a\u6aad;\uc000\u2aad\ufe00\u0180abr\u2515\u2519\u251drr;\u690crk;\u6772\u0100ak\u2522\u252cc\u0100ek\u2528\u252a;\u407b;\u405b\u0100es\u2531\u2533;\u698bl\u0100du\u2539\u253b;\u698f;\u698d\u0200aeuy\u2546\u254b\u2556\u2558ron;\u413e\u0100di\u2550\u2554il;\u413c\xec\u08b0\xe2\u2529;\u443b\u0200cqrs\u2563\u2566\u256d\u257da;\u6936uo\u0100;r\u0e19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694bh;\u61b2\u0280;fgqs\u258b\u258c\u0989\u25f3\u25ff\u6264t\u0280ahlrt\u2598\u25a4\u25b7\u25c2\u25e8rrow\u0100;t\u0899\u25a1a\xe9\u24f6arpoon\u0100du\u25af\u25b4own\xbb\u045ap\xbb\u0966eftarrows;\u61c7ight\u0180ahs\u25cd\u25d6\u25derrow\u0100;s\u08f4\u08a7arpoon\xf3\u0f98quigarro\xf7\u21f0hreetimes;\u62cb\u0180;qs\u258b\u0993\u25falan\xf4\u09ac\u0280;cdgs\u09ac\u260a\u260d\u261d\u2628c;\u6aa8ot\u0100;o\u2614\u2615\u6a7f\u0100;r\u261a\u261b\u6a81;\u6a83\u0100;e\u2622\u2625\uc000\u22da\ufe00s;\u6a93\u0280adegs\u2633\u2639\u263d\u2649\u264bppro\xf8\u24c6ot;\u62d6q\u0100gq\u2643\u2645\xf4\u0989gt\xf2\u248c\xf4\u099bi\xed\u09b2\u0180ilr\u2655\u08e1\u265asht;\u697c;\uc000\ud835\udd29\u0100;E\u099c\u2663;\u6a91\u0161\u2669\u2676r\u0100du\u25b2\u266e\u0100;l\u0965\u2673;\u696alk;\u6584cy;\u4459\u0280;acht\u0a48\u2688\u268b\u2691\u2696r\xf2\u25c1orne\xf2\u1d08ard;\u696bri;\u65fa\u0100io\u269f\u26a4dot;\u4140ust\u0100;a\u26ac\u26ad\u63b0che\xbb\u26ad\u0200Eaes\u26bb\u26bd\u26c9\u26d4;\u6268p\u0100;p\u26c3\u26c4\u6a89rox\xbb\u26c4\u0100;q\u26ce\u26cf\u6a87\u0100;q\u26ce\u26bbim;\u62e6\u0400abnoptwz\u26e9\u26f4\u26f7\u271a\u272f\u2741\u2747\u2750\u0100nr\u26ee\u26f1g;\u67ecr;\u61fdr\xeb\u08c1g\u0180lmr\u26ff\u270d\u2714eft\u0100ar\u09e6\u2707ight\xe1\u09f2apsto;\u67fcight\xe1\u09fdparrow\u0100lr\u2725\u2729ef\xf4\u24edight;\u61ac\u0180afl\u2736\u2739\u273dr;\u6985;\uc000\ud835\udd5dus;\u6a2dimes;\u6a34\u0161\u274b\u274fst;\u6217\xe1\u134e\u0180;ef\u2757\u2758\u1800\u65cange\xbb\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277c\u2785\u2787r\xf2\u08a8orne\xf2\u1d8car\u0100;d\u0f98\u2783;\u696d;\u600eri;\u62bf\u0300achiqt\u2798\u279d\u0a40\u27a2\u27ae\u27bbquo;\u6039r;\uc000\ud835\udcc1m\u0180;eg\u09b2\u27aa\u27ac;\u6a8d;\u6a8f\u0100bu\u252a\u27b3o\u0100;r\u0e1f\u27b9;\u601arok;\u4142\u8400<;cdhilqr\u082b\u27d2\u2639\u27dc\u27e0\u27e5\u27ea\u27f0\u0100ci\u27d7\u27d9;\u6aa6r;\u6a79re\xe5\u25f2mes;\u62c9arr;\u6976uest;\u6a7b\u0100Pi\u27f5\u27f9ar;\u6996\u0180;ef\u2800\u092d\u181b\u65c3r\u0100du\u2807\u280dshar;\u694ahar;\u6966\u0100en\u2817\u2821rtneqq;\uc000\u2268\ufe00\xc5\u281e\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288e\u2893\u28a0\u28a5\u28a8\u28da\u28e2\u28e4\u0a83\u28f3\u2902Dot;\u623a\u0200clpr\u284e\u2852\u2863\u287dr\u803b\xaf\u40af\u0100et\u2857\u2859;\u6642\u0100;e\u285e\u285f\u6720se\xbb\u285f\u0100;s\u103b\u2868to\u0200;dlu\u103b\u2873\u2877\u287bow\xee\u048cef\xf4\u090f\xf0\u13d1ker;\u65ae\u0100oy\u2887\u288cmma;\u6a29;\u443cash;\u6014asuredangle\xbb\u1626r;\uc000\ud835\udd2ao;\u6127\u0180cdn\u28af\u28b4\u28c9ro\u803b\xb5\u40b5\u0200;acd\u1464\u28bd\u28c0\u28c4s\xf4\u16a7ir;\u6af0ot\u80bb\xb7\u01b5us\u0180;bd\u28d2\u1903\u28d3\u6212\u0100;u\u1d3c\u28d8;\u6a2a\u0163\u28de\u28e1p;\u6adb\xf2\u2212\xf0\u0a81\u0100dp\u28e9\u28eeels;\u62a7f;\uc000\ud835\udd5e\u0100ct\u28f8\u28fdr;\uc000\ud835\udcc2pos\xbb\u159d\u0180;lm\u2909\u290a\u290d\u43bctimap;\u62b8\u0c00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297e\u2989\u2998\u29da\u29e9\u2a15\u2a1a\u2a58\u2a5d\u2a83\u2a95\u2aa4\u2aa8\u2b04\u2b07\u2b44\u2b7f\u2bae\u2c34\u2c67\u2c7c\u2ce9\u0100gt\u2947\u294b;\uc000\u22d9\u0338\u0100;v\u2950\u0bcf\uc000\u226b\u20d2\u0180elt\u295a\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61cdightarrow;\u61ce;\uc000\u22d8\u0338\u0100;v\u297b\u0c47\uc000\u226a\u20d2ightarrow;\u61cf\u0100Dd\u298e\u2993ash;\u62afash;\u62ae\u0280bcnpt\u29a3\u29a7\u29ac\u29b1\u29ccla\xbb\u02deute;\u4144g;\uc000\u2220\u20d2\u0280;Eiop\u0d84\u29bc\u29c0\u29c5\u29c8;\uc000\u2a70\u0338d;\uc000\u224b\u0338s;\u4149ro\xf8\u0d84ur\u0100;a\u29d3\u29d4\u666el\u0100;s\u29d3\u0b38\u01f3\u29df\0\u29e3p\u80bb\xa0\u0b37mp\u0100;e\u0bf9\u0c00\u0280aeouy\u29f4\u29fe\u2a03\u2a10\u2a13\u01f0\u29f9\0\u29fb;\u6a43on;\u4148dil;\u4146ng\u0100;d\u0d7e\u2a0aot;\uc000\u2a6d\u0338p;\u6a42;\u443dash;\u6013\u0380;Aadqsx\u0b92\u2a29\u2a2d\u2a3b\u2a41\u2a45\u2a50rr;\u61d7r\u0100hr\u2a33\u2a36k;\u6924\u0100;o\u13f2\u13f0ot;\uc000\u2250\u0338ui\xf6\u0b63\u0100ei\u2a4a\u2a4ear;\u6928\xed\u0b98ist\u0100;s\u0ba0\u0b9fr;\uc000\ud835\udd2b\u0200Eest\u0bc5\u2a66\u2a79\u2a7c\u0180;qs\u0bbc\u2a6d\u0be1\u0180;qs\u0bbc\u0bc5\u2a74lan\xf4\u0be2i\xed\u0bea\u0100;r\u0bb6\u2a81\xbb\u0bb7\u0180Aap\u2a8a\u2a8d\u2a91r\xf2\u2971rr;\u61aear;\u6af2\u0180;sv\u0f8d\u2a9c\u0f8c\u0100;d\u2aa1\u2aa2\u62fc;\u62facy;\u445a\u0380AEadest\u2ab7\u2aba\u2abe\u2ac2\u2ac5\u2af6\u2af9r\xf2\u2966;\uc000\u2266\u0338rr;\u619ar;\u6025\u0200;fqs\u0c3b\u2ace\u2ae3\u2aeft\u0100ar\u2ad4\u2ad9rro\xf7\u2ac1ightarro\xf7\u2a90\u0180;qs\u0c3b\u2aba\u2aealan\xf4\u0c55\u0100;s\u0c55\u2af4\xbb\u0c36i\xed\u0c5d\u0100;r\u0c35\u2afei\u0100;e\u0c1a\u0c25i\xe4\u0d90\u0100pt\u2b0c\u2b11f;\uc000\ud835\udd5f\u8180\xac;in\u2b19\u2b1a\u2b36\u40acn\u0200;Edv\u0b89\u2b24\u2b28\u2b2e;\uc000\u22f9\u0338ot;\uc000\u22f5\u0338\u01e1\u0b89\u2b33\u2b35;\u62f7;\u62f6i\u0100;v\u0cb8\u2b3c\u01e1\u0cb8\u2b41\u2b43;\u62fe;\u62fd\u0180aor\u2b4b\u2b63\u2b69r\u0200;ast\u0b7b\u2b55\u2b5a\u2b5flle\xec\u0b7bl;\uc000\u2afd\u20e5;\uc000\u2202\u0338lint;\u6a14\u0180;ce\u0c92\u2b70\u2b73u\xe5\u0ca5\u0100;c\u0c98\u2b78\u0100;e\u0c92\u2b7d\xf1\u0c98\u0200Aait\u2b88\u2b8b\u2b9d\u2ba7r\xf2\u2988rr\u0180;cw\u2b94\u2b95\u2b99\u619b;\uc000\u2933\u0338;\uc000\u219d\u0338ghtarrow\xbb\u2b95ri\u0100;e\u0ccb\u0cd6\u0380chimpqu\u2bbd\u2bcd\u2bd9\u2b04\u0b78\u2be4\u2bef\u0200;cer\u0d32\u2bc6\u0d37\u2bc9u\xe5\u0d45;\uc000\ud835\udcc3ort\u026d\u2b05\0\0\u2bd6ar\xe1\u2b56m\u0100;e\u0d6e\u2bdf\u0100;q\u0d74\u0d73su\u0100bp\u2beb\u2bed\xe5\u0cf8\xe5\u0d0b\u0180bcp\u2bf6\u2c11\u2c19\u0200;Ees\u2bff\u2c00\u0d22\u2c04\u6284;\uc000\u2ac5\u0338et\u0100;e\u0d1b\u2c0bq\u0100;q\u0d23\u2c00c\u0100;e\u0d32\u2c17\xf1\u0d38\u0200;Ees\u2c22\u2c23\u0d5f\u2c27\u6285;\uc000\u2ac6\u0338et\u0100;e\u0d58\u2c2eq\u0100;q\u0d60\u2c23\u0200gilr\u2c3d\u2c3f\u2c45\u2c47\xec\u0bd7lde\u803b\xf1\u40f1\xe7\u0c43iangle\u0100lr\u2c52\u2c5ceft\u0100;e\u0c1a\u2c5a\xf1\u0c26ight\u0100;e\u0ccb\u2c65\xf1\u0cd7\u0100;m\u2c6c\u2c6d\u43bd\u0180;es\u2c74\u2c75\u2c79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2c8f\u2c94\u2c99\u2c9e\u2ca3\u2cb0\u2cb6\u2cd3\u2ce3ash;\u62adarr;\u6904p;\uc000\u224d\u20d2ash;\u62ac\u0100et\u2ca8\u2cac;\uc000\u2265\u20d2;\uc000>\u20d2nfin;\u69de\u0180Aet\u2cbd\u2cc1\u2cc5rr;\u6902;\uc000\u2264\u20d2\u0100;r\u2cca\u2ccd\uc000<\u20d2ie;\uc000\u22b4\u20d2\u0100At\u2cd8\u2cdcrr;\u6903rie;\uc000\u22b5\u20d2im;\uc000\u223c\u20d2\u0180Aan\u2cf0\u2cf4\u2d02rr;\u61d6r\u0100hr\u2cfa\u2cfdk;\u6923\u0100;o\u13e7\u13e5ear;\u6927\u1253\u1a95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2d2d\0\u2d38\u2d48\u2d60\u2d65\u2d72\u2d84\u1b07\0\0\u2d8d\u2dab\0\u2dc8\u2dce\0\u2ddc\u2e19\u2e2b\u2e3e\u2e43\u0100cs\u2d31\u1a97ute\u803b\xf3\u40f3\u0100iy\u2d3c\u2d45r\u0100;c\u1a9e\u2d42\u803b\xf4\u40f4;\u443e\u0280abios\u1aa0\u2d52\u2d57\u01c8\u2d5alac;\u4151v;\u6a38old;\u69bclig;\u4153\u0100cr\u2d69\u2d6dir;\u69bf;\uc000\ud835\udd2c\u036f\u2d79\0\0\u2d7c\0\u2d82n;\u42dbave\u803b\xf2\u40f2;\u69c1\u0100bm\u2d88\u0df4ar;\u69b5\u0200acit\u2d95\u2d98\u2da5\u2da8r\xf2\u1a80\u0100ir\u2d9d\u2da0r;\u69beoss;\u69bbn\xe5\u0e52;\u69c0\u0180aei\u2db1\u2db5\u2db9cr;\u414dga;\u43c9\u0180cdn\u2dc0\u2dc5\u01cdron;\u43bf;\u69b6pf;\uc000\ud835\udd60\u0180ael\u2dd4\u2dd7\u01d2r;\u69b7rp;\u69b9\u0380;adiosv\u2dea\u2deb\u2dee\u2e08\u2e0d\u2e10\u2e16\u6228r\xf2\u1a86\u0200;efm\u2df7\u2df8\u2e02\u2e05\u6a5dr\u0100;o\u2dfe\u2dff\u6134f\xbb\u2dff\u803b\xaa\u40aa\u803b\xba\u40bagof;\u62b6r;\u6a56lope;\u6a57;\u6a5b\u0180clo\u2e1f\u2e21\u2e27\xf2\u2e01ash\u803b\xf8\u40f8l;\u6298i\u016c\u2e2f\u2e34de\u803b\xf5\u40f5es\u0100;a\u01db\u2e3as;\u6a36ml\u803b\xf6\u40f6bar;\u633d\u0ae1\u2e5e\0\u2e7d\0\u2e80\u2e9d\0\u2ea2\u2eb9\0\0\u2ecb\u0e9c\0\u2f13\0\0\u2f2b\u2fbc\0\u2fc8r\u0200;ast\u0403\u2e67\u2e72\u0e85\u8100\xb6;l\u2e6d\u2e6e\u40b6le\xec\u0403\u0269\u2e78\0\0\u2e7bm;\u6af3;\u6afdy;\u443fr\u0280cimpt\u2e8b\u2e8f\u2e93\u1865\u2e97nt;\u4025od;\u402eil;\u6030enk;\u6031r;\uc000\ud835\udd2d\u0180imo\u2ea8\u2eb0\u2eb4\u0100;v\u2ead\u2eae\u43c6;\u43d5ma\xf4\u0a76ne;\u660e\u0180;tv\u2ebf\u2ec0\u2ec8\u43c0chfork\xbb\u1ffd;\u43d6\u0100au\u2ecf\u2edfn\u0100ck\u2ed5\u2eddk\u0100;h\u21f4\u2edb;\u610e\xf6\u21f4s\u0480;abcdemst\u2ef3\u2ef4\u1908\u2ef9\u2efd\u2f04\u2f06\u2f0a\u2f0e\u402bcir;\u6a23ir;\u6a22\u0100ou\u1d40\u2f02;\u6a25;\u6a72n\u80bb\xb1\u0e9dim;\u6a26wo;\u6a27\u0180ipu\u2f19\u2f20\u2f25ntint;\u6a15f;\uc000\ud835\udd61nd\u803b\xa3\u40a3\u0500;Eaceinosu\u0ec8\u2f3f\u2f41\u2f44\u2f47\u2f81\u2f89\u2f92\u2f7e\u2fb6;\u6ab3p;\u6ab7u\xe5\u0ed9\u0100;c\u0ece\u2f4c\u0300;acens\u0ec8\u2f59\u2f5f\u2f66\u2f68\u2f7eppro\xf8\u2f43urlye\xf1\u0ed9\xf1\u0ece\u0180aes\u2f6f\u2f76\u2f7approx;\u6ab9qq;\u6ab5im;\u62e8i\xed\u0edfme\u0100;s\u2f88\u0eae\u6032\u0180Eas\u2f78\u2f90\u2f7a\xf0\u2f75\u0180dfp\u0eec\u2f99\u2faf\u0180als\u2fa0\u2fa5\u2faalar;\u632eine;\u6312urf;\u6313\u0100;t\u0efb\u2fb4\xef\u0efbrel;\u62b0\u0100ci\u2fc0\u2fc5r;\uc000\ud835\udcc5;\u43c8ncsp;\u6008\u0300fiopsu\u2fda\u22e2\u2fdf\u2fe5\u2feb\u2ff1r;\uc000\ud835\udd2epf;\uc000\ud835\udd62rime;\u6057cr;\uc000\ud835\udcc6\u0180aeo\u2ff8\u3009\u3013t\u0100ei\u2ffe\u3005rnion\xf3\u06b0nt;\u6a16st\u0100;e\u3010\u3011\u403f\xf1\u1f19\xf4\u0f14\u0a80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30e0\u310e\u312b\u3147\u3162\u3172\u318e\u3206\u3215\u3224\u3229\u3258\u326e\u3272\u3290\u32b0\u32b7\u0180art\u3047\u304a\u304cr\xf2\u10b3\xf2\u03ddail;\u691car\xf2\u1c65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307f\u308f\u3094\u30cc\u0100eu\u306d\u3071;\uc000\u223d\u0331te;\u4155i\xe3\u116emptyv;\u69b3g\u0200;del\u0fd1\u3089\u308b\u308d;\u6992;\u69a5\xe5\u0fd1uo\u803b\xbb\u40bbr\u0580;abcfhlpstw\u0fdc\u30ac\u30af\u30b7\u30b9\u30bc\u30be\u30c0\u30c3\u30c7\u30cap;\u6975\u0100;f\u0fe0\u30b4s;\u6920;\u6933s;\u691e\xeb\u225d\xf0\u272el;\u6945im;\u6974l;\u61a3;\u619d\u0100ai\u30d1\u30d5il;\u691ao\u0100;n\u30db\u30dc\u6236al\xf3\u0f1e\u0180abr\u30e7\u30ea\u30eer\xf2\u17e5rk;\u6773\u0100ak\u30f3\u30fdc\u0100ek\u30f9\u30fb;\u407d;\u405d\u0100es\u3102\u3104;\u698cl\u0100du\u310a\u310c;\u698e;\u6990\u0200aeuy\u3117\u311c\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xec\u0ff2\xe2\u30fa;\u4440\u0200clqs\u3134\u3137\u313d\u3144a;\u6937dhar;\u6969uo\u0100;r\u020e\u020dh;\u61b3\u0180acg\u314e\u315f\u0f44l\u0200;ips\u0f78\u3158\u315b\u109cn\xe5\u10bbar\xf4\u0fa9t;\u65ad\u0180ilr\u3169\u1023\u316esht;\u697d;\uc000\ud835\udd2f\u0100ao\u3177\u3186r\u0100du\u317d\u317f\xbb\u047b\u0100;l\u1091\u3184;\u696c\u0100;v\u318b\u318c\u43c1;\u43f1\u0180gns\u3195\u31f9\u31fcht\u0300ahlrst\u31a4\u31b0\u31c2\u31d8\u31e4\u31eerrow\u0100;t\u0fdc\u31ada\xe9\u30c8arpoon\u0100du\u31bb\u31bfow\xee\u317ep\xbb\u1092eft\u0100ah\u31ca\u31d0rrow\xf3\u0feaarpoon\xf3\u0551ightarrows;\u61c9quigarro\xf7\u30cbhreetimes;\u62ccg;\u42daingdotse\xf1\u1f32\u0180ahm\u320d\u3210\u3213r\xf2\u0feaa\xf2\u0551;\u600foust\u0100;a\u321e\u321f\u63b1che\xbb\u321fmid;\u6aee\u0200abpt\u3232\u323d\u3240\u3252\u0100nr\u3237\u323ag;\u67edr;\u61fer\xeb\u1003\u0180afl\u3247\u324a\u324er;\u6986;\uc000\ud835\udd63us;\u6a2eimes;\u6a35\u0100ap\u325d\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6a12ar\xf2\u31e3\u0200achq\u327b\u3280\u10bc\u3285quo;\u603ar;\uc000\ud835\udcc7\u0100bu\u30fb\u328ao\u0100;r\u0214\u0213\u0180hir\u3297\u329b\u32a0re\xe5\u31f8mes;\u62cai\u0200;efl\u32aa\u1059\u1821\u32ab\u65b9tri;\u69celuhar;\u6968;\u611e\u0d61\u32d5\u32db\u32df\u332c\u3338\u3371\0\u337a\u33a4\0\0\u33ec\u33f0\0\u3428\u3448\u345a\u34ad\u34b1\u34ca\u34f1\0\u3616\0\0\u3633cute;\u415bqu\xef\u27ba\u0500;Eaceinpsy\u11ed\u32f3\u32f5\u32ff\u3302\u330b\u330f\u331f\u3326\u3329;\u6ab4\u01f0\u32fa\0\u32fc;\u6ab8on;\u4161u\xe5\u11fe\u0100;d\u11f3\u3307il;\u415frc;\u415d\u0180Eas\u3316\u3318\u331b;\u6ab6p;\u6abaim;\u62e9olint;\u6a13i\xed\u1204;\u4441ot\u0180;be\u3334\u1d47\u3335\u62c5;\u6a66\u0380Aacmstx\u3346\u334a\u3357\u335b\u335e\u3363\u336drr;\u61d8r\u0100hr\u3350\u3352\xeb\u2228\u0100;o\u0a36\u0a34t\u803b\xa7\u40a7i;\u403bwar;\u6929m\u0100in\u3369\xf0nu\xf3\xf1t;\u6736r\u0100;o\u3376\u2055\uc000\ud835\udd30\u0200acoy\u3382\u3386\u3391\u33a0rp;\u666f\u0100hy\u338b\u338fcy;\u4449;\u4448rt\u026d\u3399\0\0\u339ci\xe4\u1464ara\xec\u2e6f\u803b\xad\u40ad\u0100gm\u33a8\u33b4ma\u0180;fv\u33b1\u33b2\u33b2\u43c3;\u43c2\u0400;deglnpr\u12ab\u33c5\u33c9\u33ce\u33d6\u33de\u33e1\u33e6ot;\u6a6a\u0100;q\u12b1\u12b0\u0100;E\u33d3\u33d4\u6a9e;\u6aa0\u0100;E\u33db\u33dc\u6a9d;\u6a9fe;\u6246lus;\u6a24arr;\u6972ar\xf2\u113d\u0200aeit\u33f8\u3408\u340f\u3417\u0100ls\u33fd\u3404lsetm\xe9\u336ahp;\u6a33parsl;\u69e4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341c\u341d\u6aaa\u0100;s\u3422\u3423\u6aac;\uc000\u2aac\ufe00\u0180flp\u342e\u3433\u3442tcy;\u444c\u0100;b\u3438\u3439\u402f\u0100;a\u343e\u343f\u69c4r;\u633ff;\uc000\ud835\udd64a\u0100dr\u344d\u0402es\u0100;u\u3454\u3455\u6660it\xbb\u3455\u0180csu\u3460\u3479\u349f\u0100au\u3465\u346fp\u0100;s\u1188\u346b;\uc000\u2293\ufe00p\u0100;s\u11b4\u3475;\uc000\u2294\ufe00u\u0100bp\u347f\u348f\u0180;es\u1197\u119c\u3486et\u0100;e\u1197\u348d\xf1\u119d\u0180;es\u11a8\u11ad\u3496et\u0100;e\u11a8\u349d\xf1\u11ae\u0180;af\u117b\u34a6\u05b0r\u0165\u34ab\u05b1\xbb\u117car\xf2\u1148\u0200cemt\u34b9\u34be\u34c2\u34c5r;\uc000\ud835\udcc8tm\xee\xf1i\xec\u3415ar\xe6\u11be\u0100ar\u34ce\u34d5r\u0100;f\u34d4\u17bf\u6606\u0100an\u34da\u34edight\u0100ep\u34e3\u34eapsilo\xee\u1ee0h\xe9\u2eafs\xbb\u2852\u0280bcmnp\u34fb\u355e\u1209\u358b\u358e\u0480;Edemnprs\u350e\u350f\u3511\u3515\u351e\u3523\u352c\u3531\u3536\u6282;\u6ac5ot;\u6abd\u0100;d\u11da\u351aot;\u6ac3ult;\u6ac1\u0100Ee\u3528\u352a;\u6acb;\u628alus;\u6abfarr;\u6979\u0180eiu\u353d\u3552\u3555t\u0180;en\u350e\u3545\u354bq\u0100;q\u11da\u350feq\u0100;q\u352b\u3528m;\u6ac7\u0100bp\u355a\u355c;\u6ad5;\u6ad3c\u0300;acens\u11ed\u356c\u3572\u3579\u357b\u3326ppro\xf8\u32faurlye\xf1\u11fe\xf1\u11f3\u0180aes\u3582\u3588\u331bppro\xf8\u331aq\xf1\u3317g;\u666a\u0680123;Edehlmnps\u35a9\u35ac\u35af\u121c\u35b2\u35b4\u35c0\u35c9\u35d5\u35da\u35df\u35e8\u35ed\u803b\xb9\u40b9\u803b\xb2\u40b2\u803b\xb3\u40b3;\u6ac6\u0100os\u35b9\u35bct;\u6abeub;\u6ad8\u0100;d\u1222\u35c5ot;\u6ac4s\u0100ou\u35cf\u35d2l;\u67c9b;\u6ad7arr;\u697bult;\u6ac2\u0100Ee\u35e4\u35e6;\u6acc;\u628blus;\u6ac0\u0180eiu\u35f4\u3609\u360ct\u0180;en\u121c\u35fc\u3602q\u0100;q\u1222\u35b2eq\u0100;q\u35e7\u35e4m;\u6ac8\u0100bp\u3611\u3613;\u6ad4;\u6ad6\u0180Aan\u361c\u3620\u362drr;\u61d9r\u0100hr\u3626\u3628\xeb\u222e\u0100;o\u0a2b\u0a29war;\u692alig\u803b\xdf\u40df\u0be1\u3651\u365d\u3660\u12ce\u3673\u3679\0\u367e\u36c2\0\0\0\0\0\u36db\u3703\0\u3709\u376c\0\0\0\u3787\u0272\u3656\0\0\u365bget;\u6316;\u43c4r\xeb\u0e5f\u0180aey\u3666\u366b\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uc000\ud835\udd31\u0200eiko\u3686\u369d\u36b5\u36bc\u01f2\u368b\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369b\u43b8ym;\u43d1\u0100cn\u36a2\u36b2k\u0100as\u36a8\u36aeppro\xf8\u12c1im\xbb\u12acs\xf0\u129e\u0100as\u36ba\u36ae\xf0\u12c1rn\u803b\xfe\u40fe\u01ec\u031f\u36c6\u22e7es\u8180\xd7;bd\u36cf\u36d0\u36d8\u40d7\u0100;a\u190f\u36d5r;\u6a31;\u6a30\u0180eps\u36e1\u36e3\u3700\xe1\u2a4d\u0200;bcf\u0486\u36ec\u36f0\u36f4ot;\u6336ir;\u6af1\u0100;o\u36f9\u36fc\uc000\ud835\udd65rk;\u6ada\xe1\u3362rime;\u6034\u0180aip\u370f\u3712\u3764d\xe5\u1248\u0380adempst\u3721\u374d\u3740\u3751\u3757\u375c\u375fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65b5own\xbb\u1dbbeft\u0100;e\u2800\u373e\xf1\u092e;\u625cight\u0100;e\u32aa\u374b\xf1\u105aot;\u65ecinus;\u6a3alus;\u6a39b;\u69cdime;\u6a3bezium;\u63e2\u0180cht\u3772\u377d\u3781\u0100ry\u3777\u377b;\uc000\ud835\udcc9;\u4446cy;\u445brok;\u4167\u0100io\u378b\u378ex\xf4\u1777head\u0100lr\u3797\u37a0eftarro\xf7\u084fightarrow\xbb\u0f5d\u0900AHabcdfghlmoprstuw\u37d0\u37d3\u37d7\u37e4\u37f0\u37fc\u380e\u381c\u3823\u3834\u3851\u385d\u386b\u38a9\u38cc\u38d2\u38ea\u38f6r\xf2\u03edar;\u6963\u0100cr\u37dc\u37e2ute\u803b\xfa\u40fa\xf2\u1150r\u01e3\u37ea\0\u37edy;\u445eve;\u416d\u0100iy\u37f5\u37farc\u803b\xfb\u40fb;\u4443\u0180abh\u3803\u3806\u380br\xf2\u13adlac;\u4171a\xf2\u13c3\u0100ir\u3813\u3818sht;\u697e;\uc000\ud835\udd32rave\u803b\xf9\u40f9\u0161\u3827\u3831r\u0100lr\u382c\u382e\xbb\u0957\xbb\u1083lk;\u6580\u0100ct\u3839\u384d\u026f\u383f\0\0\u384arn\u0100;e\u3845\u3846\u631cr\xbb\u3846op;\u630fri;\u65f8\u0100al\u3856\u385acr;\u416b\u80bb\xa8\u0349\u0100gp\u3862\u3866on;\u4173f;\uc000\ud835\udd66\u0300adhlsu\u114b\u3878\u387d\u1372\u3891\u38a0own\xe1\u13b3arpoon\u0100lr\u3888\u388cef\xf4\u382digh\xf4\u382fi\u0180;hl\u3899\u389a\u389c\u43c5\xbb\u13faon\xbb\u389aparrows;\u61c8\u0180cit\u38b0\u38c4\u38c8\u026f\u38b6\0\0\u38c1rn\u0100;e\u38bc\u38bd\u631dr\xbb\u38bdop;\u630eng;\u416fri;\u65f9cr;\uc000\ud835\udcca\u0180dir\u38d9\u38dd\u38e2ot;\u62f0lde;\u4169i\u0100;f\u3730\u38e8\xbb\u1813\u0100am\u38ef\u38f2r\xf2\u38a8l\u803b\xfc\u40fcangle;\u69a7\u0780ABDacdeflnoprsz\u391c\u391f\u3929\u392d\u39b5\u39b8\u39bd\u39df\u39e4\u39e8\u39f3\u39f9\u39fd\u3a01\u3a20r\xf2\u03f7ar\u0100;v\u3926\u3927\u6ae8;\u6ae9as\xe8\u03e1\u0100nr\u3932\u3937grt;\u699c\u0380eknprst\u34e3\u3946\u394b\u3952\u395d\u3964\u3996app\xe1\u2415othin\xe7\u1e96\u0180hir\u34eb\u2ec8\u3959op\xf4\u2fb5\u0100;h\u13b7\u3962\xef\u318d\u0100iu\u3969\u396dgm\xe1\u33b3\u0100bp\u3972\u3984setneq\u0100;q\u397d\u3980\uc000\u228a\ufe00;\uc000\u2acb\ufe00setneq\u0100;q\u398f\u3992\uc000\u228b\ufe00;\uc000\u2acc\ufe00\u0100hr\u399b\u399fet\xe1\u369ciangle\u0100lr\u39aa\u39afeft\xbb\u0925ight\xbb\u1051y;\u4432ash\xbb\u1036\u0180elr\u39c4\u39d2\u39d7\u0180;be\u2dea\u39cb\u39cfar;\u62bbq;\u625alip;\u62ee\u0100bt\u39dc\u1468a\xf2\u1469r;\uc000\ud835\udd33tr\xe9\u39aesu\u0100bp\u39ef\u39f1\xbb\u0d1c\xbb\u0d59pf;\uc000\ud835\udd67ro\xf0\u0efbtr\xe9\u39b4\u0100cu\u3a06\u3a0br;\uc000\ud835\udccb\u0100bp\u3a10\u3a18n\u0100Ee\u3980\u3a16\xbb\u397en\u0100Ee\u3992\u3a1e\xbb\u3990igzag;\u699a\u0380cefoprs\u3a36\u3a3b\u3a56\u3a5b\u3a54\u3a61\u3a6airc;\u4175\u0100di\u3a40\u3a51\u0100bg\u3a45\u3a49ar;\u6a5fe\u0100;q\u15fa\u3a4f;\u6259erp;\u6118r;\uc000\ud835\udd34pf;\uc000\ud835\udd68\u0100;e\u1479\u3a66at\xe8\u1479cr;\uc000\ud835\udccc\u0ae3\u178e\u3a87\0\u3a8b\0\u3a90\u3a9b\0\0\u3a9d\u3aa8\u3aab\u3aaf\0\0\u3ac3\u3ace\0\u3ad8\u17dc\u17dftr\xe9\u17d1r;\uc000\ud835\udd35\u0100Aa\u3a94\u3a97r\xf2\u03c3r\xf2\u09f6;\u43be\u0100Aa\u3aa1\u3aa4r\xf2\u03b8r\xf2\u09eba\xf0\u2713is;\u62fb\u0180dpt\u17a4\u3ab5\u3abe\u0100fl\u3aba\u17a9;\uc000\ud835\udd69im\xe5\u17b2\u0100Aa\u3ac7\u3acar\xf2\u03cer\xf2\u0a01\u0100cq\u3ad2\u17b8r;\uc000\ud835\udccd\u0100pt\u17d6\u3adcr\xe9\u17d4\u0400acefiosu\u3af0\u3afd\u3b08\u3b0c\u3b11\u3b15\u3b1b\u3b21c\u0100uy\u3af6\u3afbte\u803b\xfd\u40fd;\u444f\u0100iy\u3b02\u3b06rc;\u4177;\u444bn\u803b\xa5\u40a5r;\uc000\ud835\udd36cy;\u4457pf;\uc000\ud835\udd6acr;\uc000\ud835\udcce\u0100cm\u3b26\u3b29y;\u444el\u803b\xff\u40ff\u0500acdefhiosw\u3b42\u3b48\u3b54\u3b58\u3b64\u3b69\u3b6d\u3b74\u3b7a\u3b80cute;\u417a\u0100ay\u3b4d\u3b52ron;\u417e;\u4437ot;\u417c\u0100et\u3b5d\u3b61tr\xe6\u155fa;\u43b6r;\uc000\ud835\udd37cy;\u4436grarr;\u61ddpf;\uc000\ud835\udd6bcr;\uc000\ud835\udccf\u0100jn\u3b85\u3b87;\u600dj;\u600c"
|
|
26
|
-
.split("")
|
|
27
|
-
.map((c) => c.charCodeAt(0)));
|
|
28
|
-
|
|
29
|
-
// Generated using scripts/write-decode-map.ts
|
|
30
|
-
const xmlDecodeTree = /* #__PURE__ */ new Uint16Array(
|
|
31
|
-
// prettier-ignore
|
|
32
|
-
/* #__PURE__ */ "\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022"
|
|
33
|
-
.split("")
|
|
34
|
-
.map((c) => c.charCodeAt(0)));
|
|
35
|
-
|
|
36
22
|
// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134
|
|
37
23
|
var _a;
|
|
38
24
|
const decodeMap = new Map([
|
|
@@ -71,7 +57,7 @@ const decodeMap = new Map([
|
|
|
71
57
|
*/
|
|
72
58
|
const fromCodePoint =
|
|
73
59
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins
|
|
74
|
-
(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a :
|
|
60
|
+
(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : ((codePoint) => {
|
|
75
61
|
let output = "";
|
|
76
62
|
if (codePoint > 65535) {
|
|
77
63
|
codePoint -= 65536;
|
|
@@ -80,7 +66,7 @@ const fromCodePoint =
|
|
|
80
66
|
}
|
|
81
67
|
output += String.fromCharCode(codePoint);
|
|
82
68
|
return output;
|
|
83
|
-
};
|
|
69
|
+
});
|
|
84
70
|
/**
|
|
85
71
|
* Replace the given code point with a replacement character if it is a
|
|
86
72
|
* surrogate or is outside the valid range. Otherwise return the code
|
|
@@ -95,6 +81,58 @@ function replaceCodePoint(codePoint) {
|
|
|
95
81
|
return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;
|
|
96
82
|
}
|
|
97
83
|
|
|
84
|
+
/*
|
|
85
|
+
* Shared base64 decode helper for generated decode data.
|
|
86
|
+
* Assumes global atob is available.
|
|
87
|
+
*/
|
|
88
|
+
function decodeBase64(input) {
|
|
89
|
+
const binary =
|
|
90
|
+
// eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
91
|
+
typeof atob === "function"
|
|
92
|
+
? // Browser (and Node >=16)
|
|
93
|
+
// eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
94
|
+
atob(input)
|
|
95
|
+
: // Older Node versions (<16)
|
|
96
|
+
// eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
97
|
+
typeof Buffer.from === "function"
|
|
98
|
+
? // eslint-disable-next-line n/no-unsupported-features/node-builtins
|
|
99
|
+
Buffer.from(input, "base64").toString("binary")
|
|
100
|
+
: // eslint-disable-next-line unicorn/no-new-buffer, n/no-deprecated-api
|
|
101
|
+
new Buffer(input, "base64").toString("binary");
|
|
102
|
+
const evenLength = binary.length & -2; // Round down to even length
|
|
103
|
+
const out = new Uint16Array(evenLength / 2);
|
|
104
|
+
for (let index = 0, outIndex = 0; index < evenLength; index += 2) {
|
|
105
|
+
const lo = binary.charCodeAt(index);
|
|
106
|
+
const hi = binary.charCodeAt(index + 1);
|
|
107
|
+
out[outIndex++] = lo | (hi << 8);
|
|
108
|
+
}
|
|
109
|
+
return out;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// Generated using scripts/write-decode-map.ts
|
|
113
|
+
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");
|
|
114
|
+
|
|
115
|
+
// Generated using scripts/write-decode-map.ts
|
|
116
|
+
const xmlDecodeTree = /* #__PURE__ */ decodeBase64("AAJhZ2xxBwARABMAFQBtAg0AAAAAAA8AcAAmYG8AcwAnYHQAPmB0ADxg9SFvdCJg");
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Bit flags & masks for the binary trie encoding used for entity decoding.
|
|
120
|
+
*
|
|
121
|
+
* Bit layout (16 bits total):
|
|
122
|
+
* 15..14 VALUE_LENGTH (+1 encoding; 0 => no value)
|
|
123
|
+
* 13 FLAG13. If valueLength>0: semicolon required flag (implicit ';').
|
|
124
|
+
* If valueLength==0: compact run flag.
|
|
125
|
+
* 12..7 BRANCH_LENGTH Branch length (0 => single branch in 6..0 if jumpOffset==char) OR run length (when compact run)
|
|
126
|
+
* 6..0 JUMP_TABLE Jump offset (jump table) OR single-branch char code OR first run char
|
|
127
|
+
*/
|
|
128
|
+
var BinTrieFlags;
|
|
129
|
+
(function (BinTrieFlags) {
|
|
130
|
+
BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
|
|
131
|
+
BinTrieFlags[BinTrieFlags["FLAG13"] = 8192] = "FLAG13";
|
|
132
|
+
BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 8064] = "BRANCH_LENGTH";
|
|
133
|
+
BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE";
|
|
134
|
+
})(BinTrieFlags || (BinTrieFlags = {}));
|
|
135
|
+
|
|
98
136
|
var CharCodes$1;
|
|
99
137
|
(function (CharCodes) {
|
|
100
138
|
CharCodes[CharCodes["NUM"] = 35] = "NUM";
|
|
@@ -112,12 +150,6 @@ var CharCodes$1;
|
|
|
112
150
|
})(CharCodes$1 || (CharCodes$1 = {}));
|
|
113
151
|
/** Bit that needs to be set to convert an upper case ASCII character to lower case */
|
|
114
152
|
const TO_LOWER_BIT = 32;
|
|
115
|
-
var BinTrieFlags;
|
|
116
|
-
(function (BinTrieFlags) {
|
|
117
|
-
BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH";
|
|
118
|
-
BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH";
|
|
119
|
-
BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE";
|
|
120
|
-
})(BinTrieFlags || (BinTrieFlags = {}));
|
|
121
153
|
function isNumber$1(code) {
|
|
122
154
|
return code >= CharCodes$1.ZERO && code <= CharCodes$1.NINE;
|
|
123
155
|
}
|
|
@@ -162,6 +194,7 @@ var DecodingMode;
|
|
|
162
194
|
class EntityDecoder {
|
|
163
195
|
constructor(
|
|
164
196
|
/** The tree used to decode entities. */
|
|
197
|
+
// biome-ignore lint/correctness/noUnusedPrivateClassMembers: False positive
|
|
165
198
|
decodeTree,
|
|
166
199
|
/**
|
|
167
200
|
* The function that is called when a codepoint is decoded.
|
|
@@ -195,6 +228,8 @@ class EntityDecoder {
|
|
|
195
228
|
this.excess = 1;
|
|
196
229
|
/** The mode in which the decoder is operating. */
|
|
197
230
|
this.decodeMode = DecodingMode.Strict;
|
|
231
|
+
/** The number of characters that have been consumed in the current run. */
|
|
232
|
+
this.runConsumed = 0;
|
|
198
233
|
}
|
|
199
234
|
/** Resets the instance to make it reusable. */
|
|
200
235
|
startEntity(decodeMode) {
|
|
@@ -204,6 +239,7 @@ class EntityDecoder {
|
|
|
204
239
|
this.treeIndex = 0;
|
|
205
240
|
this.excess = 1;
|
|
206
241
|
this.consumed = 1;
|
|
242
|
+
this.runConsumed = 0;
|
|
207
243
|
}
|
|
208
244
|
/**
|
|
209
245
|
* Write an entity to the decoder. This can be called multiple times with partial entities.
|
|
@@ -262,15 +298,6 @@ class EntityDecoder {
|
|
|
262
298
|
this.state = EntityDecoderState.NumericDecimal;
|
|
263
299
|
return this.stateNumericDecimal(input, offset);
|
|
264
300
|
}
|
|
265
|
-
addToNumericResult(input, start, end, base) {
|
|
266
|
-
if (start !== end) {
|
|
267
|
-
const digitCount = end - start;
|
|
268
|
-
this.result =
|
|
269
|
-
this.result * Math.pow(base, digitCount) +
|
|
270
|
-
Number.parseInt(input.substr(start, digitCount), base);
|
|
271
|
-
this.consumed += digitCount;
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
301
|
/**
|
|
275
302
|
* Parses a hexadecimal numeric entity.
|
|
276
303
|
*
|
|
@@ -281,19 +308,22 @@ class EntityDecoder {
|
|
|
281
308
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
282
309
|
*/
|
|
283
310
|
stateNumericHex(input, offset) {
|
|
284
|
-
const startIndex = offset;
|
|
285
311
|
while (offset < input.length) {
|
|
286
312
|
const char = input.charCodeAt(offset);
|
|
287
313
|
if (isNumber$1(char) || isHexadecimalCharacter(char)) {
|
|
288
|
-
|
|
314
|
+
// Convert hex digit to value (0-15); 'a'/'A' -> 10.
|
|
315
|
+
const digit = char <= CharCodes$1.NINE
|
|
316
|
+
? char - CharCodes$1.ZERO
|
|
317
|
+
: (char | TO_LOWER_BIT) - CharCodes$1.LOWER_A + 10;
|
|
318
|
+
this.result = this.result * 16 + digit;
|
|
319
|
+
this.consumed++;
|
|
320
|
+
offset++;
|
|
289
321
|
}
|
|
290
322
|
else {
|
|
291
|
-
this.addToNumericResult(input, startIndex, offset, 16);
|
|
292
323
|
return this.emitNumericEntity(char, 3);
|
|
293
324
|
}
|
|
294
325
|
}
|
|
295
|
-
|
|
296
|
-
return -1;
|
|
326
|
+
return -1; // Incomplete entity
|
|
297
327
|
}
|
|
298
328
|
/**
|
|
299
329
|
* Parses a decimal numeric entity.
|
|
@@ -305,19 +335,18 @@ class EntityDecoder {
|
|
|
305
335
|
* @returns The number of characters that were consumed, or -1 if the entity is incomplete.
|
|
306
336
|
*/
|
|
307
337
|
stateNumericDecimal(input, offset) {
|
|
308
|
-
const startIndex = offset;
|
|
309
338
|
while (offset < input.length) {
|
|
310
339
|
const char = input.charCodeAt(offset);
|
|
311
340
|
if (isNumber$1(char)) {
|
|
312
|
-
|
|
341
|
+
this.result = this.result * 10 + (char - CharCodes$1.ZERO);
|
|
342
|
+
this.consumed++;
|
|
343
|
+
offset++;
|
|
313
344
|
}
|
|
314
345
|
else {
|
|
315
|
-
this.addToNumericResult(input, startIndex, offset, 10);
|
|
316
346
|
return this.emitNumericEntity(char, 2);
|
|
317
347
|
}
|
|
318
348
|
}
|
|
319
|
-
|
|
320
|
-
return -1;
|
|
349
|
+
return -1; // Incomplete entity
|
|
321
350
|
}
|
|
322
351
|
/**
|
|
323
352
|
* Validate and emit a numeric entity.
|
|
@@ -367,10 +396,64 @@ class EntityDecoder {
|
|
|
367
396
|
stateNamedEntity(input, offset) {
|
|
368
397
|
const { decodeTree } = this;
|
|
369
398
|
let current = decodeTree[this.treeIndex];
|
|
370
|
-
// The
|
|
399
|
+
// The length is the number of bytes of the value, including the current byte.
|
|
371
400
|
let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
372
|
-
|
|
401
|
+
while (offset < input.length) {
|
|
402
|
+
// Handle compact runs (possibly inline): valueLength == 0 and SEMI_REQUIRED bit set.
|
|
403
|
+
if (valueLength === 0 && (current & BinTrieFlags.FLAG13) !== 0) {
|
|
404
|
+
const runLength = (current & BinTrieFlags.BRANCH_LENGTH) >> 7; /* 2..63 */
|
|
405
|
+
// If we are starting a run, check the first char.
|
|
406
|
+
if (this.runConsumed === 0) {
|
|
407
|
+
const firstChar = current & BinTrieFlags.JUMP_TABLE;
|
|
408
|
+
if (input.charCodeAt(offset) !== firstChar) {
|
|
409
|
+
return this.result === 0
|
|
410
|
+
? 0
|
|
411
|
+
: this.emitNotTerminatedNamedEntity();
|
|
412
|
+
}
|
|
413
|
+
offset++;
|
|
414
|
+
this.excess++;
|
|
415
|
+
this.runConsumed++;
|
|
416
|
+
}
|
|
417
|
+
// Check remaining characters in the run.
|
|
418
|
+
while (this.runConsumed < runLength) {
|
|
419
|
+
if (offset >= input.length) {
|
|
420
|
+
return -1;
|
|
421
|
+
}
|
|
422
|
+
const charIndexInPacked = this.runConsumed - 1;
|
|
423
|
+
const packedWord = decodeTree[this.treeIndex + 1 + (charIndexInPacked >> 1)];
|
|
424
|
+
const expectedChar = charIndexInPacked % 2 === 0
|
|
425
|
+
? packedWord & 0xff
|
|
426
|
+
: (packedWord >> 8) & 0xff;
|
|
427
|
+
if (input.charCodeAt(offset) !== expectedChar) {
|
|
428
|
+
this.runConsumed = 0;
|
|
429
|
+
return this.result === 0
|
|
430
|
+
? 0
|
|
431
|
+
: this.emitNotTerminatedNamedEntity();
|
|
432
|
+
}
|
|
433
|
+
offset++;
|
|
434
|
+
this.excess++;
|
|
435
|
+
this.runConsumed++;
|
|
436
|
+
}
|
|
437
|
+
this.runConsumed = 0;
|
|
438
|
+
this.treeIndex += 1 + (runLength >> 1);
|
|
439
|
+
current = decodeTree[this.treeIndex];
|
|
440
|
+
valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;
|
|
441
|
+
}
|
|
442
|
+
if (offset >= input.length)
|
|
443
|
+
break;
|
|
373
444
|
const char = input.charCodeAt(offset);
|
|
445
|
+
/*
|
|
446
|
+
* Implicit semicolon handling for nodes that require a semicolon but
|
|
447
|
+
* don't have an explicit ';' branch stored in the trie. If we have
|
|
448
|
+
* a value on the current node, it requires a semicolon, and the
|
|
449
|
+
* current input character is a semicolon, emit the entity using the
|
|
450
|
+
* current node (without descending further).
|
|
451
|
+
*/
|
|
452
|
+
if (char === CharCodes$1.SEMI &&
|
|
453
|
+
valueLength !== 0 &&
|
|
454
|
+
(current & BinTrieFlags.FLAG13) !== 0) {
|
|
455
|
+
return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
|
|
456
|
+
}
|
|
374
457
|
this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);
|
|
375
458
|
if (this.treeIndex < 0) {
|
|
376
459
|
return this.result === 0 ||
|
|
@@ -392,12 +475,16 @@ class EntityDecoder {
|
|
|
392
475
|
return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);
|
|
393
476
|
}
|
|
394
477
|
// If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.
|
|
395
|
-
if (this.decodeMode !== DecodingMode.Strict
|
|
478
|
+
if (this.decodeMode !== DecodingMode.Strict &&
|
|
479
|
+
(current & BinTrieFlags.FLAG13) === 0) {
|
|
396
480
|
this.result = this.treeIndex;
|
|
397
481
|
this.consumed += this.excess;
|
|
398
482
|
this.excess = 0;
|
|
399
483
|
}
|
|
400
484
|
}
|
|
485
|
+
// Increment offset & excess for next iteration
|
|
486
|
+
offset++;
|
|
487
|
+
this.excess++;
|
|
401
488
|
}
|
|
402
489
|
return -1;
|
|
403
490
|
}
|
|
@@ -426,7 +513,8 @@ class EntityDecoder {
|
|
|
426
513
|
emitNamedEntityData(result, valueLength, consumed) {
|
|
427
514
|
const { decodeTree } = this;
|
|
428
515
|
this.emitCodePoint(valueLength === 1
|
|
429
|
-
? decodeTree[result] &
|
|
516
|
+
? decodeTree[result] &
|
|
517
|
+
~(BinTrieFlags.VALUE_LENGTH | BinTrieFlags.FLAG13)
|
|
430
518
|
: decodeTree[result + 1], consumed);
|
|
431
519
|
if (valueLength === 3) {
|
|
432
520
|
// For multi-byte values, we need to emit the second byte.
|
|
@@ -494,21 +582,27 @@ function determineBranch(decodeTree, current, nodeIndex, char) {
|
|
|
494
582
|
? -1
|
|
495
583
|
: decodeTree[nodeIndex + value] - 1;
|
|
496
584
|
}
|
|
497
|
-
// Case 3: Multiple branches encoded in dictionary
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
585
|
+
// Case 3: Multiple branches encoded in packed dictionary (two keys per uint16)
|
|
586
|
+
const packedKeySlots = (branchCount + 1) >> 1;
|
|
587
|
+
/*
|
|
588
|
+
* Treat packed keys as a virtual sorted array of length `branchCount`.
|
|
589
|
+
* Key(i) = low byte for even i, high byte for odd i in slot i>>1.
|
|
590
|
+
*/
|
|
591
|
+
let lo = 0;
|
|
592
|
+
let hi = branchCount - 1;
|
|
501
593
|
while (lo <= hi) {
|
|
502
594
|
const mid = (lo + hi) >>> 1;
|
|
503
|
-
const
|
|
504
|
-
|
|
595
|
+
const slot = mid >> 1;
|
|
596
|
+
const packed = decodeTree[nodeIndex + slot];
|
|
597
|
+
const midKey = (packed >> ((mid & 1) * 8)) & 0xff;
|
|
598
|
+
if (midKey < char) {
|
|
505
599
|
lo = mid + 1;
|
|
506
600
|
}
|
|
507
|
-
else if (
|
|
601
|
+
else if (midKey > char) {
|
|
508
602
|
hi = mid - 1;
|
|
509
603
|
}
|
|
510
604
|
else {
|
|
511
|
-
return decodeTree[
|
|
605
|
+
return decodeTree[nodeIndex + packedKeySlots + mid];
|
|
512
606
|
}
|
|
513
607
|
}
|
|
514
608
|
return -1;
|
|
@@ -1090,15 +1184,22 @@ class Tokenizer {
|
|
|
1090
1184
|
: DecodingMode.Attribute);
|
|
1091
1185
|
}
|
|
1092
1186
|
stateInEntity() {
|
|
1093
|
-
const
|
|
1187
|
+
const indexInBuffer = this.index - this.offset;
|
|
1188
|
+
const length = this.entityDecoder.write(this.buffer, indexInBuffer);
|
|
1094
1189
|
// If `length` is positive, we are done with the entity.
|
|
1095
1190
|
if (length >= 0) {
|
|
1096
1191
|
this.state = this.baseState;
|
|
1097
1192
|
if (length === 0) {
|
|
1098
|
-
this.index
|
|
1193
|
+
this.index -= 1;
|
|
1099
1194
|
}
|
|
1100
1195
|
}
|
|
1101
1196
|
else {
|
|
1197
|
+
if (indexInBuffer < this.buffer.length &&
|
|
1198
|
+
this.buffer.charCodeAt(indexInBuffer) === CharCodes.Amp) {
|
|
1199
|
+
this.state = this.baseState;
|
|
1200
|
+
this.index -= 1;
|
|
1201
|
+
return;
|
|
1202
|
+
}
|
|
1102
1203
|
// Mark buffer as consumed.
|
|
1103
1204
|
this.index = this.offset + this.buffer.length - 1;
|
|
1104
1205
|
}
|
|
@@ -5673,7 +5774,7 @@ function encode(decoded) {
|
|
|
5673
5774
|
return writer.flush();
|
|
5674
5775
|
}
|
|
5675
5776
|
|
|
5676
|
-
|
|
5777
|
+
class BitSet {
|
|
5677
5778
|
constructor(arg) {
|
|
5678
5779
|
this.bits = arg instanceof BitSet ? arg.bits.slice() : [];
|
|
5679
5780
|
}
|
|
@@ -5685,9 +5786,9 @@ let BitSet$1 = class BitSet {
|
|
|
5685
5786
|
has(n) {
|
|
5686
5787
|
return !!(this.bits[n >> 5] & (1 << (n & 31)));
|
|
5687
5788
|
}
|
|
5688
|
-
}
|
|
5789
|
+
}
|
|
5689
5790
|
|
|
5690
|
-
|
|
5791
|
+
class Chunk {
|
|
5691
5792
|
constructor(start, end, content) {
|
|
5692
5793
|
this.start = start;
|
|
5693
5794
|
this.end = end;
|
|
@@ -5864,9 +5965,9 @@ let Chunk$1 = class Chunk {
|
|
|
5864
5965
|
if (this.outro.length) return true;
|
|
5865
5966
|
}
|
|
5866
5967
|
}
|
|
5867
|
-
}
|
|
5968
|
+
}
|
|
5868
5969
|
|
|
5869
|
-
function getBtoa
|
|
5970
|
+
function getBtoa() {
|
|
5870
5971
|
if (typeof globalThis !== 'undefined' && typeof globalThis.btoa === 'function') {
|
|
5871
5972
|
return (str) => globalThis.btoa(unescape(encodeURIComponent(str)));
|
|
5872
5973
|
} else if (typeof Buffer === 'function') {
|
|
@@ -5878,9 +5979,9 @@ function getBtoa$1() {
|
|
|
5878
5979
|
}
|
|
5879
5980
|
}
|
|
5880
5981
|
|
|
5881
|
-
const btoa
|
|
5982
|
+
const btoa = /*#__PURE__*/ getBtoa();
|
|
5882
5983
|
|
|
5883
|
-
|
|
5984
|
+
class SourceMap {
|
|
5884
5985
|
constructor(properties) {
|
|
5885
5986
|
this.version = 3;
|
|
5886
5987
|
this.file = properties.file;
|
|
@@ -5901,11 +6002,11 @@ let SourceMap$1 = class SourceMap {
|
|
|
5901
6002
|
}
|
|
5902
6003
|
|
|
5903
6004
|
toUrl() {
|
|
5904
|
-
return 'data:application/json;charset=utf-8;base64,' + btoa
|
|
6005
|
+
return 'data:application/json;charset=utf-8;base64,' + btoa(this.toString());
|
|
5905
6006
|
}
|
|
5906
|
-
}
|
|
6007
|
+
}
|
|
5907
6008
|
|
|
5908
|
-
function guessIndent
|
|
6009
|
+
function guessIndent(code) {
|
|
5909
6010
|
const lines = code.split('\n');
|
|
5910
6011
|
|
|
5911
6012
|
const tabbed = lines.filter((line) => /^\t+/.test(line));
|
|
@@ -5931,7 +6032,7 @@ function guessIndent$1(code) {
|
|
|
5931
6032
|
return new Array(min + 1).join(' ');
|
|
5932
6033
|
}
|
|
5933
6034
|
|
|
5934
|
-
function getRelativePath
|
|
6035
|
+
function getRelativePath(from, to) {
|
|
5935
6036
|
const fromParts = from.split(/[/\\]/);
|
|
5936
6037
|
const toParts = to.split(/[/\\]/);
|
|
5937
6038
|
|
|
@@ -5950,13 +6051,13 @@ function getRelativePath$1(from, to) {
|
|
|
5950
6051
|
return fromParts.concat(toParts).join('/');
|
|
5951
6052
|
}
|
|
5952
6053
|
|
|
5953
|
-
const toString
|
|
6054
|
+
const toString = Object.prototype.toString;
|
|
5954
6055
|
|
|
5955
|
-
function isObject
|
|
5956
|
-
return toString
|
|
6056
|
+
function isObject(thing) {
|
|
6057
|
+
return toString.call(thing) === '[object Object]';
|
|
5957
6058
|
}
|
|
5958
6059
|
|
|
5959
|
-
function getLocator
|
|
6060
|
+
function getLocator(source) {
|
|
5960
6061
|
const originalLines = source.split('\n');
|
|
5961
6062
|
const lineOffsets = [];
|
|
5962
6063
|
|
|
@@ -5982,9 +6083,9 @@ function getLocator$1(source) {
|
|
|
5982
6083
|
};
|
|
5983
6084
|
}
|
|
5984
6085
|
|
|
5985
|
-
const wordRegex
|
|
6086
|
+
const wordRegex = /\w/;
|
|
5986
6087
|
|
|
5987
|
-
|
|
6088
|
+
class Mappings {
|
|
5988
6089
|
constructor(hires) {
|
|
5989
6090
|
this.hires = hires;
|
|
5990
6091
|
this.generatedCodeLine = 0;
|
|
@@ -6052,7 +6153,7 @@ let Mappings$1 = class Mappings {
|
|
|
6052
6153
|
|
|
6053
6154
|
if (this.hires === 'boundary') {
|
|
6054
6155
|
// in hires "boundary", group segments per word boundary than per char
|
|
6055
|
-
if (wordRegex
|
|
6156
|
+
if (wordRegex.test(original[originalCharIndex])) {
|
|
6056
6157
|
// for first char in the boundary found, start the boundary by pushing a segment
|
|
6057
6158
|
if (!charInHiresBoundary) {
|
|
6058
6159
|
this.rawSegments.push(segment);
|
|
@@ -6094,19 +6195,19 @@ let Mappings$1 = class Mappings {
|
|
|
6094
6195
|
|
|
6095
6196
|
this.generatedCodeColumn += lines[lines.length - 1].length;
|
|
6096
6197
|
}
|
|
6097
|
-
}
|
|
6198
|
+
}
|
|
6098
6199
|
|
|
6099
|
-
const n
|
|
6200
|
+
const n = '\n';
|
|
6100
6201
|
|
|
6101
|
-
const warned
|
|
6202
|
+
const warned = {
|
|
6102
6203
|
insertLeft: false,
|
|
6103
6204
|
insertRight: false,
|
|
6104
6205
|
storeName: false,
|
|
6105
6206
|
};
|
|
6106
6207
|
|
|
6107
|
-
|
|
6208
|
+
class MagicString {
|
|
6108
6209
|
constructor(string, options = {}) {
|
|
6109
|
-
const chunk = new Chunk
|
|
6210
|
+
const chunk = new Chunk(0, string.length, string);
|
|
6110
6211
|
|
|
6111
6212
|
Object.defineProperties(this, {
|
|
6112
6213
|
original: { writable: true, value: string },
|
|
@@ -6119,7 +6220,7 @@ let MagicString$1 = class MagicString {
|
|
|
6119
6220
|
byEnd: { writable: true, value: {} },
|
|
6120
6221
|
filename: { writable: true, value: options.filename },
|
|
6121
6222
|
indentExclusionRanges: { writable: true, value: options.indentExclusionRanges },
|
|
6122
|
-
sourcemapLocations: { writable: true, value: new BitSet
|
|
6223
|
+
sourcemapLocations: { writable: true, value: new BitSet() },
|
|
6123
6224
|
storedNames: { writable: true, value: {} },
|
|
6124
6225
|
indentStr: { writable: true, value: undefined },
|
|
6125
6226
|
ignoreList: { writable: true, value: options.ignoreList },
|
|
@@ -6204,7 +6305,7 @@ let MagicString$1 = class MagicString {
|
|
|
6204
6305
|
cloned.indentExclusionRanges = this.indentExclusionRanges.slice();
|
|
6205
6306
|
}
|
|
6206
6307
|
|
|
6207
|
-
cloned.sourcemapLocations = new BitSet
|
|
6308
|
+
cloned.sourcemapLocations = new BitSet(this.sourcemapLocations);
|
|
6208
6309
|
|
|
6209
6310
|
cloned.intro = this.intro;
|
|
6210
6311
|
cloned.outro = this.outro;
|
|
@@ -6217,9 +6318,9 @@ let MagicString$1 = class MagicString {
|
|
|
6217
6318
|
|
|
6218
6319
|
const sourceIndex = 0;
|
|
6219
6320
|
const names = Object.keys(this.storedNames);
|
|
6220
|
-
const mappings = new Mappings
|
|
6321
|
+
const mappings = new Mappings(options.hires);
|
|
6221
6322
|
|
|
6222
|
-
const locate = getLocator
|
|
6323
|
+
const locate = getLocator(this.original);
|
|
6223
6324
|
|
|
6224
6325
|
if (this.intro) {
|
|
6225
6326
|
mappings.advance(this.intro);
|
|
@@ -6251,7 +6352,7 @@ let MagicString$1 = class MagicString {
|
|
|
6251
6352
|
return {
|
|
6252
6353
|
file: options.file ? options.file.split(/[/\\]/).pop() : undefined,
|
|
6253
6354
|
sources: [
|
|
6254
|
-
options.source ? getRelativePath
|
|
6355
|
+
options.source ? getRelativePath(options.file || '', options.source) : options.file || '',
|
|
6255
6356
|
],
|
|
6256
6357
|
sourcesContent: options.includeContent ? [this.original] : undefined,
|
|
6257
6358
|
names,
|
|
@@ -6261,12 +6362,12 @@ let MagicString$1 = class MagicString {
|
|
|
6261
6362
|
}
|
|
6262
6363
|
|
|
6263
6364
|
generateMap(options) {
|
|
6264
|
-
return new SourceMap
|
|
6365
|
+
return new SourceMap(this.generateDecodedMap(options));
|
|
6265
6366
|
}
|
|
6266
6367
|
|
|
6267
6368
|
_ensureindentStr() {
|
|
6268
6369
|
if (this.indentStr === undefined) {
|
|
6269
|
-
this.indentStr = guessIndent
|
|
6370
|
+
this.indentStr = guessIndent(this.original);
|
|
6270
6371
|
}
|
|
6271
6372
|
}
|
|
6272
6373
|
|
|
@@ -6283,7 +6384,7 @@ let MagicString$1 = class MagicString {
|
|
|
6283
6384
|
indent(indentStr, options) {
|
|
6284
6385
|
const pattern = /^[^\r\n]/gm;
|
|
6285
6386
|
|
|
6286
|
-
if (isObject
|
|
6387
|
+
if (isObject(indentStr)) {
|
|
6287
6388
|
options = indentStr;
|
|
6288
6389
|
indentStr = undefined;
|
|
6289
6390
|
}
|
|
@@ -6375,22 +6476,22 @@ let MagicString$1 = class MagicString {
|
|
|
6375
6476
|
}
|
|
6376
6477
|
|
|
6377
6478
|
insertLeft(index, content) {
|
|
6378
|
-
if (!warned
|
|
6479
|
+
if (!warned.insertLeft) {
|
|
6379
6480
|
console.warn(
|
|
6380
6481
|
'magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead',
|
|
6381
6482
|
);
|
|
6382
|
-
warned
|
|
6483
|
+
warned.insertLeft = true;
|
|
6383
6484
|
}
|
|
6384
6485
|
|
|
6385
6486
|
return this.appendLeft(index, content);
|
|
6386
6487
|
}
|
|
6387
6488
|
|
|
6388
6489
|
insertRight(index, content) {
|
|
6389
|
-
if (!warned
|
|
6490
|
+
if (!warned.insertRight) {
|
|
6390
6491
|
console.warn(
|
|
6391
6492
|
'magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead',
|
|
6392
6493
|
);
|
|
6393
|
-
warned
|
|
6494
|
+
warned.insertRight = true;
|
|
6394
6495
|
}
|
|
6395
6496
|
|
|
6396
6497
|
return this.prependRight(index, content);
|
|
@@ -6463,11 +6564,11 @@ let MagicString$1 = class MagicString {
|
|
|
6463
6564
|
this._split(end);
|
|
6464
6565
|
|
|
6465
6566
|
if (options === true) {
|
|
6466
|
-
if (!warned
|
|
6567
|
+
if (!warned.storeName) {
|
|
6467
6568
|
console.warn(
|
|
6468
6569
|
'The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string',
|
|
6469
6570
|
);
|
|
6470
|
-
warned
|
|
6571
|
+
warned.storeName = true;
|
|
6471
6572
|
}
|
|
6472
6573
|
|
|
6473
6574
|
options = { storeName: true };
|
|
@@ -6500,7 +6601,7 @@ let MagicString$1 = class MagicString {
|
|
|
6500
6601
|
first.edit(content, storeName, !overwrite);
|
|
6501
6602
|
} else {
|
|
6502
6603
|
// must be inserting at the end
|
|
6503
|
-
const newChunk = new Chunk
|
|
6604
|
+
const newChunk = new Chunk(start, end, '').edit(content, storeName);
|
|
6504
6605
|
|
|
6505
6606
|
// TODO last chunk in the array may not be the last chunk, if it's moved...
|
|
6506
6607
|
last.next = newChunk;
|
|
@@ -6619,30 +6720,30 @@ let MagicString$1 = class MagicString {
|
|
|
6619
6720
|
}
|
|
6620
6721
|
|
|
6621
6722
|
lastLine() {
|
|
6622
|
-
let lineIndex = this.outro.lastIndexOf(n
|
|
6723
|
+
let lineIndex = this.outro.lastIndexOf(n);
|
|
6623
6724
|
if (lineIndex !== -1) return this.outro.substr(lineIndex + 1);
|
|
6624
6725
|
let lineStr = this.outro;
|
|
6625
6726
|
let chunk = this.lastChunk;
|
|
6626
6727
|
do {
|
|
6627
6728
|
if (chunk.outro.length > 0) {
|
|
6628
|
-
lineIndex = chunk.outro.lastIndexOf(n
|
|
6729
|
+
lineIndex = chunk.outro.lastIndexOf(n);
|
|
6629
6730
|
if (lineIndex !== -1) return chunk.outro.substr(lineIndex + 1) + lineStr;
|
|
6630
6731
|
lineStr = chunk.outro + lineStr;
|
|
6631
6732
|
}
|
|
6632
6733
|
|
|
6633
6734
|
if (chunk.content.length > 0) {
|
|
6634
|
-
lineIndex = chunk.content.lastIndexOf(n
|
|
6735
|
+
lineIndex = chunk.content.lastIndexOf(n);
|
|
6635
6736
|
if (lineIndex !== -1) return chunk.content.substr(lineIndex + 1) + lineStr;
|
|
6636
6737
|
lineStr = chunk.content + lineStr;
|
|
6637
6738
|
}
|
|
6638
6739
|
|
|
6639
6740
|
if (chunk.intro.length > 0) {
|
|
6640
|
-
lineIndex = chunk.intro.lastIndexOf(n
|
|
6741
|
+
lineIndex = chunk.intro.lastIndexOf(n);
|
|
6641
6742
|
if (lineIndex !== -1) return chunk.intro.substr(lineIndex + 1) + lineStr;
|
|
6642
6743
|
lineStr = chunk.intro + lineStr;
|
|
6643
6744
|
}
|
|
6644
6745
|
} while ((chunk = chunk.previous));
|
|
6645
|
-
lineIndex = this.intro.lastIndexOf(n
|
|
6746
|
+
lineIndex = this.intro.lastIndexOf(n);
|
|
6646
6747
|
if (lineIndex !== -1) return this.intro.substr(lineIndex + 1) + lineStr;
|
|
6647
6748
|
return this.intro + lineStr;
|
|
6648
6749
|
}
|
|
@@ -6732,7 +6833,7 @@ let MagicString$1 = class MagicString {
|
|
|
6732
6833
|
_splitChunk(chunk, index) {
|
|
6733
6834
|
if (chunk.edited && chunk.content.length) {
|
|
6734
6835
|
// zero-length edited chunks are a special case (overlapping replacements)
|
|
6735
|
-
const loc = getLocator
|
|
6836
|
+
const loc = getLocator(this.original)(index);
|
|
6736
6837
|
throw new Error(
|
|
6737
6838
|
`Cannot split a chunk that has already been edited (${loc.line}:${loc.column} – "${chunk.original}")`,
|
|
6738
6839
|
);
|
|
@@ -6964,7 +7065,7 @@ let MagicString$1 = class MagicString {
|
|
|
6964
7065
|
|
|
6965
7066
|
return this._replaceRegexp(searchValue, replacement);
|
|
6966
7067
|
}
|
|
6967
|
-
}
|
|
7068
|
+
}
|
|
6968
7069
|
|
|
6969
7070
|
const HASH_CHARACTER_LENGTH = 16;
|
|
6970
7071
|
function hashM2c2kitAssets(rootDir, cwd = "") {
|
|
@@ -6973,7 +7074,7 @@ function hashM2c2kitAssets(rootDir, cwd = "") {
|
|
|
6973
7074
|
name: "hash-m2c2kit-assets",
|
|
6974
7075
|
renderChunk: {
|
|
6975
7076
|
handler(code) {
|
|
6976
|
-
const magicString = new MagicString
|
|
7077
|
+
const magicString = new MagicString(code);
|
|
6977
7078
|
magicString.replace(
|
|
6978
7079
|
new RegExp("__NO_M2C2KIT_MANIFEST_JSON_URL__", "g"),
|
|
6979
7080
|
"manifest.json"
|
|
@@ -7178,7 +7279,7 @@ function restoreImportMeta(pattern = "import_meta = {};", replacement = "import_
|
|
|
7178
7279
|
name: "restore-import-meta",
|
|
7179
7280
|
renderChunk: {
|
|
7180
7281
|
handler(code) {
|
|
7181
|
-
const magicString = new MagicString
|
|
7282
|
+
const magicString = new MagicString(code);
|
|
7182
7283
|
magicString.replace(new RegExp(pattern, "g"), replacement);
|
|
7183
7284
|
return {
|
|
7184
7285
|
code: magicString.toString(),
|
|
@@ -7331,11 +7432,14 @@ function requireNodeModulesPaths () {
|
|
|
7331
7432
|
var path = path$3;
|
|
7332
7433
|
var parse = path.parse || requirePathParse(); // eslint-disable-line global-require
|
|
7333
7434
|
|
|
7435
|
+
var driveLetterRegex = /^([A-Za-z]:)/;
|
|
7436
|
+
var uncPathRegex = /^\\\\/;
|
|
7437
|
+
|
|
7334
7438
|
var getNodeModulesDirs = function getNodeModulesDirs(absoluteStart, modules) {
|
|
7335
7439
|
var prefix = '/';
|
|
7336
|
-
if (
|
|
7440
|
+
if (driveLetterRegex.test(absoluteStart)) {
|
|
7337
7441
|
prefix = '';
|
|
7338
|
-
} else if (
|
|
7442
|
+
} else if (uncPathRegex.test(absoluteStart)) {
|
|
7339
7443
|
prefix = '\\\\';
|
|
7340
7444
|
}
|
|
7341
7445
|
|
|
@@ -7545,7 +7649,7 @@ var http2$1 = ">= 8.8";
|
|
|
7545
7649
|
var https$1 = true;
|
|
7546
7650
|
var inspector$1 = ">= 8";
|
|
7547
7651
|
var _linklist$1 = "< 8";
|
|
7548
|
-
var module$
|
|
7652
|
+
var module$2 = true;
|
|
7549
7653
|
var net$1 = true;
|
|
7550
7654
|
var os$1 = true;
|
|
7551
7655
|
var path$2 = true;
|
|
@@ -7730,7 +7834,7 @@ var require$$1$1 = {
|
|
|
7730
7834
|
">= 19"
|
|
7731
7835
|
],
|
|
7732
7836
|
_linklist: _linklist$1,
|
|
7733
|
-
module: module$
|
|
7837
|
+
module: module$2,
|
|
7734
7838
|
"node:module": [
|
|
7735
7839
|
">= 14.18 && < 15",
|
|
7736
7840
|
">= 16"
|
|
@@ -8051,6 +8155,10 @@ function requireAsync$6 () {
|
|
|
8051
8155
|
|
|
8052
8156
|
var realpathFS = process.platform !== 'win32' && fs.realpath && typeof fs.realpath.native === 'function' ? fs.realpath.native : fs.realpath;
|
|
8053
8157
|
|
|
8158
|
+
var relativePathRegex = /^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/;
|
|
8159
|
+
var windowsDriveRegex = /^\w:[/\\]*$/;
|
|
8160
|
+
var nodeModulesRegex = /[/\\]node_modules[/\\]*$/;
|
|
8161
|
+
|
|
8054
8162
|
var homedir = getHomedir();
|
|
8055
8163
|
var defaultPaths = function () {
|
|
8056
8164
|
return [
|
|
@@ -8167,10 +8275,10 @@ function requireAsync$6 () {
|
|
|
8167
8275
|
|
|
8168
8276
|
var res;
|
|
8169
8277
|
function init(basedir) {
|
|
8170
|
-
if (
|
|
8278
|
+
if (relativePathRegex.test(x)) {
|
|
8171
8279
|
res = path.resolve(basedir, x);
|
|
8172
8280
|
if (x === '.' || x === '..' || x.slice(-1) === '/') res += '/';
|
|
8173
|
-
if (
|
|
8281
|
+
if (x.slice(-1) === '/' && res === basedir) {
|
|
8174
8282
|
loadAsDirectory(res, opts.package, onfile);
|
|
8175
8283
|
} else loadAsFile(res, opts.package, onfile);
|
|
8176
8284
|
} else if (includeCoreModules && isCore(x)) {
|
|
@@ -8258,10 +8366,10 @@ function requireAsync$6 () {
|
|
|
8258
8366
|
|
|
8259
8367
|
function loadpkg(dir, cb) {
|
|
8260
8368
|
if (dir === '' || dir === '/') return cb(null);
|
|
8261
|
-
if (process.platform === 'win32' &&
|
|
8369
|
+
if (process.platform === 'win32' && windowsDriveRegex.test(dir)) {
|
|
8262
8370
|
return cb(null);
|
|
8263
8371
|
}
|
|
8264
|
-
if (
|
|
8372
|
+
if (nodeModulesRegex.test(dir)) return cb(null);
|
|
8265
8373
|
|
|
8266
8374
|
maybeRealpath(realpath, dir, opts, function (unwrapErr, pkgdir) {
|
|
8267
8375
|
if (unwrapErr) return loadpkg(path.dirname(dir), cb);
|
|
@@ -8405,7 +8513,7 @@ var http2 = ">= 8.8";
|
|
|
8405
8513
|
var https = true;
|
|
8406
8514
|
var inspector = ">= 8";
|
|
8407
8515
|
var _linklist = "< 8";
|
|
8408
|
-
var module = true;
|
|
8516
|
+
var module$1 = true;
|
|
8409
8517
|
var net = true;
|
|
8410
8518
|
var os = true;
|
|
8411
8519
|
var path$1 = true;
|
|
@@ -8590,7 +8698,7 @@ var require$$1 = {
|
|
|
8590
8698
|
">= 19"
|
|
8591
8699
|
],
|
|
8592
8700
|
_linklist: _linklist,
|
|
8593
|
-
module: module,
|
|
8701
|
+
module: module$1,
|
|
8594
8702
|
"node:module": [
|
|
8595
8703
|
">= 14.18 && < 15",
|
|
8596
8704
|
">= 16"
|
|
@@ -8654,7 +8762,10 @@ var require$$1 = {
|
|
|
8654
8762
|
">= 21.7"
|
|
8655
8763
|
],
|
|
8656
8764
|
smalloc: smalloc,
|
|
8657
|
-
"node:sqlite":
|
|
8765
|
+
"node:sqlite": [
|
|
8766
|
+
">= 22.13 && < 23",
|
|
8767
|
+
">= 23.4"
|
|
8768
|
+
],
|
|
8658
8769
|
_stream_duplex: _stream_duplex,
|
|
8659
8770
|
"node:_stream_duplex": [
|
|
8660
8771
|
">= 14.18 && < 15",
|
|
@@ -8865,6 +8976,10 @@ function requireSync$6 () {
|
|
|
8865
8976
|
|
|
8866
8977
|
var realpathFS = process.platform !== 'win32' && fs.realpathSync && typeof fs.realpathSync.native === 'function' ? fs.realpathSync.native : fs.realpathSync;
|
|
8867
8978
|
|
|
8979
|
+
var relativePathRegex = /^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/;
|
|
8980
|
+
var windowsDriveRegex = /^\w:[/\\]*$/;
|
|
8981
|
+
var nodeModulesRegex = /[/\\]node_modules[/\\]*$/;
|
|
8982
|
+
|
|
8868
8983
|
var homedir = getHomedir();
|
|
8869
8984
|
var defaultPaths = function () {
|
|
8870
8985
|
return [
|
|
@@ -8953,7 +9068,7 @@ function requireSync$6 () {
|
|
|
8953
9068
|
// ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory
|
|
8954
9069
|
var absoluteStart = maybeRealpathSync(realpathSync, path.resolve(basedir), opts);
|
|
8955
9070
|
|
|
8956
|
-
if (
|
|
9071
|
+
if (relativePathRegex.test(x)) {
|
|
8957
9072
|
var res = path.resolve(absoluteStart, x);
|
|
8958
9073
|
if (x === '.' || x === '..' || x.slice(-1) === '/') res += '/';
|
|
8959
9074
|
var m = loadAsFileSync(res) || loadAsDirectorySync(res);
|
|
@@ -8994,10 +9109,10 @@ function requireSync$6 () {
|
|
|
8994
9109
|
|
|
8995
9110
|
function loadpkg(dir) {
|
|
8996
9111
|
if (dir === '' || dir === '/') return;
|
|
8997
|
-
if (process.platform === 'win32' &&
|
|
9112
|
+
if (process.platform === 'win32' && windowsDriveRegex.test(dir)) {
|
|
8998
9113
|
return;
|
|
8999
9114
|
}
|
|
9000
|
-
if (
|
|
9115
|
+
if (nodeModulesRegex.test(dir)) return;
|
|
9001
9116
|
|
|
9002
9117
|
var pkgfile = path.join(maybeRealpathSync(realpathSync, dir, opts), 'package.json');
|
|
9003
9118
|
|
|
@@ -11584,9 +11699,9 @@ var hasRequiredUtils$4;
|
|
|
11584
11699
|
function requireUtils$4 () {
|
|
11585
11700
|
if (hasRequiredUtils$4) return utils$3;
|
|
11586
11701
|
hasRequiredUtils$4 = 1;
|
|
11587
|
-
(function (exports) {
|
|
11702
|
+
(function (exports$1) {
|
|
11588
11703
|
|
|
11589
|
-
exports.isInteger = num => {
|
|
11704
|
+
exports$1.isInteger = num => {
|
|
11590
11705
|
if (typeof num === 'number') {
|
|
11591
11706
|
return Number.isInteger(num);
|
|
11592
11707
|
}
|
|
@@ -11600,15 +11715,15 @@ function requireUtils$4 () {
|
|
|
11600
11715
|
* Find a node of the given type
|
|
11601
11716
|
*/
|
|
11602
11717
|
|
|
11603
|
-
exports.find = (node, type) => node.nodes.find(node => node.type === type);
|
|
11718
|
+
exports$1.find = (node, type) => node.nodes.find(node => node.type === type);
|
|
11604
11719
|
|
|
11605
11720
|
/**
|
|
11606
11721
|
* Find a node of the given type
|
|
11607
11722
|
*/
|
|
11608
11723
|
|
|
11609
|
-
exports.exceedsLimit = (min, max, step = 1, limit) => {
|
|
11724
|
+
exports$1.exceedsLimit = (min, max, step = 1, limit) => {
|
|
11610
11725
|
if (limit === false) return false;
|
|
11611
|
-
if (!exports.isInteger(min) || !exports.isInteger(max)) return false;
|
|
11726
|
+
if (!exports$1.isInteger(min) || !exports$1.isInteger(max)) return false;
|
|
11612
11727
|
return ((Number(max) - Number(min)) / Number(step)) >= limit;
|
|
11613
11728
|
};
|
|
11614
11729
|
|
|
@@ -11616,7 +11731,7 @@ function requireUtils$4 () {
|
|
|
11616
11731
|
* Escape the given node with '\\' before node.value
|
|
11617
11732
|
*/
|
|
11618
11733
|
|
|
11619
|
-
exports.escapeNode = (block, n = 0, type) => {
|
|
11734
|
+
exports$1.escapeNode = (block, n = 0, type) => {
|
|
11620
11735
|
const node = block.nodes[n];
|
|
11621
11736
|
if (!node) return;
|
|
11622
11737
|
|
|
@@ -11632,7 +11747,7 @@ function requireUtils$4 () {
|
|
|
11632
11747
|
* Returns true if the given brace node should be enclosed in literal braces
|
|
11633
11748
|
*/
|
|
11634
11749
|
|
|
11635
|
-
exports.encloseBrace = node => {
|
|
11750
|
+
exports$1.encloseBrace = node => {
|
|
11636
11751
|
if (node.type !== 'brace') return false;
|
|
11637
11752
|
if ((node.commas >> 0 + node.ranges >> 0) === 0) {
|
|
11638
11753
|
node.invalid = true;
|
|
@@ -11645,7 +11760,7 @@ function requireUtils$4 () {
|
|
|
11645
11760
|
* Returns true if a brace node is invalid.
|
|
11646
11761
|
*/
|
|
11647
11762
|
|
|
11648
|
-
exports.isInvalidBrace = block => {
|
|
11763
|
+
exports$1.isInvalidBrace = block => {
|
|
11649
11764
|
if (block.type !== 'brace') return false;
|
|
11650
11765
|
if (block.invalid === true || block.dollar) return true;
|
|
11651
11766
|
if ((block.commas >> 0 + block.ranges >> 0) === 0) {
|
|
@@ -11663,7 +11778,7 @@ function requireUtils$4 () {
|
|
|
11663
11778
|
* Returns true if a node is an open or close node
|
|
11664
11779
|
*/
|
|
11665
11780
|
|
|
11666
|
-
exports.isOpenOrClose = node => {
|
|
11781
|
+
exports$1.isOpenOrClose = node => {
|
|
11667
11782
|
if (node.type === 'open' || node.type === 'close') {
|
|
11668
11783
|
return true;
|
|
11669
11784
|
}
|
|
@@ -11674,7 +11789,7 @@ function requireUtils$4 () {
|
|
|
11674
11789
|
* Reduce an array of text nodes.
|
|
11675
11790
|
*/
|
|
11676
11791
|
|
|
11677
|
-
exports.reduce = nodes => nodes.reduce((acc, node) => {
|
|
11792
|
+
exports$1.reduce = nodes => nodes.reduce((acc, node) => {
|
|
11678
11793
|
if (node.type === 'text') acc.push(node.value);
|
|
11679
11794
|
if (node.type === 'range') node.type = 'text';
|
|
11680
11795
|
return acc;
|
|
@@ -11684,7 +11799,7 @@ function requireUtils$4 () {
|
|
|
11684
11799
|
* Flatten an array
|
|
11685
11800
|
*/
|
|
11686
11801
|
|
|
11687
|
-
exports.flatten = (...args) => {
|
|
11802
|
+
exports$1.flatten = (...args) => {
|
|
11688
11803
|
const result = [];
|
|
11689
11804
|
|
|
11690
11805
|
const flat = arr => {
|
|
@@ -13292,7 +13407,7 @@ var hasRequiredUtils$3;
|
|
|
13292
13407
|
function requireUtils$3 () {
|
|
13293
13408
|
if (hasRequiredUtils$3) return utils$2;
|
|
13294
13409
|
hasRequiredUtils$3 = 1;
|
|
13295
|
-
(function (exports) {
|
|
13410
|
+
(function (exports$1) {
|
|
13296
13411
|
|
|
13297
13412
|
const path = path$3;
|
|
13298
13413
|
const win32 = process.platform === 'win32';
|
|
@@ -13303,19 +13418,19 @@ function requireUtils$3 () {
|
|
|
13303
13418
|
REGEX_SPECIAL_CHARS_GLOBAL
|
|
13304
13419
|
} = requireConstants$3();
|
|
13305
13420
|
|
|
13306
|
-
exports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);
|
|
13307
|
-
exports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);
|
|
13308
|
-
exports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);
|
|
13309
|
-
exports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\$1');
|
|
13310
|
-
exports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');
|
|
13421
|
+
exports$1.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);
|
|
13422
|
+
exports$1.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);
|
|
13423
|
+
exports$1.isRegexChar = str => str.length === 1 && exports$1.hasRegexChars(str);
|
|
13424
|
+
exports$1.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\$1');
|
|
13425
|
+
exports$1.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');
|
|
13311
13426
|
|
|
13312
|
-
exports.removeBackslashes = str => {
|
|
13427
|
+
exports$1.removeBackslashes = str => {
|
|
13313
13428
|
return str.replace(REGEX_REMOVE_BACKSLASH, match => {
|
|
13314
13429
|
return match === '\\' ? '' : match;
|
|
13315
13430
|
});
|
|
13316
13431
|
};
|
|
13317
13432
|
|
|
13318
|
-
exports.supportsLookbehinds = () => {
|
|
13433
|
+
exports$1.supportsLookbehinds = () => {
|
|
13319
13434
|
const segs = process.version.slice(1).split('.').map(Number);
|
|
13320
13435
|
if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) {
|
|
13321
13436
|
return true;
|
|
@@ -13323,21 +13438,21 @@ function requireUtils$3 () {
|
|
|
13323
13438
|
return false;
|
|
13324
13439
|
};
|
|
13325
13440
|
|
|
13326
|
-
exports.isWindows = options => {
|
|
13441
|
+
exports$1.isWindows = options => {
|
|
13327
13442
|
if (options && typeof options.windows === 'boolean') {
|
|
13328
13443
|
return options.windows;
|
|
13329
13444
|
}
|
|
13330
13445
|
return win32 === true || path.sep === '\\';
|
|
13331
13446
|
};
|
|
13332
13447
|
|
|
13333
|
-
exports.escapeLast = (input, char, lastIdx) => {
|
|
13448
|
+
exports$1.escapeLast = (input, char, lastIdx) => {
|
|
13334
13449
|
const idx = input.lastIndexOf(char, lastIdx);
|
|
13335
13450
|
if (idx === -1) return input;
|
|
13336
|
-
if (input[idx - 1] === '\\') return exports.escapeLast(input, char, idx - 1);
|
|
13451
|
+
if (input[idx - 1] === '\\') return exports$1.escapeLast(input, char, idx - 1);
|
|
13337
13452
|
return `${input.slice(0, idx)}\\${input.slice(idx)}`;
|
|
13338
13453
|
};
|
|
13339
13454
|
|
|
13340
|
-
exports.removePrefix = (input, state = {}) => {
|
|
13455
|
+
exports$1.removePrefix = (input, state = {}) => {
|
|
13341
13456
|
let output = input;
|
|
13342
13457
|
if (output.startsWith('./')) {
|
|
13343
13458
|
output = output.slice(2);
|
|
@@ -13346,7 +13461,7 @@ function requireUtils$3 () {
|
|
|
13346
13461
|
return output;
|
|
13347
13462
|
};
|
|
13348
13463
|
|
|
13349
|
-
exports.wrapOutput = (input, state = {}, options = {}) => {
|
|
13464
|
+
exports$1.wrapOutput = (input, state = {}, options = {}) => {
|
|
13350
13465
|
const prepend = options.contains ? '' : '^';
|
|
13351
13466
|
const append = options.contains ? '' : '$';
|
|
13352
13467
|
|
|
@@ -16203,11 +16318,11 @@ var hasRequiredFs$2;
|
|
|
16203
16318
|
function requireFs$2 () {
|
|
16204
16319
|
if (hasRequiredFs$2) return fs$2;
|
|
16205
16320
|
hasRequiredFs$2 = 1;
|
|
16206
|
-
(function (exports) {
|
|
16207
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16208
|
-
exports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = void 0;
|
|
16321
|
+
(function (exports$1) {
|
|
16322
|
+
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
16323
|
+
exports$1.createFileSystemAdapter = exports$1.FILE_SYSTEM_ADAPTER = void 0;
|
|
16209
16324
|
const fs = require$$0;
|
|
16210
|
-
exports.FILE_SYSTEM_ADAPTER = {
|
|
16325
|
+
exports$1.FILE_SYSTEM_ADAPTER = {
|
|
16211
16326
|
lstat: fs.lstat,
|
|
16212
16327
|
stat: fs.stat,
|
|
16213
16328
|
lstatSync: fs.lstatSync,
|
|
@@ -16215,11 +16330,11 @@ function requireFs$2 () {
|
|
|
16215
16330
|
};
|
|
16216
16331
|
function createFileSystemAdapter(fsMethods) {
|
|
16217
16332
|
if (fsMethods === undefined) {
|
|
16218
|
-
return exports.FILE_SYSTEM_ADAPTER;
|
|
16333
|
+
return exports$1.FILE_SYSTEM_ADAPTER;
|
|
16219
16334
|
}
|
|
16220
|
-
return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods);
|
|
16335
|
+
return Object.assign(Object.assign({}, exports$1.FILE_SYSTEM_ADAPTER), fsMethods);
|
|
16221
16336
|
}
|
|
16222
|
-
exports.createFileSystemAdapter = createFileSystemAdapter;
|
|
16337
|
+
exports$1.createFileSystemAdapter = createFileSystemAdapter;
|
|
16223
16338
|
} (fs$2));
|
|
16224
16339
|
return fs$2;
|
|
16225
16340
|
}
|
|
@@ -16633,11 +16748,11 @@ var hasRequiredFs;
|
|
|
16633
16748
|
function requireFs () {
|
|
16634
16749
|
if (hasRequiredFs) return fs;
|
|
16635
16750
|
hasRequiredFs = 1;
|
|
16636
|
-
(function (exports) {
|
|
16637
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16638
|
-
exports.createFileSystemAdapter = exports.FILE_SYSTEM_ADAPTER = void 0;
|
|
16751
|
+
(function (exports$1) {
|
|
16752
|
+
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
16753
|
+
exports$1.createFileSystemAdapter = exports$1.FILE_SYSTEM_ADAPTER = void 0;
|
|
16639
16754
|
const fs = require$$0;
|
|
16640
|
-
exports.FILE_SYSTEM_ADAPTER = {
|
|
16755
|
+
exports$1.FILE_SYSTEM_ADAPTER = {
|
|
16641
16756
|
lstat: fs.lstat,
|
|
16642
16757
|
stat: fs.stat,
|
|
16643
16758
|
lstatSync: fs.lstatSync,
|
|
@@ -16647,11 +16762,11 @@ function requireFs () {
|
|
|
16647
16762
|
};
|
|
16648
16763
|
function createFileSystemAdapter(fsMethods) {
|
|
16649
16764
|
if (fsMethods === undefined) {
|
|
16650
|
-
return exports.FILE_SYSTEM_ADAPTER;
|
|
16765
|
+
return exports$1.FILE_SYSTEM_ADAPTER;
|
|
16651
16766
|
}
|
|
16652
|
-
return Object.assign(Object.assign({}, exports.FILE_SYSTEM_ADAPTER), fsMethods);
|
|
16767
|
+
return Object.assign(Object.assign({}, exports$1.FILE_SYSTEM_ADAPTER), fsMethods);
|
|
16653
16768
|
}
|
|
16654
|
-
exports.createFileSystemAdapter = createFileSystemAdapter;
|
|
16769
|
+
exports$1.createFileSystemAdapter = createFileSystemAdapter;
|
|
16655
16770
|
} (fs));
|
|
16656
16771
|
return fs;
|
|
16657
16772
|
}
|
|
@@ -18155,9 +18270,9 @@ var hasRequiredSettings;
|
|
|
18155
18270
|
function requireSettings () {
|
|
18156
18271
|
if (hasRequiredSettings) return settings;
|
|
18157
18272
|
hasRequiredSettings = 1;
|
|
18158
|
-
(function (exports) {
|
|
18159
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18160
|
-
exports.DEFAULT_FILE_SYSTEM_ADAPTER = void 0;
|
|
18273
|
+
(function (exports$1) {
|
|
18274
|
+
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
18275
|
+
exports$1.DEFAULT_FILE_SYSTEM_ADAPTER = void 0;
|
|
18161
18276
|
const fs = require$$0;
|
|
18162
18277
|
const os = os$2;
|
|
18163
18278
|
/**
|
|
@@ -18165,7 +18280,7 @@ function requireSettings () {
|
|
|
18165
18280
|
* https://github.com/nodejs/node/blob/7faeddf23a98c53896f8b574a6e66589e8fb1eb8/lib/os.js#L106-L107
|
|
18166
18281
|
*/
|
|
18167
18282
|
const CPU_COUNT = Math.max(os.cpus().length, 1);
|
|
18168
|
-
exports.DEFAULT_FILE_SYSTEM_ADAPTER = {
|
|
18283
|
+
exports$1.DEFAULT_FILE_SYSTEM_ADAPTER = {
|
|
18169
18284
|
lstat: fs.lstat,
|
|
18170
18285
|
lstatSync: fs.lstatSync,
|
|
18171
18286
|
stat: fs.stat,
|
|
@@ -18210,10 +18325,10 @@ function requireSettings () {
|
|
|
18210
18325
|
return option === undefined ? value : option;
|
|
18211
18326
|
}
|
|
18212
18327
|
_getFileSystemMethods(methods = {}) {
|
|
18213
|
-
return Object.assign(Object.assign({}, exports.DEFAULT_FILE_SYSTEM_ADAPTER), methods);
|
|
18328
|
+
return Object.assign(Object.assign({}, exports$1.DEFAULT_FILE_SYSTEM_ADAPTER), methods);
|
|
18214
18329
|
}
|
|
18215
18330
|
}
|
|
18216
|
-
exports.default = Settings;
|
|
18331
|
+
exports$1.default = Settings;
|
|
18217
18332
|
} (settings));
|
|
18218
18333
|
return settings;
|
|
18219
18334
|
}
|
|
@@ -20080,7 +20195,7 @@ var hasRequiredRe;
|
|
|
20080
20195
|
function requireRe () {
|
|
20081
20196
|
if (hasRequiredRe) return re.exports;
|
|
20082
20197
|
hasRequiredRe = 1;
|
|
20083
|
-
(function (module, exports) {
|
|
20198
|
+
(function (module, exports$1) {
|
|
20084
20199
|
|
|
20085
20200
|
const {
|
|
20086
20201
|
MAX_SAFE_COMPONENT_LENGTH,
|
|
@@ -20088,14 +20203,14 @@ function requireRe () {
|
|
|
20088
20203
|
MAX_LENGTH,
|
|
20089
20204
|
} = requireConstants$1();
|
|
20090
20205
|
const debug = requireDebug();
|
|
20091
|
-
exports = module.exports = {};
|
|
20206
|
+
exports$1 = module.exports = {};
|
|
20092
20207
|
|
|
20093
20208
|
// The actual regexps go on exports.re
|
|
20094
|
-
const re = exports.re = [];
|
|
20095
|
-
const safeRe = exports.safeRe = [];
|
|
20096
|
-
const src = exports.src = [];
|
|
20097
|
-
const safeSrc = exports.safeSrc = [];
|
|
20098
|
-
const t = exports.t = {};
|
|
20209
|
+
const re = exports$1.re = [];
|
|
20210
|
+
const safeRe = exports$1.safeRe = [];
|
|
20211
|
+
const src = exports$1.src = [];
|
|
20212
|
+
const safeSrc = exports$1.safeSrc = [];
|
|
20213
|
+
const t = exports$1.t = {};
|
|
20099
20214
|
let R = 0;
|
|
20100
20215
|
|
|
20101
20216
|
const LETTERDASHNUMBER = '[a-zA-Z0-9-]';
|
|
@@ -20259,7 +20374,7 @@ function requireRe () {
|
|
|
20259
20374
|
createToken('LONETILDE', '(?:~>?)');
|
|
20260
20375
|
|
|
20261
20376
|
createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true);
|
|
20262
|
-
exports.tildeTrimReplace = '$1~';
|
|
20377
|
+
exports$1.tildeTrimReplace = '$1~';
|
|
20263
20378
|
|
|
20264
20379
|
createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`);
|
|
20265
20380
|
createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`);
|
|
@@ -20269,7 +20384,7 @@ function requireRe () {
|
|
|
20269
20384
|
createToken('LONECARET', '(?:\\^)');
|
|
20270
20385
|
|
|
20271
20386
|
createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true);
|
|
20272
|
-
exports.caretTrimReplace = '$1^';
|
|
20387
|
+
exports$1.caretTrimReplace = '$1^';
|
|
20273
20388
|
|
|
20274
20389
|
createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`);
|
|
20275
20390
|
createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`);
|
|
@@ -20282,7 +20397,7 @@ function requireRe () {
|
|
|
20282
20397
|
// it modifies, so that `> 1.2.3` ==> `>1.2.3`
|
|
20283
20398
|
createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT]
|
|
20284
20399
|
}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true);
|
|
20285
|
-
exports.comparatorTrimReplace = '$1$2$3';
|
|
20400
|
+
exports$1.comparatorTrimReplace = '$1$2$3';
|
|
20286
20401
|
|
|
20287
20402
|
// Something like `1.2.3 - 1.2.4`
|
|
20288
20403
|
// Note that these all use the loose form, because they'll be
|
|
@@ -20341,6 +20456,10 @@ function requireIdentifiers () {
|
|
|
20341
20456
|
|
|
20342
20457
|
const numeric = /^[0-9]+$/;
|
|
20343
20458
|
const compareIdentifiers = (a, b) => {
|
|
20459
|
+
if (typeof a === 'number' && typeof b === 'number') {
|
|
20460
|
+
return a === b ? 0 : a < b ? -1 : 1
|
|
20461
|
+
}
|
|
20462
|
+
|
|
20344
20463
|
const anum = numeric.test(a);
|
|
20345
20464
|
const bnum = numeric.test(b);
|
|
20346
20465
|
|
|
@@ -20483,11 +20602,25 @@ function requireSemver$1 () {
|
|
|
20483
20602
|
other = new SemVer(other, this.options);
|
|
20484
20603
|
}
|
|
20485
20604
|
|
|
20486
|
-
|
|
20487
|
-
|
|
20488
|
-
|
|
20489
|
-
|
|
20490
|
-
|
|
20605
|
+
if (this.major < other.major) {
|
|
20606
|
+
return -1
|
|
20607
|
+
}
|
|
20608
|
+
if (this.major > other.major) {
|
|
20609
|
+
return 1
|
|
20610
|
+
}
|
|
20611
|
+
if (this.minor < other.minor) {
|
|
20612
|
+
return -1
|
|
20613
|
+
}
|
|
20614
|
+
if (this.minor > other.minor) {
|
|
20615
|
+
return 1
|
|
20616
|
+
}
|
|
20617
|
+
if (this.patch < other.patch) {
|
|
20618
|
+
return -1
|
|
20619
|
+
}
|
|
20620
|
+
if (this.patch > other.patch) {
|
|
20621
|
+
return 1
|
|
20622
|
+
}
|
|
20623
|
+
return 0
|
|
20491
20624
|
}
|
|
20492
20625
|
|
|
20493
20626
|
comparePre (other) {
|
|
@@ -21508,6 +21641,7 @@ function requireRange () {
|
|
|
21508
21641
|
// already replaced the hyphen ranges
|
|
21509
21642
|
// turn into a set of JUST comparators.
|
|
21510
21643
|
const parseComparator = (comp, options) => {
|
|
21644
|
+
comp = comp.replace(re[t.BUILD], '');
|
|
21511
21645
|
debug('comp', comp, options);
|
|
21512
21646
|
comp = replaceCarets(comp, options);
|
|
21513
21647
|
debug('caret', comp);
|
|
@@ -23053,7 +23187,7 @@ function addModuleMetadata() {
|
|
|
23053
23187
|
transform: {
|
|
23054
23188
|
async handler(code) {
|
|
23055
23189
|
const pkg = JSON.parse(await readFile("./package.json", "utf8"));
|
|
23056
|
-
const magicString = new MagicString
|
|
23190
|
+
const magicString = new MagicString(code);
|
|
23057
23191
|
magicString.replace(
|
|
23058
23192
|
new RegExp(
|
|
23059
23193
|
"moduleMetadata:\\s*Constants.MODULE_METADATA_PLACEHOLDER",
|
|
@@ -23070,1280 +23204,6 @@ function addModuleMetadata() {
|
|
|
23070
23204
|
};
|
|
23071
23205
|
}
|
|
23072
23206
|
|
|
23073
|
-
class BitSet {
|
|
23074
|
-
constructor(arg) {
|
|
23075
|
-
this.bits = arg instanceof BitSet ? arg.bits.slice() : [];
|
|
23076
|
-
}
|
|
23077
|
-
|
|
23078
|
-
add(n) {
|
|
23079
|
-
this.bits[n >> 5] |= 1 << (n & 31);
|
|
23080
|
-
}
|
|
23081
|
-
|
|
23082
|
-
has(n) {
|
|
23083
|
-
return !!(this.bits[n >> 5] & (1 << (n & 31)));
|
|
23084
|
-
}
|
|
23085
|
-
}
|
|
23086
|
-
|
|
23087
|
-
class Chunk {
|
|
23088
|
-
constructor(start, end, content) {
|
|
23089
|
-
this.start = start;
|
|
23090
|
-
this.end = end;
|
|
23091
|
-
this.original = content;
|
|
23092
|
-
|
|
23093
|
-
this.intro = '';
|
|
23094
|
-
this.outro = '';
|
|
23095
|
-
|
|
23096
|
-
this.content = content;
|
|
23097
|
-
this.storeName = false;
|
|
23098
|
-
this.edited = false;
|
|
23099
|
-
|
|
23100
|
-
{
|
|
23101
|
-
this.previous = null;
|
|
23102
|
-
this.next = null;
|
|
23103
|
-
}
|
|
23104
|
-
}
|
|
23105
|
-
|
|
23106
|
-
appendLeft(content) {
|
|
23107
|
-
this.outro += content;
|
|
23108
|
-
}
|
|
23109
|
-
|
|
23110
|
-
appendRight(content) {
|
|
23111
|
-
this.intro = this.intro + content;
|
|
23112
|
-
}
|
|
23113
|
-
|
|
23114
|
-
clone() {
|
|
23115
|
-
const chunk = new Chunk(this.start, this.end, this.original);
|
|
23116
|
-
|
|
23117
|
-
chunk.intro = this.intro;
|
|
23118
|
-
chunk.outro = this.outro;
|
|
23119
|
-
chunk.content = this.content;
|
|
23120
|
-
chunk.storeName = this.storeName;
|
|
23121
|
-
chunk.edited = this.edited;
|
|
23122
|
-
|
|
23123
|
-
return chunk;
|
|
23124
|
-
}
|
|
23125
|
-
|
|
23126
|
-
contains(index) {
|
|
23127
|
-
return this.start < index && index < this.end;
|
|
23128
|
-
}
|
|
23129
|
-
|
|
23130
|
-
eachNext(fn) {
|
|
23131
|
-
let chunk = this;
|
|
23132
|
-
while (chunk) {
|
|
23133
|
-
fn(chunk);
|
|
23134
|
-
chunk = chunk.next;
|
|
23135
|
-
}
|
|
23136
|
-
}
|
|
23137
|
-
|
|
23138
|
-
eachPrevious(fn) {
|
|
23139
|
-
let chunk = this;
|
|
23140
|
-
while (chunk) {
|
|
23141
|
-
fn(chunk);
|
|
23142
|
-
chunk = chunk.previous;
|
|
23143
|
-
}
|
|
23144
|
-
}
|
|
23145
|
-
|
|
23146
|
-
edit(content, storeName, contentOnly) {
|
|
23147
|
-
this.content = content;
|
|
23148
|
-
if (!contentOnly) {
|
|
23149
|
-
this.intro = '';
|
|
23150
|
-
this.outro = '';
|
|
23151
|
-
}
|
|
23152
|
-
this.storeName = storeName;
|
|
23153
|
-
|
|
23154
|
-
this.edited = true;
|
|
23155
|
-
|
|
23156
|
-
return this;
|
|
23157
|
-
}
|
|
23158
|
-
|
|
23159
|
-
prependLeft(content) {
|
|
23160
|
-
this.outro = content + this.outro;
|
|
23161
|
-
}
|
|
23162
|
-
|
|
23163
|
-
prependRight(content) {
|
|
23164
|
-
this.intro = content + this.intro;
|
|
23165
|
-
}
|
|
23166
|
-
|
|
23167
|
-
reset() {
|
|
23168
|
-
this.intro = '';
|
|
23169
|
-
this.outro = '';
|
|
23170
|
-
if (this.edited) {
|
|
23171
|
-
this.content = this.original;
|
|
23172
|
-
this.storeName = false;
|
|
23173
|
-
this.edited = false;
|
|
23174
|
-
}
|
|
23175
|
-
}
|
|
23176
|
-
|
|
23177
|
-
split(index) {
|
|
23178
|
-
const sliceIndex = index - this.start;
|
|
23179
|
-
|
|
23180
|
-
const originalBefore = this.original.slice(0, sliceIndex);
|
|
23181
|
-
const originalAfter = this.original.slice(sliceIndex);
|
|
23182
|
-
|
|
23183
|
-
this.original = originalBefore;
|
|
23184
|
-
|
|
23185
|
-
const newChunk = new Chunk(index, this.end, originalAfter);
|
|
23186
|
-
newChunk.outro = this.outro;
|
|
23187
|
-
this.outro = '';
|
|
23188
|
-
|
|
23189
|
-
this.end = index;
|
|
23190
|
-
|
|
23191
|
-
if (this.edited) {
|
|
23192
|
-
// after split we should save the edit content record into the correct chunk
|
|
23193
|
-
// to make sure sourcemap correct
|
|
23194
|
-
// For example:
|
|
23195
|
-
// ' test'.trim()
|
|
23196
|
-
// split -> ' ' + 'test'
|
|
23197
|
-
// ✔️ edit -> '' + 'test'
|
|
23198
|
-
// ✖️ edit -> 'test' + ''
|
|
23199
|
-
// TODO is this block necessary?...
|
|
23200
|
-
newChunk.edit('', false);
|
|
23201
|
-
this.content = '';
|
|
23202
|
-
} else {
|
|
23203
|
-
this.content = originalBefore;
|
|
23204
|
-
}
|
|
23205
|
-
|
|
23206
|
-
newChunk.next = this.next;
|
|
23207
|
-
if (newChunk.next) newChunk.next.previous = newChunk;
|
|
23208
|
-
newChunk.previous = this;
|
|
23209
|
-
this.next = newChunk;
|
|
23210
|
-
|
|
23211
|
-
return newChunk;
|
|
23212
|
-
}
|
|
23213
|
-
|
|
23214
|
-
toString() {
|
|
23215
|
-
return this.intro + this.content + this.outro;
|
|
23216
|
-
}
|
|
23217
|
-
|
|
23218
|
-
trimEnd(rx) {
|
|
23219
|
-
this.outro = this.outro.replace(rx, '');
|
|
23220
|
-
if (this.outro.length) return true;
|
|
23221
|
-
|
|
23222
|
-
const trimmed = this.content.replace(rx, '');
|
|
23223
|
-
|
|
23224
|
-
if (trimmed.length) {
|
|
23225
|
-
if (trimmed !== this.content) {
|
|
23226
|
-
this.split(this.start + trimmed.length).edit('', undefined, true);
|
|
23227
|
-
if (this.edited) {
|
|
23228
|
-
// save the change, if it has been edited
|
|
23229
|
-
this.edit(trimmed, this.storeName, true);
|
|
23230
|
-
}
|
|
23231
|
-
}
|
|
23232
|
-
return true;
|
|
23233
|
-
} else {
|
|
23234
|
-
this.edit('', undefined, true);
|
|
23235
|
-
|
|
23236
|
-
this.intro = this.intro.replace(rx, '');
|
|
23237
|
-
if (this.intro.length) return true;
|
|
23238
|
-
}
|
|
23239
|
-
}
|
|
23240
|
-
|
|
23241
|
-
trimStart(rx) {
|
|
23242
|
-
this.intro = this.intro.replace(rx, '');
|
|
23243
|
-
if (this.intro.length) return true;
|
|
23244
|
-
|
|
23245
|
-
const trimmed = this.content.replace(rx, '');
|
|
23246
|
-
|
|
23247
|
-
if (trimmed.length) {
|
|
23248
|
-
if (trimmed !== this.content) {
|
|
23249
|
-
const newChunk = this.split(this.end - trimmed.length);
|
|
23250
|
-
if (this.edited) {
|
|
23251
|
-
// save the change, if it has been edited
|
|
23252
|
-
newChunk.edit(trimmed, this.storeName, true);
|
|
23253
|
-
}
|
|
23254
|
-
this.edit('', undefined, true);
|
|
23255
|
-
}
|
|
23256
|
-
return true;
|
|
23257
|
-
} else {
|
|
23258
|
-
this.edit('', undefined, true);
|
|
23259
|
-
|
|
23260
|
-
this.outro = this.outro.replace(rx, '');
|
|
23261
|
-
if (this.outro.length) return true;
|
|
23262
|
-
}
|
|
23263
|
-
}
|
|
23264
|
-
}
|
|
23265
|
-
|
|
23266
|
-
function getBtoa() {
|
|
23267
|
-
if (typeof globalThis !== 'undefined' && typeof globalThis.btoa === 'function') {
|
|
23268
|
-
return (str) => globalThis.btoa(unescape(encodeURIComponent(str)));
|
|
23269
|
-
} else if (typeof Buffer === 'function') {
|
|
23270
|
-
return (str) => Buffer.from(str, 'utf-8').toString('base64');
|
|
23271
|
-
} else {
|
|
23272
|
-
return () => {
|
|
23273
|
-
throw new Error('Unsupported environment: `window.btoa` or `Buffer` should be supported.');
|
|
23274
|
-
};
|
|
23275
|
-
}
|
|
23276
|
-
}
|
|
23277
|
-
|
|
23278
|
-
const btoa = /*#__PURE__*/ getBtoa();
|
|
23279
|
-
|
|
23280
|
-
class SourceMap {
|
|
23281
|
-
constructor(properties) {
|
|
23282
|
-
this.version = 3;
|
|
23283
|
-
this.file = properties.file;
|
|
23284
|
-
this.sources = properties.sources;
|
|
23285
|
-
this.sourcesContent = properties.sourcesContent;
|
|
23286
|
-
this.names = properties.names;
|
|
23287
|
-
this.mappings = encode(properties.mappings);
|
|
23288
|
-
if (typeof properties.x_google_ignoreList !== 'undefined') {
|
|
23289
|
-
this.x_google_ignoreList = properties.x_google_ignoreList;
|
|
23290
|
-
}
|
|
23291
|
-
if (typeof properties.debugId !== 'undefined') {
|
|
23292
|
-
this.debugId = properties.debugId;
|
|
23293
|
-
}
|
|
23294
|
-
}
|
|
23295
|
-
|
|
23296
|
-
toString() {
|
|
23297
|
-
return JSON.stringify(this);
|
|
23298
|
-
}
|
|
23299
|
-
|
|
23300
|
-
toUrl() {
|
|
23301
|
-
return 'data:application/json;charset=utf-8;base64,' + btoa(this.toString());
|
|
23302
|
-
}
|
|
23303
|
-
}
|
|
23304
|
-
|
|
23305
|
-
function guessIndent(code) {
|
|
23306
|
-
const lines = code.split('\n');
|
|
23307
|
-
|
|
23308
|
-
const tabbed = lines.filter((line) => /^\t+/.test(line));
|
|
23309
|
-
const spaced = lines.filter((line) => /^ {2,}/.test(line));
|
|
23310
|
-
|
|
23311
|
-
if (tabbed.length === 0 && spaced.length === 0) {
|
|
23312
|
-
return null;
|
|
23313
|
-
}
|
|
23314
|
-
|
|
23315
|
-
// More lines tabbed than spaced? Assume tabs, and
|
|
23316
|
-
// default to tabs in the case of a tie (or nothing
|
|
23317
|
-
// to go on)
|
|
23318
|
-
if (tabbed.length >= spaced.length) {
|
|
23319
|
-
return '\t';
|
|
23320
|
-
}
|
|
23321
|
-
|
|
23322
|
-
// Otherwise, we need to guess the multiple
|
|
23323
|
-
const min = spaced.reduce((previous, current) => {
|
|
23324
|
-
const numSpaces = /^ +/.exec(current)[0].length;
|
|
23325
|
-
return Math.min(numSpaces, previous);
|
|
23326
|
-
}, Infinity);
|
|
23327
|
-
|
|
23328
|
-
return new Array(min + 1).join(' ');
|
|
23329
|
-
}
|
|
23330
|
-
|
|
23331
|
-
function getRelativePath(from, to) {
|
|
23332
|
-
const fromParts = from.split(/[/\\]/);
|
|
23333
|
-
const toParts = to.split(/[/\\]/);
|
|
23334
|
-
|
|
23335
|
-
fromParts.pop(); // get dirname
|
|
23336
|
-
|
|
23337
|
-
while (fromParts[0] === toParts[0]) {
|
|
23338
|
-
fromParts.shift();
|
|
23339
|
-
toParts.shift();
|
|
23340
|
-
}
|
|
23341
|
-
|
|
23342
|
-
if (fromParts.length) {
|
|
23343
|
-
let i = fromParts.length;
|
|
23344
|
-
while (i--) fromParts[i] = '..';
|
|
23345
|
-
}
|
|
23346
|
-
|
|
23347
|
-
return fromParts.concat(toParts).join('/');
|
|
23348
|
-
}
|
|
23349
|
-
|
|
23350
|
-
const toString = Object.prototype.toString;
|
|
23351
|
-
|
|
23352
|
-
function isObject(thing) {
|
|
23353
|
-
return toString.call(thing) === '[object Object]';
|
|
23354
|
-
}
|
|
23355
|
-
|
|
23356
|
-
function getLocator(source) {
|
|
23357
|
-
const originalLines = source.split('\n');
|
|
23358
|
-
const lineOffsets = [];
|
|
23359
|
-
|
|
23360
|
-
for (let i = 0, pos = 0; i < originalLines.length; i++) {
|
|
23361
|
-
lineOffsets.push(pos);
|
|
23362
|
-
pos += originalLines[i].length + 1;
|
|
23363
|
-
}
|
|
23364
|
-
|
|
23365
|
-
return function locate(index) {
|
|
23366
|
-
let i = 0;
|
|
23367
|
-
let j = lineOffsets.length;
|
|
23368
|
-
while (i < j) {
|
|
23369
|
-
const m = (i + j) >> 1;
|
|
23370
|
-
if (index < lineOffsets[m]) {
|
|
23371
|
-
j = m;
|
|
23372
|
-
} else {
|
|
23373
|
-
i = m + 1;
|
|
23374
|
-
}
|
|
23375
|
-
}
|
|
23376
|
-
const line = i - 1;
|
|
23377
|
-
const column = index - lineOffsets[line];
|
|
23378
|
-
return { line, column };
|
|
23379
|
-
};
|
|
23380
|
-
}
|
|
23381
|
-
|
|
23382
|
-
const wordRegex = /\w/;
|
|
23383
|
-
|
|
23384
|
-
class Mappings {
|
|
23385
|
-
constructor(hires) {
|
|
23386
|
-
this.hires = hires;
|
|
23387
|
-
this.generatedCodeLine = 0;
|
|
23388
|
-
this.generatedCodeColumn = 0;
|
|
23389
|
-
this.raw = [];
|
|
23390
|
-
this.rawSegments = this.raw[this.generatedCodeLine] = [];
|
|
23391
|
-
this.pending = null;
|
|
23392
|
-
}
|
|
23393
|
-
|
|
23394
|
-
addEdit(sourceIndex, content, loc, nameIndex) {
|
|
23395
|
-
if (content.length) {
|
|
23396
|
-
const contentLengthMinusOne = content.length - 1;
|
|
23397
|
-
let contentLineEnd = content.indexOf('\n', 0);
|
|
23398
|
-
let previousContentLineEnd = -1;
|
|
23399
|
-
// Loop through each line in the content and add a segment, but stop if the last line is empty,
|
|
23400
|
-
// else code afterwards would fill one line too many
|
|
23401
|
-
while (contentLineEnd >= 0 && contentLengthMinusOne > contentLineEnd) {
|
|
23402
|
-
const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];
|
|
23403
|
-
if (nameIndex >= 0) {
|
|
23404
|
-
segment.push(nameIndex);
|
|
23405
|
-
}
|
|
23406
|
-
this.rawSegments.push(segment);
|
|
23407
|
-
|
|
23408
|
-
this.generatedCodeLine += 1;
|
|
23409
|
-
this.raw[this.generatedCodeLine] = this.rawSegments = [];
|
|
23410
|
-
this.generatedCodeColumn = 0;
|
|
23411
|
-
|
|
23412
|
-
previousContentLineEnd = contentLineEnd;
|
|
23413
|
-
contentLineEnd = content.indexOf('\n', contentLineEnd + 1);
|
|
23414
|
-
}
|
|
23415
|
-
|
|
23416
|
-
const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];
|
|
23417
|
-
if (nameIndex >= 0) {
|
|
23418
|
-
segment.push(nameIndex);
|
|
23419
|
-
}
|
|
23420
|
-
this.rawSegments.push(segment);
|
|
23421
|
-
|
|
23422
|
-
this.advance(content.slice(previousContentLineEnd + 1));
|
|
23423
|
-
} else if (this.pending) {
|
|
23424
|
-
this.rawSegments.push(this.pending);
|
|
23425
|
-
this.advance(content);
|
|
23426
|
-
}
|
|
23427
|
-
|
|
23428
|
-
this.pending = null;
|
|
23429
|
-
}
|
|
23430
|
-
|
|
23431
|
-
addUneditedChunk(sourceIndex, chunk, original, loc, sourcemapLocations) {
|
|
23432
|
-
let originalCharIndex = chunk.start;
|
|
23433
|
-
let first = true;
|
|
23434
|
-
// when iterating each char, check if it's in a word boundary
|
|
23435
|
-
let charInHiresBoundary = false;
|
|
23436
|
-
|
|
23437
|
-
while (originalCharIndex < chunk.end) {
|
|
23438
|
-
if (original[originalCharIndex] === '\n') {
|
|
23439
|
-
loc.line += 1;
|
|
23440
|
-
loc.column = 0;
|
|
23441
|
-
this.generatedCodeLine += 1;
|
|
23442
|
-
this.raw[this.generatedCodeLine] = this.rawSegments = [];
|
|
23443
|
-
this.generatedCodeColumn = 0;
|
|
23444
|
-
first = true;
|
|
23445
|
-
charInHiresBoundary = false;
|
|
23446
|
-
} else {
|
|
23447
|
-
if (this.hires || first || sourcemapLocations.has(originalCharIndex)) {
|
|
23448
|
-
const segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];
|
|
23449
|
-
|
|
23450
|
-
if (this.hires === 'boundary') {
|
|
23451
|
-
// in hires "boundary", group segments per word boundary than per char
|
|
23452
|
-
if (wordRegex.test(original[originalCharIndex])) {
|
|
23453
|
-
// for first char in the boundary found, start the boundary by pushing a segment
|
|
23454
|
-
if (!charInHiresBoundary) {
|
|
23455
|
-
this.rawSegments.push(segment);
|
|
23456
|
-
charInHiresBoundary = true;
|
|
23457
|
-
}
|
|
23458
|
-
} else {
|
|
23459
|
-
// for non-word char, end the boundary by pushing a segment
|
|
23460
|
-
this.rawSegments.push(segment);
|
|
23461
|
-
charInHiresBoundary = false;
|
|
23462
|
-
}
|
|
23463
|
-
} else {
|
|
23464
|
-
this.rawSegments.push(segment);
|
|
23465
|
-
}
|
|
23466
|
-
}
|
|
23467
|
-
|
|
23468
|
-
loc.column += 1;
|
|
23469
|
-
this.generatedCodeColumn += 1;
|
|
23470
|
-
first = false;
|
|
23471
|
-
}
|
|
23472
|
-
|
|
23473
|
-
originalCharIndex += 1;
|
|
23474
|
-
}
|
|
23475
|
-
|
|
23476
|
-
this.pending = null;
|
|
23477
|
-
}
|
|
23478
|
-
|
|
23479
|
-
advance(str) {
|
|
23480
|
-
if (!str) return;
|
|
23481
|
-
|
|
23482
|
-
const lines = str.split('\n');
|
|
23483
|
-
|
|
23484
|
-
if (lines.length > 1) {
|
|
23485
|
-
for (let i = 0; i < lines.length - 1; i++) {
|
|
23486
|
-
this.generatedCodeLine++;
|
|
23487
|
-
this.raw[this.generatedCodeLine] = this.rawSegments = [];
|
|
23488
|
-
}
|
|
23489
|
-
this.generatedCodeColumn = 0;
|
|
23490
|
-
}
|
|
23491
|
-
|
|
23492
|
-
this.generatedCodeColumn += lines[lines.length - 1].length;
|
|
23493
|
-
}
|
|
23494
|
-
}
|
|
23495
|
-
|
|
23496
|
-
const n = '\n';
|
|
23497
|
-
|
|
23498
|
-
const warned = {
|
|
23499
|
-
insertLeft: false,
|
|
23500
|
-
insertRight: false,
|
|
23501
|
-
storeName: false,
|
|
23502
|
-
};
|
|
23503
|
-
|
|
23504
|
-
class MagicString {
|
|
23505
|
-
constructor(string, options = {}) {
|
|
23506
|
-
const chunk = new Chunk(0, string.length, string);
|
|
23507
|
-
|
|
23508
|
-
Object.defineProperties(this, {
|
|
23509
|
-
original: { writable: true, value: string },
|
|
23510
|
-
outro: { writable: true, value: '' },
|
|
23511
|
-
intro: { writable: true, value: '' },
|
|
23512
|
-
firstChunk: { writable: true, value: chunk },
|
|
23513
|
-
lastChunk: { writable: true, value: chunk },
|
|
23514
|
-
lastSearchedChunk: { writable: true, value: chunk },
|
|
23515
|
-
byStart: { writable: true, value: {} },
|
|
23516
|
-
byEnd: { writable: true, value: {} },
|
|
23517
|
-
filename: { writable: true, value: options.filename },
|
|
23518
|
-
indentExclusionRanges: { writable: true, value: options.indentExclusionRanges },
|
|
23519
|
-
sourcemapLocations: { writable: true, value: new BitSet() },
|
|
23520
|
-
storedNames: { writable: true, value: {} },
|
|
23521
|
-
indentStr: { writable: true, value: undefined },
|
|
23522
|
-
ignoreList: { writable: true, value: options.ignoreList },
|
|
23523
|
-
offset: { writable: true, value: options.offset || 0 },
|
|
23524
|
-
});
|
|
23525
|
-
|
|
23526
|
-
this.byStart[0] = chunk;
|
|
23527
|
-
this.byEnd[string.length] = chunk;
|
|
23528
|
-
}
|
|
23529
|
-
|
|
23530
|
-
addSourcemapLocation(char) {
|
|
23531
|
-
this.sourcemapLocations.add(char);
|
|
23532
|
-
}
|
|
23533
|
-
|
|
23534
|
-
append(content) {
|
|
23535
|
-
if (typeof content !== 'string') throw new TypeError('outro content must be a string');
|
|
23536
|
-
|
|
23537
|
-
this.outro += content;
|
|
23538
|
-
return this;
|
|
23539
|
-
}
|
|
23540
|
-
|
|
23541
|
-
appendLeft(index, content) {
|
|
23542
|
-
index = index + this.offset;
|
|
23543
|
-
|
|
23544
|
-
if (typeof content !== 'string') throw new TypeError('inserted content must be a string');
|
|
23545
|
-
|
|
23546
|
-
this._split(index);
|
|
23547
|
-
|
|
23548
|
-
const chunk = this.byEnd[index];
|
|
23549
|
-
|
|
23550
|
-
if (chunk) {
|
|
23551
|
-
chunk.appendLeft(content);
|
|
23552
|
-
} else {
|
|
23553
|
-
this.intro += content;
|
|
23554
|
-
}
|
|
23555
|
-
return this;
|
|
23556
|
-
}
|
|
23557
|
-
|
|
23558
|
-
appendRight(index, content) {
|
|
23559
|
-
index = index + this.offset;
|
|
23560
|
-
|
|
23561
|
-
if (typeof content !== 'string') throw new TypeError('inserted content must be a string');
|
|
23562
|
-
|
|
23563
|
-
this._split(index);
|
|
23564
|
-
|
|
23565
|
-
const chunk = this.byStart[index];
|
|
23566
|
-
|
|
23567
|
-
if (chunk) {
|
|
23568
|
-
chunk.appendRight(content);
|
|
23569
|
-
} else {
|
|
23570
|
-
this.outro += content;
|
|
23571
|
-
}
|
|
23572
|
-
return this;
|
|
23573
|
-
}
|
|
23574
|
-
|
|
23575
|
-
clone() {
|
|
23576
|
-
const cloned = new MagicString(this.original, { filename: this.filename, offset: this.offset });
|
|
23577
|
-
|
|
23578
|
-
let originalChunk = this.firstChunk;
|
|
23579
|
-
let clonedChunk = (cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone());
|
|
23580
|
-
|
|
23581
|
-
while (originalChunk) {
|
|
23582
|
-
cloned.byStart[clonedChunk.start] = clonedChunk;
|
|
23583
|
-
cloned.byEnd[clonedChunk.end] = clonedChunk;
|
|
23584
|
-
|
|
23585
|
-
const nextOriginalChunk = originalChunk.next;
|
|
23586
|
-
const nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone();
|
|
23587
|
-
|
|
23588
|
-
if (nextClonedChunk) {
|
|
23589
|
-
clonedChunk.next = nextClonedChunk;
|
|
23590
|
-
nextClonedChunk.previous = clonedChunk;
|
|
23591
|
-
|
|
23592
|
-
clonedChunk = nextClonedChunk;
|
|
23593
|
-
}
|
|
23594
|
-
|
|
23595
|
-
originalChunk = nextOriginalChunk;
|
|
23596
|
-
}
|
|
23597
|
-
|
|
23598
|
-
cloned.lastChunk = clonedChunk;
|
|
23599
|
-
|
|
23600
|
-
if (this.indentExclusionRanges) {
|
|
23601
|
-
cloned.indentExclusionRanges = this.indentExclusionRanges.slice();
|
|
23602
|
-
}
|
|
23603
|
-
|
|
23604
|
-
cloned.sourcemapLocations = new BitSet(this.sourcemapLocations);
|
|
23605
|
-
|
|
23606
|
-
cloned.intro = this.intro;
|
|
23607
|
-
cloned.outro = this.outro;
|
|
23608
|
-
|
|
23609
|
-
return cloned;
|
|
23610
|
-
}
|
|
23611
|
-
|
|
23612
|
-
generateDecodedMap(options) {
|
|
23613
|
-
options = options || {};
|
|
23614
|
-
|
|
23615
|
-
const sourceIndex = 0;
|
|
23616
|
-
const names = Object.keys(this.storedNames);
|
|
23617
|
-
const mappings = new Mappings(options.hires);
|
|
23618
|
-
|
|
23619
|
-
const locate = getLocator(this.original);
|
|
23620
|
-
|
|
23621
|
-
if (this.intro) {
|
|
23622
|
-
mappings.advance(this.intro);
|
|
23623
|
-
}
|
|
23624
|
-
|
|
23625
|
-
this.firstChunk.eachNext((chunk) => {
|
|
23626
|
-
const loc = locate(chunk.start);
|
|
23627
|
-
|
|
23628
|
-
if (chunk.intro.length) mappings.advance(chunk.intro);
|
|
23629
|
-
|
|
23630
|
-
if (chunk.edited) {
|
|
23631
|
-
mappings.addEdit(
|
|
23632
|
-
sourceIndex,
|
|
23633
|
-
chunk.content,
|
|
23634
|
-
loc,
|
|
23635
|
-
chunk.storeName ? names.indexOf(chunk.original) : -1,
|
|
23636
|
-
);
|
|
23637
|
-
} else {
|
|
23638
|
-
mappings.addUneditedChunk(sourceIndex, chunk, this.original, loc, this.sourcemapLocations);
|
|
23639
|
-
}
|
|
23640
|
-
|
|
23641
|
-
if (chunk.outro.length) mappings.advance(chunk.outro);
|
|
23642
|
-
});
|
|
23643
|
-
|
|
23644
|
-
return {
|
|
23645
|
-
file: options.file ? options.file.split(/[/\\]/).pop() : undefined,
|
|
23646
|
-
sources: [
|
|
23647
|
-
options.source ? getRelativePath(options.file || '', options.source) : options.file || '',
|
|
23648
|
-
],
|
|
23649
|
-
sourcesContent: options.includeContent ? [this.original] : undefined,
|
|
23650
|
-
names,
|
|
23651
|
-
mappings: mappings.raw,
|
|
23652
|
-
x_google_ignoreList: this.ignoreList ? [sourceIndex] : undefined,
|
|
23653
|
-
};
|
|
23654
|
-
}
|
|
23655
|
-
|
|
23656
|
-
generateMap(options) {
|
|
23657
|
-
return new SourceMap(this.generateDecodedMap(options));
|
|
23658
|
-
}
|
|
23659
|
-
|
|
23660
|
-
_ensureindentStr() {
|
|
23661
|
-
if (this.indentStr === undefined) {
|
|
23662
|
-
this.indentStr = guessIndent(this.original);
|
|
23663
|
-
}
|
|
23664
|
-
}
|
|
23665
|
-
|
|
23666
|
-
_getRawIndentString() {
|
|
23667
|
-
this._ensureindentStr();
|
|
23668
|
-
return this.indentStr;
|
|
23669
|
-
}
|
|
23670
|
-
|
|
23671
|
-
getIndentString() {
|
|
23672
|
-
this._ensureindentStr();
|
|
23673
|
-
return this.indentStr === null ? '\t' : this.indentStr;
|
|
23674
|
-
}
|
|
23675
|
-
|
|
23676
|
-
indent(indentStr, options) {
|
|
23677
|
-
const pattern = /^[^\r\n]/gm;
|
|
23678
|
-
|
|
23679
|
-
if (isObject(indentStr)) {
|
|
23680
|
-
options = indentStr;
|
|
23681
|
-
indentStr = undefined;
|
|
23682
|
-
}
|
|
23683
|
-
|
|
23684
|
-
if (indentStr === undefined) {
|
|
23685
|
-
this._ensureindentStr();
|
|
23686
|
-
indentStr = this.indentStr || '\t';
|
|
23687
|
-
}
|
|
23688
|
-
|
|
23689
|
-
if (indentStr === '') return this; // noop
|
|
23690
|
-
|
|
23691
|
-
options = options || {};
|
|
23692
|
-
|
|
23693
|
-
// Process exclusion ranges
|
|
23694
|
-
const isExcluded = {};
|
|
23695
|
-
|
|
23696
|
-
if (options.exclude) {
|
|
23697
|
-
const exclusions =
|
|
23698
|
-
typeof options.exclude[0] === 'number' ? [options.exclude] : options.exclude;
|
|
23699
|
-
exclusions.forEach((exclusion) => {
|
|
23700
|
-
for (let i = exclusion[0]; i < exclusion[1]; i += 1) {
|
|
23701
|
-
isExcluded[i] = true;
|
|
23702
|
-
}
|
|
23703
|
-
});
|
|
23704
|
-
}
|
|
23705
|
-
|
|
23706
|
-
let shouldIndentNextCharacter = options.indentStart !== false;
|
|
23707
|
-
const replacer = (match) => {
|
|
23708
|
-
if (shouldIndentNextCharacter) return `${indentStr}${match}`;
|
|
23709
|
-
shouldIndentNextCharacter = true;
|
|
23710
|
-
return match;
|
|
23711
|
-
};
|
|
23712
|
-
|
|
23713
|
-
this.intro = this.intro.replace(pattern, replacer);
|
|
23714
|
-
|
|
23715
|
-
let charIndex = 0;
|
|
23716
|
-
let chunk = this.firstChunk;
|
|
23717
|
-
|
|
23718
|
-
while (chunk) {
|
|
23719
|
-
const end = chunk.end;
|
|
23720
|
-
|
|
23721
|
-
if (chunk.edited) {
|
|
23722
|
-
if (!isExcluded[charIndex]) {
|
|
23723
|
-
chunk.content = chunk.content.replace(pattern, replacer);
|
|
23724
|
-
|
|
23725
|
-
if (chunk.content.length) {
|
|
23726
|
-
shouldIndentNextCharacter = chunk.content[chunk.content.length - 1] === '\n';
|
|
23727
|
-
}
|
|
23728
|
-
}
|
|
23729
|
-
} else {
|
|
23730
|
-
charIndex = chunk.start;
|
|
23731
|
-
|
|
23732
|
-
while (charIndex < end) {
|
|
23733
|
-
if (!isExcluded[charIndex]) {
|
|
23734
|
-
const char = this.original[charIndex];
|
|
23735
|
-
|
|
23736
|
-
if (char === '\n') {
|
|
23737
|
-
shouldIndentNextCharacter = true;
|
|
23738
|
-
} else if (char !== '\r' && shouldIndentNextCharacter) {
|
|
23739
|
-
shouldIndentNextCharacter = false;
|
|
23740
|
-
|
|
23741
|
-
if (charIndex === chunk.start) {
|
|
23742
|
-
chunk.prependRight(indentStr);
|
|
23743
|
-
} else {
|
|
23744
|
-
this._splitChunk(chunk, charIndex);
|
|
23745
|
-
chunk = chunk.next;
|
|
23746
|
-
chunk.prependRight(indentStr);
|
|
23747
|
-
}
|
|
23748
|
-
}
|
|
23749
|
-
}
|
|
23750
|
-
|
|
23751
|
-
charIndex += 1;
|
|
23752
|
-
}
|
|
23753
|
-
}
|
|
23754
|
-
|
|
23755
|
-
charIndex = chunk.end;
|
|
23756
|
-
chunk = chunk.next;
|
|
23757
|
-
}
|
|
23758
|
-
|
|
23759
|
-
this.outro = this.outro.replace(pattern, replacer);
|
|
23760
|
-
|
|
23761
|
-
return this;
|
|
23762
|
-
}
|
|
23763
|
-
|
|
23764
|
-
insert() {
|
|
23765
|
-
throw new Error(
|
|
23766
|
-
'magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)',
|
|
23767
|
-
);
|
|
23768
|
-
}
|
|
23769
|
-
|
|
23770
|
-
insertLeft(index, content) {
|
|
23771
|
-
if (!warned.insertLeft) {
|
|
23772
|
-
console.warn(
|
|
23773
|
-
'magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead',
|
|
23774
|
-
);
|
|
23775
|
-
warned.insertLeft = true;
|
|
23776
|
-
}
|
|
23777
|
-
|
|
23778
|
-
return this.appendLeft(index, content);
|
|
23779
|
-
}
|
|
23780
|
-
|
|
23781
|
-
insertRight(index, content) {
|
|
23782
|
-
if (!warned.insertRight) {
|
|
23783
|
-
console.warn(
|
|
23784
|
-
'magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead',
|
|
23785
|
-
);
|
|
23786
|
-
warned.insertRight = true;
|
|
23787
|
-
}
|
|
23788
|
-
|
|
23789
|
-
return this.prependRight(index, content);
|
|
23790
|
-
}
|
|
23791
|
-
|
|
23792
|
-
move(start, end, index) {
|
|
23793
|
-
start = start + this.offset;
|
|
23794
|
-
end = end + this.offset;
|
|
23795
|
-
index = index + this.offset;
|
|
23796
|
-
|
|
23797
|
-
if (index >= start && index <= end) throw new Error('Cannot move a selection inside itself');
|
|
23798
|
-
|
|
23799
|
-
this._split(start);
|
|
23800
|
-
this._split(end);
|
|
23801
|
-
this._split(index);
|
|
23802
|
-
|
|
23803
|
-
const first = this.byStart[start];
|
|
23804
|
-
const last = this.byEnd[end];
|
|
23805
|
-
|
|
23806
|
-
const oldLeft = first.previous;
|
|
23807
|
-
const oldRight = last.next;
|
|
23808
|
-
|
|
23809
|
-
const newRight = this.byStart[index];
|
|
23810
|
-
if (!newRight && last === this.lastChunk) return this;
|
|
23811
|
-
const newLeft = newRight ? newRight.previous : this.lastChunk;
|
|
23812
|
-
|
|
23813
|
-
if (oldLeft) oldLeft.next = oldRight;
|
|
23814
|
-
if (oldRight) oldRight.previous = oldLeft;
|
|
23815
|
-
|
|
23816
|
-
if (newLeft) newLeft.next = first;
|
|
23817
|
-
if (newRight) newRight.previous = last;
|
|
23818
|
-
|
|
23819
|
-
if (!first.previous) this.firstChunk = last.next;
|
|
23820
|
-
if (!last.next) {
|
|
23821
|
-
this.lastChunk = first.previous;
|
|
23822
|
-
this.lastChunk.next = null;
|
|
23823
|
-
}
|
|
23824
|
-
|
|
23825
|
-
first.previous = newLeft;
|
|
23826
|
-
last.next = newRight || null;
|
|
23827
|
-
|
|
23828
|
-
if (!newLeft) this.firstChunk = first;
|
|
23829
|
-
if (!newRight) this.lastChunk = last;
|
|
23830
|
-
return this;
|
|
23831
|
-
}
|
|
23832
|
-
|
|
23833
|
-
overwrite(start, end, content, options) {
|
|
23834
|
-
options = options || {};
|
|
23835
|
-
return this.update(start, end, content, { ...options, overwrite: !options.contentOnly });
|
|
23836
|
-
}
|
|
23837
|
-
|
|
23838
|
-
update(start, end, content, options) {
|
|
23839
|
-
start = start + this.offset;
|
|
23840
|
-
end = end + this.offset;
|
|
23841
|
-
|
|
23842
|
-
if (typeof content !== 'string') throw new TypeError('replacement content must be a string');
|
|
23843
|
-
|
|
23844
|
-
if (this.original.length !== 0) {
|
|
23845
|
-
while (start < 0) start += this.original.length;
|
|
23846
|
-
while (end < 0) end += this.original.length;
|
|
23847
|
-
}
|
|
23848
|
-
|
|
23849
|
-
if (end > this.original.length) throw new Error('end is out of bounds');
|
|
23850
|
-
if (start === end)
|
|
23851
|
-
throw new Error(
|
|
23852
|
-
'Cannot overwrite a zero-length range – use appendLeft or prependRight instead',
|
|
23853
|
-
);
|
|
23854
|
-
|
|
23855
|
-
this._split(start);
|
|
23856
|
-
this._split(end);
|
|
23857
|
-
|
|
23858
|
-
if (options === true) {
|
|
23859
|
-
if (!warned.storeName) {
|
|
23860
|
-
console.warn(
|
|
23861
|
-
'The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string',
|
|
23862
|
-
);
|
|
23863
|
-
warned.storeName = true;
|
|
23864
|
-
}
|
|
23865
|
-
|
|
23866
|
-
options = { storeName: true };
|
|
23867
|
-
}
|
|
23868
|
-
const storeName = options !== undefined ? options.storeName : false;
|
|
23869
|
-
const overwrite = options !== undefined ? options.overwrite : false;
|
|
23870
|
-
|
|
23871
|
-
if (storeName) {
|
|
23872
|
-
const original = this.original.slice(start, end);
|
|
23873
|
-
Object.defineProperty(this.storedNames, original, {
|
|
23874
|
-
writable: true,
|
|
23875
|
-
value: true,
|
|
23876
|
-
enumerable: true,
|
|
23877
|
-
});
|
|
23878
|
-
}
|
|
23879
|
-
|
|
23880
|
-
const first = this.byStart[start];
|
|
23881
|
-
const last = this.byEnd[end];
|
|
23882
|
-
|
|
23883
|
-
if (first) {
|
|
23884
|
-
let chunk = first;
|
|
23885
|
-
while (chunk !== last) {
|
|
23886
|
-
if (chunk.next !== this.byStart[chunk.end]) {
|
|
23887
|
-
throw new Error('Cannot overwrite across a split point');
|
|
23888
|
-
}
|
|
23889
|
-
chunk = chunk.next;
|
|
23890
|
-
chunk.edit('', false);
|
|
23891
|
-
}
|
|
23892
|
-
|
|
23893
|
-
first.edit(content, storeName, !overwrite);
|
|
23894
|
-
} else {
|
|
23895
|
-
// must be inserting at the end
|
|
23896
|
-
const newChunk = new Chunk(start, end, '').edit(content, storeName);
|
|
23897
|
-
|
|
23898
|
-
// TODO last chunk in the array may not be the last chunk, if it's moved...
|
|
23899
|
-
last.next = newChunk;
|
|
23900
|
-
newChunk.previous = last;
|
|
23901
|
-
}
|
|
23902
|
-
return this;
|
|
23903
|
-
}
|
|
23904
|
-
|
|
23905
|
-
prepend(content) {
|
|
23906
|
-
if (typeof content !== 'string') throw new TypeError('outro content must be a string');
|
|
23907
|
-
|
|
23908
|
-
this.intro = content + this.intro;
|
|
23909
|
-
return this;
|
|
23910
|
-
}
|
|
23911
|
-
|
|
23912
|
-
prependLeft(index, content) {
|
|
23913
|
-
index = index + this.offset;
|
|
23914
|
-
|
|
23915
|
-
if (typeof content !== 'string') throw new TypeError('inserted content must be a string');
|
|
23916
|
-
|
|
23917
|
-
this._split(index);
|
|
23918
|
-
|
|
23919
|
-
const chunk = this.byEnd[index];
|
|
23920
|
-
|
|
23921
|
-
if (chunk) {
|
|
23922
|
-
chunk.prependLeft(content);
|
|
23923
|
-
} else {
|
|
23924
|
-
this.intro = content + this.intro;
|
|
23925
|
-
}
|
|
23926
|
-
return this;
|
|
23927
|
-
}
|
|
23928
|
-
|
|
23929
|
-
prependRight(index, content) {
|
|
23930
|
-
index = index + this.offset;
|
|
23931
|
-
|
|
23932
|
-
if (typeof content !== 'string') throw new TypeError('inserted content must be a string');
|
|
23933
|
-
|
|
23934
|
-
this._split(index);
|
|
23935
|
-
|
|
23936
|
-
const chunk = this.byStart[index];
|
|
23937
|
-
|
|
23938
|
-
if (chunk) {
|
|
23939
|
-
chunk.prependRight(content);
|
|
23940
|
-
} else {
|
|
23941
|
-
this.outro = content + this.outro;
|
|
23942
|
-
}
|
|
23943
|
-
return this;
|
|
23944
|
-
}
|
|
23945
|
-
|
|
23946
|
-
remove(start, end) {
|
|
23947
|
-
start = start + this.offset;
|
|
23948
|
-
end = end + this.offset;
|
|
23949
|
-
|
|
23950
|
-
if (this.original.length !== 0) {
|
|
23951
|
-
while (start < 0) start += this.original.length;
|
|
23952
|
-
while (end < 0) end += this.original.length;
|
|
23953
|
-
}
|
|
23954
|
-
|
|
23955
|
-
if (start === end) return this;
|
|
23956
|
-
|
|
23957
|
-
if (start < 0 || end > this.original.length) throw new Error('Character is out of bounds');
|
|
23958
|
-
if (start > end) throw new Error('end must be greater than start');
|
|
23959
|
-
|
|
23960
|
-
this._split(start);
|
|
23961
|
-
this._split(end);
|
|
23962
|
-
|
|
23963
|
-
let chunk = this.byStart[start];
|
|
23964
|
-
|
|
23965
|
-
while (chunk) {
|
|
23966
|
-
chunk.intro = '';
|
|
23967
|
-
chunk.outro = '';
|
|
23968
|
-
chunk.edit('');
|
|
23969
|
-
|
|
23970
|
-
chunk = end > chunk.end ? this.byStart[chunk.end] : null;
|
|
23971
|
-
}
|
|
23972
|
-
return this;
|
|
23973
|
-
}
|
|
23974
|
-
|
|
23975
|
-
reset(start, end) {
|
|
23976
|
-
start = start + this.offset;
|
|
23977
|
-
end = end + this.offset;
|
|
23978
|
-
|
|
23979
|
-
if (this.original.length !== 0) {
|
|
23980
|
-
while (start < 0) start += this.original.length;
|
|
23981
|
-
while (end < 0) end += this.original.length;
|
|
23982
|
-
}
|
|
23983
|
-
|
|
23984
|
-
if (start === end) return this;
|
|
23985
|
-
|
|
23986
|
-
if (start < 0 || end > this.original.length) throw new Error('Character is out of bounds');
|
|
23987
|
-
if (start > end) throw new Error('end must be greater than start');
|
|
23988
|
-
|
|
23989
|
-
this._split(start);
|
|
23990
|
-
this._split(end);
|
|
23991
|
-
|
|
23992
|
-
let chunk = this.byStart[start];
|
|
23993
|
-
|
|
23994
|
-
while (chunk) {
|
|
23995
|
-
chunk.reset();
|
|
23996
|
-
|
|
23997
|
-
chunk = end > chunk.end ? this.byStart[chunk.end] : null;
|
|
23998
|
-
}
|
|
23999
|
-
return this;
|
|
24000
|
-
}
|
|
24001
|
-
|
|
24002
|
-
lastChar() {
|
|
24003
|
-
if (this.outro.length) return this.outro[this.outro.length - 1];
|
|
24004
|
-
let chunk = this.lastChunk;
|
|
24005
|
-
do {
|
|
24006
|
-
if (chunk.outro.length) return chunk.outro[chunk.outro.length - 1];
|
|
24007
|
-
if (chunk.content.length) return chunk.content[chunk.content.length - 1];
|
|
24008
|
-
if (chunk.intro.length) return chunk.intro[chunk.intro.length - 1];
|
|
24009
|
-
} while ((chunk = chunk.previous));
|
|
24010
|
-
if (this.intro.length) return this.intro[this.intro.length - 1];
|
|
24011
|
-
return '';
|
|
24012
|
-
}
|
|
24013
|
-
|
|
24014
|
-
lastLine() {
|
|
24015
|
-
let lineIndex = this.outro.lastIndexOf(n);
|
|
24016
|
-
if (lineIndex !== -1) return this.outro.substr(lineIndex + 1);
|
|
24017
|
-
let lineStr = this.outro;
|
|
24018
|
-
let chunk = this.lastChunk;
|
|
24019
|
-
do {
|
|
24020
|
-
if (chunk.outro.length > 0) {
|
|
24021
|
-
lineIndex = chunk.outro.lastIndexOf(n);
|
|
24022
|
-
if (lineIndex !== -1) return chunk.outro.substr(lineIndex + 1) + lineStr;
|
|
24023
|
-
lineStr = chunk.outro + lineStr;
|
|
24024
|
-
}
|
|
24025
|
-
|
|
24026
|
-
if (chunk.content.length > 0) {
|
|
24027
|
-
lineIndex = chunk.content.lastIndexOf(n);
|
|
24028
|
-
if (lineIndex !== -1) return chunk.content.substr(lineIndex + 1) + lineStr;
|
|
24029
|
-
lineStr = chunk.content + lineStr;
|
|
24030
|
-
}
|
|
24031
|
-
|
|
24032
|
-
if (chunk.intro.length > 0) {
|
|
24033
|
-
lineIndex = chunk.intro.lastIndexOf(n);
|
|
24034
|
-
if (lineIndex !== -1) return chunk.intro.substr(lineIndex + 1) + lineStr;
|
|
24035
|
-
lineStr = chunk.intro + lineStr;
|
|
24036
|
-
}
|
|
24037
|
-
} while ((chunk = chunk.previous));
|
|
24038
|
-
lineIndex = this.intro.lastIndexOf(n);
|
|
24039
|
-
if (lineIndex !== -1) return this.intro.substr(lineIndex + 1) + lineStr;
|
|
24040
|
-
return this.intro + lineStr;
|
|
24041
|
-
}
|
|
24042
|
-
|
|
24043
|
-
slice(start = 0, end = this.original.length - this.offset) {
|
|
24044
|
-
start = start + this.offset;
|
|
24045
|
-
end = end + this.offset;
|
|
24046
|
-
|
|
24047
|
-
if (this.original.length !== 0) {
|
|
24048
|
-
while (start < 0) start += this.original.length;
|
|
24049
|
-
while (end < 0) end += this.original.length;
|
|
24050
|
-
}
|
|
24051
|
-
|
|
24052
|
-
let result = '';
|
|
24053
|
-
|
|
24054
|
-
// find start chunk
|
|
24055
|
-
let chunk = this.firstChunk;
|
|
24056
|
-
while (chunk && (chunk.start > start || chunk.end <= start)) {
|
|
24057
|
-
// found end chunk before start
|
|
24058
|
-
if (chunk.start < end && chunk.end >= end) {
|
|
24059
|
-
return result;
|
|
24060
|
-
}
|
|
24061
|
-
|
|
24062
|
-
chunk = chunk.next;
|
|
24063
|
-
}
|
|
24064
|
-
|
|
24065
|
-
if (chunk && chunk.edited && chunk.start !== start)
|
|
24066
|
-
throw new Error(`Cannot use replaced character ${start} as slice start anchor.`);
|
|
24067
|
-
|
|
24068
|
-
const startChunk = chunk;
|
|
24069
|
-
while (chunk) {
|
|
24070
|
-
if (chunk.intro && (startChunk !== chunk || chunk.start === start)) {
|
|
24071
|
-
result += chunk.intro;
|
|
24072
|
-
}
|
|
24073
|
-
|
|
24074
|
-
const containsEnd = chunk.start < end && chunk.end >= end;
|
|
24075
|
-
if (containsEnd && chunk.edited && chunk.end !== end)
|
|
24076
|
-
throw new Error(`Cannot use replaced character ${end} as slice end anchor.`);
|
|
24077
|
-
|
|
24078
|
-
const sliceStart = startChunk === chunk ? start - chunk.start : 0;
|
|
24079
|
-
const sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length;
|
|
24080
|
-
|
|
24081
|
-
result += chunk.content.slice(sliceStart, sliceEnd);
|
|
24082
|
-
|
|
24083
|
-
if (chunk.outro && (!containsEnd || chunk.end === end)) {
|
|
24084
|
-
result += chunk.outro;
|
|
24085
|
-
}
|
|
24086
|
-
|
|
24087
|
-
if (containsEnd) {
|
|
24088
|
-
break;
|
|
24089
|
-
}
|
|
24090
|
-
|
|
24091
|
-
chunk = chunk.next;
|
|
24092
|
-
}
|
|
24093
|
-
|
|
24094
|
-
return result;
|
|
24095
|
-
}
|
|
24096
|
-
|
|
24097
|
-
// TODO deprecate this? not really very useful
|
|
24098
|
-
snip(start, end) {
|
|
24099
|
-
const clone = this.clone();
|
|
24100
|
-
clone.remove(0, start);
|
|
24101
|
-
clone.remove(end, clone.original.length);
|
|
24102
|
-
|
|
24103
|
-
return clone;
|
|
24104
|
-
}
|
|
24105
|
-
|
|
24106
|
-
_split(index) {
|
|
24107
|
-
if (this.byStart[index] || this.byEnd[index]) return;
|
|
24108
|
-
|
|
24109
|
-
let chunk = this.lastSearchedChunk;
|
|
24110
|
-
const searchForward = index > chunk.end;
|
|
24111
|
-
|
|
24112
|
-
while (chunk) {
|
|
24113
|
-
if (chunk.contains(index)) return this._splitChunk(chunk, index);
|
|
24114
|
-
|
|
24115
|
-
chunk = searchForward ? this.byStart[chunk.end] : this.byEnd[chunk.start];
|
|
24116
|
-
}
|
|
24117
|
-
}
|
|
24118
|
-
|
|
24119
|
-
_splitChunk(chunk, index) {
|
|
24120
|
-
if (chunk.edited && chunk.content.length) {
|
|
24121
|
-
// zero-length edited chunks are a special case (overlapping replacements)
|
|
24122
|
-
const loc = getLocator(this.original)(index);
|
|
24123
|
-
throw new Error(
|
|
24124
|
-
`Cannot split a chunk that has already been edited (${loc.line}:${loc.column} – "${chunk.original}")`,
|
|
24125
|
-
);
|
|
24126
|
-
}
|
|
24127
|
-
|
|
24128
|
-
const newChunk = chunk.split(index);
|
|
24129
|
-
|
|
24130
|
-
this.byEnd[index] = chunk;
|
|
24131
|
-
this.byStart[index] = newChunk;
|
|
24132
|
-
this.byEnd[newChunk.end] = newChunk;
|
|
24133
|
-
|
|
24134
|
-
if (chunk === this.lastChunk) this.lastChunk = newChunk;
|
|
24135
|
-
|
|
24136
|
-
this.lastSearchedChunk = chunk;
|
|
24137
|
-
return true;
|
|
24138
|
-
}
|
|
24139
|
-
|
|
24140
|
-
toString() {
|
|
24141
|
-
let str = this.intro;
|
|
24142
|
-
|
|
24143
|
-
let chunk = this.firstChunk;
|
|
24144
|
-
while (chunk) {
|
|
24145
|
-
str += chunk.toString();
|
|
24146
|
-
chunk = chunk.next;
|
|
24147
|
-
}
|
|
24148
|
-
|
|
24149
|
-
return str + this.outro;
|
|
24150
|
-
}
|
|
24151
|
-
|
|
24152
|
-
isEmpty() {
|
|
24153
|
-
let chunk = this.firstChunk;
|
|
24154
|
-
do {
|
|
24155
|
-
if (
|
|
24156
|
-
(chunk.intro.length && chunk.intro.trim()) ||
|
|
24157
|
-
(chunk.content.length && chunk.content.trim()) ||
|
|
24158
|
-
(chunk.outro.length && chunk.outro.trim())
|
|
24159
|
-
)
|
|
24160
|
-
return false;
|
|
24161
|
-
} while ((chunk = chunk.next));
|
|
24162
|
-
return true;
|
|
24163
|
-
}
|
|
24164
|
-
|
|
24165
|
-
length() {
|
|
24166
|
-
let chunk = this.firstChunk;
|
|
24167
|
-
let length = 0;
|
|
24168
|
-
do {
|
|
24169
|
-
length += chunk.intro.length + chunk.content.length + chunk.outro.length;
|
|
24170
|
-
} while ((chunk = chunk.next));
|
|
24171
|
-
return length;
|
|
24172
|
-
}
|
|
24173
|
-
|
|
24174
|
-
trimLines() {
|
|
24175
|
-
return this.trim('[\\r\\n]');
|
|
24176
|
-
}
|
|
24177
|
-
|
|
24178
|
-
trim(charType) {
|
|
24179
|
-
return this.trimStart(charType).trimEnd(charType);
|
|
24180
|
-
}
|
|
24181
|
-
|
|
24182
|
-
trimEndAborted(charType) {
|
|
24183
|
-
const rx = new RegExp((charType || '\\s') + '+$');
|
|
24184
|
-
|
|
24185
|
-
this.outro = this.outro.replace(rx, '');
|
|
24186
|
-
if (this.outro.length) return true;
|
|
24187
|
-
|
|
24188
|
-
let chunk = this.lastChunk;
|
|
24189
|
-
|
|
24190
|
-
do {
|
|
24191
|
-
const end = chunk.end;
|
|
24192
|
-
const aborted = chunk.trimEnd(rx);
|
|
24193
|
-
|
|
24194
|
-
// if chunk was trimmed, we have a new lastChunk
|
|
24195
|
-
if (chunk.end !== end) {
|
|
24196
|
-
if (this.lastChunk === chunk) {
|
|
24197
|
-
this.lastChunk = chunk.next;
|
|
24198
|
-
}
|
|
24199
|
-
|
|
24200
|
-
this.byEnd[chunk.end] = chunk;
|
|
24201
|
-
this.byStart[chunk.next.start] = chunk.next;
|
|
24202
|
-
this.byEnd[chunk.next.end] = chunk.next;
|
|
24203
|
-
}
|
|
24204
|
-
|
|
24205
|
-
if (aborted) return true;
|
|
24206
|
-
chunk = chunk.previous;
|
|
24207
|
-
} while (chunk);
|
|
24208
|
-
|
|
24209
|
-
return false;
|
|
24210
|
-
}
|
|
24211
|
-
|
|
24212
|
-
trimEnd(charType) {
|
|
24213
|
-
this.trimEndAborted(charType);
|
|
24214
|
-
return this;
|
|
24215
|
-
}
|
|
24216
|
-
trimStartAborted(charType) {
|
|
24217
|
-
const rx = new RegExp('^' + (charType || '\\s') + '+');
|
|
24218
|
-
|
|
24219
|
-
this.intro = this.intro.replace(rx, '');
|
|
24220
|
-
if (this.intro.length) return true;
|
|
24221
|
-
|
|
24222
|
-
let chunk = this.firstChunk;
|
|
24223
|
-
|
|
24224
|
-
do {
|
|
24225
|
-
const end = chunk.end;
|
|
24226
|
-
const aborted = chunk.trimStart(rx);
|
|
24227
|
-
|
|
24228
|
-
if (chunk.end !== end) {
|
|
24229
|
-
// special case...
|
|
24230
|
-
if (chunk === this.lastChunk) this.lastChunk = chunk.next;
|
|
24231
|
-
|
|
24232
|
-
this.byEnd[chunk.end] = chunk;
|
|
24233
|
-
this.byStart[chunk.next.start] = chunk.next;
|
|
24234
|
-
this.byEnd[chunk.next.end] = chunk.next;
|
|
24235
|
-
}
|
|
24236
|
-
|
|
24237
|
-
if (aborted) return true;
|
|
24238
|
-
chunk = chunk.next;
|
|
24239
|
-
} while (chunk);
|
|
24240
|
-
|
|
24241
|
-
return false;
|
|
24242
|
-
}
|
|
24243
|
-
|
|
24244
|
-
trimStart(charType) {
|
|
24245
|
-
this.trimStartAborted(charType);
|
|
24246
|
-
return this;
|
|
24247
|
-
}
|
|
24248
|
-
|
|
24249
|
-
hasChanged() {
|
|
24250
|
-
return this.original !== this.toString();
|
|
24251
|
-
}
|
|
24252
|
-
|
|
24253
|
-
_replaceRegexp(searchValue, replacement) {
|
|
24254
|
-
function getReplacement(match, str) {
|
|
24255
|
-
if (typeof replacement === 'string') {
|
|
24256
|
-
return replacement.replace(/\$(\$|&|\d+)/g, (_, i) => {
|
|
24257
|
-
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#specifying_a_string_as_a_parameter
|
|
24258
|
-
if (i === '$') return '$';
|
|
24259
|
-
if (i === '&') return match[0];
|
|
24260
|
-
const num = +i;
|
|
24261
|
-
if (num < match.length) return match[+i];
|
|
24262
|
-
return `$${i}`;
|
|
24263
|
-
});
|
|
24264
|
-
} else {
|
|
24265
|
-
return replacement(...match, match.index, str, match.groups);
|
|
24266
|
-
}
|
|
24267
|
-
}
|
|
24268
|
-
function matchAll(re, str) {
|
|
24269
|
-
let match;
|
|
24270
|
-
const matches = [];
|
|
24271
|
-
while ((match = re.exec(str))) {
|
|
24272
|
-
matches.push(match);
|
|
24273
|
-
}
|
|
24274
|
-
return matches;
|
|
24275
|
-
}
|
|
24276
|
-
if (searchValue.global) {
|
|
24277
|
-
const matches = matchAll(searchValue, this.original);
|
|
24278
|
-
matches.forEach((match) => {
|
|
24279
|
-
if (match.index != null) {
|
|
24280
|
-
const replacement = getReplacement(match, this.original);
|
|
24281
|
-
if (replacement !== match[0]) {
|
|
24282
|
-
this.overwrite(match.index, match.index + match[0].length, replacement);
|
|
24283
|
-
}
|
|
24284
|
-
}
|
|
24285
|
-
});
|
|
24286
|
-
} else {
|
|
24287
|
-
const match = this.original.match(searchValue);
|
|
24288
|
-
if (match && match.index != null) {
|
|
24289
|
-
const replacement = getReplacement(match, this.original);
|
|
24290
|
-
if (replacement !== match[0]) {
|
|
24291
|
-
this.overwrite(match.index, match.index + match[0].length, replacement);
|
|
24292
|
-
}
|
|
24293
|
-
}
|
|
24294
|
-
}
|
|
24295
|
-
return this;
|
|
24296
|
-
}
|
|
24297
|
-
|
|
24298
|
-
_replaceString(string, replacement) {
|
|
24299
|
-
const { original } = this;
|
|
24300
|
-
const index = original.indexOf(string);
|
|
24301
|
-
|
|
24302
|
-
if (index !== -1) {
|
|
24303
|
-
this.overwrite(index, index + string.length, replacement);
|
|
24304
|
-
}
|
|
24305
|
-
|
|
24306
|
-
return this;
|
|
24307
|
-
}
|
|
24308
|
-
|
|
24309
|
-
replace(searchValue, replacement) {
|
|
24310
|
-
if (typeof searchValue === 'string') {
|
|
24311
|
-
return this._replaceString(searchValue, replacement);
|
|
24312
|
-
}
|
|
24313
|
-
|
|
24314
|
-
return this._replaceRegexp(searchValue, replacement);
|
|
24315
|
-
}
|
|
24316
|
-
|
|
24317
|
-
_replaceAllString(string, replacement) {
|
|
24318
|
-
const { original } = this;
|
|
24319
|
-
const stringLength = string.length;
|
|
24320
|
-
for (
|
|
24321
|
-
let index = original.indexOf(string);
|
|
24322
|
-
index !== -1;
|
|
24323
|
-
index = original.indexOf(string, index + stringLength)
|
|
24324
|
-
) {
|
|
24325
|
-
const previous = original.slice(index, index + stringLength);
|
|
24326
|
-
if (previous !== replacement) this.overwrite(index, index + stringLength, replacement);
|
|
24327
|
-
}
|
|
24328
|
-
|
|
24329
|
-
return this;
|
|
24330
|
-
}
|
|
24331
|
-
|
|
24332
|
-
replaceAll(searchValue, replacement) {
|
|
24333
|
-
if (typeof searchValue === 'string') {
|
|
24334
|
-
return this._replaceAllString(searchValue, replacement);
|
|
24335
|
-
}
|
|
24336
|
-
|
|
24337
|
-
if (!searchValue.global) {
|
|
24338
|
-
throw new TypeError(
|
|
24339
|
-
'MagicString.prototype.replaceAll called with a non-global RegExp argument',
|
|
24340
|
-
);
|
|
24341
|
-
}
|
|
24342
|
-
|
|
24343
|
-
return this._replaceRegexp(searchValue, replacement);
|
|
24344
|
-
}
|
|
24345
|
-
}
|
|
24346
|
-
|
|
24347
23207
|
var utils = {};
|
|
24348
23208
|
|
|
24349
23209
|
var constants;
|
|
@@ -24538,7 +23398,7 @@ var hasRequiredUtils;
|
|
|
24538
23398
|
function requireUtils () {
|
|
24539
23399
|
if (hasRequiredUtils) return utils;
|
|
24540
23400
|
hasRequiredUtils = 1;
|
|
24541
|
-
(function (exports) {
|
|
23401
|
+
(function (exports$1) {
|
|
24542
23402
|
|
|
24543
23403
|
const path = path$3;
|
|
24544
23404
|
const win32 = process.platform === 'win32';
|
|
@@ -24549,19 +23409,19 @@ function requireUtils () {
|
|
|
24549
23409
|
REGEX_SPECIAL_CHARS_GLOBAL
|
|
24550
23410
|
} = requireConstants();
|
|
24551
23411
|
|
|
24552
|
-
exports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);
|
|
24553
|
-
exports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);
|
|
24554
|
-
exports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);
|
|
24555
|
-
exports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\$1');
|
|
24556
|
-
exports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');
|
|
23412
|
+
exports$1.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);
|
|
23413
|
+
exports$1.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);
|
|
23414
|
+
exports$1.isRegexChar = str => str.length === 1 && exports$1.hasRegexChars(str);
|
|
23415
|
+
exports$1.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\$1');
|
|
23416
|
+
exports$1.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');
|
|
24557
23417
|
|
|
24558
|
-
exports.removeBackslashes = str => {
|
|
23418
|
+
exports$1.removeBackslashes = str => {
|
|
24559
23419
|
return str.replace(REGEX_REMOVE_BACKSLASH, match => {
|
|
24560
23420
|
return match === '\\' ? '' : match;
|
|
24561
23421
|
});
|
|
24562
23422
|
};
|
|
24563
23423
|
|
|
24564
|
-
exports.supportsLookbehinds = () => {
|
|
23424
|
+
exports$1.supportsLookbehinds = () => {
|
|
24565
23425
|
const segs = process.version.slice(1).split('.').map(Number);
|
|
24566
23426
|
if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) {
|
|
24567
23427
|
return true;
|
|
@@ -24569,21 +23429,21 @@ function requireUtils () {
|
|
|
24569
23429
|
return false;
|
|
24570
23430
|
};
|
|
24571
23431
|
|
|
24572
|
-
exports.isWindows = options => {
|
|
23432
|
+
exports$1.isWindows = options => {
|
|
24573
23433
|
if (options && typeof options.windows === 'boolean') {
|
|
24574
23434
|
return options.windows;
|
|
24575
23435
|
}
|
|
24576
23436
|
return win32 === true || path.sep === '\\';
|
|
24577
23437
|
};
|
|
24578
23438
|
|
|
24579
|
-
exports.escapeLast = (input, char, lastIdx) => {
|
|
23439
|
+
exports$1.escapeLast = (input, char, lastIdx) => {
|
|
24580
23440
|
const idx = input.lastIndexOf(char, lastIdx);
|
|
24581
23441
|
if (idx === -1) return input;
|
|
24582
|
-
if (input[idx - 1] === '\\') return exports.escapeLast(input, char, idx - 1);
|
|
23442
|
+
if (input[idx - 1] === '\\') return exports$1.escapeLast(input, char, idx - 1);
|
|
24583
23443
|
return `${input.slice(0, idx)}\\${input.slice(idx)}`;
|
|
24584
23444
|
};
|
|
24585
23445
|
|
|
24586
|
-
exports.removePrefix = (input, state = {}) => {
|
|
23446
|
+
exports$1.removePrefix = (input, state = {}) => {
|
|
24587
23447
|
let output = input;
|
|
24588
23448
|
if (output.startsWith('./')) {
|
|
24589
23449
|
output = output.slice(2);
|
|
@@ -24592,7 +23452,7 @@ function requireUtils () {
|
|
|
24592
23452
|
return output;
|
|
24593
23453
|
};
|
|
24594
23454
|
|
|
24595
|
-
exports.wrapOutput = (input, state = {}, options = {}) => {
|
|
23455
|
+
exports$1.wrapOutput = (input, state = {}, options = {}) => {
|
|
24596
23456
|
const prepend = options.contains ? '' : '^';
|
|
24597
23457
|
const append = options.contains ? '' : '$';
|
|
24598
23458
|
|
|
@@ -26593,7 +25453,7 @@ function replace(options) {
|
|
|
26593
25453
|
if ( options === void 0 ) options = {};
|
|
26594
25454
|
|
|
26595
25455
|
var filter = createFilter(options.include, options.exclude);
|
|
26596
|
-
var delimiters = options.delimiters; if ( delimiters === void 0 ) delimiters = ['\\
|
|
25456
|
+
var delimiters = options.delimiters; if ( delimiters === void 0 ) delimiters = ['(?<![_$a-zA-Z0-9\\xA0-\\uFFFF])', '(?![_$a-zA-Z0-9\\xA0-\\uFFFF])(?!\\.)'];
|
|
26597
25457
|
var preventAssignment = options.preventAssignment;
|
|
26598
25458
|
var objectGuards = options.objectGuards;
|
|
26599
25459
|
var replacements = getReplacements(options);
|