speedy-entities 2.0.0 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +1 -1
- package/README.md +53 -54
- package/lib/index.d.ts +42 -4
- package/lib/index.js +249 -4
- package/lib/index.mjs +243 -0
- package/package.json +28 -24
- package/lib/EntityManager.d.ts +0 -39
- package/lib/EntityManager.js +0 -49
- package/lib/createEntityDecoder.d.ts +0 -29
- package/lib/createEntityDecoder.js +0 -104
- package/lib/data/illegal-code-points.json +0 -129
- package/lib/decodeHtml.d.ts +0 -8
- package/lib/decodeHtml.js +0 -14
- package/lib/decodeXml.d.ts +0 -10
- package/lib/decodeXml.js +0 -18
- package/lib/fromCodePoint.d.ts +0 -5
- package/lib/fromCodePoint.js +0 -34
- package/lib/gen/entities.json +0 -1
- package/lib/gen/legacy-entities.json +0 -1
- package/lib/gen/overrides.json +0 -1
- package/lib/index-cjs.js +0 -388
- package/lib/misc.d.ts +0 -2
- package/lib/misc.js +0 -4
- package/lib/unpackMap.d.ts +0 -4
- package/lib/unpackMap.js +0 -22
package/lib/index.mjs
ADDED
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import { arrayTrieSearch } from '@smikhalevski/trie';
|
|
2
|
+
|
|
3
|
+
var fromCharCode = String.fromCharCode;
|
|
4
|
+
var searchResult = { value: '', lastIndex: 0 };
|
|
5
|
+
/**
|
|
6
|
+
* Creates an entity decoder that rewrites numeric and named entities found in input to their respective values.
|
|
7
|
+
*
|
|
8
|
+
* @param options The decoder options.
|
|
9
|
+
* @returns A function that decodes entities in the string.
|
|
10
|
+
*/
|
|
11
|
+
function createEntityDecoder(options) {
|
|
12
|
+
if (options === void 0) { options = {}; }
|
|
13
|
+
var entitiesTrie = options.entitiesTrie, _a = options.numericReferenceSemicolonRequired, numericReferenceSemicolonRequired = _a === void 0 ? false : _a;
|
|
14
|
+
return function (input) {
|
|
15
|
+
var output = '';
|
|
16
|
+
var textIndex = 0;
|
|
17
|
+
var charIndex = 0;
|
|
18
|
+
var inputLength = input.length;
|
|
19
|
+
while (charIndex < inputLength - 1) {
|
|
20
|
+
var startIndex = input.indexOf('&', charIndex);
|
|
21
|
+
if (startIndex === -1) {
|
|
22
|
+
break;
|
|
23
|
+
}
|
|
24
|
+
charIndex = startIndex++;
|
|
25
|
+
var entityValue = null;
|
|
26
|
+
var endIndex = startIndex;
|
|
27
|
+
if (startIndex < inputLength - 2 && input.charCodeAt(startIndex) === 35 /* # */) {
|
|
28
|
+
// Numeric character reference
|
|
29
|
+
var charCode = 0;
|
|
30
|
+
var codePoint = 0;
|
|
31
|
+
if ((input.charCodeAt(++startIndex) | 32) === 120 /* x */) {
|
|
32
|
+
endIndex = ++startIndex;
|
|
33
|
+
// parseInt of a hexadecimal number
|
|
34
|
+
while (endIndex - startIndex < 6 && endIndex < inputLength) {
|
|
35
|
+
// Convert alpha to lower case
|
|
36
|
+
charCode = input.charCodeAt(endIndex) | 32;
|
|
37
|
+
if ((charCode >= 48 /* 0 */ && charCode <= 57) /* 9 */ ||
|
|
38
|
+
(charCode >= 97 /* a */ && charCode <= 102) /* f */) {
|
|
39
|
+
// Convert "0" → 0 and "f" → 15
|
|
40
|
+
codePoint = codePoint * 16 + charCode - (charCode & 112) + (charCode >> 6) * 9;
|
|
41
|
+
++endIndex;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
endIndex = startIndex;
|
|
50
|
+
// parseInt of a decimal number
|
|
51
|
+
while (endIndex - startIndex < 6 && endIndex < inputLength) {
|
|
52
|
+
charCode = input.charCodeAt(endIndex);
|
|
53
|
+
if (charCode >= 48 /* 0 */ && charCode <= 57 /* 9 */) {
|
|
54
|
+
codePoint = codePoint * 10 + charCode - (charCode & 112);
|
|
55
|
+
++endIndex;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (endIndex !== startIndex) {
|
|
63
|
+
// At least one digit must present
|
|
64
|
+
var terminated = endIndex < inputLength && input.charCodeAt(endIndex) === 59; /* ; */
|
|
65
|
+
if (terminated || !numericReferenceSemicolonRequired) {
|
|
66
|
+
// Convert a code point to a string
|
|
67
|
+
// https://github.com/mathiasbynens/he/blob/master/src/he.js#L106-L134
|
|
68
|
+
if (codePoint === 0 || (codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) {
|
|
69
|
+
// Null char code, or character reference is outside the permissible Unicode range
|
|
70
|
+
entityValue = '\uFFFD';
|
|
71
|
+
}
|
|
72
|
+
else if (codePoint >= 128 &&
|
|
73
|
+
codePoint <= 195 &&
|
|
74
|
+
codePoint !== 129 &&
|
|
75
|
+
codePoint !== 141 &&
|
|
76
|
+
codePoint !== 143 &&
|
|
77
|
+
codePoint !== 144 &&
|
|
78
|
+
codePoint !== 157) {
|
|
79
|
+
// Overridden char code
|
|
80
|
+
entityValue = entityOverrides[codePoint];
|
|
81
|
+
}
|
|
82
|
+
else if (codePoint > 0xffff) {
|
|
83
|
+
// Surrogate pair
|
|
84
|
+
codePoint -= 0x10000;
|
|
85
|
+
entityValue = fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800, 0xdc00 | (codePoint & 0x3ff));
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
// Char code
|
|
89
|
+
entityValue = fromCharCode(codePoint);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
if (terminated) {
|
|
93
|
+
++endIndex;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
else if (entitiesTrie !== undefined) {
|
|
98
|
+
// Named character reference
|
|
99
|
+
if (arrayTrieSearch(entitiesTrie, input, startIndex, inputLength, searchResult) !== null) {
|
|
100
|
+
entityValue = searchResult.value;
|
|
101
|
+
endIndex = searchResult.lastIndex;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// Concat decoded entity and preceding substring
|
|
105
|
+
if (entityValue !== null) {
|
|
106
|
+
output += textIndex === charIndex ? entityValue : input.slice(textIndex, charIndex) + entityValue;
|
|
107
|
+
textIndex = endIndex;
|
|
108
|
+
}
|
|
109
|
+
charIndex = endIndex;
|
|
110
|
+
}
|
|
111
|
+
return textIndex === 0 ? input : textIndex === inputLength ? output : output + input.slice(textIndex);
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
// Standing on the shoulders of giants
|
|
115
|
+
// https://github.com/mathiasbynens/he/blob/master/data/decode-map-overrides.json
|
|
116
|
+
var entityOverrides = {
|
|
117
|
+
128: '\u20AC',
|
|
118
|
+
130: '\u201A',
|
|
119
|
+
131: '\u0192',
|
|
120
|
+
132: '\u201E',
|
|
121
|
+
133: '\u2026',
|
|
122
|
+
134: '\u2020',
|
|
123
|
+
135: '\u2021',
|
|
124
|
+
136: '\u02C6',
|
|
125
|
+
137: '\u2030',
|
|
126
|
+
138: '\u0160',
|
|
127
|
+
139: '\u2039',
|
|
128
|
+
140: '\u0152',
|
|
129
|
+
142: '\u017D',
|
|
130
|
+
145: '\u2018',
|
|
131
|
+
146: '\u2019',
|
|
132
|
+
147: '\u201C',
|
|
133
|
+
148: '\u201D',
|
|
134
|
+
149: '\u2022',
|
|
135
|
+
150: '\u2013',
|
|
136
|
+
151: '\u2014',
|
|
137
|
+
152: '\u02DC',
|
|
138
|
+
153: '\u2122',
|
|
139
|
+
154: '\u0161',
|
|
140
|
+
155: '\u203A',
|
|
141
|
+
156: '\u0153',
|
|
142
|
+
158: '\u017E',
|
|
143
|
+
159: '\u0178',
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
function unpackData(data) {
|
|
147
|
+
var nodes = [];
|
|
148
|
+
for (var i = 0, nodesData = data[0]; i < nodesData.length; ++i) {
|
|
149
|
+
nodes.push(nodesData.charCodeAt(i));
|
|
150
|
+
}
|
|
151
|
+
return { nodes: nodes, values: data.slice(1) };
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
var htmlData = ["ƤAfBĊCůD˧EԵFئGپHܰIިJࢅKࢹLࣲMNோO།PQ႕RႰSኆTᐇUᓍVᘱWᛃXᛦYZᝆaយb᥉cᲠdᾙe⇂f⎳gⓂh♯i❥j⣤k⤠l⥩m⸶n⽘o㐸p㗉q㞴r㠆s㬽t㾼u䆏v䌢w䒈x䓙y䖖z䗧E\x1eM#a&b,c1f=g?lEmInMoOp[rgsltyu̺͊͢Ǜ\x00\x01\x00ʂǛ\x01\x01\x01̚Ϊ̪Ǜ\x02\x01\x02)\x03reve;\x14i\x02y\x06Β̚Ǜ\x04\x01\x04\t\x05;\x11\x06r;Β̊β̪Ǜ\x07\x01\x07!\bpha;!\tacr;\x11\nd;\x14g\x02p\x05\x19\x0bon;\x11\ff;a\rplyFunction;͊Ͳ̺Ǜ\x0e\x01\x0e\x14c\x02s\x04\x11\x0fr;!\x10ign;̢̪͊͢Ǜ\x11\x01\x11ͪ͢Ǜ\x12\x01\x12Da\x0ec'e)fCoErHsLuO\x14c\x02r\t9\x13kslash;\x14v\x02w\x03\t\x14;\x19\x15ed;\x11\x16y;\x1cc\x04r\tt\x11)\x17ause;A\x18noullis;\x11\x19a;\x11\x1ar;\x19\x1bpf;!\x1ceve;\x19\x18cr;)\x1dmpeq;tH\x1aO\x1da!cMdmepfh
il«oårʼnsōuŐ\x19\x1ecy;ʂˊǛ\x1f\x01\x1f\x1cc\x04p\by ! ute;\x14;\x02i\x02\x01!\"talDifferentialD;)#leys;$a\x06e\ni\x0fo\x12!$ron;̢͊͢Ǜ%\x01%\x19&rc;)'nint;\x19(ot;\x14d\x02n\x07))illa;9*terDot;\x11#r;\x11+i;Β̪̚͢$D\x06M\tP\x0eT\x12\x19,ot;)-inus;!.lus;)/imes;ͺ\x14c\x02s\x17©0kwiseContourIntegral;̪ȚΪΒ͢ϊ\x14D\x02Q\rY1oubleQuote;)2uote;$l\x06n\x10p0u>ͺͲ\x14;\x02e\x02\x013\t4;\x1cg\x04i\nt\r15ruent;\x196nt;a7ourIntegral;\x14f\x02r\x03\t8;19oduct;é:nterClockwiseContourIntegral;!;oss;\x19<cr;\x14;\x02C\x02\x01=\x19>ap;\\D\x14J!S$Z'a*c>eJfTiVoªsȪ\x14;\x02o\x02\x01\"1?trahd;\x19@cy;\x19Acy;\x19Bcy;\x1cg\x04r\bs\n!Cger;\x11Dr;\x19Ehv;\x14a\x02y\x06!Fron;\tG;͢\x14;\x02t\x02\x01H\x11Ia;\x11Jr;\x14a\x02fD\x14c\x02m9Β͊͊̊̚͢$A\x06D\x0bG\x1dT\")Kcute;ͺ\x14t\x02u\x03\tL;IMbleAcute;)Nrave;)Oilde;!Pond;YQferentialD;$p\x06t\bu\x1bwÚ\x11Rf;\x1c;\x04D\x04E\x07\x01S\x19Tot;)Uqual;̪̒͢4C\nD\x19L)R{UV¤y6ontourIntegral;ͺ\x14t\x02w\x03\tS;9VnArrow;\x14e\x02o!̲\x1cA\x04R\tT\x13)Wrrow;QXightArrow;\x19Eee;Ͳ̺\x14L\x02R\x1b̪̲\x14A\x02R\x07)Yrrow;QZightArrow;Q[ightArrow;̺͊͂\x14A\x02T\x07)\\rrow;\x19]ee;\x14A\x02D\x07)^rrow;I_ownArrow;Y`erticalBar;Ͳ4A\nB#L(RYT|aΒΒͺκ\x1c;\x04B\x04U\x07\x01a\x19bar;9cpArrow;)dreve;̪̲\x1cR\x04T\x0fV\x18YeightVector;IfeeVector;̪̚ͺΒ\x14;\x02B\x02\x01g\x19har;̺͊͂\x14T\x02V\x0bIieeVector;̪̚ͺΒ\x14;\x02B\x02\x01j\x19kar;̪̪\x14;\x02A\x02\x01l)mrrow;)Vrrow;\x14c\x02t\x04\x11nr;!orok;N\x1eT a#c)d=f@gBlHmNo{pqsªtµu·x»\x11pG;ɂǛq\x01q̚Ϊ̪Ǜr\x01r\x1ca\x04i\by\f!sron;Β̚Ǜt\x01t\tu;\x19vot;\x11wr;Β̊β̪Ǜx\x01x1yement;\x14a\x02p\x05\x19zcr;ϊ\x14S\x02V\rY{mallSquare;y|erySmallSquare;\x14g\x02p\x05\x19}on;\x11~f;1silon;Ϊ\x14a\x02i\x0f͢\x14;\x02T\x02\x01)ilde;Alibrium;\x14c\x02i\x04\x11r;\x11m;\x11
a;ͪ͢Ǜ\x01\x14i\x02p\x06!sts;QonentialE;,c\bf\ni\fo1sJ\x11y;\x11r;̢̪͢͢\x14S\x02V\rYmallSquare;yerySmallSquare;\x1cp\x04r\x06u\n\x11f;!All;Ariertrf;\x19cr;dJ\x16T\x19a\x1bb&c+d>fAgCoDrGst\x19cy;Ǜ\x01ͪͪ̊\x14;\x02d\x02\x01\t;)reve;\x1ce\x04i\by\x0b!dil;\x19rc;\t;\x19ot;\x11r;\t;\x19pf;̪̪̊Β4E\nF\x19G\"L)S-T7ΊΪ̊͢\x14;\x02L\x02\x01!ess;IullEqual;9reater;! ess;Q¡lantEqual;)¢ilde;\x19£cr;\t¤;DA\x0ea\x13c\x1ef\"i$o/sDuQ)¥RDcy;\x14c\x02t\x05\x19¦ek;\t§;!¨irc;\x11©r;YªlbertSpace;\x14p\x02r\x04\x11«f;a¬izontalLine;\x14c\x02t\x04\x11ªr;!rok;ͪ\x14D\x02E\nA\x1downHump;)®qual;tE\x1aJ\x1dO!a$c*d6f9g;mAnaos«t®u³\x19¯cy;!°lig;\x19±cy;̚Ϊ̪Ǜ²\x01²\x14i\x02y\x06Β̚Ǜ³\x01³\t´;\x19µot;\x11¶r;Β̊β̪Ǜ·\x01·\x1c;\x04a\x04p\x14\x01¶\x14c\x02g\x04\x11¸r;9¹inaryI;)\\lies;\x14t\x02v\x1c\x14;\x02e\x02\x01º\x14g\x02r\x06!»ral;A¼section;͊Κ̪͊̒͢\x14C\x02T\x07)½omma;)¾imes;\x1cg\x04p\x07t\t\x19¿on;\x11Àf;\x11Áa;\x19Âcr;)Ãilde;\x14k\x02m\x05\x19Äcy;͢ǛÅ\x01Å,c\bf\x13o\x15s\x18u%\x14i\x02y\x05\x19Ærc;\tÇ;\x11Èr;\x19Épf;\x14c\x02e\x04\x11Êr;!Ërcy;!Ìkcy;<H\fJ\x0fa\x12c\x16f\"o$s'\x19Ícy;\x19Îcy;!Ïppa;\x14e\x02y\x06!Ðdil;\tÑ;\x11Òr;\x19Ópf;\x19Ôcr;\\J\x14T\x17a\x19c@eTfǏlǑmǠoǥsɤtɶ\x19Õcy;ǛÖ\x01Ö,c\bm\fn\x10p\x12r\x1a!×ute;!Øbda;\x11Ùg;AÚlacetrf;\x11Ûr;\x1ca\x04e\by\f!Üron;!Ýdil;\tÞ;\x14f\x02sįTA\x12C?DFFyR~TUËVùaĈrč\x14n\x02r\rYßgleBracket;Βͺκ\x1c;\x04B\x04R\x07\x01à\x19áar;QâightArrow;9ãeiling;ͺ\x14u\x02w\rYäbleBracket;Ͳ\x14T\x02V\x0bIåeeVector;̪̚ͺΒ\x14;\x02B\x02\x01æ\x19çar;)èloor;̺͊͂\x14A\x02V\x07)érrow;1êector;\x14e\x02r\x19̪\x1c;\x04A\x04V\t\x01ë)ìrrow;1íector;͊̊Ͳ̺̪͢\x1c;\x04B\x04E\x07\x01î\x19ïar;)ðqual;\x1cD\x04T\x0eV\x17QñownVector;IòeeVector;̪̚ͺΒ\x14;\x02B\x02\x01ó\x19ôar;̪̚ͺΒ\x14;\x02B\x02\x01õ\x19öar;)Wrrow;QXightarrow;Κ4E\nF\x16G\x1fL&S*T4a÷qualGreater;IøullEqual;9ùreater;!úess;QûlantEqual;)üilde;\x11ýr;\x14;\x02e\x02\x01þAÿftarrow;)Āidot;\x1cn\x04pZw\\̺$L\x06R\x1fl)rB̪̲\x14A\x02R\x07)ārrow;QĂightArrow;QăightArrow;̪̲\x14a\x02r\x07)Yrrow;QZightarrow;Q[ightarrow;\x11Ąf;̪Β\x14L\x02R\x0bIąeftArrow;QĆightArrow;\x1cc\x04h\x06t\x07\x11Úr;\tć;!Ĉrok;\tĉ;Da\x0ec\x10e\x12f)i+o3s6u9\x11Ċp;\x11ċy;\x14d\x02l\x0bIČiumSpace;9člintrf;\x11Ďr;AďnusPlus;\x19Đpf;\x19čcr;\tđ;LJ\x10a\x13c\x18e,fos̥t̨u̮\x19Ēcy;)ēcute;\x1ca\x04e\by\f!Ĕron;!ĕdil;\tĖ;\x1cg\x04sBwb̊͊β̪\x1cM\x04T\x0fV%YėediumSpace;͂͊\x14c\x02n\t9ėkSpace;1ėSpace;iėeryThinSpace;̢̪\x14G\x02L\x10q¤reaterGreater;AĉessLess;)ĘLine;\x11ęr;$B\x06n\x0bp\x19t\x1b)Ěreak;qěBreakingSpace;\x11Ĝf;l;\x18C\x18D,E=GbH«LÂNĝPĿRŠSƒTșVȿ\x01ĝ\x14o\x02u\nAĞngruent;)ğpCap;ĠoubleVerticalBar;\x1cl\x04q\nx\x191ġement;Ϊ̊͢\x14;\x02T\x02\x01Ģ)ģilde;)Ĥists;Β̪̪̊Β<;\fE\fF\x11G\x1aL!S%T/\x01ĥ)Ħqual;IħullEqual;9Ĩreater;!ĩess;QĪlantEqual;)īilde;Ϊͪ\x14D\x02E\nAĬownHump;)ĭqual;̪\x14f\x02s\x1eʢΒ͊̊Ͳ̺̪͢\x1c;\x04B\x04E\x07\x01Į\x19įar;)İqual;Κ4;\nE\nG\x0fL\x16S\x1aT$\x01ı)IJqual;9ijreater;!Ĵess;QĵlantEqual;)Ķilde;̪Κ̢̪\x14G\x02L\x10qķreaterGreater;AĸessLess;Β̢̪̪̪̚Κ\x1c;\x04E\x04S\t\x01Ĺ)ĺqual;QĻlantEqual;\x14e\x02i\x0fiļverseElement;̺͂ʢΒ͊̊Ͳ̺̪͢\x1c;\x04B\x04E\x07\x01Ľ\x19ľar;)Ŀqual;\x14q\x02u/Ϊ̊Β̪ʚΪ\x14b\x02p\x11Κ̪\x14;\x02E\x02\x01ŀ)Łqual;̪ΒΚ̪\x14;\x02E\x02\x01ł)Ńqual;\x1cb\x04c\x13p;Κ̪\x14;\x02E\x02\x01ń)Ņqual;̢̪̪̚Κ$;\x06E\x06S\x0bT\x15\x01ņ)Ňqual;QňlantEqual;)ʼnilde;̪ΒΚ̪\x14;\x02E\x02\x01Ŋ)ŋqual;̢̪͊͢$;\x06E\x06F\x0bT\x14\x01Ō)ōqual;IŎullEqual;)ŏilde;YŐerticalBar;\x19őcr;̢̪͊͢ǛŒ\x01Œ\tœ;tE\x1aa\x1ec$d0f5g7m=oSpVrtsutuv!Ŕlig;̚Ϊ̪Ǜŕ\x01ŕ\x14i\x02y\x06Β̚ǛŖ\x01Ŗ\tŗ;)Řblac;\x11řr;Β̊β̪ǛŚ\x01Ś\x1ca\x04e\x07i\n\x19ścr;\x19Ŝga;)ŝcron;\x19Şpf;̪ͲȚΪΒ͢ϊ\x14D\x02Q\rYşoubleQuote;)Šuote;\tš;\x14c\x02l\x04\x11Ţr;̊Κ͂Ǜţ\x01ţ͊\x14l\x02m\x06̢̪ǛŤ\x01Ť\x19ťes;ͪ͢ǛŦ\x01Ŧ̪Β\x14B\x02P\x18\x14a\x02r\x04\x11ŧr;̊̚\x14e\x02k\x03\tŨ;\x19ũet;YŪarenthesis;La\x10c\x17f\x19h\x1bi\x1dl\x1eo&r:s9ūrtialD;\x11Ŭy;\x11ŭr;\x11Ůi;\tů;AŰusMinus;\x14i\x02p\rY©ncareplane;\x11űf;$;\x06e\x06i.o1\x01Ų̢̪̪̚Κ$;\x06E\x06S\x0bT\x15\x01ų)Ŵqual;QŵlantEqual;)Ŷilde;\x19ŷme;\x14d\x02p\x06!Ÿuct;ͺΒ͊ͺͲ\x14;\x02a\x02\x013\x11Źl;\x14c\x02i\x04\x11źr;\tŻ;$U\x06f\no\fs\x0fɺʢǛż\x01ż\x11Žr;\x19žpf;\x19ſcr;dB\x16E\x1aa\x1dc8eLfhioƌrƟsƩuƳ!ƀarr;ȺǛƁ\x01Ɓ\x1cc\x04n\br\n!Ƃute;\x11ƃg;Β\x14;\x02t\x02\x01Ƅ\x11ƅl;\x1ca\x04e\by\f!Ɔron;!Ƈdil;\tƈ;\x14;\x02v\x02\x01Ɖ̪ΒΚ̪\x14E\x02U\x19\x14l\x02q\b1Ɗement;QƋuilibrium;iƌpEquilibrium;\x11Ɖr;\x11ƍo;̺͂DA\x0eC:DAFtTyU°VÞaí\x14n\x02r\rYƎgleBracket;Βͺκ\x1c;\x04B\x04L\x07\x01Ə\x19Ɛar;IƑeftArrow;9ƒeiling;ͺ\x14u\x02w\rYƓbleBracket;Ͳ\x14T\x02V\x0bIƔeeVector;̪̚ͺΒ\x14;\x02B\x02\x01ƕ\x19Ɩar;)Ɨloor;\x14e\x02r\x19̪\x1c;\x04A\x04V\t\x01Ƙ)ƙrrow;1ƚector;͊̊Ͳ̺̪͢\x1c;\x04B\x04E\x07\x01ƛ\x19Ɯar;)Ɲqual;\x1cD\x04T\x0eV\x17QƞownVector;IƟeeVector;̪̚ͺΒ\x14;\x02B\x02\x01Ơ\x19ơar;̪̚ͺΒ\x14;\x02B\x02\x01Ƣ\x19ƣar;)\\rrow;\x14p\x02u\x04\x11Ƥf;QƥndImplies;QƦightarrow;\x14c\x02h\x04\x11Ƨr;\tƨ;QƩleDelayed;lH\x18O%a*c/fNhPi
moqsêtíuð\x14C\x02c\x06!ƪHcy;\x11ƫy;)ƬFTcy;)ƭcute;,;\ba\be\fi\x10y\x13\x01Ʈ!Ưron;!ưdil;\x19Ʊrc;\tƲ;\x11Ƴr;ͺΒ$D\x06L\x0fR\x18U\"IaownArrow;IàeftArrow;QƏightArrow;9ƴpArrow;!Ƶgma;QƶallCircle;\x19Ʒpf;\x14r\x02u\x04\x11Ƹt;̊Β̪$;\x06I\x06S\x12U:\x01ƹaƺntersection;Ϊ\x14b\x02p\x11Κ̪\x14;\x02E\x02\x01ƻ)Ƽqual;̪ΒΚ̪\x14;\x02E\x02\x01ƽ)ƾqual;)ƿnion;\x19ǀcr;\x19ǁar;$b\x06c\x1bmNpO\x14;\x02s\x02\x01ǂ̪\x14;\x02E\x02\x01ǂ)ǃqual;\x14c\x02h)̢̪̪Κ$;\x06E\x06S\x0bT\x15\x01DŽ)Džqual;QdžlantEqual;)LJilde;)ƊThat;\tLj;\x1c;\x04e\x04s\x14\x01ljΒΚ̪\x14;\x02E\x02\x01NJ)Njqual;\x19ljet;\\H\x14R\x19S\x1da)c2fFhHirors¢ɺʒɲǛnj\x01nj!ǍADE;\x14H\x02c\x05\x19ǎcy;\x11Ǐy;\x14b\x02u\x03\tǐ;\tǑ;\x1ca\x04e\by\f!ǒron;!Ǔdil;\tǔ;\x11Ǖr;\x14e\x02i\x11\x14r\x02t\b1ǖefore;\x11Ǘa;\x14c\x02n\t9ǘkSpace;1ǙSpace;̢̪͢$;\x06E\x06F\x0bT\x14\x01ǚ)Ǜqual;IǜullEqual;)ǝilde;\x19Ǟpf;AǟipleDot;\x14c\x02t\x04\x11Ǡr;!ǡrok;ta\x1ab2c?dKfPgRmXn\\op¦rķsĻtľuŃ\x14c\x02r\x07Ϊ̪ǛǢ\x01ǢΒ\x14;\x02o\x02\x01ǣ!Ǥcir;Β\x14c\x02e\x04\x11ǥy;\x19Ǧve;\x14i\x02y\x06Β̚Ǜǧ\x01ǧ\tǨ;)ǩblac;\x11Ǫr;Β̊β̪Ǜǫ\x01ǫ!Ǭacr;\x14d\x02i,̪Β\x14B\x02P\x18\x14a\x02r\x04\x11ǭr;̊̚\x14e\x02k\x03\tǮ;\x19ǯet;Yǰarenthesis;ͺͲ\x14;\x02P\x02\x01DZ!Dzlus;\x14g\x02p\x05\x19dzon;\x11Ǵf;DA\x0eD)E2T=aKdPpYsuΒΒͺκ\x1c;\x04B\x04D\x07\x01ƴ\x19ǵar;IǶownArrow;IǷownArrow;YǸquilibrium;̪̪\x14;\x02A\x02\x01ǹ)Ǻrrow;)^rrow;I_ownarrow;̪Β\x14L\x02R\x0bIǻeftArrow;QǼightArrow;͊\x14;\x02l\x02\x01ǽ\x19Ǿon;!ǿing;\x19Ȁcr;)ȁilde;ͪ͢ǛȂ\x01ȂLD\x10b\x14c\x17d\x19e$frotswvz!ȃash;\x19Ȅar;\x11ȅy;̊Κ͂\x14;\x02l\x02\x01Ȇ\tȇ;\x14e\x02r\x03\tȈ;\x1cb\x04t\x07y5\x19ȉar;\x14;\x02i\x02\x01ȉ̊̚͢$B\x06L\tS\rT\x16\x19Ȋar;!ȋine;IȌeparator;)ȍilde;QȎThinSpace;\x11ȏr;\x19Ȑpf;\x19ȑcr;)Ȓdash;,c\be\ff\x10o\x12s\x15!ȓirc;!Ȕdge;\x11ȕr;\x19Ȗpf;\x19ȗcr;$f\x06i\bo\ts\f\x11Șr;\tș;\x19Țpf;\x19țcr;LA\x10I\x13U\x16a\x19c\x1ff*o,s/u2\x19Ȝcy;\x19ȝcy;\x19Ȟcy;̚Ϊ̪Ǜȟ\x01ȟ\x14i\x02y\x05\x19Ƞrc;\tȡ;\x11Ȣr;\x19ȣpf;\x19Ȥcr;\x19ȥml;DH\x0ea\x11c\x16d\"e%f:o<s?\x19Ȧcy;)ȧcute;\x14a\x02y\x06!Ȩron;\tȩ;\x19Ȫot;\x14r\x02t\x0eaėoWidthSpace;\x11ȫa;\x11Ȭr;\x19ȭpf;\x19Ȯcr;a\x1eb$c)eKfPgXl^munoĚpĦrŗsŜtŵuŻwſ̚Ϊ̪Ǜȯ\x01ȯ)Ȱreve;4;\nE\nd\x0bi\fu\x10y\x14\x01ȱ\tȲ;\tȳ;Β̚Ǜȴ\x01ȴ̪ǛK\x01K\tȵ;̺͊͢Ǜȶ\x01ȶ\x14;\x02r\x02\x01\r\tȷ;Β̊β̪Ǜȸ\x01ȸ\x14e\x02p\x0f\x14f\x02p\x06!ȹsym;\x11ȹh;\x19Ⱥha;\x14a\x02p\r\x14c\x02l\x04\x11Ȼr;\x11ȼg;Ǜ\x01\x01\x01\x14d\x02g\x1f,;\ba\bd\x0bs\fv\x11\x01Ƚ\x19Ⱦnd;\tȿ;)ɀlope;\tɁ;<;\fe\fl\rm\x0fr?sPzZ\x01ɂ\tɃ;\x11ɂe;Κ̢\x14;\x02a\x02\x01ɄDa\x0eb\x0fc\x10d\x11e\x12f\x13g\x14h\x15\tɅ;\tɆ;\tɇ;\tɈ;\tɉ;\tɊ;\tɋ;\tɌ;\x14;\x02v\x02\x01ɍ̒\x14;\x02d\x02\x01Ɏ\tɏ;\x14p\x02t\x04\x11ɐh;\t\x0e;!ɑarr;\x14g\x02p\x05\x19ɒon;\x11ɓf;<;\fE\fa\re\x11i\x12o\x14p\x16\x01ǝ\tɔ;!ɕcir;\tɖ;\x11ɗd;\x11ɘs;Βͺς\x14;\x02e\x02\x01ǝ\x11ɖq;͊Ͳ̺Ǜə\x01ə\x1cc\x04t\x06y\x07\x11ɚr;\tɛ;ͪ\x14;\x02e\x02\x01ǝ\x11>q;̢̪͊͢Ǜɜ\x01ɜͪ͢Ǜɝ\x01ɝ\x14c\x02i\b1:onint;\x19ɞnt;N\x1ea!bhcudef¿iÁkĵlĺnƟoƳpˎr˓sˢu̐\x19ɟot;\x14c\x02r-͚$c\x06e\np\x11s\x16!ɠong;9ɡpsilon;)ɢrime;͊ͪ\x14;\x02e\x02\x01ɣ\x11ɤq;\x14v\x02w\x05\x19ɥee;̢̪\x14;\x02g\x02\x01ɦ\x11ɦe;Β͚\x14;\x02t\x02\x01ǯ!ɧbrk;\x14o\x02y\x05\x19ɠng;\tɨ;!ɩquo;,c\bm\x13p\x18r\x1bt\x1f̊ΪΚ\x14;\x02e\x02\x01\x17\t\x17;)ɪptyv;\x19ɡsi;!\x18nou;\x1ca\x04h\x05w\x06\tɫ;\tɬ;!ɭeen;\x11ɮr;̺<c\fo\x1es5tCuWv\\w_\x1ca\x04i\x06u\t\x11¼p;\x19ɯrc;\x11DZp;\x1cd\x04p\x07t\x0b\x19ɰot;!ɱlus;)ɲimes;\x14q\x02t\x06!ɳcup;\x19ɴar;Β͊̊Ͳ̺̪͢\x14d\x02u\x06!ɵown;\x11ɶp;)ɷplus;\x19Ȉee;)Ȕedge;)ɸarow;\x1ca\x04kIo[\x14c\x02n>͚\x1cl\x04s\x0bt\x119ɹozenge;1quare;Β͊̊Ͳ̺̪͢$;\x06d\x06l\nr\x0e\x01ɺ!ɻown;!ɼeft;)ɽight;\x11ɾk;\x141\x023\x0b\x142\x024\x03\tɿ;\tʀ;\x11ʁ4;\x19ʂck;\x14e\x02o\r\x14;\x02q\x02\x01ʃ!ʄuiv;\x11ʅt;$p\x06t\bw\x12x\x16\x11ʆf;\x14;\x02t\x02\x01ǹ\x19ǹom;!ʇtie;dD\x16H)U@VSbtdwhm¡p¦tªu¯vÂ$L\x06R\x07l\br\t\tʈ;\tʉ;\tʊ;\tʋ;,;\bD\bU\td\nu\x0b\x01ʌ\tʍ;\tʎ;\tʏ;\tʐ;$L\x06R\x07l\br\t\tʑ;\tʒ;\tʓ;\tʔ;<;\fH\fL\rR\x0eh\x0fl\x10r\x11\x01ʕ\tʖ;\tʗ;\tʘ;\tʙ;\tʚ;\tʛ;\x19ʜox;$L\x06R\x07l\br\t\tʝ;\tʞ;\tʟ;\tʠ;,;\bD\bU\td\nu\x0b\x01¬\tʡ;\tʢ;\tʣ;\tʤ;)ʥinus;!ʦlus;)ʧimes;$L\x06R\x07l\br\t\tʨ;\tʩ;\tʪ;\tʫ;<;\fH\fL\rR\x0eh\x0fl\x10r\x11\x01ʬ\tʭ;\tʮ;\tʯ;\tʰ;\tʱ;\tʲ;)ɢrime;\x14e\x02v\x05\x19\x1cve;̒̊ΒǛʳ\x01ʳ$c\x06e\bi\x0bo\x14\x11ʴr;\x19ʵmi;ͪ\x14;\x02e\x02\x01ɣ\tɤ;͢\x1c;\x04b\x04h\x05\x01ʶ\tʷ;!ʸsub;\x14l\x02m\f͢\x14;\x02e\x02\x01ʹ\x11ʹt;\x1c;\x04E\x04e\x05\x01\x1d\tʺ;\x14;\x02q\x02\x01®\t®;|a\x1ccddef·h¹iÔlŇoŔrǍsǚtǺuǾw˅y˕\x1cc\x04p\br6!ʻute;4;\na\nb\rc\x12d\x1ds \x01ʼ\x19ʽnd;)ʾrcup;\x14a\x02u\x04\x11ʿp;\x11ˀp;\x19ˁot;\t˂;\x14e\x02o\x04\x11˃t;\x11¦n;$a\x06e\x12i\x17u\x1a\x14p\x02r\x04\x11˄s;\x19˅on;̢͊͢Ǜˆ\x01ˆ\x19ˇrc;Κ\x14;\x02s\x02\x01ˈ\x11ˉm;\x19ˊot;\x1cd\x04m\bn\r͊͢Ǜ)\x01))ˋptyv;\x15ˌ;\x02e\x02\x01ˌ)*rdot;\x11ˍr;\x1cc\x04e\x06i\x13\x11ˎy;͚̚\x14;\x02m\x02\x01ˏ!ˏark;\tː;Β<;\fE\fc\reVfWm\\s_\x01ˑ\t˒;\x1c;\x04e\x04l\x06\x01˓\x11˔q;̪\x14a\x02d\x16ΒΒͺκ\x14l\x02r\x06!˕eft;)˖ight;,R\bS\ta\nc\rd\x11\tƁ;\t˗;\x19˘st;!˙irc;!˚ash;\t˔;)˛nint;\x19˜id;!˝cir;Ϊ̒Κ\x14;\x02u\x02\x01˞\x19˞it;$l\x06m\x17nCpWͺͲ\x14;\x02e\x02\x01˟\x14;\x02q\x02\x01\x10\t\x10;\x14m\x02p\x0b̊\x14;\x02t\x02\x01ˠ\tˡ;\x1c;\x04f\x04l\x06\x01ˢ\x11ƶn;̪\x14m\x02x\x06!ˢent;\x198es;\x14g\x02i\f\x14;\x02d\x02\x01ǜ\x19ˣot;\x197nt;\x1cf\x04r\x05y\b\tˤ;\x199od;\x15\x1f;\x02s\x02\x01\x1f\x11˥r;\x14a\x02o\x05\x19˦rr;\x19˧ss;\x14c\x02u\x04\x11˨r;\x14b\x02p\n\x14;\x02e\x02\x01˩\t˪;\x14;\x02e\x02\x01˫\tˬ;!˭dot;<d\fe\x18l#p.r[v²wµ̊ΒΒ\x14l\x02r\x03\tˮ;\t˯;\x14p\x02s\x04\x11˰r;\x11˱c;̊ΒΒ\x14;\x02p\x02\x01˲\t˳;4;\nb\nc\x0fd\x1ao\x1ds\x1f\x01˴)˵rcap;\x14a\x02u\x04\x11˶p;\x11˷p;\x19˸ot;\x11˹r;\t˺;$a\x06l\x10r4v8ΒΒ\x14;\x02m\x02\x01˻\t˼;ϊ\x1ce\x04v\x14w\x17Ί\x14p\x02s\x06!˰rec;!˱ucc;\x19˽ee;)˾edge;̪ͲǛ˿\x01˿̪̊ΒΒͺκ\x14l\x02r\x06!˲eft;)˻ight;\x19˽ee;\x19˾ed;\x14c\x02i\b10onint;\x19̀nt;)́lcty;A$H'a*bLc[dgefh¥i°jąlĈoĖrƙsƳtǍuǠwǭzdz\x19Vrr;\x19̂ar;$g\x06l\nr\x0es\x10!̃ger;!̄eth;\x11ar;͂\x14;\x02v\x02\x01̅\të;\x14k\x02l\x07)̆arow;\x19Mac;\x14a\x02y\x06!̇ron;\ẗ;\x1c;\x04a\x04o\x11\x01Q\x14g\x02r\x06!Cger;\x11̉r;)̊tseq;\x1cg\x04l\x06m\tǛ̋\x01̋\x19̌ta;)̍ptyv;\x14i\x02r\x06!̎sht;\t̏;̊Β\x14l\x02r\x03\tæ;\tƕ;,a\be\"g#s(v+ͪ\x1c;\x04o\x04s\x11\x01PͲ̢\x14;\x02s\x02\x01P!̐uit;\t̐;\tS;)̑amma;\x19̒in;\x1c;\x04i\x04o\x15\x01̢̪̓\x15̓;\x02o\x02\x01̓9̔ntimes;\x19̔nx;\x19̕cy;̚\x14o\x02r\x05\x19̖rn;\x19̗op;,l\bp\ft\x0eu;wG!̘lar;\x11̙f;,;\be\bm\x13p\x18s\x1c\x01LΊ\x14;\x02d\x02\x01U\x19̚ot;)̛inus;!̜lus;1̝quare;a\x15blebarwedge;Ͳ\x1ca\x04d\th\x13)arrow;Q̉ownarrows;̊ΒͺͺͲ\x14l\x02r\x06!æeft;)ƕight;\x14b\x02c\b1ƀkarow;\x14o\x02r\x05\x19̞rn;\x19̟op;\x1cc\x04o\rt\x0f\x14r\x02y\x03\t̠;\t̡;\x11̢l;!̣rok;\x14d\x02r\x05\x19̤ot;͊\x14;\x02f\x02\x01̥\tɻ;\x14a\x02h\x05\x19crr;\x19ƌar;1̦angle;\x14c\x02i\x04\x11̧y;1̨grarr;D\"a.c>d`ecfdgolm©nÙoãpïqėrůsżtƎuƘxƤ\x14D\x02o\x05\x19̊ot;\x11̚t;\x14c\x02s\x07Ϊ̪Ǜ̩\x01̩!̪ter;$a\x06i\no\x14y\x18!̫ron;Β\x14;\x02c\x02\x01̬Ṷ̈̀\x01̭!̮lon;\t̯;\x19̰ot;\t;\x14D\x02r\x05\x19̱ot;\t̲;\x1c;\x04r\x04s\t\x01̳̊β̪Ǜ̴\x01̴\x14;\x02d\x02\x01̵\x19̶ot;$;\x06i\x06l\fs\r\x01̷1̸nters;\t̹;\x14;\x02d\x02\x01̺\x19̻ot;\x1ca\x04p\x07s\x18\x19̼cr;ϊ\x1c;\x04s\x04v\x07\x01̽\x19̽et;\t̽;\x141\x02;\x0b\x143\x024\x03\t̾;\t̿;\x01̀\x14g\x02s\x03\t́;\x11͂p;\x14g\x02p\x05\x19̓on;\x11̈́f;\x1ca\x04l\x0es\x11Β\x14;\x02s\x02\x01ͅ\x11͆l;\x19͇us;͊\x1c;\x04l\x04v\x07\x01͈\x19͈on;\t͉;$c\x06s\x14u.vI\x14i\x02o\x05\x19̬rc;!̮lon;\x14i\x02l\x04\x11m;̊Ͳ\x14g\x02l\x05\x19̵tr;!̺ess;\x1ca\x04e\x07i\n\x19͊ls;\x19͋st;β\x14;\x02D\x02\x015\x11͌D;1͍parsl;\x14D\x02a\x05\x19͎ot;\x19͏rr;\x1cc\x04d\x06i\t\x11͐r;\x19Uot;\x11m;\x14a\x02h\x03\t͑;Ǜ͒\x01͒\x14m\x02r\x05͢Ǜ͓\x01͓\x11͔o;\x1cc\x04i\x06p\t\x11͕l;\x19st;\x14e\x02o\nActation;Inentiale;da\x16c\"e$f)iEjIlMn`ocp~r
sóa̱llingdotseq;\x11͖y;)͗male;\x1ci\x04l\br\x14!͘lig;\x14i\x02l\x04\x11͙g;\x19͚ig;\t͛;!͜lig;!͝lig;\x1ca\x04l\x06t\t\x11͞t;\x19͟ig;\x19͠ns;\x19͡of;\x14p\x02r\x04\x11͢f;\x14a\x02k\x05\x19ll;\x14;\x02v\x02\x01ͣ\tͤ;9ͥartint;\x14a\x02of\x14c\x02s]41\n2)324A5C7L42\n3\f4\r5\x0f6\x108\x11Ǜͦ\x01ͦ\tͧ;Ǜͨ\x01ͨ\tͩ;\tͪ;\tͫ;\x143\x025\x03\tͬ;\tͭ;\x1c4\x045\x068\x07Ǜͮ\x01ͮ\tͯ;\tͰ;\x11ͱ5;\x146\x028\x03\tͲ;\tͳ;\x11ʹ8;\x11͵l;\x19Ͷwn;\x19ͷcr;E a(bBcGdReUf¡g£i«j¯l²nÄoòrõsùtĐvź\x14;\x02l\x02\x01\t;\x1cc\x04m\bp\x12!ute;ͪ̊\x14;\x02d\x02\x01ͺ\t̑;\tͻ;)ͼreve;\x14i\x02y\x05\x19ͽrc;\t;;\x19Ϳot;$;\x06l\x06q\x07s\x18\x01\t;\x1c;\x04q\x04s\x05\x01\t;)¡lant;$;\x06c\x06d\bl\x19\x01¡\x11c;ͺ\x14;\x02o\x02\x01\x14;\x02l\x02\x01\t;\x14;\x02e\x02\x01΄\x11΅s;\x11Άr;\x14;\x02g\x02\x01¤\t;!·mel;\x19Έcy;$;\x06E\x06a\x07j\b\x01 \tΉ;\tΊ;\t;$E\x06a\x07e\x13s\"\tΌ;\x14;\x02p\x02\x01!rox;\x14;\x02q\x02\x01Ύ\x14;\x02q\x02\x01Ύ\tΌ;\x19Ώim;\x19ΐpf;!Nave;\x14c\x02i\x04\x11Αr;ͪ\x1c;\x04e\x04l\x05\x01¢\tΒ;\tΓ;5;\nc\nd\x14l\x17q\x1br \x01\x14c\x02i\x03\tΔ;\x11Εr;\x19Ζot;!ΗPar;)Θuest;,a\bd\x16e\x19l*s.\x14p\x02r\x07)ͻprox;\x11Ιr;\x19Ζot;Ί\x14l\x02q\x06!ess;)less;! ess;\x19¢im;\x14e\x02n\t9Κrtneqq;\x11ΚE;TA\x12a\x15bGcJeNfnkpos½yÒ\x19Xrr;$i\x06l\nm\fr\x10!Ȏrsp;\x11ͦf;!ªilt;\x14d\x02r\x05\x19Λcy;\x1c;\x04c\x04w\x07\x01é\x19Μir;\tΝ;\x19Ξar;!Οirc;\x1ca\x04l\x11r\x15ΒΚ\x14;\x02u\x02\x01Π\x19Πit;!Ρlip;!con;\x11Σr;Κ\x14e\x02w\x07)Τarow;)Υarow;,a\bm\x0bo\x0fp*r,\x19Φrr;!Χtht;͚\x14l\x02r\x0bIΨeftarrow;QΩightarrow;\x11Ϊf;!Ϋbar;\x1cc\x04l\x06t\n\x11άr;!Ξash;!έrok;\x14b\x02p\x06!ήull;!̅hen;|a\x1cc\"e2f?gHiNjpmtn§oüpĔqĘsĞtňuœ̚Ϊ̪Ǜί\x01ί\x1c;\x04i\x04y\b\x01½Β̚Ǜΰ\x01ΰ\tα;\x14c\x02x\x04\x11βy;̚͢Ǜγ\x01γ\x14f\x02r\x03\tX;\tδ;Β̊β̪Ǜε\x01ε$;\x06i\x06n\x12o\x16\x01¹\x14i\x02n\x05\x19ζnt;\x11ηt;!θfin;\x19ιta;!κlig;\x1ca\x04o'p)\x1cc\x04g\x06t\x1a\x11λr;\x1ce\x04l\x05p\t\t¶;!Âine;!¶art;\x11μh;\x11νf;\x19ξed;,;\bc\bf\fo\x18t\x1c\x01y!οare;͊Ͳ\x14;\x02t\x02\x01π\x19ρie;!μdot;,;\bc\be\x0bl\x1ap\x1f\x01»\x19ςal;\x14g\x02r\x06!ȭers;!ςcal;)σarhk;!τrod;$c\x06g\bp\x0bt\r\x11υy;\x19φon;\x11χf;\x11ψa;!τrod;Ϊ̪ΚǛω\x01ω\x14c\x02i\x04\x11ϊr;Ͳ,;\bE\bd\ts\fv\x14\x01y\tϋ;\x19όot;\x14;\x02v\x02\x01ύ\tώ;\ty;\x14;\x02i\x02\x01¾!Ϗlde;\x14k\x02m\x05\x19ϐcy;͢Ǜϑ\x01ϑ4c\nf\x15m\x17o\x1bs\x1eu+\x14i\x02y\x05\x19ϒrc;\tϓ;\x11ϔr;!ϕath;\x19ϖpf;\x14c\x02e\x04\x11ϗr;!Ϙrcy;!ϙkcy;Da\x0ec\x19f%g'h,j/o2s5̊\x14;\x02v\x02\x01Ϛ\tϛ;\x14e\x02y\x06!Ϝdil;\tϝ;\x11Ϟr;)ϟreen;\x19Ϡcy;\x19ϡcy;\x19Ϣpf;\x19ϣcr;¼A,B@EDHLaObäcĘdĺeŧfɣgɷhɿjʚlʝmˀn˙ȯpβrνsϧtШuѽvҎ\x1ca\x04r\x07t\t\x19ÿrr;\x11Wr;!Ϥail;!ϥarr;\x14;\x02g\x02\x01ø\tϦ;\x19ϧar;Lc\x10e\x14g\x1am\x1en\"p1q2r6tl!Ϩute;1ϩmptyv;!Úran;!Ϫbda;̺\x1c;\x04d\x04l\x05\x01ß\tϫ;\x11ße;\tϬ;ΪͺǛϭ\x01ϭΒD;\x0eb\x0ef\x17h\x19l\x1bp\x1ds\x1ft\"\x01à\x14;\x02f\x02\x01á\x11Ϯs;\x11ϯs;\x11Ψk;\x11ϰp;\x11ϱl;\x19ϲim;\x11ϳl;\x1c;\x04a\x04e\x07\x01ϴ\x19ϵil;\x14;\x02s\x02\x01϶\tϷ;\x1ca\x04b\x07r\n\x19ϸrr;\x19Ϲrk;\x14a\x02k\f̚\x14e\x02k\x03\tϺ;\tϻ;\x14e\x02s\x03\tϼ;͢\x14d\x02u\x03\tϽ;\tϾ;$a\x06e\nu\x16y\x18!Ͽron;\x14d\x02i\x05\x19Ѐil;\x11ãl;\x11Ϻb;\tЁ;$c\x06q\br\x12s\"\x11Ђa;Ϊͺ\x14;\x02r\x02\x01ş\tɩ;\x14d\x02u\x06!Ѓhar;)Єshar;\x11Ѕh;,;\bf\bgqs\x01І,a\bh\x17l*r4taΒΒͺκ\x14;\x02t\x02\x01à!ϳail;̊ΒͺͺͲ\x14d\x02u\x06!gown;\x11õp;QЇeftarrows;̺͊͂\x1ca\x04h\x10s\x18ΒΒͺκ\x14;\x02s\x02\x01é\tâ;AƋarpoons;QΝquigarrow;QЈhreetimes;\t÷;\x1c;\x04q\x04s\x05\x01І\tø;)ûlant;,;\bc\bd\ng\x1bs$\x01û\x11Љc;ͺ\x14;\x02o\x02\x01Њ\x14;\x02r\x02\x01Ћ\tЌ;\x14;\x02e\x02\x01Ѝ\x11Ўs;,a\bd\x0ee\x11g s#1Ϭpprox;\x19Џot;Ί\x14g\x02q\x05\x19÷tr;!Ϧgtr;\x19ùtr;\x19üim;\x1ci\x04l\br\f!Аsht;!èoor;\tБ;\x14;\x02E\x02\x01ù\tВ;\x14a\x02b\x13Β\x14d\x02u\x03\tg;\x14;\x02l\x02\x01õ\tГ;\x19Дlk;\x19Еcy;,;\ba\bc\x0bh\x11t\x15\x01ĉ\x19Їrr;1̖orner;!Жard;\x19Зri;\x14i\x02o\x06!Иdot;ΪΚ\x14;\x02a\x02\x01Й!Йche;$E\x06a\x07e\x13s\"\tК;\x14;\x02p\x02\x01Л!Лrox;\x14;\x02q\x02\x01М\x14;\x02q\x02\x01М\tК;\x19Нim;Da\x0eb\x19n\x1coQpgtxw}z\x14n\x02r\x04\x11Оg;\x11Пr;\x19ärk;̺\x1cl\x04m\x1dr#̪̲\x14a\x02r\x07)ārrow;QĂightarrow;1Рapsto;Qăightarrow;̊ΒΒͺκ\x14l\x02r\x06!ϰeft;)Сight;\x1ca\x04f\x06l\x07\x11Тr;\tУ;\x19Фus;)Хimes;\x14a\x02b\x05\x19Цst;\x19ǭar;\x1c;\x04e\x04f\b\x01Ч!Чnge;\tɹ;̊Β\x14;\x02l\x02\x01Ш\x11Щt;,a\bc\x0bh\x11m\x1bt\x1c\x19ârr;1̞orner;̊Β\x14;\x02d\x02\x01Ƌ\tЪ;\tЫ;\x19Ьri;4a\nc\x0eh\x10i\x11q\x1ft0!Эquo;\x11Юr;\tć;ͪ\x1c;\x04e\x04g\x05\x01ü\tЯ;\tа;\x14b\x02u\x03\tϻ;ͺ\x14;\x02r\x02\x01Š\tб;!вrok;EÖ;\x0ec\x0ed\x18h\x1bi\x1fl#q'r,\x01Ö\x14c\x02i\x03\tг;\x11дr;\x19Џot;!Јree;!еmes;!жarr;)зuest;\x14P\x02i\x05\x19иar;\x1c;\x04e\x04f\x05\x01й\tð;\tɼ;Β\x14d\x02u\x07)кshar;!лhar;\x14e\x02n\t9мrtneqq;\x11мE;tD\x1aa\x1echdtexfhilÆnÑoÖpãsäuñ!нDot;$c\x06l\tp\x1br=ΒǛо\x01о\x14e\x02t\x03\tп;\x14;\x02e\x02\x01р\x19рse;\x14;\x02s\x02\x01ƙͺ$;\x06d\x06l\nu\x0e\x01ƙ!mown;!ìeft;\x11Ǻp;!сker;\x14o\x02y\x06!тmma;\tу;!фash;aɄasuredangle;\x11хr;\x11цo;\x1cc\x04d\bn!ΒͺǛч\x01ч$;\x06a\x06c\td\f\x01Ȋ\x19ɛst;\x19шir;ͺǛ*\x01*ΪΚ\x1c;\x04b\x04d\x05\x01щ\tʥ;\x14;\x02u\x02\x01̛\tъ;\x14c\x02d\x04\x11ыp;\x11Ρr;)ďplus;\x14d\x02p\x06!ьels;\x11эf;\tď;\x14c\x02t\x04\x11юr;!ȱpos;\x1c;\x04l\x04m\n\x01я1ѐtimap;\x19ѐap;ÄG.L>RjVtabÍcádĒeĖfťgŧhƟiƳjLJlNJmɀoɃpʐr˖s̊tόuЊvСwҊ\x14g\x02t\x03\tё;\x14;\x02v\x02\x01ђ\tĨ;\x1ce\x04l\x1ct\x1d̲\x14a\x02r\x07)ѓrrow;Qєightarrow;\tѕ;\x14;\x02v\x02\x01і\tĴ;Qїightarrow;\x14D\x02d\x06!јash;!љash;,b\bc\x0bn\x0fp\x11t-\x19Hla;!њute;\x11ћg;,;\bE\bi\to\x0bp\r\x01ŏ\tќ;\x11ѝd;\x11ўs;!ŏrox;ΪΒ\x14;\x02a\x02\x01џ͢\x14;\x02s\x02\x01џ\tĜ;\x14s\x02u\x05Ǜě\x01ěͪ\x14;\x02e\x02\x01Ĭ\tĭ;,a\be\x13o\x17u#y%\x14p\x02r\x03\tѠ;\x19ѡon;!Ѣdil;Ͳ̺\x14;\x02d\x02\x01Ŏ\x19ѣot;\x11Ѥp;\tѥ;!Ѧash;<;\fA\fa\x0fd\"q%s)x5\x01Ģ\x19ѧrr;Β\x14h\x02r\x04\x11Ѩk;\x14;\x02o\x02\x01Ǽ\x11Ǽw;\x19ѩot;!Ğuiv;\x14e\x02i\x05\x19Ѫar;\x11ģm;͊Κ\x14;\x02s\x02\x01Ĥ\tĤ;\x11ѫr;$E\x06e\x07s$t'\tħ;\x1c;\x04q\x04s\x15\x01Ħ\x1c;\x04q\x04s\x05\x01Ħ\tħ;)Īlant;\tĪ;\x19īim;\x14;\x02r\x02\x01ĥ\tĥ;\x1cA\x04a\x07p\n\x19єrr;\x19Ѭrr;\x19ѭar;\x1c;\x04s\x04v\f\x01Ɗ\x14;\x02d\x02\x01Ѯ\tѯ;\tƊ;\x19Ѱcy;<A\fE\x0fa\x10d\x13e\x15sTtW\x19ѓrr;\tѱ;\x19Ѳrr;\x11ѳr;$;\x06f\x06q\x1ds.\x01IJ\x14a\x02r\x07)Ѳrrow;QѬightarrow;\x1c;\x04q\x04s\x05\x01IJ\tѱ;)ĵlant;\x14;\x02s\x02\x01ĵ\tı;\x19Ķim;\x14;\x02r\x02\x01ı͊\x14;\x02e\x02\x01Į\tİ;\x19Őid;\x14p\x02t\x04\x11Ѵf;\x1dѵ;\x04i\x04n&\x01ѵͲ$;\x06E\x06d\x07v\n\x01ġ\tѶ;\x19ѷot;\x1ca\x04b\x05c\x06\tġ;\tѸ;\tѹ;͊\x14;\x02v\x02\x01ļ\x1ca\x04b\x05c\x06\tļ;\tѺ;\tѻ;\x1ca\x04o\x1cr!Β$;\x06a\x06s\x0bt\r\x01Ġ)Ġllel;\x11Ѽl;\tѽ;)Ѿlint;\x1c;\x04c\x04e\x07\x01Ĺ\x19Ļue;\x14;\x02c\x02\x01ĺ\x14;\x02e\x02\x01Ĺ\x11ĺq;$A\x06a\ti\x18t!\x19їrr;ΒΒ\x1c;\x04c\x04w\x05\x01ѿ\tҀ;\tҁ;Iѿghtarrow;Β͊\x14;\x02e\x02\x01Ľ\tĿ;<c\fh i5mEpHqKuX$;\x06c\x06e\tr\n\x01ņ\x19ňue;\tŇ;\t҂;ͺΒ\x14m\x02p\x05\x19Őid;AĠarallel;ͪ\x14;\x02e\x02\x01Ō\x14;\x02q\x02\x01ō\tō;\x19Őid;\x19Ġar;ΚΪ\x14b\x02p\x04\x11Łe;\x11Ńe;\x1cb\x04c'p1$;\x06E\x06e\x07s\b\x01҃\t҄;\tŅ;̪\x14;\x02e\x02\x01ńΊ\x14;\x02q\x02\x01Ņ\t҄;̚\x14;\x02e\x02\x01ņ\x11Ňq;$;\x06E\x06e\x07s\b\x01҅\t҆;\tŋ;̪\x14;\x02e\x02\x01ŊΊ\x14;\x02q\x02\x01ŋ\t҆;$g\x06i\bl\rr\x0f\x11ĩl;̢̪͢Ǜ҇\x01҇\x11ijg;͊̊Ͳ̺̪͢\x14l\x02r\x0e̪̲\x14;\x02e\x02\x01Į\x11İq;̺͊͂\x14;\x02e\x02\x01Ľ\x11Ŀq;\x14;\x02m\x02\x01҈\x1c;\x04e\x04s\x07\x01҉\x19Ҋro;\x11ҋp;LD\x10H\x14a\x18d\x1ag\x1ei'l,rEsS!Ҍash;!ҍarr;\x11Ҏp;!ҏash;\x14e\x02t\x03\tҐ;\tґ;)Ғnfin;\x1cA\x04e\x07t\b\x19ғrr;\tҔ;\x14;\x02r\x02\x01ҕ\x19Җie;\x14A\x02t\x05\x19җrr;!Ҙrie;\x19ҙim;\x1cA\x04a\x07n\x1a\x19Қrr;Β\x14h\x02r\x04\x11қk;\x14;\x02o\x02\x01ǻ\x11ǻw;!Ҝear;S\"a#c1dCeefigthilm¸oÜpßròsĹtōuŤvŨ\t˗;\x14c\x02s\x07Ϊ̪Ǜҝ\x01ҝ\x11˘t;\x14i\x02y\fΒ\x14;\x02c\x02\x01˙ǛҞ\x01Ҟ\tҟ;,a\bb\x0bi\x0fo\x11s\x13\x19˚sh;!Ҡlac;\x11ҡv;\x11,t;!Ңold;!ңlig;\x14c\x02r\x05\x19Ҥir;\tҥ;\x1co\x04r\x06t\x0b\x11Ҧn;̊β̪Ǜҧ\x01ҧ\tҨ;\x14b\x02m\x05\x19ҩar;\tŜ;\x197nt;$a\x06c\ti\x16t\x19\x19˕rr;\x14i\x02r\x04\x11Ҫr;!ҫoss;\x19ŧne;\tҬ;\x1ca\x04e\x07i\n\x19ҭcr;\x19Үga;\x1cc\x04d\bn\t!үron;\tҰ;\x19-us;\x19ұpf;\x1ca\x04e\x06l\t\x11Ҳr;\x19ҳrp;\x19.us;<;\fa\fd\x0fi,o0s2v7\x01Ҵ\x19˖rr;$;\x06e\x06f\x10m\x12\x01ҵΒ\x14;\x02o\x02\x01Ҷ\x11Ҷf;Ǜҷ\x01ҷǛҸ\x01Ҹ!ҹgof;\x11Һr;)һlope;\tҼ;\x1cc\x04l\x06o\x0b\x11Ҷr;̊Κ͂Ǜҽ\x01ҽ\x11Ҿl;͊\x14l\x02m\x06̢̪Ǜҿ\x01ҿ̪Κ\x14;\x02a\x02\x01/\x11Ӏs;ͪ͢ǛӁ\x01Ӂ!ӂbar;da\x16c=e?fahci}lméoêrāsǃuǍΒ$;\x06a\x06s\x12t\x1c\x01`\x15Ӄ;\x02l\x02\x01Ӄ!`lel;\x14i\x02l\x04\x11ӄm;\tӅ;\tū;\x11ӆy;Β,c\bi\x0bm\x0ep\x11t\x12\x19Ӈnt;\x19ӈod;\x19Ӊil;\tǹ;!ӊenk;\x11Ӌr;\x1ci\x04m\fo\x10\x14;\x02v\x02\x01ӌ\tӍ;!čmat;\x19ӎne;\x1c;\x04t\x04v\x0b\x01ӏ9ͣchfork;\tӐ;\x14a\x02u\x15Ͳ\x14c\x02k\x0b͚\x14;\x02h\x02\x01Ξ\tӑ;\x11Ξv;ΚL;\x10a\x10b\x14c\x15d\x18e!m\"s%t(\x01Ӓ!ӓcir;\tʦ;\x19Ӕir;\x14o\x02u\x03\t̜;\tӕ;\tӖ;ͲǛŰ\x01Ű\x19ӗim;\x19Әwo;\tŰ;\x1ci\x04p\nu\f1әntint;\x11Ӛf;Ͳ̢Ǜӛ\x01ӛT;\x12E\x12a\x13c\x15e\x18i_niozs¦u©\x01ų\tӜ;\x11ӝp;\x19ŵue;\x14;\x02c\x02\x01Ŵ4;\na\nc\x10e\x17n\x19s0\x01ų1ӝpprox;9ŵurlyeq;\x11Ŵq;\x1ca\x04e\ns\r1Ӟpprox;\x19ӟqq;\x19Ӡim;\x19Ŷim;̪ͪ\x14;\x02s\x02\x01ӡ\tű;\x1cE\x04a\x05s\x07\tӟ;\x11Ӟp;\x19Ӡim;\x1cd\x04f\x05p\x1c\tŸ;\x1ca\x04l\bs\f!Ӣlar;!ӣine;!Ӥurf;\x14;\x02t\x02\x01Ź\x11Źo;\x19Ŷim;!ӥrel;\x14c\x02i\x04\x11Ӧr;\tӧ;)Өncsp;4f\ni\fo\x0fp\x12s\x17u\x1a\x11өr;\x19ζnt;\x19Ӫpf;)ӫrime;\x19Ӭcr;\x1ca\x04e\x16o!\x14e\x02i\t9«rnions;\x19ӭnt;Κ\x14;\x02e\x02\x01Ӯ\x11͋q;Ǜż\x01ż¬A(B<H@aCbæcĚdļeŞfƅhƙiƹlɂmɔnɣoɧpʚrʱsʵt˜u̅x̋\x1ca\x04r\x07t\t\x19Ʀrr;\x11\\r;!ӯail;!̆arr;\x19Ӱar;<c\fd\x17e\x1an q4r8t~\x14e\x02u\x03\tӱ;\x19Ӳte;\x19Ƹic;1ӳmptyv;̺$;\x06d\x06e\x07l\b\x01Ǝ\tӴ;\tӵ;\x11Ǝe;ΪͺǛӶ\x01ӶΒ\\;\x14a\x14b\x16c\x1ff h\"l$p&s(t+w-\x01Ə\x11ӷp;\x14;\x02f\x02\x01Ɛ\x11Ӹs;\tӹ;\x11Ӻs;\x11Ωk;\x11Сp;\x11ӻl;\x19Ӽim;\x11ӽl;\tӾ;\x14a\x02i\x05\x19ӿil;ͺ\x14;\x02n\x02\x01Ԁ!žals;\x1ca\x04b\x07r\n\x19ɸrr;\x19ԁrk;\x14a\x02k\f̚\x14e\x02k\x03\tԂ;\tԃ;\x14e\x02s\x03\tԄ;͢\x14d\x02u\x03\tԅ;\tԆ;$a\x06e\nu\x16y\x18!ԇron;\x14d\x02i\x05\x19Ԉil;\x11ƒl;\x11Ԃb;\tԉ;$c\x06l\bq\rs\x17\x11Ԋa;)ԋdhar;Ϊͺ\x14;\x02r\x02\x011\t1;\x11Ԍh;\x1ca\x04c\x1cg\x1e͢$;\x06i\x06p\ts\r\x01Ɖ\x19Ƨne;!Ɖart;\tƤ;\x11ԍt;ǛƁ\x01Ɓ\x1ci\x04l\br\f!Ԏsht;!Ɨoor;\tԏ;\x14a\x02o\x13Β\x14d\x02u\x03\tj;\x14;\x02l\x02\x01Ƣ\tԐ;\x14;\x02v\x02\x01ԑ\tԒ;\x1cg\x04nvsx͂4a\nh\x19l,rDsOtYΒΒͺκ\x14;\x02t\x02\x01Ə!ӽail;̊ΒͺͺͲ\x14d\x02u\x06!jown;\x11Ƣp;̪̲\x14a\x02h\b1Ƒrrows;Aarpoons;Yԓightarrows;QӾquigarrow;QԔhreetimes;\x11ԕg;Q͎ingdotseq;\x1ca\x04h\x07m\n\x19Ƒrr;\x19ar;\tԖ;ͺΪΚ\x14;\x02a\x02\x01ԗ!ԗche;!Ԙmid;$a\x06b\x11p\x14t%\x14n\x02r\x04\x11ԙg;\x11Ԛr;\x19Ɠrk;\x1ca\x04f\x06l\x07\x11ԛr;\tԜ;\x19ԝus;)Ԟimes;\x14a\x02p\fΒ\x14;\x02g\x02\x01ԟ\x11Ԡt;1ԡolint;!ԓarr;$a\x06c\nh\fq\r!Ԣquo;\x11ԣr;\tƨ;\x14b\x02u\x03\tԃ;ͺ\x14;\x02r\x02\x012\t2;\x1ch\x04i\br\f!Ԕree;!Ԥmes;͊$;\x06e\x06f\x07l\b\x01ԥ\tƝ;\tɽ;!Ԧtri;1ԧluhar;\tԨ;a$b)c-defãhîiġlŻmſoǁpǢqǷrɧsɫtʈuʶwЮzѓ)ԩcute;!бquo;T;\x12E\x12a\x13c\x1ee!i+n.p?sEyH\x01DŽ\tԪ;\x14p\x02r\x03\tԫ;\x19Ԭon;\x19džue;\x14;\x02d\x02\x01Dž\x19ԭil;\x19Ԯrc;\x1cE\x04a\x05s\x07\tԯ;\x11p;\x19Աim;1Բolint;\x19LJim;\tԳ;ͺ\x1c;\x04b\x04e\x05\x01Դ\t̝;\tԵ;<A\fa\x0fc\"m%s't+x8\x19Զrr;Β\x14h\x02r\x04\x11Τk;\x14;\x02o\x02\x01Ć\x11Ćw;ǛԷ\x01Է\x11Ըi;!Թwar;ͪ\x14i\x02n\x06!\x13nus;\t\x13;\x11Ժt;Β\x14;\x02o\x02\x01Ի\x19Ͷwn;$a\x06c\to\x14y(\x19Լrp;\x14h\x02y\x05\x19Խcy;\tԾ;Β\x14m\x02p\x05\x19Ȋid;A`arallel;ǛԿ\x01Կ\x14g\x02m\x11ͪ̊\x1c;\x04f\x04v\x05\x01Հ\tՁ;\tՁ;D;\x0ed\x0ee\x11g\x19l!n)p+r/\x01ǚ\x19Ղot;\x14;\x02q\x02\x01Ǜ\tǛ;\x14;\x02E\x02\x01Ճ\tՄ;\x14;\x02E\x02\x01Յ\tՆ;\x11Շe;!Ոlus;!Չarr;!àarr;$a\x06e\x1ai t*\x14l\x02s\fQ\x13lsetminus;\x19Պhp;1Ջparsl;\x14d\x02l\x03\tȊ;\x11Ռe;\x14;\x02e\x02\x01Ս\x14;\x02s\x02\x01Վ\tՏ;\x1cf\x04l\bp\x18!Րtcy;\x14;\x02b\x02\x01Ց\x14;\x02a\x02\x01Ւ\x11Փr;\x11Քf;̊\x14d\x02r\x0e̪Κ\x14;\x02u\x02\x01Օ\x19Օit;\t`;\x1cc\x04s\x1duS\x14a\x02u\x0b\x14;\x02s\x02\x01ƺ\tՖ;\x14;\x02s\x02\x01ƿ\t;Ϊ\x14b\x02p\x19\x1c;\x04e\x04s\x05\x01ƻ\tƼ;̪\x14;\x02e\x02\x01ƻ\x11Ƽq;\x1c;\x04e\x04s\x05\x01ƽ\tƾ;̪\x14;\x02e\x02\x01ƽ\x11ƾq;\x1c;\x04a\x04f\x0e\x01ƹΒ\x14e\x02f\x03\tƹ;\t;\t;!Əarr;$c\x06e\bm\ft\x10\x11r;!\x13tmn;!Ռile;!ǁarf;\x14a\x02r\x0bΒ\x14;\x02f\x02\x01ՙ\tɴ;\x14a\x02n\x17̺͊͂\x14e\x02p\t9͉psilon;\x19Ӎhi;\x11оs;,b\bcmÄnÅpÇL;\x10E\x10d\x11e\x14m\x1en\"p+r/s3\x01՚\t՛;\x19՜ot;\x14;\x02d\x02\x01ǃ\x19՝ot;!՞ult;\x14E\x02e\x03\t՟;\tՠ;!աlus;!բarr;\x1ce\x04i#u%\x1c;\x04e\x04n\r\x01՚Ί\x14;\x02q\x02\x01ǃ\t՛;̪Ί\x14;\x02q\x02\x01ՠ\t՟;\x11գm;\x14b\x02p\x03\tդ;\tե;̚4;\na\nc\x10e\x17n\x19s0\x01DŽ1ԫpprox;9džurlyeq;\x11Džq;\x1ca\x04e\ns\r1pprox;\x19ԯqq;\x19Աim;\x19LJim;\tLj;\x11զg;l1\x182\x1a3\x1c;\x1eE\x1ed\x1fe+h5lAmEnIpRsVǛէ\x01էǛը\x01ըǛթ\x01թ\x01NJ\tժ;\x14o\x02s\x04\x11իt;\x19լub;\x14;\x02d\x02\x01Nj\x19խot;Κ\x14o\x02u\x04\x11ծl;\x11կb;!հarr;!ձult;\x14E\x02e\x03\tղ;\tճ;!մlus;\x1ce\x04i#u%\x1c;\x04e\x04n\r\x01NJΊ\x14;\x02q\x02\x01Nj\tժ;̪Ί\x14;\x02q\x02\x01ճ\tղ;\x11յm;\x14b\x02p\x03\tն;\tշ;\x1cA\x04a\x07n\x1a\x19ոrr;Β\x14h\x02r\x04\x11Υk;\x14;\x02o\x02\x01ą\x11ąw;!չwar;̺͊͢Ǜպ\x01պla\x18b$c'd;e>fChEi£oËpùrþsŵwƐ\x14r\x02u\x06!ջget;\tռ;\x19ũrk;\x1ca\x04e\by\f!սron;!վdil;\tտ;\x19ǟot;)րlrec;\x11ցr;$e\x06i*kEoQ\x14r\x02t\x0f̪\x144\x02f\x03\tǖ;!ǖore;̊\x1c;\x04s\x04v\x07\x01ւ\x19փym;\tփ;\x14c\x02n\x13͚\x14a\x02s\b1ǝpprox;\x19ǚim;\x19Ǚsp;\x14a\x02s\x04\x11ǝp;\x19ǚim;ΒͲǛք\x01ք\x1cl\x04m\x07n\x1f\x19Ode;̪Κ\x1dօ;\x04b\x04d\r\x01օ\x14;\x02a\x02\x01ʧ\x11ֆr;\tև;\x11ηt;\x1ce\x04p\x06s%\x11Ѫa;$;\x06b\x06c\tf\f\x01l\x19ֈot;\x19։ir;\x14;\x02o\x02\x01֊\x19rk;\x11Թa;)rime;\x1ca\x04i\x07pj\x19Ǎde;<a\fdAeDmEpJsNtPͲ̺̪͢,;\bd\bl\fq\x18r\x19\x01֍!̥own;̪̲\x14;\x02e\x02\x01й\x11ðq;\t֎;̺͊͂\x14;\x02e\x02\x01ԥ\x11Ɲq;\x19֏ot;\t֎;)inus;!֑lus;\x11֒b;!֓ime;1֔ezium;\x1cc\x04h\rt\x10\x14r\x02y\x03\t֕;\t֖;\x19֗cy;!֘rok;\x14i\x02o\x05\x19ɭxt;̢̪͂̊\x14l\x02r\x0bIÛeftarrow;QƄightarrow;A\"H%a(b6cCdOfdgphvlm©oµpÁrėsĽtŀuśwŨ\x19^rr;\x19֙ar;\x14c\x02r\x07Ϊ̪Ǜ֚\x01֚\x11ƴr;Β\x14c\x02e\x04\x11֛y;\x19֜ve;\x14i\x02y\x06Β̚Ǜ֝\x01֝\t֞;\x1ca\x04b\x07h\x0b\x19Ƕrr;!֟lac;\x19Ǹar;\x14i\x02r\x06!֠sht;\t֡;Β̊β̪Ǜ֢\x01֢\x14a\x02b\fΒ\x14l\x02r\x03\tó;\tƠ;\x19֣lk;\x14c\x02t\x17\x14o\x02r\rΒͲ\x14;\x02e\x02\x01֤\x11֤r;\x19֥op;\x19֦ri;\x14a\x02l\x05\x19֧cr;ǛS\x01S\x14g\x02p\x05\x19֨on;\x11֩f;4a\nd\x0fh\x18l.s1uA)ƴrrow;IǷownarrow;̊ΒͺͺͲ\x14l\x02r\x06!óeft;)Ơight;\x19Dzus;͊\x1c;\x04h\x04l\x05\x01֪\tǽ;\x19֪on;A֫parrows;\x1cc\x04i\x19t\x1c\x14o\x02r\rΒͲ\x14;\x02e\x02\x01֬\x11֬r;\x19֭op;\x19֮ng;\x19֯ri;\x19ְcr;\x1cd\x04i\x07r\x0b\x19ֱot;!ֲlde;͊\x14;\x02f\x02\x01֍\tɺ;\x14a\x02m\x05\x19֫rr;͢Ǜֳ\x01ֳ1ִangle;|A\x1cB\x1fD)a-cÑdÓe×fālănćoĒpĕręsĝzŁ\x19_rr;̊Β\x14;\x02v\x02\x01ֵ\tֶ;!]ash;\x14n\x02r\x06!ַgrt;<e\fk\x13n\x18p\x1fr2s;ti9͉psilon;)ϛappa;9̽othing;\x1ch\x04i\x06r\x07\x11Ӎi;\tӐ;)Źopto;\x14;\x02h\x02\x01Ƿ\x11Ԓo;\x14i\x02u\x06!Ձgma;\x14b\x02p\x10Κ̪Ͳ̪Ί\x14;\x02q\x02\x01ָ\tֹ;Κ̪Ͳ̪Ί\x14;\x02q\x02\x01ֺ\tֻ;\x14h\x02r\x06!փeta;͊̊Ͳ̺̪͢\x14l\x02r\x06!îeft;)ƛight;\x11ּy;!Ƙash;\x1ce\x04l\x14r\x18\x1c;\x04b\x04e\x07\x01Ҵ\x19ֽar;\x11־q;!ֿlip;\x14b\x02t\x05\x19ȋar;\tȋ;\x11׀r;!îtri;ΚΪ\x14b\x02p\x03\tń;\tŊ;\x19ׁpf;!Źrop;!ƛtri;\x14c\x02u\x04\x11ׂr;\x14b\x02p\fͲ\x14E\x02e\x03\tֹ;\tָ;Ͳ\x14E\x02e\x03\tֻ;\tֺ;1׃igzag;<c\fe\x10f.o0p3r4s?!ׄirc;\x14d\x02i\x15\x14b\x02g\x05\x19ׅar;̪\x14;\x02q\x02\x01Ƚ\t׆;!ׇerp;\x11r;\x19pf;\tׇ;\x14;\x02e\x02\x01ȍ!ȍath;\x19cr;tc\x1ad,f0h2i?l@mMnPoSrps}uvw\x1ca\x04i\x06u\t\x11¼p;\x19ɯrc;\x11DZp;!ɵtri;\x11r;\x14A\x02a\x05\x19Zrr;\x19Ărr;\t;\x14A\x02a\x05\x19Yrr;\x19ārr;\x19Рap;\x19is;\x1cd\x04p\x07t\x12\x19ɰot;\x14f\x02l\x03\t;\x19ɱus;!ɲime;\x14A\x02a\x05\x19[rr;\x19ărr;\x14c\x02q\x04\x11r;!ɳcup;\x14p\x02t\x06!ɷlus;\x19ɶri;\x19Ȉee;)Ȕedge;Da\x0ec\x1be&f)i+o.s1u4̚\x14u\x02y\x06̪Ǜא\x01א\tב;\x14i\x02y\x05\x19גrc;\tד;ͲǛה\x01ה\x11וr;\x19זcy;\x19חpf;\x19טcr;\x14c\x02m\x04\x11יy;͢Ǜך\x01ךTa\x12c\x17d#e&f3h5i8o>sAwD)כcute;\x14a\x02y\x06!לron;\tם;\x19מot;\x14e\x02t\x06!Ȭtrf;\x11ןa;\x11נr;\x19סcy;1עgrarr;\x19ףpf;\x19פcr;\x14j\x02n\x03\tץ;\x11צj;", "Æ", "&", "Á", "Ă", "Â", "А", "𝔄", "À", "Α", "Ā", "⩓", "Ą", "𝔸", "", "Å", "𝒜", "≔", "Ã", "Ä", "∖", "⫧", "⌆", "Б", "∵", "ℬ", "Β", "𝔅", "𝔹", "˘", "≎", "Ч", "©", "Ć", "⋒", "ⅅ", "ℭ", "Č", "Ç", "Ĉ", "∰", "Ċ", "¸", "·", "Χ", "⊙", "⊖", "⊕", "⊗", "∲", "”", "’", "∷", "⩴", "≡", "∯", "∮", "ℂ", "∐", "∳", "⨯", "𝒞", "⋓", "≍", "⤑", "Ђ", "Ѕ", "Џ", "‡", "↡", "⫤", "Ď", "Д", "∇", "Δ", "𝔇", "´", "˙", "˝", "`", "˜", "⋄", "ⅆ", "𝔻", "¨", "⃜", "≐", "⇓", "⇐", "⇔", "⟸", "⟺", "⟹", "⇒", "⊨", "⇑", "⇕", "∥", "↓", "⤓", "⇵", "̑", "⥐", "⥞", "↽", "⥖", "⥟", "⇁", "⥗", "⊤", "↧", "𝒟", "Đ", "Ŋ", "Ð", "É", "Ě", "Ê", "Э", "Ė", "𝔈", "È", "∈", "Ē", "◻", "▫", "Ę", "𝔼", "Ε", "⩵", "≂", "⇌", "ℰ", "⩳", "Η", "Ë", "∃", "ⅇ", "Ф", "𝔉", "◼", "▪", "𝔽", "∀", "ℱ", "Ѓ", ">", "Γ", "Ϝ", "Ğ", "Ģ", "Ĝ", "Г", "Ġ", "𝔊", "⋙", "𝔾", "≥", "⋛", "≧", "⪢", "≷", "⩾", "≳", "𝒢", "≫", "Ъ", "ˇ", "^", "Ĥ", "ℌ", "ℋ", "ℍ", "─", "Ħ", "≏", "Е", "IJ", "Ё", "Í", "Î", "И", "İ", "ℑ", "Ì", "Ī", "ⅈ", "∬", "∫", "⋂", "", "", "Į", "𝕀", "Ι", "ℐ", "Ĩ", "І", "Ï", "Ĵ", "Й", "𝔍", "𝕁", "𝒥", "Ј", "Є", "Х", "Ќ", "Κ", "Ķ", "К", "𝔎", "𝕂", "𝒦", "Љ", "<", "Ĺ", "Λ", "⟪", "ℒ", "↞", "Ľ", "Ļ", "Л", "⟨", "←", "⇤", "⇆", "⌈", "⟦", "⥡", "⇃", "⥙", "⌊", "↔", "⥎", "⊣", "↤", "⥚", "⊲", "⧏", "⊴", "⥑", "⥠", "↿", "⥘", "↼", "⥒", "⋚", "≦", "≶", "⪡", "⩽", "≲", "𝔏", "⋘", "⇚", "Ŀ", "⟵", "⟷", "⟶", "𝕃", "↙", "↘", "↰", "Ł", "≪", "⤅", "М", " ", "ℳ", "𝔐", "∓", "𝕄", "Μ", "Њ", "Ń", "Ň", "Ņ", "Н", "", "\n", "𝔑", "", " ", "ℕ", "⫬", "≢", "≭", "∦", "∉", "≠", "≂̸", "∄", "≯", "≱", "≧̸", "≫̸", "≹", "⩾̸", "≵", "≎̸", "≏̸", "⋪", "⧏̸", "⋬", "≮", "≰", "≸", "≪̸", "⩽̸", "≴", "⪢̸", "⪡̸", "⊀", "⪯̸", "⋠", "∌", "⋫", "⧐̸", "⋭", "⊏̸", "⋢", "⊐̸", "⋣", "⊂⃒", "⊈", "⊁", "⪰̸", "⋡", "≿̸", "⊃⃒", "⊉", "≁", "≄", "≇", "≉", "∤", "𝒩", "Ñ", "Ν", "Œ", "Ó", "Ô", "О", "Ő", "𝔒", "Ò", "Ō", "Ω", "Ο", "𝕆", "“", "‘", "⩔", "𝒪", "Ø", "Õ", "⨷", "Ö", "‾", "⏞", "⎴", "⏜", "∂", "П", "𝔓", "Φ", "Π", "±", "ℙ", "⪻", "≺", "⪯", "≼", "≾", "″", "∏", "∝", "𝒫", "Ψ", "\"", "𝔔", "ℚ", "𝒬", "⤐", "®", "Ŕ", "⟫", "↠", "⤖", "Ř", "Ŗ", "Р", "ℜ", "∋", "⇋", "⥯", "Ρ", "⟩", "→", "⇥", "⇄", "⌉", "⟧", "⥝", "⇂", "⥕", "⌋", "⊢", "↦", "⥛", "⊳", "⧐", "⊵", "⥏", "⥜", "↾", "⥔", "⇀", "⥓", "ℝ", "⥰", "⇛", "ℛ", "↱", "⧴", "Щ", "Ш", "Ь", "Ś", "⪼", "Š", "Ş", "Ŝ", "С", "𝔖", "↑", "Σ", "∘", "𝕊", "√", "□", "⊓", "⊏", "⊑", "⊐", "⊒", "⊔", "𝒮", "⋆", "⋐", "⊆", "≻", "⪰", "≽", "≿", "∑", "⋑", "⊃", "⊇", "Þ", "™", "Ћ", "Ц", "\t", "Τ", "Ť", "Ţ", "Т", "𝔗", "∴", "Θ", " ", " ", "∼", "≃", "≅", "≈", "𝕋", "⃛", "𝒯", "Ŧ", "Ú", "↟", "⥉", "Ў", "Ŭ", "Û", "У", "Ű", "𝔘", "Ù", "Ū", "_", "⏟", "⎵", "⏝", "⋃", "⊎", "Ų", "𝕌", "⤒", "⇅", "↕", "⥮", "⊥", "↥", "↖", "↗", "ϒ", "Υ", "Ů", "𝒰", "Ũ", "Ü", "⊫", "⫫", "В", "⊩", "⫦", "⋁", "‖", "∣", "|", "❘", "≀", " ", "𝔙", "𝕍", "𝒱", "⊪", "Ŵ", "⋀", "𝔚", "𝕎", "𝒲", "𝔛", "Ξ", "𝕏", "𝒳", "Я", "Ї", "Ю", "Ý", "Ŷ", "Ы", "𝔜", "𝕐", "𝒴", "Ÿ", "Ж", "Ź", "Ž", "З", "Ż", "Ζ", "ℨ", "ℤ", "𝒵", "á", "ă", "∾", "∾̳", "∿", "â", "а", "æ", "𝔞", "à", "ℵ", "α", "ā", "⨿", "∧", "⩕", "⩜", "⩘", "⩚", "∠", "⦤", "∡", "⦨", "⦩", "⦪", "⦫", "⦬", "⦭", "⦮", "⦯", "∟", "⊾", "⦝", "∢", "⍼", "ą", "𝕒", "⩰", "⩯", "≊", "≋", "'", "å", "𝒶", "*", "ã", "ä", "⨑", "⫭", "≌", "϶", "‵", "∽", "⋍", "⊽", "⌅", "⎶", "б", "„", "⦰", "β", "ℶ", "≬", "𝔟", "◯", "⨀", "⨁", "⨂", "⨆", "★", "▽", "△", "⨄", "⤍", "⧫", "▴", "▾", "◂", "▸", "␣", "▒", "░", "▓", "█", "=⃥", "≡⃥", "⌐", "𝕓", "⋈", "╗", "╔", "╖", "╓", "═", "╦", "╩", "╤", "╧", "╝", "╚", "╜", "╙", "║", "╬", "╣", "╠", "╫", "╢", "╟", "⧉", "╕", "╒", "┐", "┌", "╥", "╨", "┬", "┴", "⊟", "⊞", "⊠", "╛", "╘", "┘", "└", "│", "╪", "╡", "╞", "┼", "┤", "├", "¦", "𝒷", "⁏", "\\", "⧅", "⟈", "•", "⪮", "ć", "∩", "⩄", "⩉", "⩋", "⩇", "⩀", "∩︀", "⁁", "⩍", "č", "ç", "ĉ", "⩌", "⩐", "ċ", "⦲", "¢", "𝔠", "ч", "✓", "χ", "○", "⧃", "ˆ", "≗", "↺", "↻", "Ⓢ", "⊛", "⊚", "⊝", "⨐", "⫯", "⧂", "♣", ":", ",", "@", "∁", "⩭", "𝕔", "℗", "↵", "✗", "𝒸", "⫏", "⫑", "⫐", "⫒", "⋯", "⤸", "⤵", "⋞", "⋟", "↶", "⤽", "∪", "⩈", "⩆", "⩊", "⊍", "⩅", "∪︀", "↷", "⤼", "⋎", "⋏", "¤", "∱", "⌭", "⥥", "†", "ℸ", "‐", "⤏", "ď", "д", "⇊", "⩷", "°", "δ", "⦱", "⥿", "𝔡", "♦", "ϝ", "⋲", "÷", "⋇", "ђ", "⌞", "⌍", "$", "𝕕", "≑", "∸", "∔", "⊡", "⌟", "⌌", "𝒹", "ѕ", "⧶", "đ", "⋱", "▿", "⦦", "џ", "⟿", "é", "⩮", "ě", "≖", "ê", "≕", "э", "ė", "≒", "𝔢", "⪚", "è", "⪖", "⪘", "⪙", "⏧", "ℓ", "⪕", "⪗", "ē", "∅", " ", " ", " ", "ŋ", " ", "ę", "𝕖", "⋕", "⧣", "⩱", "ε", "ϵ", "=", "≟", "⩸", "⧥", "≓", "⥱", "ℯ", "η", "ð", "ë", "€", "!", "ф", "♀", "ffi", "ff", "ffl", "𝔣", "fi", "fj", "♭", "fl", "▱", "ƒ", "𝕗", "⋔", "⫙", "⨍", "½", "⅓", "¼", "⅕", "⅙", "⅛", "⅔", "⅖", "¾", "⅗", "⅜", "⅘", "⅚", "⅝", "⅞", "⁄", "⌢", "𝒻", "⪌", "ǵ", "γ", "⪆", "ğ", "ĝ", "г", "ġ", "⪩", "⪀", "⪂", "⪄", "⋛︀", "⪔", "𝔤", "ℷ", "ѓ", "⪒", "⪥", "⪤", "≩", "⪊", "⪈", "⋧", "𝕘", "ℊ", "⪎", "⪐", "⪧", "⩺", "⋗", "⦕", "⩼", "⥸", "≩︀", "ъ", "⥈", "↭", "ℏ", "ĥ", "♥", "…", "⊹", "𝔥", "⤥", "⤦", "⇿", "∻", "↩", "↪", "𝕙", "―", "𝒽", "ħ", "⁃", "í", "î", "и", "е", "¡", "𝔦", "ì", "⨌", "∭", "⧜", "℩", "ij", "ī", "ı", "⊷", "Ƶ", "℅", "∞", "⧝", "⊺", "⨗", "⨼", "ё", "į", "𝕚", "ι", "¿", "𝒾", "⋹", "⋵", "⋴", "⋳", "ĩ", "і", "ï", "ĵ", "й", "𝔧", "ȷ", "𝕛", "𝒿", "ј", "є", "κ", "ϰ", "ķ", "к", "𝔨", "ĸ", "х", "ќ", "𝕜", "𝓀", "⤛", "⤎", "⪋", "⥢", "ĺ", "⦴", "λ", "⦑", "⪅", "«", "⤟", "⤝", "↫", "⤹", "⥳", "↢", "⪫", "⤙", "⪭", "⪭︀", "⤌", "❲", "{", "[", "⦋", "⦏", "⦍", "ľ", "ļ", "л", "⤶", "⥧", "⥋", "↲", "≤", "⇇", "⋋", "⪨", "⩿", "⪁", "⪃", "⋚︀", "⪓", "⋖", "⥼", "𝔩", "⪑", "⥪", "▄", "љ", "⥫", "◺", "ŀ", "⎰", "≨", "⪉", "⪇", "⋦", "⟬", "⇽", "⟼", "↬", "⦅", "𝕝", "⨭", "⨴", "∗", "◊", "(", "⦓", "⥭", "", "⊿", "‹", "𝓁", "⪍", "⪏", "‚", "ł", "⪦", "⩹", "⋉", "⥶", "⩻", "⦖", "◃", "⥊", "⥦", "≨︀", "∺", "¯", "♂", "✠", "▮", "⨩", "м", "—", "𝔪", "℧", "µ", "⫰", "−", "⨪", "⫛", "⊧", "𝕞", "𝓂", "μ", "⊸", "⋙̸", "≫⃒", "⇍", "⇎", "⋘̸", "≪⃒", "⇏", "⊯", "⊮", "ń", "∠⃒", "⩰̸", "≋̸", "ʼn", "♮", "⩃", "ň", "ņ", "⩭̸", "⩂", "н", "–", "⇗", "⤤", "≐̸", "⤨", "𝔫", "↮", "⫲", "⋼", "⋺", "њ", "≦̸", "↚", "‥", "𝕟", "¬", "⋹̸", "⋵̸", "⋷", "⋶", "⋾", "⋽", "⫽⃥", "∂̸", "⨔", "↛", "⤳̸", "↝̸", "𝓃", "⊄", "⫅̸", "⊅", "⫆̸", "ñ", "ν", "#", "№", " ", "⊭", "⤄", "≍⃒", "⊬", "≥⃒", ">⃒", "⧞", "⤂", "≤⃒", "<⃒", "⊴⃒", "⤃", "⊵⃒", "∼⃒", "⇖", "⤣", "⤧", "ó", "ô", "о", "ő", "⨸", "⦼", "œ", "⦿", "𝔬", "˛", "ò", "⧁", "⦵", "⦾", "⦻", "⧀", "ō", "ω", "ο", "⦶", "𝕠", "⦷", "⦹", "∨", "⩝", "ℴ", "ª", "º", "⊶", "⩖", "⩗", "⩛", "ø", "⊘", "õ", "⨶", "ö", "⌽", "¶", "⫳", "⫽", "п", "%", ".", "‰", "‱", "𝔭", "φ", "ϕ", "☎", "π", "ϖ", "ℎ", "+", "⨣", "⨢", "⨥", "⩲", "⨦", "⨧", "⨕", "𝕡", "£", "⪳", "⪷", "⪹", "⪵", "⋨", "′", "⌮", "⌒", "⌓", "⊰", "𝓅", "ψ", " ", "𝔮", "𝕢", "⁗", "𝓆", "⨖", "?", "⤜", "⥤", "∽̱", "ŕ", "⦳", "⦒", "⦥", "»", "⥵", "⤠", "⤳", "⤞", "⥅", "⥴", "↣", "↝", "⤚", "∶", "❳", "}", "]", "⦌", "⦎", "⦐", "ř", "ŗ", "р", "⤷", "⥩", "↳", "▭", "⥽", "𝔯", "⥬", "ρ", "ϱ", "⇉", "⋌", "˚", "", "⎱", "⫮", "⟭", "⇾", "⦆", "𝕣", "⨮", "⨵", ")", "⦔", "⨒", "›", "𝓇", "⋊", "▹", "⧎", "⥨", "℞", "ś", "⪴", "⪸", "š", "ş", "ŝ", "⪶", "⪺", "⋩", "⨓", "с", "⋅", "⩦", "⇘", "§", ";", "⤩", "✶", "𝔰", "♯", "щ", "ш", "", "σ", "ς", "⩪", "⪞", "⪠", "⪝", "⪟", "≆", "⨤", "⥲", "⨳", "⧤", "⌣", "⪪", "⪬", "⪬︀", "ь", "/", "⧄", "⌿", "𝕤", "♠", "⊓︀", "⊔︀", "𝓈", "☆", "⊂", "⫅", "⪽", "⫃", "⫁", "⫋", "⊊", "⪿", "⥹", "⫇", "⫕", "⫓", "♪", "¹", "²", "³", "⫆", "⪾", "⫘", "⫄", "⟉", "⫗", "⥻", "⫂", "⫌", "⊋", "⫀", "⫈", "⫔", "⫖", "⇙", "⤪", "ß", "⌖", "τ", "ť", "ţ", "т", "⌕", "𝔱", "θ", "ϑ", "þ", "×", "⨱", "⨰", "⌶", "⫱", "𝕥", "⫚", "‴", "▵", "≜", "◬", "⨺", "⨹", "⧍", "⨻", "⏢", "𝓉", "ц", "ћ", "ŧ", "⥣", "ú", "ў", "ŭ", "û", "у", "ű", "⥾", "𝔲", "ù", "▀", "⌜", "⌏", "◸", "ū", "ų", "𝕦", "υ", "⇈", "⌝", "⌎", "ů", "◹", "𝓊", "⋰", "ũ", "ü", "⦧", "⫨", "⫩", "⦜", "⊊︀", "⫋︀", "⊋︀", "⫌︀", "в", "⊻", "≚", "⋮", "𝔳", "𝕧", "𝓋", "⦚", "ŵ", "⩟", "≙", "℘", "𝔴", "𝕨", "𝓌", "𝔵", "ξ", "⋻", "𝕩", "𝓍", "ý", "я", "ŷ", "ы", "¥", "𝔶", "ї", "𝕪", "𝓎", "ю", "ÿ", "ź", "ž", "з", "ż", "ζ", "𝔷", "ж", "⇝", "𝕫", "𝓏", "", ""];
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Decodes all known HTML entities and numeric character references in the input.
|
|
158
|
+
*/
|
|
159
|
+
var decodeHTML = createEntityDecoder({
|
|
160
|
+
entitiesTrie: unpackData(htmlData),
|
|
161
|
+
numericReferenceSemicolonRequired: false,
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
var xmlData = ["$a\x06g\x12l\x14q\x16\x14m\x02p\x04\x11\x00p;\x19\x01os;\x11\x02t;\x11\x03t;!\x04uot;", "&", "'", ">", "<", "\""];
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Decodes XML entities and numeric character references in the input.
|
|
168
|
+
*/
|
|
169
|
+
var decodeXML = createEntityDecoder({
|
|
170
|
+
entitiesTrie: unpackData(xmlData),
|
|
171
|
+
numericReferenceSemicolonRequired: true,
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
var re$1 = /["&'<>\u0080-\uffff]/g;
|
|
175
|
+
function encodeXML(input) {
|
|
176
|
+
var output = '';
|
|
177
|
+
var textIndex = 0;
|
|
178
|
+
while (re$1.test(input)) {
|
|
179
|
+
var lastIndex = re$1.lastIndex;
|
|
180
|
+
var startIndex = lastIndex - 1;
|
|
181
|
+
var charCode = input.charCodeAt(startIndex);
|
|
182
|
+
var entity = void 0;
|
|
183
|
+
if (charCode >= 0x80 && charCode <= 0xffff) {
|
|
184
|
+
var codePoint = charCode;
|
|
185
|
+
if ((charCode & 0xfc00) === 0xd800) {
|
|
186
|
+
// Surrogate pair
|
|
187
|
+
codePoint = charCode * 0x400 + input.charCodeAt(lastIndex) - 0x35fdc00;
|
|
188
|
+
re$1.lastIndex = ++lastIndex;
|
|
189
|
+
}
|
|
190
|
+
entity = '&#x' + codePoint.toString(16) + ';';
|
|
191
|
+
}
|
|
192
|
+
else if (charCode === 34) {
|
|
193
|
+
entity = '"';
|
|
194
|
+
}
|
|
195
|
+
else if (charCode === 38) {
|
|
196
|
+
entity = '&';
|
|
197
|
+
}
|
|
198
|
+
else if (charCode === 39) {
|
|
199
|
+
entity = ''';
|
|
200
|
+
}
|
|
201
|
+
else if (charCode === 60) {
|
|
202
|
+
entity = '<';
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
entity = '>';
|
|
206
|
+
}
|
|
207
|
+
output += textIndex === startIndex ? entity : input.slice(textIndex, startIndex) + entity;
|
|
208
|
+
textIndex = lastIndex;
|
|
209
|
+
}
|
|
210
|
+
return textIndex === 0 ? input : textIndex === input.length ? output : output + input.slice(textIndex);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
var re = /["&'<>]/g;
|
|
214
|
+
function escapeXML(input) {
|
|
215
|
+
var output = '';
|
|
216
|
+
var textIndex = 0;
|
|
217
|
+
while (re.test(input)) {
|
|
218
|
+
var lastIndex = re.lastIndex;
|
|
219
|
+
var startIndex = lastIndex - 1;
|
|
220
|
+
var charCode = input.charCodeAt(startIndex);
|
|
221
|
+
var entity = void 0;
|
|
222
|
+
if (charCode === 34) {
|
|
223
|
+
entity = '"';
|
|
224
|
+
}
|
|
225
|
+
else if (charCode === 38) {
|
|
226
|
+
entity = '&';
|
|
227
|
+
}
|
|
228
|
+
else if (charCode === 39) {
|
|
229
|
+
entity = ''';
|
|
230
|
+
}
|
|
231
|
+
else if (charCode === 60) {
|
|
232
|
+
entity = '<';
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
entity = '>';
|
|
236
|
+
}
|
|
237
|
+
output += textIndex === startIndex ? entity : input.slice(textIndex, startIndex) + entity;
|
|
238
|
+
textIndex = lastIndex;
|
|
239
|
+
}
|
|
240
|
+
return textIndex === 0 ? input : textIndex === input.length ? output : output + input.slice(textIndex);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
export { createEntityDecoder, decodeHTML, decodeXML, encodeXML, escapeXML };
|
package/package.json
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "speedy-entities",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.1",
|
|
4
4
|
"description": "The fastest XML/HTML entities decoder.",
|
|
5
|
-
"main": "./lib/index
|
|
6
|
-
"module": "./lib/index.
|
|
5
|
+
"main": "./lib/index.js",
|
|
6
|
+
"module": "./lib/index.mjs",
|
|
7
7
|
"types": "./lib/index.d.ts",
|
|
8
8
|
"sideEffects": false,
|
|
9
9
|
"files": [
|
|
10
10
|
"lib"
|
|
11
11
|
],
|
|
12
12
|
"scripts": {
|
|
13
|
-
"build": "
|
|
14
|
-
"clean": "rimraf ./src/main/gen ./lib ./docs",
|
|
15
|
-
"test": "jest
|
|
13
|
+
"build": "npm run gen:entities-trie && rollup --config --configPlugin typescript",
|
|
14
|
+
"clean": "rimraf './src/main/gen' './lib' './docs'",
|
|
15
|
+
"test": "jest",
|
|
16
16
|
"perf": "[ -d ./lib ] || npm run build && toofast ./src/test/perf.js",
|
|
17
|
-
"docs": "typedoc ./src/main/index.ts",
|
|
18
|
-
"
|
|
19
|
-
"
|
|
17
|
+
"docs:build": "typedoc './src/main/index.ts' && cp -R ./images ./docs",
|
|
18
|
+
"docs:release": "npm run docs:build && SHA=$(git rev-parse --short HEAD) && ORIGIN=$(git config --get remote.origin.url) && TEMP=$(mktemp -d) && git clone -b ghpages --single-branch $ORIGIN $TEMP && ls -A $TEMP | grep -wv .git | xargs rm -rf && cp -R ./docs/ $TEMP && cd $TEMP && git add . && git commit -m \"Updated docs ($SHA)\" && git push && rm -rf $TEMP",
|
|
19
|
+
"gen:entities-trie": "ts-node ./src/scripts/gen-entities-trie.ts"
|
|
20
20
|
},
|
|
21
21
|
"repository": {
|
|
22
22
|
"type": "git",
|
|
@@ -25,7 +25,8 @@
|
|
|
25
25
|
"keywords": [
|
|
26
26
|
"entities",
|
|
27
27
|
"html-entities",
|
|
28
|
-
"decoder"
|
|
28
|
+
"decoder",
|
|
29
|
+
"encoder"
|
|
29
30
|
],
|
|
30
31
|
"author": "Savva Mikhalevski <smikhalevski@gmail.com>",
|
|
31
32
|
"license": "MIT",
|
|
@@ -33,23 +34,26 @@
|
|
|
33
34
|
"url": "https://github.com/smikhalevski/speedy-entities/issues"
|
|
34
35
|
},
|
|
35
36
|
"homepage": "https://github.com/smikhalevski/speedy-entities#readme",
|
|
36
|
-
"jest": {
|
|
37
|
-
"preset": "ts-jest"
|
|
38
|
-
},
|
|
39
37
|
"devDependencies": {
|
|
40
|
-
"@rollup/plugin-
|
|
41
|
-
"@rollup/plugin-
|
|
42
|
-
"@types/jest": "^
|
|
43
|
-
"entities": "^4.
|
|
44
|
-
"
|
|
38
|
+
"@rollup/plugin-node-resolve": "^15.0.1",
|
|
39
|
+
"@rollup/plugin-typescript": "^11.0.0",
|
|
40
|
+
"@types/jest": "^29.2.5",
|
|
41
|
+
"entities": "^4.4.0",
|
|
42
|
+
"he": "^1.2.0",
|
|
43
|
+
"html-entities": "^2.3.3",
|
|
44
|
+
"jest": "^29.3.1",
|
|
45
|
+
"prettier": "^2.8.1",
|
|
45
46
|
"rimraf": "^3.0.2",
|
|
46
|
-
"rollup": "^
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"
|
|
47
|
+
"rollup": "^3.9.1",
|
|
48
|
+
"rollup-plugin-dts": "^5.1.1",
|
|
49
|
+
"toofast": "^1.3.1",
|
|
50
|
+
"ts-jest": "^29.0.3",
|
|
51
|
+
"ts-node": "^10.9.1",
|
|
52
|
+
"tslib": "^2.4.1",
|
|
53
|
+
"typedoc": "^0.23.23",
|
|
54
|
+
"typescript": "^4.9.4"
|
|
51
55
|
},
|
|
52
56
|
"dependencies": {
|
|
53
|
-
"@smikhalevski/trie": "^
|
|
57
|
+
"@smikhalevski/trie": "^2.2.0"
|
|
54
58
|
}
|
|
55
59
|
}
|
package/lib/EntityManager.d.ts
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
export interface IEntity {
|
|
2
|
-
name: string;
|
|
3
|
-
value: string;
|
|
4
|
-
legacy: boolean;
|
|
5
|
-
}
|
|
6
|
-
export declare class EntityManager {
|
|
7
|
-
private _trie;
|
|
8
|
-
/**
|
|
9
|
-
* Sets a new mapping from entity name to a replacement value.
|
|
10
|
-
*
|
|
11
|
-
* @param name The entity name.
|
|
12
|
-
* @param value The value that the entity reference is replaced with.
|
|
13
|
-
* @param legacy If `true` then entity reference doesn't require a trailing semicolon.
|
|
14
|
-
*/
|
|
15
|
-
set(name: string, value: string, legacy?: boolean): void;
|
|
16
|
-
/**
|
|
17
|
-
* Sets multiple entity mappings.
|
|
18
|
-
*
|
|
19
|
-
* @param entities The map from an entity name to a value.
|
|
20
|
-
* @param legacy If `true` then entity reference doesn't require a trailing semicolon.
|
|
21
|
-
*/
|
|
22
|
-
setAll(entities: Record<string, string>, legacy?: boolean): void;
|
|
23
|
-
/**
|
|
24
|
-
* Searches an entity name in the `input` string staring from `offset`.
|
|
25
|
-
*
|
|
26
|
-
* ```ts
|
|
27
|
-
* const entityManager = new EntityManager();
|
|
28
|
-
*
|
|
29
|
-
* entityManager.set('foo', 'bar');
|
|
30
|
-
*
|
|
31
|
-
* entityManager.search('__foo__', 2);
|
|
32
|
-
* // → {key: "foo", value: "bar", legacy: false}
|
|
33
|
-
* ```
|
|
34
|
-
*
|
|
35
|
-
* @param input The string to search entity names in.
|
|
36
|
-
* @param offset The offset in the `input` to start searching from.
|
|
37
|
-
*/
|
|
38
|
-
search(input: string, offset: number): IEntity | undefined;
|
|
39
|
-
}
|
package/lib/EntityManager.js
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { createTrieNode, searchTrie, setTrie } from '@smikhalevski/trie';
|
|
2
|
-
var EntityManager = /** @class */ (function () {
|
|
3
|
-
function EntityManager() {
|
|
4
|
-
this._trie = createTrieNode();
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Sets a new mapping from entity name to a replacement value.
|
|
8
|
-
*
|
|
9
|
-
* @param name The entity name.
|
|
10
|
-
* @param value The value that the entity reference is replaced with.
|
|
11
|
-
* @param legacy If `true` then entity reference doesn't require a trailing semicolon.
|
|
12
|
-
*/
|
|
13
|
-
EntityManager.prototype.set = function (name, value, legacy) {
|
|
14
|
-
return setTrie(this._trie, name, { name: name, value: value, legacy: legacy || false });
|
|
15
|
-
};
|
|
16
|
-
/**
|
|
17
|
-
* Sets multiple entity mappings.
|
|
18
|
-
*
|
|
19
|
-
* @param entities The map from an entity name to a value.
|
|
20
|
-
* @param legacy If `true` then entity reference doesn't require a trailing semicolon.
|
|
21
|
-
*/
|
|
22
|
-
EntityManager.prototype.setAll = function (entities, legacy) {
|
|
23
|
-
for (var _i = 0, _a = Object.entries(entities); _i < _a.length; _i++) {
|
|
24
|
-
var _b = _a[_i], name_1 = _b[0], value = _b[1];
|
|
25
|
-
this.set(name_1, value, legacy);
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
/**
|
|
29
|
-
* Searches an entity name in the `input` string staring from `offset`.
|
|
30
|
-
*
|
|
31
|
-
* ```ts
|
|
32
|
-
* const entityManager = new EntityManager();
|
|
33
|
-
*
|
|
34
|
-
* entityManager.set('foo', 'bar');
|
|
35
|
-
*
|
|
36
|
-
* entityManager.search('__foo__', 2);
|
|
37
|
-
* // → {key: "foo", value: "bar", legacy: false}
|
|
38
|
-
* ```
|
|
39
|
-
*
|
|
40
|
-
* @param input The string to search entity names in.
|
|
41
|
-
* @param offset The offset in the `input` to start searching from.
|
|
42
|
-
*/
|
|
43
|
-
EntityManager.prototype.search = function (input, offset) {
|
|
44
|
-
var _a;
|
|
45
|
-
return (_a = searchTrie(this._trie, input, offset)) === null || _a === void 0 ? void 0 : _a.value;
|
|
46
|
-
};
|
|
47
|
-
return EntityManager;
|
|
48
|
-
}());
|
|
49
|
-
export { EntityManager };
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { EntityManager } from './EntityManager';
|
|
2
|
-
export interface IEntityDecoderOptions {
|
|
3
|
-
/**
|
|
4
|
-
* If `true` then numeric character references must be terminated with a semicolon.
|
|
5
|
-
*
|
|
6
|
-
* @default false
|
|
7
|
-
*/
|
|
8
|
-
numericCharacterReferenceTerminated?: boolean;
|
|
9
|
-
/**
|
|
10
|
-
* If `true` then an error is thrown when an illegal code point is met.
|
|
11
|
-
*
|
|
12
|
-
* @default false
|
|
13
|
-
* @see {@link https://en.wikipedia.org/wiki/Valid_characters_in_XML Valid characters in XML on Wikipedia}
|
|
14
|
-
*/
|
|
15
|
-
illegalCodePointsForbidden?: boolean;
|
|
16
|
-
/**
|
|
17
|
-
* The char that is used instead of the illegal code point.
|
|
18
|
-
*
|
|
19
|
-
* @default "\ufffd"
|
|
20
|
-
*/
|
|
21
|
-
replacementChar?: string;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Creates an entity decoder that rewrites numeric and named entities found in input to their respective values.
|
|
25
|
-
*
|
|
26
|
-
* @param entityManager An entity manager that defines named entities.
|
|
27
|
-
* @param options The decoder options.
|
|
28
|
-
*/
|
|
29
|
-
export declare function createEntityDecoder(entityManager: EntityManager, options?: IEntityDecoderOptions): (input: string) => string;
|