codemirror-lang-msil 0.0.1-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +37 -0
- package/dist/index.cjs +2153 -0
- package/dist/index.d.cts +25 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.js +2147 -0
- package/package.json +63 -0
- package/src/complete.ts +340 -0
- package/src/index.ts +70 -0
- package/src/instructions.ts +931 -0
- package/src/keywords.ts +755 -0
- package/src/syntax.grammar +1594 -0
- package/src/syntax.grammar.d.ts +3 -0
- package/src/tokens.ts +60 -0
- package/src/tooltip.ts +49 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,2147 @@
|
|
|
1
|
+
import { ExternalTokenizer, LRParser } from '@lezer/lr';
|
|
2
|
+
import { syntaxTree, LRLanguage, indentNodeProp, continuedIndent, foldNodeProp, foldInside, LanguageSupport } from '@codemirror/language';
|
|
3
|
+
import { styleTags, tags } from '@lezer/highlight';
|
|
4
|
+
import { hoverTooltip } from '@codemirror/view';
|
|
5
|
+
|
|
6
|
+
// This file was generated by lezer-generator. You probably shouldn't edit it.
|
|
7
|
+
const dotIdentifier = 573;
|
|
8
|
+
|
|
9
|
+
const CHAR_DOT = 46;
|
|
10
|
+
const CHAR_A = 65;
|
|
11
|
+
const CHAR_Z = 90;
|
|
12
|
+
const CHAR_LOWER_A = 97;
|
|
13
|
+
const CHAR_LOWER_Z = 122;
|
|
14
|
+
const DOT_BOUNDARY_CHARS = /*@__PURE__*/new Set([
|
|
15
|
+
123, // {
|
|
16
|
+
125, // }
|
|
17
|
+
40, // (
|
|
18
|
+
41, // )
|
|
19
|
+
91, // [
|
|
20
|
+
93, // ]
|
|
21
|
+
44, // ,
|
|
22
|
+
58, // :
|
|
23
|
+
60, // <
|
|
24
|
+
62 // >
|
|
25
|
+
]);
|
|
26
|
+
function isWhitespace(c) {
|
|
27
|
+
return c === 32 || c === 9 || c === 10 || c === 13;
|
|
28
|
+
}
|
|
29
|
+
function isDotBoundaryBefore(c) {
|
|
30
|
+
if (c < 0) {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
if (isWhitespace(c)) {
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
return DOT_BOUNDARY_CHARS.has(c);
|
|
37
|
+
}
|
|
38
|
+
function isLetter(c) {
|
|
39
|
+
return (c >= CHAR_A && c <= CHAR_Z) || (c >= CHAR_LOWER_A && c <= CHAR_LOWER_Z);
|
|
40
|
+
}
|
|
41
|
+
// Contextual tokenizer for dot-prefixed directive identifiers (.class, .namespace, .ctor, …).
|
|
42
|
+
// contextual: true means it only runs when the parser state explicitly expects
|
|
43
|
+
// a dotIdentifier token, so it does NOT compete with the plain '.' separator
|
|
44
|
+
// inside dottedName rules.
|
|
45
|
+
const dotTokens = /*@__PURE__*/new ExternalTokenizer(input => {
|
|
46
|
+
if (input.next !== CHAR_DOT) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const prev = input.peek(-1);
|
|
50
|
+
if (!isDotBoundaryBefore(prev)) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
let offset = 1;
|
|
54
|
+
let first = input.peek(offset);
|
|
55
|
+
if (!isLetter(first)) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
while (isLetter(first)) {
|
|
59
|
+
offset++;
|
|
60
|
+
first = input.peek(offset);
|
|
61
|
+
}
|
|
62
|
+
for (let i = 0; i < offset; i++) {
|
|
63
|
+
input.advance();
|
|
64
|
+
}
|
|
65
|
+
input.acceptToken(dotIdentifier);
|
|
66
|
+
}, { contextual: true });
|
|
67
|
+
|
|
68
|
+
// This file was generated by lezer-generator. You probably shouldn't edit it.
|
|
69
|
+
const spec_dotIdentifier = {__proto__:null,".class":10, ".ctor":130, ".module":160, ".this":164, ".base":166, ".nester":168, ".method":388, ".cctor":434, ".emitbyte":442, ".try":444, ".maxstack":462, ".locals":464, ".entrypoint":468, ".zeroinit":470, ".data":474, ".permission":750, ".permissionset":848, ".line":854, ".language":860, ".custom":864, ".export":868, ".vtentry":870, ".override":872, ".param":874, ".event":880, ".addon":888, ".removeon":890, ".fire":892, ".other":894, ".property":898, ".set":906, ".get":908, ".field":912, ".size":924, ".pack":926, ".file":934, ".assembly":938, mdtoken:940, ".interfaceimpl":948, ".namespace":952, ".vtable":960, ".vtfixup":964, ".hash":978, ".publickey":1004, ".ver":1006, ".locale":1008, ".publickeytoken":1014, extern:1018, ".mresource":1022, ".subsystem":1028, ".corflags":1030, ".imagebase":1034, ".stackreserve":1036, ".typedef":1040, ".typelist":1042, ".mscorlib":1046};
|
|
70
|
+
const spec_identifier = {__proto__:null,public:14, private:16, value:18, enum:20, interface:22, sealed:24, abstract:26, auto:28, sequential:30, explicit:32, extended:34, ansi:36, unicode:38, autochar:40, import:42, serializable:44, windowsruntime:46, nested:48, family:50, assembly:52, famandassem:54, famorassem:56, beforefieldinit:58, specialname:60, rtspecialname:62, flags:64, native:76, cil:78, optil:80, managed:82, unmanaged:84, forwardref:86, preservesig:88, runtime:90, internalcall:92, synchronized:94, noinlining:96, aggressiveinlining:98, nooptimization:100, aggressiveoptimization:102, async:104, class:124, valuetype:126, byreflike:128, mdtoken:152, object:172, pinned:176, typedref:178, void:180, modreq:188, modopt:190, method:194, instance:198, default:200, vararg:202, cdecl:204, stdcall:206, thiscall:208, fastcall:210, callconv:212, in:220, out:224, opt:228, marshal:234, custom:240, fixed:246, sysstring:248, array:250, variant:252, currency:254, syschar:256, bool:258, int8:260, int16:262, int32:264, int64:266, float32:268, float64:270, error:272, unsigned:274, int:276, uint8:278, uint16:280, uint32:282, uint64:284, decimal:288, date:290, bstr:292, lpstr:294, lpwstr:296, lptstr:298, objectref:300, iunknown:302, idispatch:304, struct:310, safearray:312, null:314, uint:316, hresult:318, carray:320, userdefined:322, record:324, filetime:326, blob:328, stream:330, storage:332, streamed_object:334, stored_object:336, blob_object:338, cf:340, clsid:342, byvalstr:344, tbstr:346, as:348, any:350, lpstruct:352, char:368, string:370, extends:376, implements:380, static:392, final:394, virtual:396, strict:398, privatescope:400, hidebysig:402, newslot:404, unmanagedexp:406, reqsecobj:408, pinvokeimpl:410, nomangle:416, lasterr:418, winapi:420, bestfit:422, charmaperror:424, on:428, off:430, to:450, catch:452, handler:454, filter:456, finally:458, fault:460, init:466, tls:476, bytearray:484, nop:498, break:500, ldarg:502, ldloc:504, stloc:506, ldnull:508, ldc:510, dup:512, pop:514, ret:516, ldind:518, stind:520, add:522, sub:524, mul:526, div:528, rem:530, and:532, or:534, xor:536, shl:538, shr:540, neg:542, not:544, conv:546, throw:548, ldlen:550, ldelem:552, stelem:554, ckfinite:556, endfinally:558, prefix7:560, prefix6:562, prefix5:564, prefix4:566, prefix3:568, prefix2:570, prefix1:572, prefixref:574, arglist:576, ceq:578, cgt:580, clt:582, localloc:584, endfilter:586, volatile:588, tail:590, cpblk:592, initblk:594, rethrow:596, refanytype:598, readonly:600, illegal:602, endmac:604, ldarga:608, starg:610, ldloca:612, unaligned:616, no:618, br:626, brfalse:628, brtrue:630, beq:632, bge:634, bgt:636, ble:638, blt:640, bne:642, "bne.un":644, "bge.un":646, "bgt.un":648, "ble.un":650, "blt.un":652, leave:654, jmp:658, call:660, callvirt:662, newobj:664, ldftn:666, ldvirtftn:668, ldfld:678, ldflda:680, stfld:682, ldsfld:684, ldsflda:686, stsfld:688, cpobj:694, ldobj:696, castclass:698, isinst:700, unbox:702, stobj:704, box:706, newarr:708, ldelema:710, "unbox.any":712, refanyval:714, mkrefany:716, initobj:718, constrained:720, sizeof:722, ldstr:726, calli:730, ldtoken:734, field:738, switch:742, request:752, demand:754, assert:756, deny:758, permitonly:760, linkcheck:762, inheritcheck:764, reqmin:766, reqopt:768, reqrefuse:770, prejitgrant:772, prejitdeny:774, noncasdemand:776, noncaslinkdemand:778, noncasinheritance:780, nullref:798, type:802, property:846, constraint:876, initonly:916, literal:918, notserialized:920, forwarder:930, extern:936, with:942, fromunmanaged:966, callmostderived:968, retainappdomain:970, at:972, nometadata:976, retargetable:982, noplatform:984, legacy:986, library:988, x86:990, amd64:992, arm:994, arm64:996, algorithm:1000, alignment:1032};
|
|
71
|
+
const parser = /*@__PURE__*/LRParser.deserialize({
|
|
72
|
+
version: 14,
|
|
73
|
+
states: "$0UO#fQROOO#mQQO'$#fO#mQQO'$#fOOQP'$#f'$#fO$wQQO'$#fOOQO'$#o'$#oOOQP'#Lm'#LmOOQP'$ v'$ vOOQP'#Nn'#NnO$|QRO'$ uQOQQOOO&zQQO'#HbO'UQQO'$#jO'UQQO'#KbO(VQQO'$#nO([QQO'#LkO*mQQO'$#pO-jQQO'#MVO-qQQO'#MwO/oQQO'#MzO/vQRO'#NcO5gQRO'#NiO5nQQO'$ vO5sQQO'#KbO5xQQO'#GeO<PQRO'#C`O#mQQO'#MkO<WQQO'#MoO<]QQO'#MqO<bQQO'#N`O<lQQO'$ vOOQP'$ y'$ yOGUQRO'$ xOLsQRO,5GQOOQP'#Dw'#DwOOQP,5GQ,5GQOOQP-EAl-EAlOOQP'#HU'#HUOOQP'$!b'$!bO!,^QQO'$ yOOQO'$!a'$!aO!9pQRO'$!dO!9wQRO'$!dO!:OQRO'$!dOOQP,5=|,5=|O!:VQQO,5=|O!:[QQO,5=|O!:cQQO'$!dO!:hQQO'$!dO5sQQO'$!dO!:mQQO'#HeOOQP'$#V'$#VO!;[QQO,5GUO!;gQRO,5@|O!>rQQO,5GYO!?QQRO,5BVOOQO'#Eb'#EbO2XQRO'#LoOOQO'$!Q'$!QO!JvQQO'$!QO!L|QQO'#EbO# YQRO,5G[O#-kQQO'#EbO#-pQQO'#JiO(aQQO,5G]O#-kQQO'#JiOOQP'#ET'#ETO#/gQQO'#ETO#-pQQO'#ETOOQO'$ e'$ eO*tQQO,5BqO#/qQQO'#EsOOQP'$!Z'$!ZO#/vQQO'$!ZO#0UQRO'#ETO#0iQQO'#ETO#0nQQO'#ETOOQO'#MX'#MXO#0yQQO,5BqO#1ZQQO'#ETO#3dQQO'#MXO#-kQQO'#MXO*tQQO,5BqO#3iQQO,5CcO#3pQRO,5CcO#6SQQO,5EbOOQO'$ i'$ iOOQO'$ j'$ jO-{QQO,5CfO#8nQRO'$ yOOQP'#Dv'#DvOOQO'$#z'$#zO#:dQQO'$#zO#:iQRO,5CfO-{QQO,5CuOOQP'#EP'#EPOOQP,5C},5C}O#<xQRO,5C}O#?WQRO'#DuO#?eQRO'$ }O#NZQRO'$ yOOQP'#Dr'#DrO#-pQQO'#K[O$*^QQO,5DTO$*jQQO,5DTO#mQQO'#DrO(aQQO'#K[O#-kQQO'#DrOOQP,5Eb,5EbO$*oQSO'#HiOOQP,5@|,5@|OOQO'#N|'#N|O5xQQO,5=POOQO'#Gg'#GgO#-kQQO'#GgO$*tQQO'#GgO$*yQQO,5=POOQO'#No'#NoO9dQQO,58zOOQO'#Cb'#CbO$+QQQO'#CbO$-|QQO'#CbOOQO'#DR'#DRO#-kQQO'#CbO$.bQQO,58zO$.pQQO,5CxOOQO'#Mm'#MmO$/QQQO,5CVO5sQQO,5CZO$/hQQO,5C]OOQO'$ m'$ mO<bQQO,5CzOOQO'$$P'$$PO$/oQQO,5CzO$/wQRO'#NlO#mQQO'#NpO$:rQRO,5EdO$@aQRO'$!VOOQP1G<l1G<lO% VQWO'#HjO% bQRO,5FOOOQP,5FO,5FOO%,wQQO'#HlO%,|QQO'#DPO%-RQQO1G3hOOQP1G3h1G3hO%-YQQO1G3hO%-_QQO,5FOO#mQQO'#HgO%-dQQO'$!cO%-lQQO,5>PO%-qQQO1G<pOOQO1G<p1G<pOOQP1G6h1G6hOOQP'$ |'$ |O%8sQRO'$ |O%:]QRO1G6hO%FRQRO'$ |OOQP1G<t1G<tO%G_QQO1G<tO%GdQQO1G<tO%GiQQO1G7qOOQP'$#S'$#SO%GnQQO,5BZOOQO,5El,5ElOOQO,5:|,5:|O%GsQQO1G<vO%KgQRO,5@TO%KnQRO1G<wOOQP,5@T,5@TOOQP,5:o,5:oO&*PQQO,5:oO&*WQRO,5:oOOQO-EBc-EBcO#0yQQO1G8]O&8sQQO,5;_OOQP,5Eu,5EuO#0UQRO,5:oO&8xQQO,5:oO&:_QaO'$ xO&<QQQO'#EZO&=jQaO'#JsOOQP1G8]1G8]O&?]Q`O1G8]O#-pQQO'#GYO&?eQQO,5:oO#-pQQO,5:oO&?jQQO'#EvOOQO,5Bs,5BsO*tQQO1G8]OOQO-EBg-EBgO&DoQRO1G8}O&DvQQO1G8}O&B`QRO1G8}OOQP1G:|1G:|OOQO-EBh-EBhO&D{QRO1G9QOOQO,5Gf,5GfO&H`QRO'#NTOOQP1G9Q1G9QO-{QQO1G9aO&HgQRO1G9aOOQP1G9i1G9iO&JyQQO,5:aO&KOQQO,5:gO#mQQO,5:iO#-kQQO,5:eO#mQQO'#NrO&KTQRO,5EiO'+yQRO,5@vO#mQQO1G9oOOQP,5:^,5:^O#-pQQO,5:oOOQP,5@v,5@vOOQO'#Nv'#NvO'/_QSO,5>TOOQO-EAz-EAzO$*yQQO1G2kOOQO,5=R,5=RO'0bQQO'#GrOOQO'#Nt'#NtO$*yQQO1G2kO'0lQQO'#EmOOQO'#El'#ElO'0zQRO1G2kOOQO-EAm-EAmO$.bQQO1G.fOOQO,58|,58|O'3XQRO'#GdO!;gQRO'#G_O!;gQRO'#GaO'3`QRO'#DhOOQO'#De'#DeOOQP1G.f1G.fO'3|QQO1G.fO'4RQQO1G.fO$.eQQO1G.fOOQO'$ f'$ fO$.pQQO1G9dOOQO'$#w'$#wO'4ZQQO'$#wO'4oQQO1G9dO'4tQRO'#MnOOQP1G8q1G8qOOQP1G8u1G8uOOQO'$ h'$ hO'4{QQO1G8wOOQO'$#y'$#yO#mQQO1G8wOOQO-EBk-EBkO'5SQQO1G9fO'6PQRO'#NbOOQP1G9f1G9fO#mQQO1G9fOOQP'$ o'$ oO'6WQRO'$$RO'6nQQO,5DWOOQP,5D[,5D[OOQP-EAn-EAnO'6sQQO'#NuO'6xQRO,5EqOOQP'$!e'$!eO'EnQQO,5>UO#-kQQO'$!eO'EsQQO'$!eOOQP1G;j1G;jO'ExQQO,5>WO'E}QQO,59kOOQP7+)S7+)SO%-RQQO7+)SO'FSQQO'#HfO'FXQQO,5>RO!:mQQO'$ RO'F^QQO,5E}OOQP1G3k1G3kO'FfQRO'#LgOOQP7+,S7+,SO'FmQQO'#KsO%GyQQO7+,SO'FuQQO7+2`O'F}QQO7+2`O'GSQRO7+-]OOQO1G7u1G7uOOQP7+2b7+2bO($xQQO'#KxO(&iQTO'$ xO(&pQRO'#EZO('WQSO'$ }O('lQSO'$ |OOQP'#G|'#G|O('}QTO'$ yO(2eQSO'#DwO(2sQSO'$ |O(2zQSO1G5oO(3PQQO1G5oO%GsQQO7+2cOOQP1G0Z1G0ZOOQP7+-w7+-wO(3XQ`O7+-wOOQP1G0y1G0yO(4qQaO,5EdOOQO'$!P'$!PO(6dQQO'$!OOOQP,5:u,5:uO(6lQQO'$!PO(6wQQO,5:uO#mQQO7+-wO(6|QQO7+-wO(8QQQO'$!YO(8fQQO,5<tO!;gQRO'#E`O(8kQQO1G0ZO(8|QQO'#EwO$*oQSO'#GVO(9XQQO,5;bO(9^QQO'$!UO(9fQQO'$!UOOQO'$!U'$!UO(9tQQO'$!UO(:VQQO'$!UO(:eQQO'$!UO(=aQQO'$!UO(=fQQO'$!UO(=kQQO'$!UO(=pQQO'$!UOOQO'#Ew'#EwO#0yQQO7+-wO(=uQQO7+.iO(=zQRO7+.iO5sQQO7+.iOOQP7+.l7+.lOOQP'#NV'#NVOOQP'$#{'$#{OOQP'$ k'$ kO(@ZQRO,5CoOOQP,5Co,5CoO(@bQQO'#NVO'FSQQO'#NVO(@jQQO'$#{O(@oQQO'#NVO(@tQRO7+.{O(D[QRO'#N[O#mQQO7+.{OOQP7+.{7+.{OOQP1G/{1G/{OOQO1G0R1G0RO(DcQQO1G0TO(DhQQO1G0POOQP,5D^,5D^OOQP-EAp-EApO(DmQTO'#DwOOQP1G6b1G6bO(MhQSO1G6bOOQP7+/Z7+/ZO(MmQRO1G0ZOOQO-EAt-EAtOOQP1G3o1G3oO$*yQQO7+(VO'0zQRO7+(VOOQO'#N}'#N}O(MtQQO,5=^OOQO,5=^,5=^OOQO'#Gs'#GsO(M{QQO'#GsO(NQQQO,5=^O#-kQQO'#GsOOQO-EAr-EArO(N[QQO,5;XO(NaQQO,5;ZO(NfQQO,5;]OOQP'#HO'#HOO#3dQQO'#EtO(NkQQO7+(VO(NsQRO7+(VOOQP7+$Q7+$QO'3|QQO7+$QO'4RQQO7+$QO$.eQQO7+$QOOQP'$!['$![OOQP'#N{'#N{O(N}QRO,5=OOOQP,5=O,5=OO) UQQO'$![O) ZQQO'$![O) cQQO'$![O) hQRO'#LuO) rQQO'#MOO$.pQQO'#M`O)%UQRO'$![O9dQQO'#C`OOQO,5<y,5<yO)%]QQO'$ {OOQO'#Gc'#GcOOQO,5<{,5<{OOQP'#Di'#DiOOQP'#Nq'#NqO'3`QRO'$ zO!;gQRO'#DpO)%hQQO'$ zOOQP'#G^'#G^O#-kQQO'#DiO)%pQQO'$ zO)%zQQO,5:SOOQO-EBd-EBdO'4oQQO7+/OOOQO,5Gc,5GcO)&zQRO'#MbOOQP7+/O7+/OOOQP,5CY,5CYO)'RQRO,5CYOOQO-EBf-EBfO#mQQO7+.cOOQP7+.c7+.cOOQP7+/Q7+/QO#mQQO7+/QOOQP'$$Q'$$QOOQP'$ n'$ nO)'YQRO,5C|OOQP,5C|,5C|O#mQQO'$$QO)'aQQO'$$QO$/rQQO7+/QOOQP-EBm-EBmOOQP1G9r1G9rOOQP,5Da,5DaOOQP-EAs-EAsOOQP1G3p1G3pOOQP,5FP,5FPOOQP1G3r1G3rOOQP1G/V1G/VOOQP<<Ln<<LnO)'fQQO,5>QOOQP1G3m1G3mOOQO,5Dm,5DmOOQO-EBP-EBPO)'kQQO'$#lOOQO'$#k'$#kO)'sQQO,5BRO)'xQQO'$#mO)'}QQO'$#XO)(VQQO'$#YOOQO'$#W'$#WO)([QQO,5A_OOQP<= n<= nOOQP<='z<='zO)(aQQO<='zO)(fQQO<='zO)(kQQO<=!wOOQO'$#['$#[OOQO'$ U'$ UO)(pQQO,5AdO)(}QQO'$#]O))VQQO'$#]O))_QQO'$#]O))gQQO'$#]O))gQQO'$#]O))gQQO'$#]O))oQQO'$#]O))}QQO'$#]O5sQQO'$#]O)*VQQO'$#[O)*_QQO'$#[O)*gQQO'$#[O)*oQTO,5EdO)*vQSO,5EiO)+[QSO,5:oO(NsQRO7++ZO)+mQQO'$#RO)+tQQO7++ZOOQP<='}<='}O#mQQO<=#cO(6|QQO<=#cO)+yQQO'#NsO),RQQO,5EjO),ZQQO,5EkOOQP1G0a1G0aO),fQRO<=#cOOQP'$#s'$#sOOQP<=#c<=#cO)/_QQO'$#]O)/dQQO'$#]O'EsQQO'$#]O#-kQQO'$#]O)/iQQO'$#]O)/wQQO'$#]O#-pQQO'#NxO)/|QQO,5EtOOQP1G2`1G2`O)0UQQO,5:zO)+tQQO7+%uO)0ZQQO'#FaOOQO,5Ep,5EpO)0fQSO,5<qOOQP1G0|1G0|O<]QQO,5EpO)0nQ`O'#FkOOQO'$!X'$!XO)0sQQO'$!XO'FSQQO,5EpO)1UQQO,5EpO'FSQQO'#EyO)1dQ`O<=#cO5sQQO<=$TO)1lQQO<=$TO)1qQRO<=$TOOQP-EBi-EBiOOQP1G9Z1G9ZOOQP'$#|'$#|O)1vQQO,5CqOOQP,5Cq,5CqO)1{QQO,5GgO5sQQO,5CqO#mQQO<=$gOOQP<=$g<=$gOOQP'$$O'$$OOOQP'$ l'$ lO)2QQRO,5CvOOQP,5Cv,5CvO)2XQQO'$$OO)2^QRO<=$gOOQP7+%o7+%oOOQO7+%k7+%kO#mQQO7++|O)4mQSO7+%uO'0zQRO<<KqO(NkQQO<<KqO(NsQRO<<KqOOQO-EA{-EA{OOQO1G2x1G2xO)5RQQO,5=_O)5ZQQO1G2xO'FSQQO1G2xOOQO,5=_,5=_OOQO1G0s1G0sOOQO1G0u1G0uOOQO1G0w1G0wOOQP,5;`,5;`O)5bQQO'#EkO)7_QQO<<KqO)+tQQO<<KqOOQP<<Gl<<GlO'3|QQO<<GlO'4RQQO<<GlOOQP-EAy-EAyOOQP1G2j1G2jOOQP,5Ev,5EvO)8fQQO,5EvO)8mQQO,5EvO!;gQRO,5EvOOQP'$ a'$ aO) hQRO,5BaO)8tQQO'#DwOOQP'#Lw'#LwO):UQQO,5BaO#mQQO,5BaOOQO'$ c'$ cO) rQQO,5BjOOQO'#MQ'#MQO#-pQQO,5BjO$.pQQO,5BzO'4oQQO,5BzO#1ZQQO,5EvO):ZQSO,5EvO!;gQRO'#NyO):`QQO,5EgOOQP-EAo-EAoO):kQQO,5EfO):sQQO,5EfO):}QQO,5:[OOQO'#Dq'#DqO'3`QRO'#NzO):kQQO,5EfOOQP,5:T,5:TO#mQQO,5EfOOQO1G/n1G/nOOQP<=$j<=$jOOQP'$#x'$#xOOQP'$ g'$ gO);SQRO,5B|OOQP,5B|,5B|O#mQQO'$#xO);ZQQO'$#xO);cQQO'$#xO#-kQQO'$#xOOQP1G8t1G8tOOQP<=#}<=#}O$/rQQO<=$lOOQP-EBl-EBlOOQP1G9h1G9hO);hQQO,5GlO#mQQO,5GlOOQP<=$l<=$lOOQP1G3l1G3lO!;gQRO'$ `O);mQQO,5GWOOQP1G7m1G7mO);uQQO,5GXO'FSQQO'$ TO);zQQO,5FsO)<SQRO,5FtOOQP1G6y1G6yO)<sQQOANKfO)<{QQOANKfOOQPANFcANFcOOQO-EBS-EBSO)>OQQO'$ _O)>]QQO'$#gOOQO'$#h'$#hO)>hQQO1G7OO)>mQWO'#HjOOQP,5Fw,5FwO)>{QQO,5FvO)?QQWO'#HjO)?`QQO,5FvO)?eQQO,5FvO)?jQQO,5FvO)?oQQO,5FvO)?tQQO,5FvO))_QQO,5FwO))gQQO,5FwO))gQQO,5FwO))gQQO,5FwO)?yQQO'#KyO)@OQQO,5FvO)@TQQO'#K|OOQO,5Fv,5FvO)@]QQO,5FvO)@bQRO'#LPO)@{QQO,5FvO)AQQQO'#LQO)BXQQO,5FvO(3PQQO<<NuO)B^QQO,5FmO)BcQQO,5@VOOQP<<Nu<<NuO)BhQROANF}OOQPANF}ANF}OOQO,5D_,5D_OOQO-EAq-EAqOOQO1G;V1G;VO(6|QQOANF}O'EsQQO,5FwO#-kQQO,5FwO)EaQQO,5DdOOQO-EAv-EAvOOQP1G0f1G0fOOQP<<Ia<<IaOOQO,5;{,5;{O)EuQQO,5;{O)EzQQO,5;{OOQO1G2]1G2]OOQO1G;[1G;[O)FSQQO,5<VOOQO,5Es,5EsO'FSQQO1G;[O)FXQQO,5;eO#mQQOANF}O)F^QROANGoO5sQQOANGoOOQPANGoANGoO(@bQQO1G9]OOQP1G=R1G=ROOQP1G9]1G9]O)FcQROANHROOQP-EBj-EBjOOQP1G9b1G9bO5sQQO,5GjOOQPANHRANHROOQP'#Js'#JsOOQP<= h<= hO(NkQQOANA]O(NsQROANA]O)7_QQOANA]O)+tQQOANA]OOQO1G2y1G2yOOQO7+(d7+(dO)HrQQO7+(dO$*yQQO'$!TO)HyQRO'$!TO)JxQRO'$!TO)MWQRO'$!SOOQP'$!R'$!RO* TQQO,5;VOOQO'$ O'$ OO)7_QQOANA]O* YQRO'#HQOOQO'#HP'#HPO#-kQQO'#HPOOQPANA]ANA]OOQPAN=WAN=WO'3|QQOAN=WO*)zQQO1G;bOOQP1G;b1G;bO**PQQO1G;bO**UQQO1G;bO**ZQRO1G;bOOQP-EB_-EB_O):UQQO1G7{O#mQQO1G7{O*+dQRO'#LyOOQP1G7{1G7{OOQO'#Lx'#LxOOQO-EBa-EBaO#-pQQO1G8UO#0yQQO1G8UO'4oQQO1G8fOOQP1G8f1G8fO#-pQQO1G;bO(NsQRO1G;bOOQO,5De,5DeOOQO-EAw-EAwO*+kQQO1G;QO*+kQQO1G;QO#mQQO1G;QOOQO1G/v1G/vO'3`QRO,5DfOOQO,5Df,5DfO*+sQQO,5DfOOQO-EAx-EAxOOQP-EBe-EBeOOQP1G8h1G8hOOQP,5Gd,5GdO#mQQO,5GdO#mQQO,5GdOOQPANHWANHWO*+}QQO1G=WOOQP1G=W1G=WOOQO,5Dz,5DzOOQO-EB^-EB^O*,SQQO'#LhOOQO1G<s1G<sOOQO,5Do,5DoOOQO-EBR-EBROOQO'$#Z'$#ZOOQO1G<`1G<`O#-kQQO'$#ZO*,_QQO'$#ZOOQPG2AQG2AQO*,dQQOG2AQOOQO'$#i'$#iO*,iQQO,5DyO*,pQRO'$#iOOQO-EB]-EB]OOQP7+,j7+,jO*-WQWO'#LROOQO1G<b1G<bO*-iQWO'#LSO*-zQQO'#LTO*.SQQO'#LUO*.SQQO'#LVO*.SQQO'#LWOOQP1G<c1G<cO)?eQQO1G<bO)?jQQO1G<bO)?oQQO1G<bO)?tQQO1G<bO*.[QQO,5AeO*.aQQO'#LXO*.iQQO,5AhO*.nQQO,5AfO*.sQQO'#LYO*/OQQO,5AkO*/TQQO,5AjO*/YQRO'#LZO*/vQQO,5AlO*/{QQO'#L[O)+tQQOANDaOOQO1G<X1G<XOOQO1G5q1G5qO(6|QQOG2<iOOQPG2<iG2<iO*0SQQO1G1gOOQO1G1g1G1gO*0XQQO1G1gO*0^QQO1G1qOOQO7+0v7+0vO'FSQQO1G1PO*0cQROG2<iOOQPG2=ZG2=ZO*3[QROG2=ZO*3aQQO7+.wOOQPG2=mG2=mOOQP1G=U1G=UO)7_QQOG26wO)+tQQOG26wO(NkQQOG26wO)7_QQOG26wOOQPG26wG26wO*3fQQO<<LOOOQO<<LO<<LOO*3mQRO,5EoOOQP'#GX'#GXOOQP,5Eo,5EoO*3|QRO,5EoO*5{QQO'#NwO*6{QRO,5EnOOQP1G0q1G0qOOQO-EA|-EA|OOQP'#Hm'#HmO*8xQQO'#HmO*9PQWO'#HmO(aQQO'#HmO*9bQQO'#HmO!;gQRO'#HmO2XQRO'#HmO*9iQQO'#KaOOQP'$!]'$!]OOQP'$ P'$ PO*9nQRO,5=lOOQP,5=l,5=lO*B`QQO'$!^OOQP'#Hn'#HnO*CwQQO'#IwO*DOQQO'#I{O*DTQQO'#HnO*DYQQO'#HnO*NVQRO'#HnO*N^QRO'#HnO*NeQQO'#HnO+#uQRO'#JtO+#|QRO'#JtO+$TQQO'#HnO+$YQQO'#IwO+$aQQO'#I{O+%sQQO'#JQO+%zQQO'#JQO+&RQQO'#JQOOQO'#JQ'#JQOOQO'#Jb'#JbOOQO'#Jl'#JlOOQP'#Jt'#JtO+&WQQO'#JtOOQO'#KU'#KUOOQO'#KW'#KWOOQP'#KY'#KYOOQO'#K^'#K^O+&]QQO'#HmO+&bQQO'#HmO+&mQQO'$!]O+&rQQO'$!]O+'QQQO'$!]O+'VQRO'$!]O+'^QQO'$!]OOQP'#HT'#HTO#1ZQQO'#HmO+'iQQO'#HmO+'nQQO'$!]O<]QQO'$!]OOQO,5=k,5=kOOQPG22rG22rO+'vQQO7+0|O+'{QQO7+0|O!;gQRO7+0|O(aQQO'$#pOOQP7+0|7+0|OOQP7+-g7+-gO):UQQO7+-gOOQP'$#t'$#tOOQP'$ b'$ bO+(QQRO,5BeOOQP,5Be,5BeO(aQQO'$#tO#0yQQO7+-pOOQO'#MR'#MRO+(XQQO7+-pOOQP7+.Q7+.QO+(dQRO7+0|O++OQQO7+0|O++TQQO7+0lO++TQQO7+0lOOQO1G:Q1G:QO++]QQO1G:QO#mQQO1G:QOOQP1G=O1G=OOOQP7+2r7+2rO++gQQO,5BSOOQO,5Fu,5FuO++lQQO'#DPO++zQQOLD6lO+,PQQO,5GTO+,UQQO1G:eO+,ZQQO,5GTOOQO,5GT,5GTOOQO'$ V'$ VO+,`QWO'$#^O+,qQQO,5AmOOQO'$ W'$ WO+,vQWO'$#_O+-XQQO,5AnO+-^QQO'$#`O+-fQQO,5AoOOQO'$ X'$ XO+-kQQO'$#aOOQO'$ Y'$ YO+-sQQO,5ApO+-xQQO,5AqO+-}QQO,5ArOOQO7+1|7+1|OOQP1G7P1G7PO+.SQQO'$#bO+.[QQO,5AsOOQO'$ Z'$ ZOOQO1G7S1G7SOOQO1G7Q1G7QOOQO'$ ['$ [O+.aQQO'$#cO+.lQQO,5AtOOQO1G7V1G7VO+.qQQO1G7UOOQP'$ ]'$ ]O+.vQRO'$#dO+/dQQO,5AuO+/iQQO'$ ]OOQO1G7W1G7WOOQO'$ ^'$ ^O+/nQQO'$#eO+/uQQO,5AvOOQPG29{G29{OOQPLD2TLD2TOOQO7+'R7+'RO+/zQQO7+'RO+0PQQO7+']O+0UQQO7+&kO(6|QQOLD2TOOQPLD2uLD2uO(@bQQO<=$cO)7_QQOLD,cOOQPLD,cLD,cO)7_QQOLD,cO)+tQQOLD,cOOQOANAjANAjOOQP1G;Z1G;ZO+0^QRO1G;ZOOQP,5Dc,5DcOOQP-EAu-EAuOOQP,5>X,5>XO'+yQRO,5>XO#-kQQO,5>XOOQP,5@{,5@{OOQP-EA}-EA}OOQP1G3W1G3WOOQO,5Ex,5ExO+2]QQO,5ExO+2bQQO,5ExO+2gQ`O,5>YO+2xQ`O,5?gO+3xQpO,5>YO+4hQpO,5>YO+4oQ`O,5>YO+4tQ`O,5>YO+4yQ!bO,5>YOOQP,5>Y,5>YO+2sQ`O,5?cOOQO,5?g,5?gO+5ZQ`O,5?lO+5`Q`O,5?lO+5hQ`O,5?lOOQP,5@`,5@`O%-_QQO,5>XO5sQQO,5>XOOQP,5Ew,5EwOOQP'$ Q'$ QO+?eQRO,5EwO+?uQQO'$!_O!;gQRO'$!_O+?}QQO,5EwO+@SQSO,5EwO#1ZQQO,5EwO+@XQQO,5EwO+@`QQO,5EwO+@gQQO,5EwO#-pQQO,5>XO+@lQQO'#K`O)+tQQO,5EwO+@vQRO,5EwOOQP<=&h<=&hO+@}QQO<=&hOOQP<=#R<=#ROOQP-EB`-EB`OOQP1G8P1G8POOQP,5G`,5G`O+ASQQO<=#[O+B`QRO'#MSOOQP<=#[<=#[O(6|QQO<=#[O+AVQQO<=#[O+BgQSO<=&hO#1ZQQO<=&hO+BlQQO<=&WOOQO7+/l7+/lO#mQQO7+/lOOQO1G7n1G7nO+BtQQO,5AaO+ByQQO,5AbO+COQQO,5AcOOQP!$(,W!$(,WOOQO1G<o1G<oO)AQQQO7+0POOQO-EBT-EBTOOQO1G7X1G7XOOQO-EBU-EBUOOQO1G7Y1G7YOOQO-EBV-EBVOOQO1G7Z1G7ZOOQO-EBW-EBWOOQO1G7[1G7[OOQO1G7]1G7]OOQO1G7^1G7^OOQO-EBX-EBXOOQO1G7_1G7_OOQO-EBY-EBYOOQO1G7`1G7`OOQO7+,p7+,pOOQP-EBZ-EBZOOQO1G7a1G7aOOQP,5Dw,5DwOOQO-EB[-EB[OOQO1G7b1G7bOOQO<<Jm<<JmOOQO<<Jw<<JwOOQO<<JV<<JVO'FSQQO<<JVOOQP!$('o!$('oO+CTQQOANG}OOQP!$( }!$( }O)7_QQO!$( }O)7_QQO!$( }OOQP7+0u7+0uO+CYQSO1G3sOOQP1G3s1G3sO#mQQO1G;dO+C_QQO1G;dOOQP1G3t1G3tOOQO1G4}1G4}O+CdQQO1G5ROOQO1G5U1G5UOOQO1G5V1G5VO+ClQRO1G3tO+MgQQO1G3tO+MlQQO1G3tOOQO1G5W1G5WO+MqQQO1G5WOOQP-EBO-EBOOOQP'$!`'$!`O+MvQQO'$!`OOQP,5Ey,5EyO+?uQQO,5EyO+M}QQO1G;cO(NsQRO1G;cO#-pQQO1G;cO+NSQQO1G;cOOQP1G;c1G;cO+NXQQO1G;cO+N^QQO1G;cO(6|QQO1G;cO+NcQQO1G3sO+NtQQO'$#UOOQO'$#T'$#TO+N|QQO,5@zO#mQQO1G;cO!;gQROANJSOOQPANFvANFvO(6|QQOANFvO, RQQOANFvOOQP'$#u'$#uOOQP'$ d'$ dO, ZQRO,5BnOOQP,5Bn,5BnO(aQQO'$#uO+(_QQOANFvO(NsQROANJSO#-pQQOANJSOOQO<=%W<=%WO, bQQO1G6{O, gQQO1G6|O, lQQO1G6}OOQO<=%k<=%kO, qQQOAN?qO(@bQQOG2=iOOQP!)9Ei!)9EiO)7_QQO!)9EiO#mQQO7+)_OOQO7+1O7+1OO, vQ`O7+)`O,!kQ`O7+)`O,!pQpO7+)`O,#bQ`O7+*rO,#gQQO,5EzO,#lQQO,5EzOOQP1G;e1G;eOOQP7+0}7+0}O+(dQRO7+0}O,#qQQO7+0}O,#vQQO7+0}O!;gQRO7+0}OOQP7+)_7+)_O,#{QQO'$ SO,$SQQO,5FpOOQP1G6f1G6fOOQPG2?nG2?nO+(_QQOG2<bOOQPG2<bG2<bO(6|QQOG2<bOOQP-EBb-EBbOOQP1G8Y1G8YOOQP,5Ga,5GaO,$[QQOG2?nO'+yQROG2?nO,$dQQO7+,gO,$iQQO7+,hO,$nQQO7+,iO'FSQQOG25]OOQPLD3TLD3TOOQP!.K;T!.K;TOOQP<<Ly<<LyOOQP<<Lz<<LzOOQO<<NX<<NXO,$sQRO<<LzOOQO<<N^<<N^O#mQQO1G;fO,.nQQO1G;fO,.sQSO<=&iOOQP<=&i<=&iO,.xQQO<=&iOOQO,5Dn,5DnOOQO-EBQ-EBQOOQPLD1|LD1|O+(_QQOLD1|O<]QQO'#JkOOQO'$#r'$#rO,.}QQOLD5YO,/SQSOLD5YOOQO<=!R<=!ROOQO<=!S<=!SOOQO<=!T<=!TO,/XQQOLD*wO,/^Q`OANBfOOQP7+1Q7+1QO(NsQROANJTO!;gQROANJTOOQP!$('h!$('hO)5bQQO'#MhO,/cQQO!$(*tO(NsQRO!$(*tOOQO!$'Nc!$'NcOOQPG28QG28QO,$[QQOG2?oOOQPG2?oG2?oO,/hQQO,5CSO,/mQQO!)9N`O)+tQQO!)9N`O)+tQQOLD5ZO,/rQQO1G8nO#1ZQQO!.KCzOOQP!.KCz!.KCzOOQP!$(*u!$(*uOOQO7+.Y7+.YO#-pQQO!4/9fO'+yQRO!9A/QO,/wQSO!?%$lO(NsQRO!D6HWO,$[QQO!IH=rO,/|QQO# ,3^O,0RQRO'#MiOOQP#&>(x#&>(xOOQP,5CT,5CTO,2vQQO'#ETO,3QQQO'#ETO#0UQRO'#ETO#mQQO'#DrO&*PQQO,5:oO#0UQRO,5:oO#mQQO'#NrO,3}QQO'#ET",
|
|
74
|
+
stateData: ",4^~O-gOS-hOSPOSQOS~OTiO!rdO%YhO&VZO)V]O*PPO*QQO*RQO*SQO*TRO*URO*VSO*WRO*Y[O*]TO*^TO*`_O*b`O*zaO+VbO+XcO+`jO+dkO+flO,TmO,WfO,XfO,ZfO,[fO,^eO,_nO,aVO~O-d-iP~P`OaoOvoOwoOxoOyoOzoO{oO|oO}oO!OoO!PoO!QoO!RoO!SoO!ToO!UoO!VoO-koO~O#nsO~O-d-iX~P`OaoOvoOxoOyoOzoO{oO|oO}oO!OoO!PoO!QoO!RoO!SoO!ToO!UoO!VoO!y!QO#v{O#w{O#x{O#yzO#zyO#{yO$x!SO%O!PO&[!RO-koO~OwwO&WxO~P%TO)W!TO)X!TO)Y!TO)Z!TO)[!TO)]!TO)^!TO)_!TO)`!TO)a!TO)b!TO)c!TO)d!TO)e!TO)f!TO~Ot!WO~O!V!XO~O`!^Oz!]O!n!cO#V!^O#W![O#X![O#^!`OX#UPv#UP!`#UP!a#UP!p#UP!x#UP!y#UP!z#UP!{#UP!|#UP#O#UP#T#UP#u#UP#v#UP#w#UP#x#UP#y#UP#z#UP#{#UP#}#UP$P#UP$Q#UP$R#UP$S#UP$}#UP%O#UP%P#UP~Or!ZO~P(aOV!oOW!oOX!mOi!oOj!oOk!oOl!oOn!oOo!oOp!sOv!nO!`!lO!a!lO!p!dO!x!dO!y!dO!z!dO!{!dO!|!dO#O!fO#T!qO#i!rO#u!jO#v!jO#w!jO#x!jO#y!jO#z!jO#{!jO#}!kO$P!jO$Q!jO$R!jO$S!jO$}!eO%O!jO%P!jO%[!oO%`!oO*|!oO*}!oO+O!oO~O!h!iO~P*tO+l!xO,Y!wO~P#mOaoOg!}OvoOw!{OxoOyoOzoO{oO|oO}oO!OoO!PoO!QoO!RoO!SoO!ToO!UoO!VoO+o!}O+p!}O+q#OO+s!}O+t!}O+u!}O+v!}O-koO~O+W#QO~P-{O+W#TOT,VX!r,VX%Y,VX&V,VX)V,VX*P,VX*Q,VX*R,VX*S,VX*T,VX*U,VX*V,VX*W,VX*Y,VX*],VX*^,VX*`,VX*b,VX*z,VX+V,VX+X,VX+`,VX+d,VX+f,VX,T,VX,W,VX,X,VX,Z,VX,[,VX,^,VX,_,VX,a,VX-d,VX$w,VX~P#mOX!mOaoOv#WOwoOxoOyoOzoO{oO|oO}oO!OoO!PoO!QoO!RoO!SoO!ToO!UoO!VoO!`!lO!a!lO!h#UO!n#_O!p!dO!t#XO!u#XO!v#XO!x!dO!y!dO!z!dO!{!dO!|!dO#O!fO#T#^O#u!jO#v!jO#w!jO#x!jO#y!jO#z!jO#{!jO#}!kO$P!jO$Q!jO$R!jO$S!jO$}!eO%O!jO%P!jO)P#YO-koO~O*b`O~P2XOt#`O~Or#aO~OV#eOW#eO]#eO`!^Oi#eOj#eOk#eOl#eOn#eOo#eOp#fOz!]O#V!^O#W![O#X![O#^!`O%[#eO%]#eO%^#eO%_#eO%`#eO%a#eO%b#eO%c#eO%d#eO%e#gOX#UPv#UP!`#UP!a#UP!h#UP!p#UP!x#UP!y#UP!z#UP!{#UP!|#UP#O#UP#T#UP#u#UP#v#UP#w#UP#x#UP#y#UP#z#UP#{#UP#}#UP$P#UP$Q#UP$R#UP$S#UP$}#UP%O#UP%P#UP~OV#kOW#kOX#kOY#kOZ#kO[#kO]#kO^#kO_#kO`#kOa#lOb#kOc#kOd#kOe#kOf#kOg#kOh#mOm#kOn#kOo#kOp#oOvoOwoOxoOyoOzoO{oO|oO}oO!OoO!PoO!QoO!RoO!SoO!ToO!UoO!VoO-koO~O,R#qO~P9dO$`#tO~O!h!iO~OV#xOW#xO~P#mO$x#zO~O!W#{O&V-lX)V-lX*P-lX*Q-lX*R-lX*S-lX*T-lX*U-lX*V-lX*W-lX*Y-lX*]-lX*^-lX*`-lX*b-lX&S-lX$x-lX!l-lX$t-lX!Z-lXr-lXq-lXa-lXv-lXw-lXx-lXy-lXz-lX{-lX|-lX}-lX!O-lX!P-lX!Q-lX!R-lX!S-lX!T-lX!U-lX!V-lX!h-lX#Q-lX#R-lX-k-lX$w-lX*d-lX*f-lX*g-lX%u-lX%v-lX&P-lX&Q-lX&T-lX&c-lX&d-lX&e-lX&f-lX&g-lX&h-lX&i-lX&j-lX&k-lX&l-lX&m-lX&n-lX&o-lX&p-lX&q-lX&r-lX&s-lX&t-lX&u-lX&v-lX&w-lX&x-lX&y-lX&z-lX&{-lX&|-lX&}-lX'O-lX'P-lX'Q-lX'R-lX'S-lX'T-lX'U-lX'V-lX'W-lX'X-lX'Y-lX'Z-lX'[-lX']-lX'^-lX'_-lX'`-lX'a-lX'b-lX'c-lX'd-lX'e-lX'f-lX'g-lX'h-lX'i-lX'j-lX'l-lX'm-lX'n-lX'p-lX'q-lX'u-lX'v-lX'w-lX'x-lX'y-lX'z-lX'{-lX'|-lX'}-lX(O-lX(P-lX(Q-lX(R-lX(S-lX(T-lX(V-lX(W-lX(X-lX(Y-lX(Z-lX([-lX(a-lX(b-lX(c-lX(d-lX(e-lX(f-lX(i-lX(j-lX(k-lX(l-lX(m-lX(n-lX(o-lX(p-lX(q-lX(r-lX(s-lX(t-lX(u-lX(v-lX(w-lX(y-lX({-lX(}-lX)R-lX*e-lX~OT-lX!r-lX#n-lX%Y-lX*z-lX+V-lX+X-lX+`-lX+d-lX+f-lX,T-lX,W-lX,X-lX,Z-lX,[-lX,^-lX,_-lX,a-lX-d-lX+m-lX%S-lX%U-lX$`-lX!g-lX!n-lX!t-lX!u-lX!v-lXX-lX!`-lX!a-lX!c-lX!p-lX!x-lX!y-lX!z-lX!{-lX!|-lX#O-lX#T-lX#u-lX#v-lX#w-lX#x-lX#y-lX#z-lX#{-lX#}-lX$P-lX$Q-lX$R-lX$S-lX$}-lX%O-lX%P-lX%q-lX#i-lX#P-lX!Y-lX+z-lX+{-lX+|-lX/q-lX*j-lX*s-lX+Q-lX+R-lX+^-lX+j-lX&[-lX)P-lX)q-lX*X-lX^-lX,P-lX+Y-lX+Z-lX)o-lX*n-lX*o-lX*p-lX*q-lX%{-lX*w-lX*x-lX~P<qO#n#}OT/Ya!r/Ya%Y/Ya&V/Ya)V/Ya*P/Ya*Q/Ya*R/Ya*S/Ya*T/Ya*U/Ya*V/Ya*W/Ya*Y/Ya*]/Ya*^/Ya*`/Ya*b/Ya*z/Ya+V/Ya+X/Ya+`/Ya+d/Ya+f/Ya,T/Ya,W/Ya,X/Ya,Z/Ya,[/Ya,^/Ya,_/Ya,a/Ya-d/Ya$w/Ya+m/Ya+z/Ya+{/Ya+|/Ya/q/Ya*d/Ya*f/Ya*g/Ya*j/Ya*s/Ya+Q/Ya+R/Ya+^/Ya!x/Ya#u/Ya#v/Ya#w/Ya#x/Ya#y/Ya#z/Ya#{/Ya#}/Ya$P/Ya$Q/Ya$R/Ya$S/Ya%O/Ya%P/Ya&[/Ya)P/Ya)q/Ya*X/Ya^/Ya,P/Ya+Y/Yaa/Yav/Yaw/Yax/Yay/Yaz/Ya{/Ya|/Ya}/Ya!O/Ya!P/Ya!Q/Ya!R/Ya!S/Ya!T/Ya!U/Ya!V/Ya$x/Ya%u/Ya%v/Ya&P/Ya&Q/Ya&S/Ya&T/Ya&c/Ya&d/Ya&e/Ya&f/Ya&g/Ya&h/Ya&i/Ya&j/Ya&k/Ya&l/Ya&m/Ya&n/Ya&o/Ya&p/Ya&q/Ya&r/Ya&s/Ya&t/Ya&u/Ya&v/Ya&w/Ya&x/Ya&y/Ya&z/Ya&{/Ya&|/Ya&}/Ya'O/Ya'P/Ya'Q/Ya'R/Ya'S/Ya'T/Ya'U/Ya'V/Ya'W/Ya'X/Ya'Y/Ya'Z/Ya'[/Ya']/Ya'^/Ya'_/Ya'`/Ya'a/Ya'b/Ya'c/Ya'd/Ya'e/Ya'f/Ya'g/Ya'h/Ya'i/Ya'j/Ya'l/Ya'm/Ya'n/Ya'p/Ya'q/Ya'u/Ya'v/Ya'w/Ya'x/Ya'y/Ya'z/Ya'{/Ya'|/Ya'}/Ya(O/Ya(P/Ya(Q/Ya(R/Ya(S/Ya(T/Ya(V/Ya(W/Ya(X/Ya(Y/Ya(Z/Ya([/Ya(a/Ya(b/Ya(c/Ya(d/Ya(e/Ya(f/Ya(i/Ya(j/Ya(k/Ya(l/Ya(m/Ya(n/Ya(o/Ya(p/Ya(q/Ya(r/Ya(s/Ya(t/Ya(u/Ya(v/Ya(w/Ya(y/Ya({/Ya(}/Ya)R/Ya*e/Ya-k/Ya*n/Ya*o/Ya*p/Ya*q/Ya*w/Ya*x/Ya~Oa.TXv.TXw.TXx.TXy.TXz.TX{.TX|.TX}.TX!O.TX!P.TX!Q.TX!R.TX!S.TX!T.TX!U.TX!V.TX!y.TX#v.TX#w.TX#x.TX#y.TX#z.TX#{.TX$`-mX$x.TX%O.TX&[.TX-k.TX~O!h!iOT.WX!r.WX%Y.WX&V.WX)V.WX*P.WX*Q.WX*R.WX*S.WX*T.WX*U.WX*V.WX*W.WX*Y.WX*].WX*^.WX*`.WX*b.WX*z.WX+V.WX+X.WX+`.WX+d.WX+f.WX,T.WX,W.WX,X.WX,Z.WX,[.WX,^.WX,_.WX,a.WX-d.WX#P.WX$w.WX*d.WX*f.WX*g.WX*j.WX*s.WX+Q.WX+R.WX+^.WXa.WXv.WXw.WXx.WXy.WXz.WX{.WX|.WX}.WX!O.WX!P.WX!Q.WX!R.WX!S.WX!T.WX!U.WX!V.WX$x.WX%u.WX%v.WX&P.WX&Q.WX&S.WX&T.WX&c.WX&d.WX&e.WX&f.WX&g.WX&h.WX&i.WX&j.WX&k.WX&l.WX&m.WX&n.WX&o.WX&p.WX&q.WX&r.WX&s.WX&t.WX&u.WX&v.WX&w.WX&x.WX&y.WX&z.WX&{.WX&|.WX&}.WX'O.WX'P.WX'Q.WX'R.WX'S.WX'T.WX'U.WX'V.WX'W.WX'X.WX'Y.WX'Z.WX'[.WX'].WX'^.WX'_.WX'`.WX'a.WX'b.WX'c.WX'd.WX'e.WX'f.WX'g.WX'h.WX'i.WX'j.WX'l.WX'm.WX'n.WX'p.WX'q.WX'u.WX'v.WX'w.WX'x.WX'y.WX'z.WX'{.WX'|.WX'}.WX(O.WX(P.WX(Q.WX(R.WX(S.WX(T.WX(V.WX(W.WX(X.WX(Y.WX(Z.WX([.WX(a.WX(b.WX(c.WX(d.WX(e.WX(f.WX(i.WX(j.WX(k.WX(l.WX(m.WX(n.WX(o.WX(p.WX(q.WX(r.WX(s.WX(t.WX(u.WX(v.WX(w.WX(y.WX({.WX(}.WX)R.WX*e.WX-k.WX~Or$PO~P!.ZOr$SO~P!.ZOr$TO~P!.ZO$`$UO~OwoO~P%TO!p$XO~Or$YO~O!y!QO#v{O#w{O#x{O#yzO#zyO#{yO%O!PO&[!RO~O#n#}O$`$]O&[$^O~OX!mOaoOv#WOwoOxoOyoOzoO{oO|oO}oO!OoO!PoO!QoO!RoO!SoO!ToO!UoO!VoO!`!lO!a!lO!h#UO!n#_O!p!dO!t#XO!u#XO!v#XO!x!dO!y!dO!z!dO!{!dO!|!dO#O!fO#T!qO#u!jO#v!jO#w!jO#x!jO#y!jO#z!jO#{!jO#}!kO$P!jO$Q!jO$R!jO$S!jO$}!eO%O!jO%P!jO-koO~O!V$dO#P$fO#n$dO%m$eO~O#P$gOT*_a!r*_a%Y*_a&V*_a)V*_a*P*_a*Q*_a*R*_a*S*_a*T*_a*U*_a*V*_a*W*_a*Y*_a*]*_a*^*_a*`*_a*b*_a*z*_a+V*_a+X*_a+`*_a+d*_a+f*_a,T*_a,W*_a,X*_a,Z*_a,[*_a,^*_a,_*_a,a*_a-d*_a$w*_a*d*_a*f*_a*g*_a*j*_a*s*_a+Q*_a+R*_a+^*_aa*_av*_aw*_ax*_ay*_az*_a{*_a|*_a}*_a!O*_a!P*_a!Q*_a!R*_a!S*_a!T*_a!U*_a!V*_a$x*_a%u*_a%v*_a&P*_a&Q*_a&S*_a&T*_a&c*_a&d*_a&e*_a&f*_a&g*_a&h*_a&i*_a&j*_a&k*_a&l*_a&m*_a&n*_a&o*_a&p*_a&q*_a&r*_a&s*_a&t*_a&u*_a&v*_a&w*_a&x*_a&y*_a&z*_a&{*_a&|*_a&}*_a'O*_a'P*_a'Q*_a'R*_a'S*_a'T*_a'U*_a'V*_a'W*_a'X*_a'Y*_a'Z*_a'[*_a']*_a'^*_a'_*_a'`*_a'a*_a'b*_a'c*_a'd*_a'e*_a'f*_a'g*_a'h*_a'i*_a'j*_a'l*_a'm*_a'n*_a'p*_a'q*_a'u*_a'v*_a'w*_a'x*_a'y*_a'z*_a'{*_a'|*_a'}*_a(O*_a(P*_a(Q*_a(R*_a(S*_a(T*_a(V*_a(W*_a(X*_a(Y*_a(Z*_a([*_a(a*_a(b*_a(c*_a(d*_a(e*_a(f*_a(i*_a(j*_a(k*_a(l*_a(m*_a(n*_a(o*_a(p*_a(q*_a(r*_a(s*_a(t*_a(u*_a(v*_a(w*_a(y*_a({*_a(}*_a)R*_a*e*_a-k*_a*n*_a*o*_a*p*_a*q*_a*w*_a*x*_a~O#Y$jO#Z$jO#[$jO#]$jOX-tXv-tX!`-tX!a-tX!p-tX!x-tX!y-tX!z-tX!{-tX!|-tX#O-tX#T-tX#u-tX#v-tX#w-tX#x-tX#y-tX#z-tX#{-tX#}-tX$P-tX$Q-tX$R-tX$S-tX$}-tX%O-tX%P-tX!h-tX~O`!^Oz!]O#V!^O#W![O#X![O#^!`OX#UPv#UP!`#UP!a#UP!p#UP!x#UP!y#UP!z#UP!{#UP!|#UP#O#UP#T#UP#u#UP#v#UP#w#UP#x#UP#y#UP#z#UP#{#UP#}#UP$P#UP$Q#UP$R#UP$S#UP$}#UP%O#UP%P#UP!h#UP~O$`$lOT/da!r/da%Y/da&V/da)V/da*P/da*Q/da*R/da*S/da*T/da*U/da*V/da*W/da*Y/da*]/da*^/da*`/da*b/da*z/da+V/da+X/da+`/da+d/da+f/da,T/da,W/da,X/da,Z/da,[/da,^/da,_/da,a/da-d/da$t/da$w/da+m/da+z/da+{/da+|/da/q/da*d/da*f/da*g/da*j/da*s/da+Q/da+R/da+^/da^/da,P/da+Y/daa/dav/daw/dax/day/daz/da{/da|/da}/da!O/da!P/da!Q/da!R/da!S/da!T/da!U/da!V/da$x/da%u/da%v/da&P/da&Q/da&S/da&T/da&c/da&d/da&e/da&f/da&g/da&h/da&i/da&j/da&k/da&l/da&m/da&n/da&o/da&p/da&q/da&r/da&s/da&t/da&u/da&v/da&w/da&x/da&y/da&z/da&{/da&|/da&}/da'O/da'P/da'Q/da'R/da'S/da'T/da'U/da'V/da'W/da'X/da'Y/da'Z/da'[/da']/da'^/da'_/da'`/da'a/da'b/da'c/da'd/da'e/da'f/da'g/da'h/da'i/da'j/da'l/da'm/da'n/da'p/da'q/da'u/da'v/da'w/da'x/da'y/da'z/da'{/da'|/da'}/da(O/da(P/da(Q/da(R/da(S/da(T/da(V/da(W/da(X/da(Y/da(Z/da([/da(a/da(b/da(c/da(d/da(e/da(f/da(i/da(j/da(k/da(l/da(m/da(n/da(o/da(p/da(q/da(r/da(s/da(t/da(u/da(v/da(w/da(y/da({/da(}/da)R/da*e/da-k/da*n/da*o/da*p/da*q/da*w/da*x/da~Or$TO~OX!mOv!nO!`!lO!a!lO!p!dO!x!dO!y!dO!z!dO!{!dO!|!dO#O!fO#T!qO#u!jO#v!jO#w!jO#x!jO#y!jO#z!jO#{!jO#}!kO$P!jO$Q!jO$R!jO$S!jO$}!eO%O!jO%P!jO~Ot$pO$}$qO~P#mOt$uO~O#v$vO#w$vO#x$vO#y$vO~O!h#UO!n#_O!t#XO!u#XO!v#XO~P#mO!`$wO~O#}$xO$O$pO$d$pO~O!Z%OO!h$zO#Q%PO#R%PO~P#mO`!^Oz!]O#V!^O#W![O#X![O#^!`OX#UPv#UP!`#UP!a#UP!p#UP!x#UP!y#UP!z#UP!{#UP!|#UP#O#UP#T#UP#u#UP#v#UP#w#UP#x#UP#y#UP#z#UP#{#UP#}#UP$P#UP$Q#UP$R#UP$S#UP$}#UP%O#UP%P#UP~Or%RO~O+l!xO~P#mO&S%XO+m%WOT+ka!r+ka%Y+ka&V+ka)V+ka*P+ka*Q+ka*R+ka*S+ka*T+ka*U+ka*V+ka*W+ka*Y+ka*]+ka*^+ka*`+ka*b+ka*z+ka+V+ka+X+ka+`+ka+d+ka+f+ka,T+ka,W+ka,X+ka,Z+ka,[+ka,^+ka,_+ka,a+ka-d+ka$w+ka~Ot%YO~OT-mX!W-mX!r-mX$x-mX%Y-mX&V-mX)V-mX*P-mX*Q-mX*R-mX*S-mX*T-mX*U-mX*V-mX*W-mX*Y-mX*]-mX*^-mX*`-mX*b-mX*z-mX+V-mX+X-mX+`-mX+d-mX+f-mX,T-mX,W-mX,X-mX,Z-mX,[-mX,^-mX,_-mX,a-mX-d-mX$t-mX$w-mX~Oa/nXg/nXv/nXw/nXx/nXy/nXz/nX{/nX|/nX}/nX!O/nX!P/nX!Q/nX!R/nX!S/nX!T/nX!U/nX!V/nX+o/nX+p/nX+q/nX+s/nX+t/nX+u/nX+v/nX-k/nX~P#6XO+r%]O~O$x%^OT+na!r+na%Y+na&V+na)V+na*P+na*Q+na*R+na*S+na*T+na*U+na*V+na*W+na*Y+na*]+na*^+na*`+na*b+na*z+na+V+na+X+na+`+na+d+na+f+na,T+na,W+na,X+na,Z+na,[+na,^+na,_+na,a+na-d+na$w+na~OT,Va!r,Va%Y,Va&V,Va)V,Va*P,Va*Q,Va*R,Va*S,Va*T,Va*U,Va*V,Va*W,Va*Y,Va*],Va*^,Va*`,Va*b,Va*z,Va+V,Va+X,Va+`,Va+d,Va+f,Va,T,Va,W,Va,X,Va,Z,Va,[,Va,^,Va,_,Va,a,Va-d,Va$w,Va~P#mO!n%fO!p%dO!r%eO~P#mO!l%gO$t-qXT-qXr-qX!r-qX$`-qX%Y-qX&V-qX)V-qX*P-qX*Q-qX*R-qX*S-qX*T-qX*U-qX*V-qX*W-qX*Y-qX*]-qX*^-qX*`-qX*b-qX*z-qX+V-qX+X-qX+`-qX+d-qX+f-qX,T-qX,W-qX,X-qX,Z-qX,[-qX,^-qX,_-qX,a-qX-d-qXq-qXa-qXv-qXw-qXx-qXy-qXz-qX{-qX|-qX}-qX!O-qX!P-qX!Q-qX!R-qX!S-qX!T-qX!U-qX!V-qX!Z-qX!h-qX#Q-qX#R-qX-k-qX!n-qX!t-qX!u-qX!v-qX$w-qXX-qX!`-qX!a-qX!c-qX!p-qX!x-qX!y-qX!z-qX!{-qX!|-qX#O-qX#T-qX#u-qX#v-qX#w-qX#x-qX#y-qX#z-qX#{-qX#}-qX$P-qX$Q-qX$R-qX$S-qX$}-qX%O-qX%P-qX%q-qX#i-qX$x-qX%U-qX#P-qX!Y-qX+m-qX+z-qX+{-qX+|-qX/q-qX*d-qX*f-qX*g-qX*j-qX*s-qX+Q-qX+R-qX+^-qX+Y-qX)o-qX%u-qX%v-qX&P-qX&Q-qX&S-qX&T-qX&c-qX&d-qX&e-qX&f-qX&g-qX&h-qX&i-qX&j-qX&k-qX&l-qX&m-qX&n-qX&o-qX&p-qX&q-qX&r-qX&s-qX&t-qX&u-qX&v-qX&w-qX&x-qX&y-qX&z-qX&{-qX&|-qX&}-qX'O-qX'P-qX'Q-qX'R-qX'S-qX'T-qX'U-qX'V-qX'W-qX'X-qX'Y-qX'Z-qX'[-qX']-qX'^-qX'_-qX'`-qX'a-qX'b-qX'c-qX'd-qX'e-qX'f-qX'g-qX'h-qX'i-qX'j-qX'l-qX'm-qX'n-qX'p-qX'q-qX'u-qX'v-qX'w-qX'x-qX'y-qX'z-qX'{-qX'|-qX'}-qX(O-qX(P-qX(Q-qX(R-qX(S-qX(T-qX(V-qX(W-qX(X-qX(Y-qX(Z-qX([-qX(a-qX(b-qX(c-qX(d-qX(e-qX(f-qX(i-qX(j-qX(k-qX(l-qX(m-qX(n-qX(o-qX(p-qX(q-qX(r-qX(s-qX(t-qX(u-qX(v-qX(w-qX(y-qX({-qX(}-qX)R-qX*e-qX%{-qX~O#}$xO$O$pO$d$pO!l-mXr-mX$`-mXq-mX%U-mX#P-mXa-mXv-mXw-mXx-mXy-mXz-mX{-mX|-mX}-mX!O-mX!P-mX!Q-mX!R-mX!S-mX!T-mX!U-mX!V-mX-k-mX+m-mX+z-mX+{-mX+|-mX/q-mX*d-mX*f-mX*g-mX*j-mX*s-mX+Q-mX+R-mX+^-mX%u-mX%v-mX&P-mX&Q-mX&S-mX&T-mX&c-mX&d-mX&e-mX&f-mX&g-mX&h-mX&i-mX&j-mX&k-mX&l-mX&m-mX&n-mX&o-mX&p-mX&q-mX&r-mX&s-mX&t-mX&u-mX&v-mX&w-mX&x-mX&y-mX&z-mX&{-mX&|-mX&}-mX'O-mX'P-mX'Q-mX'R-mX'S-mX'T-mX'U-mX'V-mX'W-mX'X-mX'Y-mX'Z-mX'[-mX']-mX'^-mX'_-mX'`-mX'a-mX'b-mX'c-mX'd-mX'e-mX'f-mX'g-mX'h-mX'i-mX'j-mX'l-mX'm-mX'n-mX'p-mX'q-mX'u-mX'v-mX'w-mX'x-mX'y-mX'z-mX'{-mX'|-mX'}-mX(O-mX(P-mX(Q-mX(R-mX(S-mX(T-mX(V-mX(W-mX(X-mX(Y-mX(Z-mX([-mX(a-mX(b-mX(c-mX(d-mX(e-mX(f-mX(i-mX(j-mX(k-mX(l-mX(m-mX(n-mX(o-mX(p-mX(q-mX(r-mX(s-mX(t-mX(u-mX(v-mX(w-mX(y-mX({-mX(}-mX)R-mX*e-mX%{-mX~P#6XO!Z%OO!h$zO#Q%PO#R%PO$t%jO~O$z%nO~Or%sO~O!h%vO~P#-pOVUXWUXXUXYUXZUX[UX]UX^UX_UX`UXaUXbUXcUXdUXeUXfUXgUXhUXmUXnUXoUXpUXvUXwUXxUXyUXzUX{UX|UX}UX!OUX!PUX!QUX!RUX!SUX!TUX!UUX!VUX!W-mX!Z-mX$x-mX%S-mX%U-mX-kUX~OV%{OW%{Oi%{Oj%{Ok%{Ol%{O~O!Z&PO$x%|O%S%}O%U&OO~OV&XOW&XOh&YO+T&XO~P#mO$x&[O~O#x&aO#y&aO+g&aO+h&aO+i&aO~O+j&bO~P$/VO$t&gO$x&eO~O!h#UO!n#_O!t#XO!u#XO!v#XO$w/uP~P#mO!W#{O&V-la)V-la*P-la*Q-la*R-la*S-la*T-la*U-la*V-la*W-la*Y-la*]-la*^-la*`-la*b-la&S-la$x-la!l-la$t-la!Z-lar-laq-laa-lav-law-lax-lay-laz-la{-la|-la}-la!O-la!P-la!Q-la!R-la!S-la!T-la!U-la!V-la!h-la#Q-la#R-la-k-la$w-la*d-la*f-la*g-la%u-la%v-la&P-la&Q-la&T-la&c-la&d-la&e-la&f-la&g-la&h-la&i-la&j-la&k-la&l-la&m-la&n-la&o-la&p-la&q-la&r-la&s-la&t-la&u-la&v-la&w-la&x-la&y-la&z-la&{-la&|-la&}-la'O-la'P-la'Q-la'R-la'S-la'T-la'U-la'V-la'W-la'X-la'Y-la'Z-la'[-la']-la'^-la'_-la'`-la'a-la'b-la'c-la'd-la'e-la'f-la'g-la'h-la'i-la'j-la'l-la'm-la'n-la'p-la'q-la'u-la'v-la'w-la'x-la'y-la'z-la'{-la'|-la'}-la(O-la(P-la(Q-la(R-la(S-la(T-la(V-la(W-la(X-la(Y-la(Z-la([-la(a-la(b-la(c-la(d-la(e-la(f-la(i-la(j-la(k-la(l-la(m-la(n-la(o-la(p-la(q-la(r-la(s-la(t-la(u-la(v-la(w-la(y-la({-la(}-la)R-la*e-la~OT-la!r-la#n-la%Y-la*z-la+V-la+X-la+`-la+d-la+f-la,T-la,W-la,X-la,Z-la,[-la,^-la,_-la,a-la-d-la+m-la%S-la%U-la$`-la!g-la!n-la!t-la!u-la!v-laX-la!`-la!a-la!c-la!p-la!x-la!y-la!z-la!{-la!|-la#O-la#T-la#u-la#v-la#w-la#x-la#y-la#z-la#{-la#}-la$P-la$Q-la$R-la$S-la$}-la%O-la%P-la%q-la#i-la#P-la!Y-la+z-la+{-la+|-la/q-la*j-la*s-la+Q-la+R-la+^-la+j-la&[-la)P-la)q-la*X-la^-la,P-la+Y-la+Z-la)o-la*n-la*o-la*p-la*q-la%{-la*w-la*x-la~P$0_O!^&mOT-yX!r-yX%Y-yX&V-yX)V-yX*P-yX*Q-yX*R-yX*S-yX*T-yX*U-yX*V-yX*W-yX*Y-yX*]-yX*^-yX*`-yX*b-yX*z-yX+V-yX+X-yX+`-yX+d-yX+f-yX,T-yX,W-yX,X-yX,Z-yX,[-yX,^-yX,_-yX,a-yX-d-yXb-yXc-yXd-yXp-yXq-yX#Y-yX#Z-yX#[-yX#]-yX$t-yX%h-yX%i-yX%j-yX%k-yX%l-yX$`-yX$w-yX+m-yX+z-yX+{-yX+|-yX/q-yX!h-yX!p-yX#P-yX^-yX,P-yX*d-yX*f-yX*g-yX*j-yX*s-yX+Q-yX+R-yX+^-yX!x-yX#u-yX#v-yX#w-yX#x-yX#y-yX#z-yX#{-yX#}-yX$P-yX$Q-yX$R-yX$S-yX%O-yX%P-yX&[-yX)P-yX)q-yX*X-yX+Y-yXa-yXv-yXw-yXx-yXy-yXz-yX{-yX|-yX}-yX!O-yX!P-yX!Q-yX!R-yX!S-yX!T-yX!U-yX!V-yX$x-yX%u-yX%v-yX&P-yX&Q-yX&S-yX&T-yX&c-yX&d-yX&e-yX&f-yX&g-yX&h-yX&i-yX&j-yX&k-yX&l-yX&m-yX&n-yX&o-yX&p-yX&q-yX&r-yX&s-yX&t-yX&u-yX&v-yX&w-yX&x-yX&y-yX&z-yX&{-yX&|-yX&}-yX'O-yX'P-yX'Q-yX'R-yX'S-yX'T-yX'U-yX'V-yX'W-yX'X-yX'Y-yX'Z-yX'[-yX']-yX'^-yX'_-yX'`-yX'a-yX'b-yX'c-yX'd-yX'e-yX'f-yX'g-yX'h-yX'i-yX'j-yX'l-yX'm-yX'n-yX'p-yX'q-yX'u-yX'v-yX'w-yX'x-yX'y-yX'z-yX'{-yX'|-yX'}-yX(O-yX(P-yX(Q-yX(R-yX(S-yX(T-yX(V-yX(W-yX(X-yX(Y-yX(Z-yX([-yX(a-yX(b-yX(c-yX(d-yX(e-yX(f-yX(i-yX(j-yX(k-yX(l-yX(m-yX(n-yX(o-yX(p-yX(q-yX(r-yX(s-yX(t-yX(u-yX(v-yX(w-yX(y-yX({-yX(}-yX)R-yX*e-yX-k-yX*n-yX*o-yX*p-yX*q-yX*w-yX*x-yX~O#z&qO#{&rO&_&oO~O!h!iOT.Wa!r.Wa%Y.Wa&V.Wa)V.Wa*P.Wa*Q.Wa*R.Wa*S.Wa*T.Wa*U.Wa*V.Wa*W.Wa*Y.Wa*].Wa*^.Wa*`.Wa*b.Wa*z.Wa+V.Wa+X.Wa+`.Wa+d.Wa+f.Wa,T.Wa,W.Wa,X.Wa,Z.Wa,[.Wa,^.Wa,_.Wa,a.Wa-d.Wa#P.Wa$w.Wa*d.Wa*f.Wa*g.Wa*j.Wa*s.Wa+Q.Wa+R.Wa+^.Waa.Wav.Waw.Wax.Way.Waz.Wa{.Wa|.Wa}.Wa!O.Wa!P.Wa!Q.Wa!R.Wa!S.Wa!T.Wa!U.Wa!V.Wa$x.Wa%u.Wa%v.Wa&P.Wa&Q.Wa&S.Wa&T.Wa&c.Wa&d.Wa&e.Wa&f.Wa&g.Wa&h.Wa&i.Wa&j.Wa&k.Wa&l.Wa&m.Wa&n.Wa&o.Wa&p.Wa&q.Wa&r.Wa&s.Wa&t.Wa&u.Wa&v.Wa&w.Wa&x.Wa&y.Wa&z.Wa&{.Wa&|.Wa&}.Wa'O.Wa'P.Wa'Q.Wa'R.Wa'S.Wa'T.Wa'U.Wa'V.Wa'W.Wa'X.Wa'Y.Wa'Z.Wa'[.Wa'].Wa'^.Wa'_.Wa'`.Wa'a.Wa'b.Wa'c.Wa'd.Wa'e.Wa'f.Wa'g.Wa'h.Wa'i.Wa'j.Wa'l.Wa'm.Wa'n.Wa'p.Wa'q.Wa'u.Wa'v.Wa'w.Wa'x.Wa'y.Wa'z.Wa'{.Wa'|.Wa'}.Wa(O.Wa(P.Wa(Q.Wa(R.Wa(S.Wa(T.Wa(V.Wa(W.Wa(X.Wa(Y.Wa(Z.Wa([.Wa(a.Wa(b.Wa(c.Wa(d.Wa(e.Wa(f.Wa(i.Wa(j.Wa(k.Wa(l.Wa(m.Wa(n.Wa(o.Wa(p.Wa(q.Wa(r.Wa(s.Wa(t.Wa(u.Wa(v.Wa(w.Wa(y.Wa({.Wa(}.Wa)R.Wa*e.Wa-k.Wa~Ot&tO~Ot&uO~O$x!SO~P!:mO$`&wO~Or&xO~O#P&zO$w.VX~O$w&|O~O$x&}Or/^i~OT-pXr-pX!r-pX$`-pX%Y-pX&V-pX)V-pX*P-pX*Q-pX*R-pX*S-pX*T-pX*U-pX*V-pX*W-pX*Y-pX*]-pX*^-pX*`-pX*b-pX*z-pX+V-pX+X-pX+`-pX+d-pX+f-pX,T-pX,W-pX,X-pX,Z-pX,[-pX,^-pX,_-pX,a-pX-d-pXq-pX$x-pX%U-pX#P-pX$w-pX+m-pX+z-pX+{-pX+|-pX/q-pX*d-pX*f-pX*g-pX*j-pX*s-pX+Q-pX+R-pX+^-pX%u-pX%v-pX&P-pX&Q-pX&S-pX&T-pX&c-pX&d-pX&e-pX&f-pX&g-pX&h-pX&i-pX&j-pX&k-pX&l-pX&m-pX&n-pX&o-pX&p-pX&q-pX&r-pX&s-pX&t-pX&u-pX&v-pX&w-pX&x-pX&y-pX&z-pX&{-pX&|-pX&}-pX'O-pX'P-pX'Q-pX'R-pX'S-pX'T-pX'U-pX'V-pX'W-pX'X-pX'Y-pX'Z-pX'[-pX']-pX'^-pX'_-pX'`-pX'a-pX'b-pX'c-pX'd-pX'e-pX'f-pX'g-pX'h-pX'i-pX'j-pX'l-pX'm-pX'n-pX'p-pX'q-pX'u-pX'v-pX'w-pX'x-pX'y-pX'z-pX'{-pX'|-pX'}-pX(O-pX(P-pX(Q-pX(R-pX(S-pX(T-pX(V-pX(W-pX(X-pX(Y-pX(Z-pX([-pX(a-pX(b-pX(c-pX(d-pX(e-pX(f-pX(i-pX(j-pX(k-pX(l-pX(m-pX(n-pX(o-pX(p-pX(q-pX(r-pX(s-pX(t-pX(u-pX(v-pX(w-pX(y-pX({-pX(}-pX)R-pX*e-pX%{-pX~O!Z%OO!h$zO#Q%PO#R%POa-pXv-pXw-pXx-pXy-pXz-pX{-pX|-pX}-pX!O-pX!P-pX!Q-pX!R-pX!S-pX!T-pX!U-pX!V-pX-k-pX~P%-yOr'PO$`'QOT)Ui!r)Ui%Y)Ui&V)Ui)V)Ui*P)Ui*Q)Ui*R)Ui*S)Ui*T)Ui*U)Ui*V)Ui*W)Ui*Y)Ui*])Ui*^)Ui*`)Ui*b)Ui*z)Ui+V)Ui+X)Ui+`)Ui+d)Ui+f)Ui,T)Ui,W)Ui,X)Ui,Z)Ui,[)Ui,^)Ui,_)Ui,a)Ui-d)Ui$w)Ui+m)Ui+z)Ui+{)Ui+|)Ui/q)Ui*d)Ui*f)Ui*g)Ui*j)Ui*s)Ui+Q)Ui+R)Ui+^)Uia)Uiv)Uiw)Uix)Uiy)Uiz)Ui{)Ui|)Ui})Ui!O)Ui!P)Ui!Q)Ui!R)Ui!S)Ui!T)Ui!U)Ui!V)Ui$x)Ui%u)Ui%v)Ui&P)Ui&Q)Ui&S)Ui&T)Ui&c)Ui&d)Ui&e)Ui&f)Ui&g)Ui&h)Ui&i)Ui&j)Ui&k)Ui&l)Ui&m)Ui&n)Ui&o)Ui&p)Ui&q)Ui&r)Ui&s)Ui&t)Ui&u)Ui&v)Ui&w)Ui&x)Ui&y)Ui&z)Ui&{)Ui&|)Ui&})Ui'O)Ui'P)Ui'Q)Ui'R)Ui'S)Ui'T)Ui'U)Ui'V)Ui'W)Ui'X)Ui'Y)Ui'Z)Ui'[)Ui'])Ui'^)Ui'_)Ui'`)Ui'a)Ui'b)Ui'c)Ui'd)Ui'e)Ui'f)Ui'g)Ui'h)Ui'i)Ui'j)Ui'l)Ui'm)Ui'n)Ui'p)Ui'q)Ui'u)Ui'v)Ui'w)Ui'x)Ui'y)Ui'z)Ui'{)Ui'|)Ui'})Ui(O)Ui(P)Ui(Q)Ui(R)Ui(S)Ui(T)Ui(V)Ui(W)Ui(X)Ui(Y)Ui(Z)Ui([)Ui(a)Ui(b)Ui(c)Ui(d)Ui(e)Ui(f)Ui(i)Ui(j)Ui(k)Ui(l)Ui(m)Ui(n)Ui(o)Ui(p)Ui(q)Ui(r)Ui(s)Ui(t)Ui(u)Ui(v)Ui(w)Ui(y)Ui({)Ui(})Ui)R)Ui*e)Ui-k)Ui~OaoOvoOwoOxoOyoOzoO{oO|oO}oO!OoO!PoO!QoO!RoO!SoO!ToO!UoO!VoO-koO~P%-yOt'RO~Ot'SO~O!V'TO~Oq'UO~Or#aO#n#}O$x'WO~OX:gOaoOv'^OwoOxoOyoOzoO{oO|oO}oO!OoO!PoO!QoO!RoO!SoO!ToO!UoO!VoO!Z%OO!`:bO!a:bO!c']O!h'YO!n#_O!t#XO!u#XO!v#XO!x!dO!y!dO!z!dO!{!dO!|!dO#O:aO#Q%PO#R%PO#T!qO#u!jO#v!jO#w!jO#x!jO#y!jO#z!jO#{!jO#}!kO$P!jO$Q!jO$R!jO$S!jO$}:`O%O!jO%P!jO%q']O-koO~O!p!dO~P%HOO$`'cOT/ei!r/ei%Y/ei&V/ei)V/ei*P/ei*Q/ei*R/ei*S/ei*T/ei*U/ei*V/ei*W/ei*Y/ei*]/ei*^/ei*`/ei*b/ei*z/ei+V/ei+X/ei+`/ei+d/ei+f/ei,T/ei,W/ei,X/ei,Z/ei,[/ei,^/ei,_/ei,a/ei-d/ei$t/ei$w/ei+m/ei+z/ei+{/ei+|/ei/q/ei*d/ei*f/ei*g/ei*j/ei*s/ei+Q/ei+R/ei+^/ei^/ei,P/ei+Y/eia/eiv/eiw/eix/eiy/eiz/ei{/ei|/ei}/ei!O/ei!P/ei!Q/ei!R/ei!S/ei!T/ei!U/ei!V/ei$x/ei%u/ei%v/ei&P/ei&Q/ei&S/ei&T/ei&c/ei&d/ei&e/ei&f/ei&g/ei&h/ei&i/ei&j/ei&k/ei&l/ei&m/ei&n/ei&o/ei&p/ei&q/ei&r/ei&s/ei&t/ei&u/ei&v/ei&w/ei&x/ei&y/ei&z/ei&{/ei&|/ei&}/ei'O/ei'P/ei'Q/ei'R/ei'S/ei'T/ei'U/ei'V/ei'W/ei'X/ei'Y/ei'Z/ei'[/ei']/ei'^/ei'_/ei'`/ei'a/ei'b/ei'c/ei'd/ei'e/ei'f/ei'g/ei'h/ei'i/ei'j/ei'l/ei'm/ei'n/ei'p/ei'q/ei'u/ei'v/ei'w/ei'x/ei'y/ei'z/ei'{/ei'|/ei'}/ei(O/ei(P/ei(Q/ei(R/ei(S/ei(T/ei(V/ei(W/ei(X/ei(Y/ei(Z/ei([/ei(a/ei(b/ei(c/ei(d/ei(e/ei(f/ei(i/ei(j/ei(k/ei(l/ei(m/ei(n/ei(o/ei(p/ei(q/ei(r/ei(s/ei(t/ei(u/ei(v/ei(w/ei(y/ei({/ei(}/ei)R/ei*e/ei-k/ei*n/ei*o/ei*p/ei*q/ei*w/ei*x/ei~Ot'dO~P#mO!Z%OO!h$zO#Q%PO#R%POa!wav!waw!wax!way!waz!wa{!wa|!wa}!wa!O!wa!P!wa!Q!wa!R!wa!S!wa!T!wa!U!wa!V!wa-k!wa$t!waT!war!wa!r!wa$`!wa%Y!wa&V!wa)V!wa*P!wa*Q!wa*R!wa*S!wa*T!wa*U!wa*V!wa*W!wa*Y!wa*]!wa*^!wa*`!wa*b!wa*z!wa+V!wa+X!wa+`!wa+d!wa+f!wa,T!wa,W!wa,X!wa,Z!wa,[!wa,^!wa,_!wa,a!wa-d!waq!waX!wa!`!wa!a!wa!c!wa!n!wa!p!wa!t!wa!u!wa!v!wa!x!wa!y!wa!z!wa!{!wa!|!wa#O!wa#T!wa#u!wa#v!wa#w!wa#x!wa#y!wa#z!wa#{!wa#}!wa$P!wa$Q!wa$R!wa$S!wa$}!wa%O!wa%P!wa%q!wa#i!wa!Y!wa#P!wa$x!wa%U!wa$w!wa+m!wa+z!wa+{!wa+|!wa/q!wa*d!wa*f!wa*g!wa*j!wa*s!wa+Q!wa+R!wa+^!wa%u!wa%v!wa&P!wa&Q!wa&S!wa&T!wa&c!wa&d!wa&e!wa&f!wa&g!wa&h!wa&i!wa&j!wa&k!wa&l!wa&m!wa&n!wa&o!wa&p!wa&q!wa&r!wa&s!wa&t!wa&u!wa&v!wa&w!wa&x!wa&y!wa&z!wa&{!wa&|!wa&}!wa'O!wa'P!wa'Q!wa'R!wa'S!wa'T!wa'U!wa'V!wa'W!wa'X!wa'Y!wa'Z!wa'[!wa']!wa'^!wa'_!wa'`!wa'a!wa'b!wa'c!wa'd!wa'e!wa'f!wa'g!wa'h!wa'i!wa'j!wa'l!wa'm!wa'n!wa'p!wa'q!wa'u!wa'v!wa'w!wa'x!wa'y!wa'z!wa'{!wa'|!wa'}!wa(O!wa(P!wa(Q!wa(R!wa(S!wa(T!wa(V!wa(W!wa(X!wa(Y!wa(Z!wa([!wa(a!wa(b!wa(c!wa(d!wa(e!wa(f!wa(i!wa(j!wa(k!wa(l!wa(m!wa(n!wa(o!wa(p!wa(q!wa(r!wa(s!wa(t!wa(u!wa(v!wa(w!wa(y!wa({!wa(}!wa)R!wa*e!wa%{!wa~O!g'gO~O$O'dO~O!W#{O&V-lX)V-lX*P-lX*Q-lX*R-lX*S-lX*T-lX*U-lX*V-lX*W-lX*Y-lX*]-lX*^-lX*`-lX*b-lX$w-lX*d-lX*f-lX*g-lX~OT-lX!r-lX$`-lX%Y-lX*z-lX+V-lX+X-lX+`-lX+d-lX+f-lX,T-lX,W-lX,X-lX,Z-lX,[-lX,^-lX,_-lX,a-lX-d-lX/j-lX*j-lX*s-lX+Q-lX+R-lX+^-lX~P&8}Ot'lO!g'kO#O'iO~O&V(gX)V(gX*P(gX*Q(gX*R(gX*S(gX*T(gX*U(gX*V(gX*W(gX*Y(gX*](gX*^(gX*`(gX*b(gX$w(gX*d(gX*f(gX*g(gX~OT(gX!r(gX$`+PX%Y(gX*z(gX+V(gX+X(gX+`(gX+d(gX+f(gX,T(gX,W(gX,X(gX,Z(gX,[(gX,^(gX,_(gX,a(gX-d(gX/j+PX*j(gX*s(gX+Q(gX+R(gX+^(gX~P&<]O$`'oO/j'nO~Or'rO~OZ'{Ob(OOh'}O!|'yO#T'yO#l(QO#o'wO#r'xO#s'yO#t'yO#u'yO#v'yO#w'yO#x'yO#y'yO#z'yO#{'yO#|'yO#}'zO$O'yO$P'yO$Q'yO$R'yO$S'yO$U'yO$V'yO$W'yO$X'yO$Y'yO$Z'yO$['yO$]'{O$^'{O$a'yO$b'|O$d'yO$r'yO$s'yO$t(PO$v'yO$x'uOq#kP~O+m(TOT+ki!r+ki%Y+ki&V+ki)V+ki*P+ki*Q+ki*R+ki*S+ki*T+ki*U+ki*V+ki*W+ki*Y+ki*]+ki*^+ki*`+ki*b+ki*z+ki+V+ki+X+ki+`+ki+d+ki+f+ki,T+ki,W+ki,X+ki,Z+ki,[+ki,^+ki,_+ki,a+ki-d+ki$w+ki~O&S(UO~P&B`O$`(VO~O$x%^OT+ni!r+ni%Y+ni&V+ni)V+ni*P+ni*Q+ni*R+ni*S+ni*T+ni*U+ni*V+ni*W+ni*Y+ni*]+ni*^+ni*`+ni*b+ni*z+ni+V+ni+X+ni+`+ni+d+ni+f+ni,T+ni,W+ni,X+ni,Z+ni,[+ni,^+ni,_+ni,a+ni-d+ni$w+ni~O)V]O*PPO*QQO*RQO*SQO*TRO*URO*VSO*WRO*Y[O*b`O+m(`O+z(aO+{(^O+|(_O/q(aO~O$w(]O~P&G[O$t(dO$x(cOT+}i!r+}i%Y+}i&V+}i)V+}i*P+}i*Q+}i*R+}i*S+}i*T+}i*U+}i*V+}i*W+}i*Y+}i*]+}i*^+}i*`+}i*b+}i*z+}i+V+}i+X+}i+`+}i+d+}i+f+}i,T+}i,W+}i,X+}i,Z+}i,[+}i,^+}i,_+}i,a+}i-d+}i$w+}i~O!g(fO~O!g(gO~O!l%gO$t-qaT-qar-qa!r-qa$`-qa%Y-qa&V-qa)V-qa*P-qa*Q-qa*R-qa*S-qa*T-qa*U-qa*V-qa*W-qa*Y-qa*]-qa*^-qa*`-qa*b-qa*z-qa+V-qa+X-qa+`-qa+d-qa+f-qa,T-qa,W-qa,X-qa,Z-qa,[-qa,^-qa,_-qa,a-qa-d-qaq-qaa-qav-qaw-qax-qay-qaz-qa{-qa|-qa}-qa!O-qa!P-qa!Q-qa!R-qa!S-qa!T-qa!U-qa!V-qa!Z-qa!h-qa#Q-qa#R-qa-k-qa!n-qa!t-qa!u-qa!v-qa$w-qaX-qa!`-qa!a-qa!c-qa!p-qa!x-qa!y-qa!z-qa!{-qa!|-qa#O-qa#T-qa#u-qa#v-qa#w-qa#x-qa#y-qa#z-qa#{-qa#}-qa$P-qa$Q-qa$R-qa$S-qa$}-qa%O-qa%P-qa%q-qa#i-qa$x-qa%U-qa#P-qa!Y-qa+m-qa+z-qa+{-qa+|-qa/q-qa*d-qa*f-qa*g-qa*j-qa*s-qa+Q-qa+R-qa+^-qa+Y-qa)o-qa%u-qa%v-qa&P-qa&Q-qa&S-qa&T-qa&c-qa&d-qa&e-qa&f-qa&g-qa&h-qa&i-qa&j-qa&k-qa&l-qa&m-qa&n-qa&o-qa&p-qa&q-qa&r-qa&s-qa&t-qa&u-qa&v-qa&w-qa&x-qa&y-qa&z-qa&{-qa&|-qa&}-qa'O-qa'P-qa'Q-qa'R-qa'S-qa'T-qa'U-qa'V-qa'W-qa'X-qa'Y-qa'Z-qa'[-qa']-qa'^-qa'_-qa'`-qa'a-qa'b-qa'c-qa'd-qa'e-qa'f-qa'g-qa'h-qa'i-qa'j-qa'l-qa'm-qa'n-qa'p-qa'q-qa'u-qa'v-qa'w-qa'x-qa'y-qa'z-qa'{-qa'|-qa'}-qa(O-qa(P-qa(Q-qa(R-qa(S-qa(T-qa(V-qa(W-qa(X-qa(Y-qa(Z-qa([-qa(a-qa(b-qa(c-qa(d-qa(e-qa(f-qa(i-qa(j-qa(k-qa(l-qa(m-qa(n-qa(o-qa(p-qa(q-qa(r-qa(s-qa(t-qa(u-qa(v-qa(w-qa(y-qa({-qa(}-qa)R-qa*e-qa%{-qa~OX:gOaoOv'^OwoOxoOyoOzoO{oO|oO}oO!OoO!PoO!QoO!RoO!SoO!ToO!UoO!VoO!Z%OO!`:bO!a:bO!h'YO!n#_O!p!dO!t#XO!u#XO!v#XO!x!dO!y!dO!z!dO!{!dO!|!dO#O:aO#Q%PO#R%PO#T!qO#u!jO#v!jO#w!jO#x!jO#y!jO#z!jO#{!jO#}!kO$P!jO$Q!jO$R!jO$S!jO$}:`O%O!jO%P!jO-koO~Oq(rO$z%nO~Ob(xOc(xOd(xOp({O#Y(xO#Z(xO#[(xO#](xO%h(xO%i(xO%j(xO%k(yO%l(yO~Oq(wO#n#}O~P'/gOt$uO#b(}O#d)OO#f)PO~O!Z%OO!c']O!h$zO#Q%PO#R%PO#i)RO%q']O~P#mOT)eO%YhO&VZO)V]O*PPO*QQO*RQO*SQO*TRO*URO*VSO*WRO*Y[O*]TO*^TO*`_O*b`O*d)cO*f)dO*g)_O*j)aO*s)bO*zaO+Q)^O+R)^O+^)`O~O$w)]O~P'1eOp)pOr)mO!^)jO!_)jO!`)jO!a)jO!b)jO!c)jO~P#mO$x%|O~O$x%|O%U&OO~OV)uOW)uOi)uOj)uOk)uOl)uO~O$x)vO~O$w)xO~P`O+j){O~P$/VO$t*OO$x&eO~O*PPO*QQO*RQO*SQO*TRO*URO*VSO*WRO*b`O+V*TO+X*UO~O$w*SO~P'5[O!h#UO!n#_O!t#XO!u#XO!v#XO$w/uX~P#mO$w*XO~O#n*YO~O!^&mOT-ya!r-ya%Y-ya&V-ya)V-ya*P-ya*Q-ya*R-ya*S-ya*T-ya*U-ya*V-ya*W-ya*Y-ya*]-ya*^-ya*`-ya*b-ya*z-ya+V-ya+X-ya+`-ya+d-ya+f-ya,T-ya,W-ya,X-ya,Z-ya,[-ya,^-ya,_-ya,a-ya-d-yab-yac-yad-yap-yaq-ya#Y-ya#Z-ya#[-ya#]-ya$t-ya%h-ya%i-ya%j-ya%k-ya%l-ya$`-ya$w-ya+m-ya+z-ya+{-ya+|-ya/q-ya!h-ya!p-ya#P-ya^-ya,P-ya*d-ya*f-ya*g-ya*j-ya*s-ya+Q-ya+R-ya+^-ya!x-ya#u-ya#v-ya#w-ya#x-ya#y-ya#z-ya#{-ya#}-ya$P-ya$Q-ya$R-ya$S-ya%O-ya%P-ya&[-ya)P-ya)q-ya*X-ya+Y-yaa-yav-yaw-yax-yay-yaz-ya{-ya|-ya}-ya!O-ya!P-ya!Q-ya!R-ya!S-ya!T-ya!U-ya!V-ya$x-ya%u-ya%v-ya&P-ya&Q-ya&S-ya&T-ya&c-ya&d-ya&e-ya&f-ya&g-ya&h-ya&i-ya&j-ya&k-ya&l-ya&m-ya&n-ya&o-ya&p-ya&q-ya&r-ya&s-ya&t-ya&u-ya&v-ya&w-ya&x-ya&y-ya&z-ya&{-ya&|-ya&}-ya'O-ya'P-ya'Q-ya'R-ya'S-ya'T-ya'U-ya'V-ya'W-ya'X-ya'Y-ya'Z-ya'[-ya']-ya'^-ya'_-ya'`-ya'a-ya'b-ya'c-ya'd-ya'e-ya'f-ya'g-ya'h-ya'i-ya'j-ya'l-ya'm-ya'n-ya'p-ya'q-ya'u-ya'v-ya'w-ya'x-ya'y-ya'z-ya'{-ya'|-ya'}-ya(O-ya(P-ya(Q-ya(R-ya(S-ya(T-ya(V-ya(W-ya(X-ya(Y-ya(Z-ya([-ya(a-ya(b-ya(c-ya(d-ya(e-ya(f-ya(i-ya(j-ya(k-ya(l-ya(m-ya(n-ya(o-ya(p-ya(q-ya(r-ya(s-ya(t-ya(u-ya(v-ya(w-ya(y-ya({-ya(}-ya)R-ya*e-ya-k-ya*n-ya*o-ya*p-ya*q-ya*w-ya*x-ya~Oq*[O~Or$SO~Oq*^O~Oq*_O~O#n#}O~Oq*bO~O#P&zO$w.Va~O$w/_P~P!;gO#n#}Oq.zP~O!V*nO#P*oO~O%m*pO~O#P*qOT*_q!r*_q%Y*_q&V*_q)V*_q*P*_q*Q*_q*R*_q*S*_q*T*_q*U*_q*V*_q*W*_q*Y*_q*]*_q*^*_q*`*_q*b*_q*z*_q+V*_q+X*_q+`*_q+d*_q+f*_q,T*_q,W*_q,X*_q,Z*_q,[*_q,^*_q,_*_q,a*_q-d*_q$w*_q*d*_q*f*_q*g*_q*j*_q*s*_q+Q*_q+R*_q+^*_qa*_qv*_qw*_qx*_qy*_qz*_q{*_q|*_q}*_q!O*_q!P*_q!Q*_q!R*_q!S*_q!T*_q!U*_q!V*_q$x*_q%u*_q%v*_q&P*_q&Q*_q&S*_q&T*_q&c*_q&d*_q&e*_q&f*_q&g*_q&h*_q&i*_q&j*_q&k*_q&l*_q&m*_q&n*_q&o*_q&p*_q&q*_q&r*_q&s*_q&t*_q&u*_q&v*_q&w*_q&x*_q&y*_q&z*_q&{*_q&|*_q&}*_q'O*_q'P*_q'Q*_q'R*_q'S*_q'T*_q'U*_q'V*_q'W*_q'X*_q'Y*_q'Z*_q'[*_q']*_q'^*_q'_*_q'`*_q'a*_q'b*_q'c*_q'd*_q'e*_q'f*_q'g*_q'h*_q'i*_q'j*_q'l*_q'm*_q'n*_q'p*_q'q*_q'u*_q'v*_q'w*_q'x*_q'y*_q'z*_q'{*_q'|*_q'}*_q(O*_q(P*_q(Q*_q(R*_q(S*_q(T*_q(V*_q(W*_q(X*_q(Y*_q(Z*_q([*_q(a*_q(b*_q(c*_q(d*_q(e*_q(f*_q(i*_q(j*_q(k*_q(l*_q(m*_q(n*_q(o*_q(p*_q(q*_q(r*_q(s*_q(t*_q(u*_q(v*_q(w*_q(y*_q({*_q(}*_q)R*_q*e*_q-k*_q*n*_q*o*_q*p*_q*q*_q*w*_q*x*_q~O!x+QO#u*|O#v*zO#w*yO#x*xO#y*wO#z*uO#{*vO#}*{O$P*zO$Q*yO$R*xO$S*wO%O*yO%P+OO&[*}O)q+PO*PPO*QQO*RQO*SQO*TRO*URO*VSO*WRO~O(^-lX~P<qOt'lO!g'kO!n%fO!p%dO!r%eO#O'iO~P#mO!l:fO(^-qX!Z-qX!h-qX#Q-qX#R-qX~O!Z%OO!h$zO#Q%PO#R%PO(^-pX~O#}$xO$O$pO$d$pOr-mX!W-mX!Z-mX!l-mX(^-mX$t-mXq-mXa-mXv-mXw-mXx-mXy-mXz-mX{-mX|-mX}-mX!O-mX!P-mX!Q-mX!R-mX!S-mX!T-mX!U-mX!V-mX$w-mX$x-mX%u-mX%v-mX&P-mX&Q-mX&S-mX&T-mX&V-mX&c-mX&d-mX&e-mX&f-mX&g-mX&h-mX&i-mX&j-mX&k-mX&l-mX&m-mX&n-mX&o-mX&p-mX&q-mX&r-mX&s-mX&t-mX&u-mX&v-mX&w-mX&x-mX&y-mX&z-mX&{-mX&|-mX&}-mX'O-mX'P-mX'Q-mX'R-mX'S-mX'T-mX'U-mX'V-mX'W-mX'X-mX'Y-mX'Z-mX'[-mX']-mX'^-mX'_-mX'`-mX'a-mX'b-mX'c-mX'd-mX'e-mX'f-mX'g-mX'h-mX'i-mX'j-mX'l-mX'm-mX'n-mX'p-mX'q-mX'u-mX'v-mX'w-mX'x-mX'y-mX'z-mX'{-mX'|-mX'}-mX(O-mX(P-mX(Q-mX(R-mX(S-mX(T-mX(V-mX(W-mX(X-mX(Y-mX(Z-mX([-mX(a-mX(b-mX(c-mX(d-mX(e-mX(f-mX(i-mX(j-mX(k-mX(l-mX(m-mX(n-mX(o-mX(p-mX(q-mX(r-mX(s-mX(t-mX(u-mX(v-mX(w-mX(y-mX({-mX(}-mX)R-mX)V-mX*P-mX*Q-mX*R-mX*S-mX*T-mX*U-mX*V-mX*W-mX*Y-mX*]-mX*^-mX*`-mX*b-mX*d-mX*e-mX*f-mX*g-mX-k-mX~Or%rX!Z%rX!l!kX(^!kX~O(^-pX~P#mO(^+UO~O!Z+VOr.uP~O$`+ZO/j+YO~O!W#{O&V-la)V-la*P-la*Q-la*R-la*S-la*T-la*U-la*V-la*W-la*Y-la*]-la*^-la*`-la*b-la$w-la*d-la*f-la*g-la~OT-la!r-la$`-la%Y-la*z-la+V-la+X-la+`-la+d-la+f-la,T-la,W-la,X-la,Z-la,[-la,^-la,_-la,a-la-d-la/j-la*j-la*s-la+Q-la+R-la+^-la~P(3aO#P+[O!g-rX~O#O+^O!g-sX#P-sX~O!g+_O~O#n#}O#u+hO#v+fO#w+fO#x+fO#y+eO#z+cO#{+dO#}+gO$P+fO$Q+fO$R+fO$S+eO%O+fO&[*}O)o+aO~O!Z%OO!h$zO#P+iO#Q%PO#R%PO!Y-|X~O!Y+kO~O!Z%OO!h$zO!p+mO#Q%PO#R%PO~O!h+nO!p+oOq#kX~Oq+qO~O#p+rO#q+rO~O#u+oOq-xX!h-xX!p-xX~O#v+oO#w+oO#x+oO#y+oO$O+oO~Or+sOq-xX!h-xX!p-xX~O!|+tO#P+vO#r+tO#s+tO#u+tO#v+tO#w+tO#x+tO#y+tO#z+tO#{+tO#|+tO#}+uO$O+tO$P+tO$Q+tO$R+tO$S+tO$U+tO$V+tO$W+tO$X+tO$Y+tO$]+tO$^+tO$b+tO$c+tO$d+tO$e+tO$f+tO$g+tO$h+tO$i+tO$j+tO$k+tO$l+tO$m+tO$n+tO$o+tO$p+tO$q+tOq-xX!h-xX!p-xX~O$a+oO~O$W+oO~O$u+oO~Or+xO~O$`+zO~O+m+{OT+kq!r+kq%Y+kq&V+kq)V+kq*P+kq*Q+kq*R+kq*S+kq*T+kq*U+kq*V+kq*W+kq*Y+kq*]+kq*^+kq*`+kq*b+kq*z+kq+V+kq+X+kq+`+kq+d+kq+f+kq,T+kq,W+kq,X+kq,Z+kq,[+kq,^+kq,_+kq,a+kq-d+kq$w+kq~O$w,OO~P&G[Ot,PO!p,PO~O+x,SO~O$`,TO~O$t,UO$x(cOT+}q!r+}q%Y+}q&V+}q)V+}q*P+}q*Q+}q*R+}q*S+}q*T+}q*U+}q*V+}q*W+}q*Y+}q*]+}q*^+}q*`+}q*b+}q*z+}q+V+}q+X+}q+`+}q+d+}q+f+}q,T+}q,W+}q,X+}q,Z+}q,[+}q,^+}q,_+}q,a+}q-d+}q$w+}q~O^,WO*PPO*QQO*RQO*SQO*TRO*URO*VSO*WRO*b`O+m,[O+z(aO+{(^O+|(_O,P,[O/q(aO~O$w,ZO~P(CWO!g,^O~O!g,_O~O!l!kX$t(gX(^!kXq(gXa(gXv(gXw(gXx(gXy(gXz(gX{(gX|(gX}(gX!O(gX!P(gX!Q(gX!R(gX!S(gX!T(gX!U(gX!V(gX$x(gX%u(gX%v(gX&P(gX&Q(gX&S(gX&T(gX&c(gX&d(gX&e(gX&f(gX&g(gX&h(gX&i(gX&j(gX&k(gX&l(gX&m(gX&n(gX&o(gX&p(gX&q(gX&r(gX&s(gX&t(gX&u(gX&v(gX&w(gX&x(gX&y(gX&z(gX&{(gX&|(gX&}(gX'O(gX'P(gX'Q(gX'R(gX'S(gX'T(gX'U(gX'V(gX'W(gX'X(gX'Y(gX'Z(gX'[(gX'](gX'^(gX'_(gX'`(gX'a(gX'b(gX'c(gX'd(gX'e(gX'f(gX'g(gX'h(gX'i(gX'j(gX'l(gX'm(gX'n(gX'p(gX'q(gX'u(gX'v(gX'w(gX'x(gX'y(gX'z(gX'{(gX'|(gX'}(gX(O(gX(P(gX(Q(gX(R(gX(S(gX(T(gX(V(gX(W(gX(X(gX(Y(gX(Z(gX([(gX(a(gX(b(gX(c(gX(d(gX(e(gX(f(gX(i(gX(j(gX(k(gX(l(gX(m(gX(n(gX(o(gX(p(gX(q(gX(r(gX(s(gX(t(gX(u(gX(v(gX(w(gX(y(gX({(gX(}(gX)R(gX*e(gX-k(gX~P&<]O(^,`O~O!p,aO~P%HOOq,fO~P'/gO%m,gO~Oq,fO$t,iO~P'/gO!g,kO~O!g,lO~O!g,mO~Or,oO!Z&PO~O!c']O%q']O~P#mO$w,vO~P'1eOt,wO~O)q,xO*h,yO~O)q,zO~On-OOo-OO~P!;gOn-TOo-TO~P#1ZOX:gOaoOv'^OwoOxoOyoOzoO{oO|oO}oO!OoO!PoO!QoO!RoO!SoO!ToO!UoO!VoO!`:bO!a:bO!h#UO!n#_O!p!dO!t#XO!u#XO!v#XO!x!dO!y!dO!z!dO!{!dO!|!dO#O:aO#u!jO#v!jO#w!jO#x!jO#y!jO#z!jO#{!jO#}!kO$P!jO$Q!jO$R!jO$S!jO$}:`O%O!jO%P!jO-koO~O#T-XO~P) |O#P-ZO$x-oXq-oX~O#P-bO!Y-nX~O!^-eO!_-eO~P#mO!Y-fO~OT-mO*PPO*QQO*RQO*SQO*TRO*URO*VSO*WRO*b`O+V-lO+X-nO+Y-oO~O$w-kO~P)&PO$w-pO~P`O$w-tO~P'5[O+W-vO~Oq-xO~O#P-yO$w/`X~O$w-{O~O$`-|O~O#P-}Oq.{X~O$`.PO~Oq.QO~Ot.RO~Ot.SO~O!V.TO~O)P.XO*X.XO$w/ZP~P($xOr.ZO!h!iO~Or.^O!h!iO~Or$SO!h!iO~Or$TO!h!iO~O#v.gO#w.fO#x.eO#y.dO~Or.hO!h!iO~Or.jO!h!iO~Or.mO!h!iO~Or.oO!h!iO~O(^-la~P$0_O!l:fO(^-qa!Z-qa!h-qa#Q-qa#R-qa~O!Z%OO!h$zO#Q%PO#R%PO(^!wa~O!h!iO~P#-pOr,oO~Ot'lO#O'iO~O#P+[O!g-ra~Ot.yO!g-sa#P-sa~O$`.zOT*yy!r*yy%Y*yy&V*yy)V*yy*P*yy*Q*yy*R*yy*S*yy*T*yy*U*yy*V*yy*W*yy*Y*yy*]*yy*^*yy*`*yy*b*yy*z*yy+V*yy+X*yy+`*yy+d*yy+f*yy,T*yy,W*yy,X*yy,Z*yy,[*yy,^*yy,_*yy,a*yy-d*yy$w*yy*d*yy*f*yy*g*yy*j*yy*s*yy+Q*yy+R*yy+^*yy~Or.ZO~Or.^O~O#v.|O#w.|O#x.|O#y.{O~Or.hO~O#P+iO!Y-|a~Oq/PO~Ot/TO!^/SO!g/RO~O$w/UO$z%nO~O-z/WO~O#v/XO#w/XO#x/XO#y/XO$O/XO~O#P/YOq-xa!h-xa!p-xa~O$`.zO/j/[O~O$`/^O~O&S/_O~O%m/`O~Ot/aO~O$w/eO~P(CWO$`/fO~O$x(cOT+}y!r+}y%Y+}y&V+}y)V+}y*P+}y*Q+}y*R+}y*S+}y*T+}y*U+}y*V+}y*W+}y*Y+}y*]+}y*^+}y*`+}y*b+}y*z+}y+V+}y+X+}y+`+}y+d+}y+f+}y,T+}y,W+}y,X+}y,Z+}y,[+}y,^+}y,_+}y,a+}y-d+}y$w+}y~Or,oO!Z!wX!h!wX#Q!wX#R!wX(^!wX~O%n/nO%o/nO~Oq/oO~P'/gOX!mOv!nO!`!lO!a!lO!h%vO!p!dO!x!dO!y!dO!z!dO!{!dO!|!dO#O/rO#T!qO#u!jO#v!jO#w!jO#x!jO#y!jO#z!jO#{!jO#}!kO$P!jO$Q!jO$R!jO$S!jO$}!eO%O!jO%P!jOq-uP~Op/{Ov/zOw/zOx/zOy/zOz/zO{/zO|/zO}/zO!O/zO!P/zO!Q/zO!R/zO!S/zO!T/zO!U/zO$x/yO~O!h0PO~P#mO!h0RO~P#mOa!kXv!kXw!kXx!kXy!kXz!kX{!kX|!kX}!kX!O!kX!P!kX!Q!kX!R!kX!S!kX!T!kX!U!kX!V!kX!l!kX$x*lX-k!kX~O$x0XO~O(^0bO~O#P-ZO$x-oaq-oa~O#P-bO!Y-na~O!^0gO!_0gO~P#mOq0hO~O$w0nO~P)&POt0oO+W0pO~O+W0qO~O+j0sO~O#P-yO$w/`a~O$x0wO~O#P-}Oq.{a~Ot0{O!h#UO!n#_O!t#XO!u#XO!v#XO#n#}O#x0}O)h0{O~P#mO!V1PO%m1QO~O!V1PO~O#u!jO#v!jO#w!jO#x!jO#y!jO#z!jO#{!jO#}!kO$P!jO$Q!jO$R!jO$S!jO%O!jO%P!jO~OY1TO!x1RO)q1RO~P)=QO)P.XO*X.XO$w/ZX~O$w1VO~Ot&uO#z&qO#{&rO&_&oO~Or1WO~Ot&tO#z&qO#{&rO&_&oO~Or1YO~Or1ZO~Or1[O~Or1]O~Or1^O~O)h1dO~Or1eO~O!V1fO)o1gO~Or1hO~O!`1jO!h#UO!n#_O!t#XO!u#XO!v#XO)o1gO~P#mOr1kO~O!x+QO#u*|O#v*zO#w*yO#x*xO#y*wO#z*uO#{*vO#}*{O$P*zO$Q*yO$R*xO$S*wO%O*yO%P+OO&[*}O)q+PO~Or1mO~O!Y1oO~O!Y1pO~O$`1qOT*y!R!r*y!R%Y*y!R&V*y!R)V*y!R*P*y!R*Q*y!R*R*y!R*S*y!R*T*y!R*U*y!R*V*y!R*W*y!R*Y*y!R*]*y!R*^*y!R*`*y!R*b*y!R*z*y!R+V*y!R+X*y!R+`*y!R+d*y!R+f*y!R,T*y!R,W*y!R,X*y!R,Z*y!R,[*y!R,^*y!R,_*y!R,a*y!R-d*y!R$w*y!R*d*y!R*f*y!R*g*y!R*j*y!R*s*y!R+Q*y!R+R*y!R+^*y!R~O!Z%OO!h$zO#Q%PO#R%PO!Y,la#P,la~Ot1sO~O!^1uO!g1tO~O$`1vO~O#P1xO~O&S1zO~O$x(cOT+}!R!r+}!R%Y+}!R&V+}!R)V+}!R*P+}!R*Q+}!R*R+}!R*S+}!R*T+}!R*U+}!R*V+}!R*W+}!R*Y+}!R*]+}!R*^+}!R*`+}!R*b+}!R*z+}!R+V+}!R+X+}!R+`+}!R+d+}!R+f+}!R,T+}!R,W+}!R,X+}!R,Z+}!R,[+}!R,^+}!R,_+}!R,a+}!R-d+}!R$w+}!R~Oq2VO~P'/gOq-wX#P-wXT-wX$w-wX%Y-wX&V-wX)V-wX*P-wX*Q-wX*R-wX*S-wX*T-wX*U-wX*V-wX*W-wX*Y-wX*]-wX*^-wX*`-wX*b-wX*d-wX*f-wX*g-wX*j-wX*s-wX*z-wX+Q-wX+R-wX+^-wX~P#-pO!Z%OO!h$zO#Q%PO#R%PO#i)ROq-wX#P-wXT-wX$w-wX%Y-wX&V-wX)V-wX*P-wX*Q-wX*R-wX*S-wX*T-wX*U-wX*V-wX*W-wX*Y-wX*]-wX*^-wX*`-wX*b-wX*d-wX*f-wX*g-wX*j-wX*s-wX*z-wX+Q-wX+R-wX+^-wX~P#mO#P2[Oq-vXT-vX$w-vX%Y-vX&V-vX)V-vX*P-vX*Q-vX*R-vX*S-vX*T-vX*U-vX*V-vX*W-vX*Y-vX*]-vX*^-vX*`-vX*b-vX*d-vX*f-vX*g-vX*j-vX*s-vX*z-vX+Q-vX+R-vX+^-vX~Oq2^O~O$w2kO$x/yO%u3YO%v2lO&P3YO&Q3bO&S2hO&T2hO&VZO&c2mO&d2mO&e2nO&f2nO&g2nO&h2mO&i2oO&j2mO&k2mO&l2mO&m2pO&n2qO&o2rO&p2rO&q2rO&r2sO&s2sO&t2mO&u2mO&v2mO&w2mO&x2sO&y2mO&z2mO&{2tO&|2mO&}2mO'O2uO'P2vO'Q2mO'R2mO'S2mO'T2mO'U2mO'V2mO'W2mO'X2mO'Y2mO'Z2mO'[2mO']2mO'^2sO'_2sO'`2mO'a2mO'b2wO'c2wO'd2mO'e2mO'f2mO'g2mO'h2wO'i2mO'j2mO'l2xO'm2xO'n2xO'p2yO'q2yO'u2zO'v2zO'w2zO'x2zO'y2{O'z2{O'{2{O'|2{O'}2|O(O2}O(P2}O(Q2}O(R2}O(S2}O(T2zO(V3OO(W3OO(X3OO(Y3OO(Z3OO([3OO(a3PO(b3PO(c3PO(d3PO(e3PO(f3PO(i3QO(j3QO(k3QO(l3QO(m3QO(n3QO(o3QO(p3QO(q3QO(r3QO(s3QO(t3QO(u3QO(v3RO(w3QO(y3SO({3TO(}3UO)R3VO)V]O*PPO*QQO*RQO*SQO*TRO*URO*VSO*WRO*Y[O*]TO*^TO*`_O*b`O*d3cO*e3[O*f3]O*g3^O~P#mOt3fO~Ot3gO~O#P3hO~O*b3iO~O*PPO*QQO*RQO*SQO*TRO*URO*VSO*WRO*]TO*^TO*`_O*b`O*n3qO*o3qO*p3qO*q3qO~O$w3pO~P**`O#P-bO!Y-ni~O!^3|O!_3|O~P#mOt4OO~O)P.XO*X.XO$w/ZP~Or4RO~Ot4SO~O!h4TO~P#mO!`4VO!h#UO!n#_O!t#XO!u#XO!v#XO~P#mOt4XO#z&qO#{&rO&_&oOq/QP~Ot4[O#z&qO#{&rO&_&oOq/RP~Ot4aOq/SP~Ot4cOq/TP~Oq4hO~O)h4kOq/UP~Oq4lO~Oq4mO~O!V4nO)o4nOq/VP~Oq4qO~O!V4rO~O!`4vO!h#UO!n#_O!t#XO!u#XO!v#XO)o4sOq/WP~P#mOq4wO~Oq/XP~P)AQO!g4}O~Ot5OO~Ot5PO~O$`5ROT*y!Z!r*y!Z%Y*y!Z&V*y!Z)V*y!Z*P*y!Z*Q*y!Z*R*y!Z*S*y!Z*T*y!Z*U*y!Z*V*y!Z*W*y!Z*Y*y!Z*]*y!Z*^*y!Z*`*y!Z*b*y!Z*z*y!Z+V*y!Z+X*y!Z+`*y!Z+d*y!Z+f*y!Z,T*y!Z,W*y!Z,X*y!Z,Z*y!Z,[*y!Z,^*y!Z,_*y!Z,a*y!Z-d*y!Z$w*y!Z*d*y!Z*f*y!Z*g*y!Z*j*y!Z*s*y!Z+Q*y!Z+R*y!Z+^*y!Z~O&S5SO~O%m5TO~Oq5YO~P'/gO!Z%OO!h$zO#Q%PO#R%PO#i)ROq-wa#P-waT-wa$w-wa%Y-wa&V-wa)V-wa*P-wa*Q-wa*R-wa*S-wa*T-wa*U-wa*V-wa*W-wa*Y-wa*]-wa*^-wa*`-wa*b-wa*d-wa*f-wa*g-wa*j-wa*s-wa*z-wa+Q-wa+R-wa+^-wa~P#mOX!mOv!nO!`!lO!a!lO!h%vO!p!dO!x!dO!y!dO!z!dO!{!dO!|!dO#O/rO#T!qO$}!eO~P)=QO#P2[Oq-vaT-va$w-va%Y-va&V-va)V-va*P-va*Q-va*R-va*S-va*T-va*U-va*V-va*W-va*Y-va*]-va*^-va*`-va*b-va*d-va*f-va*g-va*j-va*s-va*z-va+Q-va+R-va+^-va~Ot5_O~P#mOr#aOt5_O#z&qO#{&rO&_&oO~O!n5aO~P#-pO%m5bO~O$w5dO$x/yO%u3YO%v2lO&P3YO&Q3bO&S2hO&T2hO&VZO&c2mO&d2mO&e2nO&f2nO&g2nO&h2mO&i2oO&j2mO&k2mO&l2mO&m2pO&n2qO&o2rO&p2rO&q2rO&r2sO&s2sO&t2mO&u2mO&v2mO&w2mO&x2sO&y2mO&z2mO&{2tO&|2mO&}2mO'O2uO'P2vO'Q2mO'R2mO'S2mO'T2mO'U2mO'V2mO'W2mO'X2mO'Y2mO'Z2mO'[2mO']2mO'^2sO'_2sO'`2mO'a2mO'b2wO'c2wO'd2mO'e2mO'f2mO'g2mO'h2wO'i2mO'j2mO'l2xO'm2xO'n2xO'p2yO'q2yO'u2zO'v2zO'w2zO'x2zO'y2{O'z2{O'{2{O'|2{O'}2|O(O2}O(P2}O(Q2}O(R2}O(S2}O(T2zO(V3OO(W3OO(X3OO(Y3OO(Z3OO([3OO(a3PO(b3PO(c3PO(d3PO(e3PO(f3PO(i3QO(j3QO(k3QO(l3QO(m3QO(n3QO(o3QO(p3QO(q3QO(r3QO(s3QO(t3QO(u3QO(v3RO(w3QO(y3SO({3TO(}3UO)R3VO)V]O*PPO*QQO*RQO*SQO*TRO*URO*VSO*WRO*Y[O*]TO*^TO*`_O*b`O*d3cO*e3[O*f3]O*g3^O~P#mOt5gO$x/yO~P#mOa'kXt'kXv'kXw'kXx'kXy'kXz'kX{'kX|'kX}'kX!O'kX!P'kX!Q'kX!R'kX!S'kX!T'kX!U'kX!V'kX-k'kX~O!W5hO~P*BjO!W5iO~O!W5jO~O!W5kO~Oa&bXv&bXw&bXx&bXy&bXz&bX{&bX|&bX}&bX!O&bX!P&bX!Q&bX!R&bX!S&bX!T&bX!U&bX!V&bX$w&bX$x&bX%u&bX%v&bX&P&bX&Q&bX&S&bX&T&bX&V&bX&c&bX&d&bX&e&bX&f&bX&g&bX&h&bX&i&bX&j&bX&k&bX&l&bX&m&bX&n&bX&o&bX&p&bX&q&bX&r&bX&s&bX&t&bX&u&bX&v&bX&w&bX&x&bX&y&bX&z&bX&{&bX&|&bX&}&bX'O&bX'P&bX'Q&bX'R&bX'S&bX'T&bX'U&bX'V&bX'W&bX'X&bX'Y&bX'Z&bX'[&bX']&bX'^&bX'_&bX'`&bX'a&bX'b&bX'c&bX'd&bX'e&bX'f&bX'g&bX'h&bX'i&bX'j&bX'l&bX'm&bX'n&bX'p&bX'q&bX'u&bX'v&bX'w&bX'x&bX'y&bX'z&bX'{&bX'|&bX'}&bX(O&bX(P&bX(Q&bX(R&bX(S&bX(T&bX(V&bX(W&bX(X&bX(Y&bX(Z&bX([&bX(a&bX(b&bX(c&bX(d&bX(e&bX(f&bX(i&bX(j&bX(k&bX(l&bX(m&bX(n&bX(o&bX(p&bX(q&bX(r&bX(s&bX(t&bX(u&bX(v&bX(w&bX(y&bX({&bX(}&bX)R&bX)V&bX*P&bX*Q&bX*R&bX*S&bX*T&bX*U&bX*V&bX*W&bX*Y&bX*]&bX*^&bX*`&bX*b&bX*d&bX*e&bX*f&bX*g&bX-k&bX~O!W5lO~P*D_O!W5mO~P*D_O!W5nO~OX(hXa(hXv(hXw(hXx(hXy(hXz(hX{(hX|(hX}(hX!O(hX!P(hX!Q(hX!R(hX!S(hX!T(hX!U(hX!V(hX!`(hX!a(hX!h(hX!n(hX!p(hX!t(hX!u(hX!v(hX!x(hX!y(hX!z(hX!{(hX!|(hX#O(hX#T(hX#u(hX#v(hX#w(hX#x(hX#y(hX#z(hX#{(hX#}(hX$P(hX$Q(hX$R(hX$S(hX$}(hX%O(hX%P(hX-k(hX~O!W5jO~P*NjO!W5kO~P*NjO!W5oO~O!W5pO~P*BjO!W5qO~Oa'tXt'tXv'tXw'tXx'tXy'tXz'tX{'tX|'tX}'tX!O'tX!P'tX!Q'tX!R'tX!S'tX!T'tX!U'tX!V'tX-k'tX~O!W5rO~P+$fO!W5sO~P+$fO!W5tO~O!W5uO~Ot5_O~Ob5vO#n#}O&[5wO~Ot5xO~O%z5|O%|5{O%}5{O&O5{O~Ot5}O~O#T6PO~P) |O!h!iO)q6QO*h6RO~Or6UO~Or,oO&R6VO~O!g6XO~O!g6YO~O$w6]O~P**`Or,oO$`6bO$x6`O~OX:gOaoOv'^OwoOxoOyoOzoO{oO|oO}oO!OoO!PoO!QoO!RoO!SoO!ToO!UoO!VoO!Z%OO!`:bO!a:bO!h'YO!n#_O!p,aO!t#XO!u#XO!v#XO!x!dO!y!dO!z!dO!{!dO!|!dO#O:aO#Q%PO#R%PO#T!qO$}:`O-koO~P)=QO+Z6eO~O#P-bO!Y-nq~O!^6hO!_6hO~P#mO$w6iO~Ot&uO#v6jO#w6kO#x6lO~O!V6mO~O!g6nO~O$`6oO~O!V6nO~Ot4XO#z&qO#{&rO&_&oOq/QX~Oq6qO~Ot4[O#z&qO#{&rO&_&oOq/RX~Oq6sO~Ot4aOq/SX~Oq6uO~Ot4cOq/TX~Oq6wO~Oq6xO~Oq6yO~O)h4kOq/UX~Oq6{O~O!V4nO)o4nOq/VX~Oq6}O~Oq7OO~O!`4vO!h#UO!n#_O!t#XO!u#XO!v#XO)o4sOq/WX~P#mOq7QO~O!V7RO~Oq/XX~P)AQOq7TO~O!g7UO~Oq7VO~Oq7WO#P7XO~Oq-wi#P-wiT-wi$w-wi%Y-wi&V-wi)V-wi*P-wi*Q-wi*R-wi*S-wi*T-wi*U-wi*V-wi*W-wi*Y-wi*]-wi*^-wi*`-wi*b-wi*d-wi*f-wi*g-wi*j-wi*s-wi*z-wi+Q-wi+R-wi+^-wi~P#mO%y7bO~O%y7cO~O.Y7dO.Z7dO.[7dO.]7dO.t7eO~O.^7fO.j7gO.l7hO.m7hO~O.^7dO.e7dO.f7dO.g7dO.h7dO.i7dO.j7dO.k7dO.l7dO.m7dO~O.n7dO~P+3WO.^7dO.e7dO.g7dO.j7dO.k7dO.l7dO.m7dO~O.n7dO~P+4PO.r7iO~O.o7dO~O.p7dO.q7jO.r7kO.s7dO~P+3WO.t7lO~O.o7mO.t7lO~O.o7mO~Oa.Pav.Paw.Pax.Pay.Paz.Pa{.Pa|.Pa}.Pa!O.Pa!P.Pa!Q.Pa!R.Pa!S.Pa!T.Pa!U.Pa!V.Pa$w.Pa$x.Pa%u.Pa%v.Pa&P.Pa&Q.Pa&S.Pa&T.Pa&V.Pa&c.Pa&d.Pa&e.Pa&f.Pa&g.Pa&h.Pa&i.Pa&j.Pa&k.Pa&l.Pa&m.Pa&n.Pa&o.Pa&p.Pa&q.Pa&r.Pa&s.Pa&t.Pa&u.Pa&v.Pa&w.Pa&x.Pa&y.Pa&z.Pa&{.Pa&|.Pa&}.Pa'O.Pa'P.Pa'Q.Pa'R.Pa'S.Pa'T.Pa'U.Pa'V.Pa'W.Pa'X.Pa'Y.Pa'Z.Pa'[.Pa'].Pa'^.Pa'_.Pa'`.Pa'a.Pa'b.Pa'c.Pa'd.Pa'e.Pa'f.Pa'g.Pa'h.Pa'i.Pa'j.Pa'l.Pa'm.Pa'n.Pa'p.Pa'q.Pa'u.Pa'v.Pa'w.Pa'x.Pa'y.Pa'z.Pa'{.Pa'|.Pa'}.Pa(O.Pa(P.Pa(Q.Pa(R.Pa(S.Pa(T.Pa(V.Pa(W.Pa(X.Pa(Y.Pa(Z.Pa([.Pa(a.Pa(b.Pa(c.Pa(d.Pa(e.Pa(f.Pa(i.Pa(j.Pa(k.Pa(l.Pa(m.Pa(n.Pa(o.Pa(p.Pa(q.Pa(r.Pa(s.Pa(t.Pa(u.Pa(v.Pa(w.Pa(y.Pa({.Pa(}.Pa)R.Pa)V.Pa*P.Pa*Q.Pa*R.Pa*S.Pa*T.Pa*U.Pa*V.Pa*W.Pa*Y.Pa*].Pa*^.Pa*`.Pa*b.Pa*d.Pa*e.Pa*f.Pa*g.Pa-k.Pa~O%z5|O%|5{O%}5{O&O5{O~P+5mO$x/yO%{7pO~O%m7sO~O(^7tO~O!h7vO~P#mO!h7xO~P#mO$`7zO~Ot7|Oq.wP~P#mO$t8PO~P+5mO#P8QO~Or,oO$`8SO$x6`O~O*PPO*QQO*RQO*SQO*TRO*URO*VSO*WRO*]TO*^TO*`_O*b`O*q8YO*w8YO*x8YO~O$w8XO~P+A_O(^8[O~O#P-bO!Y-ny~O%m8_O~O%m8`O~O%m8aO~O%m8dO~O(^8gO~Ot8hO~O!W8iOt'oi~O!W8jOa&biv&biw&bix&biy&biz&bi{&bi|&bi}&bi!O&bi!P&bi!Q&bi!R&bi!S&bi!T&bi!U&bi!V&bi$w&bi$x&bi%u&bi%v&bi&P&bi&Q&bi&S&bi&T&bi&V&bi&c&bi&d&bi&e&bi&f&bi&g&bi&h&bi&i&bi&j&bi&k&bi&l&bi&m&bi&n&bi&o&bi&p&bi&q&bi&r&bi&s&bi&t&bi&u&bi&v&bi&w&bi&x&bi&y&bi&z&bi&{&bi&|&bi&}&bi'O&bi'P&bi'Q&bi'R&bi'S&bi'T&bi'U&bi'V&bi'W&bi'X&bi'Y&bi'Z&bi'[&bi']&bi'^&bi'_&bi'`&bi'a&bi'b&bi'c&bi'd&bi'e&bi'f&bi'g&bi'h&bi'i&bi'j&bi'l&bi'm&bi'n&bi'p&bi'q&bi'u&bi'v&bi'w&bi'x&bi'y&bi'z&bi'{&bi'|&bi'}&bi(O&bi(P&bi(Q&bi(R&bi(S&bi(T&bi(V&bi(W&bi(X&bi(Y&bi(Z&bi([&bi(a&bi(b&bi(c&bi(d&bi(e&bi(f&bi(i&bi(j&bi(k&bi(l&bi(m&bi(n&bi(o&bi(p&bi(q&bi(r&bi(s&bi(t&bi(u&bi(v&bi(w&bi(y&bi({&bi(}&bi)R&bi)V&bi*P&bi*Q&bi*R&bi*S&bi*T&bi*U&bi*V&bi*W&bi*Y&bi*]&bi*^&bi*`&bi*b&bi*d&bi*e&bi*f&bi*g&bi-k&bi~O!W8jO~O!W8kO~O!W8lO~Ot8nO~P#mOt8pO~Ot8rO~Ot8sO~O#P8tO~Or,oO!Z%OO!h$zO#Q%PO#R%PO~O#P8vOq.xX~Oq8xO~O$`8|O$x6`O~O$w9OO~P+A_Ot9SO~Ot9TO~Ot9UO~O#P9VO~O.Y9ZO.Z9ZO.[9ZO.]9ZO._9ZO.`9ZO.a9ZO.b9ZO.c9ZO.d9ZO.t9[O~O.o9ZO~O.^9]O.e9]O.f9]O.g9]O.h9]O.i9]O.j9]O.k9]O.p9]O.s9]O~O.t9^O~O%y9_O~O%y9`O~O!g9bO~O!g9cO~Ot9dO~P#mO#P8vOq.xa~O!Z9hOr/fP~Oq9lO~Oq9mO~Oq9nO~O!W9pOa&byv&byw&byx&byy&byz&by{&by|&by}&by!O&by!P&by!Q&by!R&by!S&by!T&by!U&by!V&by$w&by$x&by%u&by%v&by&P&by&Q&by&S&by&T&by&V&by&c&by&d&by&e&by&f&by&g&by&h&by&i&by&j&by&k&by&l&by&m&by&n&by&o&by&p&by&q&by&r&by&s&by&t&by&u&by&v&by&w&by&x&by&y&by&z&by&{&by&|&by&}&by'O&by'P&by'Q&by'R&by'S&by'T&by'U&by'V&by'W&by'X&by'Y&by'Z&by'[&by']&by'^&by'_&by'`&by'a&by'b&by'c&by'd&by'e&by'f&by'g&by'h&by'i&by'j&by'l&by'm&by'n&by'p&by'q&by'u&by'v&by'w&by'x&by'y&by'z&by'{&by'|&by'}&by(O&by(P&by(Q&by(R&by(S&by(T&by(V&by(W&by(X&by(Y&by(Z&by([&by(a&by(b&by(c&by(d&by(e&by(f&by(i&by(j&by(k&by(l&by(m&by(n&by(o&by(p&by(q&by(r&by(s&by(t&by(u&by(v&by(w&by(y&by({&by(}&by)R&by)V&by*P&by*Q&by*R&by*S&by*T&by*U&by*V&by*W&by*Y&by*]&by*^&by*`&by*b&by*d&by*e&by*f&by*g&by-k&by~Ot9qO~O(^9rO~O#P9sO~Or9uO~O(^9wO~Oq9xO~O.o9yO~O+Z9}O~Oq:QO~O#T:RO~Oq:UO~O(^:YO~Or:]O~OX!mOv!nO!`!lO!a!lO!h%vO!p!dO!x!dO!y!dO!z!dO!{!dO!|!dO#O/rO#T!qO$}!eOT-uP$w-uP%Y-uP&V-uP)V-uP*P-uP*Q-uP*R-uP*S-uP*T-uP*U-uP*V-uP*W-uP*Y-uP*]-uP*^-uP*`-uP*b-uP*d-uP*f-uP*g-uP*j-uP*s-uP*z-uP+Q-uP+R-uP+^-uP~P)=QOt$pO$}:dO~P#mOX:gOv!nO!`:bO!a:bO!p!dO!x!dO!y!dO!z!dO!{!dO!|!dO#O:aO#T!qO$}:`O~P)=QO!`:eO~OPQ!l$z)h-k&_t&_~",
|
|
75
|
+
goto: "!C[/vPPPP/wP0RPPPPPPPPPPPPPPPPPPPPPPPPPPPP0WP1fPPPPPPPPPPPPPPPPP1mPP2P2XPPPPPP2_2k2nPP3{5O5fP8OP8OP3{P8}PPP9WPPPPP;oPPPP<^P<aPPPPPPPP=_>b>mP>mP>mP>x@lP@{ARPAUPPPPPPPPPPPPPPPPPPPPPAXPPPPPPPPPA[PPPPPPPPPPPPPPPPPPPPPPPPPA_PAb;oPPPAlBfPBpPCPCS/wPCiPPPPPPPPPPCmCpPPPPPPPPCxPDqESE`PPE}FYPPPPPPPPPPPG[PPGjGpGvPGyHrPH{GfI]PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPIaPPPIePPIeIiIaPPPPPPPPPPPPPPPImPPPPPPIqPJUJaPPPPPPJeJzPPPPPPPPPPPPPPPKOPKSPKWPK[PKcPKgGfKjPPPPPPPPPPPPPPPPK|PLPLPLPLSL]LaPLePLhLhLkLnLqLtLzMQMWM^MaMdMgPPPPPPPPPPMjMmPPMpPNWPN|PPPPP/}P! P! T! _PPPP/}P! h! l! rPP/wP!!TPPP!!ZPP/}P!!dPPPPP!!p!!sP!!vP!!|!#P!!vP!!vPPPPP!!vPP!!vPPPPPPPP!#SP!#YPPP!!v!#bP!!vP!!vP!#n!!vPPPPP!!vPP!#zP!#}!$X!$`!$n!$x!%S!%Y!%k!%q!%{!&R!&X!&_!&q!&w!&}!']!'s!'y!(P!(V!(]!(c!(i!(o!(u!({!)T!)Z!)a!)g!)m!)t!)z!*Q!*W!*^!*d!*n!*x!+O!+U!+[!+f!+l!+r!+x!,OPPPPP!,U!,XP!,_!/l!3S!3V!3]!5O!6U!6Y!6a!6u!7O!7T!7]!7`P!8q!8t!8z!:`!:d!:h!:l!:p!:v!:y!;V!;Y!;fPPPPPPPPPPPPPPPPPPPPPPPPPPP!;v!;|!<S!<V!<Y!<`!<c!<f!<l!<o!<}!=b!=e!=h!=k!=t!=w!=z!=}!>Q!>z!?Q!?V!?Y!?f!?i!?lMp!?r!@Q!@n!AX!Ab!A}!BRP!BV!B]!Ba!Be!Bk!BoP!B{!CP!CT!CXWVOX&[)yT)Y%|)[V#ii#j)eQ$Q{Q$k!`Q$o!cQ%S!sQ%k#_Q%r#fQ%{#oQ(i%fQ*]&qQ,j({Q-d)p[.[*u*x*y*z+c+fQ0o-oW1_.e.f.g.|Q3d/{S4Q0}1OR7a5aS#pi)eR%z#jQ&U#pQ)X%zQ,q)SQ/m,cQ2Q/jR5X2R]&Q#p%z)S,c/j2RX)k&P)l-b0iQ)q&PQ-_)lQ0k-bR3{0iR-`)mQ#[e![$`!V!Z$m%i%}&O&}'r(p)a)d)m,z,|-Z-y2e2f3]3h3v5`5|8Q8q8t9R9s:WS$p!l:bS&h#z&iS'd$w:eQ1O.PQ1i.mQ4W1TT4s1k4td#]e!l#z$w&i.P.m1T1k4tv$c!V!Z%}&O&}'r)a)m,z,|-Z-y2e2f3h5|8Q8t9sd'`$m%i(p)d3]3v5`8q9R:WT:c:b:eQ#PcQ%[!zQ%a#QS%c#U'YQ(b%`Q0t-vR3}0qQqPQsQQ!vb!b#Ve!V!Z!l#]#z$c$w%}&O&i&}'r)a)m,z,|-Z-y.P.m0p1T1k2e2f3h4t5|8Q8t9sQ#ymS$p!e:`Q%V!uQ&Z#qQ&d#wl'Z$m%i'`(p)d3]3v5`8q9R:W:b:c:eS'd$q:dS(j%g:fQ(o%jQ)t&WQ*V&gQ,](dQ-W)cQ-r*OQ-u*TQ/c,UQ0_-VQ0o-lR4U1S![#]e!V!Z!l#z$w%}&O&i&}'r)a)m,z,|-Z-y.P.m1T1k2e2f3h4t5|8Q8t9si:c$m%i(p)d3]3v5`8q9R:W:b:eQ#SdQ%b#TR(h%eQ!paQ#Zev$a!V!Z%}&O&}'r)a)m,z,|-Z-y2e2f3h5|8Q8t9sQ$m!aS$r!f/rS$t!h!tQ%i#YQ%x#hd'[$m%i(p)d3]3v5`8q9R:WS'p%O+VQ's%QQ(S%TQ(p%lS(t%q%uQ+T:aQ,b(sQ.}+iW/s,o2[9u:]Q0^-UQ2W/qQ3r0]Q3v0aQ5`2dQ7{6TQ8q7uQ9R8]R:W:V!X$p!p#Z$a$m$r$t%i%x'['p's(S(p(t+T,b.}/s0^2W3r3v5`7{8q9R:WR'd%P[!a`!b2c3i3q8YQ#hhQ$k!^Q%Q!qQ%l#^Q%q#dQ-U)bQ0]-SQ0a-XQ6T3`Q7u6PQ8]6eR:V:RQ,p)SQ.t+WS/Q+m,aS/l,c,qS2P/j/mQ4{1nS5W2Q2RQ5x3bQ6c3tQ7^5XQ7w6VQ8T6_Q8u7{Q:S:OR:T:Pc%t#h%q%u(s,o/q2[9u:]c%w#h%q%u(s,o/q2[9u:]Q!taQ#ulU$Ryz{b%w#h%q%u(s,o/q2[9u:]Q&s$QQ.]*uQ._*vQ.`*wQ.a*xQ.b*yQ.c*zQ.i*|Q.l+OQ.n+PQ.p+QS.s+V9hQ/V+rQ1`.dQ1a.eQ1b.fQ1c.gQ6S3^R6W3cQ)T%xQ,d(tQ/k,bQ2Z/sR5[2WQ%S!rR,n)RR'v%RR+o(QR+o'tR+o'{R(R%RQ2Y/sS5Z2W2ZR7_5[Q)n&PS-^)l)qQ0Q,xQ0S,yS0f-_-eQ0j-bQ3y0gS3z0i0kS6g3{3|Q7w6QQ7y6RR8^6hQ&T#pS)W%z&UR,t)XQ&S#pU)V%z&T&US,s)W)XR0O,tR)i&OQ&R#pW)U%z&S&T&UU,r)V)W)XS/},s,tR3e0OT#ch#dR%r#g](u%s(v(z,h/p2US'b$m(pQ)S%xS,c(t)TQ.q+US/j,b,dQ2R/kQ3w0bQ8p7tQ9Q8[Q9z9rQ:O9wR:Z:Yo']$m%x(p(t)T+U,b,d/k0b7t8[9r9w:Ye/w,p/l/x2P2S5U5W7]7^8fQ/|,pS2T/l/xY3_/y2j2l5{7rS5V2P2SS7[5U5WS8e7]7^R9X8fS2h/y2jQ5e2lT7o5{7rQ}ZQ$W!OQ&y$YQ)|&bQ+`'nQ-q){Q.u+YQ1y/[Q5_2aQ5f2lQ7|6UQ8h7bQ8m7pQ8p8PQ9d8vR9q9_WVOX&[)yS)Y%|)[T2h/y2jXvZ!O$U&wQ&s$XR7a5vR$R!QQ#bgQ$R!RQ&^#tQ'V$lQ+X'cQ+|(VQ.[*}Q/]+zQ/b,TQ1{/^Q2O/fQ5_2bR7a5wQ$QyX.[*u*v+c+dQ$QzQ*]&rW.[*v*w+d+eT1_.d.{T2`/y2jT2a/y2jT3W/y2jT2b/y2jT2c/y2jS!_`3iQ$n!bQ%m#^Q5_2cQ6^3qR9P8YQ+W'bQ1n.qV9i9Q9z:ZT2d/y2jQ$|!pQ'e$tQ(m%iQ+b(SQ/i,`Q7a5`R9Y8gT2e/y2jT3X/y2jT3`/y2jT2f/y2jQ#[eT$h!Z2fT3a/y2jR5_3aWVOX&[)yS(Y%^([S)Y%|)[T2h/y2jR'O$bR4Q1OQ'V$lQ*m'QR+X'cT.[*|+hT.k+O+PR.k+OR.k+PR.k+QR1X.]R1X._Q1X.`R4g1`Q1X.aR4g1aQ1X.bR4g1bQ1X.cR4g1cR1X.iR1X.lR1X.nR1X.pR'O$]R0x-|WVOX&[)yS)Y%|)[S2h/y2jS3m0X3oT8U6`8WWVOX&[)yW(X%^([(c,YS)Y%|)[S*P&e*RS-h)v-jS2h/y2jS3m0X3oT8U6`8WR!b`T,{)a,|Q-P)aS0V,|-QR3l0WQ0Y-PQ3k0VR6Z3lT-R)b-SQ3t0^R6_3rQ6a3tS8R6_6cS8{8T8ZQ9f8zR9t9gX!ga!h!t%TQ$}!pQ'f$tR+y(SQ)w&ZQ-g)tQ0`-WR3u0_R9v9jR:^:[XVOX&[)yR#sjR&]#sQ%_#PR(W%[S(Y%^([T,W(c,YQ(e%aQ,V(bQ/g,]R1}/cQ&f#yQ)}&dQ-w*VR0r-rR#`nQXOStX)yR)y&[S#ji)eR%y#jQ#|pU&l#|'h+RQ'h$yR+R'XQ)l&PS-])l0iR0i-bQ%h#VS(k%h+SR+S'ZQ+]'jR.x+]Q%u#hQ(s%qU(|%u(s/qX/q,o2[9u:]Q&n#}R*Z&nQ%o#aS(q%o+pR+p'uQ2]/tR5^2]Q+j'pR/O+jQ-[)gR0d-[Q-c)nQ0e-^W0l-c0e3x6fQ3x0fR6f3yQ)[%|R,u)[Q#dhR%p#dQ(v%sU,e(v,h2UQ,h(zR2U/pQ/x,pQ2S/lY2_/x2S5U7]8fQ5U2PQ7]5WR8f7^Q2j/yR5c2jQ5z3ZR7n5zQ&{$ZR*d&{Q8w7|R9e8wQ.O*iR0z.OQ*t'WR.U*tQ4Y1WR6p4YQ4]1YR6r4]Q4_1ZR6t4_U4b1[1]1^R6v4bQ4i1eR6z4iQ4o1hR6|4oQ4t1kR7P4tQ4y1mR7S4yS.W*t0wR1U.WQ-z*eR0v-zQ,|)aR0U,|Q3o0XR6[3oQ-S)bR0[-SQ8W6`R8}8WQ!haS$s!h%TR%T!tQ&W#qS)s&W-VR-V)cQ-j)vR0m-jQ&`#uR)z&`Q!ubR%U!uQ!zcS%Z!z%`R%`#QQ([%^R+}([Q,Y(cR/d,YQ#wmR&c#wQ*R&eR-s*RQ&i#zR*W&iRYOXWOX&[)y#trPQbem!V!Z!e!l!u#]#q#w#z$c$q$w%g%j%}&O&W&g&i&}'`'r(d)c)d)m*O*T,U,z-V-Z-l-y.P.m0p1S1T1k2e2f3]3h3v4t5|8Q8q8t9R9s:W:`:b:c:d:e:f`!|c!z#Q#U%`'Y-v0qU#Rd#T%eU#ni#j)eQ#rjU${!p$t(SS'_$m(pS(l%i5`j)Q%x(t)T+U,b,d/k0b7t8[9r9w:Yp)o&P)l)q,x,y-_-b-e0g0i0k3{3|6Q6R6hS,})a,|S/h,`8gS0Z-Q0WT3s0^3r%fpPQbcdeijm!V!Z!e!l!u!z#Q#T#U#]#j#q#w#z$c$q$w%`%e%g%j%x%}&O&P&W&g&i&}'Y'r(d(t)T)a)c)e)l)m)q*O*T+U,U,`,b,d,x,y,z,|-Q-V-Z-_-b-e-l-v-y.P.m/k0W0^0b0g0i0k0p0q1S1T1k2e2f3h3r3{3|4t5|6Q6R6h7t8Q8[8g8t9r9s9w:YpuZ!O$Y&b'n){+Y/[2a2l6U7b7p8P8v9_U$y!p$t(SQ&k#{r'X$m%i'`(p)d3]3v5`8q9R:W:`:b:c:d:e:fW2X/s2W2Z5[T2g/y2jR)r&PQ)h&OR-a)mQ$b!VS$h!Z2fS'a$m(pQ(n%iQ)f%}S)g&O)mS*h&}-yQ+l'rQ-Q)aQ-Y)dQ0T,zQ0W,|Q0c-ZQ5_2eQ6O3]Q6X3hQ6d3vQ7`5`Q7r5|Q8y8QQ9a8qQ9b8tQ9k9RQ9{9sR:X:W!t#Xe!V!Z!l#z$m$w%i%}&O&i&}'r(p)a)d)m,z,|-Z-y.P.m1T1k2e2f3]3h3v4t5`5|8Q8q8t9R9s:W:b:eW%k#]$c'`:cR3}0pT'm$z'YS'j$z'YR.w+[u!Y`h!^!b!q#^#d)b-S-X2c3`3i3q6P6e8Y:RQ/v,oQ9|9uR:_:]V/u,o9u:]U/t,o9u:]R5]2[R't%RQ$OqQ$_!UQ'V$lQ(z%sQ*a&xS*j'P-}Q+X'cb+a'o+Z.z1q5R6b7z8S8|Q,R(_Q/V+vQ/Z+xQ/p,iQ0{.PQ1w/YQ5Q1xQ5_3XQ8c7XR9o9VR+w'|Q'q%OR.r+V#n!dae!V!Z!a!f!h!t#Y#h$m%O%Q%T%i%l%q%u%}&O&}'r(p(s)a)d)m+V+i,o,z,|-U-Z-y/q/r0]0a2[2d2e2f3]3h3v5`5|6T7u8Q8]8q8t9R9s9u:V:W:]:aR1R.VT)Z%|)[T2i/y2jT3Z/y2jT5y3Z5zQ7q5{R8o7rR!OZQ|ZQ$V!OQ&v$UR*`&wR$[!SWvZ!O$U&wQ$Z!SR*c&zU&p$P.Z.^S4X1W4YS4[1Y4]R5_2bQ+W'bR1n.qQ$i!ZR5_2fR8O6UR7}6UQ!U[R!V]R*l'PR*k'PQ*i'PR0y-}R0|.PS*s'W*tQ1l.oS4x1m4yR8b6o[*r'W*t.o1m4y6oc+a'o+Z.z1q5R6b7z8S8|R4Z1WR4^1YR4`1ZQ4d1[Q4e1]R4f1^R4j1eR4p1hR4u1kR4z1mWVOX&[)yW(X%^([(c,YS)Y%|)[S*P&e*RS*s'W*tS-h)v-jS2h/y2jS3m0X3oT8U6`8WQ.Y*tR4P0wV.V*t.W0wR1S.VegOX%^%|&[([)[)y/y2jR*g&}R*f&}Q*e&}R0u-yi^OX%|&[)[)y/y0X2j3o6`8WxUOX%^%|&[&e([(c)[)v)y*R,Y-j/y0X2j3o6`8WQ#[eR3j0TxUOX%^%|&[&e([(c)[)v)y*R,Y-j/y0X2j3o6`8WR#[eQ9j9QQ:P9zR:[:ZQ+b'oQ.v+ZQ1r.zQ4|1qQ7Y5RQ8Z6bQ8p7zQ8z8SR9g8|T3n0X3oT8V6`8WX&V#q&W)c-VT-i)v-jT&_#u&`X!yc!z#Q%`T(Z%^([Q,Q(^Q1|/`Q7Z5TR9W8dT,X(c,YT#vm#wT*Q&e*RR&j#z",
|
|
76
|
+
nodeNames: "⚠ LineComment BlockComment CompilationUnit Class Keyword ClassAttribute Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword ) ( Delim IntegerLiteral ClassName Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword SQSTRING . TypeParametersClause > < Delim TypeParameterAttribute + - Keyword Keyword Keyword Keyword Delim TypeList ClassName ] [ Delim AssemblyName TypeIdentifier Slash Delim Keyword Delim Astrisk Delim Keyword ModuleName Keyword Keyword Keyword Type Keyword & Keyword Keyword Keyword Delim ... , Keyword Keyword Delim Keyword CallingConvention Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Delim ParameterAttribute Delim Keyword Delim Keyword Delim Keyword Delim MarshalClause Keyword Delim MarshalBlob Keyword Delim QSTRING Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Delim Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Delim = Keyword Keyword NullLiteral Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword } { Delim ByteLiteral ParamName Delim Not Keyword Keyword ArgumentName ClassExtends Keyword ClassImplements Keyword ImplementationList Delim Method Keyword MethodAttribute Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Delim PinvokeAttribute Keyword Keyword Keyword Keyword Keyword : Keyword Keyword MethodName Keyword MethodName ImplementationAttribute Delim Keyword Keyword MethodScopeBlock Identifier Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Data Keyword Keyword Delim Delim Delim Keyword Delim Delim RealLiteral Delim Instrction OpCode Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword OpCode Keyword Keyword Keyword OpCode Keyword Keyword OpCode OpCode OpCode Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword OpCode Keyword Keyword Keyword Keyword Keyword Keyword MethodRef :: Delim OpCode Keyword Keyword Keyword Keyword Keyword Keyword FieldName OpCode Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword OpCode Keyword OpCode Keyword OpCode Keyword MemberRef Keyword OpCode Keyword Delim LabelName Security Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Delim BooleanLiteral Delim Delim Delim Delim Delim Delim NullLiteral Delim Keyword Delim Delim Delim Delim Delim Delim Delim Delim Delim Delim Delim Delim Delim PP_Directive PP_Directive PP_Directive PP_Directive PP_Directive PP_Directive PP_Directive ; Keyword Keyword Delim Delim Keyword PP_Directive Language Keyword CustomAttribute Keyword Delim Keyword Keyword Keyword Keyword Keyword Event Keyword EventAttribute EventName Delim Keyword Keyword Keyword Keyword Property Keyword PropertyAttribute PropertyName Delim Keyword Keyword Field Keyword FieldAttribute Keyword Keyword Keyword ConstName Keyword Keyword Export Keyword Delim Keyword Keyword Keyword Keyword Keyword Delim Delim Keyword Namespace Keyword NamespaceName Delim VTable Keyword VTableFixup Keyword Keyword Keyword Keyword Keyword File Keyword Keyword Assembly Keyword Keyword Keyword Keyword Keyword Keyword Keyword Keyword Delim Keyword AsmOrReference Keyword Keyword Keyword AssemblyReference Delim Keyword ExportType Keyword ManifestResource Keyword Delim Module Keyword Keyword Keyword Keyword Keyword TypeDefine Keyword Keyword Delim Keyword",
|
|
77
|
+
maxTerm: 681,
|
|
78
|
+
nodeProps: [
|
|
79
|
+
["openedBy", 33,"(",56,"<",69,"[",177,"{"],
|
|
80
|
+
["closedBy", 34,")",57,">",70,"]",178,"}"]
|
|
81
|
+
],
|
|
82
|
+
skippedNodes: [0,1,2],
|
|
83
|
+
repeatNodeCount: 48,
|
|
84
|
+
tokenData: "!2g~R!cXY%^YZ%cZ[%^[]%^]^%hpq%^qr%prs%ust-ovw3Qwx3Vxy;Pyz;Uz{;Z{|;`|};e}!O;j!O!P;o!P!Q=w!Q!R?w!R!SCP!S!TCr!T!UDe!U!VEW!V!WEy!W!XFl!X!YG_!Y!ZHQ!Z![@p![!]Hs!]!^IQ!^!_IV!_!`I[!`!aIa!c!iIf!i!}JS!}#OJh#P#QJm#R#SJS#T#UJr#U#YIf#Y#ZK|#Z#]JS#]#^N}#^#aJS#a#b!'p#b#cJS#c#d!(r#d#fJS#f#g!*`#g#h!-Y#h#i!-p#i#j!.v#j#oJS#o#p!2]#q#r!2b#y#z%c$f$g%^#BY#BZ%^$IS$I_%^$I|$I}%c$I}$JO%c$JO$JP%^$KV$KW%^&FU&FV%^~%cO-h~~%hO-g~~%mP-g~YZ%c~%uO$}~~%xZOY%uZ]%u^r%urs&ks#O%u#O#P&p#P#y%u#z$I|%u$JO;'S%u;'S;=`-i<%lO%u~&pO#n~~&s^rs%uwx%u!Q!R%u!w!x'o#O#P%u#T#U%u#U#V%u#Y#Z%u#b#c%u#f#g%u#h#i%u#i#j(q#j#k%u#l#m)s~'rR!Q!['{!c!i'{#T#Z'{~(OR!Q![(X!c!i(X#T#Z(X~([R!Q![(e!c!i(e#T#Z(e~(hR!Q![(q!c!i(q#T#Z(q~(tR!Q![(}!c!i(}#T#Z(}~)QR!Q![)Z!c!i)Z#T#Z)Z~)^R!Q![)g!c!i)g#T#Z)g~)jR!Q![%u!c!i%u#T#Z%u~)vR!Q![*P!c!i*P#T#Z*P~*SaOY%uZ]%u^r%urs&ks!Q%u!Q![+X![!c%u!c!i+X!i#O%u#O#P&p#P#T%u#T#Z+X#Z#y%u#z$I|%u$JO;'S%u;'S;=`-i<%lO%u~+[aOY%uZ]%u^r%urs&ks!Q%u!Q![,a![!c%u!c!i,a!i#O%u#O#P&p#P#T%u#T#Z,a#Z#y%u#z$I|%u$JO;'S%u;'S;=`-i<%lO%u~,daOY%uZ]%u^r%urs&ks!Q%u!Q![%u![!c%u!c!i%u!i#O%u#O#P&p#P#T%u#T#Z%u#Z#y%u#z$I|%u$JO;'S%u;'S;=`-i<%lO%u~-lP;=`<%l%u~-rT#W#X.R#X#Y.v#]#^/y#`#a1z#i#j2c~.UP#X#Y.X~.[P#Y#Z._~.bP#]#^.e~.hP#b#c.k~.nP#X#Y.q~.vO*P~~.yQ#`#a/P#b#c/b~/SP#g#h/V~/YP#X#Y/]~/bO*T~~/eP#W#X/h~/kP#]#^/n~/qP#Y#Z/t~/yO*U~~/|Q#Y#Z0S#b#c1V~0VQ#W#X0]#b#c0n~0`P#X#Y0c~0fP#Y#Z0i~0nO*R~~0qP#W#X0t~0wP#X#Y0z~0}P#Y#Z1Q~1VO*S~~1YP#V#W1]~1`P#`#a1c~1fP#i#j1i~1lP#W#X1o~1rP#X#Y1u~1zO*V~~1}P#]#^2Q~2TP#b#c2W~2ZP#X#Y2^~2cO*^~~2fP#b#c2i~2lP#W#X2o~2rP#X#Y2u~2xP#Y#Z2{~3QO*Q~~3VO!y~~3YZOY3VZ]3V^w3Vwx3{x#O3V#O#P4Q#P#y3V#z$I|3V$JO;'S3V;'S;=`:y<%lO3V~4QO!V~~4T^rs3Vwx3V!Q!R3V!w!x5P#O#P3V#T#U3V#U#V3V#Y#Z3V#b#c3V#f#g3V#h#i3V#i#j6R#j#k3V#l#m7T~5SR!Q![5]!c!i5]#T#Z5]~5`R!Q![5i!c!i5i#T#Z5i~5lR!Q![5u!c!i5u#T#Z5u~5xR!Q![6R!c!i6R#T#Z6R~6UR!Q![6_!c!i6_#T#Z6_~6bR!Q![6k!c!i6k#T#Z6k~6nR!Q![6w!c!i6w#T#Z6w~6zR!Q![3V!c!i3V#T#Z3V~7WR!Q![7a!c!i7a#T#Z7a~7daOY3VZ]3V^w3Vwx3{x!Q3V!Q![8i![!c3V!c!i8i!i#O3V#O#P4Q#P#T3V#T#Z8i#Z#y3V#z$I|3V$JO;'S3V;'S;=`:y<%lO3V~8laOY3VZ]3V^w3Vwx3{x!Q3V!Q![9q![!c3V!c!i9q!i#O3V#O#P4Q#P#T3V#T#Z9q#Z#y3V#z$I|3V$JO;'S3V;'S;=`:y<%lO3V~9taOY3VZ]3V^w3Vwx3{x!Q3V!Q![3V![!c3V!c!i3V!i#O3V#O#P4Q#P#T3V#T#Z3V#Z#y3V#z$I|3V$JO;'S3V;'S;=`:y<%lO3V~:|P;=`<%l3V~;UOr~~;ZOq~~;`O!p~~;eO!^~~;jO#P~~;oO!_~~;tR!WZ!O!P;}!Q![<Y#`#a=S~<QP!O!P<T~<YO#O~S<_R&_S!Q![<Y!g!h<h#X#Y<hS<kR{|<t}!O<t!Q![<zS<wP!Q![<zS=PP&_S!Q![<z~=VP#c#d=Y~=]P#V#W=`~=cP#T#U=f~=iP#`#a=l~=oP#X#Y=r~=wO/q~~=|Q!l~z{>S!P!Q?V~>XTQ~Oz>Sz{>h{;'S>S;'S;=`?P<%lO>S~>kTO!P>S!P!Q>z!Q;'S>S;'S;=`?P<%lO>S~?POQ~~?SP;=`<%l>S~?[VP~OY?VZ]?V^#y?V#z$I|?V$JO;'S?V;'S;=`?q<%lO?V~?tP;=`<%l?V_@QY.YW$zQtT!O!P<Y!Q![@p!c!gAa!g!hAo!h!iAa!z!{Be#T#XAa#X#YAo#Y#ZAa#l#mBeV@wW$zQtT!O!P<Y!Q![@p!c!gAa!g!hAo!h!iAa#T#XAa#X#YAo#Y#ZAaQAfR$zQ!Q![Aa!c!iAa#T#ZAaUAtT$zQ{|<t}!O<t!Q![BT!c!iAa#T#ZAaUB[R$zQ&_S!Q![BT!c!iAa#T#ZAaTBhR!Q![Bq!c!iBq#T#ZBqTBvRtT!Q![Bq!c!iBq#T#ZBq_CYW.ZW$zQtT!O!P<Y!Q![@p!c!gAa!g!hAo!h!iAa#T#XAa#X#YAo#Y#ZAa_C{W.[W$zQtT!O!P<Y!Q![@p!c!gAa!g!hAo!h!iAa#T#XAa#X#YAo#Y#ZAa_DnW.]W$zQtT!O!P<Y!Q![@p!c!gAa!g!hAo!h!iAa#T#XAa#X#YAo#Y#ZAa_EaW.`W$zQtT!O!P<Y!Q![@p!c!gAa!g!hAo!h!iAa#T#XAa#X#YAo#Y#ZAa_FSW.aW$zQtT!O!P<Y!Q![@p!c!gAa!g!hAo!h!iAa#T#XAa#X#YAo#Y#ZAa_FuW.bW$zQtT!O!P<Y!Q![@p!c!gAa!g!hAo!h!iAa#T#XAa#X#YAo#Y#ZAa_GhW.cW$zQtT!O!P<Y!Q![@p!c!gAa!g!hAo!h!iAa#T#XAa#X#YAo#Y#ZAa_HZW.dW$zQtT!O!P<Y!Q![@p!c!gAa!g!hAo!h!iAa#T#XAa#X#YAo#Y#ZAaRHxP%mP![!]H{QIQO(^Q~IVO*W~~I[O!Z~~IaO$`~~IfO!Y~VImV$zQ-kV!Q![If!c!iIf!i!}JS#R#SJS#S#TJS#T#ZIf#Z#oJSVJXT-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#oJS~JmO!h~~JrO!g~_JyX$zQ-kV!Q![If!c!iIf!i!}JS#R#SJS#S#TJS#T#ZIf#Z#hJS#h#iKf#i#oJS_KmT/jW-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#oJS~LTW$zQ-kV!Q![If!c!iIf!i!}JS#R#SJS#S#TJS#T#ULm#U#ZIf#Z#oJS~LtX$zQ-kV!Q![If!c!iIf!i!}JS#R#SJS#S#TJS#T#ZIf#Z#`JS#`#aMa#a#oJS~MfV-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#gJS#g#hM{#h#oJS~NQV-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#XJS#X#YNg#Y#oJS~NnT)h~-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#oJS!a! U^.k!Q-kV!Q!RJS!R!S!!Q!S!T!!h!T!UJS!U!V!#O!V!YJS!Y!Z!#f!Z![JS!c!}JS#R#SJS#S#TJS#T#]JS#]#^!#|#^#oJS!X!!XT.e!Q-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#oJS!X!!oT.g!Q-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#oJS!a!#VT.^!Y-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#oJS!a!#mT.j!Y-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#oJS_!$RV-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#WJS#W#X!$h#X#oJS_!$mV-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#dJS#d#e!%S#e#oJS_!%XU-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#U!%k#U#oJS_!%pV-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#fJS#f#g!&V#g#oJS_!&[U-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#U!&n#U#oJS_!&sV-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#aJS#a#b!'Y#b#oJS_!'aT-zW-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#oJS_!'uV-kV!Q!RJS!R!S!([!S![JS!c!}JS#R#SJS#S#TJS#T#oJS_!(cT._W-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#oJS!P!(wV-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#jJS#j#k!)^#k#oJS!P!)cV-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#YJS#Y#Z!)x#Z#oJS!P!*PT.rx-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#oJS!a!*gZ.qp-kV!Q!UJS!U!V!+Y!V!YJS!Y!Z!+p!Z![JS!c!}JS#R#SJS#S#TJS#T#XJS#X#Y!,W#Y#oJS!a!+aT.l!Y-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#oJS!a!+wT.m!Y-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#oJSg!,]V-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#YJS#Y#Z!,r#Z#oJSg!,yT.n`-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#oJS_!-aT.tW-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#oJS~!-uV-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#fJS#f#g!.[#g#oJS~!.aV-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#iJS#i#jM{#j#oJS!a!.}^.s!Q-kV!Q!RJS!R!S!/y!S!T!0a!T!UJS!U!V!0w!V!YJS!Y!Z!1_!Z![JS!c!}JS#R#SJS#S#TJS#T#bJS#b#c!1u#c#oJS!X!0QT.f!Q-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#oJS!X!0hT.h!Q-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#oJS!X!1OT.i!Q-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#oJS!X!1fT.p!Q-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#oJS_!1|T.oW-kV!Q![JS!c!}JS#R#SJS#S#TJS#T#oJS~!2bO$x~~!2gO$w~",
|
|
85
|
+
tokenizers: [dotTokens, 0, 1, 2, 3, 4, 5],
|
|
86
|
+
topRules: {"CompilationUnit":[0,3]},
|
|
87
|
+
specialized: [{term: 573, get: (value) => spec_dotIdentifier[value] || -1},{term: 579, get: (value) => spec_identifier[value] || -1}],
|
|
88
|
+
tokenPrec: 24154
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
const memberDecl = [{
|
|
92
|
+
label: ".class",
|
|
93
|
+
type: "keyword"
|
|
94
|
+
}, {
|
|
95
|
+
label: ".namespace",
|
|
96
|
+
type: "keyword"
|
|
97
|
+
}, {
|
|
98
|
+
label: ".method",
|
|
99
|
+
type: "keyword"
|
|
100
|
+
}, {
|
|
101
|
+
label: ".field",
|
|
102
|
+
type: "keyword"
|
|
103
|
+
}, {
|
|
104
|
+
label: ".data",
|
|
105
|
+
type: "keyword"
|
|
106
|
+
}, {
|
|
107
|
+
label: ".vtable",
|
|
108
|
+
type: "keyword"
|
|
109
|
+
}, {
|
|
110
|
+
label: ".vtfixup",
|
|
111
|
+
type: "keyword"
|
|
112
|
+
}, {
|
|
113
|
+
label: ".line",
|
|
114
|
+
type: "keyword"
|
|
115
|
+
}, {
|
|
116
|
+
label: ".file",
|
|
117
|
+
type: "keyword"
|
|
118
|
+
}, {
|
|
119
|
+
label: ".assembly",
|
|
120
|
+
type: "keyword"
|
|
121
|
+
}, {
|
|
122
|
+
label: ".mresource",
|
|
123
|
+
type: "keyword"
|
|
124
|
+
}, {
|
|
125
|
+
label: ".module",
|
|
126
|
+
type: "keyword"
|
|
127
|
+
}, {
|
|
128
|
+
label: ".permission",
|
|
129
|
+
type: "keyword"
|
|
130
|
+
}, {
|
|
131
|
+
label: ".permissionset",
|
|
132
|
+
type: "keyword"
|
|
133
|
+
}, {
|
|
134
|
+
label: ".custom",
|
|
135
|
+
type: "keyword"
|
|
136
|
+
}, {
|
|
137
|
+
label: ".subsystem",
|
|
138
|
+
type: "keyword"
|
|
139
|
+
}, {
|
|
140
|
+
label: ".corflags",
|
|
141
|
+
type: "keyword"
|
|
142
|
+
}, {
|
|
143
|
+
label: ".imagebase",
|
|
144
|
+
type: "keyword"
|
|
145
|
+
}, {
|
|
146
|
+
label: ".stackreserve",
|
|
147
|
+
type: "keyword"
|
|
148
|
+
}, {
|
|
149
|
+
label: ".language",
|
|
150
|
+
type: "keyword"
|
|
151
|
+
}, {
|
|
152
|
+
label: ".typedef",
|
|
153
|
+
type: "keyword"
|
|
154
|
+
}, {
|
|
155
|
+
label: "#line",
|
|
156
|
+
type: "keyword"
|
|
157
|
+
}, {
|
|
158
|
+
label: "#define",
|
|
159
|
+
type: "keyword"
|
|
160
|
+
}, {
|
|
161
|
+
label: "#undef",
|
|
162
|
+
type: "keyword"
|
|
163
|
+
}, {
|
|
164
|
+
label: "#ifdef",
|
|
165
|
+
type: "keyword"
|
|
166
|
+
}, {
|
|
167
|
+
label: "#ifndef",
|
|
168
|
+
type: "keyword"
|
|
169
|
+
}, {
|
|
170
|
+
label: "#else",
|
|
171
|
+
type: "keyword"
|
|
172
|
+
}, {
|
|
173
|
+
label: "#endif",
|
|
174
|
+
type: "keyword"
|
|
175
|
+
}, {
|
|
176
|
+
label: "#include",
|
|
177
|
+
type: "keyword"
|
|
178
|
+
}, {
|
|
179
|
+
label: ".typelist",
|
|
180
|
+
type: "keyword"
|
|
181
|
+
}, {
|
|
182
|
+
label: ".mscorlib",
|
|
183
|
+
type: "keyword"
|
|
184
|
+
}];
|
|
185
|
+
const classAttr = [{
|
|
186
|
+
label: "public",
|
|
187
|
+
type: "keyword"
|
|
188
|
+
}, {
|
|
189
|
+
label: "private",
|
|
190
|
+
type: "keyword"
|
|
191
|
+
}, {
|
|
192
|
+
label: "value",
|
|
193
|
+
type: "keyword"
|
|
194
|
+
}, {
|
|
195
|
+
label: "enum",
|
|
196
|
+
type: "keyword"
|
|
197
|
+
}, {
|
|
198
|
+
label: "interface",
|
|
199
|
+
type: "keyword"
|
|
200
|
+
}, {
|
|
201
|
+
label: "sealed",
|
|
202
|
+
type: "keyword"
|
|
203
|
+
}, {
|
|
204
|
+
label: "abstract",
|
|
205
|
+
type: "keyword"
|
|
206
|
+
}, {
|
|
207
|
+
label: "auto",
|
|
208
|
+
type: "keyword"
|
|
209
|
+
}, {
|
|
210
|
+
label: "sequential",
|
|
211
|
+
type: "keyword"
|
|
212
|
+
}, {
|
|
213
|
+
label: "explicit",
|
|
214
|
+
type: "keyword"
|
|
215
|
+
}, {
|
|
216
|
+
label: "extended",
|
|
217
|
+
type: "keyword"
|
|
218
|
+
}, {
|
|
219
|
+
label: "ansi",
|
|
220
|
+
type: "keyword"
|
|
221
|
+
}, {
|
|
222
|
+
label: "unicode",
|
|
223
|
+
type: "keyword"
|
|
224
|
+
}, {
|
|
225
|
+
label: "autochar",
|
|
226
|
+
type: "keyword"
|
|
227
|
+
}, {
|
|
228
|
+
label: "import",
|
|
229
|
+
type: "keyword"
|
|
230
|
+
}, {
|
|
231
|
+
label: "serializable",
|
|
232
|
+
type: "keyword"
|
|
233
|
+
}, {
|
|
234
|
+
label: "windowsruntime",
|
|
235
|
+
type: "keyword"
|
|
236
|
+
}, {
|
|
237
|
+
label: "nested",
|
|
238
|
+
type: "keyword"
|
|
239
|
+
}, {
|
|
240
|
+
label: "beforefieldinit",
|
|
241
|
+
type: "keyword"
|
|
242
|
+
}, {
|
|
243
|
+
label: "specialname",
|
|
244
|
+
type: "keyword"
|
|
245
|
+
}, {
|
|
246
|
+
label: "rtspecialname",
|
|
247
|
+
type: "keyword"
|
|
248
|
+
}, {
|
|
249
|
+
label: "flags",
|
|
250
|
+
type: "keyword"
|
|
251
|
+
}];
|
|
252
|
+
const classNestAttr = [{
|
|
253
|
+
label: "public",
|
|
254
|
+
type: "keyword"
|
|
255
|
+
}, {
|
|
256
|
+
label: "private",
|
|
257
|
+
type: "keyword"
|
|
258
|
+
}, {
|
|
259
|
+
label: "family",
|
|
260
|
+
type: "keyword"
|
|
261
|
+
}, {
|
|
262
|
+
label: "assembly",
|
|
263
|
+
type: "keyword"
|
|
264
|
+
}, {
|
|
265
|
+
label: "famandassem",
|
|
266
|
+
type: "keyword"
|
|
267
|
+
}, {
|
|
268
|
+
label: "famorassem",
|
|
269
|
+
type: "keyword"
|
|
270
|
+
}];
|
|
271
|
+
const classExtendsDecl = [{
|
|
272
|
+
label: "extends",
|
|
273
|
+
type: "keyword"
|
|
274
|
+
}, {
|
|
275
|
+
label: "implements",
|
|
276
|
+
type: "keyword"
|
|
277
|
+
}];
|
|
278
|
+
const classMemberDecl = [{
|
|
279
|
+
label: ".method",
|
|
280
|
+
type: "keyword"
|
|
281
|
+
}, {
|
|
282
|
+
label: ".class",
|
|
283
|
+
type: "keyword"
|
|
284
|
+
}, {
|
|
285
|
+
label: ".event",
|
|
286
|
+
type: "keyword"
|
|
287
|
+
}, {
|
|
288
|
+
label: ".property",
|
|
289
|
+
type: "keyword"
|
|
290
|
+
}, {
|
|
291
|
+
label: ".field",
|
|
292
|
+
type: "keyword"
|
|
293
|
+
}, {
|
|
294
|
+
label: ".data",
|
|
295
|
+
type: "keyword"
|
|
296
|
+
}, {
|
|
297
|
+
label: ".permission",
|
|
298
|
+
type: "keyword"
|
|
299
|
+
}, {
|
|
300
|
+
label: ".permissionset",
|
|
301
|
+
type: "keyword"
|
|
302
|
+
}, {
|
|
303
|
+
label: ".line",
|
|
304
|
+
type: "keyword"
|
|
305
|
+
}, {
|
|
306
|
+
label: ".custom",
|
|
307
|
+
type: "keyword"
|
|
308
|
+
}, {
|
|
309
|
+
label: ".size",
|
|
310
|
+
type: "keyword"
|
|
311
|
+
}, {
|
|
312
|
+
label: ".pack",
|
|
313
|
+
type: "keyword"
|
|
314
|
+
}, {
|
|
315
|
+
label: ".export",
|
|
316
|
+
type: "keyword"
|
|
317
|
+
}, {
|
|
318
|
+
label: ".override",
|
|
319
|
+
type: "keyword"
|
|
320
|
+
}, {
|
|
321
|
+
label: ".language",
|
|
322
|
+
type: "keyword"
|
|
323
|
+
}, {
|
|
324
|
+
label: "#line",
|
|
325
|
+
type: "keyword"
|
|
326
|
+
}, {
|
|
327
|
+
label: "#define",
|
|
328
|
+
type: "keyword"
|
|
329
|
+
}, {
|
|
330
|
+
label: "#undef",
|
|
331
|
+
type: "keyword"
|
|
332
|
+
}, {
|
|
333
|
+
label: "#ifdef",
|
|
334
|
+
type: "keyword"
|
|
335
|
+
}, {
|
|
336
|
+
label: "#ifndef",
|
|
337
|
+
type: "keyword"
|
|
338
|
+
}, {
|
|
339
|
+
label: "#else",
|
|
340
|
+
type: "keyword"
|
|
341
|
+
}, {
|
|
342
|
+
label: "#endif",
|
|
343
|
+
type: "keyword"
|
|
344
|
+
}, {
|
|
345
|
+
label: "#include",
|
|
346
|
+
type: "keyword"
|
|
347
|
+
}, {
|
|
348
|
+
label: ".param",
|
|
349
|
+
type: "keyword"
|
|
350
|
+
}, {
|
|
351
|
+
label: ".interfaceimpl",
|
|
352
|
+
type: "keyword"
|
|
353
|
+
}];
|
|
354
|
+
const fieldAttr = [{
|
|
355
|
+
label: "static",
|
|
356
|
+
type: "keyword"
|
|
357
|
+
}, {
|
|
358
|
+
label: "public",
|
|
359
|
+
type: "keyword"
|
|
360
|
+
}, {
|
|
361
|
+
label: "private",
|
|
362
|
+
type: "keyword"
|
|
363
|
+
}, {
|
|
364
|
+
label: "family",
|
|
365
|
+
type: "keyword"
|
|
366
|
+
}, {
|
|
367
|
+
label: "initonly",
|
|
368
|
+
type: "keyword"
|
|
369
|
+
}, {
|
|
370
|
+
label: "rtspecialname",
|
|
371
|
+
type: "keyword"
|
|
372
|
+
}, {
|
|
373
|
+
label: "specialname",
|
|
374
|
+
type: "keyword"
|
|
375
|
+
}, {
|
|
376
|
+
label: "marshal",
|
|
377
|
+
type: "keyword"
|
|
378
|
+
}, {
|
|
379
|
+
label: "assembly",
|
|
380
|
+
type: "keyword"
|
|
381
|
+
}, {
|
|
382
|
+
label: "famandassem",
|
|
383
|
+
type: "keyword"
|
|
384
|
+
}, {
|
|
385
|
+
label: "famorassem",
|
|
386
|
+
type: "keyword"
|
|
387
|
+
}, {
|
|
388
|
+
label: "privatescope",
|
|
389
|
+
type: "keyword"
|
|
390
|
+
}, {
|
|
391
|
+
label: "literal",
|
|
392
|
+
type: "keyword"
|
|
393
|
+
}, {
|
|
394
|
+
label: "notserialized",
|
|
395
|
+
type: "keyword"
|
|
396
|
+
}, {
|
|
397
|
+
label: "flags",
|
|
398
|
+
type: "keyword"
|
|
399
|
+
}];
|
|
400
|
+
const eventAttr = [{
|
|
401
|
+
label: "rtspecialname",
|
|
402
|
+
type: "keyword"
|
|
403
|
+
}, {
|
|
404
|
+
label: "specialname",
|
|
405
|
+
type: "keyword"
|
|
406
|
+
}];
|
|
407
|
+
const eventMemberDecl = [{
|
|
408
|
+
label: ".addon",
|
|
409
|
+
type: "keyword"
|
|
410
|
+
}, {
|
|
411
|
+
label: ".removeon",
|
|
412
|
+
type: "keyword"
|
|
413
|
+
}, {
|
|
414
|
+
label: ".fire",
|
|
415
|
+
type: "keyword"
|
|
416
|
+
}, {
|
|
417
|
+
label: ".other",
|
|
418
|
+
type: "keyword"
|
|
419
|
+
}, {
|
|
420
|
+
label: ".line",
|
|
421
|
+
type: "keyword"
|
|
422
|
+
}, {
|
|
423
|
+
label: "#line",
|
|
424
|
+
type: "keyword"
|
|
425
|
+
}, {
|
|
426
|
+
label: ".custom",
|
|
427
|
+
type: "keyword"
|
|
428
|
+
}, {
|
|
429
|
+
label: ".language",
|
|
430
|
+
type: "keyword"
|
|
431
|
+
}, {
|
|
432
|
+
label: "#define",
|
|
433
|
+
type: "keyword"
|
|
434
|
+
}, {
|
|
435
|
+
label: "#undef",
|
|
436
|
+
type: "keyword"
|
|
437
|
+
}, {
|
|
438
|
+
label: "#ifdef",
|
|
439
|
+
type: "keyword"
|
|
440
|
+
}, {
|
|
441
|
+
label: "#ifndef",
|
|
442
|
+
type: "keyword"
|
|
443
|
+
}, {
|
|
444
|
+
label: "#else",
|
|
445
|
+
type: "keyword"
|
|
446
|
+
}, {
|
|
447
|
+
label: "#endif",
|
|
448
|
+
type: "keyword"
|
|
449
|
+
}, {
|
|
450
|
+
label: "#include",
|
|
451
|
+
type: "keyword"
|
|
452
|
+
}];
|
|
453
|
+
const propAttr = [{
|
|
454
|
+
label: "rtspecialname",
|
|
455
|
+
type: "keyword"
|
|
456
|
+
}, {
|
|
457
|
+
label: "specialname",
|
|
458
|
+
type: "keyword"
|
|
459
|
+
}];
|
|
460
|
+
const propMemberDecl = [{
|
|
461
|
+
label: ".set",
|
|
462
|
+
type: "keyword"
|
|
463
|
+
}, {
|
|
464
|
+
label: ".get",
|
|
465
|
+
type: "keyword"
|
|
466
|
+
}, {
|
|
467
|
+
label: ".other",
|
|
468
|
+
type: "keyword"
|
|
469
|
+
}, {
|
|
470
|
+
label: ".custom",
|
|
471
|
+
type: "keyword"
|
|
472
|
+
}, {
|
|
473
|
+
label: ".line",
|
|
474
|
+
type: "keyword"
|
|
475
|
+
}, {
|
|
476
|
+
label: "#line",
|
|
477
|
+
type: "keyword"
|
|
478
|
+
}, {
|
|
479
|
+
label: ".language",
|
|
480
|
+
type: "keyword"
|
|
481
|
+
}, {
|
|
482
|
+
label: "#define",
|
|
483
|
+
type: "keyword"
|
|
484
|
+
}, {
|
|
485
|
+
label: "#undef",
|
|
486
|
+
type: "keyword"
|
|
487
|
+
}, {
|
|
488
|
+
label: "#ifdef",
|
|
489
|
+
type: "keyword"
|
|
490
|
+
}, {
|
|
491
|
+
label: "#ifndef",
|
|
492
|
+
type: "keyword"
|
|
493
|
+
}, {
|
|
494
|
+
label: "#else",
|
|
495
|
+
type: "keyword"
|
|
496
|
+
}, {
|
|
497
|
+
label: "#endif",
|
|
498
|
+
type: "keyword"
|
|
499
|
+
}, {
|
|
500
|
+
label: "#include",
|
|
501
|
+
type: "keyword"
|
|
502
|
+
}];
|
|
503
|
+
const methodAttr = [{
|
|
504
|
+
label: "static",
|
|
505
|
+
type: "keyword"
|
|
506
|
+
}, {
|
|
507
|
+
label: "public",
|
|
508
|
+
type: "keyword"
|
|
509
|
+
}, {
|
|
510
|
+
label: "private",
|
|
511
|
+
type: "keyword"
|
|
512
|
+
}, {
|
|
513
|
+
label: "family",
|
|
514
|
+
type: "keyword"
|
|
515
|
+
}, {
|
|
516
|
+
label: "final",
|
|
517
|
+
type: "keyword"
|
|
518
|
+
}, {
|
|
519
|
+
label: "specialname",
|
|
520
|
+
type: "keyword"
|
|
521
|
+
}, {
|
|
522
|
+
label: "virtual",
|
|
523
|
+
type: "keyword"
|
|
524
|
+
}, {
|
|
525
|
+
label: "strict",
|
|
526
|
+
type: "keyword"
|
|
527
|
+
}, {
|
|
528
|
+
label: "abstract",
|
|
529
|
+
type: "keyword"
|
|
530
|
+
}, {
|
|
531
|
+
label: "assembly",
|
|
532
|
+
type: "keyword"
|
|
533
|
+
}, {
|
|
534
|
+
label: "famandassem",
|
|
535
|
+
type: "keyword"
|
|
536
|
+
}, {
|
|
537
|
+
label: "famorassem",
|
|
538
|
+
type: "keyword"
|
|
539
|
+
}, {
|
|
540
|
+
label: "privatescope",
|
|
541
|
+
type: "keyword"
|
|
542
|
+
}, {
|
|
543
|
+
label: "hidebysig",
|
|
544
|
+
type: "keyword"
|
|
545
|
+
}, {
|
|
546
|
+
label: "newslot",
|
|
547
|
+
type: "keyword"
|
|
548
|
+
}, {
|
|
549
|
+
label: "rtspecialname",
|
|
550
|
+
type: "keyword"
|
|
551
|
+
}, {
|
|
552
|
+
label: "unmanagedexp",
|
|
553
|
+
type: "keyword"
|
|
554
|
+
}, {
|
|
555
|
+
label: "reqsecobj",
|
|
556
|
+
type: "keyword"
|
|
557
|
+
}, {
|
|
558
|
+
label: "flags",
|
|
559
|
+
type: "keyword"
|
|
560
|
+
}, {
|
|
561
|
+
label: "pinvokeimpl",
|
|
562
|
+
type: "keyword"
|
|
563
|
+
}];
|
|
564
|
+
const callConv = [{
|
|
565
|
+
label: "instance",
|
|
566
|
+
type: "keyword"
|
|
567
|
+
}, {
|
|
568
|
+
label: "explicit",
|
|
569
|
+
type: "keyword"
|
|
570
|
+
}, {
|
|
571
|
+
label: "default",
|
|
572
|
+
type: "keyword"
|
|
573
|
+
}, {
|
|
574
|
+
label: "vararg",
|
|
575
|
+
type: "keyword"
|
|
576
|
+
}, {
|
|
577
|
+
label: "unmanaged",
|
|
578
|
+
type: "keyword"
|
|
579
|
+
}, {
|
|
580
|
+
label: "cdecl",
|
|
581
|
+
type: "keyword"
|
|
582
|
+
}, {
|
|
583
|
+
label: "stdcall",
|
|
584
|
+
type: "keyword"
|
|
585
|
+
}, {
|
|
586
|
+
label: "thiscall",
|
|
587
|
+
type: "keyword"
|
|
588
|
+
}, {
|
|
589
|
+
label: "fastcall",
|
|
590
|
+
type: "keyword"
|
|
591
|
+
}, {
|
|
592
|
+
label: "callconv",
|
|
593
|
+
type: "keyword"
|
|
594
|
+
}];
|
|
595
|
+
const paramAttr = [{
|
|
596
|
+
label: "in",
|
|
597
|
+
type: "keyword"
|
|
598
|
+
}, {
|
|
599
|
+
label: "out",
|
|
600
|
+
type: "keyword"
|
|
601
|
+
}, {
|
|
602
|
+
label: "opt",
|
|
603
|
+
type: "keyword"
|
|
604
|
+
}];
|
|
605
|
+
const methodMemberDecl = [{
|
|
606
|
+
label: ".emitbyte",
|
|
607
|
+
type: "keyword"
|
|
608
|
+
}, {
|
|
609
|
+
label: ".try",
|
|
610
|
+
type: "keyword"
|
|
611
|
+
}, {
|
|
612
|
+
label: ".maxstack",
|
|
613
|
+
type: "keyword"
|
|
614
|
+
}, {
|
|
615
|
+
label: ".locals",
|
|
616
|
+
type: "keyword"
|
|
617
|
+
}, {
|
|
618
|
+
label: ".entrypoint",
|
|
619
|
+
type: "keyword"
|
|
620
|
+
}, {
|
|
621
|
+
label: ".zeroinit",
|
|
622
|
+
type: "keyword"
|
|
623
|
+
}, {
|
|
624
|
+
label: ".data",
|
|
625
|
+
type: "keyword"
|
|
626
|
+
}, {
|
|
627
|
+
label: ".permission",
|
|
628
|
+
type: "keyword"
|
|
629
|
+
}, {
|
|
630
|
+
label: ".permissionset",
|
|
631
|
+
type: "keyword"
|
|
632
|
+
}, {
|
|
633
|
+
label: ".line",
|
|
634
|
+
type: "keyword"
|
|
635
|
+
}, {
|
|
636
|
+
label: "#line",
|
|
637
|
+
type: "keyword"
|
|
638
|
+
}, {
|
|
639
|
+
label: ".language",
|
|
640
|
+
type: "keyword"
|
|
641
|
+
}, {
|
|
642
|
+
label: ".custom",
|
|
643
|
+
type: "keyword"
|
|
644
|
+
}, {
|
|
645
|
+
label: "#define",
|
|
646
|
+
type: "keyword"
|
|
647
|
+
}, {
|
|
648
|
+
label: "#undef",
|
|
649
|
+
type: "keyword"
|
|
650
|
+
}, {
|
|
651
|
+
label: "#ifdef",
|
|
652
|
+
type: "keyword"
|
|
653
|
+
}, {
|
|
654
|
+
label: "#ifndef",
|
|
655
|
+
type: "keyword"
|
|
656
|
+
}, {
|
|
657
|
+
label: "#else",
|
|
658
|
+
type: "keyword"
|
|
659
|
+
}, {
|
|
660
|
+
label: "#endif",
|
|
661
|
+
type: "keyword"
|
|
662
|
+
}, {
|
|
663
|
+
label: "#include",
|
|
664
|
+
type: "keyword"
|
|
665
|
+
}, {
|
|
666
|
+
label: ".export",
|
|
667
|
+
type: "keyword"
|
|
668
|
+
}, {
|
|
669
|
+
label: ".vtentry",
|
|
670
|
+
type: "keyword"
|
|
671
|
+
}, {
|
|
672
|
+
label: ".override",
|
|
673
|
+
type: "keyword"
|
|
674
|
+
}, {
|
|
675
|
+
label: ".param",
|
|
676
|
+
type: "keyword"
|
|
677
|
+
}];
|
|
678
|
+
const assemblyMemberDecl = [{
|
|
679
|
+
label: ".hash",
|
|
680
|
+
type: "keyword"
|
|
681
|
+
}, {
|
|
682
|
+
label: ".permission",
|
|
683
|
+
type: "keyword"
|
|
684
|
+
}, {
|
|
685
|
+
label: ".permissionset",
|
|
686
|
+
type: "keyword"
|
|
687
|
+
}, {
|
|
688
|
+
label: ".publickey",
|
|
689
|
+
type: "keyword"
|
|
690
|
+
}, {
|
|
691
|
+
label: ".ver",
|
|
692
|
+
type: "keyword"
|
|
693
|
+
}, {
|
|
694
|
+
label: ".locale",
|
|
695
|
+
type: "keyword"
|
|
696
|
+
}, {
|
|
697
|
+
label: ".custom",
|
|
698
|
+
type: "keyword"
|
|
699
|
+
}, {
|
|
700
|
+
label: "#define",
|
|
701
|
+
type: "keyword"
|
|
702
|
+
}, {
|
|
703
|
+
label: "#undef",
|
|
704
|
+
type: "keyword"
|
|
705
|
+
}, {
|
|
706
|
+
label: "#ifdef",
|
|
707
|
+
type: "keyword"
|
|
708
|
+
}, {
|
|
709
|
+
label: "#ifndef",
|
|
710
|
+
type: "keyword"
|
|
711
|
+
}, {
|
|
712
|
+
label: "#else",
|
|
713
|
+
type: "keyword"
|
|
714
|
+
}, {
|
|
715
|
+
label: "#endif",
|
|
716
|
+
type: "keyword"
|
|
717
|
+
}, {
|
|
718
|
+
label: "#include",
|
|
719
|
+
type: "keyword"
|
|
720
|
+
}];
|
|
721
|
+
const assemblyRefMemberDecl = [{
|
|
722
|
+
label: ".hash",
|
|
723
|
+
type: "keyword"
|
|
724
|
+
}, {
|
|
725
|
+
label: ".publickey",
|
|
726
|
+
type: "keyword"
|
|
727
|
+
}, {
|
|
728
|
+
label: ".ver",
|
|
729
|
+
type: "keyword"
|
|
730
|
+
}, {
|
|
731
|
+
label: ".locale",
|
|
732
|
+
type: "keyword"
|
|
733
|
+
}, {
|
|
734
|
+
label: ".custom",
|
|
735
|
+
type: "keyword"
|
|
736
|
+
}, {
|
|
737
|
+
label: "#define",
|
|
738
|
+
type: "keyword"
|
|
739
|
+
}, {
|
|
740
|
+
label: "#undef",
|
|
741
|
+
type: "keyword"
|
|
742
|
+
}, {
|
|
743
|
+
label: "#ifdef",
|
|
744
|
+
type: "keyword"
|
|
745
|
+
}, {
|
|
746
|
+
label: "#ifndef",
|
|
747
|
+
type: "keyword"
|
|
748
|
+
}, {
|
|
749
|
+
label: "#else",
|
|
750
|
+
type: "keyword"
|
|
751
|
+
}, {
|
|
752
|
+
label: "#endif",
|
|
753
|
+
type: "keyword"
|
|
754
|
+
}, {
|
|
755
|
+
label: "#include",
|
|
756
|
+
type: "keyword"
|
|
757
|
+
}, {
|
|
758
|
+
label: ".publickeytoken",
|
|
759
|
+
type: "keyword"
|
|
760
|
+
}];
|
|
761
|
+
const exptypeMemberDecl = [{
|
|
762
|
+
label: ".file",
|
|
763
|
+
type: "keyword"
|
|
764
|
+
}, {
|
|
765
|
+
label: ".class",
|
|
766
|
+
type: "keyword"
|
|
767
|
+
}, {
|
|
768
|
+
label: ".assembly",
|
|
769
|
+
type: "keyword"
|
|
770
|
+
}, {
|
|
771
|
+
label: ".mdtoken",
|
|
772
|
+
type: "keyword"
|
|
773
|
+
}, {
|
|
774
|
+
label: ".custom",
|
|
775
|
+
type: "keyword"
|
|
776
|
+
}, {
|
|
777
|
+
label: "#define",
|
|
778
|
+
type: "keyword"
|
|
779
|
+
}, {
|
|
780
|
+
label: "#undef",
|
|
781
|
+
type: "keyword"
|
|
782
|
+
}, {
|
|
783
|
+
label: "#ifdef",
|
|
784
|
+
type: "keyword"
|
|
785
|
+
}, {
|
|
786
|
+
label: "#ifndef",
|
|
787
|
+
type: "keyword"
|
|
788
|
+
}, {
|
|
789
|
+
label: "#else",
|
|
790
|
+
type: "keyword"
|
|
791
|
+
}, {
|
|
792
|
+
label: "#endif",
|
|
793
|
+
type: "keyword"
|
|
794
|
+
}, {
|
|
795
|
+
label: "#include",
|
|
796
|
+
type: "keyword"
|
|
797
|
+
}];
|
|
798
|
+
const manifestResMemberDecl = [{
|
|
799
|
+
label: ".file",
|
|
800
|
+
type: "keyword"
|
|
801
|
+
}, {
|
|
802
|
+
label: ".assembly",
|
|
803
|
+
type: "keyword"
|
|
804
|
+
}, {
|
|
805
|
+
label: ".custom",
|
|
806
|
+
type: "keyword"
|
|
807
|
+
}, {
|
|
808
|
+
label: "#define",
|
|
809
|
+
type: "keyword"
|
|
810
|
+
}, {
|
|
811
|
+
label: "#undef",
|
|
812
|
+
type: "keyword"
|
|
813
|
+
}, {
|
|
814
|
+
label: "#ifdef",
|
|
815
|
+
type: "keyword"
|
|
816
|
+
}, {
|
|
817
|
+
label: "#ifndef",
|
|
818
|
+
type: "keyword"
|
|
819
|
+
}, {
|
|
820
|
+
label: "#else",
|
|
821
|
+
type: "keyword"
|
|
822
|
+
}, {
|
|
823
|
+
label: "#endif",
|
|
824
|
+
type: "keyword"
|
|
825
|
+
}, {
|
|
826
|
+
label: "#include",
|
|
827
|
+
type: "keyword"
|
|
828
|
+
}];
|
|
829
|
+
|
|
830
|
+
const opcodes = {
|
|
831
|
+
add: {
|
|
832
|
+
desc: "Add two values, returning a new value (0x58)",
|
|
833
|
+
ovf: {
|
|
834
|
+
desc: "Add signed integer values with overflow check (0xD6)",
|
|
835
|
+
un: {
|
|
836
|
+
desc: "Add unsigned integer values with overflow check (0xD7)"
|
|
837
|
+
}
|
|
838
|
+
}
|
|
839
|
+
},
|
|
840
|
+
and: {
|
|
841
|
+
desc: "Bitwise AND of two integral values, returns an integral value (0x5F)"
|
|
842
|
+
},
|
|
843
|
+
arglist: {
|
|
844
|
+
desc: "Return argument list handle for the current method (0xFE 0x00)"
|
|
845
|
+
},
|
|
846
|
+
beq: {
|
|
847
|
+
desc: "Branch to target if equal (0x3B <int32>)",
|
|
848
|
+
s: {
|
|
849
|
+
desc: "Branch to target if equal, short form (0x2E <int8>)"
|
|
850
|
+
}
|
|
851
|
+
},
|
|
852
|
+
bge: {
|
|
853
|
+
desc: "Branch to target if greater than or equal to (0x3C <int32>)",
|
|
854
|
+
s: {
|
|
855
|
+
desc: "Branch to target if greater than or equal to, short form (0x2F <int8>)"
|
|
856
|
+
},
|
|
857
|
+
un: {
|
|
858
|
+
desc: "Branch to target if greater than or equal to (unsigned or unordered) (0x41 <int32>)",
|
|
859
|
+
s: {
|
|
860
|
+
desc: "Branch to target if greater than or equal to (unsigned or unordered), short form (0x34 <int8>)"
|
|
861
|
+
}
|
|
862
|
+
}
|
|
863
|
+
},
|
|
864
|
+
bgt: {
|
|
865
|
+
desc: "Branch to target if greater than (0x3D <int32>)",
|
|
866
|
+
s: {
|
|
867
|
+
desc: "Branch to target if greater than, short form (0x30 <int8>)"
|
|
868
|
+
},
|
|
869
|
+
un: {
|
|
870
|
+
desc: "Branch to target if greater than (unsigned or unordered) (0x42 <int32>)",
|
|
871
|
+
s: {
|
|
872
|
+
desc: "Branch to target if greater than (unsigned or unordered), short form (0x35 <int8>)"
|
|
873
|
+
}
|
|
874
|
+
}
|
|
875
|
+
},
|
|
876
|
+
ble: {
|
|
877
|
+
desc: "Branch to target if less than or equal to (0x3E <int32>)",
|
|
878
|
+
s: {
|
|
879
|
+
desc: "Branch to target if less than or equal to, short form (0x31 <int8>)"
|
|
880
|
+
},
|
|
881
|
+
un: {
|
|
882
|
+
desc: "Branch to target if less than or equal to (unsigned or unordered) (0x43 <int32>)",
|
|
883
|
+
s: {
|
|
884
|
+
desc: "Branch to target if less than or equal to (unsigned or unordered), short form (0x36 <int8>)"
|
|
885
|
+
}
|
|
886
|
+
}
|
|
887
|
+
},
|
|
888
|
+
blt: {
|
|
889
|
+
desc: "Branch to target if less than (0x3F <int32>)",
|
|
890
|
+
s: {
|
|
891
|
+
desc: "Branch to target if less than, short form (0x32 <int8>)"
|
|
892
|
+
},
|
|
893
|
+
un: {
|
|
894
|
+
desc: "Branch to target if less than (unsigned or unordered) (0x44 <int32>)",
|
|
895
|
+
s: {
|
|
896
|
+
desc: "Branch to target if less than (unsigned or unordered), short form (0x37 <int8>)"
|
|
897
|
+
}
|
|
898
|
+
}
|
|
899
|
+
},
|
|
900
|
+
bne: {
|
|
901
|
+
un: {
|
|
902
|
+
desc: "Branch to target if unequal or unordered (0x40 <int32>)",
|
|
903
|
+
s: {
|
|
904
|
+
desc: "Branch to target if unequal or unordered, short form (0x33 <int8>)"
|
|
905
|
+
}
|
|
906
|
+
}
|
|
907
|
+
},
|
|
908
|
+
box: {
|
|
909
|
+
desc: "Convert a boxable value to its boxed form (0x8B <T>)"
|
|
910
|
+
},
|
|
911
|
+
br: {
|
|
912
|
+
desc: "Branch to target (0x38 <int32>)",
|
|
913
|
+
s: {
|
|
914
|
+
desc: "Branch to target, short form (0x2B <int8>)"
|
|
915
|
+
}
|
|
916
|
+
},
|
|
917
|
+
break: {
|
|
918
|
+
desc: "Inform a debugger that a breakpoint has been reached (0x01)"
|
|
919
|
+
},
|
|
920
|
+
brfalse: {
|
|
921
|
+
desc: "Branch to target if value is zero (false) (0x39 <int32>)",
|
|
922
|
+
s: {
|
|
923
|
+
desc: "Branch to target if value is zero (false), short form (0x2C <int8>)"
|
|
924
|
+
}
|
|
925
|
+
},
|
|
926
|
+
brinst: {
|
|
927
|
+
desc: "Branch to target if value is a non-null object reference (alias for brtrue) (0x3A <int32>)",
|
|
928
|
+
s: {
|
|
929
|
+
desc: "Branch to target if value is a non-null object reference, short form (alias for brtrue.s) (0x2D <int8>)"
|
|
930
|
+
}
|
|
931
|
+
},
|
|
932
|
+
brnull: {
|
|
933
|
+
desc: "Branch to target if value is null (alias for brfalse) (0x39 <int32>)",
|
|
934
|
+
s: {
|
|
935
|
+
desc: "Branch to target if value is null (alias for brfalse.s), short form (0x2C <int8>)"
|
|
936
|
+
}
|
|
937
|
+
},
|
|
938
|
+
brtrue: {
|
|
939
|
+
desc: "Branch to target if value is non-zero (true) (0x3A <int32>)",
|
|
940
|
+
s: {
|
|
941
|
+
desc: "Branch to target if value is non-zero (true), short form (0x2D <int8>)"
|
|
942
|
+
}
|
|
943
|
+
},
|
|
944
|
+
brzero: {
|
|
945
|
+
desc: "Branch to target if value is zero (alias for brfalse) (0x39 <int32>)",
|
|
946
|
+
s: {
|
|
947
|
+
desc: "Branch to target if value is zero (alias for brfalse.s), short form (0x2C <int8>)"
|
|
948
|
+
}
|
|
949
|
+
},
|
|
950
|
+
call: {
|
|
951
|
+
desc: "Call method indicated on the stack with arguments (0x28 <T>)"
|
|
952
|
+
},
|
|
953
|
+
callvirt: {
|
|
954
|
+
desc: "Call a late-bound method on an object (0x6F <T>)"
|
|
955
|
+
},
|
|
956
|
+
castclass: {
|
|
957
|
+
desc: "Cast obj to class (0x74 <T>)"
|
|
958
|
+
},
|
|
959
|
+
ceq: {
|
|
960
|
+
desc: "Push 1 (of type int32) if value1 equals value2, else push 0 (0xFE 0x01)"
|
|
961
|
+
},
|
|
962
|
+
cgt: {
|
|
963
|
+
desc: "Push 1 (of type int32) if value1 > value2, else push 0 (0xFE 0x02)",
|
|
964
|
+
un: {
|
|
965
|
+
desc: "Push 1 (of type int32) if value1 > value2, unsigned or unordered, else push 0 (0xFE 0x03)"
|
|
966
|
+
}
|
|
967
|
+
},
|
|
968
|
+
ckfinite: {
|
|
969
|
+
desc: "Throw ArithmeticException if value is not a finite number (0xC3)"
|
|
970
|
+
},
|
|
971
|
+
clt: {
|
|
972
|
+
desc: "Push 1 (of type int32) if value1 < value2, else push 0 (0xFE 0x04)",
|
|
973
|
+
un: {
|
|
974
|
+
desc: "Push 1 (of type int32) if value1 < value2, unsigned or unordered, else push 0 (0xFE 0x05)"
|
|
975
|
+
}
|
|
976
|
+
},
|
|
977
|
+
constrained: {
|
|
978
|
+
desc: "Call a virtual method on a type constrained to be type T (0xFE 0x16 <T>)"
|
|
979
|
+
},
|
|
980
|
+
conv: {
|
|
981
|
+
i: {
|
|
982
|
+
desc: "Convert to native int, pushing native int on stack (0xD3)"
|
|
983
|
+
},
|
|
984
|
+
i1: {
|
|
985
|
+
desc: "Convert to int8, pushing int32 on stack (0x67)"
|
|
986
|
+
},
|
|
987
|
+
i2: {
|
|
988
|
+
desc: "Convert to int16, pushing int32 on stack (0x68)"
|
|
989
|
+
},
|
|
990
|
+
i4: {
|
|
991
|
+
desc: "Convert to int32, pushing int32 on stack (0x69)"
|
|
992
|
+
},
|
|
993
|
+
i8: {
|
|
994
|
+
desc: "Convert to int64, pushing int64 on stack (0x6A)"
|
|
995
|
+
},
|
|
996
|
+
ovf: {
|
|
997
|
+
i: {
|
|
998
|
+
desc: "Convert to a native int (on the stack as native int) and throw an exception on overflow (0xD4)",
|
|
999
|
+
un: {
|
|
1000
|
+
desc: "Convert unsigned to a native int (on the stack as native int) and throw an exception on overflow (0x8A)"
|
|
1001
|
+
}
|
|
1002
|
+
},
|
|
1003
|
+
i1: {
|
|
1004
|
+
desc: "Convert to an int8 (on the stack as int32) and throw an exception on overflow (0xB3)",
|
|
1005
|
+
un: {
|
|
1006
|
+
desc: "Convert unsigned to an int8 (on the stack as int32) and throw an exception on overflow (0x82)"
|
|
1007
|
+
}
|
|
1008
|
+
},
|
|
1009
|
+
i2: {
|
|
1010
|
+
desc: "Convert to an int16 (on the stack as int32) and throw an exception on overflow (0xB5)",
|
|
1011
|
+
un: {
|
|
1012
|
+
desc: "Convert unsigned to an int16 (on the stack as int32) and throw an exception on overflow (0x83)"
|
|
1013
|
+
}
|
|
1014
|
+
},
|
|
1015
|
+
i4: {
|
|
1016
|
+
desc: "Convert to an int32 (on the stack as int32) and throw an exception on overflow (0xB7)",
|
|
1017
|
+
un: {
|
|
1018
|
+
desc: "Convert unsigned to an int32 (on the stack as int32) and throw an exception on overflow (0x84)"
|
|
1019
|
+
}
|
|
1020
|
+
},
|
|
1021
|
+
i8: {
|
|
1022
|
+
desc: "Convert to an int64 (on the stack as int64) and throw an exception on overflow (0xB9)",
|
|
1023
|
+
un: {
|
|
1024
|
+
desc: "Convert unsigned to an int64 (on the stack as int64) and throw an exception on overflow (0x85)"
|
|
1025
|
+
}
|
|
1026
|
+
},
|
|
1027
|
+
u: {
|
|
1028
|
+
desc: "Convert to a native unsigned int (on the stack as native int) and throw an exception on overflow (0xD5)",
|
|
1029
|
+
un: {
|
|
1030
|
+
desc: "Convert unsigned to a native unsigned int (on the stack as native int) and throw an exception on overflow (0x8B)"
|
|
1031
|
+
}
|
|
1032
|
+
},
|
|
1033
|
+
u1: {
|
|
1034
|
+
desc: "Convert to an unsigned int8 (on the stack as int32) and throw an exception on overflow (0xB4)",
|
|
1035
|
+
un: {
|
|
1036
|
+
desc: "Convert unsigned to an unsigned int8 (on the stack as int32) and throw an exception on overflow (0x86)"
|
|
1037
|
+
}
|
|
1038
|
+
},
|
|
1039
|
+
u2: {
|
|
1040
|
+
desc: "Convert to an unsigned int16 (on the stack as int32) and throw an exception on overflow (0xB6)",
|
|
1041
|
+
un: {
|
|
1042
|
+
desc: "Convert unsigned to an unsigned int16 (on the stack as int32) and throw an exception on overflow (0x87)"
|
|
1043
|
+
}
|
|
1044
|
+
},
|
|
1045
|
+
u4: {
|
|
1046
|
+
desc: "Convert to an unsigned int32 (on the stack as int32) and throw an exception on overflow (0xB8)",
|
|
1047
|
+
un: {
|
|
1048
|
+
desc: "Convert unsigned to an unsigned int32 (on the stack as int32) and throw an exception on overflow (0x88)"
|
|
1049
|
+
}
|
|
1050
|
+
},
|
|
1051
|
+
u8: {
|
|
1052
|
+
desc: "Convert to an unsigned int64 (on the stack as int64) and throw an exception on overflow (0xBA)",
|
|
1053
|
+
un: {
|
|
1054
|
+
desc: "Convert unsigned to an unsigned int64 (on the stack as int64) and throw an exception on overflow (0x89)"
|
|
1055
|
+
}
|
|
1056
|
+
}
|
|
1057
|
+
},
|
|
1058
|
+
r: {
|
|
1059
|
+
un: {
|
|
1060
|
+
desc: "Convert unsigned integer to floating-point, pushing F on stack (0x76)"
|
|
1061
|
+
}
|
|
1062
|
+
},
|
|
1063
|
+
r4: {
|
|
1064
|
+
desc: "Convert to float32, pushing F on stack (0x6B)"
|
|
1065
|
+
},
|
|
1066
|
+
r8: {
|
|
1067
|
+
desc: "Convert to float64, pushing F on stack (0x6C)"
|
|
1068
|
+
},
|
|
1069
|
+
u: {
|
|
1070
|
+
desc: "Convert to native unsigned int, pushing native int on stack (0xE0)"
|
|
1071
|
+
},
|
|
1072
|
+
u1: {
|
|
1073
|
+
desc: "Convert to unsigned int8, pushing int32 on stack (0xD2)"
|
|
1074
|
+
},
|
|
1075
|
+
u2: {
|
|
1076
|
+
desc: "Convert to unsigned int16, pushing int32 on stack (0xD1)"
|
|
1077
|
+
},
|
|
1078
|
+
u4: {
|
|
1079
|
+
desc: "Convert to unsigned int32, pushing int32 on stack (0x6D)"
|
|
1080
|
+
},
|
|
1081
|
+
u8: {
|
|
1082
|
+
desc: "Convert to unsigned int64, pushing int64 on stack (0x6E)"
|
|
1083
|
+
}
|
|
1084
|
+
},
|
|
1085
|
+
cpblk: {
|
|
1086
|
+
desc: "Copy data from memory to memory (0xFE 0x17)"
|
|
1087
|
+
},
|
|
1088
|
+
cpobj: {
|
|
1089
|
+
desc: "Copy a value type from src to dest (0x70 <T>)"
|
|
1090
|
+
},
|
|
1091
|
+
div: {
|
|
1092
|
+
desc: "Divide two values to return a quotient or floating-point result (0x5B)",
|
|
1093
|
+
un: {
|
|
1094
|
+
desc: "Divide two values, unsigned, returning a quotient (0x5C)"
|
|
1095
|
+
}
|
|
1096
|
+
},
|
|
1097
|
+
dup: {
|
|
1098
|
+
desc: "Duplicate the value on the top of the stack (0x25)"
|
|
1099
|
+
},
|
|
1100
|
+
endfault: {
|
|
1101
|
+
desc: "End fault clause of an exception block (alias for endfilter) (0xFE 0x11)"
|
|
1102
|
+
},
|
|
1103
|
+
endfilter: {
|
|
1104
|
+
desc: "End an exception handling filter clause (0xFE 0x11)"
|
|
1105
|
+
},
|
|
1106
|
+
endfinally: {
|
|
1107
|
+
desc: "End finally clause of an exception block (0xDC)"
|
|
1108
|
+
},
|
|
1109
|
+
initblk: {
|
|
1110
|
+
desc: "Set all bytes in a block of memory to a given byte value (0xFE 0x18)"
|
|
1111
|
+
},
|
|
1112
|
+
initobj: {
|
|
1113
|
+
desc: "Initialize the value at address dest (0xFE 0x15 <T>)"
|
|
1114
|
+
},
|
|
1115
|
+
isinst: {
|
|
1116
|
+
desc: "Test if obj is an instance of class, returning null or an instance of that class or interface (0x75 <T>)"
|
|
1117
|
+
},
|
|
1118
|
+
jmp: {
|
|
1119
|
+
desc: "Exit current method and jump to the specified method (0x27 <T>)"
|
|
1120
|
+
},
|
|
1121
|
+
ldarg: {
|
|
1122
|
+
desc: "Load argument numbered num onto the stack (0xFE 0x09 <uint16>)",
|
|
1123
|
+
"0": {
|
|
1124
|
+
desc: "Load argument 0 onto the stack (0x02)"
|
|
1125
|
+
},
|
|
1126
|
+
"1": {
|
|
1127
|
+
desc: "Load argument 1 onto the stack (0x03)"
|
|
1128
|
+
},
|
|
1129
|
+
"2": {
|
|
1130
|
+
desc: "Load argument 2 onto the stack (0x4)"
|
|
1131
|
+
},
|
|
1132
|
+
"3": {
|
|
1133
|
+
desc: "Load argument 3 onto the stack (0x5)"
|
|
1134
|
+
},
|
|
1135
|
+
s: {
|
|
1136
|
+
desc: "Load argument numbered num onto the stack, short form (0x0E <uint8>)"
|
|
1137
|
+
}
|
|
1138
|
+
},
|
|
1139
|
+
ldarga: {
|
|
1140
|
+
desc: "Fetch the address of argument argNum (0xFE 0x0A <uint16>)",
|
|
1141
|
+
s: {
|
|
1142
|
+
desc: "Fetch the address of argument argNum, short form (0x0F <uint8>)"
|
|
1143
|
+
}
|
|
1144
|
+
},
|
|
1145
|
+
ldc: {
|
|
1146
|
+
i4: {
|
|
1147
|
+
desc: "Push num of type int32 onto the stack as int32 (0x20 <int32>)",
|
|
1148
|
+
"0": {
|
|
1149
|
+
desc: "Push 0 onto the stack as int32 (0x16)"
|
|
1150
|
+
},
|
|
1151
|
+
"1": {
|
|
1152
|
+
desc: "Push 1 onto the stack as int32 (0x17)"
|
|
1153
|
+
},
|
|
1154
|
+
"2": {
|
|
1155
|
+
desc: "Push 2 onto the stack as int32 (0x18)"
|
|
1156
|
+
},
|
|
1157
|
+
"3": {
|
|
1158
|
+
desc: "Push 3 onto the stack as int32 (0x19)"
|
|
1159
|
+
},
|
|
1160
|
+
"4": {
|
|
1161
|
+
desc: "Push 4 onto the stack as int32 (0x1A)"
|
|
1162
|
+
},
|
|
1163
|
+
"5": {
|
|
1164
|
+
desc: "Push 5 onto the stack as int32 (0x1B)"
|
|
1165
|
+
},
|
|
1166
|
+
"6": {
|
|
1167
|
+
desc: "Push 6 onto the stack as int32 (0x1C)"
|
|
1168
|
+
},
|
|
1169
|
+
"7": {
|
|
1170
|
+
desc: "Push 7 onto the stack as int32 (0x1D)"
|
|
1171
|
+
},
|
|
1172
|
+
"8": {
|
|
1173
|
+
desc: "Push 8 onto the stack as int32 (0x1E)"
|
|
1174
|
+
},
|
|
1175
|
+
m1: {
|
|
1176
|
+
desc: "Push -1 onto the stack as int32 (0x15)"
|
|
1177
|
+
},
|
|
1178
|
+
M1: {
|
|
1179
|
+
desc: "Push -1 of type int32 onto the stack as int32 (alias for ldc.i4.m1) (0x15)"
|
|
1180
|
+
},
|
|
1181
|
+
s: {
|
|
1182
|
+
desc: "Push num onto the stack as int32, short form (0x1F <int8>)"
|
|
1183
|
+
}
|
|
1184
|
+
},
|
|
1185
|
+
i8: {
|
|
1186
|
+
desc: "Push num of type int64 onto the stack as int64 (0x21 <int64>)"
|
|
1187
|
+
},
|
|
1188
|
+
r4: {
|
|
1189
|
+
desc: "Push num of type float32 onto the stack as F (0x22 <float32>)"
|
|
1190
|
+
},
|
|
1191
|
+
r8: {
|
|
1192
|
+
desc: "Push num of type float64 onto the stack as F (0x23 <float64>)"
|
|
1193
|
+
}
|
|
1194
|
+
},
|
|
1195
|
+
ldelem: {
|
|
1196
|
+
desc: "Load the element at index onto the top of the stack (0xA3 <T>)",
|
|
1197
|
+
i: {
|
|
1198
|
+
desc: "Load the element with type native int at index onto the top of the stack as a native int (0x97)"
|
|
1199
|
+
},
|
|
1200
|
+
i1: {
|
|
1201
|
+
desc: "Load the element with type int8 at index onto the top of the stack as an int32 (0x90)"
|
|
1202
|
+
},
|
|
1203
|
+
i2: {
|
|
1204
|
+
desc: "Load the element with type int16 at index onto the top of the stack as an int32 (0x92)"
|
|
1205
|
+
},
|
|
1206
|
+
i4: {
|
|
1207
|
+
desc: "Load the element with type int32 at index onto the top of the stack as an int32 (0x94)"
|
|
1208
|
+
},
|
|
1209
|
+
i8: {
|
|
1210
|
+
desc: "Load the element with type int64 at index onto the top of the stack as an int64 (0x96)"
|
|
1211
|
+
},
|
|
1212
|
+
r4: {
|
|
1213
|
+
desc: "Load the element with type float32 at index onto the top of the stack as an F (0x98)"
|
|
1214
|
+
},
|
|
1215
|
+
r8: {
|
|
1216
|
+
desc: "Load the element with type float64 at index onto the top of the stack as an F (0x99)"
|
|
1217
|
+
},
|
|
1218
|
+
ref: {
|
|
1219
|
+
desc: "Load the element at index onto the top of the stack as an O. The type of the O is the same as the element type of the array pushed on the CIL stack (0x9A)"
|
|
1220
|
+
},
|
|
1221
|
+
u1: {
|
|
1222
|
+
desc: "Load the element with type unsigned int8 at index onto the top of the stack as an int32 (0x91)"
|
|
1223
|
+
},
|
|
1224
|
+
u2: {
|
|
1225
|
+
desc: "Load the element with type unsigned int16 at index onto the top of the stack as an int32 (0x93)"
|
|
1226
|
+
},
|
|
1227
|
+
u4: {
|
|
1228
|
+
desc: "Load the element with type unsigned int32 at index onto the top of the stack as an int32 (0x95)"
|
|
1229
|
+
},
|
|
1230
|
+
u8: {
|
|
1231
|
+
desc: "Load the element with type unsigned int64 at index onto the top of the stack as an int64 (alias for ldelem.i8) (0x96)"
|
|
1232
|
+
}
|
|
1233
|
+
},
|
|
1234
|
+
ldelema: {
|
|
1235
|
+
desc: "Load the address of element at index onto the top of the stack (0x8F <T>)"
|
|
1236
|
+
},
|
|
1237
|
+
ldfld: {
|
|
1238
|
+
desc: "Push the value of field of object (or value type) obj, onto the stack (0x7B)"
|
|
1239
|
+
},
|
|
1240
|
+
ldflda: {
|
|
1241
|
+
desc: "Push the address of field of object obj on the stack (0x7C <T>)"
|
|
1242
|
+
},
|
|
1243
|
+
ldftn: {
|
|
1244
|
+
desc: "Push a pointer to a method referenced by method, on the stack (0xFE 0x06 <T>)"
|
|
1245
|
+
},
|
|
1246
|
+
ldind: {
|
|
1247
|
+
i: {
|
|
1248
|
+
desc: "Indirect load value of type native int as native int on the stack (0x4D)"
|
|
1249
|
+
},
|
|
1250
|
+
i1: {
|
|
1251
|
+
desc: "Indirect load value of type int8 as int32 on the stack (0x46)"
|
|
1252
|
+
},
|
|
1253
|
+
i2: {
|
|
1254
|
+
desc: "Indirect load value of type int16 as int32 on the stack (0x48)"
|
|
1255
|
+
},
|
|
1256
|
+
i4: {
|
|
1257
|
+
desc: "Indirect load value of type int32 as int32 on the stack (0x4A)"
|
|
1258
|
+
},
|
|
1259
|
+
i8: {
|
|
1260
|
+
desc: "Indirect load value of type int64 as int64 on the stack (0x4C)"
|
|
1261
|
+
},
|
|
1262
|
+
r4: {
|
|
1263
|
+
desc: "Indirect load value of type float32 as F on the stack (0x4E)"
|
|
1264
|
+
},
|
|
1265
|
+
r8: {
|
|
1266
|
+
desc: "Indirect load value of type float64 as F on the stack (0x4F)"
|
|
1267
|
+
},
|
|
1268
|
+
ref: {
|
|
1269
|
+
desc: "Indirect load value of type object ref as O on the stack (0x50)"
|
|
1270
|
+
},
|
|
1271
|
+
u1: {
|
|
1272
|
+
desc: "Indirect load value of type unsigned int8 as int32 on the stack (0x47)"
|
|
1273
|
+
},
|
|
1274
|
+
u2: {
|
|
1275
|
+
desc: "Indirect load value of type unsigned int16 as int32 on the stack (0x49)"
|
|
1276
|
+
},
|
|
1277
|
+
u4: {
|
|
1278
|
+
desc: "Indirect load value of type unsigned int32 as int32 on the stack (0x4B)"
|
|
1279
|
+
},
|
|
1280
|
+
u8: {
|
|
1281
|
+
desc: "Indirect load value of type unsigned int64 as int64 on the stack (alias for ldind.i8) (0x4C)"
|
|
1282
|
+
}
|
|
1283
|
+
},
|
|
1284
|
+
ldlen: {
|
|
1285
|
+
desc: "Push the length (of type native unsigned int) of array on the stack (0x8E)"
|
|
1286
|
+
},
|
|
1287
|
+
ldloc: {
|
|
1288
|
+
desc: "Load local variable of index indx onto stack (0xFE 0x0C <uint16>)",
|
|
1289
|
+
"0": {
|
|
1290
|
+
desc: "Load local variable 0 onto stack (0x06)"
|
|
1291
|
+
},
|
|
1292
|
+
"1": {
|
|
1293
|
+
desc: "Load local variable 1 onto stack (0x7)"
|
|
1294
|
+
},
|
|
1295
|
+
"2": {
|
|
1296
|
+
desc: "Load local variable 2 onto stack (0x8)"
|
|
1297
|
+
},
|
|
1298
|
+
"3": {
|
|
1299
|
+
desc: "Load local variable 3 onto stack (0x9)"
|
|
1300
|
+
},
|
|
1301
|
+
s: {
|
|
1302
|
+
desc: "Load local variable of index indx onto stack, short form (0x11 <uint8>)"
|
|
1303
|
+
}
|
|
1304
|
+
},
|
|
1305
|
+
ldloca: {
|
|
1306
|
+
desc: "Load address of local variable with index indx (0xFE 0x0D <uint16>)",
|
|
1307
|
+
s: {
|
|
1308
|
+
desc: "Load address of local variable with index indx, short form (0x12 <uint8>)"
|
|
1309
|
+
}
|
|
1310
|
+
},
|
|
1311
|
+
ldnull: {
|
|
1312
|
+
desc: "Push a null reference on the stack (0x14)"
|
|
1313
|
+
},
|
|
1314
|
+
ldobj: {
|
|
1315
|
+
desc: "Copy the value stored at address src to the stack (0x71 <T>)"
|
|
1316
|
+
},
|
|
1317
|
+
ldsfld: {
|
|
1318
|
+
desc: "Push the value of field on the stack (0x7E <T>)"
|
|
1319
|
+
},
|
|
1320
|
+
ldsflda: {
|
|
1321
|
+
desc: "Push the address of the static field, field, on the stack (0x7F <T>)"
|
|
1322
|
+
},
|
|
1323
|
+
ldstr: {
|
|
1324
|
+
desc: "Push a string object for the literal string (0x72)"
|
|
1325
|
+
},
|
|
1326
|
+
ldtoken: {
|
|
1327
|
+
desc: "Convert metadata token to its runtime representation (0xD0 <T>)"
|
|
1328
|
+
},
|
|
1329
|
+
ldvirtftn: {
|
|
1330
|
+
desc: "Push address of virtual method on the stack (0xFE 0x07 <T>)"
|
|
1331
|
+
},
|
|
1332
|
+
leave: {
|
|
1333
|
+
desc: "Exit a protected region of code (0xDD <int32>)",
|
|
1334
|
+
s: {
|
|
1335
|
+
desc: "Exit a protected region of code, short form (0xDE <int8>)"
|
|
1336
|
+
}
|
|
1337
|
+
},
|
|
1338
|
+
localloc: {
|
|
1339
|
+
desc: "Allocate space from the local memory pool (0xFE 0x0F)"
|
|
1340
|
+
},
|
|
1341
|
+
mkrefany: {
|
|
1342
|
+
desc: "Push a typed reference to ptr of type class onto the stack (0xC6 <T>)"
|
|
1343
|
+
},
|
|
1344
|
+
mul: {
|
|
1345
|
+
desc: "Multiply values (0x5A)",
|
|
1346
|
+
ovf: {
|
|
1347
|
+
desc: "Multiply signed integer values. Signed result shall fit in same size (0xD8)",
|
|
1348
|
+
un: {
|
|
1349
|
+
desc: "Multiply unsigned integer values. Unsigned result shall fit in same size (0xD9)"
|
|
1350
|
+
}
|
|
1351
|
+
}
|
|
1352
|
+
},
|
|
1353
|
+
neg: {
|
|
1354
|
+
desc: "Negate value (0x65)"
|
|
1355
|
+
},
|
|
1356
|
+
newarr: {
|
|
1357
|
+
desc: "Create a new array with elements of type etype (0x8D <T>)"
|
|
1358
|
+
},
|
|
1359
|
+
newobj: {
|
|
1360
|
+
desc: "Allocate an uninitialized object or value type and call ctor (0x73 <T>)"
|
|
1361
|
+
},
|
|
1362
|
+
no: {
|
|
1363
|
+
desc: "The specified fault check(s) normally performed as part of the execution of the subsequent instruction can/shall be skipped (0x??)"
|
|
1364
|
+
},
|
|
1365
|
+
nop: {
|
|
1366
|
+
desc: "Do nothing (No operation) (0x00)"
|
|
1367
|
+
},
|
|
1368
|
+
not: {
|
|
1369
|
+
desc: "Bitwise complement (logical not) (0x66)"
|
|
1370
|
+
},
|
|
1371
|
+
or: {
|
|
1372
|
+
desc: "Bitwise OR of two integer values, returns an integer (0x60)"
|
|
1373
|
+
},
|
|
1374
|
+
pop: {
|
|
1375
|
+
desc: "Pop value from the stack (0x26)"
|
|
1376
|
+
},
|
|
1377
|
+
readonly: {
|
|
1378
|
+
desc: "Specify that the subsequent array address operation performs no type check at runtime, and that it returns a controlled-mutability managed pointer (0xFE 1E)"
|
|
1379
|
+
},
|
|
1380
|
+
refanytype: {
|
|
1381
|
+
desc: "Push the type token stored in a typed reference (0xFE 0x1D)"
|
|
1382
|
+
},
|
|
1383
|
+
refanyval: {
|
|
1384
|
+
desc: "Push the address stored in a typed reference (0xC2 <T>)"
|
|
1385
|
+
},
|
|
1386
|
+
rem: {
|
|
1387
|
+
desc: "Remainder when dividing one value by another (0x5D)",
|
|
1388
|
+
un: {
|
|
1389
|
+
desc: "Remainder when dividing one unsigned value by another (0x5E)"
|
|
1390
|
+
}
|
|
1391
|
+
},
|
|
1392
|
+
ret: {
|
|
1393
|
+
desc: "Return from method, possibly with a value (0x2A)"
|
|
1394
|
+
},
|
|
1395
|
+
rethrow: {
|
|
1396
|
+
desc: "Rethrow the current exception (0xFE 0x1A)"
|
|
1397
|
+
},
|
|
1398
|
+
shl: {
|
|
1399
|
+
desc: "Shift an integer left (shifting in zeros), return an integer (0x62)"
|
|
1400
|
+
},
|
|
1401
|
+
shr: {
|
|
1402
|
+
desc: "Shift an integer right (shift in sign), return an integer (0x63)",
|
|
1403
|
+
un: {
|
|
1404
|
+
desc: "Shift an integer right (shift in zero), return an integer (0x64)"
|
|
1405
|
+
}
|
|
1406
|
+
},
|
|
1407
|
+
sizeof: {
|
|
1408
|
+
desc: "Push the size, in bytes, of a type as an unsigned int32 (0xFE 0x1C <T>)"
|
|
1409
|
+
},
|
|
1410
|
+
starg: {
|
|
1411
|
+
desc: "Store value to the argument numbered num (0xFE 0x0B <uint16>)",
|
|
1412
|
+
s: {
|
|
1413
|
+
desc: "Store value to the argument numbered num, short form (0x10 <uint8>)"
|
|
1414
|
+
}
|
|
1415
|
+
},
|
|
1416
|
+
stelem: {
|
|
1417
|
+
desc: "Replace array element at index with the value on the stack (0xA4 <T>)",
|
|
1418
|
+
i: {
|
|
1419
|
+
desc: "Replace array element at index with the i value on the stack (0x9B)"
|
|
1420
|
+
},
|
|
1421
|
+
i1: {
|
|
1422
|
+
desc: "Replace array element at index with the int8 value on the stack (0x9C)"
|
|
1423
|
+
},
|
|
1424
|
+
i2: {
|
|
1425
|
+
desc: "Replace array element at index with the int16 value on the stack (0x9D)"
|
|
1426
|
+
},
|
|
1427
|
+
i4: {
|
|
1428
|
+
desc: "Replace array element at index with the int32 value on the stack (0x9E)"
|
|
1429
|
+
},
|
|
1430
|
+
i8: {
|
|
1431
|
+
desc: "Replace array element at index with the int64 value on the stack (0x9F)"
|
|
1432
|
+
},
|
|
1433
|
+
r4: {
|
|
1434
|
+
desc: "Replace array element at index with the float32 value on the stack (0xA0)"
|
|
1435
|
+
},
|
|
1436
|
+
r8: {
|
|
1437
|
+
desc: "Replace array element at index with the float64 value on the stack (0xA1)"
|
|
1438
|
+
},
|
|
1439
|
+
ref: {
|
|
1440
|
+
desc: "Replace array element at index with the ref value on the stack (0xA2)"
|
|
1441
|
+
}
|
|
1442
|
+
},
|
|
1443
|
+
stfld: {
|
|
1444
|
+
desc: "Replace the value of field of the object obj with value (0x7D <T>)"
|
|
1445
|
+
},
|
|
1446
|
+
stind: {
|
|
1447
|
+
i: {
|
|
1448
|
+
desc: "Store value of type native int into memory at address (0xDF)"
|
|
1449
|
+
},
|
|
1450
|
+
i1: {
|
|
1451
|
+
desc: "Store value of type int8 into memory at address (0x52)"
|
|
1452
|
+
},
|
|
1453
|
+
i2: {
|
|
1454
|
+
desc: "Store value of type int16 into memory at address (0x53)"
|
|
1455
|
+
},
|
|
1456
|
+
i4: {
|
|
1457
|
+
desc: "Store value of type int32 into memory at address (0x54)"
|
|
1458
|
+
},
|
|
1459
|
+
i8: {
|
|
1460
|
+
desc: "Store value of type int64 into memory at address (0x55)"
|
|
1461
|
+
},
|
|
1462
|
+
r4: {
|
|
1463
|
+
desc: "Store value of type float32 into memory at address (0x56)"
|
|
1464
|
+
},
|
|
1465
|
+
r8: {
|
|
1466
|
+
desc: "Store value of type float64 into memory at address (0x57)"
|
|
1467
|
+
},
|
|
1468
|
+
ref: {
|
|
1469
|
+
desc: "Store value of type object ref (type O) into memory at address (0x51)"
|
|
1470
|
+
}
|
|
1471
|
+
},
|
|
1472
|
+
stloc: {
|
|
1473
|
+
desc: "Pop a value from stack into local variable index (0xFE 0x0E <uint16>)",
|
|
1474
|
+
"0": {
|
|
1475
|
+
desc: "Pop a value from stack into local variable 0 (0x0A)"
|
|
1476
|
+
},
|
|
1477
|
+
"1": {
|
|
1478
|
+
desc: "Pop a value from stack into local variable 1 (0x0B)"
|
|
1479
|
+
},
|
|
1480
|
+
"2": {
|
|
1481
|
+
desc: "Pop a value from stack into local variable 2 (0x0C)"
|
|
1482
|
+
},
|
|
1483
|
+
"3": {
|
|
1484
|
+
desc: "Pop a value from stack into local variable 3 (0x0D)"
|
|
1485
|
+
},
|
|
1486
|
+
s: {
|
|
1487
|
+
desc: "Pop a value from stack into local variable indx, short form (0x13 <uint8>)"
|
|
1488
|
+
}
|
|
1489
|
+
},
|
|
1490
|
+
stobj: {
|
|
1491
|
+
desc: "Store a value of type typeTok at an address (0x81 <T>)"
|
|
1492
|
+
},
|
|
1493
|
+
stsfld: {
|
|
1494
|
+
desc: "Replace the value of field with val (0x80 <T>)"
|
|
1495
|
+
},
|
|
1496
|
+
sub: {
|
|
1497
|
+
desc: "Subtract value2 from value1, returning a new value (0x59)",
|
|
1498
|
+
ovf: {
|
|
1499
|
+
desc: "Subtract native int from a native int. Signed result shall fit in same size (0xDA)",
|
|
1500
|
+
un: {
|
|
1501
|
+
desc: "Subtract native unsigned int from a native unsigned int. Unsigned result shall fit in same size (0xDB)"
|
|
1502
|
+
}
|
|
1503
|
+
}
|
|
1504
|
+
},
|
|
1505
|
+
switch: {
|
|
1506
|
+
desc: "Jump to one of n values (0x45 <uint32> <int32> ... <int32>)"
|
|
1507
|
+
},
|
|
1508
|
+
tail: {
|
|
1509
|
+
desc: "Subsequent call terminates current method (0xFE 0x14)"
|
|
1510
|
+
},
|
|
1511
|
+
throw: {
|
|
1512
|
+
desc: "Throw an exception (0x7A)"
|
|
1513
|
+
},
|
|
1514
|
+
unaligned: {
|
|
1515
|
+
desc: "Subsequent pointer instruction might be unaligned (0xFE 0x12)"
|
|
1516
|
+
},
|
|
1517
|
+
unbox: {
|
|
1518
|
+
desc: "Extract a value-type from obj, its boxed representation (0x79 <T>)",
|
|
1519
|
+
any: {
|
|
1520
|
+
desc: "Extract a value-type from obj, its boxed representation (0xA5 <T>)"
|
|
1521
|
+
}
|
|
1522
|
+
},
|
|
1523
|
+
volatile: {
|
|
1524
|
+
desc: "Subsequent pointer reference is volatile (0xFE 0x13)"
|
|
1525
|
+
},
|
|
1526
|
+
xor: {
|
|
1527
|
+
desc: "Bitwise XOR of integer values, returns an integer (0x61)"
|
|
1528
|
+
}
|
|
1529
|
+
};
|
|
1530
|
+
var instructions = {
|
|
1531
|
+
"add": opcodes.add.desc,
|
|
1532
|
+
"add.ovf": opcodes.add.ovf.desc,
|
|
1533
|
+
"add.ovf.un": opcodes.add.ovf.un.desc,
|
|
1534
|
+
"and": opcodes.and.desc,
|
|
1535
|
+
"arglist": opcodes.arglist.desc,
|
|
1536
|
+
"beq": opcodes.beq.desc,
|
|
1537
|
+
"beq.s": opcodes.beq.s.desc,
|
|
1538
|
+
"bge": opcodes.bge.desc,
|
|
1539
|
+
"bge.s": opcodes.bge.s.desc,
|
|
1540
|
+
"bge.un": opcodes.bge.un.desc,
|
|
1541
|
+
"bge.un.s": opcodes.bge.un.s.desc,
|
|
1542
|
+
"bgt": opcodes.bgt.desc,
|
|
1543
|
+
"bgt.s": opcodes.bgt.s.desc,
|
|
1544
|
+
"bgt.un": opcodes.bgt.un.desc,
|
|
1545
|
+
"bgt.un.s": opcodes.bgt.un.s.desc,
|
|
1546
|
+
"ble": opcodes.ble.desc,
|
|
1547
|
+
"ble.s": opcodes.ble.s.desc,
|
|
1548
|
+
"ble.un": opcodes.ble.un.desc,
|
|
1549
|
+
"ble.un.s": opcodes.ble.un.s.desc,
|
|
1550
|
+
"blt": opcodes.blt.desc,
|
|
1551
|
+
"blt.s": opcodes.blt.s.desc,
|
|
1552
|
+
"blt.un": opcodes.blt.un.desc,
|
|
1553
|
+
"blt.un.s": opcodes.blt.un.s.desc,
|
|
1554
|
+
"bne.un": opcodes.bne.un.desc,
|
|
1555
|
+
"bne.un.s": opcodes.bne.un.s.desc,
|
|
1556
|
+
"box": opcodes.box.desc,
|
|
1557
|
+
"br": opcodes.br.desc,
|
|
1558
|
+
"br.s": opcodes.br.s.desc,
|
|
1559
|
+
"break": opcodes.break.desc,
|
|
1560
|
+
"brfalse": opcodes.brfalse.desc,
|
|
1561
|
+
"brfalse.s": opcodes.brfalse.s.desc,
|
|
1562
|
+
"brinst": opcodes.brinst.desc,
|
|
1563
|
+
"brinst.s": opcodes.brinst.s.desc,
|
|
1564
|
+
"brnull": opcodes.brnull.desc,
|
|
1565
|
+
"brnull.s": opcodes.brnull.s.desc,
|
|
1566
|
+
"brtrue": opcodes.brtrue.desc,
|
|
1567
|
+
"brtrue.s": opcodes.brtrue.s.desc,
|
|
1568
|
+
"brzero": opcodes.brzero.desc,
|
|
1569
|
+
"brzero.s": opcodes.brzero.s.desc,
|
|
1570
|
+
"call": opcodes.call.desc,
|
|
1571
|
+
"callvirt": opcodes.callvirt.desc,
|
|
1572
|
+
"castclass": opcodes.castclass.desc,
|
|
1573
|
+
"ceq": opcodes.ceq.desc,
|
|
1574
|
+
"cgt": opcodes.cgt.desc,
|
|
1575
|
+
"cgt.un": opcodes.cgt.un.desc,
|
|
1576
|
+
"ckfinite": opcodes.ckfinite.desc,
|
|
1577
|
+
"clt": opcodes.clt.desc,
|
|
1578
|
+
"clt.un": opcodes.clt.un.desc,
|
|
1579
|
+
"constrained": opcodes.constrained.desc,
|
|
1580
|
+
"conv.i": opcodes.conv.i.desc,
|
|
1581
|
+
"conv.i1": opcodes.conv.i1.desc,
|
|
1582
|
+
"conv.i2": opcodes.conv.i2.desc,
|
|
1583
|
+
"conv.i4": opcodes.conv.i4.desc,
|
|
1584
|
+
"conv.i8": opcodes.conv.i8.desc,
|
|
1585
|
+
"conv.ovf.i": opcodes.conv.ovf.i.desc,
|
|
1586
|
+
"conv.ovf.i.un": opcodes.conv.ovf.i.un.desc,
|
|
1587
|
+
"conv.ovf.i1": opcodes.conv.ovf.i1.desc,
|
|
1588
|
+
"conv.ovf.i1.un": opcodes.conv.ovf.i1.un.desc,
|
|
1589
|
+
"conv.ovf.i2": opcodes.conv.ovf.i2.desc,
|
|
1590
|
+
"conv.ovf.i2.un": opcodes.conv.ovf.i2.un.desc,
|
|
1591
|
+
"conv.ovf.i4": opcodes.conv.ovf.i4.desc,
|
|
1592
|
+
"conv.ovf.i4.un": opcodes.conv.ovf.i4.un.desc,
|
|
1593
|
+
"conv.ovf.i8": opcodes.conv.ovf.i8.desc,
|
|
1594
|
+
"conv.ovf.i8.un": opcodes.conv.ovf.i8.un.desc,
|
|
1595
|
+
"conv.ovf.u": opcodes.conv.ovf.u.desc,
|
|
1596
|
+
"conv.ovf.u.un": opcodes.conv.ovf.u.un.desc,
|
|
1597
|
+
"conv.ovf.u1": opcodes.conv.ovf.u1.desc,
|
|
1598
|
+
"conv.ovf.u1.un": opcodes.conv.ovf.u1.un.desc,
|
|
1599
|
+
"conv.ovf.u2": opcodes.conv.ovf.u2.desc,
|
|
1600
|
+
"conv.ovf.u2.un": opcodes.conv.ovf.u2.un.desc,
|
|
1601
|
+
"conv.ovf.u4": opcodes.conv.ovf.u4.desc,
|
|
1602
|
+
"conv.ovf.u4.un": opcodes.conv.ovf.u4.un.desc,
|
|
1603
|
+
"conv.ovf.u8": opcodes.conv.ovf.u8.desc,
|
|
1604
|
+
"conv.ovf.u8.un": opcodes.conv.ovf.u8.un.desc,
|
|
1605
|
+
"conv.r.un": opcodes.conv.r.un.desc,
|
|
1606
|
+
"conv.r4": opcodes.conv.r4.desc,
|
|
1607
|
+
"conv.r8": opcodes.conv.r8.desc,
|
|
1608
|
+
"conv.u": opcodes.conv.u.desc,
|
|
1609
|
+
"conv.u1": opcodes.conv.u1.desc,
|
|
1610
|
+
"conv.u2": opcodes.conv.u2.desc,
|
|
1611
|
+
"conv.u4": opcodes.conv.u4.desc,
|
|
1612
|
+
"conv.u8": opcodes.conv.u8.desc,
|
|
1613
|
+
"cpblk": opcodes.cpblk.desc,
|
|
1614
|
+
"cpobj": opcodes.cpobj.desc,
|
|
1615
|
+
"div": opcodes.div.desc,
|
|
1616
|
+
"div.un": opcodes.div.un.desc,
|
|
1617
|
+
"dup": opcodes.dup.desc,
|
|
1618
|
+
"endfault": opcodes.endfault.desc,
|
|
1619
|
+
"endfilter": opcodes.endfilter.desc,
|
|
1620
|
+
"endfinally": opcodes.endfinally.desc,
|
|
1621
|
+
"initblk": opcodes.initblk.desc,
|
|
1622
|
+
"initobj": opcodes.initobj.desc,
|
|
1623
|
+
"isinst": opcodes.isinst.desc,
|
|
1624
|
+
"jmp": opcodes.jmp.desc,
|
|
1625
|
+
"ldarg": opcodes.ldarg.desc,
|
|
1626
|
+
"ldarg.0": opcodes.ldarg['0'].desc,
|
|
1627
|
+
"ldarg.1": opcodes.ldarg['1'].desc,
|
|
1628
|
+
"ldarg.2": opcodes.ldarg['2'].desc,
|
|
1629
|
+
"ldarg.3": opcodes.ldarg['3'].desc,
|
|
1630
|
+
"ldarg.s": opcodes.ldarg.s.desc,
|
|
1631
|
+
"ldarga": opcodes.ldarga.desc,
|
|
1632
|
+
"ldarga.s": opcodes.ldarga.s.desc,
|
|
1633
|
+
"ldc.i4": opcodes.ldc.i4.desc,
|
|
1634
|
+
"ldc.i4.0": opcodes.ldc.i4['0'].desc,
|
|
1635
|
+
"ldc.i4.1": opcodes.ldc.i4['1'].desc,
|
|
1636
|
+
"ldc.i4.2": opcodes.ldc.i4['2'].desc,
|
|
1637
|
+
"ldc.i4.3": opcodes.ldc.i4['3'].desc,
|
|
1638
|
+
"ldc.i4.4": opcodes.ldc.i4['4'].desc,
|
|
1639
|
+
"ldc.i4.5": opcodes.ldc.i4['5'].desc,
|
|
1640
|
+
"ldc.i4.6": opcodes.ldc.i4['6'].desc,
|
|
1641
|
+
"ldc.i4.7": opcodes.ldc.i4['7'].desc,
|
|
1642
|
+
"ldc.i4.8": opcodes.ldc.i4['8'].desc,
|
|
1643
|
+
"ldc.i4.m1": opcodes.ldc.i4.m1.desc,
|
|
1644
|
+
"ldc.i4.M1": opcodes.ldc.i4.M1.desc,
|
|
1645
|
+
"ldc.i4.s": opcodes.ldc.i4.s.desc,
|
|
1646
|
+
"ldc.i8": opcodes.ldc.i8.desc,
|
|
1647
|
+
"ldc.r4 ": opcodes.ldc.r4.desc,
|
|
1648
|
+
"ldc.r8": opcodes.ldc.r8.desc,
|
|
1649
|
+
"ldelem": opcodes.ldelem.desc,
|
|
1650
|
+
"ldelem.i": opcodes.ldelem.i.desc,
|
|
1651
|
+
"ldelem.i1": opcodes.ldelem.i1.desc,
|
|
1652
|
+
"ldelem.i2": opcodes.ldelem.i2.desc,
|
|
1653
|
+
"ldelem.i4": opcodes.ldelem.i4.desc,
|
|
1654
|
+
"ldelem.i8": opcodes.ldelem.i8.desc,
|
|
1655
|
+
"ldelem.r4": opcodes.ldelem.r4.desc,
|
|
1656
|
+
"ldelem.r8": opcodes.ldelem.r8.desc,
|
|
1657
|
+
"ldelem.ref": opcodes.ldelem.ref.desc,
|
|
1658
|
+
"ldelem.u1": opcodes.ldelem.u1.desc,
|
|
1659
|
+
"ldelem.u2": opcodes.ldelem.u2.desc,
|
|
1660
|
+
"ldelem.u4": opcodes.ldelem.u4.desc,
|
|
1661
|
+
"ldelem.u8": opcodes.ldelem.u8.desc,
|
|
1662
|
+
"ldelema": opcodes.ldelema.desc,
|
|
1663
|
+
"ldfld": opcodes.ldfld.desc,
|
|
1664
|
+
"ldflda": opcodes.ldflda.desc,
|
|
1665
|
+
"ldftn": opcodes.ldftn.desc,
|
|
1666
|
+
"ldind.i": opcodes.ldind.i.desc,
|
|
1667
|
+
"ldind.i1": opcodes.ldind.i1.desc,
|
|
1668
|
+
"ldind.i2": opcodes.ldind.i2.desc,
|
|
1669
|
+
"ldind.i4": opcodes.ldind.i4.desc,
|
|
1670
|
+
"ldind.i8": opcodes.ldind.i8.desc,
|
|
1671
|
+
"ldind.r4": opcodes.ldind.r4.desc,
|
|
1672
|
+
"ldind.r8": opcodes.ldind.r8.desc,
|
|
1673
|
+
"ldind.ref": opcodes.ldind.ref.desc,
|
|
1674
|
+
"ldind.u1": opcodes.ldind.u1.desc,
|
|
1675
|
+
"ldind.u2": opcodes.ldind.u2.desc,
|
|
1676
|
+
"ldind.u4": opcodes.ldind.u4.desc,
|
|
1677
|
+
"ldind.u8": opcodes.ldind.u8.desc,
|
|
1678
|
+
"ldlen": opcodes.ldlen.desc,
|
|
1679
|
+
"ldloc": opcodes.ldloc.desc,
|
|
1680
|
+
"ldloc.0": opcodes.ldloc['0'].desc,
|
|
1681
|
+
"ldloc.1": opcodes.ldloc['1'].desc,
|
|
1682
|
+
"ldloc.2": opcodes.ldloc['2'].desc,
|
|
1683
|
+
"ldloc.3": opcodes.ldloc['3'].desc,
|
|
1684
|
+
"ldloc.s": opcodes.ldloc.s.desc,
|
|
1685
|
+
"ldloca": opcodes.ldloca.desc,
|
|
1686
|
+
"ldloca.s": opcodes.ldloca.s.desc,
|
|
1687
|
+
"ldnull": opcodes.ldnull.desc,
|
|
1688
|
+
"ldobj": opcodes.ldobj.desc,
|
|
1689
|
+
"ldsfld": opcodes.ldsfld.desc,
|
|
1690
|
+
"ldsflda": opcodes.ldsflda.desc,
|
|
1691
|
+
"ldstr": opcodes.ldstr.desc,
|
|
1692
|
+
"ldtoken": opcodes.ldtoken.desc,
|
|
1693
|
+
"ldvirtftn": opcodes.ldvirtftn.desc,
|
|
1694
|
+
"leave": opcodes.leave.desc,
|
|
1695
|
+
"leave.s": opcodes.leave.s.desc,
|
|
1696
|
+
"localloc": opcodes.localloc.desc,
|
|
1697
|
+
"mkrefany": opcodes.mkrefany.desc,
|
|
1698
|
+
"mul": opcodes.mul.desc,
|
|
1699
|
+
"mul.ovf": opcodes.mul.ovf.desc,
|
|
1700
|
+
"mul.ovf.un": opcodes.mul.ovf.un.desc,
|
|
1701
|
+
"neg": opcodes.neg.desc,
|
|
1702
|
+
"newarr": opcodes.newarr.desc,
|
|
1703
|
+
"newobj": opcodes.newobj.desc,
|
|
1704
|
+
"no": opcodes.no.desc,
|
|
1705
|
+
"nop": opcodes.nop.desc,
|
|
1706
|
+
"not": opcodes.not.desc,
|
|
1707
|
+
"or": opcodes.or.desc,
|
|
1708
|
+
"pop": opcodes.pop.desc,
|
|
1709
|
+
"readonly": opcodes.readonly.desc,
|
|
1710
|
+
"refanytype": opcodes.refanytype.desc,
|
|
1711
|
+
"refanyval": opcodes.refanyval.desc,
|
|
1712
|
+
"rem": opcodes.rem.desc,
|
|
1713
|
+
"rem.un": opcodes.rem.un.desc,
|
|
1714
|
+
"ret": opcodes.ret.desc,
|
|
1715
|
+
"rethrow": opcodes.rethrow.desc,
|
|
1716
|
+
"shl": opcodes.shl.desc,
|
|
1717
|
+
"shr": opcodes.shr.desc,
|
|
1718
|
+
"shr.un": opcodes.shr.un.desc,
|
|
1719
|
+
"sizeof": opcodes.sizeof.desc,
|
|
1720
|
+
"starg": opcodes.starg.desc,
|
|
1721
|
+
"starg.s": opcodes.starg.s.desc,
|
|
1722
|
+
"stelem": opcodes.stelem.desc,
|
|
1723
|
+
"stelem.i": opcodes.stelem.i.desc,
|
|
1724
|
+
"stelem.i1": opcodes.stelem.i1.desc,
|
|
1725
|
+
"stelem.i2": opcodes.stelem.i2.desc,
|
|
1726
|
+
"stelem.i4": opcodes.stelem.i4.desc,
|
|
1727
|
+
"stelem.i8": opcodes.stelem.i8.desc,
|
|
1728
|
+
"stelem.r4": opcodes.stelem.r4.desc,
|
|
1729
|
+
"stelem.r8": opcodes.stelem.r8.desc,
|
|
1730
|
+
"stelem.ref": opcodes.stelem.ref.desc,
|
|
1731
|
+
"stfld": opcodes.stfld.desc,
|
|
1732
|
+
"stind.i": opcodes.stind.i.desc,
|
|
1733
|
+
"stind.i1": opcodes.stind.i1.desc,
|
|
1734
|
+
"stind.i2": opcodes.stind.i2.desc,
|
|
1735
|
+
"stind.i4": opcodes.stind.i4.desc,
|
|
1736
|
+
"stind.i8": opcodes.stind.i8.desc,
|
|
1737
|
+
"stind.r4": opcodes.stind.r4.desc,
|
|
1738
|
+
"stind.r8": opcodes.stind.r8.desc,
|
|
1739
|
+
"stind.ref": opcodes.stind.ref.desc,
|
|
1740
|
+
"stloc": opcodes.stloc.desc,
|
|
1741
|
+
"stloc.0": opcodes.stloc['0'].desc,
|
|
1742
|
+
"stloc.1": opcodes.stloc['1'].desc,
|
|
1743
|
+
"stloc.2": opcodes.stloc['2'].desc,
|
|
1744
|
+
"stloc.3": opcodes.stloc['3'].desc,
|
|
1745
|
+
"stloc.s": opcodes.stloc.s.desc,
|
|
1746
|
+
"stobj": opcodes.stobj.desc,
|
|
1747
|
+
"stsfld": opcodes.stsfld.desc,
|
|
1748
|
+
"sub": opcodes.sub.desc,
|
|
1749
|
+
"sub.ovf": opcodes.sub.ovf.desc,
|
|
1750
|
+
"sub.ovf.un": opcodes.sub.ovf.un.desc,
|
|
1751
|
+
"switch": opcodes.switch.desc,
|
|
1752
|
+
"tail": opcodes.tail.desc,
|
|
1753
|
+
"throw": opcodes.throw.desc,
|
|
1754
|
+
"unaligned": opcodes.unaligned.desc,
|
|
1755
|
+
"unbox": opcodes.unbox.desc,
|
|
1756
|
+
"unbox.any": opcodes.unbox.any.desc,
|
|
1757
|
+
"volatile": opcodes.volatile.desc,
|
|
1758
|
+
"xor": opcodes.xor.desc
|
|
1759
|
+
};
|
|
1760
|
+
|
|
1761
|
+
function findPrevSibling(node, nodes) {
|
|
1762
|
+
for (let pos = node; pos; pos = pos.prevSibling) {
|
|
1763
|
+
if (nodes.indexOf(pos.name) > -1) {
|
|
1764
|
+
return pos;
|
|
1765
|
+
}
|
|
1766
|
+
if (pos.type.isTop) {
|
|
1767
|
+
break;
|
|
1768
|
+
}
|
|
1769
|
+
}
|
|
1770
|
+
}
|
|
1771
|
+
function isAtRoot(node, nodes) {
|
|
1772
|
+
if (nodes.indexOf(node.name) > -1) {
|
|
1773
|
+
return node;
|
|
1774
|
+
}
|
|
1775
|
+
let parent = node.parent;
|
|
1776
|
+
if (parent) {
|
|
1777
|
+
if (parent.name === '⚠') {
|
|
1778
|
+
parent = parent.parent;
|
|
1779
|
+
if (parent && nodes.indexOf(parent.name) > -1) {
|
|
1780
|
+
return parent;
|
|
1781
|
+
}
|
|
1782
|
+
}
|
|
1783
|
+
else if (nodes.indexOf(parent.name) > -1) {
|
|
1784
|
+
return parent;
|
|
1785
|
+
}
|
|
1786
|
+
}
|
|
1787
|
+
return null;
|
|
1788
|
+
}
|
|
1789
|
+
function memberBody(from) {
|
|
1790
|
+
return {
|
|
1791
|
+
from,
|
|
1792
|
+
options: memberDecl
|
|
1793
|
+
};
|
|
1794
|
+
}
|
|
1795
|
+
function classBody(from) {
|
|
1796
|
+
return {
|
|
1797
|
+
from,
|
|
1798
|
+
options: classMemberDecl
|
|
1799
|
+
};
|
|
1800
|
+
}
|
|
1801
|
+
function eventBody(from) {
|
|
1802
|
+
return {
|
|
1803
|
+
from,
|
|
1804
|
+
options: eventMemberDecl
|
|
1805
|
+
};
|
|
1806
|
+
}
|
|
1807
|
+
function propBody(from) {
|
|
1808
|
+
return {
|
|
1809
|
+
from,
|
|
1810
|
+
options: propMemberDecl
|
|
1811
|
+
};
|
|
1812
|
+
}
|
|
1813
|
+
function methodBody(from) {
|
|
1814
|
+
return {
|
|
1815
|
+
from,
|
|
1816
|
+
options: methodMemberDecl
|
|
1817
|
+
};
|
|
1818
|
+
}
|
|
1819
|
+
function assemblyBody(from) {
|
|
1820
|
+
return {
|
|
1821
|
+
from,
|
|
1822
|
+
options: assemblyMemberDecl
|
|
1823
|
+
};
|
|
1824
|
+
}
|
|
1825
|
+
function assemblyRefBody(from) {
|
|
1826
|
+
return {
|
|
1827
|
+
from,
|
|
1828
|
+
options: assemblyRefMemberDecl
|
|
1829
|
+
};
|
|
1830
|
+
}
|
|
1831
|
+
function exptypeBody(from) {
|
|
1832
|
+
return {
|
|
1833
|
+
from,
|
|
1834
|
+
options: exptypeMemberDecl
|
|
1835
|
+
};
|
|
1836
|
+
}
|
|
1837
|
+
function manifestResBody(from) {
|
|
1838
|
+
return {
|
|
1839
|
+
from,
|
|
1840
|
+
options: manifestResMemberDecl
|
|
1841
|
+
};
|
|
1842
|
+
}
|
|
1843
|
+
function classAttrBody(node, context) {
|
|
1844
|
+
var _a, _b;
|
|
1845
|
+
if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.name) === '⚠') {
|
|
1846
|
+
node = node.parent;
|
|
1847
|
+
}
|
|
1848
|
+
let prevSibling = node.prevSibling;
|
|
1849
|
+
if (prevSibling) {
|
|
1850
|
+
if (prevSibling.name === '⚠') {
|
|
1851
|
+
prevSibling = prevSibling.prevSibling;
|
|
1852
|
+
}
|
|
1853
|
+
if (prevSibling) {
|
|
1854
|
+
const code = context.state.sliceDoc(prevSibling.from, prevSibling.to);
|
|
1855
|
+
if (code === "nested") {
|
|
1856
|
+
return {
|
|
1857
|
+
from: node.from,
|
|
1858
|
+
options: classNestAttr
|
|
1859
|
+
};
|
|
1860
|
+
}
|
|
1861
|
+
if (findPrevSibling(prevSibling, ["ClassName"])) {
|
|
1862
|
+
return {
|
|
1863
|
+
from: node.from,
|
|
1864
|
+
options: classExtendsDecl
|
|
1865
|
+
};
|
|
1866
|
+
}
|
|
1867
|
+
}
|
|
1868
|
+
}
|
|
1869
|
+
else if (node.name === '⚠') {
|
|
1870
|
+
if (((_b = node.parent) === null || _b === void 0 ? void 0 : _b.name) === "ClassName") {
|
|
1871
|
+
return {
|
|
1872
|
+
from: node.from,
|
|
1873
|
+
options: classExtendsDecl
|
|
1874
|
+
};
|
|
1875
|
+
}
|
|
1876
|
+
}
|
|
1877
|
+
return {
|
|
1878
|
+
from: node.from,
|
|
1879
|
+
options: classAttr
|
|
1880
|
+
};
|
|
1881
|
+
}
|
|
1882
|
+
function fieldAttrBody({ from }) {
|
|
1883
|
+
return {
|
|
1884
|
+
from,
|
|
1885
|
+
options: fieldAttr
|
|
1886
|
+
};
|
|
1887
|
+
}
|
|
1888
|
+
function eventAttrBody({ from }) {
|
|
1889
|
+
return {
|
|
1890
|
+
from,
|
|
1891
|
+
options: eventAttr
|
|
1892
|
+
};
|
|
1893
|
+
}
|
|
1894
|
+
function propAttrBody(node) {
|
|
1895
|
+
var _a;
|
|
1896
|
+
switch ((_a = node.prevSibling) === null || _a === void 0 ? void 0 : _a.name) {
|
|
1897
|
+
case "CallingConvention":
|
|
1898
|
+
return {
|
|
1899
|
+
from: node.from,
|
|
1900
|
+
options: callConv
|
|
1901
|
+
};
|
|
1902
|
+
default:
|
|
1903
|
+
return {
|
|
1904
|
+
from: node.from,
|
|
1905
|
+
options: [...propAttr, ...callConv]
|
|
1906
|
+
};
|
|
1907
|
+
}
|
|
1908
|
+
}
|
|
1909
|
+
function methodAttrBody(node) {
|
|
1910
|
+
var _a;
|
|
1911
|
+
switch ((_a = node.prevSibling) === null || _a === void 0 ? void 0 : _a.name) {
|
|
1912
|
+
case "CallingConvention":
|
|
1913
|
+
return {
|
|
1914
|
+
from: node.from,
|
|
1915
|
+
options: callConv
|
|
1916
|
+
};
|
|
1917
|
+
default:
|
|
1918
|
+
return {
|
|
1919
|
+
from: node.from,
|
|
1920
|
+
options: [...methodAttr, ...callConv]
|
|
1921
|
+
};
|
|
1922
|
+
}
|
|
1923
|
+
}
|
|
1924
|
+
function paramAttrBody({ from }) {
|
|
1925
|
+
return {
|
|
1926
|
+
from,
|
|
1927
|
+
options: paramAttr
|
|
1928
|
+
};
|
|
1929
|
+
}
|
|
1930
|
+
function methodScopeBlock(node, context) {
|
|
1931
|
+
function getCode() {
|
|
1932
|
+
var _a, _b, _c, _d, _e;
|
|
1933
|
+
if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.name) === "OpCode") {
|
|
1934
|
+
return context.state.sliceDoc(node.parent.from, node.parent.to).trimEnd();
|
|
1935
|
+
}
|
|
1936
|
+
else if (((_b = node.prevSibling) === null || _b === void 0 ? void 0 : _b.name) === "Instrction") {
|
|
1937
|
+
const prevSibling = node.prevSibling;
|
|
1938
|
+
if (((_c = prevSibling.firstChild) === null || _c === void 0 ? void 0 : _c.name) === "OpCode") {
|
|
1939
|
+
const firstChild = prevSibling.firstChild;
|
|
1940
|
+
if (((_d = firstChild.nextSibling) === null || _d === void 0 ? void 0 : _d.name) === '⚠') {
|
|
1941
|
+
const code = context.state.sliceDoc(firstChild.from, firstChild.to);
|
|
1942
|
+
if (!code.match(/\s/)) {
|
|
1943
|
+
return code.trimEnd() + context.state.sliceDoc(node.from, node.to);
|
|
1944
|
+
}
|
|
1945
|
+
}
|
|
1946
|
+
else if (((_e = firstChild.lastChild) === null || _e === void 0 ? void 0 : _e.name) !== '⚠') {
|
|
1947
|
+
return context.state.sliceDoc(node.from, node.to);
|
|
1948
|
+
}
|
|
1949
|
+
}
|
|
1950
|
+
}
|
|
1951
|
+
else {
|
|
1952
|
+
return context.state.sliceDoc(node.from, node.to);
|
|
1953
|
+
}
|
|
1954
|
+
}
|
|
1955
|
+
const code = getCode();
|
|
1956
|
+
if (!(code === null || code === void 0 ? void 0 : code.match(/^\w/))) {
|
|
1957
|
+
return;
|
|
1958
|
+
}
|
|
1959
|
+
const parts = code.split('.');
|
|
1960
|
+
let opcode = opcodes;
|
|
1961
|
+
for (let i = 0; i < parts.length; i++) {
|
|
1962
|
+
const part = parts[i];
|
|
1963
|
+
if (part in opcode) {
|
|
1964
|
+
opcode = opcode[part];
|
|
1965
|
+
}
|
|
1966
|
+
else if (i !== parts.length - 1) {
|
|
1967
|
+
return;
|
|
1968
|
+
}
|
|
1969
|
+
}
|
|
1970
|
+
const result = [];
|
|
1971
|
+
for (const key in opcode) {
|
|
1972
|
+
if (key === "desc") {
|
|
1973
|
+
continue;
|
|
1974
|
+
}
|
|
1975
|
+
const { desc } = opcode[key];
|
|
1976
|
+
result.push({
|
|
1977
|
+
label: key,
|
|
1978
|
+
type: key.match(/^[mM]?[0-8]$/) ? "constant" : "keyword",
|
|
1979
|
+
info: desc
|
|
1980
|
+
});
|
|
1981
|
+
}
|
|
1982
|
+
if (result.length) {
|
|
1983
|
+
return {
|
|
1984
|
+
from: node.name === '.' ? node.to : node.from,
|
|
1985
|
+
options: result
|
|
1986
|
+
};
|
|
1987
|
+
}
|
|
1988
|
+
}
|
|
1989
|
+
function autocomplete(context) {
|
|
1990
|
+
var _a, _b, _c;
|
|
1991
|
+
const node = syntaxTree(context.state).resolveInner(context.pos, -1);
|
|
1992
|
+
if (((_a = node.parent) === null || _a === void 0 ? void 0 : _a.name) === "OpCode" || ((_b = node.prevSibling) === null || _b === void 0 ? void 0 : _b.name) === "Instrction") {
|
|
1993
|
+
const result = methodScopeBlock(node, context);
|
|
1994
|
+
if (result) {
|
|
1995
|
+
return result;
|
|
1996
|
+
}
|
|
1997
|
+
}
|
|
1998
|
+
const code = context.state.sliceDoc(node.from, node.to);
|
|
1999
|
+
if (code.startsWith('.') || code.startsWith('#')) {
|
|
2000
|
+
let delim = isAtRoot(node, ["Delim"]);
|
|
2001
|
+
if (delim) {
|
|
2002
|
+
switch ((_c = delim.parent) === null || _c === void 0 ? void 0 : _c.name) {
|
|
2003
|
+
case "Namespace":
|
|
2004
|
+
return memberBody(node.from);
|
|
2005
|
+
case "Class":
|
|
2006
|
+
return classBody(node.from);
|
|
2007
|
+
case "Event":
|
|
2008
|
+
return eventBody(node.from);
|
|
2009
|
+
case "Property":
|
|
2010
|
+
return propBody(node.from);
|
|
2011
|
+
case "Method":
|
|
2012
|
+
case "MethodScopeBlock":
|
|
2013
|
+
return methodBody(node.from);
|
|
2014
|
+
case "Assembly":
|
|
2015
|
+
return assemblyBody(node.from);
|
|
2016
|
+
case "AssemblyReference":
|
|
2017
|
+
return assemblyRefBody(node.from);
|
|
2018
|
+
case "ExportType":
|
|
2019
|
+
return exptypeBody(node.from);
|
|
2020
|
+
case "ManifestResource":
|
|
2021
|
+
return manifestResBody(node.from);
|
|
2022
|
+
}
|
|
2023
|
+
}
|
|
2024
|
+
else if (isAtRoot(node, ["CompilationUnit"])) {
|
|
2025
|
+
return memberBody(node.from);
|
|
2026
|
+
}
|
|
2027
|
+
}
|
|
2028
|
+
else if (code.match(/^\w/)) {
|
|
2029
|
+
if (isAtRoot(node, ["Class", "ClassName"])) {
|
|
2030
|
+
return classAttrBody(node, context);
|
|
2031
|
+
}
|
|
2032
|
+
let parent = node.parent;
|
|
2033
|
+
switch (parent === null || parent === void 0 ? void 0 : parent.name) {
|
|
2034
|
+
case "Field":
|
|
2035
|
+
return fieldAttrBody(node);
|
|
2036
|
+
case "Event":
|
|
2037
|
+
return eventAttrBody(node);
|
|
2038
|
+
case "Property":
|
|
2039
|
+
return propAttrBody(node);
|
|
2040
|
+
case "Method":
|
|
2041
|
+
return methodAttrBody(node);
|
|
2042
|
+
case "Delim":
|
|
2043
|
+
parent = parent.parent;
|
|
2044
|
+
if (parent) {
|
|
2045
|
+
if (parent.name === "Method" || parent.name === "MethodScopeBlock") {
|
|
2046
|
+
return methodScopeBlock(node, context);
|
|
2047
|
+
}
|
|
2048
|
+
else if (parent.name === "ParameterAttribute") {
|
|
2049
|
+
return paramAttrBody(node);
|
|
2050
|
+
}
|
|
2051
|
+
}
|
|
2052
|
+
break;
|
|
2053
|
+
}
|
|
2054
|
+
}
|
|
2055
|
+
}
|
|
2056
|
+
|
|
2057
|
+
function hoverRender({ title, type }, description) {
|
|
2058
|
+
const dom = document.createElement("div");
|
|
2059
|
+
dom.classList.add("cm-msil-hover-infotip");
|
|
2060
|
+
const name = document.createElement("span");
|
|
2061
|
+
name.className = `tok-${type}`;
|
|
2062
|
+
name.textContent = title;
|
|
2063
|
+
const subname = document.createElement("div");
|
|
2064
|
+
subname.className = "cm-msil-hover-infotip-description";
|
|
2065
|
+
subname.textContent = description;
|
|
2066
|
+
dom.appendChild(name);
|
|
2067
|
+
dom.appendChild(subname);
|
|
2068
|
+
return { dom };
|
|
2069
|
+
}
|
|
2070
|
+
function msilTooltip(render = hoverRender, options) {
|
|
2071
|
+
return hoverTooltip(function (view, pos) {
|
|
2072
|
+
let node = syntaxTree(view.state).resolveInner(pos);
|
|
2073
|
+
if (node.name !== "OpCode") {
|
|
2074
|
+
const parent = node.parent;
|
|
2075
|
+
if ((parent === null || parent === void 0 ? void 0 : parent.name) === "OpCode") {
|
|
2076
|
+
node = parent;
|
|
2077
|
+
}
|
|
2078
|
+
else {
|
|
2079
|
+
return null;
|
|
2080
|
+
}
|
|
2081
|
+
}
|
|
2082
|
+
const text = view.state.sliceDoc(node.from, node.to);
|
|
2083
|
+
if (text) {
|
|
2084
|
+
const desc = instructions[text];
|
|
2085
|
+
if (desc) {
|
|
2086
|
+
return {
|
|
2087
|
+
pos,
|
|
2088
|
+
create() {
|
|
2089
|
+
return render({ title: text, type: "keyword" }, desc);
|
|
2090
|
+
}
|
|
2091
|
+
};
|
|
2092
|
+
}
|
|
2093
|
+
}
|
|
2094
|
+
return null;
|
|
2095
|
+
}, options);
|
|
2096
|
+
}
|
|
2097
|
+
|
|
2098
|
+
const msilLanguage = /*@__PURE__*/LRLanguage.define({
|
|
2099
|
+
parser: /*@__PURE__*/parser.configure({
|
|
2100
|
+
props: [
|
|
2101
|
+
/*@__PURE__*/indentNodeProp.add({
|
|
2102
|
+
Delim: /*@__PURE__*/continuedIndent()
|
|
2103
|
+
}),
|
|
2104
|
+
/*@__PURE__*/foldNodeProp.add({
|
|
2105
|
+
Delim: foldInside
|
|
2106
|
+
}),
|
|
2107
|
+
/*@__PURE__*/styleTags({
|
|
2108
|
+
"Keyword SimpleType OpCode": tags.keyword,
|
|
2109
|
+
BooleanLiteral: tags.bool,
|
|
2110
|
+
NullLiteral: tags.null,
|
|
2111
|
+
"IntegerLiteral ByteLiteral": tags.integer,
|
|
2112
|
+
RealLiteral: tags.float,
|
|
2113
|
+
'QSTRING SQSTRING': tags.string,
|
|
2114
|
+
LineComment: tags.lineComment,
|
|
2115
|
+
BlockComment: tags.blockComment,
|
|
2116
|
+
". : Astrisk Slash + - Not & | =": tags.operator,
|
|
2117
|
+
PP_Directive: tags.definitionKeyword,
|
|
2118
|
+
"Identifier TypeIdentifier": tags.typeName,
|
|
2119
|
+
AssemblyName: [tags.strong, tags.name],
|
|
2120
|
+
ModuleName: tags.name,
|
|
2121
|
+
NamespaceName: tags.namespace,
|
|
2122
|
+
ClassName: tags.className,
|
|
2123
|
+
"ArgumentName FieldName": tags.variableName,
|
|
2124
|
+
ConstName: /*@__PURE__*/tags.constant(tags.variableName),
|
|
2125
|
+
MethodName: /*@__PURE__*/tags.function(tags.variableName),
|
|
2126
|
+
ParamName: [tags.emphasis, tags.variableName],
|
|
2127
|
+
"PropertyName EventName": tags.propertyName,
|
|
2128
|
+
LabelName: tags.labelName,
|
|
2129
|
+
"( )": tags.paren,
|
|
2130
|
+
"{ }": tags.brace,
|
|
2131
|
+
"[ ]": tags.squareBracket,
|
|
2132
|
+
"< >": tags.angleBracket,
|
|
2133
|
+
})
|
|
2134
|
+
]
|
|
2135
|
+
}),
|
|
2136
|
+
languageData: {
|
|
2137
|
+
commentTokens: { line: "//", block: { open: "/*", close: "*/" } },
|
|
2138
|
+
closeBrackets: { brackets: ['(', '[', '{', '"', '\'', '<'] },
|
|
2139
|
+
indentOnInput: /^\s*((\)|\]|\})$|(catch|finally)\b)/,
|
|
2140
|
+
autocomplete: autocomplete
|
|
2141
|
+
}
|
|
2142
|
+
});
|
|
2143
|
+
function msil() {
|
|
2144
|
+
return new LanguageSupport(msilLanguage);
|
|
2145
|
+
}
|
|
2146
|
+
|
|
2147
|
+
export { hoverRender, msil, msilLanguage, msilTooltip, parser };
|