@datagrok/bio 0.0.1 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/package.js +1378 -0
- package/package.json +36 -26
- package/src/package.ts +9 -0
package/dist/package.js
ADDED
|
@@ -0,0 +1,1378 @@
|
|
|
1
|
+
var sequences1;
|
|
2
|
+
/******/ (() => { // webpackBootstrap
|
|
3
|
+
/******/ "use strict";
|
|
4
|
+
/******/ var __webpack_modules__ = ({
|
|
5
|
+
|
|
6
|
+
/***/ "./node_modules/@datagrok-libraries/bio/src/aminoacids.js":
|
|
7
|
+
/*!****************************************************************!*\
|
|
8
|
+
!*** ./node_modules/@datagrok-libraries/bio/src/aminoacids.js ***!
|
|
9
|
+
\****************************************************************/
|
|
10
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
11
|
+
|
|
12
|
+
__webpack_require__.r(__webpack_exports__);
|
|
13
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
14
|
+
/* harmony export */ "Aminoacids": () => (/* binding */ Aminoacids),
|
|
15
|
+
/* harmony export */ "AminoacidsPalettes": () => (/* binding */ AminoacidsPalettes)
|
|
16
|
+
/* harmony export */ });
|
|
17
|
+
/* harmony import */ var _seq_palettes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./seq-palettes */ "./node_modules/@datagrok-libraries/bio/src/seq-palettes.js");
|
|
18
|
+
|
|
19
|
+
class AminoacidsPalettes extends _seq_palettes__WEBPACK_IMPORTED_MODULE_0__.SeqPaletteBase {
|
|
20
|
+
static get Lesk() {
|
|
21
|
+
if (this.lesk === void 0) {
|
|
22
|
+
this.lesk = this.makePalette([
|
|
23
|
+
[['G', 'A', 'S', 'T'], 'orange'],
|
|
24
|
+
[['C', 'V', 'I', 'L', 'P', 'F', 'Y', 'M', 'W'], 'all_green'],
|
|
25
|
+
[['N', 'Q', 'H'], 'magenta'],
|
|
26
|
+
[['D', 'E'], 'red'],
|
|
27
|
+
[['K', 'R'], 'all_blue'],
|
|
28
|
+
]);
|
|
29
|
+
}
|
|
30
|
+
return this.lesk;
|
|
31
|
+
}
|
|
32
|
+
static get GrokGroups() {
|
|
33
|
+
if (this.grokGroups === void 0) {
|
|
34
|
+
this.grokGroups = this.makePalette([
|
|
35
|
+
[['C', 'U'], 'yellow'],
|
|
36
|
+
[['G', 'P'], 'red'],
|
|
37
|
+
[['A', 'V', 'I', 'L', 'M', 'F', 'Y', 'W'], 'all_green'],
|
|
38
|
+
[['R', 'H', 'K'], 'light_blue'],
|
|
39
|
+
[['D', 'E'], 'dark_blue'],
|
|
40
|
+
[['S', 'T', 'N', 'Q'], 'orange'],
|
|
41
|
+
]);
|
|
42
|
+
}
|
|
43
|
+
return this.grokGroups;
|
|
44
|
+
}
|
|
45
|
+
static get RasMol() {
|
|
46
|
+
if (this.rasMol === void 0) {
|
|
47
|
+
this.rasMol = {
|
|
48
|
+
// http://acces.ens-lyon.fr/biotic/rastop/help/colour.htm
|
|
49
|
+
'D': '#E60A0A',
|
|
50
|
+
'E': '#E60A0A',
|
|
51
|
+
'C': '#E6E600',
|
|
52
|
+
'M': '#E6E600',
|
|
53
|
+
'K': '#145AFF',
|
|
54
|
+
'R': '#145AFF',
|
|
55
|
+
'S': '#FA9600',
|
|
56
|
+
'T': '#FA9600',
|
|
57
|
+
'F': '#3232AA',
|
|
58
|
+
'Y': '#3232AA',
|
|
59
|
+
'N': '#00DCDC',
|
|
60
|
+
'Q': '#00DCDC',
|
|
61
|
+
'G': '#EBEBEB',
|
|
62
|
+
'L': '#0F820F',
|
|
63
|
+
'V': '#0F820F',
|
|
64
|
+
'I': '#0F820F',
|
|
65
|
+
'A': '#C8C8C8',
|
|
66
|
+
'W': '#B45AB4',
|
|
67
|
+
'H': '#8282D2',
|
|
68
|
+
'P': '#DC9682',
|
|
69
|
+
'others': '#BEA06E',
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
return this.rasMol;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
class Aminoacids {
|
|
76
|
+
static getPalette(scheme = 'grok') {
|
|
77
|
+
switch (scheme) {
|
|
78
|
+
case 'grok':
|
|
79
|
+
return AminoacidsPalettes.GrokGroups;
|
|
80
|
+
case 'lesk':
|
|
81
|
+
return AminoacidsPalettes.Lesk;
|
|
82
|
+
default:
|
|
83
|
+
throw new Error(`ChemPalette: scheme \`${scheme}\` does not exist`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Returns divided amino acid with its content in the bracket, if the content is number, then its omitted
|
|
88
|
+
*
|
|
89
|
+
* @param {string} c raw amino
|
|
90
|
+
* @return {[string, string]} outer and inner content
|
|
91
|
+
*/
|
|
92
|
+
static getInnerOuter(c) {
|
|
93
|
+
let isInner = 0;
|
|
94
|
+
let inner = '';
|
|
95
|
+
let outer = '';
|
|
96
|
+
for (const char of c) {
|
|
97
|
+
if (char == '(')
|
|
98
|
+
isInner++;
|
|
99
|
+
else if (char == ')')
|
|
100
|
+
isInner--;
|
|
101
|
+
else if (isInner)
|
|
102
|
+
inner += char;
|
|
103
|
+
else
|
|
104
|
+
outer += char;
|
|
105
|
+
}
|
|
106
|
+
return !isNaN(parseInt(inner)) ? [outer, ''] : [outer, inner];
|
|
107
|
+
}
|
|
108
|
+
static getColorAAPivot(monomer = '', scheme = 'grok') {
|
|
109
|
+
var _a, _b, _c;
|
|
110
|
+
//const chemPaletteInstance = AAPalettes.GrokGroups();
|
|
111
|
+
const chemPaletteInstance = this.getPalette(scheme);
|
|
112
|
+
let [outerMonomer, innerMonomer] = this.getInnerOuter(monomer);
|
|
113
|
+
outerMonomer = (outerMonomer.length > 6 ? `${outerMonomer.slice(0, 3)}...` : outerMonomer);
|
|
114
|
+
innerMonomer = (innerMonomer.length > 6 ? `${innerMonomer.slice(0, 3)}...` : innerMonomer);
|
|
115
|
+
if (monomer.length == 1 || monomer[1] == '(') {
|
|
116
|
+
const amino = (_a = monomer[0]) === null || _a === void 0 ? void 0 : _a.toUpperCase();
|
|
117
|
+
return amino in chemPaletteInstance ?
|
|
118
|
+
[chemPaletteInstance[amino], amino, innerMonomer, 1] :
|
|
119
|
+
[this.undefinedColor, outerMonomer, innerMonomer, 1];
|
|
120
|
+
}
|
|
121
|
+
if (monomer[0] == 'd' && monomer[1] in chemPaletteInstance) {
|
|
122
|
+
if (monomer.length == 2 || monomer[2] == '(') {
|
|
123
|
+
const amino = (_b = monomer[1]) === null || _b === void 0 ? void 0 : _b.toUpperCase();
|
|
124
|
+
return amino in chemPaletteInstance ?
|
|
125
|
+
[chemPaletteInstance[amino], amino, innerMonomer, 2] :
|
|
126
|
+
[this.undefinedColor, outerMonomer, innerMonomer, 2];
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
if (monomer.substring(0, 3) in this.AAFullNames) {
|
|
130
|
+
if (monomer.length == 3 || monomer[3] == '(') {
|
|
131
|
+
const amino = this.AAFullNames[monomer.substring(0, 3)];
|
|
132
|
+
return amino in chemPaletteInstance ?
|
|
133
|
+
[chemPaletteInstance[amino], amino, innerMonomer, 3] :
|
|
134
|
+
[this.undefinedColor, outerMonomer, innerMonomer, 3];
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
if (((_c = monomer[0]) === null || _c === void 0 ? void 0 : _c.toLowerCase()) == monomer[0]) {
|
|
138
|
+
if (monomer.substring(1, 3) in this.AAFullNames) {
|
|
139
|
+
if (monomer.length == 4 || monomer[4] == '(') {
|
|
140
|
+
const amino = this.AAFullNames[monomer.substring(1, 3)];
|
|
141
|
+
return amino in chemPaletteInstance ?
|
|
142
|
+
[chemPaletteInstance[amino], amino, innerMonomer, 4] :
|
|
143
|
+
[this.undefinedColor, outerMonomer, innerMonomer, 4];
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return [this.undefinedColor, outerMonomer, innerMonomer, 0];
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
Aminoacids.SemType = 'Aminoacids';
|
|
151
|
+
Aminoacids.SemTypeMultipleAlignment = 'AminoacidsMultipleAlignment';
|
|
152
|
+
Aminoacids.undefinedColor = 'rgb(100,100,100)';
|
|
153
|
+
Aminoacids.Names = {
|
|
154
|
+
'G': 'Glycine',
|
|
155
|
+
'L': 'Leucine',
|
|
156
|
+
'Y': 'Tyrosine',
|
|
157
|
+
'S': 'Serine',
|
|
158
|
+
'E': 'Glutamic acid',
|
|
159
|
+
'Q': 'Glutamine',
|
|
160
|
+
'D': 'Aspartic acid',
|
|
161
|
+
'N': 'Asparagine',
|
|
162
|
+
'F': 'Phenylalanine',
|
|
163
|
+
'A': 'Alanine',
|
|
164
|
+
'K': 'Lysine',
|
|
165
|
+
'R': 'Arginine',
|
|
166
|
+
'H': 'Histidine',
|
|
167
|
+
'C': 'Cysteine',
|
|
168
|
+
'V': 'Valine',
|
|
169
|
+
'P': 'Proline',
|
|
170
|
+
'W': 'Tryptophan',
|
|
171
|
+
'I': 'Isoleucine',
|
|
172
|
+
'M': 'Methionine',
|
|
173
|
+
'T': 'Threonine',
|
|
174
|
+
};
|
|
175
|
+
Aminoacids.AASmiles = {
|
|
176
|
+
'G': 'NCC(=O)O',
|
|
177
|
+
'L': 'N[C@H](CC(C)C)C(=O)O',
|
|
178
|
+
'Y': 'NC(CC1=CC=C(O)C=C1)C(=O)O',
|
|
179
|
+
'S': 'NC(CO)C(=O)O',
|
|
180
|
+
'E': 'N[C@@H](CCC(O)=O)C(=O)O',
|
|
181
|
+
'Q': 'N[C@@H](CCC(N)=O)C(=O)O',
|
|
182
|
+
'D': 'N[C@@H](CC(O)=O)C(=O)O',
|
|
183
|
+
'N': 'N[C@@H](CC(N)=O)C(=O)O',
|
|
184
|
+
'F': 'NC(CC1=CC=CC=C1)C(=O)O',
|
|
185
|
+
'A': 'N[C@H](C)C(=O)O',
|
|
186
|
+
'K': 'NC(CCCCN)C(=O)O',
|
|
187
|
+
'R': 'N[C@H](CCCNC(=N)C)C(=O)O',
|
|
188
|
+
'H': 'NC(CC1=CN=C[N]1)C(=O)O',
|
|
189
|
+
'C': 'N[C@@H](CS)C(=O)O',
|
|
190
|
+
'V': 'NC(C(C)C)C(=O)O',
|
|
191
|
+
'P': 'N(CCC1)C1C(=O)O',
|
|
192
|
+
'W': 'N[C@@H](Cc1c2ccccc2n([H])c1)C(=O)O',
|
|
193
|
+
'I': 'N[C@H]([C@H](C)CC)C(=O)O',
|
|
194
|
+
'M': 'NC(CCSC)C(=O)O',
|
|
195
|
+
'T': 'NC(C(O)C)C(=O)O',
|
|
196
|
+
};
|
|
197
|
+
Aminoacids.AASmilesTruncated = {
|
|
198
|
+
'G': '*C*',
|
|
199
|
+
'L': 'CC(C)C[C@H](*)*',
|
|
200
|
+
'Y': 'C1=CC(=CC=C1CC(*)*)O',
|
|
201
|
+
'S': 'OCC(*)C*',
|
|
202
|
+
'E': '*[C@@H](CCC(O)=O)*',
|
|
203
|
+
'Q': '*N[C@@H](CCC(N)=O)*',
|
|
204
|
+
'D': '*[C@@H](CC(O)=O)*',
|
|
205
|
+
'N': '*[C@@H](CC(N)=O)*',
|
|
206
|
+
'F': 'C1=CC=C(C=C1)CC(*)*',
|
|
207
|
+
'A': 'C[C@H](*)*',
|
|
208
|
+
'K': 'C(CCN)CC(*)*',
|
|
209
|
+
'R': '*[C@H](CCCNC(=N)C)*',
|
|
210
|
+
'H': 'C1=C(NC=N1)CC(*)*',
|
|
211
|
+
'C': 'C([C@@H](*)*)S',
|
|
212
|
+
'V': 'CC(C)C(*)*',
|
|
213
|
+
'P': 'C1CCN(*)C1*',
|
|
214
|
+
'W': '*[C@@H](Cc1c2ccccc2n([H])c1)*',
|
|
215
|
+
'I': 'CC[C@H](C)[C@H](*)*',
|
|
216
|
+
'M': 'CSCCC(*)*',
|
|
217
|
+
'T': 'CC(O)C(*)*',
|
|
218
|
+
};
|
|
219
|
+
/** TODO: Full?
|
|
220
|
+
*/
|
|
221
|
+
Aminoacids.AAFullNames = {
|
|
222
|
+
'Ala': 'A',
|
|
223
|
+
'Arg': 'R',
|
|
224
|
+
'Asn': 'N',
|
|
225
|
+
'Asp': 'D',
|
|
226
|
+
'Cys': 'C',
|
|
227
|
+
'Gln': 'Q',
|
|
228
|
+
'Glu': 'E',
|
|
229
|
+
'Gly': 'G',
|
|
230
|
+
'His': 'H',
|
|
231
|
+
'Ile': 'I',
|
|
232
|
+
'Leu': 'L',
|
|
233
|
+
'Lys': 'K',
|
|
234
|
+
'Met': 'M',
|
|
235
|
+
'Phe': 'F',
|
|
236
|
+
'Pro': 'P',
|
|
237
|
+
'Ser': 'S',
|
|
238
|
+
'Thr': 'T',
|
|
239
|
+
'Trp': 'W',
|
|
240
|
+
'Tyr': 'Y',
|
|
241
|
+
'Val': 'V',
|
|
242
|
+
};
|
|
243
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1pbm9hY2lkcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFtaW5vYWNpZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxFQUFhLGNBQWMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTFELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxjQUFjO0lBRzdDLE1BQU0sS0FBSyxJQUFJO1FBQ3BCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRTtZQUN4QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQzNCLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxRQUFRLENBQUM7Z0JBQ2hDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLFdBQVcsQ0FBQztnQkFDNUQsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsU0FBUyxDQUFDO2dCQUM1QixDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQztnQkFDbkIsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxVQUFVLENBQUM7YUFDekIsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUlNLE1BQU0sS0FBSyxVQUFVO1FBQzFCLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxLQUFLLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQ2pDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDO2dCQUN0QixDQUFDLENBQUMsR0FBRyxF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QUFFLGFBQWE7SUFDbEIsR0FBRyxFQUFFLCtCQUErQjtJQUNwQyxHQUFHLEVBQUUscUJBQXFCO0lBQzFCLEdBQUcsRUFBRSxXQUFXO0lBQ2hCLEdBQUcsRUFBRSxZQUFZO0NBQ2xCLENBQUM7QUFFRjtHQUNHO0FBQ1csc0JBQVcsR0FBcUI7SUFDNUMsS0FBSyxFQUFFLEdBQUc7SUFDVixLQUFLLEVBQUUsR0FBRztJQUNWLEtBQUssRUFBRSxHQUFHO0lBQ1YsS0FBSyxFQUFFLEdBQUc7SUFDVixLQUFLLEVBQUUsR0FBRztJQUNWLEtBQUssRUFBRSxHQUFHO0lBQ1YsS0FBSyxFQUFFLEdBQUc7SUFDVixLQUFLLEVBQUUsR0FBRztJQUNWLEtBQUssRUFBRSxHQUFHO0lBQ1YsS0FBSyxFQUFFLEdBQUc7SUFDVixLQUFLLEVBQUUsR0FBRztJQUNWLEtBQUssRUFBRSxHQUFHO0lBQ1YsS0FBSyxFQUFFLEdBQUc7SUFDVixLQUFLLEVBQUUsR0FBRztJQUNWLEtBQUssRUFBRSxHQUFHO0lBQ1YsS0FBSyxFQUFFLEdBQUc7SUFDVixLQUFLLEVBQUUsR0FBRztJQUNWLEtBQUssRUFBRSxHQUFHO0lBQ1YsS0FBSyxFQUFFLEdBQUc7SUFDVixLQUFLLEVBQUUsR0FBRztDQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuXG5pbXBvcnQge1N0cmluZ0RpY3Rpb25hcnl9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3R5cGUtZGVjbGFyYXRpb25zJztcbmltcG9ydCB7U2VxUGFsZXR0ZSwgU2VxUGFsZXR0ZUJhc2V9IGZyb20gJy4vc2VxLXBhbGV0dGVzJztcblxuZXhwb3J0IGNsYXNzIEFtaW5vYWNpZHNQYWxldHRlcyBleHRlbmRzIFNlcVBhbGV0dGVCYXNlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgbGVzazogU2VxUGFsZXR0ZTtcblxuICBwdWJsaWMgc3RhdGljIGdldCBMZXNrKCk6IFNlcVBhbGV0dGUge1xuICAgIGlmICh0aGlzLmxlc2sgPT09IHZvaWQgMCkge1xuICAgICAgdGhpcy5sZXNrID0gdGhpcy5tYWtlUGFsZXR0ZShbXG4gICAgICAgIFtbJ0cnLCAnQScsICdTJywgJ1QnXSwgJ29yYW5nZSddLFxuICAgICAgICBbWydDJywgJ1YnLCAnSScsICdMJywgJ1AnLCAnRicsICdZJywgJ00nLCAnVyddLCAnYWxsX2dyZWVuJ10sXG4gICAgICAgIFtbJ04nLCAnUScsICdIJ10sICdtYWdlbnRhJ10sXG4gICAgICAgIFtbJ0QnLCAnRSddLCAncmVkJ10sXG4gICAgICAgIFtbJ0snLCAnUiddLCAnYWxsX2JsdWUnXSxcbiAgICAgIF0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sZXNrO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ3Jva0dyb3VwczogU2VxUGFsZXR0ZTtcblxuICBwdWJsaWMgc3RhdGljIGdldCBHcm9rR3JvdXBzKCk6IFNlcVBhbGV0dGUge1xuICAgIGlmICh0aGlzLmdyb2tHcm91cHMgPT09IHZvaWQgMCkge1xuICAgICAgdGhpcy5ncm9rR3JvdXBzID0gdGhpcy5tYWtlUGFsZXR0ZShbXG4gICAgICAgIFtbJ0MnLCAnVSddLCAneWVsbG93J10sXG4gICAgICAgIFtbJ0cnLCAnUCddLCAncmVkJ10sXG4gICAgICAgIFtbJ0EnLCAnVicsICdJJywgJ0wnLCAnTScsICdGJywgJ1knLCAnVyddLCAnYWxsX2dyZWVuJ10sXG4gICAgICAgIFtbJ1InLCAnSCcsICdLJ10sICdsaWdodF9ibHVlJ10sXG4gICAgICAgIFtbJ0QnLCAnRSddLCAnZGFya19ibHVlJ10sXG4gICAgICAgIFtbJ1MnLCAnVCcsICdOJywgJ1EnXSwgJ29yYW5nZSddLFxuICAgICAgXSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdyb2tHcm91cHM7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyByYXNNb2w6IFNlcVBhbGV0dGU7XG5cbiAgcHVibGljIHN0YXRpYyBnZXQgUmFzTW9sKCk6IFNlcVBhbGV0dGUge1xuICAgIGlmICh0aGlzLnJhc01vbCA9PT0gdm9pZCAwKSB7XG4gICAgICB0aGlzLnJhc01vbCA9IHtcbiAgICAgICAgLy8gaHR0cDovL2FjY2VzLmVucy1seW9uLmZyL2Jpb3RpYy9yYXN0b3AvaGVscC9jb2xvdXIuaHRtXG4gICAgICAgICdEJzogJyNFNjBBMEEnLCAvLyBhc3AsIGFzcGFydGljIGFjaWQsIGFzcFxuICAgICAgICAnRSc6ICcjRTYwQTBBJywgLy8gZ2x1LCBnbHV0YW1pYyBhY2lkXG4gICAgICAgICdDJzogJyNFNkU2MDAnLCAvLyBjeXMsIGN5c3RlaW5lXG4gICAgICAgICdNJzogJyNFNkU2MDAnLCAvLyBtZXQsIG1ldGhpb25pbmVcbiAgICAgICAgJ0snOiAnIzE0NUFGRicsIC8vIGx5cywgbHlzaW5lXG4gICAgICAgICdSJzogJyMxNDVBRkYnLCAvLyBhcmcsIGFyZ2luaW5lXG4gICAgICAgICdTJzogJyNGQTk2MDAnLCAvLyBzZXIsIHNlcmluZVxuICAgICAgICAnVCc6ICcjRkE5NjAwJywgLy8gdGhyLCB0aHJlb25pbmVcbiAgICAgICAgJ0YnOiAnIzMyMzJBQScsIC8vIHBoZSwgcGhlbnlsYWxhbmluZVxuICAgICAgICAnWSc6ICcjMzIzMkFBJywgLy8gdHlyLCB0eXJvc2luZVxuICAgICAgICAnTic6ICcjMDBEQ0RDJywgLy8gYXNuLCBhc3BhcmFnaW5lXG4gICAgICAgICdRJzogJyMwMERDREMnLCAvLyBnbG4sIGdsdXRhbWluZVxuICAgICAgICAnRyc6ICcjRUJFQkVCJywgLy8gZ2x5LCBnbHljaW5lXG4gICAgICAgICdMJzogJyMwRjgyMEYnLCAvLyBsZXUsIGxldWNpbmVcbiAgICAgICAgJ1YnOiAnIzBGODIwRicsIC8vIHZhbCwgdmFsaW5lXG4gICAgICAgICdJJzogJyMwRjgyMEYnLCAvLyBpbGUsIGlzb2xldWNpbmVcbiAgICAgICAgJ0EnOiAnI0M4QzhDOCcsIC8vIGFsYSwgYWxhbmluZVxuICAgICAgICAnVyc6ICcjQjQ1QUI0JywgLy8gdHJwLCB0cnlwdG9waGFuXG4gICAgICAgICdIJzogJyM4MjgyRDInLCAvLyBoaXMsIGhpc3RpZGluZVxuICAgICAgICAnUCc6ICcjREM5NjgyJywgLy8gcHJvLCBwcm9saW5lXG4gICAgICAgICdvdGhlcnMnOiAnI0JFQTA2RScsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yYXNNb2w7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFtaW5vYWNpZHMge1xuICBzdGF0aWMgcmVhZG9ubHkgU2VtVHlwZTogc3RyaW5nID0gJ0FtaW5vYWNpZHMnO1xuXG4gIHN0YXRpYyByZWFkb25seSBTZW1UeXBlTXVsdGlwbGVBbGlnbm1lbnQ6IHN0cmluZyA9ICdBbWlub2FjaWRzTXVsdGlwbGVBbGlnbm1lbnQnO1xuXG4gIHN0YXRpYyB1bmRlZmluZWRDb2xvciA9ICdyZ2IoMTAwLDEwMCwxMDApJztcblxuICBwdWJsaWMgc3RhdGljIE5hbWVzOiBTdHJpbmdEaWN0aW9uYXJ5ID0ge1xuICAgICdHJzogJ0dseWNpbmUnLFxuICAgICdMJzogJ0xldWNpbmUnLFxuICAgICdZJzogJ1R5cm9zaW5lJyxcbiAgICAnUyc6ICdTZXJpbmUnLFxuICAgICdFJzogJ0dsdXRhbWljIGFjaWQnLFxuICAgICdRJzogJ0dsdXRhbWluZScsXG4gICAgJ0QnOiAnQXNwYXJ0aWMgYWNpZCcsXG4gICAgJ04nOiAnQXNwYXJhZ2luZScsXG4gICAgJ0YnOiAnUGhlbnlsYWxhbmluZScsXG4gICAgJ0EnOiAnQWxhbmluZScsXG4gICAgJ0snOiAnTHlzaW5lJyxcbiAgICAnUic6ICdBcmdpbmluZScsXG4gICAgJ0gnOiAnSGlzdGlkaW5lJyxcbiAgICAnQyc6ICdDeXN0ZWluZScsXG4gICAgJ1YnOiAnVmFsaW5lJyxcbiAgICAnUCc6ICdQcm9saW5lJyxcbiAgICAnVyc6ICdUcnlwdG9waGFuJyxcbiAgICAnSSc6ICdJc29sZXVjaW5lJyxcbiAgICAnTSc6ICdNZXRoaW9uaW5lJyxcbiAgICAnVCc6ICdUaHJlb25pbmUnLFxuICB9O1xuXG4gIHB1YmxpYyBzdGF0aWMgQUFTbWlsZXM6IFN0cmluZ0RpY3Rpb25hcnkgPSB7XG4gICAgJ0cnOiAnTkNDKD1PKU8nLFxuICAgICdMJzogJ05bQ0BIXShDQyhDKUMpQyg9TylPJyxcbiAgICAnWSc6ICdOQyhDQzE9Q0M9QyhPKUM9QzEpQyg9TylPJyxcbiAgICAnUyc6ICdOQyhDTylDKD1PKU8nLFxuICAgICdFJzogJ05bQ0BASF0oQ0NDKE8pPU8pQyg9TylPJyxcbiAgICAnUSc6ICdOW0NAQEhdKENDQyhOKT1PKUMoPU8pTycsXG4gICAgJ0QnOiAnTltDQEBIXShDQyhPKT1PKUMoPU8pTycsXG4gICAgJ04nOiAnTltDQEBIXShDQyhOKT1PKUMoPU8pTycsXG4gICAgJ0YnOiAnTkMoQ0MxPUNDPUNDPUMxKUMoPU8pTycsXG4gICAgJ0EnOiAnTltDQEhdKEMpQyg9TylPJyxcbiAgICAnSyc6ICdOQyhDQ0NDTilDKD1PKU8nLFxuICAgICdSJzogJ05bQ0BIXShDQ0NOQyg9TilDKUMoPU8pTycsXG4gICAgJ0gnOiAnTkMoQ0MxPUNOPUNbTl0xKUMoPU8pTycsXG4gICAgJ0MnOiAnTltDQEBIXShDUylDKD1PKU8nLFxuICAgICdWJzogJ05DKEMoQylDKUMoPU8pTycsXG4gICAgJ1AnOiAnTihDQ0MxKUMxQyg9TylPJyxcbiAgICAnVyc6ICdOW0NAQEhdKENjMWMyY2NjY2MybihbSF0pYzEpQyg9TylPJyxcbiAgICAnSSc6ICdOW0NASF0oW0NASF0oQylDQylDKD1PKU8nLFxuICAgICdNJzogJ05DKENDU0MpQyg9TylPJyxcbiAgICAnVCc6ICdOQyhDKE8pQylDKD1PKU8nLFxuICB9O1xuXG4gIHB1YmxpYyBzdGF0aWMgQUFTbWlsZXNUcnVuY2F0ZWQ6IFN0cmluZ0RpY3Rpb25hcnkgPSB7XG4gICAgJ0cnOiAnKkMqJyxcbiAgICAnTCc6ICdDQyhDKUNbQ0BIXSgqKSonLFxuICAgICdZJzogJ0MxPUNDKD1DQz1DMUNDKCopKilPJyxcbiAgICAnUyc6ICdPQ0MoKilDKicsXG4gICAgJ0UnOiAnKltDQEBIXShDQ0MoTyk9TykqJyxcbiAgICAnUSc6ICcqTltDQEBIXShDQ0MoTik9TykqJyxcbiAgICAnRCc6ICcqW0NAQEhdKENDKE8pPU8pKicsXG4gICAgJ04nOiAnKltDQEBIXShDQyhOKT1PKSonLFxuICAgICdGJzogJ0MxPUNDPUMoQz1DMSlDQygqKSonLFxuICAgICdBJzogJ0NbQ0BIXSgqKSonLFxuICAgICdLJzogJ0MoQ0NOKUNDKCopKicsXG4gICAgJ1InOiAnKltDQEhdKENDQ05DKD1OKUMpKicsXG4gICAgJ0gnOiAnQzE9QyhOQz1OMSlDQygqKSonLFxuICAgICdDJzogJ0MoW0NAQEhdKCopKilTJyxcbiAgICAnVic6ICdDQyhDKUMoKikqJyxcbiAgICAnUCc6ICdDMUNDTigqKUMxKicsXG4gICAgJ1cnOiAnKltDQEBIXShDYzFjMmNjY2NjMm4oW0hdKWMxKSonLFxuICAgICdJJzogJ0NDW0NASF0oQylbQ0BIXSgqKSonLFxuICAgICdNJzogJ0NTQ0NDKCopKicsXG4gICAgJ1QnOiAnQ0MoTylDKCopKicsXG4gIH07XG5cbiAgLyoqIFRPRE86IEZ1bGw/XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIEFBRnVsbE5hbWVzOiBTdHJpbmdEaWN0aW9uYXJ5ID0ge1xuICAgICdBbGEnOiAnQScsXG4gICAgJ0FyZyc6ICdSJyxcbiAgICAnQXNuJzogJ04nLFxuICAgICdBc3AnOiAnRCcsXG4gICAgJ0N5cyc6ICdDJyxcbiAgICAnR2xuJzogJ1EnLFxuICAgICdHbHUnOiAnRScsXG4gICAgJ0dseSc6ICdHJyxcbiAgICAnSGlzJzogJ0gnLFxuICAgICdJbGUnOiAnSScsXG4gICAgJ0xldSc6ICdMJyxcbiAgICAnTHlzJzogJ0snLFxuICAgICdNZXQnOiAnTScsXG4gICAgJ1BoZSc6ICdGJyxcbiAgICAnUHJvJzogJ1AnLFxuICAgICdTZXInOiAnUycsXG4gICAgJ1Rocic6ICdUJyxcbiAgICAnVHJwJzogJ1cnLFxuICAgICdUeXInOiAnWScsXG4gICAgJ1ZhbCc6ICdWJyxcbiAgfTtcblxuICBwdWJsaWMgc3RhdGljIGdldFBhbGV0dGUoc2NoZW1lOiBzdHJpbmcgPSAnZ3JvaycpOiBTZXFQYWxldHRlIHtcbiAgICBzd2l0Y2ggKHNjaGVtZSkge1xuICAgIGNhc2UgJ2dyb2snOlxuICAgICAgcmV0dXJuIEFtaW5vYWNpZHNQYWxldHRlcy5Hcm9rR3JvdXBzO1xuICAgIGNhc2UgJ2xlc2snOlxuICAgICAgcmV0dXJuIEFtaW5vYWNpZHNQYWxldHRlcy5MZXNrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENoZW1QYWxldHRlOiBzY2hlbWUgXFxgJHtzY2hlbWV9XFxgIGRvZXMgbm90IGV4aXN0YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgZGl2aWRlZCBhbWlubyBhY2lkIHdpdGggaXRzIGNvbnRlbnQgaW4gdGhlIGJyYWNrZXQsIGlmIHRoZSBjb250ZW50IGlzIG51bWJlciwgdGhlbiBpdHMgb21pdHRlZFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYyByYXcgYW1pbm9cbiAgICogQHJldHVybiB7W3N0cmluZywgc3RyaW5nXX0gb3V0ZXIgYW5kIGlubmVyIGNvbnRlbnRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0SW5uZXJPdXRlcihjOiBzdHJpbmcpOiBbc3RyaW5nLCBzdHJpbmddIHtcbiAgICBsZXQgaXNJbm5lciA9IDA7XG4gICAgbGV0IGlubmVyID0gJyc7XG4gICAgbGV0IG91dGVyID0gJyc7XG5cbiAgICBmb3IgKGNvbnN0IGNoYXIgb2YgYykge1xuICAgICAgaWYgKGNoYXIgPT0gJygnKVxuICAgICAgICBpc0lubmVyKys7XG4gICAgICBlbHNlIGlmIChjaGFyID09ICcpJylcbiAgICAgICAgaXNJbm5lci0tO1xuICAgICAgZWxzZSBpZiAoaXNJbm5lcilcbiAgICAgICAgaW5uZXIgKz0gY2hhcjtcbiAgICAgIGVsc2VcbiAgICAgICAgb3V0ZXIgKz0gY2hhcjtcbiAgICB9XG5cbiAgICByZXR1cm4gIWlzTmFOKHBhcnNlSW50KGlubmVyKSkgPyBbb3V0ZXIsICcnXSA6IFtvdXRlciwgaW5uZXJdO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRDb2xvckFBUGl2b3QobW9ub21lcjogc3RyaW5nID0gJycsIHNjaGVtZTogJ2dyb2snID0gJ2dyb2snKTogW3N0cmluZywgc3RyaW5nLCBzdHJpbmcsIG51bWJlcl0ge1xuICAgIC8vY29uc3QgY2hlbVBhbGV0dGVJbnN0YW5jZSA9IEFBUGFsZXR0ZXMuR3Jva0dyb3VwcygpO1xuICAgIGNvbnN0IGNoZW1QYWxldHRlSW5zdGFuY2UgPSB0aGlzLmdldFBhbGV0dGUoc2NoZW1lKTtcbiAgICBsZXQgW291dGVyTW9ub21lciwgaW5uZXJNb25vbWVyXSA9IHRoaXMuZ2V0SW5uZXJPdXRlcihtb25vbWVyKTtcbiAgICBvdXRlck1vbm9tZXIgPSAob3V0ZXJNb25vbWVyLmxlbmd0aCA+IDYgPyBgJHtvdXRlck1vbm9tZXIuc2xpY2UoMCwgMyl9Li4uYCA6IG91dGVyTW9ub21lcik7XG4gICAgaW5uZXJNb25vbWVyID0gKGlubmVyTW9ub21lci5sZW5ndGggPiA2ID8gYCR7aW5uZXJNb25vbWVyLnNsaWNlKDAsIDMpfS4uLmAgOiBpbm5lck1vbm9tZXIpO1xuXG4gICAgaWYgKG1vbm9tZXIubGVuZ3RoID09IDEgfHwgbW9ub21lclsxXSA9PSAnKCcpIHtcbiAgICAgIGNvbnN0IGFtaW5vID0gbW9ub21lclswXT8udG9VcHBlckNhc2UoKSE7XG4gICAgICByZXR1cm4gYW1pbm8gaW4gY2hlbVBhbGV0dGVJbnN0YW5jZSA/XG4gICAgICAgIFtjaGVtUGFsZXR0ZUluc3RhbmNlW2FtaW5vXSwgYW1pbm8sIGlubmVyTW9ub21lciwgMV0gOlxuICAgICAgICBbdGhpcy51bmRlZmluZWRDb2xvciwgb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXIsIDFdO1xuICAgIH1cblxuICAgIGlmIChtb25vbWVyWzBdID09ICdkJyAmJiBtb25vbWVyWzFdISBpbiBjaGVtUGFsZXR0ZUluc3RhbmNlKSB7XG4gICAgICBpZiAobW9ub21lci5sZW5ndGggPT0gMiB8fCBtb25vbWVyWzJdID09ICcoJykge1xuICAgICAgICBjb25zdCBhbWlubyA9IG1vbm9tZXJbMV0/LnRvVXBwZXJDYXNlKCkhO1xuICAgICAgICByZXR1cm4gYW1pbm8gaW4gY2hlbVBhbGV0dGVJbnN0YW5jZSA/XG4gICAgICAgICAgW2NoZW1QYWxldHRlSW5zdGFuY2VbYW1pbm9dLCBhbWlubywgaW5uZXJNb25vbWVyLCAyXSA6XG4gICAgICAgICAgW3RoaXMudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCAyXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9ub21lci5zdWJzdHJpbmcoMCwgMykgaW4gdGhpcy5BQUZ1bGxOYW1lcykge1xuICAgICAgaWYgKG1vbm9tZXIubGVuZ3RoID09IDMgfHwgbW9ub21lclszXSA9PSAnKCcpIHtcbiAgICAgICAgY29uc3QgYW1pbm8gPSB0aGlzLkFBRnVsbE5hbWVzW21vbm9tZXIuc3Vic3RyaW5nKDAsIDMpXTtcbiAgICAgICAgcmV0dXJuIGFtaW5vIGluIGNoZW1QYWxldHRlSW5zdGFuY2UgP1xuICAgICAgICAgIFtjaGVtUGFsZXR0ZUluc3RhbmNlW2FtaW5vXSwgYW1pbm8sIGlubmVyTW9ub21lciwgM10gOlxuICAgICAgICAgIFt0aGlzLnVuZGVmaW5lZENvbG9yLCBvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lciwgM107XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1vbm9tZXJbMF0/LnRvTG93ZXJDYXNlKCkgPT0gbW9ub21lclswXSkge1xuICAgICAgaWYgKG1vbm9tZXIuc3Vic3RyaW5nKDEsIDMpIGluIHRoaXMuQUFGdWxsTmFtZXMpIHtcbiAgICAgICAgaWYgKG1vbm9tZXIubGVuZ3RoID09IDQgfHwgbW9ub21lcls0XSA9PSAnKCcpIHtcbiAgICAgICAgICBjb25zdCBhbWlubyA9IHRoaXMuQUFGdWxsTmFtZXNbbW9ub21lci5zdWJzdHJpbmcoMSwgMyldO1xuICAgICAgICAgIHJldHVybiBhbWlubyBpbiBjaGVtUGFsZXR0ZUluc3RhbmNlID9cbiAgICAgICAgICAgIFtjaGVtUGFsZXR0ZUluc3RhbmNlW2FtaW5vXSwgYW1pbm8sIGlubmVyTW9ub21lciwgNF0gOlxuICAgICAgICAgICAgW3RoaXMudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCA0XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBbdGhpcy51bmRlZmluZWRDb2xvciwgb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXIsIDBdO1xuICB9XG59XG4iXX0=
|
|
244
|
+
|
|
245
|
+
/***/ }),
|
|
246
|
+
|
|
247
|
+
/***/ "./node_modules/@datagrok-libraries/bio/src/nucleotides.js":
|
|
248
|
+
/*!*****************************************************************!*\
|
|
249
|
+
!*** ./node_modules/@datagrok-libraries/bio/src/nucleotides.js ***!
|
|
250
|
+
\*****************************************************************/
|
|
251
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
252
|
+
|
|
253
|
+
__webpack_require__.r(__webpack_exports__);
|
|
254
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
255
|
+
/* harmony export */ "Nucleotides": () => (/* binding */ Nucleotides),
|
|
256
|
+
/* harmony export */ "NucleotidesPalettes": () => (/* binding */ NucleotidesPalettes)
|
|
257
|
+
/* harmony export */ });
|
|
258
|
+
/* harmony import */ var _seq_palettes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./seq-palettes */ "./node_modules/@datagrok-libraries/bio/src/seq-palettes.js");
|
|
259
|
+
|
|
260
|
+
class NucleotidesPalettes extends _seq_palettes__WEBPACK_IMPORTED_MODULE_0__.SeqPaletteBase {
|
|
261
|
+
static get Chromatogram() {
|
|
262
|
+
if (this.chromatogram === void 0) {
|
|
263
|
+
this.chromatogram = {
|
|
264
|
+
'A': 'green',
|
|
265
|
+
'C': 'blue',
|
|
266
|
+
'G': 'black',
|
|
267
|
+
'T': 'red', 'U': 'red',
|
|
268
|
+
'others': 'gray',
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
return this.chromatogram;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
class Nucleotides {
|
|
275
|
+
}
|
|
276
|
+
Nucleotides.SemType = 'MultipleAlignment';
|
|
277
|
+
Nucleotides.SemTypeMultipleAlignment = 'NucleotidesMultipleAlignment';
|
|
278
|
+
Nucleotides.Names = {
|
|
279
|
+
'A': 'Adenine',
|
|
280
|
+
'C': 'Cytosine',
|
|
281
|
+
'G': 'Guanine',
|
|
282
|
+
'T': 'Thymine',
|
|
283
|
+
'U': 'Uracil',
|
|
284
|
+
};
|
|
285
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVjbGVvdGlkZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJudWNsZW90aWRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxPQUFPLEVBQWEsY0FBYyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUQsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGNBQWM7SUFHOUMsTUFBTSxLQUFLLFlBQVk7UUFDNUIsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLEtBQUssQ0FBQyxFQUFFO1lBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUc7Z0JBQ2xCLEdBQUcsRUFBRSxPQUFPO2dCQUNaLEdBQUcsRUFBRSxNQUFNO2dCQUNYLEdBQUcsRUFBRSxPQUFPO2dCQUNaLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUs7Z0JBQ3RCLFFBQVEsRUFBRSxNQUFNO2FBQ2pCLENBQUM7U0FDSDtRQUNELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sV0FBVzs7QUFDTixtQkFBTyxHQUFXLG1CQUFtQixDQUFDO0FBRXRDLG9DQUF3QixHQUFXLDhCQUE4QixDQUFDO0FBRXBFLGlCQUFLLEdBQXFCO0lBQ3RDLEdBQUcsRUFBRSxTQUFTO0lBQ2QsR0FBRyxFQUFFLFVBQVU7SUFDZixHQUFHLEVBQUUsU0FBUztJQUNkLEdBQUcsRUFBRSxTQUFTO0lBQ2QsR0FBRyxFQUFFLFFBQVE7Q0FDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcblxuaW1wb3J0IHtTdHJpbmdEaWN0aW9uYXJ5fSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy90eXBlLWRlY2xhcmF0aW9ucyc7XG5pbXBvcnQge1NlcVBhbGV0dGUsIFNlcVBhbGV0dGVCYXNlfSBmcm9tICcuL3NlcS1wYWxldHRlcyc7XG5cbmV4cG9ydCBjbGFzcyBOdWNsZW90aWRlc1BhbGV0dGVzIGV4dGVuZHMgU2VxUGFsZXR0ZUJhc2Uge1xuICBwcml2YXRlIHN0YXRpYyBjaHJvbWF0b2dyYW06IFNlcVBhbGV0dGU7XG5cbiAgcHVibGljIHN0YXRpYyBnZXQgQ2hyb21hdG9ncmFtKCk6IFNlcVBhbGV0dGUge1xuICAgIGlmICh0aGlzLmNocm9tYXRvZ3JhbSA9PT0gdm9pZCAwKSB7XG4gICAgICB0aGlzLmNocm9tYXRvZ3JhbSA9IHtcbiAgICAgICAgJ0EnOiAnZ3JlZW4nLFxuICAgICAgICAnQyc6ICdibHVlJyxcbiAgICAgICAgJ0cnOiAnYmxhY2snLCAvLyBvcmFuZ2UgP1xuICAgICAgICAnVCc6ICdyZWQnLCAnVSc6ICdyZWQnLFxuICAgICAgICAnb3RoZXJzJzogJ2dyYXknLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2hyb21hdG9ncmFtO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOdWNsZW90aWRlcyB7XG4gIHN0YXRpYyByZWFkb25seSBTZW1UeXBlOiBzdHJpbmcgPSAnTXVsdGlwbGVBbGlnbm1lbnQnO1xuXG4gIHN0YXRpYyByZWFkb25seSBTZW1UeXBlTXVsdGlwbGVBbGlnbm1lbnQ6IHN0cmluZyA9ICdOdWNsZW90aWRlc011bHRpcGxlQWxpZ25tZW50JztcblxuICBwdWJsaWMgc3RhdGljIE5hbWVzOiBTdHJpbmdEaWN0aW9uYXJ5ID0ge1xuICAgICdBJzogJ0FkZW5pbmUnLFxuICAgICdDJzogJ0N5dG9zaW5lJyxcbiAgICAnRyc6ICdHdWFuaW5lJyxcbiAgICAnVCc6ICdUaHltaW5lJyxcbiAgICAnVSc6ICdVcmFjaWwnLFxuICB9O1xufVxuIl19
|
|
286
|
+
|
|
287
|
+
/***/ }),
|
|
288
|
+
|
|
289
|
+
/***/ "./node_modules/@datagrok-libraries/bio/src/seq-palettes.js":
|
|
290
|
+
/*!******************************************************************!*\
|
|
291
|
+
!*** ./node_modules/@datagrok-libraries/bio/src/seq-palettes.js ***!
|
|
292
|
+
\******************************************************************/
|
|
293
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
294
|
+
|
|
295
|
+
__webpack_require__.r(__webpack_exports__);
|
|
296
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
297
|
+
/* harmony export */ "SeqPaletteBase": () => (/* binding */ SeqPaletteBase)
|
|
298
|
+
/* harmony export */ });
|
|
299
|
+
class SeqPaletteBase {
|
|
300
|
+
static makePalette(dt, simplified = false) {
|
|
301
|
+
const palette = {};
|
|
302
|
+
dt.forEach((cp) => {
|
|
303
|
+
const objList = cp[0];
|
|
304
|
+
const colour = cp[1];
|
|
305
|
+
objList.forEach((obj, ind) => {
|
|
306
|
+
palette[obj] = this.colourPalette[colour][simplified ? 0 : ind];
|
|
307
|
+
});
|
|
308
|
+
});
|
|
309
|
+
return palette;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
/** Palette with shades of primary colors
|
|
313
|
+
*/
|
|
314
|
+
SeqPaletteBase.colourPalette = {
|
|
315
|
+
'orange': ['rgb(255,187,120)', 'rgb(245,167,100)', 'rgb(235,137,70)', 'rgb(205, 111, 71)'],
|
|
316
|
+
'all_green': ['rgb(44,160,44)', 'rgb(74,160,74)', 'rgb(23,103,57)', 'rgb(30,110,96)', 'rgb(60,131,95)',
|
|
317
|
+
'rgb(24,110,79)', 'rgb(152,223,138)', 'rgb(182, 223, 138)', 'rgb(152, 193, 138)'],
|
|
318
|
+
'all_blue': ['rgb(31,119,180)', 'rgb(23,190,207)', 'rgb(122, 102, 189)', 'rgb(158,218,229)', 'rgb(141, 124, 217)',
|
|
319
|
+
'rgb(31, 120, 150)'],
|
|
320
|
+
'magenta': ['rgb(162,106,192)', 'rgb(197,165,224)', 'rgb(208,113,218)'],
|
|
321
|
+
'red': ['rgb(214,39,40)', 'rgb(255,152,150)'],
|
|
322
|
+
'st_blue': ['rgb(23,190,207)', 'rgb(158,218,229)', 'rgb(31,119,180)'],
|
|
323
|
+
'dark_blue': ['rgb(31,119,180)', 'rgb(31, 120, 150)'],
|
|
324
|
+
'light_blue': ['rgb(23,190,207)', 'rgb(158,218,229)', 'rgb(108, 218, 229)', 'rgb(23,190,227)'],
|
|
325
|
+
'lilac_blue': ['rgb(124,102,211)', 'rgb(149,134,217)', 'rgb(97, 81, 150)'],
|
|
326
|
+
'dark_green': ['rgb(23,103,57)', 'rgb(30,110,96)', 'rgb(60,131,95)', 'rgb(24,110,79)'],
|
|
327
|
+
'green': ['rgb(44,160,44)', 'rgb(74,160,74)'],
|
|
328
|
+
'light_green': ['rgb(152,223,138)', 'rgb(182, 223, 138)', 'rgb(152, 193, 138)'],
|
|
329
|
+
'st_green': ['rgb(44,160,44)', 'rgb(152,223,138)', 'rgb(39, 174, 96)', 'rgb(74,160,74)'],
|
|
330
|
+
'pink': ['rgb(247,182,210)'],
|
|
331
|
+
'brown': ['rgb(140,86,75)', 'rgb(102, 62, 54)'],
|
|
332
|
+
'gray': ['rgb(127,127,127)', 'rgb(199,199,199)', 'rgb(196,156,148)', 'rgb(222, 222, 180)'],
|
|
333
|
+
'yellow': ['rgb(188,189,34)'],
|
|
334
|
+
'white': ['rgb(230,230,230)'],
|
|
335
|
+
};
|
|
336
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VxLXBhbGV0dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2VxLXBhbGV0dGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE1BQU0sT0FBTyxjQUFjO0lBMEJmLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBd0IsRUFBRSxVQUFVLEdBQUcsS0FBSztRQUN2RSxNQUFNLE9BQU8sR0FBOEIsRUFBRSxDQUFDO1FBQzlDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUNoQixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JCLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7Z0JBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsRSxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQzs7QUFuQ0Q7R0FDRztBQUNZLDRCQUFhLEdBQWdDO0lBQzFELFFBQVEsRUFBRSxDQUFDLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixDQUFDO0lBQzFGLFdBQVcsRUFBRSxDQUFDLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLGdCQUFnQjtRQUNwRyxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxvQkFBb0IsQ0FBQztJQUNuRixVQUFVLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0I7UUFDL0csbUJBQW1CLENBQUM7SUFDdEIsU0FBUyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLENBQUM7SUFDdkUsS0FBSyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUM7SUFDN0MsU0FBUyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLENBQUM7SUFDckUsV0FBVyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsbUJBQW1CLENBQUM7SUFDckQsWUFBWSxFQUFFLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLENBQUM7SUFDOUYsWUFBWSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLENBQUM7SUFDMUUsWUFBWSxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUM7SUFDdEYsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUM7SUFDN0MsYUFBYSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsb0JBQW9CLENBQUM7SUFDL0UsVUFBVSxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLENBQUM7SUFDeEYsTUFBTSxFQUFFLENBQUMsa0JBQWtCLENBQUM7SUFDNUIsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUM7SUFDL0MsTUFBTSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLENBQUM7SUFDMUYsUUFBUSxFQUFFLENBQUMsaUJBQWlCLENBQUM7SUFDN0IsT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7Q0FDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VxUGFsZXR0ZSB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbSBNb25vbWVyIGNoYXJhY3RlclxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IENvbG9yXG4gICAqL1xuICBbbTogc3RyaW5nXTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgU2VxUGFsZXR0ZUJhc2Uge1xuICAvKiogUGFsZXR0ZSB3aXRoIHNoYWRlcyBvZiBwcmltYXJ5IGNvbG9yc1xuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgY29sb3VyUGFsZXR0ZTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9ID0ge1xuICAgICdvcmFuZ2UnOiBbJ3JnYigyNTUsMTg3LDEyMCknLCAncmdiKDI0NSwxNjcsMTAwKScsICdyZ2IoMjM1LDEzNyw3MCknLCAncmdiKDIwNSwgMTExLCA3MSknXSxcbiAgICAnYWxsX2dyZWVuJzogWydyZ2IoNDQsMTYwLDQ0KScsICdyZ2IoNzQsMTYwLDc0KScsICdyZ2IoMjMsMTAzLDU3KScsICdyZ2IoMzAsMTEwLDk2KScsICdyZ2IoNjAsMTMxLDk1KScsXG4gICAgICAncmdiKDI0LDExMCw3OSknLCAncmdiKDE1MiwyMjMsMTM4KScsICdyZ2IoMTgyLCAyMjMsIDEzOCknLCAncmdiKDE1MiwgMTkzLCAxMzgpJ10sXG4gICAgJ2FsbF9ibHVlJzogWydyZ2IoMzEsMTE5LDE4MCknLCAncmdiKDIzLDE5MCwyMDcpJywgJ3JnYigxMjIsIDEwMiwgMTg5KScsICdyZ2IoMTU4LDIxOCwyMjkpJywgJ3JnYigxNDEsIDEyNCwgMjE3KScsXG4gICAgICAncmdiKDMxLCAxMjAsIDE1MCknXSxcbiAgICAnbWFnZW50YSc6IFsncmdiKDE2MiwxMDYsMTkyKScsICdyZ2IoMTk3LDE2NSwyMjQpJywgJ3JnYigyMDgsMTEzLDIxOCknXSxcbiAgICAncmVkJzogWydyZ2IoMjE0LDM5LDQwKScsICdyZ2IoMjU1LDE1MiwxNTApJ10sXG4gICAgJ3N0X2JsdWUnOiBbJ3JnYigyMywxOTAsMjA3KScsICdyZ2IoMTU4LDIxOCwyMjkpJywgJ3JnYigzMSwxMTksMTgwKSddLFxuICAgICdkYXJrX2JsdWUnOiBbJ3JnYigzMSwxMTksMTgwKScsICdyZ2IoMzEsIDEyMCwgMTUwKSddLFxuICAgICdsaWdodF9ibHVlJzogWydyZ2IoMjMsMTkwLDIwNyknLCAncmdiKDE1OCwyMTgsMjI5KScsICdyZ2IoMTA4LCAyMTgsIDIyOSknLCAncmdiKDIzLDE5MCwyMjcpJ10sXG4gICAgJ2xpbGFjX2JsdWUnOiBbJ3JnYigxMjQsMTAyLDIxMSknLCAncmdiKDE0OSwxMzQsMjE3KScsICdyZ2IoOTcsIDgxLCAxNTApJ10sXG4gICAgJ2RhcmtfZ3JlZW4nOiBbJ3JnYigyMywxMDMsNTcpJywgJ3JnYigzMCwxMTAsOTYpJywgJ3JnYig2MCwxMzEsOTUpJywgJ3JnYigyNCwxMTAsNzkpJ10sXG4gICAgJ2dyZWVuJzogWydyZ2IoNDQsMTYwLDQ0KScsICdyZ2IoNzQsMTYwLDc0KSddLFxuICAgICdsaWdodF9ncmVlbic6IFsncmdiKDE1MiwyMjMsMTM4KScsICdyZ2IoMTgyLCAyMjMsIDEzOCknLCAncmdiKDE1MiwgMTkzLCAxMzgpJ10sXG4gICAgJ3N0X2dyZWVuJzogWydyZ2IoNDQsMTYwLDQ0KScsICdyZ2IoMTUyLDIyMywxMzgpJywgJ3JnYigzOSwgMTc0LCA5NiknLCAncmdiKDc0LDE2MCw3NCknXSxcbiAgICAncGluayc6IFsncmdiKDI0NywxODIsMjEwKSddLFxuICAgICdicm93bic6IFsncmdiKDE0MCw4Niw3NSknLCAncmdiKDEwMiwgNjIsIDU0KSddLFxuICAgICdncmF5JzogWydyZ2IoMTI3LDEyNywxMjcpJywgJ3JnYigxOTksMTk5LDE5OSknLCAncmdiKDE5NiwxNTYsMTQ4KScsICdyZ2IoMjIyLCAyMjIsIDE4MCknXSxcbiAgICAneWVsbG93JzogWydyZ2IoMTg4LDE4OSwzNCknXSxcbiAgICAnd2hpdGUnOiBbJ3JnYigyMzAsMjMwLDIzMCknXSxcbiAgfTtcblxuICBwcm90ZWN0ZWQgc3RhdGljIG1ha2VQYWxldHRlKGR0OiBbc3RyaW5nW10sIHN0cmluZ11bXSwgc2ltcGxpZmllZCA9IGZhbHNlKSB7XG4gICAgY29uc3QgcGFsZXR0ZTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICAgIGR0LmZvckVhY2goKGNwKSA9PiB7XG4gICAgICBjb25zdCBvYmpMaXN0ID0gY3BbMF07XG4gICAgICBjb25zdCBjb2xvdXIgPSBjcFsxXTtcbiAgICAgIG9iakxpc3QuZm9yRWFjaCgob2JqLCBpbmQpID0+IHtcbiAgICAgICAgcGFsZXR0ZVtvYmpdID0gdGhpcy5jb2xvdXJQYWxldHRlW2NvbG91cl1bc2ltcGxpZmllZCA/IDAgOiBpbmRdO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHBhbGV0dGU7XG4gIH1cbn1cbiJdfQ==
|
|
337
|
+
|
|
338
|
+
/***/ }),
|
|
339
|
+
|
|
340
|
+
/***/ "./node_modules/@datagrok-libraries/bio/src/viewers/web-logo.js":
|
|
341
|
+
/*!**********************************************************************!*\
|
|
342
|
+
!*** ./node_modules/@datagrok-libraries/bio/src/viewers/web-logo.js ***!
|
|
343
|
+
\**********************************************************************/
|
|
344
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
345
|
+
|
|
346
|
+
__webpack_require__.r(__webpack_exports__);
|
|
347
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
348
|
+
/* harmony export */ "PositionInfo": () => (/* binding */ PositionInfo),
|
|
349
|
+
/* harmony export */ "PositionMonomerInfo": () => (/* binding */ PositionMonomerInfo),
|
|
350
|
+
/* harmony export */ "WebLogo": () => (/* binding */ WebLogo)
|
|
351
|
+
/* harmony export */ });
|
|
352
|
+
/* harmony import */ var datagrok_api_ui__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! datagrok-api/ui */ "datagrok-api/ui");
|
|
353
|
+
/* harmony import */ var datagrok_api_ui__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(datagrok_api_ui__WEBPACK_IMPORTED_MODULE_0__);
|
|
354
|
+
/* harmony import */ var datagrok_api_dg__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! datagrok-api/dg */ "datagrok-api/dg");
|
|
355
|
+
/* harmony import */ var datagrok_api_dg__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(datagrok_api_dg__WEBPACK_IMPORTED_MODULE_1__);
|
|
356
|
+
/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs */ "rxjs");
|
|
357
|
+
/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_2__);
|
|
358
|
+
/* harmony import */ var _aminoacids__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../aminoacids */ "./node_modules/@datagrok-libraries/bio/src/aminoacids.js");
|
|
359
|
+
/* harmony import */ var _nucleotides__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../nucleotides */ "./node_modules/@datagrok-libraries/bio/src/nucleotides.js");
|
|
360
|
+
var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
361
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
362
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
363
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
364
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
365
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
366
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
367
|
+
});
|
|
368
|
+
};
|
|
369
|
+
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
HTMLCanvasElement.prototype.getCursorPosition = function (event) {
|
|
375
|
+
const rect = this.getBoundingClientRect();
|
|
376
|
+
return new datagrok_api_dg__WEBPACK_IMPORTED_MODULE_1__.Point(event.clientX - rect.left, event.clientY - rect.top);
|
|
377
|
+
};
|
|
378
|
+
datagrok_api_dg__WEBPACK_IMPORTED_MODULE_1__.Rect.prototype.contains = function (x, y) {
|
|
379
|
+
return this.left <= x && x <= this.right && this.top <= y && y <= this.bottom;
|
|
380
|
+
};
|
|
381
|
+
class PositionMonomerInfo {
|
|
382
|
+
constructor() {
|
|
383
|
+
this.count = 0;
|
|
384
|
+
this.bounds = new datagrok_api_dg__WEBPACK_IMPORTED_MODULE_1__.Rect(0, 0, 0, 0);
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
class PositionInfo {
|
|
388
|
+
/** freq = {}, rowCount = 0
|
|
389
|
+
* @param {string} name Name of position ('111A', '111.1', etc)
|
|
390
|
+
*/
|
|
391
|
+
constructor(name) {
|
|
392
|
+
this.name = name;
|
|
393
|
+
this.freq = {};
|
|
394
|
+
this.rowCount = 0;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
class WebLogo extends datagrok_api_dg__WEBPACK_IMPORTED_MODULE_1__.JsViewer {
|
|
398
|
+
constructor() {
|
|
399
|
+
super();
|
|
400
|
+
// private readonly colorScheme: ColorScheme = ColorSchemes[NucleotidesWebLogo.residuesSet];
|
|
401
|
+
this.cp = null;
|
|
402
|
+
this.axisHeight = 12;
|
|
403
|
+
this.seqCol = null;
|
|
404
|
+
// private maxLength: number = 100;
|
|
405
|
+
this.positions = [];
|
|
406
|
+
this.rowsMasked = 0;
|
|
407
|
+
this.rowsNull = 0;
|
|
408
|
+
this.positionNames = [];
|
|
409
|
+
this.startPosition = -1;
|
|
410
|
+
this.endPosition = -1;
|
|
411
|
+
this.textBaseline = 'top';
|
|
412
|
+
this.positionWidth = this.float('positionWidth', 16);
|
|
413
|
+
this.minHeight = this.float('minHeight', 50);
|
|
414
|
+
this.maxHeight = this.float('maxHeight', 100);
|
|
415
|
+
this.considerNullSequences = this.bool('considerNullSequences', false);
|
|
416
|
+
this.sequenceColumnName = this.string('sequenceColumnName', null);
|
|
417
|
+
this.startPositionName = this.string('startPositionName', null);
|
|
418
|
+
this.endPositionName = this.string('endPositionName', null);
|
|
419
|
+
}
|
|
420
|
+
/** For startPosition equals to endPosition Length is 1 */
|
|
421
|
+
get Length() {
|
|
422
|
+
return this.startPosition <= this.endPosition ? this.endPosition - this.startPosition + 1 : 0;
|
|
423
|
+
}
|
|
424
|
+
init() {
|
|
425
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
426
|
+
this.msgHost = datagrok_api_ui__WEBPACK_IMPORTED_MODULE_0__.div('No message');
|
|
427
|
+
this.msgHost.style.display = 'none';
|
|
428
|
+
this.canvas = datagrok_api_ui__WEBPACK_IMPORTED_MODULE_0__.canvas();
|
|
429
|
+
this.canvas.style.width = '100%';
|
|
430
|
+
// this.slider = ui.rangeSlider(0, 20, 2, 5);
|
|
431
|
+
// this.slider.root.style.width = '100%';
|
|
432
|
+
// this.slider.root.style.height = '12px';
|
|
433
|
+
// this.host = ui.divV([/*this.slider,*/this.canvas]);
|
|
434
|
+
const getMonomer = (p) => {
|
|
435
|
+
const jPos = Math.floor(p.x / this.positionWidth);
|
|
436
|
+
const position = this.positions[jPos];
|
|
437
|
+
if (position === void 0)
|
|
438
|
+
return [jPos, null, null];
|
|
439
|
+
const monomer = Object.keys(position.freq)
|
|
440
|
+
.find((m) => position.freq[m].bounds.contains(p.x, p.y));
|
|
441
|
+
if (monomer === undefined)
|
|
442
|
+
return [jPos, null, null];
|
|
443
|
+
return [jPos, monomer, position.freq[monomer]];
|
|
444
|
+
};
|
|
445
|
+
this.canvas.onmouseover = (e) => {
|
|
446
|
+
};
|
|
447
|
+
rxjs__WEBPACK_IMPORTED_MODULE_2__.fromEvent(this.canvas, 'mousemove').subscribe((e) => {
|
|
448
|
+
if (!this.canvas)
|
|
449
|
+
return;
|
|
450
|
+
const args = e;
|
|
451
|
+
const [jPos, monomer] = getMonomer(this.canvas.getCursorPosition(args));
|
|
452
|
+
if (this.dataFrame && this.seqCol && monomer) {
|
|
453
|
+
datagrok_api_ui__WEBPACK_IMPORTED_MODULE_0__.tooltip.showRowGroup(this.dataFrame, (iRow) => {
|
|
454
|
+
const seq = this.seqCol.get(iRow);
|
|
455
|
+
const mSeq = seq ? seq[this.startPosition + jPos] : null;
|
|
456
|
+
return mSeq === monomer;
|
|
457
|
+
}, args.x + 16, args.y + 16);
|
|
458
|
+
}
|
|
459
|
+
else {
|
|
460
|
+
datagrok_api_ui__WEBPACK_IMPORTED_MODULE_0__.tooltip.hide();
|
|
461
|
+
}
|
|
462
|
+
});
|
|
463
|
+
rxjs__WEBPACK_IMPORTED_MODULE_2__.fromEvent(this.canvas, 'mousedown').subscribe((e) => {
|
|
464
|
+
if (!this.canvas || e.button != 0)
|
|
465
|
+
return;
|
|
466
|
+
const args = e;
|
|
467
|
+
const [jPos, monomer] = getMonomer(this.canvas.getCursorPosition(args));
|
|
468
|
+
// prevents deselect all rows if we miss monomer bounds
|
|
469
|
+
if (this.dataFrame && this.seqCol && monomer) {
|
|
470
|
+
this.dataFrame.selection.init((iRow) => {
|
|
471
|
+
const seq = this.seqCol.get(iRow);
|
|
472
|
+
const mSeq = seq ? seq[this.startPosition + jPos] : null;
|
|
473
|
+
return mSeq === monomer;
|
|
474
|
+
});
|
|
475
|
+
}
|
|
476
|
+
});
|
|
477
|
+
this.root.append(this.msgHost);
|
|
478
|
+
this.root.append(this.canvas);
|
|
479
|
+
// this.root.appendChild(this.slider.root);
|
|
480
|
+
datagrok_api_ui__WEBPACK_IMPORTED_MODULE_0__.onSizeChanged(this.root).subscribe(this.rootOnSizeChanged.bind(this));
|
|
481
|
+
this.render(true);
|
|
482
|
+
});
|
|
483
|
+
}
|
|
484
|
+
rootOnSizeChanged(args) {
|
|
485
|
+
if (!this.canvas)
|
|
486
|
+
return;
|
|
487
|
+
// this.canvas.width calculate in this._calculate() method
|
|
488
|
+
const height = Math.min(this.maxHeight, Math.max(this.minHeight, this.root.clientHeight));
|
|
489
|
+
// if (this.canvas.width > this.root.clientWidth) /* horizontal scroller is enabled */
|
|
490
|
+
// height -= 6; /* free some space for horizontal scroller */
|
|
491
|
+
this.canvas.height = height;
|
|
492
|
+
this.canvas.style.height = `${height}px`;
|
|
493
|
+
// console.debug(`WebLogo.onRootSizeChanged() ` +
|
|
494
|
+
// `root.width=${this.root.clientWidth}, root.height=${this.root.clientHeight}, ` +
|
|
495
|
+
// `canvas.width=${this.canvas.width}, canvas.height=${this.canvas.height} .`);
|
|
496
|
+
this.render(true);
|
|
497
|
+
}
|
|
498
|
+
/** Assigns {@link seqCol} and {@link cp} based on {@link sequenceColumnName} and calls {@link render}().
|
|
499
|
+
*/
|
|
500
|
+
updateSeqCol() {
|
|
501
|
+
if (this.dataFrame) {
|
|
502
|
+
this.seqCol = this.dataFrame.col(this.sequenceColumnName);
|
|
503
|
+
if (this.seqCol) {
|
|
504
|
+
let maxLength = 0;
|
|
505
|
+
for (const category of this.seqCol.categories)
|
|
506
|
+
maxLength = Math.max(maxLength, category.length);
|
|
507
|
+
// Get position names from data column tag 'positionNames'
|
|
508
|
+
const positionNamesTxt = this.seqCol.getTag('positionNames');
|
|
509
|
+
// Fallback if 'positionNames' tag is not provided
|
|
510
|
+
this.positionNames = positionNamesTxt ? positionNamesTxt.split(', ').map((n) => n.trim()) :
|
|
511
|
+
[...Array(maxLength).keys()].map((jPos) => `${jPos + 1}`);
|
|
512
|
+
this.startPosition = this.startPositionName && this.positionNames ?
|
|
513
|
+
this.positionNames.indexOf(this.startPositionName) : 0;
|
|
514
|
+
this.endPosition = this.endPositionName && this.positionNames ?
|
|
515
|
+
this.positionNames.indexOf(this.endPositionName) : (maxLength - 1);
|
|
516
|
+
//#region -- palette --
|
|
517
|
+
switch (this.seqCol.semType) {
|
|
518
|
+
case _aminoacids__WEBPACK_IMPORTED_MODULE_3__.Aminoacids.SemTypeMultipleAlignment:
|
|
519
|
+
this.cp = _aminoacids__WEBPACK_IMPORTED_MODULE_3__.AminoacidsPalettes.GrokGroups;
|
|
520
|
+
break;
|
|
521
|
+
case _nucleotides__WEBPACK_IMPORTED_MODULE_4__.Nucleotides.SemTypeMultipleAlignment:
|
|
522
|
+
this.cp = _nucleotides__WEBPACK_IMPORTED_MODULE_4__.NucleotidesPalettes.Chromatogram;
|
|
523
|
+
break;
|
|
524
|
+
}
|
|
525
|
+
//#endregion -- palette --
|
|
526
|
+
}
|
|
527
|
+
else {
|
|
528
|
+
this.cp = null;
|
|
529
|
+
this.positionNames = [];
|
|
530
|
+
this.startPosition = -1;
|
|
531
|
+
this.endPosition = -1;
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
this.render();
|
|
535
|
+
}
|
|
536
|
+
onPropertyChanged(property) {
|
|
537
|
+
super.onPropertyChanged(property);
|
|
538
|
+
switch (property.name) {
|
|
539
|
+
case 'considerNullSequences':
|
|
540
|
+
this.render();
|
|
541
|
+
break;
|
|
542
|
+
case 'sequenceColumnName':
|
|
543
|
+
this.updateSeqCol();
|
|
544
|
+
break;
|
|
545
|
+
case 'startPositionName':
|
|
546
|
+
this.updateSeqCol();
|
|
547
|
+
break;
|
|
548
|
+
case 'endPositionName':
|
|
549
|
+
this.updateSeqCol();
|
|
550
|
+
break;
|
|
551
|
+
case 'positionWidth':
|
|
552
|
+
this.render(true);
|
|
553
|
+
break;
|
|
554
|
+
case 'minHeight':
|
|
555
|
+
this.rootOnSizeChanged(null);
|
|
556
|
+
break;
|
|
557
|
+
case 'maxHeight':
|
|
558
|
+
this.rootOnSizeChanged(null);
|
|
559
|
+
break;
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
onTableAttached() {
|
|
563
|
+
this.updateSeqCol();
|
|
564
|
+
if (this.dataFrame !== void 0) {
|
|
565
|
+
// There are two approaches:
|
|
566
|
+
// first - look in the dataFrame for the first matching column by semType of the
|
|
567
|
+
// corresponding viewer (but we want only one class of a more universal viewer),
|
|
568
|
+
// second - draw column data if the passed column is of suitable semType
|
|
569
|
+
// We decided that we will not search, but we will display asked data if we can
|
|
570
|
+
// const semType = (<typeof NucleotidesWebLogo>(this.constructor)).residuesSet;
|
|
571
|
+
// this.seqCol = (this.dataFrame.columns as DG.ColumnList).bySemType(semType);
|
|
572
|
+
this.dataFrame.selection.onChanged.subscribe((_) => this.render());
|
|
573
|
+
this.dataFrame.filter.onChanged.subscribe((_) => this.render());
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
_nullSequence(fillerResidue = 'X') {
|
|
577
|
+
if (this.considerNullSequences)
|
|
578
|
+
return new Array(this.Length).fill(fillerResidue).join('');
|
|
579
|
+
return '';
|
|
580
|
+
}
|
|
581
|
+
_calculate() {
|
|
582
|
+
if (!this.canvas || !this.seqCol || !this.dataFrame || this.startPosition === -1 || this.endPosition === -1)
|
|
583
|
+
return;
|
|
584
|
+
const width = this.Length * this.positionWidth;
|
|
585
|
+
this.canvas.width = width;
|
|
586
|
+
this.canvas.style.width = `${width}px`;
|
|
587
|
+
this.root.style.width = `${this.canvas.width}px`;
|
|
588
|
+
this.positions = new Array(this.Length);
|
|
589
|
+
for (let jPos = 0; jPos < this.Length; jPos++) {
|
|
590
|
+
const posName = this.positionNames[this.startPosition + jPos];
|
|
591
|
+
this.positions[jPos] = new PositionInfo(posName);
|
|
592
|
+
}
|
|
593
|
+
// 2022-05-05 askalkin instructed to show WebLogo based on filter (not selection)
|
|
594
|
+
const indices = this.dataFrame.filter.getSelectedIndexes();
|
|
595
|
+
// const indices = this.dataFrame.selection.trueCount > 0 ? this.dataFrame.selection.getSelectedIndexes() :
|
|
596
|
+
// this.dataFrame.filter.getSelectedIndexes();
|
|
597
|
+
this.rowsMasked = indices.length;
|
|
598
|
+
this.rowsNull = 0;
|
|
599
|
+
for (const i of indices) {
|
|
600
|
+
let s = (this.seqCol.get(i));
|
|
601
|
+
if (!s) {
|
|
602
|
+
s = this._nullSequence();
|
|
603
|
+
++this.rowsNull;
|
|
604
|
+
}
|
|
605
|
+
else {
|
|
606
|
+
for (let jPos = 0; jPos < this.Length; jPos++) {
|
|
607
|
+
const pmInfo = this.positions[jPos].freq;
|
|
608
|
+
const m = s[this.startPosition + jPos];
|
|
609
|
+
if (!(m in pmInfo))
|
|
610
|
+
pmInfo[m] = new PositionMonomerInfo();
|
|
611
|
+
pmInfo[m].count++;
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
//#region Polish freq counts
|
|
616
|
+
for (let jPos = 0; jPos < this.Length; jPos++) {
|
|
617
|
+
// delete this.positions[jPos].freq['-'];
|
|
618
|
+
this.positions[jPos].rowCount = 0;
|
|
619
|
+
for (const m in this.positions[jPos].freq)
|
|
620
|
+
this.positions[jPos].rowCount += this.positions[jPos].freq[m].count;
|
|
621
|
+
}
|
|
622
|
+
//#endregion
|
|
623
|
+
const maxHeight = this.canvas.height - this.axisHeight;
|
|
624
|
+
// console.debug(`WebLogo._calculate() maxHeight=${maxHeight}.`);
|
|
625
|
+
//#region Calculate screen
|
|
626
|
+
for (let jPos = 0; jPos < this.Length; jPos++) {
|
|
627
|
+
const freq = this.positions[jPos].freq;
|
|
628
|
+
const rowCount = this.positions[jPos].rowCount;
|
|
629
|
+
let y = this.axisHeight;
|
|
630
|
+
const entries = Object.entries(freq).sort((a, b) => {
|
|
631
|
+
if (a[0] !== '-' && b[0] !== '-')
|
|
632
|
+
return b[1].count - a[1].count;
|
|
633
|
+
else if (a[0] === '-' && b[0] === '-')
|
|
634
|
+
return 0;
|
|
635
|
+
else if (a[0] === '-')
|
|
636
|
+
return -1;
|
|
637
|
+
else /* (b[0] === '-') */
|
|
638
|
+
return +1;
|
|
639
|
+
});
|
|
640
|
+
for (const entry of entries) {
|
|
641
|
+
const pmInfo = entry[1];
|
|
642
|
+
// const m: string = entry[0];
|
|
643
|
+
const h = maxHeight * pmInfo.count / rowCount;
|
|
644
|
+
pmInfo.bounds = new datagrok_api_dg__WEBPACK_IMPORTED_MODULE_1__.Rect(jPos * this.positionWidth, y, this.positionWidth, h);
|
|
645
|
+
y += h;
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
//#endregion
|
|
649
|
+
}
|
|
650
|
+
// reflect changes made to filter/selection
|
|
651
|
+
render(recalc = true) {
|
|
652
|
+
var _a;
|
|
653
|
+
if (this.msgHost) {
|
|
654
|
+
if (this.seqCol && !this.cp) {
|
|
655
|
+
this.msgHost.innerText = `Unknown palette (column semType: '${this.seqCol.semType}').`;
|
|
656
|
+
this.msgHost.style.display = '';
|
|
657
|
+
}
|
|
658
|
+
else {
|
|
659
|
+
this.msgHost.style.display = 'none';
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
if (!this.canvas || !this.seqCol || !this.dataFrame || !this.cp ||
|
|
663
|
+
this.startPosition === -1 || this.endPosition === -1)
|
|
664
|
+
return;
|
|
665
|
+
const g = this.canvas.getContext('2d');
|
|
666
|
+
if (!g)
|
|
667
|
+
return;
|
|
668
|
+
if (recalc)
|
|
669
|
+
this._calculate();
|
|
670
|
+
// let rowCount = this.rowsMasked;
|
|
671
|
+
// if (!this.considerNullSequences)
|
|
672
|
+
// rowCount -= this.rowsNull;
|
|
673
|
+
g.resetTransform();
|
|
674
|
+
//g.clearRect(0, 0, this.canvas.width, this.canvas.height);
|
|
675
|
+
g.fillStyle = 'white';
|
|
676
|
+
g.fillRect(0, 0, this.canvas.width, this.canvas.height);
|
|
677
|
+
g.textBaseline = this.textBaseline;
|
|
678
|
+
//#region Plot positionNames
|
|
679
|
+
g.resetTransform();
|
|
680
|
+
g.fillStyle = 'black';
|
|
681
|
+
g.textAlign = 'center';
|
|
682
|
+
g.font = '10px Roboto, Roboto Local, sans-serif';
|
|
683
|
+
const posNameMaxWidth = Math.max(...this.positions.map((pos) => g.measureText(pos.name).width));
|
|
684
|
+
const hScale = posNameMaxWidth < (this.positionWidth - 2) ? 1 : (this.positionWidth - 2) / posNameMaxWidth;
|
|
685
|
+
for (let jPos = 0; jPos < this.Length; jPos++) {
|
|
686
|
+
const pos = this.positions[jPos];
|
|
687
|
+
g.resetTransform();
|
|
688
|
+
g.setTransform(hScale, 0, 0, 1, jPos * this.positionWidth + this.positionWidth / 2, 0);
|
|
689
|
+
g.fillText(pos.name, 0, 0);
|
|
690
|
+
}
|
|
691
|
+
//#endregion Plot positionNames
|
|
692
|
+
for (let jPos = 0; jPos < this.Length; jPos++) {
|
|
693
|
+
for (const [monomer, pmInfo] of Object.entries(this.positions[jPos].freq)) {
|
|
694
|
+
if (monomer !== '-') {
|
|
695
|
+
const b = pmInfo.bounds;
|
|
696
|
+
const fontStyle = '16px Roboto, Roboto Local, sans-serif';
|
|
697
|
+
// Hacks to scale uppercase characters to target rectangle
|
|
698
|
+
const uppercaseLetterAscent = 0.25;
|
|
699
|
+
const uppercaseLetterHeight = 12.2;
|
|
700
|
+
g.resetTransform();
|
|
701
|
+
g.strokeStyle = 'lightgray';
|
|
702
|
+
g.lineWidth = 1;
|
|
703
|
+
g.rect(b.left, b.top, b.width, b.height);
|
|
704
|
+
g.fillStyle = (_a = this.cp[monomer]) !== null && _a !== void 0 ? _a : this.cp['other'];
|
|
705
|
+
g.textAlign = 'left';
|
|
706
|
+
g.font = fontStyle;
|
|
707
|
+
//g.fillRect(b.left, b.top, b.width, b.height);
|
|
708
|
+
const mTm = g.measureText(monomer);
|
|
709
|
+
// if (mM.actualBoundingBoxAscent != 0)
|
|
710
|
+
// console.debug(`m: ${m}, mM.actualBoundingBoxAscent: ${mM.actualBoundingBoxAscent}`);
|
|
711
|
+
g.setTransform(b.width / mTm.width, 0, 0, b.height / uppercaseLetterHeight, b.left, b.top);
|
|
712
|
+
g.fillText(monomer, 0, -uppercaseLetterAscent);
|
|
713
|
+
}
|
|
714
|
+
}
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
WebLogo.residuesSet = 'nucleotides';
|
|
719
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLWxvZ28uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ3ZWItbG9nby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQSxPQUFPLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RDLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdEMsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFJN0IsT0FBTyxFQUFDLFVBQVUsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUMsV0FBVyxFQUFFLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFnQmhFLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsR0FBRyxVQUFTLEtBQWlCO0lBQ3hFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQzFDLE9BQU8sSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzRSxDQUFDLENBQUM7QUFFRixFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBUyxDQUFTLEVBQUUsQ0FBUztJQUN4RCxPQUFPLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQ2hGLENBQUMsQ0FBQztBQUVGLE1BQU0sT0FBTyxtQkFBbUI7SUFTOUI7UUFDRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxD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SSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDekMsQ0FBQyxDQUFDLFNBQVMsR0FBRyxNQUFBLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLG1DQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ25ELENBQUMsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDO29CQUNyQixDQUFDLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztvQkFDbkIsK0NBQStDO29CQUMvQyxNQUFNLEdBQUcsR0FBZ0IsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFFaEQsdUNBQXVDO29CQUN2Qyx5RkFBeUY7b0JBRXpGLENBQUMsQ0FBQyxZQUFZLENBQ1osQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxxQkFBcUIsRUFDM0QsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ2pCLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUM7aUJBQ2hEO2FBQ0Y7U0FDRjtJQUNILENBQUM7O0FBdFphLG1CQUFXLEdBQUcsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcblxuaW1wb3J0ICogYXMgcnhqcyBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtTdHJpbmdEaWN0aW9uYXJ5fSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy90eXBlLWRlY2xhcmF0aW9ucyc7XG5cbmltcG9ydCB7QW1pbm9hY2lkcywgQW1pbm9hY2lkc1BhbGV0dGVzfSBmcm9tICcuLi9hbWlub2FjaWRzJztcbmltcG9ydCB7TnVjbGVvdGlkZXMsIE51Y2xlb3RpZGVzUGFsZXR0ZXN9IGZyb20gJy4uL251Y2xlb3RpZGVzJztcblxuLy8gVXNpbmcgY29sb3Igc2NoZW1lcyBmcm9tIGNoZW0tcGFsZXR0ZVxuXG5kZWNsYXJlIG1vZHVsZSAnZGF0YWdyb2stYXBpL3NyYy9ncmlkJyB7XG4gIGludGVyZmFjZSBSZWN0IHtcbiAgICBjb250YWlucyh4OiBudW1iZXIsIHk6IG51bWJlcik6IGJvb2xlYW47XG4gIH1cbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgSFRNTENhbnZhc0VsZW1lbnQge1xuICAgIGdldEN1cnNvclBvc2l0aW9uKGV2ZW50OiBNb3VzZUV2ZW50KTogREcuUG9pbnQ7XG4gIH1cbn1cblxuSFRNTENhbnZhc0VsZW1lbnQucHJvdG90eXBlLmdldEN1cnNvclBvc2l0aW9uID0gZnVuY3Rpb24oZXZlbnQ6IE1vdXNlRXZlbnQpOiBERy5Qb2ludCB7XG4gIGNvbnN0IHJlY3QgPSB0aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICByZXR1cm4gbmV3IERHLlBvaW50KGV2ZW50LmNsaWVudFggLSByZWN0LmxlZnQsIGV2ZW50LmNsaWVudFkgLSByZWN0LnRvcCk7XG59O1xuXG5ERy5SZWN0LnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uKHg6IG51bWJlciwgeTogbnVtYmVyKTogYm9vbGVhbiB7XG4gIHJldHVybiB0aGlzLmxlZnQgPD0geCAmJiB4IDw9IHRoaXMucmlnaHQgJiYgdGhpcy50b3AgPD0geSAmJiB5IDw9IHRoaXMuYm90dG9tO1xufTtcblxuZXhwb3J0IGNsYXNzIFBvc2l0aW9uTW9ub21lckluZm8ge1xuICAvKiogU2VxdWVuY2VzIGNvdW50IHdpdGggbW9ub21lciBpbiBwb3NpdGlvblxuICAgKi9cbiAgY291bnQ6IG51bWJlcjtcblxuICAvKiogUmVtZW1iZXIgc2NyZWVuIGNvb3JkcyByZWN0XG4gICAqL1xuICBib3VuZHM6IERHLlJlY3Q7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5jb3VudCA9IDA7XG4gICAgdGhpcy5ib3VuZHMgPSBuZXcgREcuUmVjdCgwLCAwLCAwLCAwKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUG9zaXRpb25JbmZvIHtcbiAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgZnJlcTogeyBbbTogc3RyaW5nXTogUG9zaXRpb25Nb25vbWVySW5mbyB9O1xuICByb3dDb3VudDogbnVtYmVyO1xuXG4gIC8qKiBmcmVxID0ge30sIHJvd0NvdW50ID0gMFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIHBvc2l0aW9uICgnMTExQScsICcxMTEuMScsIGV0YylcbiAgICovXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5mcmVxID0ge307XG4gICAgdGhpcy5yb3dDb3VudCA9IDA7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFdlYkxvZ28gZXh0ZW5kcyBERy5Kc1ZpZXdlciB7XG4gIHB1YmxpYyBzdGF0aWMgcmVzaWR1ZXNTZXQgPSAnbnVjbGVvdGlkZXMnO1xuXG4gIC8vIHByaXZhdGUgcmVhZG9ubHkgY29sb3JTY2hlbWU6IENvbG9yU2NoZW1lID0gQ29sb3JTY2hlbWVzW051Y2xlb3RpZGVzV2ViTG9nby5yZXNpZHVlc1NldF07XG4gIHByb3RlY3RlZCBjcDogU3RyaW5nRGljdGlvbmFyeSB8IG51bGwgPSBudWxsO1xuXG4gIC8vIHByaXZhdGUgcmVhZG9ubHkgaG9zdDogSFRNTERpdkVsZW1lbnQ7XG4gIHByaXZhdGUgbXNnSG9zdD86IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGNhbnZhcz86IEhUTUxDYW52YXNFbGVtZW50O1xuICBwcml2YXRlIHNsaWRlcj86IERHLlJhbmdlU2xpZGVyO1xuICBwcml2YXRlIHRleHRCYXNlbGluZTogQ2FudmFzVGV4dEJhc2VsaW5lO1xuXG4gIHByaXZhdGUgYXhpc0hlaWdodDogbnVtYmVyID0gMTI7XG5cbiAgcHJpdmF0ZSBzZXFDb2w6IERHLkNvbHVtbiB8IG51bGwgPSBudWxsO1xuICAvLyBwcml2YXRlIG1heExlbmd0aDogbnVtYmVyID0gMTAwO1xuICBwcml2YXRlIHBvc2l0aW9uczogUG9zaXRpb25JbmZvW10gPSBbXTtcblxuICBwcml2YXRlIHJvd3NNYXNrZWQ6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgcm93c051bGw6IG51bWJlciA9IDA7XG5cbiAgLy8gVmlld2VyJ3MgcHJvcGVydGllcyAobGlrZWx5IHRoZXkgc2hvdWxkIGJlIHB1YmxpYyBzbyB0aGF0IHRoZXkgY2FuIGJlIHNldCBvdXRzaWRlKVxuICBwdWJsaWMgcG9zaXRpb25XaWR0aDogbnVtYmVyO1xuICBwdWJsaWMgbWluSGVpZ2h0OiBudW1iZXI7XG4gIHB1YmxpYyBtYXhIZWlnaHQ6IG51bWJlcjtcbiAgcHVibGljIGNvbnNpZGVyTnVsbFNlcXVlbmNlczogYm9vbGVhbjtcbiAgcHVibGljIHNlcXVlbmNlQ29sdW1uTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgc3RhcnRQb3NpdGlvbk5hbWU6IHN0cmluZztcbiAgcHVibGljIGVuZFBvc2l0aW9uTmFtZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgcG9zaXRpb25OYW1lczogc3RyaW5nW10gPSBbXTtcblxuICBwcml2YXRlIHN0YXJ0UG9zaXRpb246IG51bWJlciA9IC0xO1xuXG4gIHByaXZhdGUgZW5kUG9zaXRpb246IG51bWJlciA9IC0xO1xuXG4gIC8qKiBGb3Igc3RhcnRQb3NpdGlvbiBlcXVhbHMgdG8gZW5kUG9zaXRpb24gTGVuZ3RoIGlzIDEgKi9cbiAgcHJpdmF0ZSBnZXQgTGVuZ3RoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RhcnRQb3NpdGlvbiA8PSB0aGlzLmVuZFBvc2l0aW9uID8gdGhpcy5lbmRQb3NpdGlvbiAtIHRoaXMuc3RhcnRQb3NpdGlvbiArIDEgOiAwO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMudGV4dEJhc2VsaW5lID0gJ3RvcCc7XG5cbiAgICB0aGlzLnBvc2l0aW9uV2lkdGggPSB0aGlzLmZsb2F0KCdwb3NpdGlvbldpZHRoJywgMTYpO1xuICAgIHRoaXMubWluSGVpZ2h0ID0gdGhpcy5mbG9hdCgnbWluSGVpZ2h0JywgNTApO1xuICAgIHRoaXMubWF4SGVpZ2h0ID0gdGhpcy5mbG9hdCgnbWF4SGVpZ2h0JywgMTAwKTtcblxuICAgIHRoaXMuY29uc2lkZXJOdWxsU2VxdWVuY2VzID0gdGhpcy5ib29sKCdjb25zaWRlck51bGxTZXF1ZW5jZXMnLCBmYWxzZSk7XG4gICAgdGhpcy5zZXF1ZW5jZUNvbHVtbk5hbWUgPSB0aGlzLnN0cmluZygnc2VxdWVuY2VDb2x1bW5OYW1lJywgbnVsbCk7XG5cbiAgICB0aGlzLnN0YXJ0UG9zaXRpb25OYW1lID0gdGhpcy5zdHJpbmcoJ3N0YXJ0UG9zaXRpb25OYW1lJywgbnVsbCk7XG4gICAgdGhpcy5lbmRQb3NpdGlvbk5hbWUgPSB0aGlzLnN0cmluZygnZW5kUG9zaXRpb25OYW1lJywgbnVsbCk7XG4gIH1cblxuICBhc3luYyBpbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMubXNnSG9zdCA9IHVpLmRpdignTm8gbWVzc2FnZScpO1xuICAgIHRoaXMubXNnSG9zdC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuXG4gICAgdGhpcy5jYW52YXMgPSB1aS5jYW52YXMoKTtcbiAgICB0aGlzLmNhbnZhcy5zdHlsZS53aWR0aCA9ICcxMDAlJztcblxuICAgIC8vIHRoaXMuc2xpZGVyID0gdWkucmFuZ2VTbGlkZXIoMCwgMjAsIDIsIDUpO1xuICAgIC8vIHRoaXMuc2xpZGVyLnJvb3Quc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgLy8gdGhpcy5zbGlkZXIucm9vdC5zdHlsZS5oZWlnaHQgPSAnMTJweCc7XG5cbiAgICAvLyB0aGlzLmhvc3QgPSB1aS5kaXZWKFsvKnRoaXMuc2xpZGVyLCovdGhpcy5jYW52YXNdKTtcblxuICAgIGNvbnN0IGdldE1vbm9tZXIgPSAocDogREcuUG9pbnQpOiBbbnVtYmVyLCBzdHJpbmcgfCBudWxsLCBQb3NpdGlvbk1vbm9tZXJJbmZvIHwgbnVsbF0gPT4ge1xuICAgICAgY29uc3QgalBvcyA9IE1hdGguZmxvb3IocC54IC8gdGhpcy5wb3NpdGlvbldpZHRoKTtcbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5wb3NpdGlvbnNbalBvc107XG5cbiAgICAgIGlmIChwb3NpdGlvbiA9PT0gdm9pZCAwKVxuICAgICAgICByZXR1cm4gW2pQb3MsIG51bGwsIG51bGxdO1xuXG4gICAgICBjb25zdCBtb25vbWVyOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBPYmplY3Qua2V5cyhwb3NpdGlvbi5mcmVxKVxuICAgICAgICAuZmluZCgobSkgPT4gcG9zaXRpb24uZnJlcVttXS5ib3VuZHMuY29udGFpbnMocC54LCBwLnkpKTtcbiAgICAgIGlmIChtb25vbWVyID09PSB1bmRlZmluZWQpXG4gICAgICAgIHJldHVybiBbalBvcywgbnVsbCwgbnVsbF07XG5cbiAgICAgIHJldHVybiBbalBvcywgbW9ub21lciwgcG9zaXRpb24uZnJlcVttb25vbWVyXV07XG4gICAgfTtcblxuICAgIHRoaXMuY2FudmFzLm9ubW91c2VvdmVyID0gKGU6IE1vdXNlRXZlbnQpID0+IHtcblxuICAgIH07XG5cbiAgICByeGpzLmZyb21FdmVudDxNb3VzZUV2ZW50Pih0aGlzLmNhbnZhcywgJ21vdXNlbW92ZScpLnN1YnNjcmliZSgoZTogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmNhbnZhcylcbiAgICAgICAgcmV0dXJuO1xuXG4gICAgICBjb25zdCBhcmdzID0gZSBhcyBNb3VzZUV2ZW50O1xuICAgICAgY29uc3QgW2pQb3MsIG1vbm9tZXJdID0gZ2V0TW9ub21lcih0aGlzLmNhbnZhcy5nZXRDdXJzb3JQb3NpdGlvbihhcmdzKSk7XG5cbiAgICAgIGlmICh0aGlzLmRhdGFGcmFtZSAmJiB0aGlzLnNlcUNvbCAmJiBtb25vbWVyKSB7XG4gICAgICAgIHVpLnRvb2x0aXAuc2hvd1Jvd0dyb3VwKHRoaXMuZGF0YUZyYW1lLCAoaVJvdykgPT4ge1xuICAgICAgICAgIGNvbnN0IHNlcSA9IHRoaXMuc2VxQ29sIS5nZXQoaVJvdyk7XG4gICAgICAgICAgY29uc3QgbVNlcSA9IHNlcSA/IHNlcVt0aGlzLnN0YXJ0UG9zaXRpb24gKyBqUG9zXSA6IG51bGw7XG4gICAgICAgICAgcmV0dXJuIG1TZXEgPT09IG1vbm9tZXI7XG4gICAgICAgIH0sIGFyZ3MueCArIDE2LCBhcmdzLnkgKyAxNik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1aS50b29sdGlwLmhpZGUoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJ4anMuZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMuY2FudmFzLCAnbW91c2Vkb3duJykuc3Vic2NyaWJlKChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBpZiAoIXRoaXMuY2FudmFzIHx8IGUuYnV0dG9uICE9IDApXG4gICAgICAgIHJldHVybjtcblxuICAgICAgY29uc3QgYXJncyA9IGUgYXMgTW91c2VFdmVudDtcbiAgICAgIGNvbnN0IFtqUG9zLCBtb25vbWVyXSA9IGdldE1vbm9tZXIodGhpcy5jYW52YXMuZ2V0Q3Vyc29yUG9zaXRpb24oYXJncykpO1xuXG4gICAgICAvLyBwcmV2ZW50cyBkZXNlbGVjdCBhbGwgcm93cyBpZiB3ZSBtaXNzIG1vbm9tZXIgYm91bmRzXG4gICAgICBpZiAodGhpcy5kYXRhRnJhbWUgJiYgdGhpcy5zZXFDb2wgJiYgbW9ub21lcikge1xuICAgICAgICB0aGlzLmRhdGFGcmFtZS5zZWxlY3Rpb24uaW5pdCgoaVJvdykgPT4ge1xuICAgICAgICAgIGNvbnN0IHNlcSA9IHRoaXMuc2VxQ29sIS5nZXQoaVJvdyk7XG4gICAgICAgICAgY29uc3QgbVNlcSA9IHNlcSA/IHNlcVt0aGlzLnN0YXJ0UG9zaXRpb24gKyBqUG9zXSA6IG51bGw7XG4gICAgICAgICAgcmV0dXJuIG1TZXEgPT09IG1vbm9tZXI7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5yb290LmFwcGVuZCh0aGlzLm1zZ0hvc3QpO1xuICAgIHRoaXMucm9vdC5hcHBlbmQodGhpcy5jYW52YXMpO1xuICAgIC8vIHRoaXMucm9vdC5hcHBlbmRDaGlsZCh0aGlzLnNsaWRlci5yb290KTtcblxuICAgIHVpLm9uU2l6ZUNoYW5nZWQodGhpcy5yb290KS5zdWJzY3JpYmUodGhpcy5yb290T25TaXplQ2hhbmdlZC5iaW5kKHRoaXMpKTtcblxuICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICB9XG5cbiAgcm9vdE9uU2l6ZUNoYW5nZWQoYXJnczogYW55KSB7XG4gICAgaWYgKCF0aGlzLmNhbnZhcylcbiAgICAgIHJldHVybjtcblxuICAgIC8vIHRoaXMuY2FudmFzLndpZHRoIGNhbGN1bGF0ZSBpbiB0aGlzLl9jYWxjdWxhdGUoKSBtZXRob2RcblxuICAgIGNvbnN0IGhlaWdodCA9IE1hdGgubWluKHRoaXMubWF4SGVpZ2h0LCBNYXRoLm1heCh0aGlzLm1pbkhlaWdodCwgdGhpcy5yb290LmNsaWVudEhlaWdodCkpO1xuICAgIC8vIGlmICh0aGlzLmNhbnZhcy53aWR0aCA+IHRoaXMucm9vdC5jbGllbnRXaWR0aCkgLyogaG9yaXpvbnRhbCBzY3JvbGxlciBpcyBlbmFibGVkICovXG4gICAgLy8gICBoZWlnaHQgLT0gNjsgLyogZnJlZSBzb21lIHNwYWNlIGZvciBob3Jpem9udGFsIHNjcm9sbGVyICovXG4gICAgdGhpcy5jYW52YXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIHRoaXMuY2FudmFzLnN0eWxlLmhlaWdodCA9IGAke2hlaWdodH1weGA7XG5cbiAgICAvLyBjb25zb2xlLmRlYnVnKGBXZWJMb2dvLm9uUm9vdFNpemVDaGFuZ2VkKCkgYCArXG4gICAgLy8gICBgcm9vdC53aWR0aD0ke3RoaXMucm9vdC5jbGllbnRXaWR0aH0sIHJvb3QuaGVpZ2h0PSR7dGhpcy5yb290LmNsaWVudEhlaWdodH0sIGAgK1xuICAgIC8vICAgYGNhbnZhcy53aWR0aD0ke3RoaXMuY2FudmFzLndpZHRofSwgY2FudmFzLmhlaWdodD0ke3RoaXMuY2FudmFzLmhlaWdodH0gLmApO1xuXG4gICAgdGhpcy5yZW5kZXIodHJ1ZSk7XG4gIH1cblxuICAvKiogQXNzaWducyB7QGxpbmsgc2VxQ29sfSBhbmQge0BsaW5rIGNwfSBiYXNlZCBvbiB7QGxpbmsgc2VxdWVuY2VDb2x1bW5OYW1lfSBhbmQgY2FsbHMge0BsaW5rIHJlbmRlcn0oKS5cbiAgICovXG4gIHVwZGF0ZVNlcUNvbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kYXRhRnJhbWUpIHtcbiAgICAgIHRoaXMuc2VxQ29sID0gdGhpcy5kYXRhRnJhbWUuY29sKHRoaXMuc2VxdWVuY2VDb2x1bW5OYW1lKTtcbiAgICAgIGlmICh0aGlzLnNlcUNvbCkge1xuICAgICAgICBsZXQgbWF4TGVuZ3RoID0gMDtcbiAgICAgICAgZm9yIChjb25zdCBjYXRlZ29yeSBvZiB0aGlzLnNlcUNvbC5jYXRlZ29yaWVzKVxuICAgICAgICAgIG1heExlbmd0aCA9IE1hdGgubWF4KG1heExlbmd0aCwgY2F0ZWdvcnkubGVuZ3RoKTtcblxuICAgICAgICAvLyBHZXQgcG9zaXRpb24gbmFtZXMgZnJvbSBkYXRhIGNvbHVtbiB0YWcgJ3Bvc2l0aW9uTmFtZXMnXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uTmFtZXNUeHQgPSB0aGlzLnNlcUNvbC5nZXRUYWcoJ3Bvc2l0aW9uTmFtZXMnKTtcbiAgICAgICAgLy8gRmFsbGJhY2sgaWYgJ3Bvc2l0aW9uTmFtZXMnIHRhZyBpcyBub3QgcHJvdmlkZWRcbiAgICAgICAgdGhpcy5wb3NpdGlvbk5hbWVzID0gcG9zaXRpb25OYW1lc1R4dCA/IHBvc2l0aW9uTmFtZXNUeHQuc3BsaXQoJywgJykubWFwKChuKSA9PiBuLnRyaW0oKSkgOlxuICAgICAgICAgIFsuLi5BcnJheShtYXhMZW5ndGgpLmtleXMoKV0ubWFwKChqUG9zKSA9PiBgJHtqUG9zICsgMX1gKTtcblxuICAgICAgICB0aGlzLnN0YXJ0UG9zaXRpb24gPSB0aGlzLnN0YXJ0UG9zaXRpb25OYW1lICYmIHRoaXMucG9zaXRpb25OYW1lcyA/XG4gICAgICAgICAgdGhpcy5wb3NpdGlvbk5hbWVzLmluZGV4T2YodGhpcy5zdGFydFBvc2l0aW9uTmFtZSkgOiAwO1xuICAgICAgICB0aGlzLmVuZFBvc2l0aW9uID0gdGhpcy5lbmRQb3NpdGlvbk5hbWUgJiYgdGhpcy5wb3NpdGlvbk5hbWVzID9cbiAgICAgICAgICB0aGlzLnBvc2l0aW9uTmFtZXMuaW5kZXhPZih0aGlzLmVuZFBvc2l0aW9uTmFtZSkgOiAobWF4TGVuZ3RoIC0gMSk7XG5cbiAgICAgICAgLy8jcmVnaW9uIC0tIHBhbGV0dGUgLS1cbiAgICAgICAgc3dpdGNoICh0aGlzLnNlcUNvbC5zZW1UeXBlKSB7XG4gICAgICAgIGNhc2UgQW1pbm9hY2lkcy5TZW1UeXBlTXVsdGlwbGVBbGlnbm1lbnQ6XG4gICAgICAgICAgdGhpcy5jcCA9IEFtaW5vYWNpZHNQYWxldHRlcy5Hcm9rR3JvdXBzO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIE51Y2xlb3RpZGVzLlNlbVR5cGVNdWx0aXBsZUFsaWdubWVudDpcbiAgICAgICAgICB0aGlzLmNwID0gTnVjbGVvdGlkZXNQYWxldHRlcy5DaHJvbWF0b2dyYW07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy8jZW5kcmVnaW9uIC0tIHBhbGV0dGUgLS1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY3AgPSBudWxsO1xuICAgICAgICB0aGlzLnBvc2l0aW9uTmFtZXMgPSBbXTtcbiAgICAgICAgdGhpcy5zdGFydFBvc2l0aW9uID0gLTE7XG4gICAgICAgIHRoaXMuZW5kUG9zaXRpb24gPSAtMTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgfVxuXG4gIG9uUHJvcGVydHlDaGFuZ2VkKHByb3BlcnR5OiBERy5Qcm9wZXJ0eSk6IHZvaWQge1xuICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2VkKHByb3BlcnR5KTtcblxuICAgIHN3aXRjaCAocHJvcGVydHkubmFtZSkge1xuICAgIGNhc2UgJ2NvbnNpZGVyTnVsbFNlcXVlbmNlcyc6XG4gICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnc2VxdWVuY2VDb2x1bW5OYW1lJzpcbiAgICAgIHRoaXMudXBkYXRlU2VxQ29sKCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdzdGFydFBvc2l0aW9uTmFtZSc6XG4gICAgICB0aGlzLnVwZGF0ZVNlcUNvbCgpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZW5kUG9zaXRpb25OYW1lJzpcbiAgICAgIHRoaXMudXBkYXRlU2VxQ29sKCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdwb3NpdGlvbldpZHRoJzpcbiAgICAgIHRoaXMucmVuZGVyKHRydWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnbWluSGVpZ2h0JzpcbiAgICAgIHRoaXMucm9vdE9uU2l6ZUNoYW5nZWQobnVsbCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdtYXhIZWlnaHQnOlxuICAgICAgdGhpcy5yb290T25TaXplQ2hhbmdlZChudWxsKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIG9uVGFibGVBdHRhY2hlZCgpIHtcbiAgICB0aGlzLnVwZGF0ZVNlcUNvbCgpO1xuXG4gICAgaWYgKHRoaXMuZGF0YUZyYW1lICE9PSB2b2lkIDApIHtcbiAgICAgIC8vIFRoZXJlIGFyZSB0d28gYXBwcm9hY2hlczpcbiAgICAgIC8vIGZpcnN0ICAtIGxvb2sgaW4gdGhlIGRhdGFGcmFtZSBmb3IgdGhlIGZpcnN0IG1hdGNoaW5nIGNvbHVtbiBieSBzZW1UeXBlIG9mIHRoZVxuICAgICAgLy8gICAgICAgICAgY29ycmVzcG9uZGluZyB2aWV3ZXIgKGJ1dCB3ZSB3YW50IG9ubHkgb25lIGNsYXNzIG9mIGEgbW9yZSB1bml2ZXJzYWwgdmlld2VyKSxcbiAgICAgIC8vIHNlY29uZCAtIGRyYXcgY29sdW1uIGRhdGEgaWYgdGhlIHBhc3NlZCBjb2x1bW4gaXMgb2Ygc3VpdGFibGUgc2VtVHlwZVxuICAgICAgLy8gV2UgZGVjaWRlZCB0aGF0IHdlIHdpbGwgbm90IHNlYXJjaCwgYnV0IHdlIHdpbGwgZGlzcGxheSBhc2tlZCBkYXRhIGlmIHdlIGNhblxuICAgICAgLy8gY29uc3Qgc2VtVHlwZSA9ICg8dHlwZW9mIE51Y2xlb3RpZGVzV2ViTG9nbz4odGhpcy5jb25zdHJ1Y3RvcikpLnJlc2lkdWVzU2V0O1xuICAgICAgLy8gdGhpcy5zZXFDb2wgPSAodGhpcy5kYXRhRnJhbWUuY29sdW1ucyBhcyBERy5Db2x1bW5MaXN0KS5ieVNlbVR5cGUoc2VtVHlwZSk7XG5cbiAgICAgIHRoaXMuZGF0YUZyYW1lLnNlbGVjdGlvbi5vbkNoYW5nZWQuc3Vic2NyaWJlKChfKSA9PiB0aGlzLnJlbmRlcigpKTtcbiAgICAgIHRoaXMuZGF0YUZyYW1lLmZpbHRlci5vbkNoYW5nZWQuc3Vic2NyaWJlKChfKSA9PiB0aGlzLnJlbmRlcigpKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX251bGxTZXF1ZW5jZShmaWxsZXJSZXNpZHVlID0gJ1gnKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5jb25zaWRlck51bGxTZXF1ZW5jZXMpXG4gICAgICByZXR1cm4gbmV3IEFycmF5KHRoaXMuTGVuZ3RoKS5maWxsKGZpbGxlclJlc2lkdWUpLmpvaW4oJycpO1xuXG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9jYWxjdWxhdGUoKSB7XG4gICAgaWYgKCF0aGlzLmNhbnZhcyB8fCAhdGhpcy5zZXFDb2wgfHwgIXRoaXMuZGF0YUZyYW1lIHx8IHRoaXMuc3RhcnRQb3NpdGlvbiA9PT0gLTEgfHwgdGhpcy5lbmRQb3NpdGlvbiA9PT0gLTEpXG4gICAgICByZXR1cm47XG5cbiAgICBjb25zdCB3aWR0aCA9IHRoaXMuTGVuZ3RoICogdGhpcy5wb3NpdGlvbldpZHRoO1xuICAgIHRoaXMuY2FudmFzLndpZHRoID0gd2lkdGg7XG4gICAgdGhpcy5jYW52YXMuc3R5bGUud2lkdGggPSBgJHt3aWR0aH1weGA7XG4gICAgdGhpcy5yb290LnN0eWxlLndpZHRoID0gYCR7dGhpcy5jYW52YXMud2lkdGh9cHhgO1xuXG4gICAgdGhpcy5wb3NpdGlvbnMgPSBuZXcgQXJyYXkodGhpcy5MZW5ndGgpO1xuICAgIGZvciAobGV0IGpQb3MgPSAwOyBqUG9zIDwgdGhpcy5MZW5ndGg7IGpQb3MrKykge1xuICAgICAgY29uc3QgcG9zTmFtZTogc3RyaW5nID0gdGhpcy5wb3NpdGlvbk5hbWVzW3RoaXMuc3RhcnRQb3NpdGlvbiArIGpQb3NdO1xuICAgICAgdGhpcy5wb3NpdGlvbnNbalBvc10gPSBuZXcgUG9zaXRpb25JbmZvKHBvc05hbWUpO1xuICAgIH1cblxuICAgIC8vIDIwMjItMDUtMDUgYXNrYWxraW4gaW5zdHJ1Y3RlZCB0byBzaG93IFdlYkxvZ28gYmFzZWQgb24gZmlsdGVyIChub3Qgc2VsZWN0aW9uKVxuICAgIGNvbnN0IGluZGljZXMgPSB0aGlzLmRhdGFGcmFtZS5maWx0ZXIuZ2V0U2VsZWN0ZWRJbmRleGVzKCk7XG4gICAgLy8gY29uc3QgaW5kaWNlcyA9IHRoaXMuZGF0YUZyYW1lLnNlbGVjdGlvbi50cnVlQ291bnQgPiAwID8gdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLmdldFNlbGVjdGVkSW5kZXhlcygpIDpcbiAgICAvLyAgIHRoaXMuZGF0YUZyYW1lLmZpbHRlci5nZXRTZWxlY3RlZEluZGV4ZXMoKTtcblxuICAgIHRoaXMucm93c01hc2tlZCA9IGluZGljZXMubGVuZ3RoO1xuICAgIHRoaXMucm93c051bGwgPSAwO1xuXG4gICAgZm9yIChjb25zdCBpIG9mIGluZGljZXMpIHtcbiAgICAgIGxldCBzOiBzdHJpbmcgPSA8c3RyaW5nPih0aGlzLnNlcUNvbC5nZXQoaSkpO1xuXG4gICAgICBpZiAoIXMpIHtcbiAgICAgICAgcyA9IHRoaXMuX251bGxTZXF1ZW5jZSgpO1xuICAgICAgICArK3RoaXMucm93c051bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGxldCBqUG9zID0gMDsgalBvcyA8IHRoaXMuTGVuZ3RoOyBqUG9zKyspIHtcbiAgICAgICAgICBjb25zdCBwbUluZm8gPSB0aGlzLnBvc2l0aW9uc1tqUG9zXS5mcmVxO1xuICAgICAgICAgIGNvbnN0IG06IHN0cmluZyA9IHNbdGhpcy5zdGFydFBvc2l0aW9uICsgalBvc107XG4gICAgICAgICAgaWYgKCEobSBpbiBwbUluZm8pKVxuICAgICAgICAgICAgcG1JbmZvW21dID0gbmV3IFBvc2l0aW9uTW9ub21lckluZm8oKTtcblxuICAgICAgICAgIHBtSW5mb1ttXS5jb3VudCsrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8jcmVnaW9uIFBvbGlzaCBmcmVxIGNvdW50c1xuICAgIGZvciAobGV0IGpQb3MgPSAwOyBqUG9zIDwgdGhpcy5MZW5ndGg7IGpQb3MrKykge1xuICAgICAgLy8gZGVsZXRlIHRoaXMucG9zaXRpb25zW2pQb3NdLmZyZXFbJy0nXTtcblxuICAgICAgdGhpcy5wb3NpdGlvbnNbalBvc10ucm93Q291bnQgPSAwO1xuICAgICAgZm9yIChjb25zdCBtIGluIHRoaXMucG9zaXRpb25zW2pQb3NdLmZyZXEpXG4gICAgICAgIHRoaXMucG9zaXRpb25zW2pQb3NdLnJvd0NvdW50ICs9IHRoaXMucG9zaXRpb25zW2pQb3NdLmZyZXFbbV0uY291bnQ7XG4gICAgfVxuICAgIC8vI2VuZHJlZ2lvblxuXG4gICAgY29uc3QgbWF4SGVpZ2h0ID0gdGhpcy5jYW52YXMuaGVpZ2h0IC0gdGhpcy5heGlzSGVpZ2h0O1xuICAgIC8vIGNvbnNvbGUuZGVidWcoYFdlYkxvZ28uX2NhbGN1bGF0ZSgpIG1heEhlaWdodD0ke21heEhlaWdodH0uYCk7XG5cbiAgICAvLyNyZWdpb24gQ2FsY3VsYXRlIHNjcmVlblxuICAgIGZvciAobGV0IGpQb3MgPSAwOyBqUG9zIDwgdGhpcy5MZW5ndGg7IGpQb3MrKykge1xuICAgICAgY29uc3QgZnJlcTogeyBbYzogc3RyaW5nXTogUG9zaXRpb25Nb25vbWVySW5mbyB9ID0gdGhpcy5wb3NpdGlvbnNbalBvc10uZnJlcTtcbiAgICAgIGNvbnN0IHJvd0NvdW50ID0gdGhpcy5wb3NpdGlvbnNbalBvc10ucm93Q291bnQ7XG5cbiAgICAgIGxldCB5OiBudW1iZXIgPSB0aGlzLmF4aXNIZWlnaHQ7XG5cbiAgICAgIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhmcmVxKS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICAgIGlmIChhWzBdICE9PSAnLScgJiYgYlswXSAhPT0gJy0nKVxuICAgICAgICAgIHJldHVybiBiWzFdLmNvdW50IC0gYVsxXS5jb3VudDtcbiAgICAgICAgZWxzZSBpZiAoYVswXSA9PT0gJy0nICYmIGJbMF0gPT09ICctJylcbiAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgZWxzZSBpZiAoYVswXSA9PT0gJy0nKVxuICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgZWxzZSAvKiAoYlswXSA9PT0gJy0nKSAqL1xuICAgICAgICAgIHJldHVybiArMTtcbiAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgICAgIGNvbnN0IHBtSW5mbzogUG9zaXRpb25Nb25vbWVySW5mbyA9IGVudHJ5WzFdO1xuICAgICAgICAvLyBjb25zdCBtOiBzdHJpbmcgPSBlbnRyeVswXTtcbiAgICAgICAgY29uc3QgaDogbnVtYmVyID0gbWF4SGVpZ2h0ICogcG1JbmZvLmNvdW50IC8gcm93Q291bnQ7XG5cbiAgICAgICAgcG1JbmZvLmJvdW5kcyA9IG5ldyBERy5SZWN0KGpQb3MgKiB0aGlzLnBvc2l0aW9uV2lkdGgsIHksIHRoaXMucG9zaXRpb25XaWR0aCwgaCk7XG4gICAgICAgIHkgKz0gaDtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8jZW5kcmVnaW9uXG4gIH1cblxuICAvLyByZWZsZWN0IGNoYW5nZXMgbWFkZSB0byBmaWx0ZXIvc2VsZWN0aW9uXG4gIHJlbmRlcihyZWNhbGMgPSB0cnVlKSB7XG4gICAgaWYgKHRoaXMubXNnSG9zdCkge1xuICAgICAgaWYgKHRoaXMuc2VxQ29sICYmICF0aGlzLmNwKSB7XG4gICAgICAgIHRoaXMubXNnSG9zdCEuaW5uZXJUZXh0ID0gYFVua25vd24gcGFsZXR0ZSAoY29sdW1uIHNlbVR5cGU6ICcke3RoaXMuc2VxQ29sLnNlbVR5cGV9JykuYDtcbiAgICAgICAgdGhpcy5tc2dIb3N0IS5zdHlsZS5kaXNwbGF5ID0gJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1zZ0hvc3QhLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmNhbnZhcyB8fCAhdGhpcy5zZXFDb2wgfHwgIXRoaXMuZGF0YUZyYW1lIHx8ICF0aGlzLmNwIHx8XG4gICAgICB0aGlzLnN0YXJ0UG9zaXRpb24gPT09IC0xIHx8IHRoaXMuZW5kUG9zaXRpb24gPT09IC0xKVxuICAgICAgcmV0dXJuO1xuXG4gICAgY29uc3QgZyA9IHRoaXMuY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgaWYgKCFnKSByZXR1cm47XG5cbiAgICBpZiAocmVjYWxjKVxuICAgICAgdGhpcy5fY2FsY3VsYXRlKCk7XG5cbiAgICAvLyBsZXQgcm93Q291bnQgPSB0aGlzLnJvd3NNYXNrZWQ7XG4gICAgLy8gaWYgKCF0aGlzLmNvbnNpZGVyTnVsbFNlcXVlbmNlcylcbiAgICAvLyAgIHJvd0NvdW50IC09IHRoaXMucm93c051bGw7XG5cbiAgICBnLnJlc2V0VHJhbnNmb3JtKCk7XG4gICAgLy9nLmNsZWFyUmVjdCgwLCAwLCB0aGlzLmNhbnZhcy53aWR0aCwgdGhpcy5jYW52YXMuaGVpZ2h0KTtcbiAgICBnLmZpbGxTdHlsZSA9ICd3aGl0ZSc7XG4gICAgZy5maWxsUmVjdCgwLCAwLCB0aGlzLmNhbnZhcy53aWR0aCwgdGhpcy5jYW52YXMuaGVpZ2h0KTtcbiAgICBnLnRleHRCYXNlbGluZSA9IHRoaXMudGV4dEJhc2VsaW5lO1xuXG4gICAgLy8jcmVnaW9uIFBsb3QgcG9zaXRpb25OYW1lc1xuICAgIGcucmVzZXRUcmFuc2Zvcm0oKTtcbiAgICBnLmZpbGxTdHlsZSA9ICdibGFjayc7XG4gICAgZy50ZXh0QWxpZ24gPSAnY2VudGVyJztcbiAgICBnLmZvbnQgPSAnMTBweCBSb2JvdG8sIFJvYm90byBMb2NhbCwgc2Fucy1zZXJpZic7XG4gICAgY29uc3QgcG9zTmFtZU1heFdpZHRoID0gTWF0aC5tYXgoLi4udGhpcy5wb3NpdGlvbnMubWFwKChwb3MpID0+IGcubWVhc3VyZVRleHQocG9zLm5hbWUpLndpZHRoKSk7XG4gICAgY29uc3QgaFNjYWxlID0gcG9zTmFtZU1heFdpZHRoIDwgKHRoaXMucG9zaXRpb25XaWR0aCAtIDIpID8gMSA6ICh0aGlzLnBvc2l0aW9uV2lkdGggLSAyKSAvIHBvc05hbWVNYXhXaWR0aDtcblxuICAgIGZvciAobGV0IGpQb3MgPSAwOyBqUG9zIDwgdGhpcy5MZW5ndGg7IGpQb3MrKykge1xuICAgICAgY29uc3QgcG9zOiBQb3NpdGlvbkluZm8gPSB0aGlzLnBvc2l0aW9uc1tqUG9zXTtcbiAgICAgIGcucmVzZXRUcmFuc2Zvcm0oKTtcbiAgICAgIGcuc2V0VHJhbnNmb3JtKFxuICAgICAgICBoU2NhbGUsIDAsIDAsIDEsXG4gICAgICAgIGpQb3MgKiB0aGlzLnBvc2l0aW9uV2lkdGggKyB0aGlzLnBvc2l0aW9uV2lkdGggLyAyLCAwKTtcbiAgICAgIGcuZmlsbFRleHQocG9zLm5hbWUsIDAsIDApO1xuICAgIH1cbiAgICAvLyNlbmRyZWdpb24gUGxvdCBwb3NpdGlvbk5hbWVzXG5cbiAgICBmb3IgKGxldCBqUG9zID0gMDsgalBvcyA8IHRoaXMuTGVuZ3RoOyBqUG9zKyspIHtcbiAgICAgIGZvciAoY29uc3QgW21vbm9tZXIsIHBtSW5mb10gb2YgT2JqZWN0LmVudHJpZXModGhpcy5wb3NpdGlvbnNbalBvc10uZnJlcSkpIHtcbiAgICAgICAgaWYgKG1vbm9tZXIgIT09ICctJykge1xuICAgICAgICAgIGNvbnN0IGIgPSBwbUluZm8uYm91bmRzO1xuXG4gICAgICAgICAgY29uc3QgZm9udFN0eWxlID0gJzE2cHggUm9ib3RvLCBSb2JvdG8gTG9jYWwsIHNhbnMtc2VyaWYnO1xuICAgICAgICAgIC8vIEhhY2tzIHRvIHNjYWxlIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIHRvIHRhcmdldCByZWN0YW5nbGVcbiAgICAgICAgICBjb25zdCB1cHBlcmNhc2VMZXR0ZXJBc2NlbnQgPSAwLjI1O1xuICAgICAgICAgIGNvbnN0IHVwcGVyY2FzZUxldHRlckhlaWdodCA9IDEyLjI7XG5cbiAgICAgICAgICBnLnJlc2V0VHJhbnNmb3JtKCk7XG4gICAgICAgICAgZy5zdHJva2VTdHlsZSA9ICdsaWdodGdyYXknO1xuICAgICAgICAgIGcubGluZVdpZHRoID0gMTtcbiAgICAgICAgICBnLnJlY3QoYi5sZWZ0LCBiLnRvcCwgYi53aWR0aCwgYi5oZWlnaHQpO1xuICAgICAgICAgIGcuZmlsbFN0eWxlID0gdGhpcy5jcFttb25vbWVyXSA/PyB0aGlzLmNwWydvdGhlciddO1xuICAgICAgICAgIGcudGV4dEFsaWduID0gJ2xlZnQnO1xuICAgICAgICAgIGcuZm9udCA9IGZvbnRTdHlsZTtcbiAgICAgICAgICAvL2cuZmlsbFJlY3QoYi5sZWZ0LCBiLnRvcCwgYi53aWR0aCwgYi5oZWlnaHQpO1xuICAgICAgICAgIGNvbnN0IG1UbTogVGV4dE1ldHJpY3MgPSBnLm1lYXN1cmVUZXh0KG1vbm9tZXIpO1xuXG4gICAgICAgICAgLy8gaWYgKG1NLmFjdHVhbEJvdW5kaW5nQm94QXNjZW50ICE9IDApXG4gICAgICAgICAgLy8gICBjb25zb2xlLmRlYnVnKGBtOiAke219LCBtTS5hY3R1YWxCb3VuZGluZ0JveEFzY2VudDogJHttTS5hY3R1YWxCb3VuZGluZ0JveEFzY2VudH1gKTtcblxuICAgICAgICAgIGcuc2V0VHJhbnNmb3JtKFxuICAgICAgICAgICAgYi53aWR0aCAvIG1UbS53aWR0aCwgMCwgMCwgYi5oZWlnaHQgLyB1cHBlcmNhc2VMZXR0ZXJIZWlnaHQsXG4gICAgICAgICAgICBiLmxlZnQsIGIudG9wKTtcbiAgICAgICAgICBnLmZpbGxUZXh0KG1vbm9tZXIsIDAsIC11cHBlcmNhc2VMZXR0ZXJBc2NlbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
720
|
+
|
|
721
|
+
/***/ }),
|
|
722
|
+
|
|
723
|
+
/***/ "./src/seq_align.ts":
|
|
724
|
+
/*!**************************!*\
|
|
725
|
+
!*** ./src/seq_align.ts ***!
|
|
726
|
+
\**************************/
|
|
727
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
728
|
+
|
|
729
|
+
__webpack_require__.r(__webpack_exports__);
|
|
730
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
731
|
+
/* harmony export */ "Aligned": () => (/* binding */ Aligned),
|
|
732
|
+
/* harmony export */ "SequenceAlignment": () => (/* binding */ SequenceAlignment)
|
|
733
|
+
/* harmony export */ });
|
|
734
|
+
class Cell {
|
|
735
|
+
constructor() {
|
|
736
|
+
this.value = 0;
|
|
737
|
+
this.parentI = 0;
|
|
738
|
+
this.parentJ = 0;
|
|
739
|
+
}
|
|
740
|
+
}
|
|
741
|
+
;
|
|
742
|
+
class Aligned {
|
|
743
|
+
constructor(seq1_, seq2_, score_) {
|
|
744
|
+
this.seq1 = seq1_;
|
|
745
|
+
this.seq2 = seq2_;
|
|
746
|
+
this.score = score_;
|
|
747
|
+
}
|
|
748
|
+
}
|
|
749
|
+
;
|
|
750
|
+
class SequenceAlignment {
|
|
751
|
+
constructor(seq1_, seq2_, gap_, alignGrid_ = "") {
|
|
752
|
+
this.seq1 = '';
|
|
753
|
+
this.seq2 = '';
|
|
754
|
+
this.gap = 1;
|
|
755
|
+
this.len1 = 0;
|
|
756
|
+
this.len2 = 0;
|
|
757
|
+
this.step = 1;
|
|
758
|
+
this.alignGrid = [];
|
|
759
|
+
this.scores = [];
|
|
760
|
+
this.dpGrid = [];
|
|
761
|
+
this.connections = {};
|
|
762
|
+
this.BLOSUM45 = [[5, -2, -1, -2, -1, -1, -1, 0, -2, -1, -1, -1, -1, -2, -1, 1, 0, -2, -2, 0, -1, -1, 0, -5],
|
|
763
|
+
[-2, 7, 0, -1, -3, 1, 0, -2, 0, -3, -2, 3, -1, -2, -2, -1, -1, -2, -1, -2, -1, 0, -1, -5],
|
|
764
|
+
[-1, 0, 6, 2, -2, 0, 0, 0, 1, -2, -3, 0, -2, -2, -2, 1, 0, -4, -2, -3, 4, 0, -1, -5],
|
|
765
|
+
[-2, -1, 2, 7, -3, 0, 2, -1, 0, -4, -3, 0, -3, -4, -1, 0, -1, -4, -2, -3, 5, 1, -1, -5],
|
|
766
|
+
[-1, -3, -2, -3, 12, -3, -3, -3, -3, -3, -2, -3, -2, -2, -4, -1, -1, -5, -3, -1, -2, -3, -2, -5],
|
|
767
|
+
[-1, 1, 0, 0, -3, 6, 2, -2, 1, -2, -2, 1, 0, -4, -1, 0, -1, -2, -1, -3, 0, 4, -1, -5],
|
|
768
|
+
[-1, 0, 0, 2, -3, 2, 6, -2, 0, -3, -2, 1, -2, -3, 0, 0, -1, -3, -2, -3, 1, 4, -1, -5],
|
|
769
|
+
[0, -2, 0, -1, -3, -2, -2, 7, -2, -4, -3, -2, -2, -3, -2, 0, -2, -2, -3, -3, -1, -2, -1, -5],
|
|
770
|
+
[-2, 0, 1, 0, -3, 1, 0, -2, 10, -3, -2, -1, 0, -2, -2, -1, -2, -3, 2, -3, 0, 0, -1, -5],
|
|
771
|
+
[-1, -3, -2, -4, -3, -2, -3, -4, -3, 5, 2, -3, 2, 0, -2, -2, -1, -2, 0, 3, -3, -3, -1, -5],
|
|
772
|
+
[-1, -2, -3, -3, -2, -2, -2, -3, -2, 2, 5, -3, 2, 1, -3, -3, -1, -2, 0, 1, -3, -2, -1, -5],
|
|
773
|
+
[-1, 3, 0, 0, -3, 1, 1, -2, -1, -3, -3, 5, -1, -3, -1, -1, -1, -2, -1, -2, 0, 1, -1, -5],
|
|
774
|
+
[-1, -1, -2, -3, -2, 0, -2, -2, 0, 2, 2, -1, 6, 0, -2, -2, -1, -2, 0, 1, -2, -1, -1, -5],
|
|
775
|
+
[-2, -2, -2, -4, -2, -4, -3, -3, -2, 0, 1, -3, 0, 8, -3, -2, -1, 1, 3, 0, -3, -3, -1, -5],
|
|
776
|
+
[-1, -2, -2, -1, -4, -1, 0, -2, -2, -2, -3, -1, -2, -3, 9, -1, -1, -3, -3, -3, -2, -1, -1, -5],
|
|
777
|
+
[1, -1, 1, 0, -1, 0, 0, 0, -1, -2, -3, -1, -2, -2, -1, 4, 2, -4, -2, -1, 0, 0, 0, -5],
|
|
778
|
+
[0, -1, 0, -1, -1, -1, -1, -2, -2, -1, -1, -1, -1, -1, -1, 2, 5, -3, -1, 0, 0, -1, 0, -5],
|
|
779
|
+
[-2, -2, -4, -4, -5, -2, -3, -2, -3, -2, -2, -2, -2, 1, -3, -4, -3, 15, 3, -3, -4, -2, -2, -5],
|
|
780
|
+
[-2, -1, -2, -2, -3, -1, -2, -3, 2, 0, 0, -1, 0, 3, -3, -2, -1, 3, 8, -1, -2, -2, -1, -5],
|
|
781
|
+
[0, -2, -3, -3, -1, -3, -3, -3, -3, 3, 1, -2, 1, 0, -3, -1, 0, -3, -1, 5, -3, -3, -1, -5],
|
|
782
|
+
[-1, -1, 4, 5, -2, 0, 1, -1, 0, -3, -3, 0, -2, -3, -2, 0, 0, -4, -2, -3, 4, 2, -1, -5],
|
|
783
|
+
[-1, 0, 0, 1, -3, 4, 4, -2, 0, -3, -2, 1, -1, -3, -1, 0, -1, -2, -2, -3, 2, 4, -1, -5],
|
|
784
|
+
[0, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -2, -1, -1, -1, -1, -1, -5],
|
|
785
|
+
[-5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, 1]];
|
|
786
|
+
this.BLOSUM50 = [[5, -2, -1, -2, -1, -1, -1, 0, -2, -1, -2, -1, -1, -3, -1, 1, 0, -3, -2, 0, -2, -1, -1, -5],
|
|
787
|
+
[-2, 7, -1, -2, -4, 1, 0, -3, 0, -4, -3, 3, -2, -3, -3, -1, -1, -3, -1, -3, -1, 0, -1, -5],
|
|
788
|
+
[-1, -1, 7, 2, -2, 0, 0, 0, 1, -3, -4, 0, -2, -4, -2, 1, 0, -4, -2, -3, 4, 0, -1, -5],
|
|
789
|
+
[-2, -2, 2, 8, -4, 0, 2, -1, -1, -4, -4, -1, -4, -5, -1, 0, -1, -5, -3, -4, 5, 1, -1, -5],
|
|
790
|
+
[-1, -4, -2, -4, 13, -3, -3, -3, -3, -2, -2, -3, -2, -2, -4, -1, -1, -5, -3, -1, -3, -3, -2, -5],
|
|
791
|
+
[-1, 1, 0, 0, -3, 7, 2, -2, 1, -3, -2, 2, 0, -4, -1, 0, -1, -1, -1, -3, 0, 4, -1, -5],
|
|
792
|
+
[-1, 0, 0, 2, -3, 2, 6, -3, 0, -4, -3, 1, -2, -3, -1, -1, -1, -3, -2, -3, 1, 5, -1, -5],
|
|
793
|
+
[0, -3, 0, -1, -3, -2, -3, 8, -2, -4, -4, -2, -3, -4, -2, 0, -2, -3, -3, -4, -1, -2, -2, -5],
|
|
794
|
+
[-2, 0, 1, -1, -3, 1, 0, -2, 10, -4, -3, 0, -1, -1, -2, -1, -2, -3, 2, -4, 0, 0, -1, -5],
|
|
795
|
+
[-1, -4, -3, -4, -2, -3, -4, -4, -4, 5, 2, -3, 2, 0, -3, -3, -1, -3, -1, 4, -4, -3, -1, -5],
|
|
796
|
+
[-2, -3, -4, -4, -2, -2, -3, -4, -3, 2, 5, -3, 3, 1, -4, -3, -1, -2, -1, 1, -4, -3, -1, -5],
|
|
797
|
+
[-1, 3, 0, -1, -3, 2, 1, -2, 0, -3, -3, 6, -2, -4, -1, 0, -1, -3, -2, -3, 0, 1, -1, -5],
|
|
798
|
+
[-1, -2, -2, -4, -2, 0, -2, -3, -1, 2, 3, -2, 7, 0, -3, -2, -1, -1, 0, 1, -3, -1, -1, -5],
|
|
799
|
+
[-3, -3, -4, -5, -2, -4, -3, -4, -1, 0, 1, -4, 0, 8, -4, -3, -2, 1, 4, -1, -4, -4, -2, -5],
|
|
800
|
+
[-1, -3, -2, -1, -4, -1, -1, -2, -2, -3, -4, -1, -3, -4, 10, -1, -1, -4, -3, -3, -2, -1, -2, -5],
|
|
801
|
+
[1, -1, 1, 0, -1, 0, -1, 0, -1, -3, -3, 0, -2, -3, -1, 5, 2, -4, -2, -2, 0, 0, -1, -5],
|
|
802
|
+
[0, -1, 0, -1, -1, -1, -1, -2, -2, -1, -1, -1, -1, -2, -1, 2, 5, -3, -2, 0, 0, -1, 0, -5],
|
|
803
|
+
[-3, -3, -4, -5, -5, -1, -3, -3, -3, -3, -2, -3, -1, 1, -4, -4, -3, 15, 2, -3, -5, -2, -3, -5],
|
|
804
|
+
[-2, -1, -2, -3, -3, -1, -2, -3, 2, -1, -1, -2, 0, 4, -3, -2, -2, 2, 8, -1, -3, -2, -1, -5],
|
|
805
|
+
[0, -3, -3, -4, -1, -3, -3, -4, -4, 4, 1, -3, 1, -1, -3, -2, 0, -3, -1, 5, -4, -3, -1, -5],
|
|
806
|
+
[-2, -1, 4, 5, -3, 0, 1, -1, 0, -4, -4, 0, -3, -4, -2, 0, 0, -5, -3, -4, 5, 2, -1, -5],
|
|
807
|
+
[-1, 0, 0, 1, -3, 4, 5, -2, 0, -3, -3, 1, -1, -4, -1, 0, -1, -2, -2, -3, 2, 5, -1, -5],
|
|
808
|
+
[-1, -1, -1, -1, -2, -1, -1, -2, -1, -1, -1, -1, -1, -2, -2, -1, 0, -3, -1, -1, -1, -1, -1, -5],
|
|
809
|
+
[-5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, 1]];
|
|
810
|
+
this.BLOSUM62 = [[4, -1, -2, -2, 0, -1, -1, 0, -2, -1, -1, -1, -1, -2, -1, 1, 0, -3, -2, 0, -2, -1, 0, -4],
|
|
811
|
+
[-1, 5, 0, -2, -3, 1, 0, -2, 0, -3, -2, 2, -1, -3, -2, -1, -1, -3, -2, -3, -1, 0, -1, -4],
|
|
812
|
+
[-2, 0, 6, 1, -3, 0, 0, 0, 1, -3, -3, 0, -2, -3, -2, 1, 0, -4, -2, -3, 3, 0, -1, -4],
|
|
813
|
+
[-2, -2, 1, 6, -3, 0, 2, -1, -1, -3, -4, -1, -3, -3, -1, 0, -1, -4, -3, -3, 4, 1, -1, -4],
|
|
814
|
+
[0, -3, -3, -3, 9, -3, -4, -3, -3, -1, -1, -3, -1, -2, -3, -1, -1, -2, -2, -1, -3, -3, -2, -4],
|
|
815
|
+
[-1, 1, 0, 0, -3, 5, 2, -2, 0, -3, -2, 1, 0, -3, -1, 0, -1, -2, -1, -2, 0, 3, -1, -4],
|
|
816
|
+
[-1, 0, 0, 2, -4, 2, 5, -2, 0, -3, -3, 1, -2, -3, -1, 0, -1, -3, -2, -2, 1, 4, -1, -4],
|
|
817
|
+
[0, -2, 0, -1, -3, -2, -2, 6, -2, -4, -4, -2, -3, -3, -2, 0, -2, -2, -3, -3, -1, -2, -1, -4],
|
|
818
|
+
[-2, 0, 1, -1, -3, 0, 0, -2, 8, -3, -3, -1, -2, -1, -2, -1, -2, -2, 2, -3, 0, 0, -1, -4],
|
|
819
|
+
[-1, -3, -3, -3, -1, -3, -3, -4, -3, 4, 2, -3, 1, 0, -3, -2, -1, -3, -1, 3, -3, -3, -1, -4],
|
|
820
|
+
[-1, -2, -3, -4, -1, -2, -3, -4, -3, 2, 4, -2, 2, 0, -3, -2, -1, -2, -1, 1, -4, -3, -1, -4],
|
|
821
|
+
[-1, 2, 0, -1, -3, 1, 1, -2, -1, -3, -2, 5, -1, -3, -1, 0, -1, -3, -2, -2, 0, 1, -1, -4],
|
|
822
|
+
[-1, -1, -2, -3, -1, 0, -2, -3, -2, 1, 2, -1, 5, 0, -2, -1, -1, -1, -1, 1, -3, -1, -1, -4],
|
|
823
|
+
[-2, -3, -3, -3, -2, -3, -3, -3, -1, 0, 0, -3, 0, 6, -4, -2, -2, 1, 3, -1, -3, -3, -1, -4],
|
|
824
|
+
[-1, -2, -2, -1, -3, -1, -1, -2, -2, -3, -3, -1, -2, -4, 7, -1, -1, -4, -3, -2, -2, -1, -2, -4],
|
|
825
|
+
[1, -1, 1, 0, -1, 0, 0, 0, -1, -2, -2, 0, -1, -2, -1, 4, 1, -3, -2, -2, 0, 0, 0, -4],
|
|
826
|
+
[0, -1, 0, -1, -1, -1, -1, -2, -2, -1, -1, -1, -1, -2, -1, 1, 5, -2, -2, 0, -1, -1, 0, -4],
|
|
827
|
+
[-3, -3, -4, -4, -2, -2, -3, -2, -2, -3, -2, -3, -1, 1, -4, -3, -2, 11, 2, -3, -4, -3, -2, -4],
|
|
828
|
+
[-2, -2, -2, -3, -2, -1, -2, -3, 2, -1, -1, -2, -1, 3, -3, -2, -2, 2, 7, -1, -3, -2, -1, -4],
|
|
829
|
+
[0, -3, -3, -3, -1, -2, -2, -3, -3, 3, 1, -2, 1, -1, -2, -2, 0, -3, -1, 4, -3, -2, -1, -4],
|
|
830
|
+
[-2, -1, 3, 4, -3, 0, 1, -1, 0, -3, -4, 0, -3, -3, -2, 0, -1, -4, -3, -3, 4, 1, -1, -4],
|
|
831
|
+
[-1, 0, 0, 1, -3, 3, 4, -2, 0, -3, -3, 1, -1, -3, -1, 0, -1, -3, -2, -2, 1, 4, -1, -4],
|
|
832
|
+
[0, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, 0, 0, -2, -1, -1, -1, -1, -1, -4],
|
|
833
|
+
[-4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, 1]];
|
|
834
|
+
this.BLOSUM80 = [[7, -3, -3, -3, -1, -2, -2, 0, -3, -3, -3, -1, -2, -4, -1, 2, 0, -5, -4, -1, -3, -2, -1, -8],
|
|
835
|
+
[-3, 9, -1, -3, -6, 1, -1, -4, 0, -5, -4, 3, -3, -5, -3, -2, -2, -5, -4, -4, -2, 0, -2, -8],
|
|
836
|
+
[-3, -1, 9, 2, -5, 0, -1, -1, 1, -6, -6, 0, -4, -6, -4, 1, 0, -7, -4, -5, 5, -1, -2, -8],
|
|
837
|
+
[-3, -3, 2, 10, -7, -1, 2, -3, -2, -7, -7, -2, -6, -6, -3, -1, -2, -8, -6, -6, 6, 1, -3, -8],
|
|
838
|
+
[-1, -6, -5, -7, 13, -5, -7, -6, -7, -2, -3, -6, -3, -4, -6, -2, -2, -5, -5, -2, -6, -7, -4, -8],
|
|
839
|
+
[-2, 1, 0, -1, -5, 9, 3, -4, 1, -5, -4, 2, -1, -5, -3, -1, -1, -4, -3, -4, -1, 5, -2, -8],
|
|
840
|
+
[-2, -1, -1, 2, -7, 3, 8, -4, 0, -6, -6, 1, -4, -6, -2, -1, -2, -6, -5, -4, 1, 6, -2, -8],
|
|
841
|
+
[0, -4, -1, -3, -6, -4, -4, 9, -4, -7, -7, -3, -5, -6, -5, -1, -3, -6, -6, -6, -2, -4, -3, -8],
|
|
842
|
+
[-3, 0, 1, -2, -7, 1, 0, -4, 12, -6, -5, -1, -4, -2, -4, -2, -3, -4, 3, -5, -1, 0, -2, -8],
|
|
843
|
+
[-3, -5, -6, -7, -2, -5, -6, -7, -6, 7, 2, -5, 2, -1, -5, -4, -2, -5, -3, 4, -6, -6, -2, -8],
|
|
844
|
+
[-3, -4, -6, -7, -3, -4, -6, -7, -5, 2, 6, -4, 3, 0, -5, -4, -3, -4, -2, 1, -7, -5, -2, -8],
|
|
845
|
+
[-1, 3, 0, -2, -6, 2, 1, -3, -1, -5, -4, 8, -3, -5, -2, -1, -1, -6, -4, -4, -1, 1, -2, -8],
|
|
846
|
+
[-2, -3, -4, -6, -3, -1, -4, -5, -4, 2, 3, -3, 9, 0, -4, -3, -1, -3, -3, 1, -5, -3, -2, -8],
|
|
847
|
+
[-4, -5, -6, -6, -4, -5, -6, -6, -2, -1, 0, -5, 0, 10, -6, -4, -4, 0, 4, -2, -6, -6, -3, -8],
|
|
848
|
+
[-1, -3, -4, -3, -6, -3, -2, -5, -4, -5, -5, -2, -4, -6, 12, -2, -3, -7, -6, -4, -4, -2, -3, -8],
|
|
849
|
+
[2, -2, 1, -1, -2, -1, -1, -1, -2, -4, -4, -1, -3, -4, -2, 7, 2, -6, -3, -3, 0, -1, -1, -8],
|
|
850
|
+
[0, -2, 0, -2, -2, -1, -2, -3, -3, -2, -3, -1, -1, -4, -3, 2, 8, -5, -3, 0, -1, -2, -1, -8],
|
|
851
|
+
[-5, -5, -7, -8, -5, -4, -6, -6, -4, -5, -4, -6, -3, 0, -7, -6, -5, 16, 3, -5, -8, -5, -5, -8],
|
|
852
|
+
[-4, -4, -4, -6, -5, -3, -5, -6, 3, -3, -2, -4, -3, 4, -6, -3, -3, 3, 11, -3, -5, -4, -3, -8],
|
|
853
|
+
[-1, -4, -5, -6, -2, -4, -4, -6, -5, 4, 1, -4, 1, -2, -4, -3, 0, -5, -3, 7, -6, -4, -2, -8],
|
|
854
|
+
[-3, -2, 5, 6, -6, -1, 1, -2, -1, -6, -7, -1, -5, -6, -4, 0, -1, -8, -5, -6, 6, 0, -3, -8],
|
|
855
|
+
[-2, 0, -1, 1, -7, 5, 6, -4, 0, -6, -5, 1, -3, -6, -2, -1, -2, -5, -4, -4, 0, 6, -1, -8],
|
|
856
|
+
[-1, -2, -2, -3, -4, -2, -2, -3, -2, -2, -2, -2, -2, -3, -3, -1, -1, -5, -3, -2, -3, -1, -2, -8],
|
|
857
|
+
[-8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, 1]];
|
|
858
|
+
this.BLOSUM90 = [[5, -2, -2, -3, -1, -1, -1, 0, -2, -2, -2, -1, -2, -3, -1, 1, 0, -4, -3, -1, -2, -1, -1, -6],
|
|
859
|
+
[-2, 6, -1, -3, -5, 1, -1, -3, 0, -4, -3, 2, -2, -4, -3, -1, -2, -4, -3, -3, -2, 0, -2, -6],
|
|
860
|
+
[-2, -1, 7, 1, -4, 0, -1, -1, 0, -4, -4, 0, -3, -4, -3, 0, 0, -5, -3, -4, 4, -1, -2, -6],
|
|
861
|
+
[-3, -3, 1, 7, -5, -1, 1, -2, -2, -5, -5, -1, -4, -5, -3, -1, -2, -6, -4, -5, 4, 0, -2, -6],
|
|
862
|
+
[-1, -5, -4, -5, 9, -4, -6, -4, -5, -2, -2, -4, -2, -3, -4, -2, -2, -4, -4, -2, -4, -5, -3, -6],
|
|
863
|
+
[-1, 1, 0, -1, -4, 7, 2, -3, 1, -4, -3, 1, 0, -4, -2, -1, -1, -3, -3, -3, -1, 4, -1, -6],
|
|
864
|
+
[-1, -1, -1, 1, -6, 2, 6, -3, -1, -4, -4, 0, -3, -5, -2, -1, -1, -5, -4, -3, 0, 4, -2, -6],
|
|
865
|
+
[0, -3, -1, -2, -4, -3, -3, 6, -3, -5, -5, -2, -4, -5, -3, -1, -3, -4, -5, -5, -2, -3, -2, -6],
|
|
866
|
+
[-2, 0, 0, -2, -5, 1, -1, -3, 8, -4, -4, -1, -3, -2, -3, -2, -2, -3, 1, -4, -1, 0, -2, -6],
|
|
867
|
+
[-2, -4, -4, -5, -2, -4, -4, -5, -4, 5, 1, -4, 1, -1, -4, -3, -1, -4, -2, 3, -5, -4, -2, -6],
|
|
868
|
+
[-2, -3, -4, -5, -2, -3, -4, -5, -4, 1, 5, -3, 2, 0, -4, -3, -2, -3, -2, 0, -5, -4, -2, -6],
|
|
869
|
+
[-1, 2, 0, -1, -4, 1, 0, -2, -1, -4, -3, 6, -2, -4, -2, -1, -1, -5, -3, -3, -1, 1, -1, -6],
|
|
870
|
+
[-2, -2, -3, -4, -2, 0, -3, -4, -3, 1, 2, -2, 7, -1, -3, -2, -1, -2, -2, 0, -4, -2, -1, -6],
|
|
871
|
+
[-3, -4, -4, -5, -3, -4, -5, -5, -2, -1, 0, -4, -1, 7, -4, -3, -3, 0, 3, -2, -4, -4, -2, -6],
|
|
872
|
+
[-1, -3, -3, -3, -4, -2, -2, -3, -3, -4, -4, -2, -3, -4, 8, -2, -2, -5, -4, -3, -3, -2, -2, -6],
|
|
873
|
+
[1, -1, 0, -1, -2, -1, -1, -1, -2, -3, -3, -1, -2, -3, -2, 5, 1, -4, -3, -2, 0, -1, -1, -6],
|
|
874
|
+
[0, -2, 0, -2, -2, -1, -1, -3, -2, -1, -2, -1, -1, -3, -2, 1, 6, -4, -2, -1, -1, -1, -1, -6],
|
|
875
|
+
[-4, -4, -5, -6, -4, -3, -5, -4, -3, -4, -3, -5, -2, 0, -5, -4, -4, 11, 2, -3, -6, -4, -3, -6],
|
|
876
|
+
[-3, -3, -3, -4, -4, -3, -4, -5, 1, -2, -2, -3, -2, 3, -4, -3, -2, 2, 8, -3, -4, -3, -2, -6],
|
|
877
|
+
[-1, -3, -4, -5, -2, -3, -3, -5, -4, 3, 0, -3, 0, -2, -3, -2, -1, -3, -3, 5, -4, -3, -2, -6],
|
|
878
|
+
[-2, -2, 4, 4, -4, -1, 0, -2, -1, -5, -5, -1, -4, -4, -3, 0, -1, -6, -4, -4, 4, 0, -2, -6],
|
|
879
|
+
[-1, 0, -1, 0, -5, 4, 4, -3, 0, -4, -4, 1, -2, -4, -2, -1, -1, -4, -3, -3, 0, 4, -1, -6],
|
|
880
|
+
[-1, -2, -2, -2, -3, -1, -2, -2, -2, -2, -2, -1, -1, -2, -2, -1, -1, -3, -2, -2, -2, -1, -2, -6],
|
|
881
|
+
[-6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, -6, 1]];
|
|
882
|
+
this.NUCLEOTIDES = [[1, -1, -1, -1],
|
|
883
|
+
[-1, 1, -1, -1],
|
|
884
|
+
[-1, -1, 1, -1],
|
|
885
|
+
[-1, -1, -1, 1]];
|
|
886
|
+
this.PAM30 = [[6, -7, -4, -3, -6, -4, -2, -2, -7, -5, -6, -7, -5, -8, -2, 0, -1, -13, -8, -2, -3, -3, -3, -17],
|
|
887
|
+
[-7, 8, -6, -10, -8, -2, -9, -9, -2, -5, -8, 0, -4, -9, -4, -3, -6, -2, -10, -8, -7, -4, -6, -17],
|
|
888
|
+
[-4, -6, 8, 2, -11, -3, -2, -3, 0, -5, -7, -1, -9, -9, -6, 0, -2, -8, -4, -8, 6, -3, -3, -17],
|
|
889
|
+
[-3, -10, 2, 8, -14, -2, 2, -3, -4, -7, -12, -4, -11, -15, -8, -4, -5, -15, -11, -8, 6, 1, -5, -17],
|
|
890
|
+
[-6, -8, -11, -14, 10, -14, -14, -9, -7, -6, -15, -14, -13, -13, -8, -3, -8, -15, -4, -6, -12, -14, -9, -17],
|
|
891
|
+
[-4, -2, -3, -2, -14, 8, 1, -7, 1, -8, -5, -3, -4, -13, -3, -5, -5, -13, -12, -7, -3, 6, -5, -17],
|
|
892
|
+
[-2, -9, -2, 2, -14, 1, 8, -4, -5, -5, -9, -4, -7, -14, -5, -4, -6, -17, -8, -6, 1, 6, -5, -17],
|
|
893
|
+
[-2, -9, -3, -3, -9, -7, -4, 6, -9, -11, -10, -7, -8, -9, -6, -2, -6, -15, -14, -5, -3, -5, -5, -17],
|
|
894
|
+
[-7, -2, 0, -4, -7, 1, -5, -9, 9, -9, -6, -6, -10, -6, -4, -6, -7, -7, -3, -6, -1, -1, -5, -17],
|
|
895
|
+
[-5, -5, -5, -7, -6, -8, -5, -11, -9, 8, -1, -6, -1, -2, -8, -7, -2, -14, -6, 2, -6, -6, -5, -17],
|
|
896
|
+
[-6, -8, -7, -12, -15, -5, -9, -10, -6, -1, 7, -8, 1, -3, -7, -8, -7, -6, -7, -2, -9, -7, -6, -17],
|
|
897
|
+
[-7, 0, -1, -4, -14, -3, -4, -7, -6, -6, -8, 7, -2, -14, -6, -4, -3, -12, -9, -9, -2, -4, -5, -17],
|
|
898
|
+
[-5, -4, -9, -11, -13, -4, -7, -8, -10, -1, 1, -2, 11, -4, -8, -5, -4, -13, -11, -1, -10, -5, -5, -17],
|
|
899
|
+
[-8, -9, -9, -15, -13, -13, -14, -9, -6, -2, -3, -14, -4, 9, -10, -6, -9, -4, 2, -8, -10, -13, -8, -17],
|
|
900
|
+
[-2, -4, -6, -8, -8, -3, -5, -6, -4, -8, -7, -6, -8, -10, 8, -2, -4, -14, -13, -6, -7, -4, -5, -17],
|
|
901
|
+
[0, -3, 0, -4, -3, -5, -4, -2, -6, -7, -8, -4, -5, -6, -2, 6, 0, -5, -7, -6, -1, -5, -3, -17],
|
|
902
|
+
[-1, -6, -2, -5, -8, -5, -6, -6, -7, -2, -7, -3, -4, -9, -4, 0, 7, -13, -6, -3, -3, -6, -4, -17],
|
|
903
|
+
[-13, -2, -8, -15, -15, -13, -17, -15, -7, -14, -6, -12, -13, -4, -14, -5, -13, 13, -5, -15, -10, -14, -11, -17],
|
|
904
|
+
[-8, -10, -4, -11, -4, -12, -8, -14, -3, -6, -7, -9, -11, 2, -13, -7, -6, -5, 10, -7, -6, -9, -7, -17],
|
|
905
|
+
[-2, -8, -8, -8, -6, -7, -6, -5, -6, 2, -2, -9, -1, -8, -6, -6, -3, -15, -7, 7, -8, -6, -5, -17],
|
|
906
|
+
[-3, -7, 6, 6, -12, -3, 1, -3, -1, -6, -9, -2, -10, -10, -7, -1, -3, -10, -6, -8, 6, 0, -5, -17],
|
|
907
|
+
[-3, -4, -3, 1, -14, 6, 6, -5, -1, -6, -7, -4, -5, -13, -4, -5, -6, -14, -9, -6, 0, 6, -5, -17],
|
|
908
|
+
[-3, -6, -3, -5, -9, -5, -5, -5, -5, -5, -6, -5, -5, -8, -5, -3, -4, -11, -7, -5, -5, -5, -5, -17],
|
|
909
|
+
[-17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, 1]];
|
|
910
|
+
this.PAM70 = [[5, -4, -2, -1, -4, -2, -1, 0, -4, -2, -4, -4, -3, -6, 0, 1, 1, -9, -5, -1, -1, -1, -2, -11],
|
|
911
|
+
[-4, 8, -3, -6, -5, 0, -5, -6, 0, -3, -6, 2, -2, -7, -2, -1, -4, 0, -7, -5, -4, -2, -3, -11],
|
|
912
|
+
[-2, -3, 6, 3, -7, -1, 0, -1, 1, -3, -5, 0, -5, -6, -3, 1, 0, -6, -3, -5, 5, -1, -2, -11],
|
|
913
|
+
[-1, -6, 3, 6, -9, 0, 3, -1, -1, -5, -8, -2, -7, -10, -4, -1, -2, -10, -7, -5, 5, 2, -3, -11],
|
|
914
|
+
[-4, -5, -7, -9, 9, -9, -9, -6, -5, -4, -10, -9, -9, -8, -5, -1, -5, -11, -2, -4, -8, -9, -6, -11],
|
|
915
|
+
[-2, 0, -1, 0, -9, 7, 2, -4, 2, -5, -3, -1, -2, -9, -1, -3, -3, -8, -8, -4, -1, 5, -2, -11],
|
|
916
|
+
[-1, -5, 0, 3, -9, 2, 6, -2, -2, -4, -6, -2, -4, -9, -3, -2, -3, -11, -6, -4, 2, 5, -3, -11],
|
|
917
|
+
[0, -6, -1, -1, -6, -4, -2, 6, -6, -6, -7, -5, -6, -7, -3, 0, -3, -10, -9, -3, -1, -3, -3, -11],
|
|
918
|
+
[-4, 0, 1, -1, -5, 2, -2, -6, 8, -6, -4, -3, -6, -4, -2, -3, -4, -5, -1, -4, 0, 1, -3, -11],
|
|
919
|
+
[-2, -3, -3, -5, -4, -5, -4, -6, -6, 7, 1, -4, 1, 0, -5, -4, -1, -9, -4, 3, -4, -4, -3, -11],
|
|
920
|
+
[-4, -6, -5, -8, -10, -3, -6, -7, -4, 1, 6, -5, 2, -1, -5, -6, -4, -4, -4, 0, -6, -4, -4, -11],
|
|
921
|
+
[-4, 2, 0, -2, -9, -1, -2, -5, -3, -4, -5, 6, 0, -9, -4, -2, -1, -7, -7, -6, -1, -2, -3, -11],
|
|
922
|
+
[-3, -2, -5, -7, -9, -2, -4, -6, -6, 1, 2, 0, 10, -2, -5, -3, -2, -8, -7, 0, -6, -3, -3, -11],
|
|
923
|
+
[-6, -7, -6, -10, -8, -9, -9, -7, -4, 0, -1, -9, -2, 8, -7, -4, -6, -2, 4, -5, -7, -9, -5, -11],
|
|
924
|
+
[0, -2, -3, -4, -5, -1, -3, -3, -2, -5, -5, -4, -5, -7, 7, 0, -2, -9, -9, -3, -4, -2, -3, -11],
|
|
925
|
+
[1, -1, 1, -1, -1, -3, -2, 0, -3, -4, -6, -2, -3, -4, 0, 5, 2, -3, -5, -3, 0, -2, -1, -11],
|
|
926
|
+
[1, -4, 0, -2, -5, -3, -3, -3, -4, -1, -4, -1, -2, -6, -2, 2, 6, -8, -4, -1, -1, -3, -2, -11],
|
|
927
|
+
[-9, 0, -6, -10, -11, -8, -11, -10, -5, -9, -4, -7, -8, -2, -9, -3, -8, 13, -3, -10, -7, -10, -7, -11],
|
|
928
|
+
[-5, -7, -3, -7, -2, -8, -6, -9, -1, -4, -4, -7, -7, 4, -9, -5, -4, -3, 9, -5, -4, -7, -5, -11],
|
|
929
|
+
[-1, -5, -5, -5, -4, -4, -4, -3, -4, 3, 0, -6, 0, -5, -3, -3, -1, -10, -5, 6, -5, -4, -2, -11],
|
|
930
|
+
[-1, -4, 5, 5, -8, -1, 2, -1, 0, -4, -6, -1, -6, -7, -4, 0, -1, -7, -4, -5, 5, 1, -2, -11],
|
|
931
|
+
[-1, -2, -1, 2, -9, 5, 5, -3, 1, -4, -4, -2, -3, -9, -2, -2, -3, -10, -7, -4, 1, 5, -3, -11],
|
|
932
|
+
[-2, -3, -2, -3, -6, -2, -3, -3, -3, -3, -4, -3, -3, -5, -3, -1, -2, -7, -5, -2, -2, -3, -3, -11],
|
|
933
|
+
[-11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, -11, 1]];
|
|
934
|
+
this.PAM250 = [[2, -2, 0, 0, -2, 0, 0, 1, -1, -1, -2, -1, -1, -3, 1, 1, 1, -6, -3, 0, 0, 0, 0, -8],
|
|
935
|
+
[-2, 6, 0, -1, -4, 1, -1, -3, 2, -2, -3, 3, 0, -4, 0, 0, -1, 2, -4, -2, -1, 0, -1, -8],
|
|
936
|
+
[0, 0, 2, 2, -4, 1, 1, 0, 2, -2, -3, 1, -2, -3, 0, 1, 0, -4, -2, -2, 2, 1, 0, -8],
|
|
937
|
+
[0, -1, 2, 4, -5, 2, 3, 1, 1, -2, -4, 0, -3, -6, -1, 0, 0, -7, -4, -2, 3, 3, -1, -8],
|
|
938
|
+
[-2, -4, -4, -5, 12, -5, -5, -3, -3, -2, -6, -5, -5, -4, -3, 0, -2, -8, 0, -2, -4, -5, -3, -8],
|
|
939
|
+
[0, 1, 1, 2, -5, 4, 2, -1, 3, -2, -2, 1, -1, -5, 0, -1, -1, -5, -4, -2, 1, 3, -1, -8],
|
|
940
|
+
[0, -1, 1, 3, -5, 2, 4, 0, 1, -2, -3, 0, -2, -5, -1, 0, 0, -7, -4, -2, 3, 3, -1, -8],
|
|
941
|
+
[1, -3, 0, 1, -3, -1, 0, 5, -2, -3, -4, -2, -3, -5, 0, 1, 0, -7, -5, -1, 0, 0, -1, -8],
|
|
942
|
+
[-1, 2, 2, 1, -3, 3, 1, -2, 6, -2, -2, 0, -2, -2, 0, -1, -1, -3, 0, -2, 1, 2, -1, -8],
|
|
943
|
+
[-1, -2, -2, -2, -2, -2, -2, -3, -2, 5, 2, -2, 2, 1, -2, -1, 0, -5, -1, 4, -2, -2, -1, -8],
|
|
944
|
+
[-2, -3, -3, -4, -6, -2, -3, -4, -2, 2, 6, -3, 4, 2, -3, -3, -2, -2, -1, 2, -3, -3, -1, -8],
|
|
945
|
+
[-1, 3, 1, 0, -5, 1, 0, -2, 0, -2, -3, 5, 0, -5, -1, 0, 0, -3, -4, -2, 1, 0, -1, -8],
|
|
946
|
+
[-1, 0, -2, -3, -5, -1, -2, -3, -2, 2, 4, 0, 6, 0, -2, -2, -1, -4, -2, 2, -2, -2, -1, -8],
|
|
947
|
+
[-3, -4, -3, -6, -4, -5, -5, -5, -2, 1, 2, -5, 0, 9, -5, -3, -3, 0, 7, -1, -4, -5, -2, -8],
|
|
948
|
+
[1, 0, 0, -1, -3, 0, -1, 0, 0, -2, -3, -1, -2, -5, 6, 1, 0, -6, -5, -1, -1, 0, -1, -8],
|
|
949
|
+
[1, 0, 1, 0, 0, -1, 0, 1, -1, -1, -3, 0, -2, -3, 1, 2, 1, -2, -3, -1, 0, 0, 0, -8],
|
|
950
|
+
[1, -1, 0, 0, -2, -1, 0, 0, -1, 0, -2, 0, -1, -3, 0, 1, 3, -5, -3, 0, 0, -1, 0, -8],
|
|
951
|
+
[-6, 2, -4, -7, -8, -5, -7, -7, -3, -5, -2, -3, -4, 0, -6, -2, -5, 17, 0, -6, -5, -6, -4, -8],
|
|
952
|
+
[-3, -4, -2, -4, 0, -4, -4, -5, 0, -1, -1, -4, -2, 7, -5, -3, -3, 0, 10, -2, -3, -4, -2, -8],
|
|
953
|
+
[0, -2, -2, -2, -2, -2, -2, -1, -2, 4, 2, -2, 2, -1, -1, -1, 0, -6, -2, 4, -2, -2, -1, -8],
|
|
954
|
+
[0, -1, 2, 3, -4, 1, 3, 0, 1, -2, -3, 1, -2, -4, -1, 0, 0, -5, -3, -2, 3, 2, -1, -8],
|
|
955
|
+
[0, 0, 1, 3, -5, 3, 3, 0, 2, -2, -3, 0, -2, -5, 0, 0, -1, -6, -4, -2, 2, 3, -1, -8],
|
|
956
|
+
[0, -1, 0, -1, -3, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, 0, 0, -4, -2, -1, -1, -1, -1, -8],
|
|
957
|
+
[-8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, 1]];
|
|
958
|
+
this.SCHNEIDER = [[11.6, -2.7, 9.7, -1.7, -2.7, -6.4, -3.9, -5.6, 5.1, -5.0, 3.6, -4.2, -6.3, -13.0, -7.1, -11.5, 0.4, -6.0, -1.9, -5.3, -8.5, -11.2, -8.9, -10.8, 2.1, 0.0, 1.4, 0.2, -10.2, -13.5, -13.0, -12.5, -2.6, -8.5, -5.0, -8.1, -6.3, -9.9, -7.5, -9.0, -7.1, -10.2, -8.2, -9.2, -8.2, -12.5, -11.1, -11.4, -50.0, -14.8, -50.0, -13.8, -7.3, -10.1, -8.4, -9.1, -50.0, -13.0, -13.5, -12.4, -10.7, -18.1, -11.8, -17.2,],
|
|
959
|
+
[-2.7, 13.0, -3.3, 10.9, -3.5, -0.4, -3.3, -1.8, -5.4, 4.6, -5.5, 3.0, -10.2, -7.9, -9.9, -9.6, -5.0, 0.5, -5.5, -1.0, -10.3, -8.1, -9.4, -9.6, -8.1, -5.0, -7.3, -6.3, -13.4, -11.3, -14.4, -12.9, -6.3, 0.8, -6.4, -1.1, -7.4, -5.0, -6.2, -6.5, -5.6, -1.6, -4.7, -3.0, -10.8, -8.7, -11.9, -10.0, -50.0, -6.2, -50.0, -7.5, -6.3, -4.3, -6.2, -5.4, -50.0, -7.0, -16.3, -8.2, -13.2, -12.3, -13.1, -13.3,],
|
|
960
|
+
[9.7, -3.3, 11.6, -2.8, -4.5, -6.7, -3.1, -6.9, 3.3, -5.5, 4.8, -5.1, -8.9, -13.2, -5.7, -12.6, -1.5, -6.1, -0.6, -6.1, -10.0, -11.8, -8.6, -11.9, 1.2, 0.5, 2.2, 0.1, -11.8, -14.0, -11.9, -13.4, -4.9, -9.1, -3.4, -8.9, -8.0, -10.0, -7.2, -10.0, -9.1, -10.2, -7.1, -9.9, -10.1, -13.0, -10.6, -12.7, -50.0, -14.9, -50.0, -14.4, -8.9, -10.8, -8.9, -10.4, -50.0, -13.1, -11.8, -13.0, -12.4, -19.4, -11.5, -17.8,],
|
|
961
|
+
[-1.7, 10.9, -2.8, 12.9, -2.7, -2.2, -2.8, 0.2, -4.8, 2.9, -5.2, 5.2, -9.1, -9.5, -9.0, -7.0, -4.0, -1.0, -5.0, 1.0, -9.0, -8.8, -8.9, -7.7, -7.0, -6.8, -7.1, -4.3, -12.4, -12.9, -13.9, -10.0, -4.9, -0.7, -5.6, 1.4, -6.0, -6.5, -6.2, -4.8, -5.1, -3.2, -5.0, -1.2, -9.8, -9.9, -11.3, -8.2, -50.0, -7.6, -50.0, -5.1, -5.5, -5.8, -5.9, -4.2, -50.0, -8.3, -15.5, -5.9, -11.6, -14.2, -12.0, -11.6,],
|
|
962
|
+
[-2.7, -3.5, -4.5, -2.7, 11.7, 9.0, 10.6, 9.6, -3.2, -0.7, -5.1, -0.4, 0.7, -4.6, -0.4, -3.6, -4.8, -8.9, -6.5, -7.8, -1.4, -4.1, -2.9, -3.3, -8.0, -9.1, -8.0, -8.2, -6.0, -9.3, -7.7, -8.5, -6.4, -10.1, -7.5, -8.6, 2.8, -0.7, 0.9, 0.1, -5.9, -7.3, -6.5, -6.5, -0.4, -3.9, -2.6, -3.1, -50.0, -14.6, -50.0, -12.6, 2.9, 0.1, 1.8, 1.0, -50.0, -9.2, -13.6, -7.7, -4.8, -12.2, -6.2, -11.0,],
|
|
963
|
+
[-6.4, -0.4, -6.7, -2.2, 9.0, 12.3, 9.8, 9.6, -7.1, 2.4, -7.2, 0.3, -2.9, -1.2, -3.0, -3.3, -7.6, -6.7, -8.1, -7.9, -4.9, -1.9, -4.5, -3.8, -9.5, -7.8, -9.3, -8.9, -9.4, -7.1, -9.0, -9.0, -9.4, -7.5, -9.3, -9.2, -0.7, 2.6, 0.2, -0.1, -8.0, -4.6, -7.7, -6.1, -3.6, -1.0, -4.1, -3.1, -50.0, -11.6, -50.0, -11.6, 0.2, 2.3, 0.4, 0.5, -50.0, -6.5, -15.3, -7.8, -8.4, -9.5, -8.3, -11.1,],
|
|
964
|
+
[-3.9, -3.3, -3.1, -2.8, 10.6, 9.8, 12.2, 9.8, -4.9, 0.1, -3.6, -0.2, -1.7, -4.1, 0.9, -3.5, -5.9, -8.9, -5.6, -8.5, -3.9, -3.9, -2.2, -4.5, -7.3, -7.5, -6.4, -8.5, -7.1, -8.2, -6.7, -7.8, -7.9, -9.1, -7.1, -9.4, 0.9, -0.2, 2.5, -0.3, -6.9, -6.5, -5.5, -6.8, -1.7, -3.4, -1.7, -2.8, -50.0, -13.0, -50.0, -11.5, 1.5, 0.7, 2.7, 0.6, -50.0, -8.9, -12.1, -7.4, -6.1, -11.5, -5.4, -10.4,],
|
|
965
|
+
[-5.6, -1.8, -6.9, 0.2, 9.6, 9.6, 9.8, 11.6, -6.6, 0.9, -7.2, 2.5, -2.3, -3.4, -2.3, -0.6, -6.5, -8.2, -8.0, -6.3, -3.7, -3.5, -3.9, -1.6, -9.9, -8.9, -9.6, -7.0, -8.6, -8.9, -8.8, -6.8, -8.6, -8.2, -8.8, -6.8, 0.3, 0.1, 0.2, 2.4, -7.4, -6.2, -6.9, -4.4, -2.9, -2.9, -3.5, -0.9, -50.0, -12.2, -50.0, -10.1, 1.2, 0.6, 1.2, 2.4, -50.0, -7.6, -16.1, -5.8, -7.2, -10.8, -7.4, -9.0,],
|
|
966
|
+
[5.1, -5.4, 3.3, -4.8, -3.2, -7.1, -4.9, -6.6, 13.3, -2.8, 11.2, -1.9, -5.7, -12.5, -7.2, -11.6, -0.7, -4.8, -3.1, -4.3, -10.0, -11.6, -8.8, -11.7, 10.5, 7.7, 9.1, 8.5, -9.8, -12.7, -11.7, -11.8, -6.3, -11.4, -8.8, -11.0, -7.5, -10.3, -8.3, -9.9, -1.9, -6.7, -4.1, -6.4, -7.9, -12.5, -11.4, -11.7, -50.0, -14.0, -50.0, -13.2, -8.5, -10.4, -9.1, -9.6, -50.0, -9.8, -7.7, -8.8, -10.3, -17.9, -11.8, -16.0,],
|
|
967
|
+
[-5.0, 4.6, -5.5, 2.9, -0.7, 2.4, 0.1, 0.9, -2.8, 12.8, -2.6, 11.0, -8.4, -6.3, -8.3, -7.7, -6.1, -2.9, -6.5, -4.2, -8.5, -5.9, -7.5, -7.7, -5.5, -2.4, -5.5, -4.1, -12.9, -10.3, -12.7, -11.3, -7.4, -3.1, -7.4, -4.9, -4.4, -1.8, -3.5, -3.5, -1.6, 3.0, -0.8, 0.9, -8.4, -6.3, -9.6, -7.3, -50.0, -9.0, -50.0, -9.7, -2.3, -0.2, -1.2, -1.5, -50.0, -0.7, -13.3, -2.0, -11.8, -11.9, -12.3, -12.7,],
|
|
968
|
+
[3.6, -5.5, 4.8, -5.2, -5.1, -7.2, -3.6, -7.2, 11.2, -2.6, 13.4, -2.1, -7.7, -12.5, -5.3, -11.9, -2.2, -4.4, -1.9, -4.8, -10.2, -11.5, -8.1, -12.0, 9.3, 8.2, 10.0, 8.0, -10.8, -11.9, -10.7, -12.4, -8.2, -11.8, -6.9, -11.5, -8.4, -9.9, -7.1, -10.6, -4.7, -6.8, -1.2, -7.0, -9.8, -11.6, -9.6, -12.1, -50.0, -14.1, -50.0, -12.7, -10.0, -10.8, -8.8, -10.5, -50.0, -9.2, -4.2, -9.3, -11.0, -18.2, -11.1, -16.1,],
|
|
969
|
+
[-4.2, 3.0, -5.1, 5.2, -0.4, 0.3, -0.2, 2.5, -1.9, 11.0, -2.1, 13.2, -7.6, -8.5, -8.0, -5.3, -5.6, -4.5, -6.8, -2.4, -7.8, -7.9, -7.9, -6.2, -5.7, -5.1, -5.4, -2.1, -12.4, -12.3, -13.1, -10.1, -6.6, -4.4, -6.9, -2.6, -3.6, -3.8, -3.7, -2.0, -1.4, 0.8, -0.9, 3.0, -8.2, -8.1, -9.2, -5.8, -50.0, -10.1, -50.0, -7.4, -1.7, -2.0, -1.5, -0.5, -50.0, -2.1, -12.6, -0.4, -11.6, -13.9, -11.4, -11.1,],
|
|
970
|
+
[-6.3, -10.2, -8.9, -9.1, 0.7, -2.9, -1.7, -2.3, -5.7, -8.4, -7.7, -7.6, 13.2, 9.6, 3.5, 9.7, -8.7, -12.4, -10.7, -10.7, -7.8, -10.2, -8.8, -9.6, -9.5, -11.9, -10.9, -10.5, 2.3, -0.4, -0.2, -0.3, -9.7, -15.5, -11.4, -13.7, -3.0, -6.4, -4.1, -5.4, -9.6, -11.9, -10.5, -11.8, 6.2, 3.3, 3.7, 3.6, -50.0, -13.6, -50.0, -11.9, -5.6, -8.8, -7.2, -8.9, -50.0, -12.4, -14.1, -11.6, 2.8, -6.4, 0.5, -5.2,],
|
|
971
|
+
[-13.0, -7.9, -13.2, -9.5, -4.6, -1.2, -4.1, -3.4, -12.5, -6.3, -12.5, -8.5, 9.6, 12.7, 0.2, 10.5, -12.4, -11.6, -13.2, -12.0, -12.4, -10.1, -11.6, -12.0, -15.1, -13.1, -14.3, -13.4, -1.4, 1.4, -1.6, -0.5, -14.9, -14.3, -15.2, -16.8, -7.7, -4.7, -6.3, -6.6, -14.6, -10.8, -12.8, -13.0, 2.3, 6.0, 2.5, 3.6, -50.0, -11.2, -50.0, -11.9, -10.5, -9.2, -10.5, -10.5, -50.0, -10.3, -16.2, -11.3, -1.7, -3.7, -2.5, -5.4,],
|
|
972
|
+
[-7.1, -9.9, -5.7, -9.0, -0.4, -3.0, 0.9, -2.3, -7.2, -8.3, -5.3, -8.0, 3.5, 0.2, 14.3, 1.0, -7.3, -11.2, -6.9, -9.7, -8.5, -10.2, -7.7, -9.8, -10.0, -10.4, -8.4, -10.2, 1.0, -0.6, 1.7, -0.5, -11.1, -14.8, -9.7, -14.5, -3.7, -5.8, -3.1, -5.6, -10.4, -11.5, -8.2, -11.1, 0.6, -1.6, 1.6, -1.1, -50.0, -12.4, -50.0, -11.5, -5.5, -8.0, -4.9, -7.2, -50.0, -12.4, -10.3, -11.6, 0.7, -6.8, 2.4, -6.0,],
|
|
973
|
+
[-11.5, -9.6, -12.6, -7.0, -3.6, -3.3, -3.5, -0.6, -11.6, -7.7, -11.9, -5.3, 9.7, 10.5, 1.0, 12.6, -12.0, -12.2, -12.5, -9.7, -11.1, -11.2, -11.9, -9.4, -12.9, -14.3, -14.0, -11.9, -1.0, -0.4, -1.6, 1.2, -13.9, -15.4, -13.7, -12.6, -6.2, -6.7, -6.3, -4.4, -13.0, -12.2, -13.0, -10.4, 2.9, 3.8, 2.5, 5.8, -50.0, -12.5, -50.0, -10.2, -9.6, -9.7, -9.6, -8.3, -50.0, -11.6, -15.4, -9.4, -1.1, -5.4, -1.6, -3.3,],
|
|
974
|
+
[0.4, -5.0, -1.5, -4.0, -4.8, -7.6, -5.9, -6.5, -0.7, -6.1, -2.2, -5.6, -8.7, -12.4, -7.3, -12.0, 12.8, 2.3, 10.2, 3.0, 0.0, -3.4, -0.7, -3.2, 2.5, -0.8, 0.9, 0.2, -3.0, -7.2, -5.7, -6.1, -0.2, -6.6, -1.8, -6.0, -5.3, -8.2, -5.7, -7.6, -6.7, -9.6, -7.5, -9.3, -7.1, -10.5, -9.6, -9.4, -50.0, -8.1, -50.0, -7.2, -4.3, -6.8, -5.7, -6.3, -50.0, -9.5, -9.6, -8.9, -6.2, -12.8, -6.8, -11.8,],
|
|
975
|
+
[-6.0, 0.5, -6.1, -1.0, -8.9, -6.7, -8.9, -8.2, -4.8, -2.9, -4.4, -4.5, -12.4, -11.6, -11.2, -12.2, 2.3, 14.6, 1.9, 12.9, -5.5, -2.6, -4.1, -4.7, -1.2, 3.0, -1.1, 1.6, -8.0, -4.7, -8.7, -6.0, -8.2, -4.7, -7.8, -6.7, -10.0, -8.3, -8.9, -9.9, -10.8, -7.1, -10.0, -9.2, -11.6, -10.1, -12.3, -11.9, -50.0, 2.2, -50.0, 0.9, -7.9, -5.9, -7.4, -6.9, -50.0, -4.6, -11.6, -5.6, -9.7, -5.9, -9.9, -7.3,],
|
|
976
|
+
[-1.9, -5.5, -0.6, -5.0, -6.5, -8.1, -5.6, -8.0, -3.1, -6.5, -1.9, -6.8, -10.7, -13.2, -6.9, -12.5, 10.2, 1.9, 11.9, 2.1, -2.3, -4.1, -0.5, -4.6, -0.1, -0.9, 2.4, -0.8, -5.1, -6.9, -4.8, -6.7, -2.3, -7.1, -0.8, -7.2, -7.2, -8.0, -5.6, -8.5, -9.4, -9.7, -7.2, -9.8, -9.2, -11.1, -9.5, -10.7, -50.0, -8.7, -50.0, -8.6, -6.1, -7.5, -5.5, -7.7, -50.0, -10.4, -7.7, -10.0, -7.3, -13.6, -6.4, -13.3,],
|
|
977
|
+
[-5.3, -1.0, -6.1, 1.0, -7.8, -7.9, -8.5, -6.3, -4.3, -4.2, -4.8, -2.4, -10.7, -12.0, -9.7, -9.7, 3.0, 12.9, 2.1, 14.7, -4.9, -3.8, -4.0, -2.4, -1.0, 0.8, -1.3, 3.4, -7.6, -5.7, -8.1, -3.5, -6.8, -5.8, -7.2, -4.2, -8.9, -10.2, -8.4, -8.2, -9.9, -8.4, -9.7, -6.4, -11.1, -11.1, -11.8, -10.0, -50.0, 0.4, -50.0, 2.6, -7.2, -7.0, -7.4, -5.1, -50.0, -5.7, -9.8, -3.2, -8.4, -7.4, -8.9, -5.9,],
|
|
978
|
+
[-8.5, -10.3, -10.0, -9.0, -1.4, -4.9, -3.9, -3.7, -10.0, -8.5, -10.2, -7.8, -7.8, -12.4, -8.5, -11.1, 0.0, -5.5, -2.3, -4.9, 12.6, 10.0, 11.1, 10.5, -6.0, -8.3, -6.9, -7.5, -2.2, -7.4, -5.3, -5.9, -8.9, -12.5, -9.4, -11.6, -0.7, -3.9, -2.3, -3.0, -9.1, -9.8, -9.2, -9.5, -5.6, -9.0, -8.0, -8.5, -50.0, -15.3, -50.0, -14.1, 2.3, -1.4, 0.3, -0.5, -50.0, -13.6, -14.3, -11.5, -5.3, -13.7, -6.1, -12.7,],
|
|
979
|
+
[-11.2, -8.1, -11.8, -8.8, -4.1, -1.9, -3.9, -3.5, -11.6, -5.9, -11.5, -7.9, -10.2, -10.1, -10.2, -11.2, -3.4, -2.6, -4.1, -3.8, 10.0, 13.1, 10.7, 10.6, -8.1, -5.2, -8.0, -6.7, -6.1, -3.7, -7.5, -5.6, -11.1, -10.3, -10.6, -11.9, -3.2, -1.0, -2.2, -2.8, -10.5, -8.1, -9.4, -9.5, -8.3, -6.9, -9.4, -8.8, -50.0, -11.3, -50.0, -12.8, -0.6, 2.2, -0.3, 0.1, -50.0, -10.1, -17.5, -11.1, -8.6, -9.9, -8.6, -11.9,],
|
|
980
|
+
[-8.9, -9.4, -8.6, -8.9, -2.9, -4.5, -2.2, -3.9, -8.8, -7.5, -8.1, -7.9, -8.8, -11.6, -7.7, -11.9, -0.7, -4.1, -0.5, -4.0, 11.1, 10.7, 13.2, 10.4, -5.7, -5.8, -3.5, -6.1, -3.6, -6.5, -3.3, -5.5, -9.4, -11.0, -8.7, -11.2, -1.8, -2.7, 0.7, -3.0, -9.1, -8.2, -7.3, -9.4, -7.2, -8.2, -7.2, -8.2, -50.0, -13.2, -50.0, -13.3, 0.5, -0.9, 1.8, -0.6, -50.0, -11.4, -11.1, -10.5, -6.1, -12.9, -5.0, -11.9,],
|
|
981
|
+
[-10.8, -9.6, -11.9, -7.7, -3.3, -3.8, -4.5, -1.6, -11.7, -7.7, -12.0, -6.2, -9.6, -12.0, -9.8, -9.4, -3.2, -4.7, -4.6, -2.4, 10.5, 10.6, 10.4, 12.6, -8.2, -7.9, -9.0, -4.7, -6.1, -6.0, -7.5, -2.9, -10.9, -12.2, -11.2, -10.9, -2.4, -2.9, -2.7, -0.9, -10.4, -9.7, -10.2, -8.0, -8.4, -9.1, -9.3, -6.5, -50.0, -13.3, -50.0, -11.0, -0.0, -0.4, -0.4, 2.3, -50.0, -10.9, -17.2, -8.3, -8.3, -12.7, -7.8, -9.3,],
|
|
982
|
+
[2.1, -8.1, 1.2, -7.0, -8.0, -9.5, -7.3, -9.9, 10.5, -5.5, 9.3, -5.7, -9.5, -15.1, -10.0, -12.9, 2.5, -1.2, -0.1, -1.0, -6.0, -8.1, -5.7, -8.2, 13.8, 11.3, 11.8, 12.1, -6.0, -9.1, -9.0, -9.5, -8.9, -13.4, -10.0, -13.1, -9.9, -11.7, -9.8, -12.8, -5.9, -9.4, -6.5, -8.1, -10.7, -14.0, -13.3, -13.9, -50.0, -11.9, -50.0, -9.7, -8.9, -10.8, -9.0, -11.1, -50.0, -6.5, -5.3, -6.3, -10.5, -16.2, -10.4, -15.2,],
|
|
983
|
+
[0.0, -5.0, 0.5, -6.8, -9.1, -7.8, -7.5, -8.9, 7.7, -2.4, 8.2, -5.1, -11.9, -13.1, -10.4, -14.3, -0.8, 3.0, -0.9, 0.8, -8.3, -5.2, -5.8, -7.9, 11.3, 15.0, 11.2, 12.8, -9.7, -5.3, -9.2, -7.8, -11.7, -10.6, -10.1, -12.2, -11.7, -8.8, -8.9, -11.8, -9.3, -5.0, -8.0, -8.2, -13.6, -11.4, -12.8, -13.0, -50.0, -7.2, -50.0, -8.4, -11.0, -7.7, -8.7, -10.2, -50.0, -1.5, -7.1, -4.9, -11.2, -11.6, -11.6, -15.0,],
|
|
984
|
+
[1.4, -7.3, 2.2, -7.1, -8.0, -9.3, -6.4, -9.6, 9.1, -5.5, 10.0, -5.4, -10.9, -14.3, -8.4, -14.0, 0.9, -1.1, 2.4, -1.3, -6.9, -8.0, -3.5, -9.0, 11.8, 11.2, 13.4, 11.4, -7.3, -8.8, -6.5, -8.5, -10.0, -12.5, -7.8, -12.5, -9.6, -11.0, -7.1, -10.7, -7.9, -8.0, -4.3, -9.4, -11.4, -12.3, -10.9, -12.9, -50.0, -11.8, -50.0, -11.2, -9.4, -9.8, -7.3, -10.5, -50.0, -6.2, -2.2, -6.7, -9.8, -15.2, -8.5, -14.9,],
|
|
985
|
+
[0.2, -6.3, 0.1, -4.3, -8.2, -8.9, -8.5, -7.0, 8.5, -4.1, 8.0, -2.1, -10.5, -13.4, -10.2, -11.9, 0.2, 1.6, -0.8, 3.4, -7.5, -6.7, -6.1, -4.7, 12.1, 12.8, 11.4, 14.7, -8.7, -7.4, -9.4, -5.3, -9.9, -11.8, -10.5, -10.3, -9.9, -10.1, -9.3, -9.3, -8.1, -7.2, -8.0, -5.2, -12.0, -12.1, -12.6, -10.9, -50.0, -7.9, -50.0, -5.3, -9.3, -8.8, -8.9, -7.0, -50.0, -3.6, -7.1, -1.2, -10.2, -12.7, -9.9, -11.0,],
|
|
986
|
+
[-10.2, -13.4, -11.8, -12.4, -6.0, -9.4, -7.1, -8.6, -9.8, -12.9, -10.8, -12.4, 2.3, -1.4, 1.0, -1.0, -3.0, -8.0, -5.1, -7.6, -2.2, -6.1, -3.6, -6.1, -6.0, -9.7, -7.3, -8.7, 11.2, 7.9, 8.9, 8.1, -12.1, -17.4, -13.2, -16.8, -6.3, -9.5, -7.5, -8.8, -12.7, -15.2, -13.1, -14.2, 0.0, -3.1, -1.8, -3.1, -50.0, -10.7, -50.0, -9.3, -4.6, -8.9, -5.9, -8.3, -50.0, -12.8, -9.6, -10.6, 9.5, -3.2, 8.2, -2.8,],
|
|
987
|
+
[-13.5, -11.3, -14.0, -12.9, -9.3, -7.1, -8.2, -8.9, -12.7, -10.3, -11.9, -12.3, -0.4, 1.4, -0.6, -0.4, -7.2, -4.7, -6.9, -5.7, -7.4, -3.7, -6.5, -6.0, -9.1, -5.3, -8.8, -7.4, 7.9, 11.9, 7.8, 9.3, -15.2, -15.1, -14.6, -17.2, -9.7, -7.3, -8.2, -9.2, -15.0, -12.8, -14.1, -14.9, -2.8, 0.2, -2.9, -2.3, -50.0, -7.4, -50.0, -8.7, -9.4, -7.3, -9.4, -9.4, -50.0, -8.0, -11.9, -9.7, 6.5, 0.5, 6.4, -1.8,],
|
|
988
|
+
[-13.0, -14.4, -11.9, -13.9, -7.7, -9.0, -6.7, -8.8, -11.7, -12.7, -10.7, -13.1, -0.2, -1.6, 1.7, -1.6, -5.7, -8.7, -4.8, -8.1, -5.3, -7.5, -3.3, -7.5, -9.0, -9.2, -6.5, -9.4, 8.9, 7.8, 10.1, 7.8, -14.3, -17.7, -13.0, -17.8, -8.0, -9.4, -6.2, -9.2, -15.1, -14.9, -12.2, -14.9, -1.8, -3.2, -0.8, -3.2, -50.0, -10.8, -50.0, -9.9, -7.3, -9.6, -6.4, -9.4, -50.0, -12.3, -8.7, -11.3, 7.6, -3.3, 8.7, -2.9,],
|
|
989
|
+
[-12.5, -12.9, -13.4, -10.0, -8.5, -9.0, -7.8, -6.8, -11.8, -11.3, -12.4, -10.1, -0.3, -0.5, -0.5, 1.2, -6.1, -6.0, -6.7, -3.5, -5.9, -5.6, -5.5, -2.9, -9.5, -7.8, -8.5, -5.3, 8.1, 9.3, 7.8, 11.8, -14.4, -15.7, -14.5, -14.6, -8.4, -8.7, -7.9, -7.1, -14.3, -13.8, -13.8, -12.3, -2.4, -2.2, -2.9, -0.2, -50.0, -8.9, -50.0, -7.1, -8.1, -9.1, -8.7, -6.6, -50.0, -9.7, -11.4, -8.0, 6.8, -1.8, 6.9, 0.4,],
|
|
990
|
+
[-2.6, -6.3, -4.9, -4.9, -6.4, -9.4, -7.9, -8.6, -6.3, -7.4, -8.2, -6.6, -9.7, -14.9, -11.1, -13.9, -0.2, -8.2, -2.3, -6.8, -8.9, -11.1, -9.4, -10.9, -8.9, -11.7, -10.0, -9.9, -12.1, -15.2, -14.3, -14.4, 11.1, 2.9, 9.2, 3.5, -3.0, -7.0, -4.3, -6.2, -2.2, -6.6, -3.7, -5.7, -6.0, -10.4, -8.6, -9.5, -50.0, -15.5, -50.0, -13.9, -7.8, -10.5, -8.7, -9.6, -50.0, -16.5, -17.1, -14.8, -12.1, -18.9, -12.4, -17.4,],
|
|
991
|
+
[-8.5, 0.8, -9.1, -0.7, -10.1, -7.5, -9.1, -8.2, -11.4, -3.1, -11.8, -4.4, -15.5, -14.3, -14.8, -15.4, -6.6, -4.7, -7.1, -5.8, -12.5, -10.3, -11.0, -12.2, -13.4, -10.6, -12.5, -11.8, -17.4, -15.1, -17.7, -15.7, 2.9, 12.5, 3.1, 10.3, -7.7, -5.2, -6.2, -7.3, -5.4, -1.7, -5.4, -3.7, -11.6, -9.1, -13.0, -10.8, -50.0, -10.3, -50.0, -11.2, -9.8, -8.3, -9.1, -9.7, -50.0, -12.7, -20.6, -13.1, -16.0, -16.6, -17.0, -18.4,],
|
|
992
|
+
[-5.0, -6.4, -3.4, -5.6, -7.5, -9.3, -7.1, -8.8, -8.8, -7.4, -6.9, -6.9, -11.4, -15.2, -9.7, -13.7, -1.8, -7.8, -0.8, -7.2, -9.4, -10.6, -8.7, -11.2, -10.0, -10.1, -7.8, -10.5, -13.2, -14.6, -13.0, -14.5, 9.2, 3.1, 10.8, 3.0, -4.5, -6.7, -2.7, -6.7, -5.0, -6.8, -2.5, -6.7, -7.5, -10.4, -7.4, -10.2, -50.0, -15.5, -50.0, -14.2, -8.9, -10.2, -8.5, -10.0, -50.0, -15.6, -15.3, -15.5, -13.0, -18.8, -12.6, -18.3,],
|
|
993
|
+
[-8.1, -1.1, -8.9, 1.4, -8.6, -9.2, -9.4, -6.8, -11.0, -4.9, -11.5, -2.6, -13.7, -16.8, -14.5, -12.6, -6.0, -6.7, -7.2, -4.2, -11.6, -11.9, -11.2, -10.9, -13.1, -12.2, -12.5, -10.3, -16.8, -17.2, -17.8, -14.6, 3.5, 10.3, 3.0, 12.4, -6.9, -7.5, -6.8, -4.9, -5.4, -4.2, -5.4, -1.3, -10.8, -11.5, -12.4, -8.2, -50.0, -12.5, -50.0, -8.9, -9.2, -10.0, -9.4, -7.9, -50.0, -14.3, -19.9, -11.4, -16.2, -19.2, -15.8, -15.9,],
|
|
994
|
+
[-6.3, -7.4, -8.0, -6.0, 2.8, -0.7, 0.9, 0.3, -7.5, -4.4, -8.4, -3.6, -3.0, -7.7, -3.7, -6.2, -5.3, -10.0, -7.2, -8.9, -0.7, -3.2, -1.8, -2.4, -9.9, -11.7, -9.6, -9.9, -6.3, -9.7, -8.0, -8.4, -3.0, -7.7, -4.5, -6.9, 11.3, 8.2, 9.4, 9.1, -1.0, -3.3, -1.8, -2.4, 1.5, -2.1, -0.4, -1.1, -50.0, -14.5, -50.0, -12.9, 2.8, -0.0, 1.4, 0.7, -50.0, -8.7, -14.1, -7.5, -5.2, -12.5, -6.5, -10.7,],
|
|
995
|
+
[-9.9, -5.0, -10.0, -6.5, -0.7, 2.6, -0.2, 0.1, -10.3, -1.8, -9.9, -3.8, -6.4, -4.7, -5.8, -6.7, -8.2, -8.3, -8.0, -10.2, -3.9, -1.0, -2.7, -2.9, -11.7, -8.8, -11.0, -10.1, -9.5, -7.3, -9.4, -8.7, -7.0, -5.2, -6.7, -7.5, 8.2, 11.6, 8.8, 9.1, -3.7, -0.9, -3.1, -3.0, -2.0, 1.2, -2.3, -1.3, -50.0, -12.1, -50.0, -12.6, 0.1, 2.5, 0.7, 0.6, -50.0, -6.0, -14.8, -7.5, -8.6, -9.4, -8.5, -11.2,],
|
|
996
|
+
[-7.5, -6.2, -7.2, -6.2, 0.9, 0.2, 2.5, 0.2, -8.3, -3.5, -7.1, -3.7, -4.1, -6.3, -3.1, -6.3, -5.7, -8.9, -5.6, -8.4, -2.3, -2.2, 0.7, -2.7, -9.8, -8.9, -7.1, -9.3, -7.5, -8.2, -6.2, -7.9, -4.3, -6.2, -2.7, -6.8, 9.4, 8.8, 12.1, 8.8, -2.1, -2.0, 0.1, -2.4, 0.0, -1.1, 1.3, -0.8, -50.0, -11.9, -50.0, -12.6, 1.2, 0.7, 3.5, 0.8, -50.0, -7.1, -12.4, -7.1, -7.1, -10.6, -5.0, -10.6,],
|
|
997
|
+
[-9.0, -6.5, -10.0, -4.8, 0.1, -0.1, -0.3, 2.4, -9.9, -3.5, -10.6, -2.0, -5.4, -6.6, -5.6, -4.4, -7.6, -9.9, -8.5, -8.2, -3.0, -2.8, -3.0, -0.9, -12.8, -11.8, -10.7, -9.3, -8.8, -9.2, -9.2, -7.1, -6.2, -7.3, -6.7, -4.9, 9.1, 9.1, 8.8, 11.2, -3.1, -3.0, -3.3, -1.0, -1.1, -1.4, -2.0, 1.2, -50.0, -12.8, -50.0, -10.9, 0.8, 0.5, 0.7, 2.3, -50.0, -7.5, -16.5, -5.9, -7.8, -11.1, -7.8, -9.0,],
|
|
998
|
+
[-7.1, -5.6, -9.1, -5.1, -5.9, -8.0, -6.9, -7.4, -1.9, -1.6, -4.7, -1.4, -9.6, -14.6, -10.4, -13.0, -6.7, -10.8, -9.4, -9.9, -9.1, -10.5, -9.1, -10.4, -5.9, -9.3, -7.9, -8.1, -12.7, -15.0, -15.1, -14.3, -2.2, -5.4, -5.0, -5.4, -1.0, -3.7, -2.1, -3.1, 12.8, 9.6, 11.1, 10.1, -4.8, -9.4, -8.1, -8.6, -50.0, -18.3, -50.0, -15.4, -5.9, -7.5, -6.6, -7.1, -50.0, -9.5, -11.7, -8.4, -12.5, -17.3, -13.2, -15.4,],
|
|
999
|
+
[-10.2, -1.6, -10.2, -3.2, -7.3, -4.6, -6.5, -6.2, -6.7, 3.0, -6.8, 0.8, -11.9, -10.8, -11.5, -12.2, -9.6, -7.1, -9.7, -8.4, -9.8, -8.1, -8.2, -9.7, -9.4, -5.0, -8.0, -7.2, -15.2, -12.8, -14.9, -13.8, -6.6, -1.7, -6.8, -4.2, -3.3, -0.9, -2.0, -3.0, 9.6, 12.8, 9.7, 10.5, -8.5, -5.6, -9.3, -7.8, -50.0, -12.7, -50.0, -13.8, -6.8, -5.1, -5.3, -6.5, -50.0, -4.1, -12.8, -5.8, -14.4, -14.1, -13.6, -14.8,],
|
|
1000
|
+
[-8.2, -4.7, -7.1, -5.0, -6.5, -7.7, -5.5, -6.9, -4.1, -0.8, -1.2, -0.9, -10.5, -12.8, -8.2, -13.0, -7.5, -10.0, -7.2, -9.7, -9.2, -9.4, -7.3, -10.2, -6.5, -8.0, -4.3, -8.0, -13.1, -14.1, -12.2, -13.8, -3.7, -5.4, -2.5, -5.4, -1.8, -3.1, 0.1, -3.3, 11.1, 9.7, 12.9, 9.8, -5.5, -8.1, -5.4, -7.8, -50.0, -16.4, -50.0, -14.8, -5.9, -7.1, -4.7, -7.2, -50.0, -8.4, -6.4, -8.1, -12.1, -16.2, -10.3, -15.8,],
|
|
1001
|
+
[-9.2, -3.0, -9.9, -1.2, -6.5, -6.1, -6.8, -4.4, -6.4, 0.9, -7.0, 3.0, -11.8, -13.0, -11.1, -10.4, -9.3, -9.2, -9.8, -6.4, -9.5, -9.5, -9.4, -8.0, -8.1, -8.2, -9.4, -5.2, -14.2, -14.9, -14.9, -12.3, -5.7, -3.7, -6.7, -1.3, -2.4, -3.0, -2.4, -1.0, 10.1, 10.5, 9.8, 13.1, -7.2, -8.0, -8.4, -5.0, -50.0, -14.7, -50.0, -11.4, -6.3, -6.7, -5.8, -5.0, -50.0, -6.1, -13.4, -3.6, -13.0, -16.0, -13.7, -13.3,],
|
|
1002
|
+
[-8.2, -10.8, -10.1, -9.8, -0.4, -3.6, -1.7, -2.9, -7.9, -8.4, -9.8, -8.2, 6.2, 2.3, 0.6, 2.9, -7.1, -11.6, -9.2, -11.1, -5.6, -8.3, -7.2, -8.4, -10.7, -13.6, -11.4, -12.0, 0.0, -2.8, -1.8, -2.4, -6.0, -11.6, -7.5, -10.8, 1.5, -2.0, 0.0, -1.1, -4.8, -8.5, -5.5, -7.2, 11.9, 8.6, 10.0, 9.0, -50.0, -14.2, -50.0, -12.8, -4.1, -7.4, -5.7, -6.5, -50.0, -11.0, -14.3, -9.9, 1.4, -7.9, -0.7, -6.8,],
|
|
1003
|
+
[-12.5, -8.7, -13.0, -9.9, -3.9, -1.0, -3.4, -2.9, -12.5, -6.3, -11.6, -8.1, 3.3, 6.0, -1.6, 3.8, -10.5, -10.1, -11.1, -11.1, -9.0, -6.9, -8.2, -9.1, -14.0, -11.4, -12.3, -12.1, -3.1, 0.2, -3.2, -2.2, -10.4, -9.1, -10.4, -11.5, -2.1, 1.2, -1.1, -1.4, -9.4, -5.6, -8.1, -8.0, 8.6, 12.4, 8.6, 9.5, -50.0, -10.4, -50.0, -11.6, -7.2, -5.7, -7.5, -7.4, -50.0, -8.6, -15.7, -9.7, -3.0, -3.7, -3.2, -5.9,],
|
|
1004
|
+
[-11.1, -11.9, -10.6, -11.3, -2.6, -4.1, -1.7, -3.5, -11.4, -9.6, -9.6, -9.2, 3.7, 2.5, 1.6, 2.5, -9.6, -12.3, -9.5, -11.8, -8.0, -9.4, -7.2, -9.3, -13.3, -12.8, -10.9, -12.6, -1.8, -2.9, -0.8, -2.9, -8.6, -13.0, -7.4, -12.4, -0.4, -2.3, 1.3, -2.0, -8.1, -9.3, -5.4, -8.4, 10.0, 8.6, 11.4, 8.9, -50.0, -13.7, -50.0, -13.2, -6.1, -8.1, -5.5, -7.5, -50.0, -11.3, -12.7, -10.1, -1.6, -7.8, -0.3, -7.2,],
|
|
1005
|
+
[-11.4, -10.0, -12.7, -8.2, -3.1, -3.1, -2.8, -0.9, -11.7, -7.3, -12.1, -5.8, 3.6, 3.6, -1.1, 5.8, -9.4, -11.9, -10.7, -10.0, -8.5, -8.8, -8.2, -6.5, -13.9, -13.0, -12.9, -10.9, -3.1, -2.3, -3.2, -0.2, -9.5, -10.8, -10.2, -8.2, -1.1, -1.3, -0.8, 1.2, -8.6, -7.8, -7.8, -5.0, 9.0, 9.5, 8.9, 12.0, -50.0, -13.0, -50.0, -10.3, -6.2, -7.0, -7.1, -5.4, -50.0, -9.3, -14.0, -8.2, -2.4, -6.3, -2.4, -3.9,],
|
|
1006
|
+
[-50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, 33.3, -50.0, 30.6, -50.0, -50.0, -50.0, -50.0, -50.0, 29.2, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0,],
|
|
1007
|
+
[-14.8, -6.2, -14.9, -7.6, -14.6, -11.6, -13.0, -12.2, -14.0, -9.0, -14.1, -10.1, -13.6, -11.2, -12.4, -12.5, -8.1, 2.2, -8.7, 0.4, -15.3, -11.3, -13.2, -13.3, -11.9, -7.2, -11.8, -7.9, -10.7, -7.4, -10.8, -8.9, -15.5, -10.3, -15.5, -12.5, -14.5, -12.1, -11.9, -12.8, -18.3, -12.7, -16.4, -14.7, -14.2, -10.4, -13.7, -13.0, -50.0, 15.1, -50.0, 13.3, -9.9, -5.8, -8.9, -7.6, -50.0, -1.5, -7.8, -3.0, -8.1, 3.6, -9.4, 2.0,],
|
|
1008
|
+
[-50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, 30.6, -50.0, 35.2, -50.0, -50.0, -50.0, -50.0, -50.0, 28.5, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0,],
|
|
1009
|
+
[-13.8, -7.5, -14.4, -5.1, -12.6, -11.6, -11.5, -10.1, -13.2, -9.7, -12.7, -7.4, -11.9, -11.9, -11.5, -10.2, -7.2, 0.9, -8.6, 2.6, -14.1, -12.8, -13.3, -11.0, -9.7, -8.4, -11.2, -5.3, -9.3, -8.7, -9.9, -7.1, -13.9, -11.2, -14.2, -8.9, -12.9, -12.6, -12.6, -10.9, -15.4, -13.8, -14.8, -11.4, -12.8, -11.6, -13.2, -10.3, -50.0, 13.3, -50.0, 15.2, -8.6, -7.0, -8.4, -4.8, -50.0, -3.0, -7.1, -0.1, -7.3, 2.3, -8.7, 3.9,],
|
|
1010
|
+
[-7.3, -6.3, -8.9, -5.5, 2.9, 0.2, 1.5, 1.2, -8.5, -2.3, -10.0, -1.7, -5.6, -10.5, -5.5, -9.6, -4.3, -7.9, -6.1, -7.2, 2.3, -0.6, 0.5, -0.0, -8.9, -11.0, -9.4, -9.3, -4.6, -9.4, -7.3, -8.1, -7.8, -9.8, -8.9, -9.2, 2.8, 0.1, 1.2, 0.8, -5.9, -6.8, -5.9, -6.3, -4.1, -7.2, -6.1, -6.2, -50.0, -9.9, -50.0, -8.6, 12.5, 9.4, 11.0, 9.8, -50.0, -4.8, -8.7, -3.5, -0.0, -8.6, -2.1, -7.0,],
|
|
1011
|
+
[-10.1, -4.3, -10.8, -5.8, 0.1, 2.3, 0.7, 0.6, -10.4, -0.2, -10.8, -2.0, -8.8, -9.2, -8.0, -9.7, -6.8, -5.9, -7.5, -7.0, -1.4, 2.2, -0.9, -0.4, -10.8, -7.7, -9.8, -8.8, -8.9, -7.3, -9.6, -9.1, -10.5, -8.3, -10.2, -10.0, -0.0, 2.5, 0.7, 0.5, -7.5, -5.1, -7.1, -6.7, -7.4, -5.7, -8.1, -7.0, -50.0, -5.8, -50.0, -7.0, 9.4, 12.7, 10.1, 10.0, -50.0, -1.5, -11.3, -3.3, -5.4, -4.2, -5.6, -6.8,],
|
|
1012
|
+
[-8.4, -6.2, -8.9, -5.9, 1.8, 0.4, 2.7, 1.2, -9.1, -1.2, -8.8, -1.5, -7.2, -10.5, -4.9, -9.6, -5.7, -7.4, -5.5, -7.4, 0.3, -0.3, 1.8, -0.4, -9.0, -8.7, -7.3, -8.9, -5.9, -9.4, -6.4, -8.7, -8.7, -9.1, -8.5, -9.4, 1.4, 0.7, 3.5, 0.7, -6.6, -5.3, -4.7, -5.8, -5.7, -7.5, -5.5, -7.1, -50.0, -8.9, -50.0, -8.4, 11.0, 10.1, 13.2, 10.2, -50.0, -4.2, -6.1, -3.6, -3.5, -8.4, -1.2, -6.8,],
|
|
1013
|
+
[-9.1, -5.4, -10.4, -4.2, 1.0, 0.5, 0.6, 2.4, -9.6, -1.5, -10.5, -0.5, -8.9, -10.5, -7.2, -8.3, -6.3, -6.9, -7.7, -5.1, -0.5, 0.1, -0.6, 2.3, -11.1, -10.2, -10.5, -7.0, -8.3, -9.4, -9.4, -6.6, -9.6, -9.7, -10.0, -7.9, 0.7, 0.6, 0.8, 2.3, -7.1, -6.5, -7.2, -5.0, -6.5, -7.4, -7.5, -5.4, -50.0, -7.6, -50.0, -4.8, 9.8, 10.0, 10.2, 12.1, -50.0, -3.1, -11.4, -0.7, -4.6, -6.6, -4.9, -3.9,],
|
|
1014
|
+
[-50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, 29.2, -50.0, 28.5, -50.0, -50.0, -50.0, -50.0, -50.0, 33.3, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0, -50.0,],
|
|
1015
|
+
[-13.0, -7.0, -13.1, -8.3, -9.2, -6.5, -8.9, -7.6, -9.8, -0.7, -9.2, -2.1, -12.4, -10.3, -12.4, -11.6, -9.5, -4.6, -10.4, -5.7, -13.6, -10.1, -11.4, -10.9, -6.5, -1.5, -6.2, -3.6, -12.8, -8.0, -12.3, -9.7, -16.5, -12.7, -15.6, -14.3, -8.7, -6.0, -7.1, -7.5, -9.5, -4.1, -8.4, -6.1, -11.0, -8.6, -11.3, -9.3, -50.0, -1.5, -50.0, -3.0, -4.8, -1.5, -4.2, -3.1, -50.0, 16.4, -5.1, 14.2, -10.1, -4.3, -10.0, -5.4,],
|
|
1016
|
+
[-13.5, -16.3, -11.8, -15.5, -13.6, -15.3, -12.1, -16.1, -7.7, -13.3, -4.2, -12.6, -14.1, -16.2, -10.3, -15.4, -9.6, -11.6, -7.7, -9.8, -14.3, -17.5, -11.1, -17.2, -5.3, -7.1, -2.2, -7.1, -9.6, -11.9, -8.7, -11.4, -17.1, -20.6, -15.3, -19.9, -14.1, -14.8, -12.4, -16.5, -11.7, -12.8, -6.4, -13.4, -14.3, -15.7, -12.7, -14.0, -50.0, -7.8, -50.0, -7.1, -8.7, -11.3, -6.1, -11.4, -50.0, -5.1, 18.6, -4.8, -8.6, -8.1, -4.5, -7.3,],
|
|
1017
|
+
[-12.4, -8.2, -13.0, -5.9, -7.7, -7.8, -7.4, -5.8, -8.8, -2.0, -9.3, -0.4, -11.6, -11.3, -11.6, -9.4, -8.9, -5.6, -10.0, -3.2, -11.5, -11.1, -10.5, -8.3, -6.3, -4.9, -6.7, -1.2, -10.6, -9.7, -11.3, -8.0, -14.8, -13.1, -15.5, -11.4, -7.5, -7.5, -7.1, -5.9, -8.4, -5.8, -8.1, -3.6, -9.9, -9.7, -10.1, -8.2, -50.0, -3.0, -50.0, -0.1, -3.5, -3.3, -3.6, -0.7, -50.0, 14.2, -4.8, 16.4, -8.9, -5.8, -8.9, -3.4,],
|
|
1018
|
+
[-10.7, -13.2, -12.4, -11.6, -4.8, -8.4, -6.1, -7.2, -10.3, -11.8, -11.0, -11.6, 2.8, -1.7, 0.7, -1.1, -6.2, -9.7, -7.3, -8.4, -5.3, -8.6, -6.1, -8.3, -10.5, -11.2, -9.8, -10.2, 9.5, 6.5, 7.6, 6.8, -12.1, -16.0, -13.0, -16.2, -5.2, -8.6, -7.1, -7.8, -12.5, -14.4, -12.1, -13.0, 1.4, -3.0, -1.6, -2.4, -50.0, -8.1, -50.0, -7.3, -0.0, -5.4, -3.5, -4.6, -50.0, -10.1, -8.6, -8.9, 13.2, -0.9, 9.7, -0.3,],
|
|
1019
|
+
[-18.1, -12.3, -19.4, -14.2, -12.2, -9.5, -11.5, -10.8, -17.9, -11.9, -18.2, -13.9, -6.4, -3.7, -6.8, -5.4, -12.8, -5.9, -13.6, -7.4, -13.7, -9.9, -12.9, -12.7, -16.2, -11.6, -15.2, -12.7, -3.2, 0.5, -3.3, -1.8, -18.9, -16.6, -18.8, -19.2, -12.5, -9.4, -10.6, -11.1, -17.3, -14.1, -16.2, -16.0, -7.9, -3.7, -7.8, -6.3, -50.0, 3.6, -50.0, 2.3, -8.6, -4.2, -8.4, -6.6, -50.0, -4.3, -8.1, -5.8, -0.9, 14.2, -1.8, 11.6,],
|
|
1020
|
+
[-11.8, -13.1, -11.5, -12.0, -6.2, -8.3, -5.4, -7.4, -11.8, -12.3, -11.1, -11.4, 0.5, -2.5, 2.4, -1.6, -6.8, -9.9, -6.4, -8.9, -6.1, -8.6, -5.0, -7.8, -10.4, -11.6, -8.5, -9.9, 8.2, 6.4, 8.7, 6.9, -12.4, -17.0, -12.6, -15.8, -6.5, -8.5, -5.0, -7.8, -13.2, -13.6, -10.3, -13.7, -0.7, -3.2, -0.3, -2.4, -50.0, -9.4, -50.0, -8.7, -2.1, -5.6, -1.2, -4.9, -50.0, -10.0, -4.5, -8.9, 9.7, -1.8, 11.3, -0.9,],
|
|
1021
|
+
[-17.2, -13.3, -17.8, -11.6, -11.0, -11.1, -10.4, -9.0, -16.0, -12.7, -16.1, -11.1, -5.2, -5.4, -6.0, -3.3, -11.8, -7.3, -13.3, -5.9, -12.7, -11.9, -11.9, -9.3, -15.2, -15.0, -14.9, -11.0, -2.8, -1.8, -2.9, 0.4, -17.4, -18.4, -18.3, -15.9, -10.7, -11.2, -10.6, -9.0, -15.4, -14.8, -15.8, -13.3, -6.8, -5.9, -7.2, -3.9, -50.0, 2.0, -50.0, 3.9, -7.0, -6.8, -6.8, -3.9, -50.0, -5.4, -7.3, -3.4, -0.3, 11.6, -0.9, 14.1,]];
|
|
1022
|
+
this.TRANS = [[5, 0, 0, 4],
|
|
1023
|
+
[0, 5, 4, 0],
|
|
1024
|
+
[0, 4, 5, 0],
|
|
1025
|
+
[4, 0, 0, 5]];
|
|
1026
|
+
this.CONBLO = { 'A': 0, 'R': 1, 'N': 2, 'D': 3, 'C': 4, 'Q': 5, 'E': 6, 'G': 7, 'H': 8, 'I': 9, 'L': 10, 'K': 11, 'M': 12, 'F': 13, 'P': 14, 'S': 15, 'T': 16, 'W': 17, 'Y': 18, 'V': 19, 'B': 20, 'Z': 21, 'X': 22, '*': 23 };
|
|
1027
|
+
this.CONNUCL = { 'A': 0, 'T': 1, 'C': 2, 'G': 3 };
|
|
1028
|
+
this.CONSCHN = { 'AAA': 0, 'AAC': 1, 'AAG': 2, 'AAT': 3, 'ACA': 4, 'ACC': 5, 'ACG': 6, 'ACT': 7, 'AGA': 8, 'AGC': 9, 'AGG': 10, 'AGT': 11, 'ATA': 12, 'ATC': 13, 'ATG': 14, 'ATT': 15, 'CAA': 16, 'CAC': 17, 'CAG': 18, 'CAT': 19, 'CCA': 20, 'CCC': 21, 'CCG': 22, 'CCT': 23, 'CGA': 24, 'CGC': 25, 'CGG': 26, 'CGT': 27, 'CTA': 28, 'CTC': 29, 'CTG': 30, 'CTT': 31, 'GAA': 32, 'GAC': 33, 'GAG': 34, 'GAT': 35, 'GCA': 36, 'GCC': 37, 'GCG': 38, 'GCT': 39, 'GGA': 40, 'GGC': 41, 'GGG': 42, 'GGT': 43, 'GTA': 44, 'GTC': 45, 'GTG': 46, 'GTT': 47, 'TAA': 48, 'TAC': 49, 'TAG': 50, 'TAT': 51, 'TCA': 52, 'TCC': 53, 'TCG': 54, 'TCT': 55, 'TGA': 56, 'TGC': 57, 'TGG': 58, 'TGT': 59, 'TTA': 60, 'TTC': 61, 'TTG': 62, 'TTT': 63 };
|
|
1029
|
+
this.setMethod(alignGrid_);
|
|
1030
|
+
this.setSequences(seq1_, seq2_);
|
|
1031
|
+
this.setGap(gap_);
|
|
1032
|
+
}
|
|
1033
|
+
fillNeedleman() {
|
|
1034
|
+
for (let i = 0; i <= this.len1; i++) {
|
|
1035
|
+
this.dpGrid[i][0].value = -i * this.gap;
|
|
1036
|
+
this.dpGrid[i][0].parentI = i - 1;
|
|
1037
|
+
this.dpGrid[i][0].parentJ = 0;
|
|
1038
|
+
}
|
|
1039
|
+
for (let i = 1; i <= this.len2; i++) {
|
|
1040
|
+
this.dpGrid[0][i].value = -i * this.gap;
|
|
1041
|
+
this.dpGrid[0][i].parentI = 0;
|
|
1042
|
+
this.dpGrid[0][i].parentJ = i - 1;
|
|
1043
|
+
}
|
|
1044
|
+
}
|
|
1045
|
+
fillOne(i, j) {
|
|
1046
|
+
this.dpGrid[i][j].value = Math.max(this.dpGrid[i - 1][j - 1].value + this.scores[i - 1][j - 1], Math.max(this.dpGrid[i - 1][j].value - this.gap, this.dpGrid[i][j - 1].value - this.gap));
|
|
1047
|
+
if (this.dpGrid[i][j].value == this.dpGrid[i - 1][j - 1].value + this.scores[i - 1][j - 1]) {
|
|
1048
|
+
this.dpGrid[i][j].parentI = i - 1;
|
|
1049
|
+
this.dpGrid[i][j].parentJ = j - 1;
|
|
1050
|
+
}
|
|
1051
|
+
else if (this.dpGrid[i][j].value == this.dpGrid[i - 1][j].value - this.gap) {
|
|
1052
|
+
this.dpGrid[i][j].parentI = i - 1;
|
|
1053
|
+
this.dpGrid[i][j].parentJ = j;
|
|
1054
|
+
}
|
|
1055
|
+
else {
|
|
1056
|
+
this.dpGrid[i][j].parentI = i;
|
|
1057
|
+
this.dpGrid[i][j].parentJ = j - 1;
|
|
1058
|
+
}
|
|
1059
|
+
}
|
|
1060
|
+
gridFromName(path) {
|
|
1061
|
+
switch (path) {
|
|
1062
|
+
case 'BLOSUM45':
|
|
1063
|
+
this.alignGrid = this.BLOSUM45;
|
|
1064
|
+
this.connections = this.CONBLO;
|
|
1065
|
+
this.step = 1;
|
|
1066
|
+
break;
|
|
1067
|
+
case 'BLOSUM50':
|
|
1068
|
+
this.alignGrid = this.BLOSUM50;
|
|
1069
|
+
this.connections = this.CONBLO;
|
|
1070
|
+
this.step = 1;
|
|
1071
|
+
break;
|
|
1072
|
+
case 'BLOSUM62':
|
|
1073
|
+
this.alignGrid = this.BLOSUM62;
|
|
1074
|
+
this.connections = this.CONBLO;
|
|
1075
|
+
this.step = 1;
|
|
1076
|
+
break;
|
|
1077
|
+
case 'BLOSUM80':
|
|
1078
|
+
this.alignGrid = this.BLOSUM80;
|
|
1079
|
+
this.connections = this.CONBLO;
|
|
1080
|
+
this.step = 1;
|
|
1081
|
+
break;
|
|
1082
|
+
case 'BLOSUM90':
|
|
1083
|
+
this.alignGrid = this.BLOSUM90;
|
|
1084
|
+
this.connections = this.CONBLO;
|
|
1085
|
+
this.step = 1;
|
|
1086
|
+
break;
|
|
1087
|
+
case 'PAM30':
|
|
1088
|
+
this.alignGrid = this.PAM30;
|
|
1089
|
+
this.connections = this.CONBLO;
|
|
1090
|
+
this.step = 1;
|
|
1091
|
+
break;
|
|
1092
|
+
case 'PAM70':
|
|
1093
|
+
this.alignGrid = this.PAM70;
|
|
1094
|
+
this.connections = this.CONBLO;
|
|
1095
|
+
this.step = 1;
|
|
1096
|
+
break;
|
|
1097
|
+
case 'PAM250':
|
|
1098
|
+
this.alignGrid = this.PAM250;
|
|
1099
|
+
this.connections = this.CONBLO;
|
|
1100
|
+
this.step = 1;
|
|
1101
|
+
break;
|
|
1102
|
+
case 'NUCLEOTIDES':
|
|
1103
|
+
this.alignGrid = this.NUCLEOTIDES;
|
|
1104
|
+
this.connections = this.CONNUCL;
|
|
1105
|
+
this.step = 1;
|
|
1106
|
+
break;
|
|
1107
|
+
case 'TRANS':
|
|
1108
|
+
this.alignGrid = this.TRANS;
|
|
1109
|
+
this.connections = this.CONNUCL;
|
|
1110
|
+
this.step = 1;
|
|
1111
|
+
break;
|
|
1112
|
+
case 'SCHNEIDER':
|
|
1113
|
+
this.alignGrid = this.SCHNEIDER;
|
|
1114
|
+
this.connections = this.CONSCHN;
|
|
1115
|
+
this.step = 3;
|
|
1116
|
+
break;
|
|
1117
|
+
}
|
|
1118
|
+
this.fillScores();
|
|
1119
|
+
}
|
|
1120
|
+
constructResult(i, j) {
|
|
1121
|
+
let res1 = "", res2 = "", gapS = "";
|
|
1122
|
+
let total = this.dpGrid[i][j].value;
|
|
1123
|
+
for (let i = 0; i < this.step; i++) {
|
|
1124
|
+
gapS += '|';
|
|
1125
|
+
}
|
|
1126
|
+
while (i > 0 || j > 0) {
|
|
1127
|
+
if (this.dpGrid[i][j].parentI == i) {
|
|
1128
|
+
res1 = gapS + res1;
|
|
1129
|
+
res2 = this.seq2.substr((j - 1) * this.step, this.step) + res2;
|
|
1130
|
+
}
|
|
1131
|
+
else if (this.dpGrid[i][j].parentJ == j) {
|
|
1132
|
+
res2 = gapS + res2;
|
|
1133
|
+
res1 = this.seq1.substr((i - 1) * this.step, this.step) + res1;
|
|
1134
|
+
}
|
|
1135
|
+
else {
|
|
1136
|
+
if (i - 1 >= 0)
|
|
1137
|
+
res1 = this.seq1.substr((i - 1) * this.step, this.step) + res1;
|
|
1138
|
+
else
|
|
1139
|
+
res1 = gapS + res1;
|
|
1140
|
+
if (j - 1 >= 0)
|
|
1141
|
+
res2 = this.seq2.substr((j - 1) * this.step, this.step) + res2;
|
|
1142
|
+
else
|
|
1143
|
+
res2 = gapS + res2;
|
|
1144
|
+
}
|
|
1145
|
+
let tempI = i;
|
|
1146
|
+
i = this.dpGrid[i][j].parentI;
|
|
1147
|
+
j = this.dpGrid[tempI][j].parentJ;
|
|
1148
|
+
}
|
|
1149
|
+
return new Aligned(res1, res2, total);
|
|
1150
|
+
}
|
|
1151
|
+
fillScores() {
|
|
1152
|
+
this.scores = [];
|
|
1153
|
+
for (let i = 0; i < this.len1; i++) {
|
|
1154
|
+
this.scores.push([]);
|
|
1155
|
+
for (let j = 0; j < this.len2; j++) {
|
|
1156
|
+
this.scores[i].push(this.alignGrid[this.connections[this.seq1.substr(i * this.step, this.step)]][this.connections[this.seq2.substr(j * this.step, this.step)]]);
|
|
1157
|
+
}
|
|
1158
|
+
}
|
|
1159
|
+
}
|
|
1160
|
+
typeRec() {
|
|
1161
|
+
if (/[ATGC]*/.test(this.seq1) && /[ATGC]*/.test(this.seq2))
|
|
1162
|
+
return "NUCLEOTIDES";
|
|
1163
|
+
if (/[ARNDCQEGHILKMFPSTWYVBZX*]*/.test(this.seq1) && /[ARNDCQEGHILKMFPSTWYVBZX*]*/.test(this.seq2))
|
|
1164
|
+
return "BLOSUM62";
|
|
1165
|
+
throw Error("Can't recognize sequence type");
|
|
1166
|
+
}
|
|
1167
|
+
needlemanWunch() {
|
|
1168
|
+
this.dpGrid = [];
|
|
1169
|
+
for (let i = 0; i < this.len1 + 1; i++) {
|
|
1170
|
+
let row = [];
|
|
1171
|
+
for (let j = 0; j < this.len2 + 1; j++)
|
|
1172
|
+
row.push(new Cell());
|
|
1173
|
+
this.dpGrid.push(row);
|
|
1174
|
+
}
|
|
1175
|
+
this.fillNeedleman();
|
|
1176
|
+
for (let i = 1; i <= this.len1; i++) {
|
|
1177
|
+
for (let j = 1; j <= this.len2; j++) {
|
|
1178
|
+
this.fillOne(i, j);
|
|
1179
|
+
}
|
|
1180
|
+
}
|
|
1181
|
+
return this.constructResult(this.len1, this.len2);
|
|
1182
|
+
}
|
|
1183
|
+
smithWaterman() {
|
|
1184
|
+
this.dpGrid = [];
|
|
1185
|
+
for (let i = 0; i < this.len1 + 1; i++) {
|
|
1186
|
+
let row = [];
|
|
1187
|
+
for (let j = 0; j < this.len2 + 1; j++)
|
|
1188
|
+
row.push(new Cell());
|
|
1189
|
+
this.dpGrid.push(row);
|
|
1190
|
+
}
|
|
1191
|
+
let bestVal = 0;
|
|
1192
|
+
let bestI = 0, bestJ = 0;
|
|
1193
|
+
for (let i = 1; i <= this.len1; i++) {
|
|
1194
|
+
for (let j = 1; j <= this.len2; j++) {
|
|
1195
|
+
this.fillOne(i, j);
|
|
1196
|
+
if (this.dpGrid[i][j].value <= 0) {
|
|
1197
|
+
this.dpGrid[i][j].value = 0;
|
|
1198
|
+
this.dpGrid[i][j].parentI = 0;
|
|
1199
|
+
this.dpGrid[i][j].parentJ = 0;
|
|
1200
|
+
}
|
|
1201
|
+
else if (this.dpGrid[this.dpGrid[i][j].parentI][this.dpGrid[i][j].parentJ].value == 0) {
|
|
1202
|
+
this.dpGrid[i][j].parentI = 0;
|
|
1203
|
+
this.dpGrid[i][j].parentJ = 0;
|
|
1204
|
+
}
|
|
1205
|
+
if (this.dpGrid[i][j].value > bestVal) {
|
|
1206
|
+
bestVal = this.dpGrid[i][j].value;
|
|
1207
|
+
bestI = i;
|
|
1208
|
+
bestJ = j;
|
|
1209
|
+
}
|
|
1210
|
+
}
|
|
1211
|
+
}
|
|
1212
|
+
return this.constructResult(bestI, bestJ);
|
|
1213
|
+
}
|
|
1214
|
+
setSequences(seq1_, seq2_) {
|
|
1215
|
+
this.seq1 = seq1_;
|
|
1216
|
+
this.seq2 = seq2_;
|
|
1217
|
+
this.len1 = this.seq1.length / this.step;
|
|
1218
|
+
this.len2 = this.seq2.length / this.step;
|
|
1219
|
+
this.fillScores();
|
|
1220
|
+
}
|
|
1221
|
+
setGap(gap_) {
|
|
1222
|
+
this.gap = gap_;
|
|
1223
|
+
}
|
|
1224
|
+
setMethod(alignGrid_ = "") {
|
|
1225
|
+
if (alignGrid_ == "AUTO") {
|
|
1226
|
+
alignGrid_ = this.typeRec();
|
|
1227
|
+
}
|
|
1228
|
+
this.gridFromName(alignGrid_);
|
|
1229
|
+
}
|
|
1230
|
+
}
|
|
1231
|
+
|
|
1232
|
+
|
|
1233
|
+
/***/ }),
|
|
1234
|
+
|
|
1235
|
+
/***/ "datagrok-api/dg":
|
|
1236
|
+
/*!*********************!*\
|
|
1237
|
+
!*** external "DG" ***!
|
|
1238
|
+
\*********************/
|
|
1239
|
+
/***/ ((module) => {
|
|
1240
|
+
|
|
1241
|
+
module.exports = DG;
|
|
1242
|
+
|
|
1243
|
+
/***/ }),
|
|
1244
|
+
|
|
1245
|
+
/***/ "rxjs":
|
|
1246
|
+
/*!***********************!*\
|
|
1247
|
+
!*** external "rxjs" ***!
|
|
1248
|
+
\***********************/
|
|
1249
|
+
/***/ ((module) => {
|
|
1250
|
+
|
|
1251
|
+
module.exports = rxjs;
|
|
1252
|
+
|
|
1253
|
+
/***/ }),
|
|
1254
|
+
|
|
1255
|
+
/***/ "datagrok-api/ui":
|
|
1256
|
+
/*!*********************!*\
|
|
1257
|
+
!*** external "ui" ***!
|
|
1258
|
+
\*********************/
|
|
1259
|
+
/***/ ((module) => {
|
|
1260
|
+
|
|
1261
|
+
module.exports = ui;
|
|
1262
|
+
|
|
1263
|
+
/***/ })
|
|
1264
|
+
|
|
1265
|
+
/******/ });
|
|
1266
|
+
/************************************************************************/
|
|
1267
|
+
/******/ // The module cache
|
|
1268
|
+
/******/ var __webpack_module_cache__ = {};
|
|
1269
|
+
/******/
|
|
1270
|
+
/******/ // The require function
|
|
1271
|
+
/******/ function __webpack_require__(moduleId) {
|
|
1272
|
+
/******/ // Check if module is in cache
|
|
1273
|
+
/******/ var cachedModule = __webpack_module_cache__[moduleId];
|
|
1274
|
+
/******/ if (cachedModule !== undefined) {
|
|
1275
|
+
/******/ return cachedModule.exports;
|
|
1276
|
+
/******/ }
|
|
1277
|
+
/******/ // Create a new module (and put it into the cache)
|
|
1278
|
+
/******/ var module = __webpack_module_cache__[moduleId] = {
|
|
1279
|
+
/******/ // no module.id needed
|
|
1280
|
+
/******/ // no module.loaded needed
|
|
1281
|
+
/******/ exports: {}
|
|
1282
|
+
/******/ };
|
|
1283
|
+
/******/
|
|
1284
|
+
/******/ // Execute the module function
|
|
1285
|
+
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
|
|
1286
|
+
/******/
|
|
1287
|
+
/******/ // Return the exports of the module
|
|
1288
|
+
/******/ return module.exports;
|
|
1289
|
+
/******/ }
|
|
1290
|
+
/******/
|
|
1291
|
+
/************************************************************************/
|
|
1292
|
+
/******/ /* webpack/runtime/compat get default export */
|
|
1293
|
+
/******/ (() => {
|
|
1294
|
+
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
|
1295
|
+
/******/ __webpack_require__.n = (module) => {
|
|
1296
|
+
/******/ var getter = module && module.__esModule ?
|
|
1297
|
+
/******/ () => (module['default']) :
|
|
1298
|
+
/******/ () => (module);
|
|
1299
|
+
/******/ __webpack_require__.d(getter, { a: getter });
|
|
1300
|
+
/******/ return getter;
|
|
1301
|
+
/******/ };
|
|
1302
|
+
/******/ })();
|
|
1303
|
+
/******/
|
|
1304
|
+
/******/ /* webpack/runtime/define property getters */
|
|
1305
|
+
/******/ (() => {
|
|
1306
|
+
/******/ // define getter functions for harmony exports
|
|
1307
|
+
/******/ __webpack_require__.d = (exports, definition) => {
|
|
1308
|
+
/******/ for(var key in definition) {
|
|
1309
|
+
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
1310
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
1311
|
+
/******/ }
|
|
1312
|
+
/******/ }
|
|
1313
|
+
/******/ };
|
|
1314
|
+
/******/ })();
|
|
1315
|
+
/******/
|
|
1316
|
+
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
|
1317
|
+
/******/ (() => {
|
|
1318
|
+
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
|
|
1319
|
+
/******/ })();
|
|
1320
|
+
/******/
|
|
1321
|
+
/******/ /* webpack/runtime/make namespace object */
|
|
1322
|
+
/******/ (() => {
|
|
1323
|
+
/******/ // define __esModule on exports
|
|
1324
|
+
/******/ __webpack_require__.r = (exports) => {
|
|
1325
|
+
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
|
1326
|
+
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
1327
|
+
/******/ }
|
|
1328
|
+
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
|
1329
|
+
/******/ };
|
|
1330
|
+
/******/ })();
|
|
1331
|
+
/******/
|
|
1332
|
+
/************************************************************************/
|
|
1333
|
+
var __webpack_exports__ = {};
|
|
1334
|
+
// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
|
|
1335
|
+
(() => {
|
|
1336
|
+
/*!************************!*\
|
|
1337
|
+
!*** ./src/package.ts ***!
|
|
1338
|
+
\************************/
|
|
1339
|
+
__webpack_require__.r(__webpack_exports__);
|
|
1340
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1341
|
+
/* harmony export */ "_package": () => (/* binding */ _package),
|
|
1342
|
+
/* harmony export */ "sequenceAlignment": () => (/* binding */ sequenceAlignment),
|
|
1343
|
+
/* harmony export */ "webLogoViewer": () => (/* binding */ webLogoViewer)
|
|
1344
|
+
/* harmony export */ });
|
|
1345
|
+
/* harmony import */ var datagrok_api_dg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! datagrok-api/dg */ "datagrok-api/dg");
|
|
1346
|
+
/* harmony import */ var datagrok_api_dg__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(datagrok_api_dg__WEBPACK_IMPORTED_MODULE_0__);
|
|
1347
|
+
/* harmony import */ var _seq_align__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./seq_align */ "./src/seq_align.ts");
|
|
1348
|
+
/* harmony import */ var _datagrok_libraries_bio_src_viewers_web_logo__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @datagrok-libraries/bio/src/viewers/web-logo */ "./node_modules/@datagrok-libraries/bio/src/viewers/web-logo.js");
|
|
1349
|
+
|
|
1350
|
+
|
|
1351
|
+
let _package = new datagrok_api_dg__WEBPACK_IMPORTED_MODULE_0__.Package();
|
|
1352
|
+
|
|
1353
|
+
//name: sequenceAlignment
|
|
1354
|
+
//input: string alignType {choices: ['Local alignment', 'Global alignment']}
|
|
1355
|
+
//input: string alignTable {choices: ['AUTO', 'NUCLEOTIDES', 'BLOSUM45', 'BLOSUM50','BLOSUM62','BLOSUM80','BLOSUM90','PAM30','PAM70','PAM250','SCHNEIDER','TRANS']}
|
|
1356
|
+
//input: double gap
|
|
1357
|
+
//input: string seq1
|
|
1358
|
+
//input: string seq2
|
|
1359
|
+
//output: object res
|
|
1360
|
+
function sequenceAlignment(alignType, alignTable, gap, seq1, seq2) {
|
|
1361
|
+
let toAlign = new _seq_align__WEBPACK_IMPORTED_MODULE_1__.SequenceAlignment(seq1, seq2, gap, alignTable);
|
|
1362
|
+
let res = alignType == 'Local alignment' ? toAlign.smithWaterman() : toAlign.needlemanWunch();
|
|
1363
|
+
return res;
|
|
1364
|
+
}
|
|
1365
|
+
//name: WebLogo
|
|
1366
|
+
//description: WebLogo viewer
|
|
1367
|
+
//tags: viewer, panel
|
|
1368
|
+
//output: viewer result
|
|
1369
|
+
function webLogoViewer() {
|
|
1370
|
+
return new _datagrok_libraries_bio_src_viewers_web_logo__WEBPACK_IMPORTED_MODULE_2__.WebLogo();
|
|
1371
|
+
}
|
|
1372
|
+
|
|
1373
|
+
})();
|
|
1374
|
+
|
|
1375
|
+
sequences1 = __webpack_exports__;
|
|
1376
|
+
/******/ })()
|
|
1377
|
+
;
|
|
1378
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEIseUJBQXlCO0FBQ3pCLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGdCQUFnQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixnQkFBZ0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixlQUFlO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsZUFBZTtBQUN2QztBQUNBLDRCQUE0QixlQUFlO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLG1CQUFtQjtBQUMzQztBQUNBLDRCQUE0QixtQkFBbUI7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsZ0JBQWdCO0FBQ3hDLDRCQUE0QixnQkFBZ0I7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsbUJBQW1CO0FBQzNDO0FBQ0EsNEJBQTRCLG1CQUFtQjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLGdCQUFnQjtBQUN4Qyw0QkFBNEIsZ0JBQWdCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7QUNoZkE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7VUNBQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBOztVQUVBO1VBQ0E7O1VBRUE7VUFDQTtVQUNBOzs7OztXQ3RCQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EsaUNBQWlDLFdBQVc7V0FDNUM7V0FDQTs7Ozs7V0NQQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLHlDQUF5Qyx3Q0FBd0M7V0FDakY7V0FDQTtXQUNBOzs7OztXQ1BBOzs7OztXQ0FBO1dBQ0E7V0FDQTtXQUNBLHVEQUF1RCxpQkFBaUI7V0FDeEU7V0FDQSxnREFBZ0QsYUFBYTtXQUM3RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNOc0M7QUFDVTtBQUN6QyxtQkFBbUIsb0RBQVU7QUFDbUM7QUFDdkU7QUFDQSwyQkFBMkI7QUFDM0IsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCxzQkFBc0IseURBQWlCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCxlQUFlLGlGQUFPO0FBQ3RCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc2VxdWVuY2VzMS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvYW1pbm9hY2lkcy5qcyIsIndlYnBhY2s6Ly9zZXF1ZW5jZXMxLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy9udWNsZW90aWRlcy5qcyIsIndlYnBhY2s6Ly9zZXF1ZW5jZXMxLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy9zZXEtcGFsZXR0ZXMuanMiLCJ3ZWJwYWNrOi8vc2VxdWVuY2VzMS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL2Jpby9zcmMvdmlld2Vycy93ZWItbG9nby5qcyIsIndlYnBhY2s6Ly9zZXF1ZW5jZXMxLy4vc3JjL3NlcV9hbGlnbi50cyIsIndlYnBhY2s6Ly9zZXF1ZW5jZXMxL2V4dGVybmFsIHZhciBcIkRHXCIiLCJ3ZWJwYWNrOi8vc2VxdWVuY2VzMS9leHRlcm5hbCB2YXIgXCJyeGpzXCIiLCJ3ZWJwYWNrOi8vc2VxdWVuY2VzMS9leHRlcm5hbCB2YXIgXCJ1aVwiIiwid2VicGFjazovL3NlcXVlbmNlczEvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vc2VxdWVuY2VzMS93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9zZXF1ZW5jZXMxL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9zZXF1ZW5jZXMxL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vc2VxdWVuY2VzMS93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL3NlcXVlbmNlczEvLi9zcmMvcGFja2FnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZXFQYWxldHRlQmFzZSB9IGZyb20gJy4vc2VxLXBhbGV0dGVzJztcbmV4cG9ydCBjbGFzcyBBbWlub2FjaWRzUGFsZXR0ZXMgZXh0ZW5kcyBTZXFQYWxldHRlQmFzZSB7XG4gICAgc3RhdGljIGdldCBMZXNrKCkge1xuICAgICAgICBpZiAodGhpcy5sZXNrID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgIHRoaXMubGVzayA9IHRoaXMubWFrZVBhbGV0dGUoW1xuICAgICAgICAgICAgICAgIFtbJ0cnLCAnQScsICdTJywgJ1QnXSwgJ29yYW5nZSddLFxuICAgICAgICAgICAgICAgIFtbJ0MnLCAnVicsICdJJywgJ0wnLCAnUCcsICdGJywgJ1knLCAnTScsICdXJ10sICdhbGxfZ3JlZW4nXSxcbiAgICAgICAgICAgICAgICBbWydOJywgJ1EnLCAnSCddLCAnbWFnZW50YSddLFxuICAgICAgICAgICAgICAgIFtbJ0QnLCAnRSddLCAncmVkJ10sXG4gICAgICAgICAgICAgICAgW1snSycsICdSJ10sICdhbGxfYmx1ZSddLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMubGVzaztcbiAgICB9XG4gICAgc3RhdGljIGdldCBHcm9rR3JvdXBzKCkge1xuICAgICAgICBpZiAodGhpcy5ncm9rR3JvdXBzID09PSB2b2lkIDApIHtcbiAgICAgICAgICAgIHRoaXMuZ3Jva0dyb3VwcyA9IHRoaXMubWFrZVBhbGV0dGUoW1xuICAgICAgICAgICAgICAgIFtbJ0MnLCAnVSddLCAneWVsbG93J10sXG4gICAgICAgICAgICAgICAgW1snRycsICdQJ10sICdyZWQnXSxcbiAgICAgICAgICAgICAgICBbWydBJywgJ1YnLCAnSScsICdMJywgJ00nLCAnRicsICdZJywgJ1cnXSwgJ2FsbF9ncmVlbiddLFxuICAgICAgICAgICAgICAgIFtbJ1InLCAnSCcsICdLJ10sICdsaWdodF9ibHVlJ10sXG4gICAgICAgICAgICAgICAgW1snRCcsICdFJ10sICdkYXJrX2JsdWUnXSxcbiAgICAgICAgICAgICAgICBbWydTJywgJ1QnLCAnTicsICdRJ10sICdvcmFuZ2UnXSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmdyb2tHcm91cHM7XG4gICAgfVxuICAgIHN0YXRpYyBnZXQgUmFzTW9sKCkge1xuICAgICAgICBpZiAodGhpcy5yYXNNb2wgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgdGhpcy5yYXNNb2wgPSB7XG4gICAgICAgICAgICAgICAgLy8gaHR0cDovL2FjY2VzLmVucy1seW9uLmZyL2Jpb3RpYy9yYXN0b3AvaGVscC9jb2xvdXIuaHRtXG4gICAgICAgICAgICAgICAgJ0QnOiAnI0U2MEEwQScsXG4gICAgICAgICAgICAgICAgJ0UnOiAnI0U2MEEwQScsXG4gICAgICAgICAgICAgICAgJ0MnOiAnI0U2RTYwMCcsXG4gICAgICAgICAgICAgICAgJ00nOiAnI0U2RTYwMCcsXG4gICAgICAgICAgICAgICAgJ0snOiAnIzE0NUFGRicsXG4gICAgICAgICAgICAgICAgJ1InOiAnIzE0NUFGRicsXG4gICAgICAgICAgICAgICAgJ1MnOiAnI0ZBOTYwMCcsXG4gICAgICAgICAgICAgICAgJ1QnOiAnI0ZBOTYwMCcsXG4gICAgICAgICAgICAgICAgJ0YnOiAnIzMyMzJBQScsXG4gICAgICAgICAgICAgICAgJ1knOiAnIzMyMzJBQScsXG4gICAgICAgICAgICAgICAgJ04nOiAnIzAwRENEQycsXG4gICAgICAgICAgICAgICAgJ1EnOiAnIzAwRENEQycsXG4gICAgICAgICAgICAgICAgJ0cnOiAnI0VCRUJFQicsXG4gICAgICAgICAgICAgICAgJ0wnOiAnIzBGODIwRicsXG4gICAgICAgICAgICAgICAgJ1YnOiAnIzBGODIwRicsXG4gICAgICAgICAgICAgICAgJ0knOiAnIzBGODIwRicsXG4gICAgICAgICAgICAgICAgJ0EnOiAnI0M4QzhDOCcsXG4gICAgICAgICAgICAgICAgJ1cnOiAnI0I0NUFCNCcsXG4gICAgICAgICAgICAgICAgJ0gnOiAnIzgyODJEMicsXG4gICAgICAgICAgICAgICAgJ1AnOiAnI0RDOTY4MicsXG4gICAgICAgICAgICAgICAgJ290aGVycyc6ICcjQkVBMDZFJyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmFzTW9sO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBBbWlub2FjaWRzIHtcbiAgICBzdGF0aWMgZ2V0UGFsZXR0ZShzY2hlbWUgPSAnZ3JvaycpIHtcbiAgICAgICAgc3dpdGNoIChzY2hlbWUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2dyb2snOlxuICAgICAgICAgICAgICAgIHJldHVybiBBbWlub2FjaWRzUGFsZXR0ZXMuR3Jva0dyb3VwcztcbiAgICAgICAgICAgIGNhc2UgJ2xlc2snOlxuICAgICAgICAgICAgICAgIHJldHVybiBBbWlub2FjaWRzUGFsZXR0ZXMuTGVzaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDaGVtUGFsZXR0ZTogc2NoZW1lIFxcYCR7c2NoZW1lfVxcYCBkb2VzIG5vdCBleGlzdGApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgZGl2aWRlZCBhbWlubyBhY2lkIHdpdGggaXRzIGNvbnRlbnQgaW4gdGhlIGJyYWNrZXQsIGlmIHRoZSBjb250ZW50IGlzIG51bWJlciwgdGhlbiBpdHMgb21pdHRlZFxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGMgcmF3IGFtaW5vXG4gICAgICogQHJldHVybiB7W3N0cmluZywgc3RyaW5nXX0gb3V0ZXIgYW5kIGlubmVyIGNvbnRlbnRcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0SW5uZXJPdXRlcihjKSB7XG4gICAgICAgIGxldCBpc0lubmVyID0gMDtcbiAgICAgICAgbGV0IGlubmVyID0gJyc7XG4gICAgICAgIGxldCBvdXRlciA9ICcnO1xuICAgICAgICBmb3IgKGNvbnN0IGNoYXIgb2YgYykge1xuICAgICAgICAgICAgaWYgKGNoYXIgPT0gJygnKVxuICAgICAgICAgICAgICAgIGlzSW5uZXIrKztcbiAgICAgICAgICAgIGVsc2UgaWYgKGNoYXIgPT0gJyknKVxuICAgICAgICAgICAgICAgIGlzSW5uZXItLTtcbiAgICAgICAgICAgIGVsc2UgaWYgKGlzSW5uZXIpXG4gICAgICAgICAgICAgICAgaW5uZXIgKz0gY2hhcjtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBvdXRlciArPSBjaGFyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhaXNOYU4ocGFyc2VJbnQoaW5uZXIpKSA/IFtvdXRlciwgJyddIDogW291dGVyLCBpbm5lcl07XG4gICAgfVxuICAgIHN0YXRpYyBnZXRDb2xvckFBUGl2b3QobW9ub21lciA9ICcnLCBzY2hlbWUgPSAnZ3JvaycpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIC8vY29uc3QgY2hlbVBhbGV0dGVJbnN0YW5jZSA9IEFBUGFsZXR0ZXMuR3Jva0dyb3VwcygpO1xuICAgICAgICBjb25zdCBjaGVtUGFsZXR0ZUluc3RhbmNlID0gdGhpcy5nZXRQYWxldHRlKHNjaGVtZSk7XG4gICAgICAgIGxldCBbb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXJdID0gdGhpcy5nZXRJbm5lck91dGVyKG1vbm9tZXIpO1xuICAgICAgICBvdXRlck1vbm9tZXIgPSAob3V0ZXJNb25vbWVyLmxlbmd0aCA+IDYgPyBgJHtvdXRlck1vbm9tZXIuc2xpY2UoMCwgMyl9Li4uYCA6IG91dGVyTW9ub21lcik7XG4gICAgICAgIGlubmVyTW9ub21lciA9IChpbm5lck1vbm9tZXIubGVuZ3RoID4gNiA/IGAke2lubmVyTW9ub21lci5zbGljZSgwLCAzKX0uLi5gIDogaW5uZXJNb25vbWVyKTtcbiAgICAgICAgaWYgKG1vbm9tZXIubGVuZ3RoID09IDEgfHwgbW9ub21lclsxXSA9PSAnKCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGFtaW5vID0gKF9hID0gbW9ub21lclswXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICByZXR1cm4gYW1pbm8gaW4gY2hlbVBhbGV0dGVJbnN0YW5jZSA/XG4gICAgICAgICAgICAgICAgW2NoZW1QYWxldHRlSW5zdGFuY2VbYW1pbm9dLCBhbWlubywgaW5uZXJNb25vbWVyLCAxXSA6XG4gICAgICAgICAgICAgICAgW3RoaXMudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCAxXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobW9ub21lclswXSA9PSAnZCcgJiYgbW9ub21lclsxXSBpbiBjaGVtUGFsZXR0ZUluc3RhbmNlKSB7XG4gICAgICAgICAgICBpZiAobW9ub21lci5sZW5ndGggPT0gMiB8fCBtb25vbWVyWzJdID09ICcoJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFtaW5vID0gKF9iID0gbW9ub21lclsxXSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFtaW5vIGluIGNoZW1QYWxldHRlSW5zdGFuY2UgP1xuICAgICAgICAgICAgICAgICAgICBbY2hlbVBhbGV0dGVJbnN0YW5jZVthbWlub10sIGFtaW5vLCBpbm5lck1vbm9tZXIsIDJdIDpcbiAgICAgICAgICAgICAgICAgICAgW3RoaXMudW5kZWZpbmVkQ29sb3IsIG91dGVyTW9ub21lciwgaW5uZXJNb25vbWVyLCAyXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobW9ub21lci5zdWJzdHJpbmcoMCwgMykgaW4gdGhpcy5BQUZ1bGxOYW1lcykge1xuICAgICAgICAgICAgaWYgKG1vbm9tZXIubGVuZ3RoID09IDMgfHwgbW9ub21lclszXSA9PSAnKCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhbWlubyA9IHRoaXMuQUFGdWxsTmFtZXNbbW9ub21lci5zdWJzdHJpbmcoMCwgMyldO1xuICAgICAgICAgICAgICAgIHJldHVybiBhbWlubyBpbiBjaGVtUGFsZXR0ZUluc3RhbmNlID9cbiAgICAgICAgICAgICAgICAgICAgW2NoZW1QYWxldHRlSW5zdGFuY2VbYW1pbm9dLCBhbWlubywgaW5uZXJNb25vbWVyLCAzXSA6XG4gICAgICAgICAgICAgICAgICAgIFt0aGlzLnVuZGVmaW5lZENvbG9yLCBvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lciwgM107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCgoX2MgPSBtb25vbWVyWzBdKSA9PT0gbnVsbCB8fCBfYyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2MudG9Mb3dlckNhc2UoKSkgPT0gbW9ub21lclswXSkge1xuICAgICAgICAgICAgaWYgKG1vbm9tZXIuc3Vic3RyaW5nKDEsIDMpIGluIHRoaXMuQUFGdWxsTmFtZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAobW9ub21lci5sZW5ndGggPT0gNCB8fCBtb25vbWVyWzRdID09ICcoJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhbWlubyA9IHRoaXMuQUFGdWxsTmFtZXNbbW9ub21lci5zdWJzdHJpbmcoMSwgMyldO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYW1pbm8gaW4gY2hlbVBhbGV0dGVJbnN0YW5jZSA/XG4gICAgICAgICAgICAgICAgICAgICAgICBbY2hlbVBhbGV0dGVJbnN0YW5jZVthbWlub10sIGFtaW5vLCBpbm5lck1vbm9tZXIsIDRdIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aGlzLnVuZGVmaW5lZENvbG9yLCBvdXRlck1vbm9tZXIsIGlubmVyTW9ub21lciwgNF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbdGhpcy51bmRlZmluZWRDb2xvciwgb3V0ZXJNb25vbWVyLCBpbm5lck1vbm9tZXIsIDBdO1xuICAgIH1cbn1cbkFtaW5vYWNpZHMuU2VtVHlwZSA9ICdBbWlub2FjaWRzJztcbkFtaW5vYWNpZHMuU2VtVHlwZU11bHRpcGxlQWxpZ25tZW50ID0gJ0FtaW5vYWNpZHNNdWx0aXBsZUFsaWdubWVudCc7XG5BbWlub2FjaWRzLnVuZGVmaW5lZENvbG9yID0gJ3JnYigxMDAsMTAwLDEwMCknO1xuQW1pbm9hY2lkcy5OYW1lcyA9IHtcbiAgICAnRyc6ICdHbHljaW5lJyxcbiAgICAnTCc6ICdMZXVjaW5lJyxcbiAgICAnWSc6ICdUeXJvc2luZScsXG4gICAgJ1MnOiAnU2VyaW5lJyxcbiAgICAnRSc6ICdHbHV0YW1pYyBhY2lkJyxcbiAgICAnUSc6ICdHbHV0YW1pbmUnLFxuICAgICdEJzogJ0FzcGFydGljIGFjaWQnLFxuICAgICdOJzogJ0FzcGFyYWdpbmUnLFxuICAgICdGJzogJ1BoZW55bGFsYW5pbmUnLFxuICAgICdBJzogJ0FsYW5pbmUnLFxuICAgICdLJzogJ0x5c2luZScsXG4gICAgJ1InOiAnQXJnaW5pbmUnLFxuICAgICdIJzogJ0hpc3RpZGluZScsXG4gICAgJ0MnOiAnQ3lzdGVpbmUnLFxuICAgICdWJzogJ1ZhbGluZScsXG4gICAgJ1AnOiAnUHJvbGluZScsXG4gICAgJ1cnOiAnVHJ5cHRvcGhhbicsXG4gICAgJ0knOiAnSXNvbGV1Y2luZScsXG4gICAgJ00nOiAnTWV0aGlvbmluZScsXG4gICAgJ1QnOiAnVGhyZW9uaW5lJyxcbn07XG5BbWlub2FjaWRzLkFBU21pbGVzID0ge1xuICAgICdHJzogJ05DQyg9TylPJyxcbiAgICAnTCc6ICdOW0NASF0oQ0MoQylDKUMoPU8pTycsXG4gICAgJ1knOiAnTkMoQ0MxPUNDPUMoTylDPUMxKUMoPU8pTycsXG4gICAgJ1MnOiAnTkMoQ08pQyg9TylPJyxcbiAgICAnRSc6ICdOW0NAQEhdKENDQyhPKT1PKUMoPU8pTycsXG4gICAgJ1EnOiAnTltDQEBIXShDQ0MoTik9TylDKD1PKU8nLFxuICAgICdEJzogJ05bQ0BASF0oQ0MoTyk9TylDKD1PKU8nLFxuICAgICdOJzogJ05bQ0BASF0oQ0MoTik9TylDKD1PKU8nLFxuICAgICdGJzogJ05DKENDMT1DQz1DQz1DMSlDKD1PKU8nLFxuICAgICdBJzogJ05bQ0BIXShDKUMoPU8pTycsXG4gICAgJ0snOiAnTkMoQ0NDQ04pQyg9TylPJyxcbiAgICAnUic6ICdOW0NASF0oQ0NDTkMoPU4pQylDKD1PKU8nLFxuICAgICdIJzogJ05DKENDMT1DTj1DW05dMSlDKD1PKU8nLFxuICAgICdDJzogJ05bQ0BASF0oQ1MpQyg9TylPJyxcbiAgICAnVic6ICdOQyhDKEMpQylDKD1PKU8nLFxuICAgICdQJzogJ04oQ0NDMSlDMUMoPU8pTycsXG4gICAgJ1cnOiAnTltDQEBIXShDYzFjMmNjY2NjMm4oW0hdKWMxKUMoPU8pTycsXG4gICAgJ0knOiAnTltDQEhdKFtDQEhdKEMpQ0MpQyg9TylPJyxcbiAgICAnTSc6ICdOQyhDQ1NDKUMoPU8pTycsXG4gICAgJ1QnOiAnTkMoQyhPKUMpQyg9TylPJyxcbn07XG5BbWlub2FjaWRzLkFBU21pbGVzVHJ1bmNhdGVkID0ge1xuICAgICdHJzogJypDKicsXG4gICAgJ0wnOiAnQ0MoQylDW0NASF0oKikqJyxcbiAgICAnWSc6ICdDMT1DQyg9Q0M9QzFDQygqKSopTycsXG4gICAgJ1MnOiAnT0NDKCopQyonLFxuICAgICdFJzogJypbQ0BASF0oQ0NDKE8pPU8pKicsXG4gICAgJ1EnOiAnKk5bQ0BASF0oQ0NDKE4pPU8pKicsXG4gICAgJ0QnOiAnKltDQEBIXShDQyhPKT1PKSonLFxuICAgICdOJzogJypbQ0BASF0oQ0MoTik9TykqJyxcbiAgICAnRic6ICdDMT1DQz1DKEM9QzEpQ0MoKikqJyxcbiAgICAnQSc6ICdDW0NASF0oKikqJyxcbiAgICAnSyc6ICdDKENDTilDQygqKSonLFxuICAgICdSJzogJypbQ0BIXShDQ0NOQyg9TilDKSonLFxuICAgICdIJzogJ0MxPUMoTkM9TjEpQ0MoKikqJyxcbiAgICAnQyc6ICdDKFtDQEBIXSgqKSopUycsXG4gICAgJ1YnOiAnQ0MoQylDKCopKicsXG4gICAgJ1AnOiAnQzFDQ04oKilDMSonLFxuICAgICdXJzogJypbQ0BASF0oQ2MxYzJjY2NjYzJuKFtIXSljMSkqJyxcbiAgICAnSSc6ICdDQ1tDQEhdKEMpW0NASF0oKikqJyxcbiAgICAnTSc6ICdDU0NDQygqKSonLFxuICAgICdUJzogJ0NDKE8pQygqKSonLFxufTtcbi8qKiBUT0RPOiBGdWxsP1xuICovXG5BbWlub2FjaWRzLkFBRnVsbE5hbWVzID0ge1xuICAgICdBbGEnOiAnQScsXG4gICAgJ0FyZyc6ICdSJyxcbiAgICAnQXNuJzogJ04nLFxuICAgICdBc3AnOiAnRCcsXG4gICAgJ0N5cyc6ICdDJyxcbiAgICAnR2xuJzogJ1EnLFxuICAgICdHbHUnOiAnRScsXG4gICAgJ0dseSc6ICdHJyxcbiAgICAnSGlzJzogJ0gnLFxuICAgICdJbGUnOiAnSScsXG4gICAgJ0xldSc6ICdMJyxcbiAgICAnTHlzJzogJ0snLFxuICAgICdNZXQnOiAnTScsXG4gICAgJ1BoZSc6ICdGJyxcbiAgICAnUHJvJzogJ1AnLFxuICAgICdTZXInOiAnUycsXG4gICAgJ1Rocic6ICdUJyxcbiAgICAnVHJwJzogJ1cnLFxuICAgICdUeXInOiAnWScsXG4gICAgJ1ZhbCc6ICdWJyxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lZVzFwYm05aFkybGtjeTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkltRnRhVzV2WVdOcFpITXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUzBFc1QwRkJUeXhGUVVGaExHTkJRV01zUlVGQlF5eE5RVUZOTEdkQ1FVRm5RaXhEUVVGRE8wRkJSVEZFTEUxQlFVMHNUMEZCVHl4clFrRkJiVUlzVTBGQlVTeGpRVUZqTzBsQlJ6ZERMRTFCUVUwc1MwRkJTeXhKUVVGSk8xRkJRM0JDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRWxCUVVrc1MwRkJTeXhMUVVGTExFTkJRVU1zUlVGQlJUdFpRVU40UWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eFhRVUZYTEVOQlFVTTdaMEpCUXpOQ0xFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUlVGQlJTeFJRVUZSTEVOQlFVTTdaMEpCUTJoRExFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEZRVUZGTEZkQlFWY3NRMEZCUXp0blFrRkROVVFzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFVkJRVVVzVTBGQlV5eERRVUZETzJkQ1FVTTFRaXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJRenRuUWtGRGJrSXNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUlVGQlJTeFZRVUZWTEVOQlFVTTdZVUZEZWtJc1EwRkJReXhEUVVGRE8xTkJRMG83VVVGRFJDeFBRVUZQTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNN1NVRkRia0lzUTBGQlF6dEpRVWxOTEUxQlFVMHNTMEZCU3l4VlFVRlZPMUZCUXpGQ0xFbEJRVWtzU1VGQlNTeERRVUZETEZWQlFWVXNTMEZCU3l4TFFVRkxMRU5CUVVNc1JVRkJSVHRaUVVNNVFpeEpRVUZKTEVOQlFVTXNWVUZCVlN4SFFVRkhMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU03WjBKQlEycERMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVWQlFVVXNVVUZCVVN4RFFVRkRPMmRDUVVOMFFpeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhGUVVGRkxFdEJRVXNzUTBGQlF6dG5Ra0ZEYmtJc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1JVRkJSU3hYUVVGWExFTkJRVU03WjBKQlEzWkVMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RlFVRkZMRmxCUVZrc1EwRkJRenRuUWtGREwwSXNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUlVGQlJTeFhRVUZYTEVOQlFVTTdaMEpCUTNwQ0xFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUlVGQlJTeFJRVUZSTEVOQlFVTTdZVUZEYWtNc1EwRkJReXhEUVVGRE8xTkJRMG83VVVGRFJDeFBRVUZQTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNN1NVRkRla0lzUTBGQlF6dEpRVWxOTEUxQlFVMHNTMEZCU3l4TlFVRk5PMUZCUTNSQ0xFbEJRVWtzU1VGQlNTeERRVUZETEUxQlFVMHNTMEZCU3l4TFFVRkxMRU5CUVVNc1JVRkJSVHRaUVVNeFFpeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhPMmRDUVVOYUxIbEVRVUY1UkR0blFrRkRla1FzUjBGQlJ5eEZRVUZGTEZOQlFWTTdaMEpCUTJRc1IwRkJSeXhGUVVGRkxGTkJRVk03WjBKQlEyUXNSMEZCUnl4RlFVRkZMRk5CUVZNN1owSkJRMlFzUjBGQlJ5eEZRVUZGTEZOQlFWTTdaMEpCUTJRc1IwRkJSeXhGUVVGRkxGTkJRVk03WjBKQlEyUXNSMEZCUnl4RlFVRkZMRk5CUVZNN1owSkJRMlFzUjBGQlJ5eEZRVUZGTEZOQlFWTTdaMEpCUTJRc1IwRkJSeXhGUVVGRkxGTkJRVk03WjBKQlEyUXNSMEZCUnl4RlFVRkZMRk5CUVZNN1owSkJRMlFzUjBGQlJ5eEZRVUZGTEZOQlFWTTdaMEpCUTJRc1IwRkJSeXhGUVVGRkxGTkJRVk03WjBKQlEyUXNSMEZCUnl4RlFVRkZMRk5CUVZNN1owSkJRMlFzUjBGQlJ5eEZRVUZGTEZOQlFWTTdaMEpCUTJRc1IwRkJSeXhGUVVGRkxGTkJRVk03WjBKQlEyUXNSMEZCUnl4RlFVRkZMRk5CUVZNN1owSkJRMlFzUjBGQlJ5eEZRVUZGTEZOQlFWTTdaMEpCUTJRc1IwRkJSeXhGUVVGRkxGTkJRVk03WjBKQlEyUXNSMEZCUnl4RlFVRkZMRk5CUVZNN1owSkJRMlFzUjBGQlJ5eEZRVUZGTEZOQlFWTTdaMEpCUTJRc1IwRkJSeXhGUVVGRkxGTkJRVk03WjBKQlEyUXNVVUZCVVN4RlFVRkZMRk5CUVZNN1lVRkRjRUlzUTBGQlF6dFRRVU5JTzFGQlEwUXNUMEZCVHl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRE8wbEJRM0pDTEVOQlFVTTdRMEZEUmp0QlFVVkVMRTFCUVUwc1QwRkJUeXhWUVVGVk8wbEJjVWRrTEUxQlFVMHNRMEZCUXl4VlFVRlZMRU5CUVVNc1UwRkJhVUlzVFVGQlRUdFJRVU01UXl4UlFVRlJMRTFCUVUwc1JVRkJSVHRaUVVOb1FpeExRVUZMTEUxQlFVMDdaMEpCUTFRc1QwRkJUeXhyUWtGQmEwSXNRMEZCUXl4VlFVRlZMRU5CUVVNN1dVRkRka01zUzBGQlN5eE5RVUZOTzJkQ1FVTlVMRTlCUVU4c2EwSkJRV3RDTEVOQlFVTXNTVUZCU1N4RFFVRkRPMWxCUTJwRE8yZENRVU5GTEUxQlFVMHNTVUZCU1N4TFFVRkxMRU5CUVVNc2VVSkJRWGxDTEUxQlFVMHNiVUpCUVcxQ0xFTkJRVU1zUTBGQlF6dFRRVU55UlR0SlFVTklMRU5CUVVNN1NVRkZSRHM3T3pzN1QwRkxSenRKUVVOSkxFMUJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTXNRMEZCVXp0UlFVTnVReXhKUVVGSkxFOUJRVThzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEYUVJc1NVRkJTU3hMUVVGTExFZEJRVWNzUlVGQlJTeERRVUZETzFGQlEyWXNTVUZCU1N4TFFVRkxMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJSV1lzUzBGQlN5eE5RVUZOTEVsQlFVa3NTVUZCU1N4RFFVRkRMRVZCUVVVN1dVRkRjRUlzU1VGQlNTeEpRVUZKTEVsQlFVa3NSMEZCUnp0blFrRkRZaXhQUVVGUExFVkJRVVVzUTBGQlF6dHBRa0ZEVUN4SlFVRkpMRWxCUVVrc1NVRkJTU3hIUVVGSE8yZENRVU5zUWl4UFFVRlBMRVZCUVVVc1EwRkJRenRwUWtGRFVDeEpRVUZKTEU5QlFVODdaMEpCUTJRc1MwRkJTeXhKUVVGSkxFbEJRVWtzUTBGQlF6czdaMEpCUldRc1MwRkJTeXhKUVVGSkxFbEJRVWtzUTBGQlF6dFRRVU5xUWp0UlFVVkVMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zVVVGQlVTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0SlFVTm9SU3hEUVVGRE8wbEJSVTBzVFVGQlRTeERRVUZETEdWQlFXVXNRMEZCUXl4VlFVRnJRaXhGUVVGRkxFVkJRVVVzVTBGQmFVSXNUVUZCVFRzN1VVRkRla1VzYzBSQlFYTkVPMUZCUTNSRUxFMUJRVTBzYlVKQlFXMUNMRWRCUVVjc1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0UlFVTndSQ3hKUVVGSkxFTkJRVU1zV1VGQldTeEZRVUZGTEZsQlFWa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhoUVVGaExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdVVUZETDBRc1dVRkJXU3hIUVVGSExFTkJRVU1zV1VGQldTeERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzV1VGQldTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNXVUZCV1N4RFFVRkRMRU5CUVVNN1VVRkRNMFlzV1VGQldTeEhRVUZITEVOQlFVTXNXVUZCV1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NXVUZCV1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU03VVVGRk0wWXNTVUZCU1N4UFFVRlBMRU5CUVVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1IwRkJSeXhGUVVGRk8xbEJRelZETEUxQlFVMHNTMEZCU3l4SFFVRkhMRTFCUVVFc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5d3dRMEZCUlN4WFFVRlhMRVZCUVVjc1EwRkJRenRaUVVONlF5eFBRVUZQTEV0QlFVc3NTVUZCU1N4dFFrRkJiVUlzUTBGQlF5eERRVUZETzJkQ1FVTnVReXhEUVVGRExHMUNRVUZ0UWl4RFFVRkRMRXRCUVVzc1EwRkJReXhGUVVGRkxFdEJRVXNzUlVGQlJTeFpRVUZaTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRGRFUXNRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhGUVVGRkxGbEJRVmtzUlVGQlJTeFpRVUZaTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1UwRkRlRVE3VVVGRlJDeEpRVUZKTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hIUVVGSExFbEJRVWtzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUlN4SlFVRkpMRzFDUVVGdFFpeEZRVUZGTzFsQlF6TkVMRWxCUVVrc1QwRkJUeXhEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEVsQlFVa3NUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFZEJRVWNzUlVGQlJUdG5Ra0ZETlVNc1RVRkJUU3hMUVVGTExFZEJRVWNzVFVGQlFTeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMREJEUVVGRkxGZEJRVmNzUlVGQlJ5eERRVUZETzJkQ1FVTjZReXhQUVVGUExFdEJRVXNzU1VGQlNTeHRRa0ZCYlVJc1EwRkJReXhEUVVGRE8yOUNRVU51UXl4RFFVRkRMRzFDUVVGdFFpeERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZMRXRCUVVzc1JVRkJSU3haUVVGWkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRkRVFzUTBGQlF5eEpRVUZKTEVOQlFVTXNZMEZCWXl4RlFVRkZMRmxCUVZrc1JVRkJSU3haUVVGWkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdZVUZEZUVRN1UwRkRSanRSUVVWRUxFbEJRVWtzVDBGQlR5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFbEJRVWtzU1VGQlNTeERRVUZETEZkQlFWY3NSVUZCUlR0WlFVTXZReXhKUVVGSkxFOUJRVThzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4SlFVRkpMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeEhRVUZITEVWQlFVVTdaMEpCUXpWRExFMUJRVTBzUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1QwRkJUeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRGVFUXNUMEZCVHl4TFFVRkxMRWxCUVVrc2JVSkJRVzFDTEVOQlFVTXNRMEZCUXp0dlFrRkRia01zUTBGQlF5eHRRa0ZCYlVJc1EwRkJReXhMUVVGTExFTkJRVU1zUlVGQlJTeExRVUZMTEVWQlFVVXNXVUZCV1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlEzUkVMRU5CUVVNc1NVRkJTU3hEUVVGRExHTkJRV01zUlVGQlJTeFpRVUZaTEVWQlFVVXNXVUZCV1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8yRkJRM2hFTzFOQlEwWTdVVUZGUkN4SlFVRkpMRU5CUVVFc1RVRkJRU3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETERCRFFVRkZMRmRCUVZjc1JVRkJSU3hMUVVGSkxFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlR0WlFVTXpReXhKUVVGSkxFOUJRVThzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eFhRVUZYTEVWQlFVVTdaMEpCUXk5RExFbEJRVWtzVDBGQlR5eERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRWxCUVVrc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVkQlFVY3NSVUZCUlR0dlFrRkROVU1zVFVGQlRTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhQUVVGUExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVU40UkN4UFFVRlBMRXRCUVVzc1NVRkJTU3h0UWtGQmJVSXNRMEZCUXl4RFFVRkRPM2RDUVVOdVF5eERRVUZETEcxQ1FVRnRRaXhEUVVGRExFdEJRVXNzUTBGQlF5eEZRVUZGTEV0QlFVc3NSVUZCUlN4WlFVRlpMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dDNRa0ZEZEVRc1EwRkJReXhKUVVGSkxFTkJRVU1zWTBGQll5eEZRVUZGTEZsQlFWa3NSVUZCUlN4WlFVRlpMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU03YVVKQlEzaEVPMkZCUTBZN1UwRkRSanRSUVVWRUxFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNZMEZCWXl4RlFVRkZMRmxCUVZrc1JVRkJSU3haUVVGWkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZET1VRc1EwRkJRenM3UVVGd1RHVXNhMEpCUVU4c1IwRkJWeXhaUVVGWkxFTkJRVU03UVVGRkwwSXNiVU5CUVhkQ0xFZEJRVmNzTmtKQlFUWkNMRU5CUVVNN1FVRkZNVVVzZVVKQlFXTXNSMEZCUnl4clFrRkJhMElzUTBGQlF6dEJRVVUzUWl4blFrRkJTeXhIUVVGeFFqdEpRVU4wUXl4SFFVRkhMRVZCUVVVc1UwRkJVenRKUVVOa0xFZEJRVWNzUlVGQlJTeFRRVUZUTzBsQlEyUXNSMEZCUnl4RlFVRkZMRlZCUVZVN1NVRkRaaXhIUVVGSExFVkJRVVVzVVVGQlVUdEpRVU5pTEVkQlFVY3NSVUZCUlN4bFFVRmxPMGxCUTNCQ0xFZEJRVWNzUlVGQlJTeFhRVUZYTzBsQlEyaENMRWRCUVVjc1JVRkJSU3hsUVVGbE8wbEJRM0JDTEVkQlFVY3NSVUZCUlN4WlFVRlpPMGxCUTJwQ0xFZEJRVWNzUlVGQlJTeGxRVUZsTzBsQlEzQkNMRWRCUVVjc1JVRkJSU3hUUVVGVE8wbEJRMlFzUjBGQlJ5eEZRVUZGTEZGQlFWRTdTVUZEWWl4SFFVRkhMRVZCUVVVc1ZVRkJWVHRKUVVObUxFZEJRVWNzUlVGQlJTeFhRVUZYTzBsQlEyaENMRWRCUVVjc1JVRkJSU3hWUVVGVk8wbEJRMllzUjBGQlJ5eEZRVUZGTEZGQlFWRTdTVUZEWWl4SFFVRkhMRVZCUVVVc1UwRkJVenRKUVVOa0xFZEJRVWNzUlVGQlJTeFpRVUZaTzBsQlEycENMRWRCUVVjc1JVRkJSU3haUVVGWk8wbEJRMnBDTEVkQlFVY3NSVUZCUlN4WlFVRlpPMGxCUTJwQ0xFZEJRVWNzUlVGQlJTeFhRVUZYTzBOQlEycENMRU5CUVVNN1FVRkZXU3h0UWtGQlVTeEhRVUZ4UWp0SlFVTjZReXhIUVVGSExFVkJRVVVzVlVGQlZUdEpRVU5tTEVkQlFVY3NSVUZCUlN4elFrRkJjMEk3U1VGRE0wSXNSMEZCUnl4RlFVRkZMREpDUVVFeVFqdEpRVU5vUXl4SFFVRkhMRVZCUVVVc1kwRkJZenRKUVVOdVFpeEhRVUZITEVWQlFVVXNlVUpCUVhsQ08wbEJRemxDTEVkQlFVY3NSVUZCUlN4NVFrRkJlVUk3U1VGRE9VSXNSMEZCUnl4RlFVRkZMSGRDUVVGM1FqdEpRVU0zUWl4SFFVRkhMRVZCUVVVc2QwSkJRWGRDTzBsQlF6ZENMRWRCUVVjc1JVRkJSU3gzUWtGQmQwSTdTVUZETjBJc1IwRkJSeXhGUVVGRkxHbENRVUZwUWp0SlFVTjBRaXhIUVVGSExFVkJRVVVzYVVKQlFXbENPMGxCUTNSQ0xFZEJRVWNzUlVGQlJTd3dRa0ZCTUVJN1NVRkRMMElzUjBGQlJ5eEZRVUZGTEhkQ1FVRjNRanRKUVVNM1FpeEhRVUZITEVWQlFVVXNiVUpCUVcxQ08wbEJRM2hDTEVkQlFVY3NSVUZCUlN4cFFrRkJhVUk3U1VGRGRFSXNSMEZCUnl4RlFVRkZMR2xDUVVGcFFqdEpRVU4wUWl4SFFVRkhMRVZCUVVVc2IwTkJRVzlETzBsQlEzcERMRWRCUVVjc1JVRkJSU3d3UWtGQk1FSTdTVUZETDBJc1IwRkJSeXhGUVVGRkxHZENRVUZuUWp0SlFVTnlRaXhIUVVGSExFVkJRVVVzYVVKQlFXbENPME5CUTNaQ0xFTkJRVU03UVVGRldTdzBRa0ZCYVVJc1IwRkJjVUk3U1VGRGJFUXNSMEZCUnl4RlFVRkZMRXRCUVVzN1NVRkRWaXhIUVVGSExFVkJRVVVzYVVKQlFXbENPMGxCUTNSQ0xFZEJRVWNzUlVGQlJTeHpRa0ZCYzBJN1NVRkRNMElzUjBGQlJ5eEZRVUZGTEZWQlFWVTdTVUZEWml4SFFVRkhMRVZCUVVVc2IwSkJRVzlDTzBsQlEzcENMRWRCUVVjc1JVRkJSU3h4UWtGQmNVSTdTVUZETVVJc1IwRkJSeXhGUVVGRkxHMUNRVUZ0UWp0SlFVTjRRaXhIUVVGSExFVkJRVVVzYlVKQlFXMUNPMGxCUTNoQ0xFZEJRVWNzUlVGQlJTeHhRa0ZCY1VJN1NVRkRNVUlzUjBGQlJ5eEZRVUZGTEZsQlFWazdTVUZEYWtJc1IwRkJSeXhGUVVGRkxHTkJRV003U1VGRGJrSXNSMEZCUnl4RlFVRkZMSEZDUVVGeFFqdEpRVU14UWl4SFFVRkhMRVZCUVVVc2JVSkJRVzFDTzBsQlEzaENMRWRCUVVjc1JVRkJSU3huUWtGQlowSTdTVUZEY2tJc1IwRkJSeXhGUVVGRkxGbEJRVms3U1VGRGFrSXNSMEZCUnl4RlFVRkZMR0ZCUVdFN1NVRkRiRUlzUjBGQlJ5eEZRVUZGTEN0Q1FVRXJRanRKUVVOd1F5eEhRVUZITEVWQlFVVXNjVUpCUVhGQ08wbEJRekZDTEVkQlFVY3NSVUZCUlN4WFFVRlhPMGxCUTJoQ0xFZEJRVWNzUlVGQlJTeFpRVUZaTzBOQlEyeENMRU5CUVVNN1FVRkZSanRIUVVOSE8wRkJRMWNzYzBKQlFWY3NSMEZCY1VJN1NVRkROVU1zUzBGQlN5eEZRVUZGTEVkQlFVYzdTVUZEVml4TFFVRkxMRVZCUVVVc1IwRkJSenRKUVVOV0xFdEJRVXNzUlVGQlJTeEhRVUZITzBsQlExWXNTMEZCU3l4RlFVRkZMRWRCUVVjN1NVRkRWaXhMUVVGTExFVkJRVVVzUjBGQlJ6dEpRVU5XTEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3U1VGRFZpeExRVUZMTEVWQlFVVXNSMEZCUnp0SlFVTldMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdTVUZEVml4TFFVRkxMRVZCUVVVc1IwRkJSenRKUVVOV0xFdEJRVXNzUlVGQlJTeEhRVUZITzBsQlExWXNTMEZCU3l4RlFVRkZMRWRCUVVjN1NVRkRWaXhMUVVGTExFVkJRVVVzUjBGQlJ6dEpRVU5XTEV0QlFVc3NSVUZCUlN4SFFVRkhPMGxCUTFZc1MwRkJTeXhGUVVGRkxFZEJRVWM3U1VGRFZpeExRVUZMTEVWQlFVVXNSMEZCUnp0SlFVTldMRXRCUVVzc1JVRkJSU3hIUVVGSE8wbEJRMVlzUzBGQlN5eEZRVUZGTEVkQlFVYzdTVUZEVml4TFFVRkxMRVZCUVVVc1IwRkJSenREUVVOWUxFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnS2lCaGN5Qm5jbTlySUdaeWIyMGdKMlJoZEdGbmNtOXJMV0Z3YVM5bmNtOXJKenRjYm1sdGNHOXlkQ0FxSUdGeklIVnBJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzkxYVNjN1hHNXBiWEJ2Y25RZ0tpQmhjeUJFUnlCbWNtOXRJQ2RrWVhSaFozSnZheTFoY0drdlpHY25PMXh1WEc1cGJYQnZjblFnZTFOMGNtbHVaMFJwWTNScGIyNWhjbmw5SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDNSNWNHVXRaR1ZqYkdGeVlYUnBiMjV6Snp0Y2JtbHRjRzl5ZENCN1UyVnhVR0ZzWlhSMFpTd2dVMlZ4VUdGc1pYUjBaVUpoYzJWOUlHWnliMjBnSnk0dmMyVnhMWEJoYkdWMGRHVnpKenRjYmx4dVpYaHdiM0owSUdOc1lYTnpJRUZ0YVc1dllXTnBaSE5RWVd4bGRIUmxjeUJsZUhSbGJtUnpJRk5sY1ZCaGJHVjBkR1ZDWVhObElIdGNiaUFnY0hKcGRtRjBaU0J6ZEdGMGFXTWdiR1Z6YXpvZ1UyVnhVR0ZzWlhSMFpUdGNibHh1SUNCd2RXSnNhV01nYzNSaGRHbGpJR2RsZENCTVpYTnJLQ2s2SUZObGNWQmhiR1YwZEdVZ2UxeHVJQ0FnSUdsbUlDaDBhR2x6TG14bGMyc2dQVDA5SUhadmFXUWdNQ2tnZTF4dUlDQWdJQ0FnZEdocGN5NXNaWE5ySUQwZ2RHaHBjeTV0WVd0bFVHRnNaWFIwWlNoYlhHNGdJQ0FnSUNBZ0lGdGJKMGNuTENBblFTY3NJQ2RUSnl3Z0oxUW5YU3dnSjI5eVlXNW5aU2RkTEZ4dUlDQWdJQ0FnSUNCYld5ZERKeXdnSjFZbkxDQW5TU2NzSUNkTUp5d2dKMUFuTENBblJpY3NJQ2RaSnl3Z0owMG5MQ0FuVnlkZExDQW5ZV3hzWDJkeVpXVnVKMTBzWEc0Z0lDQWdJQ0FnSUZ0YkowNG5MQ0FuVVNjc0lDZElKMTBzSUNkdFlXZGxiblJoSjEwc1hHNGdJQ0FnSUNBZ0lGdGJKMFFuTENBblJTZGRMQ0FuY21Wa0oxMHNYRzRnSUNBZ0lDQWdJRnRiSjBzbkxDQW5VaWRkTENBbllXeHNYMkpzZFdVblhTeGNiaUFnSUNBZ0lGMHBPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NXNaWE5yTzF4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCemRHRjBhV01nWjNKdmEwZHliM1Z3Y3pvZ1UyVnhVR0ZzWlhSMFpUdGNibHh1SUNCd2RXSnNhV01nYzNSaGRHbGpJR2RsZENCSGNtOXJSM0p2ZFhCektDazZJRk5sY1ZCaGJHVjBkR1VnZTF4dUlDQWdJR2xtSUNoMGFHbHpMbWR5YjJ0SGNtOTFjSE1nUFQwOUlIWnZhV1FnTUNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVuY205clIzSnZkWEJ6SUQwZ2RHaHBjeTV0WVd0bFVHRnNaWFIwWlNoYlhHNGdJQ0FnSUNBZ0lGdGJKME1uTENBblZTZGRMQ0FuZVdWc2JHOTNKMTBzWEc0Z0lDQWdJQ0FnSUZ0YkowY25MQ0FuVUNkZExDQW5jbVZrSjEwc1hHNGdJQ0FnSUNBZ0lGdGJKMEVuTENBblZpY3NJQ2RKSnl3Z0owd25MQ0FuVFNjc0lDZEdKeXdnSjFrbkxDQW5WeWRkTENBbllXeHNYMmR5WldWdUoxMHNYRzRnSUNBZ0lDQWdJRnRiSjFJbkxDQW5TQ2NzSUNkTEoxMHNJQ2RzYVdkb2RGOWliSFZsSjEwc1hHNGdJQ0FnSUNBZ0lGdGJKMFFuTENBblJTZGRMQ0FuWkdGeWExOWliSFZsSjEwc1hHNGdJQ0FnSUNBZ0lGdGJKMU1uTENBblZDY3NJQ2RPSnl3Z0oxRW5YU3dnSjI5eVlXNW5aU2RkTEZ4dUlDQWdJQ0FnWFNrN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1keWIydEhjbTkxY0hNN1hHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElITjBZWFJwWXlCeVlYTk5iMnc2SUZObGNWQmhiR1YwZEdVN1hHNWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5Qm5aWFFnVW1GelRXOXNLQ2s2SUZObGNWQmhiR1YwZEdVZ2UxeHVJQ0FnSUdsbUlDaDBhR2x6TG5KaGMwMXZiQ0E5UFQwZ2RtOXBaQ0F3S1NCN1hHNGdJQ0FnSUNCMGFHbHpMbkpoYzAxdmJDQTlJSHRjYmlBZ0lDQWdJQ0FnTHk4Z2FIUjBjRG92TDJGalkyVnpMbVZ1Y3kxc2VXOXVMbVp5TDJKcGIzUnBZeTl5WVhOMGIzQXZhR1ZzY0M5amIyeHZkWEl1YUhSdFhHNGdJQ0FnSUNBZ0lDZEVKem9nSnlORk5qQkJNRUVuTENBdkx5QmhjM0FzSUdGemNHRnlkR2xqSUdGamFXUXNJR0Z6Y0Z4dUlDQWdJQ0FnSUNBblJTYzZJQ2NqUlRZd1FUQkJKeXdnTHk4Z1oyeDFMQ0JuYkhWMFlXMXBZeUJoWTJsa1hHNGdJQ0FnSUNBZ0lDZERKem9nSnlORk5rVTJNREFuTENBdkx5QmplWE1zSUdONWMzUmxhVzVsWEc0Z0lDQWdJQ0FnSUNkTkp6b2dKeU5GTmtVMk1EQW5MQ0F2THlCdFpYUXNJRzFsZEdocGIyNXBibVZjYmlBZ0lDQWdJQ0FnSjBzbk9pQW5JekUwTlVGR1JpY3NJQzh2SUd4NWN5d2diSGx6YVc1bFhHNGdJQ0FnSUNBZ0lDZFNKem9nSnlNeE5EVkJSa1luTENBdkx5QmhjbWNzSUdGeVoybHVhVzVsWEc0Z0lDQWdJQ0FnSUNkVEp6b2dKeU5HUVRrMk1EQW5MQ0F2THlCelpYSXNJSE5sY21sdVpWeHVJQ0FnSUNBZ0lDQW5WQ2M2SUNjalJrRTVOakF3Snl3Z0x5OGdkR2h5TENCMGFISmxiMjVwYm1WY2JpQWdJQ0FnSUNBZ0owWW5PaUFuSXpNeU16SkJRU2NzSUM4dklIQm9aU3dnY0dobGJubHNZV3hoYm1sdVpWeHVJQ0FnSUNBZ0lDQW5XU2M2SUNjak16SXpNa0ZCSnl3Z0x5OGdkSGx5TENCMGVYSnZjMmx1WlZ4dUlDQWdJQ0FnSUNBblRpYzZJQ2NqTURCRVEwUkRKeXdnTHk4Z1lYTnVMQ0JoYzNCaGNtRm5hVzVsWEc0Z0lDQWdJQ0FnSUNkUkp6b2dKeU13TUVSRFJFTW5MQ0F2THlCbmJHNHNJR2RzZFhSaGJXbHVaVnh1SUNBZ0lDQWdJQ0FuUnljNklDY2pSVUpGUWtWQ0p5d2dMeThnWjJ4NUxDQm5iSGxqYVc1bFhHNGdJQ0FnSUNBZ0lDZE1Kem9nSnlNd1JqZ3lNRVluTENBdkx5QnNaWFVzSUd4bGRXTnBibVZjYmlBZ0lDQWdJQ0FnSjFZbk9pQW5JekJHT0RJd1JpY3NJQzh2SUhaaGJDd2dkbUZzYVc1bFhHNGdJQ0FnSUNBZ0lDZEpKem9nSnlNd1JqZ3lNRVluTENBdkx5QnBiR1VzSUdsemIyeGxkV05wYm1WY2JpQWdJQ0FnSUNBZ0owRW5PaUFuSTBNNFF6aERPQ2NzSUM4dklHRnNZU3dnWVd4aGJtbHVaVnh1SUNBZ0lDQWdJQ0FuVnljNklDY2pRalExUVVJMEp5d2dMeThnZEhKd0xDQjBjbmx3ZEc5d2FHRnVYRzRnSUNBZ0lDQWdJQ2RJSnpvZ0p5TTRNamd5UkRJbkxDQXZMeUJvYVhNc0lHaHBjM1JwWkdsdVpWeHVJQ0FnSUNBZ0lDQW5VQ2M2SUNjalJFTTVOamd5Snl3Z0x5OGdjSEp2TENCd2NtOXNhVzVsWEc0Z0lDQWdJQ0FnSUNkdmRHaGxjbk1uT2lBbkkwSkZRVEEyUlNjc1hHNGdJQ0FnSUNCOU8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1eVlYTk5iMnc3WEc0Z0lIMWNibjFjYmx4dVpYaHdiM0owSUdOc1lYTnpJRUZ0YVc1dllXTnBaSE1nZTF4dUlDQnpkR0YwYVdNZ2NtVmhaRzl1YkhrZ1UyVnRWSGx3WlRvZ2MzUnlhVzVuSUQwZ0owRnRhVzV2WVdOcFpITW5PMXh1WEc0Z0lITjBZWFJwWXlCeVpXRmtiMjVzZVNCVFpXMVVlWEJsVFhWc2RHbHdiR1ZCYkdsbmJtMWxiblE2SUhOMGNtbHVaeUE5SUNkQmJXbHViMkZqYVdSelRYVnNkR2x3YkdWQmJHbG5ibTFsYm5Rbk8xeHVYRzRnSUhOMFlYUnBZeUIxYm1SbFptbHVaV1JEYjJ4dmNpQTlJQ2R5WjJJb01UQXdMREV3TUN3eE1EQXBKenRjYmx4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUU1aGJXVnpPaUJUZEhKcGJtZEVhV04wYVc5dVlYSjVJRDBnZTF4dUlDQWdJQ2RISnpvZ0owZHNlV05wYm1VbkxGeHVJQ0FnSUNkTUp6b2dKMHhsZFdOcGJtVW5MRnh1SUNBZ0lDZFpKem9nSjFSNWNtOXphVzVsSnl4Y2JpQWdJQ0FuVXljNklDZFRaWEpwYm1VbkxGeHVJQ0FnSUNkRkp6b2dKMGRzZFhSaGJXbGpJR0ZqYVdRbkxGeHVJQ0FnSUNkUkp6b2dKMGRzZFhSaGJXbHVaU2NzWEc0Z0lDQWdKMFFuT2lBblFYTndZWEowYVdNZ1lXTnBaQ2NzWEc0Z0lDQWdKMDRuT2lBblFYTndZWEpoWjJsdVpTY3NYRzRnSUNBZ0owWW5PaUFuVUdobGJubHNZV3hoYm1sdVpTY3NYRzRnSUNBZ0owRW5PaUFuUVd4aGJtbHVaU2NzWEc0Z0lDQWdKMHNuT2lBblRIbHphVzVsSnl4Y2JpQWdJQ0FuVWljNklDZEJjbWRwYm1sdVpTY3NYRzRnSUNBZ0owZ25PaUFuU0dsemRHbGthVzVsSnl4Y2JpQWdJQ0FuUXljNklDZERlWE4wWldsdVpTY3NYRzRnSUNBZ0oxWW5PaUFuVm1Gc2FXNWxKeXhjYmlBZ0lDQW5VQ2M2SUNkUWNtOXNhVzVsSnl4Y2JpQWdJQ0FuVnljNklDZFVjbmx3ZEc5d2FHRnVKeXhjYmlBZ0lDQW5TU2M2SUNkSmMyOXNaWFZqYVc1bEp5eGNiaUFnSUNBblRTYzZJQ2ROWlhSb2FXOXVhVzVsSnl4Y2JpQWdJQ0FuVkNjNklDZFVhSEpsYjI1cGJtVW5MRnh1SUNCOU8xeHVYRzRnSUhCMVlteHBZeUJ6ZEdGMGFXTWdRVUZUYldsc1pYTTZJRk4wY21sdVowUnBZM1JwYjI1aGNua2dQU0I3WEc0Z0lDQWdKMGNuT2lBblRrTkRLRDFQS1U4bkxGeHVJQ0FnSUNkTUp6b2dKMDViUTBCSVhTaERReWhES1VNcFF5ZzlUeWxQSnl4Y2JpQWdJQ0FuV1NjNklDZE9ReWhEUXpFOVEwTTlReWhQS1VNOVF6RXBReWc5VHlsUEp5eGNiaUFnSUNBblV5YzZJQ2RPUXloRFR5bERLRDFQS1U4bkxGeHVJQ0FnSUNkRkp6b2dKMDViUTBCQVNGMG9RME5ES0U4cFBVOHBReWc5VHlsUEp5eGNiaUFnSUNBblVTYzZJQ2RPVzBOQVFFaGRLRU5EUXloT0tUMVBLVU1vUFU4cFR5Y3NYRzRnSUNBZ0owUW5PaUFuVGx0RFFFQklYU2hEUXloUEtUMVBLVU1vUFU4cFR5Y3NYRzRnSUNBZ0owNG5PaUFuVGx0RFFFQklYU2hEUXloT0tUMVBLVU1vUFU4cFR5Y3NYRzRnSUNBZ0owWW5PaUFuVGtNb1EwTXhQVU5EUFVORFBVTXhLVU1vUFU4cFR5Y3NYRzRnSUNBZ0owRW5PaUFuVGx0RFFFaGRLRU1wUXlnOVR5bFBKeXhjYmlBZ0lDQW5TeWM2SUNkT1F5aERRME5EVGlsREtEMVBLVThuTEZ4dUlDQWdJQ2RTSnpvZ0owNWJRMEJJWFNoRFEwTk9ReWc5VGlsREtVTW9QVThwVHljc1hHNGdJQ0FnSjBnbk9pQW5Ua01vUTBNeFBVTk9QVU5iVGwweEtVTW9QVThwVHljc1hHNGdJQ0FnSjBNbk9pQW5UbHREUUVCSVhTaERVeWxES0QxUEtVOG5MRnh1SUNBZ0lDZFdKem9nSjA1REtFTW9ReWxES1VNb1BVOHBUeWNzWEc0Z0lDQWdKMUFuT2lBblRpaERRME14S1VNeFF5ZzlUeWxQSnl4Y2JpQWdJQ0FuVnljNklDZE9XME5BUUVoZEtFTmpNV015WTJOalkyTXliaWhiU0YwcFl6RXBReWc5VHlsUEp5eGNiaUFnSUNBblNTYzZJQ2RPVzBOQVNGMG9XME5BU0Ywb1F5bERReWxES0QxUEtVOG5MRnh1SUNBZ0lDZE5Kem9nSjA1REtFTkRVME1wUXlnOVR5bFBKeXhjYmlBZ0lDQW5WQ2M2SUNkT1F5aERLRThwUXlsREtEMVBLVThuTEZ4dUlDQjlPMXh1WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nUVVGVGJXbHNaWE5VY25WdVkyRjBaV1E2SUZOMGNtbHVaMFJwWTNScGIyNWhjbmtnUFNCN1hHNGdJQ0FnSjBjbk9pQW5La01xSnl4Y2JpQWdJQ0FuVENjNklDZERReWhES1VOYlEwQklYU2dxS1NvbkxGeHVJQ0FnSUNkWkp6b2dKME14UFVOREtEMURRejFETVVOREtDb3BLaWxQSnl4Y2JpQWdJQ0FuVXljNklDZFBRME1vS2lsREtpY3NYRzRnSUNBZ0owVW5PaUFuS2x0RFFFQklYU2hEUTBNb1R5azlUeWtxSnl4Y2JpQWdJQ0FuVVNjNklDY3FUbHREUUVCSVhTaERRME1vVGlrOVR5a3FKeXhjYmlBZ0lDQW5SQ2M2SUNjcVcwTkFRRWhkS0VOREtFOHBQVThwS2ljc1hHNGdJQ0FnSjA0bk9pQW5LbHREUUVCSVhTaERReWhPS1QxUEtTb25MRnh1SUNBZ0lDZEdKem9nSjBNeFBVTkRQVU1vUXoxRE1TbERReWdxS1NvbkxGeHVJQ0FnSUNkQkp6b2dKME5iUTBCSVhTZ3FLU29uTEZ4dUlDQWdJQ2RMSnpvZ0owTW9RME5PS1VOREtDb3BLaWNzWEc0Z0lDQWdKMUluT2lBbktsdERRRWhkS0VORFEwNURLRDFPS1VNcEtpY3NYRzRnSUNBZ0owZ25PaUFuUXpFOVF5aE9RejFPTVNsRFF5Z3FLU29uTEZ4dUlDQWdJQ2RESnpvZ0owTW9XME5BUUVoZEtDb3BLaWxUSnl4Y2JpQWdJQ0FuVmljNklDZERReWhES1VNb0tpa3FKeXhjYmlBZ0lDQW5VQ2M2SUNkRE1VTkRUaWdxS1VNeEtpY3NYRzRnSUNBZ0oxY25PaUFuS2x0RFFFQklYU2hEWXpGak1tTmpZMk5qTW00b1cwaGRLV014S1NvbkxGeHVJQ0FnSUNkSkp6b2dKME5EVzBOQVNGMG9ReWxiUTBCSVhTZ3FLU29uTEZ4dUlDQWdJQ2ROSnpvZ0owTlRRME5ES0NvcEtpY3NYRzRnSUNBZ0oxUW5PaUFuUTBNb1R5bERLQ29wS2ljc1hHNGdJSDA3WEc1Y2JpQWdMeW9xSUZSUFJFODZJRVoxYkd3L1hHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUVGQlJuVnNiRTVoYldWek9pQlRkSEpwYm1kRWFXTjBhVzl1WVhKNUlEMGdlMXh1SUNBZ0lDZEJiR0VuT2lBblFTY3NYRzRnSUNBZ0owRnlaeWM2SUNkU0p5eGNiaUFnSUNBblFYTnVKem9nSjA0bkxGeHVJQ0FnSUNkQmMzQW5PaUFuUkNjc1hHNGdJQ0FnSjBONWN5YzZJQ2RESnl4Y2JpQWdJQ0FuUjJ4dUp6b2dKMUVuTEZ4dUlDQWdJQ2RIYkhVbk9pQW5SU2NzWEc0Z0lDQWdKMGRzZVNjNklDZEhKeXhjYmlBZ0lDQW5TR2x6SnpvZ0owZ25MRnh1SUNBZ0lDZEpiR1VuT2lBblNTY3NYRzRnSUNBZ0oweGxkU2M2SUNkTUp5eGNiaUFnSUNBblRIbHpKem9nSjBzbkxGeHVJQ0FnSUNkTlpYUW5PaUFuVFNjc1hHNGdJQ0FnSjFCb1pTYzZJQ2RHSnl4Y2JpQWdJQ0FuVUhKdkp6b2dKMUFuTEZ4dUlDQWdJQ2RUWlhJbk9pQW5VeWNzWEc0Z0lDQWdKMVJvY2ljNklDZFVKeXhjYmlBZ0lDQW5WSEp3SnpvZ0oxY25MRnh1SUNBZ0lDZFVlWEluT2lBbldTY3NYRzRnSUNBZ0oxWmhiQ2M2SUNkV0p5eGNiaUFnZlR0Y2JseHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklHZGxkRkJoYkdWMGRHVW9jMk5vWlcxbE9pQnpkSEpwYm1jZ1BTQW5aM0p2YXljcE9pQlRaWEZRWVd4bGRIUmxJSHRjYmlBZ0lDQnpkMmwwWTJnZ0tITmphR1Z0WlNrZ2UxeHVJQ0FnSUdOaGMyVWdKMmR5YjJzbk9seHVJQ0FnSUNBZ2NtVjBkWEp1SUVGdGFXNXZZV05wWkhOUVlXeGxkSFJsY3k1SGNtOXJSM0p2ZFhCek8xeHVJQ0FnSUdOaGMyVWdKMnhsYzJzbk9seHVJQ0FnSUNBZ2NtVjBkWEp1SUVGdGFXNXZZV05wWkhOUVlXeGxkSFJsY3k1TVpYTnJPMXh1SUNBZ0lHUmxabUYxYkhRNlhHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvWUVOb1pXMVFZV3hsZEhSbE9pQnpZMmhsYldVZ1hGeGdKSHR6WTJobGJXVjlYRnhnSUdSdlpYTWdibTkwSUdWNGFYTjBZQ2s3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGRIVnlibk1nWkdsMmFXUmxaQ0JoYldsdWJ5QmhZMmxrSUhkcGRHZ2dhWFJ6SUdOdmJuUmxiblFnYVc0Z2RHaGxJR0p5WVdOclpYUXNJR2xtSUhSb1pTQmpiMjUwWlc1MElHbHpJRzUxYldKbGNpd2dkR2hsYmlCcGRITWdiMjFwZEhSbFpGeHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlM04wY21sdVozMGdZeUJ5WVhjZ1lXMXBibTljYmlBZ0lDb2dRSEpsZEhWeWJpQjdXM04wY21sdVp5d2djM1J5YVc1blhYMGdiM1YwWlhJZ1lXNWtJR2x1Ym1WeUlHTnZiblJsYm5SY2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nWjJWMFNXNXVaWEpQZFhSbGNpaGpPaUJ6ZEhKcGJtY3BPaUJiYzNSeWFXNW5MQ0J6ZEhKcGJtZGRJSHRjYmlBZ0lDQnNaWFFnYVhOSmJtNWxjaUE5SURBN1hHNGdJQ0FnYkdWMElHbHVibVZ5SUQwZ0p5YzdYRzRnSUNBZ2JHVjBJRzkxZEdWeUlEMGdKeWM3WEc1Y2JpQWdJQ0JtYjNJZ0tHTnZibk4wSUdOb1lYSWdiMllnWXlrZ2UxeHVJQ0FnSUNBZ2FXWWdLR05vWVhJZ1BUMGdKeWduS1Z4dUlDQWdJQ0FnSUNCcGMwbHVibVZ5S3lzN1hHNGdJQ0FnSUNCbGJITmxJR2xtSUNoamFHRnlJRDA5SUNjcEp5bGNiaUFnSUNBZ0lDQWdhWE5KYm01bGNpMHRPMXh1SUNBZ0lDQWdaV3h6WlNCcFppQW9hWE5KYm01bGNpbGNiaUFnSUNBZ0lDQWdhVzV1WlhJZ0t6MGdZMmhoY2p0Y2JpQWdJQ0FnSUdWc2MyVmNiaUFnSUNBZ0lDQWdiM1YwWlhJZ0t6MGdZMmhoY2p0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdJV2x6VG1GT0tIQmhjbk5sU1c1MEtHbHVibVZ5S1NrZ1B5QmJiM1YwWlhJc0lDY25YU0E2SUZ0dmRYUmxjaXdnYVc1dVpYSmRPMXh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5Qm5aWFJEYjJ4dmNrRkJVR2wyYjNRb2JXOXViMjFsY2pvZ2MzUnlhVzVuSUQwZ0p5Y3NJSE5qYUdWdFpUb2dKMmR5YjJzbklEMGdKMmR5YjJzbktUb2dXM04wY21sdVp5d2djM1J5YVc1bkxDQnpkSEpwYm1jc0lHNTFiV0psY2wwZ2UxeHVJQ0FnSUM4dlkyOXVjM1FnWTJobGJWQmhiR1YwZEdWSmJuTjBZVzVqWlNBOUlFRkJVR0ZzWlhSMFpYTXVSM0p2YTBkeWIzVndjeWdwTzF4dUlDQWdJR052Ym5OMElHTm9aVzFRWVd4bGRIUmxTVzV6ZEdGdVkyVWdQU0IwYUdsekxtZGxkRkJoYkdWMGRHVW9jMk5vWlcxbEtUdGNiaUFnSUNCc1pYUWdXMjkxZEdWeVRXOXViMjFsY2l3Z2FXNXVaWEpOYjI1dmJXVnlYU0E5SUhSb2FYTXVaMlYwU1c1dVpYSlBkWFJsY2lodGIyNXZiV1Z5S1R0Y2JpQWdJQ0J2ZFhSbGNrMXZibTl0WlhJZ1BTQW9iM1YwWlhKTmIyNXZiV1Z5TG14bGJtZDBhQ0ErSURZZ1B5QmdKSHR2ZFhSbGNrMXZibTl0WlhJdWMyeHBZMlVvTUN3Z015bDlMaTR1WUNBNklHOTFkR1Z5VFc5dWIyMWxjaWs3WEc0Z0lDQWdhVzV1WlhKTmIyNXZiV1Z5SUQwZ0tHbHVibVZ5VFc5dWIyMWxjaTVzWlc1bmRHZ2dQaUEySUQ4Z1lDUjdhVzV1WlhKTmIyNXZiV1Z5TG5Oc2FXTmxLREFzSURNcGZTNHVMbUFnT2lCcGJtNWxjazF2Ym05dFpYSXBPMXh1WEc0Z0lDQWdhV1lnS0cxdmJtOXRaWEl1YkdWdVozUm9JRDA5SURFZ2ZId2diVzl1YjIxbGNsc3hYU0E5UFNBbktDY3BJSHRjYmlBZ0lDQWdJR052Ym5OMElHRnRhVzV2SUQwZ2JXOXViMjFsY2xzd1hUOHVkRzlWY0hCbGNrTmhjMlVvS1NFN1hHNGdJQ0FnSUNCeVpYUjFjbTRnWVcxcGJtOGdhVzRnWTJobGJWQmhiR1YwZEdWSmJuTjBZVzVqWlNBL1hHNGdJQ0FnSUNBZ0lGdGphR1Z0VUdGc1pYUjBaVWx1YzNSaGJtTmxXMkZ0YVc1dlhTd2dZVzFwYm04c0lHbHVibVZ5VFc5dWIyMWxjaXdnTVYwZ09seHVJQ0FnSUNBZ0lDQmJkR2hwY3k1MWJtUmxabWx1WldSRGIyeHZjaXdnYjNWMFpYSk5iMjV2YldWeUxDQnBibTVsY2sxdmJtOXRaWElzSURGZE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaHRiMjV2YldWeVd6QmRJRDA5SUNka0p5QW1KaUJ0YjI1dmJXVnlXekZkSVNCcGJpQmphR1Z0VUdGc1pYUjBaVWx1YzNSaGJtTmxLU0I3WEc0Z0lDQWdJQ0JwWmlBb2JXOXViMjFsY2k1c1pXNW5kR2dnUFQwZ01pQjhmQ0J0YjI1dmJXVnlXekpkSUQwOUlDY29KeWtnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0JoYldsdWJ5QTlJRzF2Ym05dFpYSmJNVjAvTG5SdlZYQndaWEpEWVhObEtDa2hPMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdZVzFwYm04Z2FXNGdZMmhsYlZCaGJHVjBkR1ZKYm5OMFlXNWpaU0EvWEc0Z0lDQWdJQ0FnSUNBZ1cyTm9aVzFRWVd4bGRIUmxTVzV6ZEdGdVkyVmJZVzFwYm05ZExDQmhiV2x1Ynl3Z2FXNXVaWEpOYjI1dmJXVnlMQ0F5WFNBNlhHNGdJQ0FnSUNBZ0lDQWdXM1JvYVhNdWRXNWtaV1pwYm1Wa1EyOXNiM0lzSUc5MWRHVnlUVzl1YjIxbGNpd2dhVzV1WlhKTmIyNXZiV1Z5TENBeVhUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9iVzl1YjIxbGNpNXpkV0p6ZEhKcGJtY29NQ3dnTXlrZ2FXNGdkR2hwY3k1QlFVWjFiR3hPWVcxbGN5a2dlMXh1SUNBZ0lDQWdhV1lnS0cxdmJtOXRaWEl1YkdWdVozUm9JRDA5SURNZ2ZId2diVzl1YjIxbGNsc3pYU0E5UFNBbktDY3BJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdZVzFwYm04Z1BTQjBhR2x6TGtGQlJuVnNiRTVoYldWelcyMXZibTl0WlhJdWMzVmljM1J5YVc1bktEQXNJRE1wWFR0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdGdGFXNXZJR2x1SUdOb1pXMVFZV3hsZEhSbFNXNXpkR0Z1WTJVZ1AxeHVJQ0FnSUNBZ0lDQWdJRnRqYUdWdFVHRnNaWFIwWlVsdWMzUmhibU5sVzJGdGFXNXZYU3dnWVcxcGJtOHNJR2x1Ym1WeVRXOXViMjFsY2l3Z00xMGdPbHh1SUNBZ0lDQWdJQ0FnSUZ0MGFHbHpMblZ1WkdWbWFXNWxaRU52Ykc5eUxDQnZkWFJsY2sxdmJtOXRaWElzSUdsdWJtVnlUVzl1YjIxbGNpd2dNMTA3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0cxdmJtOXRaWEpiTUYwL0xuUnZURzkzWlhKRFlYTmxLQ2tnUFQwZ2JXOXViMjFsY2xzd1hTa2dlMXh1SUNBZ0lDQWdhV1lnS0cxdmJtOXRaWEl1YzNWaWMzUnlhVzVuS0RFc0lETXBJR2x1SUhSb2FYTXVRVUZHZFd4c1RtRnRaWE1wSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLRzF2Ym05dFpYSXViR1Z1WjNSb0lEMDlJRFFnZkh3Z2JXOXViMjFsY2xzMFhTQTlQU0FuS0NjcElIdGNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQmhiV2x1YnlBOUlIUm9hWE11UVVGR2RXeHNUbUZ0WlhOYmJXOXViMjFsY2k1emRXSnpkSEpwYm1jb01Td2dNeWxkTzF4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCaGJXbHVieUJwYmlCamFHVnRVR0ZzWlhSMFpVbHVjM1JoYm1ObElEOWNiaUFnSUNBZ0lDQWdJQ0FnSUZ0amFHVnRVR0ZzWlhSMFpVbHVjM1JoYm1ObFcyRnRhVzV2WFN3Z1lXMXBibThzSUdsdWJtVnlUVzl1YjIxbGNpd2dORjBnT2x4dUlDQWdJQ0FnSUNBZ0lDQWdXM1JvYVhNdWRXNWtaV1pwYm1Wa1EyOXNiM0lzSUc5MWRHVnlUVzl1YjIxbGNpd2dhVzV1WlhKTmIyNXZiV1Z5TENBMFhUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlCYmRHaHBjeTUxYm1SbFptbHVaV1JEYjJ4dmNpd2diM1YwWlhKTmIyNXZiV1Z5TENCcGJtNWxjazF2Ym05dFpYSXNJREJkTzF4dUlDQjlYRzU5WEc0aVhYMD0iLCJpbXBvcnQgeyBTZXFQYWxldHRlQmFzZSB9IGZyb20gJy4vc2VxLXBhbGV0dGVzJztcbmV4cG9ydCBjbGFzcyBOdWNsZW90aWRlc1BhbGV0dGVzIGV4dGVuZHMgU2VxUGFsZXR0ZUJhc2Uge1xuICAgIHN0YXRpYyBnZXQgQ2hyb21hdG9ncmFtKCkge1xuICAgICAgICBpZiAodGhpcy5jaHJvbWF0b2dyYW0gPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgdGhpcy5jaHJvbWF0b2dyYW0gPSB7XG4gICAgICAgICAgICAgICAgJ0EnOiAnZ3JlZW4nLFxuICAgICAgICAgICAgICAgICdDJzogJ2JsdWUnLFxuICAgICAgICAgICAgICAgICdHJzogJ2JsYWNrJyxcbiAgICAgICAgICAgICAgICAnVCc6ICdyZWQnLCAnVSc6ICdyZWQnLFxuICAgICAgICAgICAgICAgICdvdGhlcnMnOiAnZ3JheScsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNocm9tYXRvZ3JhbTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgTnVjbGVvdGlkZXMge1xufVxuTnVjbGVvdGlkZXMuU2VtVHlwZSA9ICdNdWx0aXBsZUFsaWdubWVudCc7XG5OdWNsZW90aWRlcy5TZW1UeXBlTXVsdGlwbGVBbGlnbm1lbnQgPSAnTnVjbGVvdGlkZXNNdWx0aXBsZUFsaWdubWVudCc7XG5OdWNsZW90aWRlcy5OYW1lcyA9IHtcbiAgICAnQSc6ICdBZGVuaW5lJyxcbiAgICAnQyc6ICdDeXRvc2luZScsXG4gICAgJ0cnOiAnR3VhbmluZScsXG4gICAgJ1QnOiAnVGh5bWluZScsXG4gICAgJ1UnOiAnVXJhY2lsJyxcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2liblZqYkdWdmRHbGtaWE11YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SnVkV05zWlc5MGFXUmxjeTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGTFFTeFBRVUZQTEVWQlFXRXNZMEZCWXl4RlFVRkRMRTFCUVUwc1owSkJRV2RDTEVOQlFVTTdRVUZGTVVRc1RVRkJUU3hQUVVGUExHMUNRVUZ2UWl4VFFVRlJMR05CUVdNN1NVRkhPVU1zVFVGQlRTeExRVUZMTEZsQlFWazdVVUZETlVJc1NVRkJTU3hKUVVGSkxFTkJRVU1zV1VGQldTeExRVUZMTEV0QlFVc3NRMEZCUXl4RlFVRkZPMWxCUTJoRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVkQlFVYzdaMEpCUTJ4Q0xFZEJRVWNzUlVGQlJTeFBRVUZQTzJkQ1FVTmFMRWRCUVVjc1JVRkJSU3hOUVVGTk8yZENRVU5ZTEVkQlFVY3NSVUZCUlN4UFFVRlBPMmRDUVVOYUxFZEJRVWNzUlVGQlJTeExRVUZMTEVWQlFVVXNSMEZCUnl4RlFVRkZMRXRCUVVzN1owSkJRM1JDTEZGQlFWRXNSVUZCUlN4TlFVRk5PMkZCUTJwQ0xFTkJRVU03VTBGRFNEdFJRVU5FTEU5QlFVOHNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJRenRKUVVNelFpeERRVUZETzBOQlEwWTdRVUZGUkN4TlFVRk5MRTlCUVU4c1YwRkJWenM3UVVGRFRpeHRRa0ZCVHl4SFFVRlhMRzFDUVVGdFFpeERRVUZETzBGQlJYUkRMRzlEUVVGM1FpeEhRVUZYTERoQ1FVRTRRaXhEUVVGRE8wRkJSWEJGTEdsQ1FVRkxMRWRCUVhGQ08wbEJRM1JETEVkQlFVY3NSVUZCUlN4VFFVRlRPMGxCUTJRc1IwRkJSeXhGUVVGRkxGVkJRVlU3U1VGRFppeEhRVUZITEVWQlFVVXNVMEZCVXp0SlFVTmtMRWRCUVVjc1JVRkJSU3hUUVVGVE8wbEJRMlFzUjBGQlJ5eEZRVUZGTEZGQlFWRTdRMEZEWkN4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJQ29nWVhNZ1ozSnZheUJtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2WjNKdmF5YzdYRzVwYlhCdmNuUWdLaUJoY3lCMWFTQm1jbTl0SUNka1lYUmhaM0p2YXkxaGNHa3ZkV2tuTzF4dWFXMXdiM0owSUNvZ1lYTWdSRWNnWm5KdmJTQW5aR0YwWVdkeWIyc3RZWEJwTDJSbkp6dGNibHh1YVcxd2IzSjBJSHRUZEhKcGJtZEVhV04wYVc5dVlYSjVmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTkwZVhCbExXUmxZMnhoY21GMGFXOXVjeWM3WEc1cGJYQnZjblFnZTFObGNWQmhiR1YwZEdVc0lGTmxjVkJoYkdWMGRHVkNZWE5sZlNCbWNtOXRJQ2N1TDNObGNTMXdZV3hsZEhSbGN5YzdYRzVjYm1WNGNHOXlkQ0JqYkdGemN5Qk9kV05zWlc5MGFXUmxjMUJoYkdWMGRHVnpJR1Y0ZEdWdVpITWdVMlZ4VUdGc1pYUjBaVUpoYzJVZ2UxeHVJQ0J3Y21sMllYUmxJSE4wWVhScFl5QmphSEp2YldGMGIyZHlZVzA2SUZObGNWQmhiR1YwZEdVN1hHNWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5Qm5aWFFnUTJoeWIyMWhkRzluY21GdEtDazZJRk5sY1ZCaGJHVjBkR1VnZTF4dUlDQWdJR2xtSUNoMGFHbHpMbU5vY205dFlYUnZaM0poYlNBOVBUMGdkbTlwWkNBd0tTQjdYRzRnSUNBZ0lDQjBhR2x6TG1Ob2NtOXRZWFJ2WjNKaGJTQTlJSHRjYmlBZ0lDQWdJQ0FnSjBFbk9pQW5aM0psWlc0bkxGeHVJQ0FnSUNBZ0lDQW5ReWM2SUNkaWJIVmxKeXhjYmlBZ0lDQWdJQ0FnSjBjbk9pQW5ZbXhoWTJzbkxDQXZMeUJ2Y21GdVoyVWdQMXh1SUNBZ0lDQWdJQ0FuVkNjNklDZHlaV1FuTENBblZTYzZJQ2R5WldRbkxGeHVJQ0FnSUNBZ0lDQW5iM1JvWlhKekp6b2dKMmR5WVhrbkxGeHVJQ0FnSUNBZ2ZUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVkyaHliMjFoZEc5bmNtRnRPMXh1SUNCOVhHNTlYRzVjYm1WNGNHOXlkQ0JqYkdGemN5Qk9kV05zWlc5MGFXUmxjeUI3WEc0Z0lITjBZWFJwWXlCeVpXRmtiMjVzZVNCVFpXMVVlWEJsT2lCemRISnBibWNnUFNBblRYVnNkR2x3YkdWQmJHbG5ibTFsYm5Rbk8xeHVYRzRnSUhOMFlYUnBZeUJ5WldGa2IyNXNlU0JUWlcxVWVYQmxUWFZzZEdsd2JHVkJiR2xuYm0xbGJuUTZJSE4wY21sdVp5QTlJQ2RPZFdOc1pXOTBhV1JsYzAxMWJIUnBjR3hsUVd4cFoyNXRaVzUwSnp0Y2JseHVJQ0J3ZFdKc2FXTWdjM1JoZEdsaklFNWhiV1Z6T2lCVGRISnBibWRFYVdOMGFXOXVZWEo1SUQwZ2UxeHVJQ0FnSUNkQkp6b2dKMEZrWlc1cGJtVW5MRnh1SUNBZ0lDZERKem9nSjBONWRHOXphVzVsSnl4Y2JpQWdJQ0FuUnljNklDZEhkV0Z1YVc1bEp5eGNiaUFnSUNBblZDYzZJQ2RVYUhsdGFXNWxKeXhjYmlBZ0lDQW5WU2M2SUNkVmNtRmphV3duTEZ4dUlDQjlPMXh1ZlZ4dUlsMTkiLCJleHBvcnQgY2xhc3MgU2VxUGFsZXR0ZUJhc2Uge1xuICAgIHN0YXRpYyBtYWtlUGFsZXR0ZShkdCwgc2ltcGxpZmllZCA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IHBhbGV0dGUgPSB7fTtcbiAgICAgICAgZHQuZm9yRWFjaCgoY3ApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9iakxpc3QgPSBjcFswXTtcbiAgICAgICAgICAgIGNvbnN0IGNvbG91ciA9IGNwWzFdO1xuICAgICAgICAgICAgb2JqTGlzdC5mb3JFYWNoKChvYmosIGluZCkgPT4ge1xuICAgICAgICAgICAgICAgIHBhbGV0dGVbb2JqXSA9IHRoaXMuY29sb3VyUGFsZXR0ZVtjb2xvdXJdW3NpbXBsaWZpZWQgPyAwIDogaW5kXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHBhbGV0dGU7XG4gICAgfVxufVxuLyoqIFBhbGV0dGUgd2l0aCBzaGFkZXMgb2YgcHJpbWFyeSBjb2xvcnNcbiAqL1xuU2VxUGFsZXR0ZUJhc2UuY29sb3VyUGFsZXR0ZSA9IHtcbiAgICAnb3JhbmdlJzogWydyZ2IoMjU1LDE4NywxMjApJywgJ3JnYigyNDUsMTY3LDEwMCknLCAncmdiKDIzNSwxMzcsNzApJywgJ3JnYigyMDUsIDExMSwgNzEpJ10sXG4gICAgJ2FsbF9ncmVlbic6IFsncmdiKDQ0LDE2MCw0NCknLCAncmdiKDc0LDE2MCw3NCknLCAncmdiKDIzLDEwMyw1NyknLCAncmdiKDMwLDExMCw5NiknLCAncmdiKDYwLDEzMSw5NSknLFxuICAgICAgICAncmdiKDI0LDExMCw3OSknLCAncmdiKDE1MiwyMjMsMTM4KScsICdyZ2IoMTgyLCAyMjMsIDEzOCknLCAncmdiKDE1MiwgMTkzLCAxMzgpJ10sXG4gICAgJ2FsbF9ibHVlJzogWydyZ2IoMzEsMTE5LDE4MCknLCAncmdiKDIzLDE5MCwyMDcpJywgJ3JnYigxMjIsIDEwMiwgMTg5KScsICdyZ2IoMTU4LDIxOCwyMjkpJywgJ3JnYigxNDEsIDEyNCwgMjE3KScsXG4gICAgICAgICdyZ2IoMzEsIDEyMCwgMTUwKSddLFxuICAgICdtYWdlbnRhJzogWydyZ2IoMTYyLDEwNiwxOTIpJywgJ3JnYigxOTcsMTY1LDIyNCknLCAncmdiKDIwOCwxMTMsMjE4KSddLFxuICAgICdyZWQnOiBbJ3JnYigyMTQsMzksNDApJywgJ3JnYigyNTUsMTUyLDE1MCknXSxcbiAgICAnc3RfYmx1ZSc6IFsncmdiKDIzLDE5MCwyMDcpJywgJ3JnYigxNTgsMjE4LDIyOSknLCAncmdiKDMxLDExOSwxODApJ10sXG4gICAgJ2RhcmtfYmx1ZSc6IFsncmdiKDMxLDExOSwxODApJywgJ3JnYigzMSwgMTIwLCAxNTApJ10sXG4gICAgJ2xpZ2h0X2JsdWUnOiBbJ3JnYigyMywxOTAsMjA3KScsICdyZ2IoMTU4LDIxOCwyMjkpJywgJ3JnYigxMDgsIDIxOCwgMjI5KScsICdyZ2IoMjMsMTkwLDIyNyknXSxcbiAgICAnbGlsYWNfYmx1ZSc6IFsncmdiKDEyNCwxMDIsMjExKScsICdyZ2IoMTQ5LDEzNCwyMTcpJywgJ3JnYig5NywgODEsIDE1MCknXSxcbiAgICAnZGFya19ncmVlbic6IFsncmdiKDIzLDEwMyw1NyknLCAncmdiKDMwLDExMCw5NiknLCAncmdiKDYwLDEzMSw5NSknLCAncmdiKDI0LDExMCw3OSknXSxcbiAgICAnZ3JlZW4nOiBbJ3JnYig0NCwxNjAsNDQpJywgJ3JnYig3NCwxNjAsNzQpJ10sXG4gICAgJ2xpZ2h0X2dyZWVuJzogWydyZ2IoMTUyLDIyMywxMzgpJywgJ3JnYigxODIsIDIyMywgMTM4KScsICdyZ2IoMTUyLCAxOTMsIDEzOCknXSxcbiAgICAnc3RfZ3JlZW4nOiBbJ3JnYig0NCwxNjAsNDQpJywgJ3JnYigxNTIsMjIzLDEzOCknLCAncmdiKDM5LCAxNzQsIDk2KScsICdyZ2IoNzQsMTYwLDc0KSddLFxuICAgICdwaW5rJzogWydyZ2IoMjQ3LDE4MiwyMTApJ10sXG4gICAgJ2Jyb3duJzogWydyZ2IoMTQwLDg2LDc1KScsICdyZ2IoMTAyLCA2MiwgNTQpJ10sXG4gICAgJ2dyYXknOiBbJ3JnYigxMjcsMTI3LDEyNyknLCAncmdiKDE5OSwxOTksMTk5KScsICdyZ2IoMTk2LDE1NiwxNDgpJywgJ3JnYigyMjIsIDIyMiwgMTgwKSddLFxuICAgICd5ZWxsb3cnOiBbJ3JnYigxODgsMTg5LDM0KSddLFxuICAgICd3aGl0ZSc6IFsncmdiKDIzMCwyMzAsMjMwKSddLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWMyVnhMWEJoYkdWMGRHVnpMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaWMyVnhMWEJoYkdWMGRHVnpMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVZsQkxFMUJRVTBzVDBGQlR5eGpRVUZqTzBsQk1FSm1MRTFCUVUwc1EwRkJReXhYUVVGWExFTkJRVU1zUlVGQmQwSXNSVUZCUlN4VlFVRlZMRWRCUVVjc1MwRkJTenRSUVVOMlJTeE5RVUZOTEU5QlFVOHNSMEZCT0VJc1JVRkJSU3hEUVVGRE8xRkJRemxETEVWQlFVVXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUlVGQlJUdFpRVU5vUWl4TlFVRk5MRTlCUVU4c1IwRkJSeXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEZEVJc1RVRkJUU3hOUVVGTkxFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNKQ0xFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFVkJRVVU3WjBKQlF6TkNMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExGVkJRVlVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFpRVU5zUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOTUxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEwZ3NUMEZCVHl4UFFVRlBMRU5CUVVNN1NVRkRha0lzUTBGQlF6czdRVUZ1UTBRN1IwRkRSenRCUVVOWkxEUkNRVUZoTEVkQlFXZERPMGxCUXpGRUxGRkJRVkVzUlVGQlJTeERRVUZETEd0Q1FVRnJRaXhGUVVGRkxHdENRVUZyUWl4RlFVRkZMR2xDUVVGcFFpeEZRVUZGTEcxQ1FVRnRRaXhEUVVGRE8wbEJRekZHTEZkQlFWY3NSVUZCUlN4RFFVRkRMR2RDUVVGblFpeEZRVUZGTEdkQ1FVRm5RaXhGUVVGRkxHZENRVUZuUWl4RlFVRkZMR2RDUVVGblFpeEZRVUZGTEdkQ1FVRm5RanRSUVVOd1J5eG5Ra0ZCWjBJc1JVRkJSU3hyUWtGQmEwSXNSVUZCUlN4dlFrRkJiMElzUlVGQlJTeHZRa0ZCYjBJc1EwRkJRenRKUVVOdVJpeFZRVUZWTEVWQlFVVXNRMEZCUXl4cFFrRkJhVUlzUlVGQlJTeHBRa0ZCYVVJc1JVRkJSU3h2UWtGQmIwSXNSVUZCUlN4clFrRkJhMElzUlVGQlJTeHZRa0ZCYjBJN1VVRkRMMGNzYlVKQlFXMUNMRU5CUVVNN1NVRkRkRUlzVTBGQlV5eEZRVUZGTEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzYTBKQlFXdENMRVZCUVVVc2EwSkJRV3RDTEVOQlFVTTdTVUZEZGtVc1MwRkJTeXhGUVVGRkxFTkJRVU1zWjBKQlFXZENMRVZCUVVVc2EwSkJRV3RDTEVOQlFVTTdTVUZETjBNc1UwRkJVeXhGUVVGRkxFTkJRVU1zYVVKQlFXbENMRVZCUVVVc2EwSkJRV3RDTEVWQlFVVXNhVUpCUVdsQ0xFTkJRVU03U1VGRGNrVXNWMEZCVnl4RlFVRkZMRU5CUVVNc2FVSkJRV2xDTEVWQlFVVXNiVUpCUVcxQ0xFTkJRVU03U1VGRGNrUXNXVUZCV1N4RlFVRkZMRU5CUVVNc2FVSkJRV2xDTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzYjBKQlFXOUNMRVZCUVVVc2FVSkJRV2xDTEVOQlFVTTdTVUZET1VZc1dVRkJXU3hGUVVGRkxFTkJRVU1zYTBKQlFXdENMRVZCUVVVc2EwSkJRV3RDTEVWQlFVVXNhMEpCUVd0Q0xFTkJRVU03U1VGRE1VVXNXVUZCV1N4RlFVRkZMRU5CUVVNc1owSkJRV2RDTEVWQlFVVXNaMEpCUVdkQ0xFVkJRVVVzWjBKQlFXZENMRVZCUVVVc1owSkJRV2RDTEVOQlFVTTdTVUZEZEVZc1QwRkJUeXhGUVVGRkxFTkJRVU1zWjBKQlFXZENMRVZCUVVVc1owSkJRV2RDTEVOQlFVTTdTVUZETjBNc1lVRkJZU3hGUVVGRkxFTkJRVU1zYTBKQlFXdENMRVZCUVVVc2IwSkJRVzlDTEVWQlFVVXNiMEpCUVc5Q0xFTkJRVU03U1VGREwwVXNWVUZCVlN4RlFVRkZMRU5CUVVNc1owSkJRV2RDTEVWQlFVVXNhMEpCUVd0Q0xFVkJRVVVzYTBKQlFXdENMRVZCUVVVc1owSkJRV2RDTEVOQlFVTTdTVUZEZUVZc1RVRkJUU3hGUVVGRkxFTkJRVU1zYTBKQlFXdENMRU5CUVVNN1NVRkROVUlzVDBGQlR5eEZRVUZGTEVOQlFVTXNaMEpCUVdkQ0xFVkJRVVVzYTBKQlFXdENMRU5CUVVNN1NVRkRMME1zVFVGQlRTeEZRVUZGTEVOQlFVTXNhMEpCUVd0Q0xFVkJRVVVzYTBKQlFXdENMRVZCUVVVc2EwSkJRV3RDTEVWQlFVVXNiMEpCUVc5Q0xFTkJRVU03U1VGRE1VWXNVVUZCVVN4RlFVRkZMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTTdTVUZETjBJc1QwRkJUeXhGUVVGRkxFTkJRVU1zYTBKQlFXdENMRU5CUVVNN1EwRkRPVUlzUTBGQlF5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQXFJR0Z6SUdkeWIyc2dabkp2YlNBblpHRjBZV2R5YjJzdFlYQnBMMmR5YjJzbk8xeHVhVzF3YjNKMElDb2dZWE1nZFdrZ1puSnZiU0FuWkdGMFlXZHliMnN0WVhCcEwzVnBKenRjYm1sdGNHOXlkQ0FxSUdGeklFUkhJR1p5YjIwZ0oyUmhkR0ZuY205ckxXRndhUzlrWnljN1hHNWNibVY0Y0c5eWRDQnBiblJsY21aaFkyVWdVMlZ4VUdGc1pYUjBaU0I3WEc0Z0lDOHFLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JTQk5iMjV2YldWeUlHTm9ZWEpoWTNSbGNseHVJQ0FnS2lCQWNtVjBkWEp1SUh0emRISnBibWQ5SUVOdmJHOXlYRzRnSUNBcUwxeHVJQ0JiYlRvZ2MzUnlhVzVuWFRvZ2MzUnlhVzVuTzF4dWZWeHVYRzVsZUhCdmNuUWdZMnhoYzNNZ1UyVnhVR0ZzWlhSMFpVSmhjMlVnZTF4dUlDQXZLaW9nVUdGc1pYUjBaU0IzYVhSb0lITm9ZV1JsY3lCdlppQndjbWx0WVhKNUlHTnZiRzl5YzF4dUlDQWdLaTljYmlBZ2NISnBkbUYwWlNCemRHRjBhV01nWTI5c2IzVnlVR0ZzWlhSMFpUb2dleUJiYTJWNU9pQnpkSEpwYm1kZE9pQnpkSEpwYm1kYlhTQjlJRDBnZTF4dUlDQWdJQ2R2Y21GdVoyVW5PaUJiSjNKbllpZ3lOVFVzTVRnM0xERXlNQ2tuTENBbmNtZGlLREkwTlN3eE5qY3NNVEF3S1Njc0lDZHlaMklvTWpNMUxERXpOeXczTUNrbkxDQW5jbWRpS0RJd05Td2dNVEV4TENBM01Ta25YU3hjYmlBZ0lDQW5ZV3hzWDJkeVpXVnVKem9nV3lkeVoySW9ORFFzTVRZd0xEUTBLU2NzSUNkeVoySW9OelFzTVRZd0xEYzBLU2NzSUNkeVoySW9Nak1zTVRBekxEVTNLU2NzSUNkeVoySW9NekFzTVRFd0xEazJLU2NzSUNkeVoySW9OakFzTVRNeExEazFLU2NzWEc0Z0lDQWdJQ0FuY21kaUtESTBMREV4TUN3M09Ta25MQ0FuY21kaUtERTFNaXd5TWpNc01UTTRLU2NzSUNkeVoySW9NVGd5TENBeU1qTXNJREV6T0NrbkxDQW5jbWRpS0RFMU1pd2dNVGt6TENBeE16Z3BKMTBzWEc0Z0lDQWdKMkZzYkY5aWJIVmxKem9nV3lkeVoySW9NekVzTVRFNUxERTRNQ2tuTENBbmNtZGlLREl6TERFNU1Dd3lNRGNwSnl3Z0ozSm5ZaWd4TWpJc0lERXdNaXdnTVRnNUtTY3NJQ2R5WjJJb01UVTRMREl4T0N3eU1qa3BKeXdnSjNKbllpZ3hOREVzSURFeU5Dd2dNakUzS1Njc1hHNGdJQ0FnSUNBbmNtZGlLRE14TENBeE1qQXNJREUxTUNrblhTeGNiaUFnSUNBbmJXRm5aVzUwWVNjNklGc25jbWRpS0RFMk1pd3hNRFlzTVRreUtTY3NJQ2R5WjJJb01UazNMREUyTlN3eU1qUXBKeXdnSjNKbllpZ3lNRGdzTVRFekxESXhPQ2tuWFN4Y2JpQWdJQ0FuY21Wa0p6b2dXeWR5WjJJb01qRTBMRE01TERRd0tTY3NJQ2R5WjJJb01qVTFMREUxTWl3eE5UQXBKMTBzWEc0Z0lDQWdKM04wWDJKc2RXVW5PaUJiSjNKbllpZ3lNeXd4T1RBc01qQTNLU2NzSUNkeVoySW9NVFU0TERJeE9Dd3lNamtwSnl3Z0ozSm5ZaWd6TVN3eE1Ua3NNVGd3S1NkZExGeHVJQ0FnSUNka1lYSnJYMkpzZFdVbk9pQmJKM0puWWlnek1Td3hNVGtzTVRnd0tTY3NJQ2R5WjJJb016RXNJREV5TUN3Z01UVXdLU2RkTEZ4dUlDQWdJQ2RzYVdkb2RGOWliSFZsSnpvZ1d5ZHlaMklvTWpNc01Ua3dMREl3TnlrbkxDQW5jbWRpS0RFMU9Dd3lNVGdzTWpJNUtTY3NJQ2R5WjJJb01UQTRMQ0F5TVRnc0lESXlPU2tuTENBbmNtZGlLREl6TERFNU1Dd3lNamNwSjEwc1hHNGdJQ0FnSjJ4cGJHRmpYMkpzZFdVbk9pQmJKM0puWWlneE1qUXNNVEF5TERJeE1Ta25MQ0FuY21kaUtERTBPU3d4TXpRc01qRTNLU2NzSUNkeVoySW9PVGNzSURneExDQXhOVEFwSjEwc1hHNGdJQ0FnSjJSaGNtdGZaM0psWlc0bk9pQmJKM0puWWlneU15d3hNRE1zTlRjcEp5d2dKM0puWWlnek1Dd3hNVEFzT1RZcEp5d2dKM0puWWlnMk1Dd3hNekVzT1RVcEp5d2dKM0puWWlneU5Dd3hNVEFzTnprcEoxMHNYRzRnSUNBZ0oyZHlaV1Z1SnpvZ1d5ZHlaMklvTkRRc01UWXdMRFEwS1Njc0lDZHlaMklvTnpRc01UWXdMRGMwS1NkZExGeHVJQ0FnSUNkc2FXZG9kRjluY21WbGJpYzZJRnNuY21kaUtERTFNaXd5TWpNc01UTTRLU2NzSUNkeVoySW9NVGd5TENBeU1qTXNJREV6T0NrbkxDQW5jbWRpS0RFMU1pd2dNVGt6TENBeE16Z3BKMTBzWEc0Z0lDQWdKM04wWDJkeVpXVnVKem9nV3lkeVoySW9ORFFzTVRZd0xEUTBLU2NzSUNkeVoySW9NVFV5TERJeU15d3hNemdwSnl3Z0ozSm5ZaWd6T1N3Z01UYzBMQ0E1TmlrbkxDQW5jbWRpS0RjMExERTJNQ3czTkNrblhTeGNiaUFnSUNBbmNHbHVheWM2SUZzbmNtZGlLREkwTnl3eE9ESXNNakV3S1NkZExGeHVJQ0FnSUNkaWNtOTNiaWM2SUZzbmNtZGlLREUwTUN3NE5pdzNOU2tuTENBbmNtZGlLREV3TWl3Z05qSXNJRFUwS1NkZExGeHVJQ0FnSUNkbmNtRjVKem9nV3lkeVoySW9NVEkzTERFeU55d3hNamNwSnl3Z0ozSm5ZaWd4T1Rrc01UazVMREU1T1NrbkxDQW5jbWRpS0RFNU5pd3hOVFlzTVRRNEtTY3NJQ2R5WjJJb01qSXlMQ0F5TWpJc0lERTRNQ2tuWFN4Y2JpQWdJQ0FuZVdWc2JHOTNKem9nV3lkeVoySW9NVGc0TERFNE9Td3pOQ2tuWFN4Y2JpQWdJQ0FuZDJocGRHVW5PaUJiSjNKbllpZ3lNekFzTWpNd0xESXpNQ2tuWFN4Y2JpQWdmVHRjYmx4dUlDQndjbTkwWldOMFpXUWdjM1JoZEdsaklHMWhhMlZRWVd4bGRIUmxLR1IwT2lCYmMzUnlhVzVuVzEwc0lITjBjbWx1WjExYlhTd2djMmx0Y0d4cFptbGxaQ0E5SUdaaGJITmxLU0I3WEc0Z0lDQWdZMjl1YzNRZ2NHRnNaWFIwWlRvZ2V5QmJhMlY1T2lCemRISnBibWRkT2lCemRISnBibWNnZlNBOUlIdDlPMXh1SUNBZ0lHUjBMbVp2Y2tWaFkyZ29LR053S1NBOVBpQjdYRzRnSUNBZ0lDQmpiMjV6ZENCdlltcE1hWE4wSUQwZ1kzQmJNRjA3WEc0Z0lDQWdJQ0JqYjI1emRDQmpiMnh2ZFhJZ1BTQmpjRnN4WFR0Y2JpQWdJQ0FnSUc5aWFreHBjM1F1Wm05eVJXRmphQ2dvYjJKcUxDQnBibVFwSUQwK0lIdGNiaUFnSUNBZ0lDQWdjR0ZzWlhSMFpWdHZZbXBkSUQwZ2RHaHBjeTVqYjJ4dmRYSlFZV3hsZEhSbFcyTnZiRzkxY2wxYmMybHRjR3hwWm1sbFpDQS9JREFnT2lCcGJtUmRPMXh1SUNBZ0lDQWdmU2s3WEc0Z0lDQWdmU2s3WEc0Z0lDQWdjbVYwZFhKdUlIQmhiR1YwZEdVN1hHNGdJSDFjYm4xY2JpSmRmUT09IiwidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCAqIGFzIHJ4anMgZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBbWlub2FjaWRzLCBBbWlub2FjaWRzUGFsZXR0ZXMgfSBmcm9tICcuLi9hbWlub2FjaWRzJztcbmltcG9ydCB7IE51Y2xlb3RpZGVzLCBOdWNsZW90aWRlc1BhbGV0dGVzIH0gZnJvbSAnLi4vbnVjbGVvdGlkZXMnO1xuSFRNTENhbnZhc0VsZW1lbnQucHJvdG90eXBlLmdldEN1cnNvclBvc2l0aW9uID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgY29uc3QgcmVjdCA9IHRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgcmV0dXJuIG5ldyBERy5Qb2ludChldmVudC5jbGllbnRYIC0gcmVjdC5sZWZ0LCBldmVudC5jbGllbnRZIC0gcmVjdC50b3ApO1xufTtcbkRHLlJlY3QucHJvdG90eXBlLmNvbnRhaW5zID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICByZXR1cm4gdGhpcy5sZWZ0IDw9IHggJiYgeCA8PSB0aGlzLnJpZ2h0ICYmIHRoaXMudG9wIDw9IHkgJiYgeSA8PSB0aGlzLmJvdHRvbTtcbn07XG5leHBvcnQgY2xhc3MgUG9zaXRpb25Nb25vbWVySW5mbyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuY291bnQgPSAwO1xuICAgICAgICB0aGlzLmJvdW5kcyA9IG5ldyBERy5SZWN0KDAsIDAsIDAsIDApO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBQb3NpdGlvbkluZm8ge1xuICAgIC8qKiBmcmVxID0ge30sIHJvd0NvdW50ID0gMFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgcG9zaXRpb24gKCcxMTFBJywgJzExMS4xJywgZXRjKVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG5hbWUpIHtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5mcmVxID0ge307XG4gICAgICAgIHRoaXMucm93Q291bnQgPSAwO1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBXZWJMb2dvIGV4dGVuZHMgREcuSnNWaWV3ZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICAvLyBwcml2YXRlIHJlYWRvbmx5IGNvbG9yU2NoZW1lOiBDb2xvclNjaGVtZSA9IENvbG9yU2NoZW1lc1tOdWNsZW90aWRlc1dlYkxvZ28ucmVzaWR1ZXNTZXRdO1xuICAgICAgICB0aGlzLmNwID0gbnVsbDtcbiAgICAgICAgdGhpcy5heGlzSGVpZ2h0ID0gMTI7XG4gICAgICAgIHRoaXMuc2VxQ29sID0gbnVsbDtcbiAgICAgICAgLy8gcHJpdmF0ZSBtYXhMZW5ndGg6IG51bWJlciA9IDEwMDtcbiAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSBbXTtcbiAgICAgICAgdGhpcy5yb3dzTWFza2VkID0gMDtcbiAgICAgICAgdGhpcy5yb3dzTnVsbCA9IDA7XG4gICAgICAgIHRoaXMucG9zaXRpb25OYW1lcyA9IFtdO1xuICAgICAgICB0aGlzLnN0YXJ0UG9zaXRpb24gPSAtMTtcbiAgICAgICAgdGhpcy5lbmRQb3NpdGlvbiA9IC0xO1xuICAgICAgICB0aGlzLnRleHRCYXNlbGluZSA9ICd0b3AnO1xuICAgICAgICB0aGlzLnBvc2l0aW9uV2lkdGggPSB0aGlzLmZsb2F0KCdwb3NpdGlvbldpZHRoJywgMTYpO1xuICAgICAgICB0aGlzLm1pbkhlaWdodCA9IHRoaXMuZmxvYXQoJ21pbkhlaWdodCcsIDUwKTtcbiAgICAgICAgdGhpcy5tYXhIZWlnaHQgPSB0aGlzLmZsb2F0KCdtYXhIZWlnaHQnLCAxMDApO1xuICAgICAgICB0aGlzLmNvbnNpZGVyTnVsbFNlcXVlbmNlcyA9IHRoaXMuYm9vbCgnY29uc2lkZXJOdWxsU2VxdWVuY2VzJywgZmFsc2UpO1xuICAgICAgICB0aGlzLnNlcXVlbmNlQ29sdW1uTmFtZSA9IHRoaXMuc3RyaW5nKCdzZXF1ZW5jZUNvbHVtbk5hbWUnLCBudWxsKTtcbiAgICAgICAgdGhpcy5zdGFydFBvc2l0aW9uTmFtZSA9IHRoaXMuc3RyaW5nKCdzdGFydFBvc2l0aW9uTmFtZScsIG51bGwpO1xuICAgICAgICB0aGlzLmVuZFBvc2l0aW9uTmFtZSA9IHRoaXMuc3RyaW5nKCdlbmRQb3NpdGlvbk5hbWUnLCBudWxsKTtcbiAgICB9XG4gICAgLyoqIEZvciBzdGFydFBvc2l0aW9uIGVxdWFscyB0byBlbmRQb3NpdGlvbiBMZW5ndGggaXMgMSAqL1xuICAgIGdldCBMZW5ndGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YXJ0UG9zaXRpb24gPD0gdGhpcy5lbmRQb3NpdGlvbiA/IHRoaXMuZW5kUG9zaXRpb24gLSB0aGlzLnN0YXJ0UG9zaXRpb24gKyAxIDogMDtcbiAgICB9XG4gICAgaW5pdCgpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIHRoaXMubXNnSG9zdCA9IHVpLmRpdignTm8gbWVzc2FnZScpO1xuICAgICAgICAgICAgdGhpcy5tc2dIb3N0LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgICAgICB0aGlzLmNhbnZhcyA9IHVpLmNhbnZhcygpO1xuICAgICAgICAgICAgdGhpcy5jYW52YXMuc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgICAgICAgICAvLyB0aGlzLnNsaWRlciA9IHVpLnJhbmdlU2xpZGVyKDAsIDIwLCAyLCA1KTtcbiAgICAgICAgICAgIC8vIHRoaXMuc2xpZGVyLnJvb3Quc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgICAgICAgICAvLyB0aGlzLnNsaWRlci5yb290LnN0eWxlLmhlaWdodCA9ICcxMnB4JztcbiAgICAgICAgICAgIC8vIHRoaXMuaG9zdCA9IHVpLmRpdlYoWy8qdGhpcy5zbGlkZXIsKi90aGlzLmNhbnZhc10pO1xuICAgICAgICAgICAgY29uc3QgZ2V0TW9ub21lciA9IChwKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgalBvcyA9IE1hdGguZmxvb3IocC54IC8gdGhpcy5wb3NpdGlvbldpZHRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMucG9zaXRpb25zW2pQb3NdO1xuICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvbiA9PT0gdm9pZCAwKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2pQb3MsIG51bGwsIG51bGxdO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vbm9tZXIgPSBPYmplY3Qua2V5cyhwb3NpdGlvbi5mcmVxKVxuICAgICAgICAgICAgICAgICAgICAuZmluZCgobSkgPT4gcG9zaXRpb24uZnJlcVttXS5ib3VuZHMuY29udGFpbnMocC54LCBwLnkpKTtcbiAgICAgICAgICAgICAgICBpZiAobW9ub21lciA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2pQb3MsIG51bGwsIG51bGxdO1xuICAgICAgICAgICAgICAgIHJldHVybiBbalBvcywgbW9ub21lciwgcG9zaXRpb24uZnJlcVttb25vbWVyXV07XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5jYW52YXMub25tb3VzZW92ZXIgPSAoZSkgPT4ge1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJ4anMuZnJvbUV2ZW50KHRoaXMuY2FudmFzLCAnbW91c2Vtb3ZlJykuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNhbnZhcylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFyZ3MgPSBlO1xuICAgICAgICAgICAgICAgIGNvbnN0IFtqUG9zLCBtb25vbWVyXSA9IGdldE1vbm9tZXIodGhpcy5jYW52YXMuZ2V0Q3Vyc29yUG9zaXRpb24oYXJncykpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFGcmFtZSAmJiB0aGlzLnNlcUNvbCAmJiBtb25vbWVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHVpLnRvb2x0aXAuc2hvd1Jvd0dyb3VwKHRoaXMuZGF0YUZyYW1lLCAoaVJvdykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VxID0gdGhpcy5zZXFDb2wuZ2V0KGlSb3cpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbVNlcSA9IHNlcSA/IHNlcVt0aGlzLnN0YXJ0UG9zaXRpb24gKyBqUG9zXSA6IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbVNlcSA9PT0gbW9ub21lcjtcbiAgICAgICAgICAgICAgICAgICAgfSwgYXJncy54ICsgMTYsIGFyZ3MueSArIDE2KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHVpLnRvb2x0aXAuaGlkZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcnhqcy5mcm9tRXZlbnQodGhpcy5jYW52YXMsICdtb3VzZWRvd24nKS5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY2FudmFzIHx8IGUuYnV0dG9uICE9IDApXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCBhcmdzID0gZTtcbiAgICAgICAgICAgICAgICBjb25zdCBbalBvcywgbW9ub21lcl0gPSBnZXRNb25vbWVyKHRoaXMuY2FudmFzLmdldEN1cnNvclBvc2l0aW9uKGFyZ3MpKTtcbiAgICAgICAgICAgICAgICAvLyBwcmV2ZW50cyBkZXNlbGVjdCBhbGwgcm93cyBpZiB3ZSBtaXNzIG1vbm9tZXIgYm91bmRzXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YUZyYW1lICYmIHRoaXMuc2VxQ29sICYmIG1vbm9tZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLmluaXQoKGlSb3cpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlcSA9IHRoaXMuc2VxQ29sLmdldChpUm93KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1TZXEgPSBzZXEgPyBzZXFbdGhpcy5zdGFydFBvc2l0aW9uICsgalBvc10gOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1TZXEgPT09IG1vbm9tZXI7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5yb290LmFwcGVuZCh0aGlzLm1zZ0hvc3QpO1xuICAgICAgICAgICAgdGhpcy5yb290LmFwcGVuZCh0aGlzLmNhbnZhcyk7XG4gICAgICAgICAgICAvLyB0aGlzLnJvb3QuYXBwZW5kQ2hpbGQodGhpcy5zbGlkZXIucm9vdCk7XG4gICAgICAgICAgICB1aS5vblNpemVDaGFuZ2VkKHRoaXMucm9vdCkuc3Vic2NyaWJlKHRoaXMucm9vdE9uU2l6ZUNoYW5nZWQuYmluZCh0aGlzKSk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJvb3RPblNpemVDaGFuZ2VkKGFyZ3MpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNhbnZhcylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgLy8gdGhpcy5jYW52YXMud2lkdGggY2FsY3VsYXRlIGluIHRoaXMuX2NhbGN1bGF0ZSgpIG1ldGhvZFxuICAgICAgICBjb25zdCBoZWlnaHQgPSBNYXRoLm1pbih0aGlzLm1heEhlaWdodCwgTWF0aC5tYXgodGhpcy5taW5IZWlnaHQsIHRoaXMucm9vdC5jbGllbnRIZWlnaHQpKTtcbiAgICAgICAgLy8gaWYgKHRoaXMuY2FudmFzLndpZHRoID4gdGhpcy5yb290LmNsaWVudFdpZHRoKSAvKiBob3Jpem9udGFsIHNjcm9sbGVyIGlzIGVuYWJsZWQgKi9cbiAgICAgICAgLy8gICBoZWlnaHQgLT0gNjsgLyogZnJlZSBzb21lIHNwYWNlIGZvciBob3Jpem9udGFsIHNjcm9sbGVyICovXG4gICAgICAgIHRoaXMuY2FudmFzLmhlaWdodCA9IGhlaWdodDtcbiAgICAgICAgdGhpcy5jYW52YXMuc3R5bGUuaGVpZ2h0ID0gYCR7aGVpZ2h0fXB4YDtcbiAgICAgICAgLy8gY29uc29sZS5kZWJ1ZyhgV2ViTG9nby5vblJvb3RTaXplQ2hhbmdlZCgpIGAgK1xuICAgICAgICAvLyAgIGByb290LndpZHRoPSR7dGhpcy5yb290LmNsaWVudFdpZHRofSwgcm9vdC5oZWlnaHQ9JHt0aGlzLnJvb3QuY2xpZW50SGVpZ2h0fSwgYCArXG4gICAgICAgIC8vICAgYGNhbnZhcy53aWR0aD0ke3RoaXMuY2FudmFzLndpZHRofSwgY2FudmFzLmhlaWdodD0ke3RoaXMuY2FudmFzLmhlaWdodH0gLmApO1xuICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICB9XG4gICAgLyoqIEFzc2lnbnMge0BsaW5rIHNlcUNvbH0gYW5kIHtAbGluayBjcH0gYmFzZWQgb24ge0BsaW5rIHNlcXVlbmNlQ29sdW1uTmFtZX0gYW5kIGNhbGxzIHtAbGluayByZW5kZXJ9KCkuXG4gICAgICovXG4gICAgdXBkYXRlU2VxQ29sKCkge1xuICAgICAgICBpZiAodGhpcy5kYXRhRnJhbWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VxQ29sID0gdGhpcy5kYXRhRnJhbWUuY29sKHRoaXMuc2VxdWVuY2VDb2x1bW5OYW1lKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlcUNvbCkge1xuICAgICAgICAgICAgICAgIGxldCBtYXhMZW5ndGggPSAwO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgY2F0ZWdvcnkgb2YgdGhpcy5zZXFDb2wuY2F0ZWdvcmllcylcbiAgICAgICAgICAgICAgICAgICAgbWF4TGVuZ3RoID0gTWF0aC5tYXgobWF4TGVuZ3RoLCBjYXRlZ29yeS5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIC8vIEdldCBwb3NpdGlvbiBuYW1lcyBmcm9tIGRhdGEgY29sdW1uIHRhZyAncG9zaXRpb25OYW1lcydcbiAgICAgICAgICAgICAgICBjb25zdCBwb3NpdGlvbk5hbWVzVHh0ID0gdGhpcy5zZXFDb2wuZ2V0VGFnKCdwb3NpdGlvbk5hbWVzJyk7XG4gICAgICAgICAgICAgICAgLy8gRmFsbGJhY2sgaWYgJ3Bvc2l0aW9uTmFtZXMnIHRhZyBpcyBub3QgcHJvdmlkZWRcbiAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uTmFtZXMgPSBwb3NpdGlvbk5hbWVzVHh0ID8gcG9zaXRpb25OYW1lc1R4dC5zcGxpdCgnLCAnKS5tYXAoKG4pID0+IG4udHJpbSgpKSA6XG4gICAgICAgICAgICAgICAgICAgIFsuLi5BcnJheShtYXhMZW5ndGgpLmtleXMoKV0ubWFwKChqUG9zKSA9PiBgJHtqUG9zICsgMX1gKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0UG9zaXRpb24gPSB0aGlzLnN0YXJ0UG9zaXRpb25OYW1lICYmIHRoaXMucG9zaXRpb25OYW1lcyA/XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb25OYW1lcy5pbmRleE9mKHRoaXMuc3RhcnRQb3NpdGlvbk5hbWUpIDogMDtcbiAgICAgICAgICAgICAgICB0aGlzLmVuZFBvc2l0aW9uID0gdGhpcy5lbmRQb3NpdGlvbk5hbWUgJiYgdGhpcy5wb3NpdGlvbk5hbWVzID9cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3NpdGlvbk5hbWVzLmluZGV4T2YodGhpcy5lbmRQb3NpdGlvbk5hbWUpIDogKG1heExlbmd0aCAtIDEpO1xuICAgICAgICAgICAgICAgIC8vI3JlZ2lvbiAtLSBwYWxldHRlIC0tXG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLnNlcUNvbC5zZW1UeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgQW1pbm9hY2lkcy5TZW1UeXBlTXVsdGlwbGVBbGlnbm1lbnQ6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNwID0gQW1pbm9hY2lkc1BhbGV0dGVzLkdyb2tHcm91cHM7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBOdWNsZW90aWRlcy5TZW1UeXBlTXVsdGlwbGVBbGlnbm1lbnQ6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNwID0gTnVjbGVvdGlkZXNQYWxldHRlcy5DaHJvbWF0b2dyYW07XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8jZW5kcmVnaW9uIC0tIHBhbGV0dGUgLS1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY3AgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpb25OYW1lcyA9IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9IC0xO1xuICAgICAgICAgICAgICAgIHRoaXMuZW5kUG9zaXRpb24gPSAtMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH1cbiAgICBvblByb3BlcnR5Q2hhbmdlZChwcm9wZXJ0eSkge1xuICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlZChwcm9wZXJ0eSk7XG4gICAgICAgIHN3aXRjaCAocHJvcGVydHkubmFtZSkge1xuICAgICAgICAgICAgY2FzZSAnY29uc2lkZXJOdWxsU2VxdWVuY2VzJzpcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc2VxdWVuY2VDb2x1bW5OYW1lJzpcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlcUNvbCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3RhcnRQb3NpdGlvbk5hbWUnOlxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2VxQ29sKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdlbmRQb3NpdGlvbk5hbWUnOlxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2VxQ29sKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdwb3NpdGlvbldpZHRoJzpcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcih0cnVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21pbkhlaWdodCc6XG4gICAgICAgICAgICAgICAgdGhpcy5yb290T25TaXplQ2hhbmdlZChudWxsKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21heEhlaWdodCc6XG4gICAgICAgICAgICAgICAgdGhpcy5yb290T25TaXplQ2hhbmdlZChudWxsKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICBvblRhYmxlQXR0YWNoZWQoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlU2VxQ29sKCk7XG4gICAgICAgIGlmICh0aGlzLmRhdGFGcmFtZSAhPT0gdm9pZCAwKSB7XG4gICAgICAgICAgICAvLyBUaGVyZSBhcmUgdHdvIGFwcHJvYWNoZXM6XG4gICAgICAgICAgICAvLyBmaXJzdCAgLSBsb29rIGluIHRoZSBkYXRhRnJhbWUgZm9yIHRoZSBmaXJzdCBtYXRjaGluZyBjb2x1bW4gYnkgc2VtVHlwZSBvZiB0aGVcbiAgICAgICAgICAgIC8vICAgICAgICAgIGNvcnJlc3BvbmRpbmcgdmlld2VyIChidXQgd2Ugd2FudCBvbmx5IG9uZSBjbGFzcyBvZiBhIG1vcmUgdW5pdmVyc2FsIHZpZXdlciksXG4gICAgICAgICAgICAvLyBzZWNvbmQgLSBkcmF3IGNvbHVtbiBkYXRhIGlmIHRoZSBwYXNzZWQgY29sdW1uIGlzIG9mIHN1aXRhYmxlIHNlbVR5cGVcbiAgICAgICAgICAgIC8vIFdlIGRlY2lkZWQgdGhhdCB3ZSB3aWxsIG5vdCBzZWFyY2gsIGJ1dCB3ZSB3aWxsIGRpc3BsYXkgYXNrZWQgZGF0YSBpZiB3ZSBjYW5cbiAgICAgICAgICAgIC8vIGNvbnN0IHNlbVR5cGUgPSAoPHR5cGVvZiBOdWNsZW90aWRlc1dlYkxvZ28+KHRoaXMuY29uc3RydWN0b3IpKS5yZXNpZHVlc1NldDtcbiAgICAgICAgICAgIC8vIHRoaXMuc2VxQ29sID0gKHRoaXMuZGF0YUZyYW1lLmNvbHVtbnMgYXMgREcuQ29sdW1uTGlzdCkuYnlTZW1UeXBlKHNlbVR5cGUpO1xuICAgICAgICAgICAgdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLm9uQ2hhbmdlZC5zdWJzY3JpYmUoKF8pID0+IHRoaXMucmVuZGVyKCkpO1xuICAgICAgICAgICAgdGhpcy5kYXRhRnJhbWUuZmlsdGVyLm9uQ2hhbmdlZC5zdWJzY3JpYmUoKF8pID0+IHRoaXMucmVuZGVyKCkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIF9udWxsU2VxdWVuY2UoZmlsbGVyUmVzaWR1ZSA9ICdYJykge1xuICAgICAgICBpZiAodGhpcy5jb25zaWRlck51bGxTZXF1ZW5jZXMpXG4gICAgICAgICAgICByZXR1cm4gbmV3IEFycmF5KHRoaXMuTGVuZ3RoKS5maWxsKGZpbGxlclJlc2lkdWUpLmpvaW4oJycpO1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIF9jYWxjdWxhdGUoKSB7XG4gICAgICAgIGlmICghdGhpcy5jYW52YXMgfHwgIXRoaXMuc2VxQ29sIHx8ICF0aGlzLmRhdGFGcmFtZSB8fCB0aGlzLnN0YXJ0UG9zaXRpb24gPT09IC0xIHx8IHRoaXMuZW5kUG9zaXRpb24gPT09IC0xKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCB3aWR0aCA9IHRoaXMuTGVuZ3RoICogdGhpcy5wb3NpdGlvbldpZHRoO1xuICAgICAgICB0aGlzLmNhbnZhcy53aWR0aCA9IHdpZHRoO1xuICAgICAgICB0aGlzLmNhbnZhcy5zdHlsZS53aWR0aCA9IGAke3dpZHRofXB4YDtcbiAgICAgICAgdGhpcy5yb290LnN0eWxlLndpZHRoID0gYCR7dGhpcy5jYW52YXMud2lkdGh9cHhgO1xuICAgICAgICB0aGlzLnBvc2l0aW9ucyA9IG5ldyBBcnJheSh0aGlzLkxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGpQb3MgPSAwOyBqUG9zIDwgdGhpcy5MZW5ndGg7IGpQb3MrKykge1xuICAgICAgICAgICAgY29uc3QgcG9zTmFtZSA9IHRoaXMucG9zaXRpb25OYW1lc1t0aGlzLnN0YXJ0UG9zaXRpb24gKyBqUG9zXTtcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb25zW2pQb3NdID0gbmV3IFBvc2l0aW9uSW5mbyhwb3NOYW1lKTtcbiAgICAgICAgfVxuICAgICAgICAvLyAyMDIyLTA1LTA1IGFza2Fsa2luIGluc3RydWN0ZWQgdG8gc2hvdyBXZWJMb2dvIGJhc2VkIG9uIGZpbHRlciAobm90IHNlbGVjdGlvbilcbiAgICAgICAgY29uc3QgaW5kaWNlcyA9IHRoaXMuZGF0YUZyYW1lLmZpbHRlci5nZXRTZWxlY3RlZEluZGV4ZXMoKTtcbiAgICAgICAgLy8gY29uc3QgaW5kaWNlcyA9IHRoaXMuZGF0YUZyYW1lLnNlbGVjdGlvbi50cnVlQ291bnQgPiAwID8gdGhpcy5kYXRhRnJhbWUuc2VsZWN0aW9uLmdldFNlbGVjdGVkSW5kZXhlcygpIDpcbiAgICAgICAgLy8gICB0aGlzLmRhdGFGcmFtZS5maWx0ZXIuZ2V0U2VsZWN0ZWRJbmRleGVzKCk7XG4gICAgICAgIHRoaXMucm93c01hc2tlZCA9IGluZGljZXMubGVuZ3RoO1xuICAgICAgICB0aGlzLnJvd3NOdWxsID0gMDtcbiAgICAgICAgZm9yIChjb25zdCBpIG9mIGluZGljZXMpIHtcbiAgICAgICAgICAgIGxldCBzID0gKHRoaXMuc2VxQ29sLmdldChpKSk7XG4gICAgICAgICAgICBpZiAoIXMpIHtcbiAgICAgICAgICAgICAgICBzID0gdGhpcy5fbnVsbFNlcXVlbmNlKCk7XG4gICAgICAgICAgICAgICAgKyt0aGlzLnJvd3NOdWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgalBvcyA9IDA7IGpQb3MgPCB0aGlzLkxlbmd0aDsgalBvcysrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBtSW5mbyA9IHRoaXMucG9zaXRpb25zW2pQb3NdLmZyZXE7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG0gPSBzW3RoaXMuc3RhcnRQb3NpdGlvbiArIGpQb3NdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIShtIGluIHBtSW5mbykpXG4gICAgICAgICAgICAgICAgICAgICAgICBwbUluZm9bbV0gPSBuZXcgUG9zaXRpb25Nb25vbWVySW5mbygpO1xuICAgICAgICAgICAgICAgICAgICBwbUluZm9bbV0uY291bnQrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8jcmVnaW9uIFBvbGlzaCBmcmVxIGNvdW50c1xuICAgICAgICBmb3IgKGxldCBqUG9zID0gMDsgalBvcyA8IHRoaXMuTGVuZ3RoOyBqUG9zKyspIHtcbiAgICAgICAgICAgIC8vIGRlbGV0ZSB0aGlzLnBvc2l0aW9uc1tqUG9zXS5mcmVxWyctJ107XG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uc1tqUG9zXS5yb3dDb3VudCA9IDA7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG0gaW4gdGhpcy5wb3NpdGlvbnNbalBvc10uZnJlcSlcbiAgICAgICAgICAgICAgICB0aGlzLnBvc2l0aW9uc1tqUG9zXS5yb3dDb3VudCArPSB0aGlzLnBvc2l0aW9uc1tqUG9zXS5mcmVxW21dLmNvdW50O1xuICAgICAgICB9XG4gICAgICAgIC8vI2VuZHJlZ2lvblxuICAgICAgICBjb25zdCBtYXhIZWlnaHQgPSB0aGlzLmNhbnZhcy5oZWlnaHQgLSB0aGlzLmF4aXNIZWlnaHQ7XG4gICAgICAgIC8vIGNvbnNvbGUuZGVidWcoYFdlYkxvZ28uX2NhbGN1bGF0ZSgpIG1heEhlaWdodD0ke21heEhlaWdodH0uYCk7XG4gICAgICAgIC8vI3JlZ2lvbiBDYWxjdWxhdGUgc2NyZWVuXG4gICAgICAgIGZvciAobGV0IGpQb3MgPSAwOyBqUG9zIDwgdGhpcy5MZW5ndGg7IGpQb3MrKykge1xuICAgICAgICAgICAgY29uc3QgZnJlcSA9IHRoaXMucG9zaXRpb25zW2pQb3NdLmZyZXE7XG4gICAgICAgICAgICBjb25zdCByb3dDb3VudCA9IHRoaXMucG9zaXRpb25zW2pQb3NdLnJvd0NvdW50O1xuICAgICAgICAgICAgbGV0IHkgPSB0aGlzLmF4aXNIZWlnaHQ7XG4gICAgICAgICAgICBjb25zdCBlbnRyaWVzID0gT2JqZWN0LmVudHJpZXMoZnJlcSkuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChhWzBdICE9PSAnLScgJiYgYlswXSAhPT0gJy0nKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYlsxXS5jb3VudCAtIGFbMV0uY291bnQ7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoYVswXSA9PT0gJy0nICYmIGJbMF0gPT09ICctJylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoYVswXSA9PT0gJy0nKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgZWxzZSAvKiAoYlswXSA9PT0gJy0nKSAqL1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKzE7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBtSW5mbyA9IGVudHJ5WzFdO1xuICAgICAgICAgICAgICAgIC8vIGNvbnN0IG06IHN0cmluZyA9IGVudHJ5WzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGggPSBtYXhIZWlnaHQgKiBwbUluZm8uY291bnQgLyByb3dDb3VudDtcbiAgICAgICAgICAgICAgICBwbUluZm8uYm91bmRzID0gbmV3IERHLlJlY3QoalBvcyAqIHRoaXMucG9zaXRpb25XaWR0aCwgeSwgdGhpcy5wb3NpdGlvbldpZHRoLCBoKTtcbiAgICAgICAgICAgICAgICB5ICs9IGg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8jZW5kcmVnaW9uXG4gICAgfVxuICAgIC8vIHJlZmxlY3QgY2hhbmdlcyBtYWRlIHRvIGZpbHRlci9zZWxlY3Rpb25cbiAgICByZW5kZXIocmVjYWxjID0gdHJ1ZSkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICh0aGlzLm1zZ0hvc3QpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlcUNvbCAmJiAhdGhpcy5jcCkge1xuICAgICAgICAgICAgICAgIHRoaXMubXNnSG9zdC5pbm5lclRleHQgPSBgVW5rbm93biBwYWxldHRlIChjb2x1bW4gc2VtVHlwZTogJyR7dGhpcy5zZXFDb2wuc2VtVHlwZX0nKS5gO1xuICAgICAgICAgICAgICAgIHRoaXMubXNnSG9zdC5zdHlsZS5kaXNwbGF5ID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1zZ0hvc3Quc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuY2FudmFzIHx8ICF0aGlzLnNlcUNvbCB8fCAhdGhpcy5kYXRhRnJhbWUgfHwgIXRoaXMuY3AgfHxcbiAgICAgICAgICAgIHRoaXMuc3RhcnRQb3NpdGlvbiA9PT0gLTEgfHwgdGhpcy5lbmRQb3NpdGlvbiA9PT0gLTEpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGcgPSB0aGlzLmNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgICAgICBpZiAoIWcpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChyZWNhbGMpXG4gICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGUoKTtcbiAgICAgICAgLy8gbGV0IHJvd0NvdW50ID0gdGhpcy5yb3dzTWFza2VkO1xuICAgICAgICAvLyBpZiAoIXRoaXMuY29uc2lkZXJOdWxsU2VxdWVuY2VzKVxuICAgICAgICAvLyAgIHJvd0NvdW50IC09IHRoaXMucm93c051bGw7XG4gICAgICAgIGcucmVzZXRUcmFuc2Zvcm0oKTtcbiAgICAgICAgLy9nLmNsZWFyUmVjdCgwLCAwLCB0aGlzLmNhbnZhcy53aWR0aCwgdGhpcy5jYW52YXMuaGVpZ2h0KTtcbiAgICAgICAgZy5maWxsU3R5bGUgPSAnd2hpdGUnO1xuICAgICAgICBnLmZpbGxSZWN0KDAsIDAsIHRoaXMuY2FudmFzLndpZHRoLCB0aGlzLmNhbnZhcy5oZWlnaHQpO1xuICAgICAgICBnLnRleHRCYXNlbGluZSA9IHRoaXMudGV4dEJhc2VsaW5lO1xuICAgICAgICAvLyNyZWdpb24gUGxvdCBwb3NpdGlvbk5hbWVzXG4gICAgICAgIGcucmVzZXRUcmFuc2Zvcm0oKTtcbiAgICAgICAgZy5maWxsU3R5bGUgPSAnYmxhY2snO1xuICAgICAgICBnLnRleHRBbGlnbiA9ICdjZW50ZXInO1xuICAgICAgICBnLmZvbnQgPSAnMTBweCBSb2JvdG8sIFJvYm90byBMb2NhbCwgc2Fucy1zZXJpZic7XG4gICAgICAgIGNvbnN0IHBvc05hbWVNYXhXaWR0aCA9IE1hdGgubWF4KC4uLnRoaXMucG9zaXRpb25zLm1hcCgocG9zKSA9PiBnLm1lYXN1cmVUZXh0KHBvcy5uYW1lKS53aWR0aCkpO1xuICAgICAgICBjb25zdCBoU2NhbGUgPSBwb3NOYW1lTWF4V2lkdGggPCAodGhpcy5wb3NpdGlvbldpZHRoIC0gMikgPyAxIDogKHRoaXMucG9zaXRpb25XaWR0aCAtIDIpIC8gcG9zTmFtZU1heFdpZHRoO1xuICAgICAgICBmb3IgKGxldCBqUG9zID0gMDsgalBvcyA8IHRoaXMuTGVuZ3RoOyBqUG9zKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHBvcyA9IHRoaXMucG9zaXRpb25zW2pQb3NdO1xuICAgICAgICAgICAgZy5yZXNldFRyYW5zZm9ybSgpO1xuICAgICAgICAgICAgZy5zZXRUcmFuc2Zvcm0oaFNjYWxlLCAwLCAwLCAxLCBqUG9zICogdGhpcy5wb3NpdGlvbldpZHRoICsgdGhpcy5wb3NpdGlvbldpZHRoIC8gMiwgMCk7XG4gICAgICAgICAgICBnLmZpbGxUZXh0KHBvcy5uYW1lLCAwLCAwKTtcbiAgICAgICAgfVxuICAgICAgICAvLyNlbmRyZWdpb24gUGxvdCBwb3NpdGlvbk5hbWVzXG4gICAgICAgIGZvciAobGV0IGpQb3MgPSAwOyBqUG9zIDwgdGhpcy5MZW5ndGg7IGpQb3MrKykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBbbW9ub21lciwgcG1JbmZvXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnBvc2l0aW9uc1tqUG9zXS5mcmVxKSkge1xuICAgICAgICAgICAgICAgIGlmIChtb25vbWVyICE9PSAnLScpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYiA9IHBtSW5mby5ib3VuZHM7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZvbnRTdHlsZSA9ICcxNnB4IFJvYm90bywgUm9ib3RvIExvY2FsLCBzYW5zLXNlcmlmJztcbiAgICAgICAgICAgICAgICAgICAgLy8gSGFja3MgdG8gc2NhbGUgdXBwZXJjYXNlIGNoYXJhY3RlcnMgdG8gdGFyZ2V0IHJlY3RhbmdsZVxuICAgICAgICAgICAgICAgICAgICBjb25zdCB1cHBlcmNhc2VMZXR0ZXJBc2NlbnQgPSAwLjI1O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB1cHBlcmNhc2VMZXR0ZXJIZWlnaHQgPSAxMi4yO1xuICAgICAgICAgICAgICAgICAgICBnLnJlc2V0VHJhbnNmb3JtKCk7XG4gICAgICAgICAgICAgICAgICAgIGcuc3Ryb2tlU3R5bGUgPSAnbGlnaHRncmF5JztcbiAgICAgICAgICAgICAgICAgICAgZy5saW5lV2lkdGggPSAxO1xuICAgICAgICAgICAgICAgICAgICBnLnJlY3QoYi5sZWZ0LCBiLnRvcCwgYi53aWR0aCwgYi5oZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICBnLmZpbGxTdHlsZSA9IChfYSA9IHRoaXMuY3BbbW9ub21lcl0pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHRoaXMuY3BbJ290aGVyJ107XG4gICAgICAgICAgICAgICAgICAgIGcudGV4dEFsaWduID0gJ2xlZnQnO1xuICAgICAgICAgICAgICAgICAgICBnLmZvbnQgPSBmb250U3R5bGU7XG4gICAgICAgICAgICAgICAgICAgIC8vZy5maWxsUmVjdChiLmxlZnQsIGIudG9wLCBiLndpZHRoLCBiLmhlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1UbSA9IGcubWVhc3VyZVRleHQobW9ub21lcik7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIChtTS5hY3R1YWxCb3VuZGluZ0JveEFzY2VudCAhPSAwKVxuICAgICAgICAgICAgICAgICAgICAvLyAgIGNvbnNvbGUuZGVidWcoYG06ICR7bX0sIG1NLmFjdHVhbEJvdW5kaW5nQm94QXNjZW50OiAke21NLmFjdHVhbEJvdW5kaW5nQm94QXNjZW50fWApO1xuICAgICAgICAgICAgICAgICAgICBnLnNldFRyYW5zZm9ybShiLndpZHRoIC8gbVRtLndpZHRoLCAwLCAwLCBiLmhlaWdodCAvIHVwcGVyY2FzZUxldHRlckhlaWdodCwgYi5sZWZ0LCBiLnRvcCk7XG4gICAgICAgICAgICAgICAgICAgIGcuZmlsbFRleHQobW9ub21lciwgMCwgLXVwcGVyY2FzZUxldHRlckFzY2VudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuV2ViTG9nby5yZXNpZHVlc1NldCA9ICdudWNsZW90aWRlcyc7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkMlZpTFd4dloyOHVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lKM1pXSXRiRzluYnk1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96czdPenM3T3pzN1FVRkRRU3hQUVVGUExFdEJRVXNzUlVGQlJTeE5RVUZOTEdsQ1FVRnBRaXhEUVVGRE8wRkJRM1JETEU5QlFVOHNTMEZCU3l4RlFVRkZMRTFCUVUwc2FVSkJRV2xDTEVOQlFVTTdRVUZGZEVNc1QwRkJUeXhMUVVGTExFbEJRVWtzVFVGQlRTeE5RVUZOTEVOQlFVTTdRVUZKTjBJc1QwRkJUeXhGUVVGRExGVkJRVlVzUlVGQlJTeHJRa0ZCYTBJc1JVRkJReXhOUVVGTkxHVkJRV1VzUTBGQlF6dEJRVU0zUkN4UFFVRlBMRVZCUVVNc1YwRkJWeXhGUVVGRkxHMUNRVUZ0UWl4RlFVRkRMRTFCUVUwc1owSkJRV2RDTEVOQlFVTTdRVUZuUW1oRkxHbENRVUZwUWl4RFFVRkRMRk5CUVZNc1EwRkJReXhwUWtGQmFVSXNSMEZCUnl4VlFVRlRMRXRCUVdsQ08wbEJRM2hGTEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXh4UWtGQmNVSXNSVUZCUlN4RFFVRkRPMGxCUXpGRExFOUJRVThzU1VGQlNTeEZRVUZGTEVOQlFVTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NSVUZCUlN4TFFVRkxMRU5CUVVNc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0QlFVTXpSU3hEUVVGRExFTkJRVU03UVVGRlJpeEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhSUVVGUkxFZEJRVWNzVlVGQlV5eERRVUZUTEVWQlFVVXNRMEZCVXp0SlFVTjRSQ3hQUVVGUExFbEJRVWtzUTBGQlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zUzBGQlN5eEpRVUZKTEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRPMEZCUTJoR0xFTkJRVU1zUTBGQlF6dEJRVVZHTEUxQlFVMHNUMEZCVHl4dFFrRkJiVUk3U1VGVE9VSTdVVUZEUlN4SlFVRkpMRU5CUVVNc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU5tTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1NVRkJTU3hGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEzaERMRU5CUVVNN1EwRkRSanRCUVVWRUxFMUJRVTBzVDBGQlR5eFpRVUZaTzBsQlMzWkNPenRQUVVWSE8wbEJRMGdzV1VGQldTeEpRVUZaTzFGQlEzUkNMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlEycENMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzUlVGQlJTeERRVUZETzFGQlEyWXNTVUZCU1N4RFFVRkRMRkZCUVZFc1IwRkJSeXhEUVVGRExFTkJRVU03U1VGRGNFSXNRMEZCUXp0RFFVTkdPMEZCUlVRc1RVRkJUU3hQUVVGUExFOUJRVkVzVTBGQlVTeEZRVUZGTEVOQlFVTXNVVUZCVVR0SlFYbERkRU03VVVGRFJTeExRVUZMTEVWQlFVVXNRMEZCUXp0UlFYWkRWaXcwUmtGQk5FWTdVVUZEYkVZc1QwRkJSU3hIUVVFMFFpeEpRVUZKTEVOQlFVTTdVVUZSY2tNc1pVRkJWU3hIUVVGWExFVkJRVVVzUTBGQlF6dFJRVVY0UWl4WFFVRk5MRWRCUVhGQ0xFbEJRVWtzUTBGQlF6dFJRVU40UXl4dFEwRkJiVU03VVVGRE0wSXNZMEZCVXl4SFFVRnRRaXhGUVVGRkxFTkJRVU03VVVGRkwwSXNaVUZCVlN4SFFVRlhMRU5CUVVNc1EwRkJRenRSUVVOMlFpeGhRVUZSTEVkQlFWY3NRMEZCUXl4RFFVRkRPMUZCVjNKQ0xHdENRVUZoTEVkQlFXRXNSVUZCUlN4RFFVRkRPMUZCUlRkQ0xHdENRVUZoTEVkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkZNMElzWjBKQlFWY3NSMEZCVnl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVZVdlFpeEpRVUZKTEVOQlFVTXNXVUZCV1N4SFFVRkhMRXRCUVVzc1EwRkJRenRSUVVVeFFpeEpRVUZKTEVOQlFVTXNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zWlVGQlpTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUTNKRUxFbEJRVWtzUTBGQlF5eFRRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhYUVVGWExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTTdVVUZETjBNc1NVRkJTU3hEUVVGRExGTkJRVk1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRmRCUVZjc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dFJRVVU1UXl4SlFVRkpMRU5CUVVNc2NVSkJRWEZDTEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXgxUWtGQmRVSXNSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRSUVVOMlJTeEpRVUZKTEVOQlFVTXNhMEpCUVd0Q0xFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4dlFrRkJiMElzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVVnNSU3hKUVVGSkxFTkJRVU1zYVVKQlFXbENMRWRCUVVjc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eHRRa0ZCYlVJc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU5vUlN4SlFVRkpMRU5CUVVNc1pVRkJaU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNhVUpCUVdsQ0xFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdTVUZET1VRc1EwRkJRenRKUVc1Q1JDd3dSRUZCTUVRN1NVRkRNVVFzU1VGQldTeE5RVUZOTzFGQlEyaENMRTlCUVU4c1NVRkJTU3hEUVVGRExHRkJRV0VzU1VGQlNTeEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zVjBGQlZ5eEhRVUZITEVsQlFVa3NRMEZCUXl4aFFVRmhMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEYUVjc1EwRkJRenRKUVd0Q1N5eEpRVUZKT3p0WlFVTlNMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJRenRaUVVOd1F5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhQUVVGUExFZEJRVWNzVFVGQlRTeERRVUZETzFsQlJYQkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzUlVGQlJTeERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRPMWxCUXpGQ0xFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1IwRkJSeXhOUVVGTkxFTkJRVU03V1VGRmFrTXNOa05CUVRaRE8xbEJRemRETEhsRFFVRjVRenRaUVVONlF5d3dRMEZCTUVNN1dVRkZNVU1zYzBSQlFYTkVPMWxCUlhSRUxFMUJRVTBzVlVGQlZTeEhRVUZITEVOQlFVTXNRMEZCVnl4RlFVRjFSQ3hGUVVGRk8yZENRVU4wUml4TlFVRk5MRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eERRVUZETzJkQ1FVTnNSQ3hOUVVGTkxGRkJRVkVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8yZENRVVYwUXl4SlFVRkpMRkZCUVZFc1MwRkJTeXhMUVVGTExFTkJRVU03YjBKQlEzSkNMRTlCUVU4c1EwRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMmRDUVVVMVFpeE5RVUZOTEU5QlFVOHNSMEZCZFVJc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNTVUZCU1N4RFFVRkRPM0ZDUVVNelJDeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTXpSQ3hKUVVGSkxFOUJRVThzUzBGQlN5eFRRVUZUTzI5Q1FVTjJRaXhQUVVGUExFTkJRVU1zU1VGQlNTeEZRVUZGTEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRuUWtGRk5VSXNUMEZCVHl4RFFVRkRMRWxCUVVrc1JVRkJSU3hQUVVGUExFVkJRVVVzVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRMnBFTEVOQlFVTXNRMEZCUXp0WlFVVkdMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zVjBGQlZ5eEhRVUZITEVOQlFVTXNRMEZCWVN4RlFVRkZMRVZCUVVVN1dVRkZOVU1zUTBGQlF5eERRVUZETzFsQlJVWXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJZU3hKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEZkQlFWY3NRMEZCUXl4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRV0VzUlVGQlJTeEZRVUZGTzJkQ1FVTXZSU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMDdiMEpCUTJRc1QwRkJUenRuUWtGRlZDeE5RVUZOTEVsQlFVa3NSMEZCUnl4RFFVRmxMRU5CUVVNN1owSkJRemRDTEUxQlFVMHNRMEZCUXl4SlFVRkpMRVZCUVVVc1QwRkJUeXhEUVVGRExFZEJRVWNzVlVGQlZTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRmVFVXNTVUZCU1N4SlFVRkpMRU5CUVVNc1UwRkJVeXhKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVsQlFVa3NUMEZCVHl4RlFVRkZPMjlDUVVNMVF5eEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRMRmxCUVZrc1EwRkJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RlFVRkZMRVZCUVVVN2QwSkJReTlETEUxQlFVMHNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPM2RDUVVOdVF5eE5RVUZOTEVsQlFVa3NSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTTdkMEpCUTNwRUxFOUJRVThzU1VGQlNTeExRVUZMTEU5QlFVOHNRMEZCUXp0dlFrRkRNVUlzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNN2FVSkJRemxDTzNGQ1FVRk5PMjlDUVVOTUxFVkJRVVVzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNN2FVSkJRMjVDTzFsQlEwZ3NRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkZTQ3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZoTEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1YwRkJWeXhEUVVGRExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTXNRMEZCWVN4RlFVRkZMRVZCUVVVN1owSkJReTlGTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXp0dlFrRkRMMElzVDBGQlR6dG5Ra0ZGVkN4TlFVRk5MRWxCUVVrc1IwRkJSeXhEUVVGbExFTkJRVU03WjBKQlF6ZENMRTFCUVUwc1EwRkJReXhKUVVGSkxFVkJRVVVzVDBGQlR5eERRVUZETEVkQlFVY3NWVUZCVlN4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZGZUVVc2RVUkJRWFZFTzJkQ1FVTjJSQ3hKUVVGSkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTFCUVUwc1NVRkJTU3hQUVVGUExFVkJRVVU3YjBKQlF6VkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hGUVVGRk8zZENRVU55UXl4TlFVRk5MRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenQzUWtGRGJrTXNUVUZCVFN4SlFVRkpMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRPM2RDUVVONlJDeFBRVUZQTEVsQlFVa3NTMEZCU3l4UFFVRlBMRU5CUVVNN2IwSkJRekZDTEVOQlFVTXNRMEZCUXl4RFFVRkRPMmxDUVVOS08xbEJRMGdzUTBGQlF5eERRVUZETEVOQlFVTTdXVUZGU0N4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1dVRkRMMElzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzFsQlF6bENMREpEUVVFeVF6dFpRVVV6UXl4RlFVRkZMRU5CUVVNc1lVRkJZU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExHbENRVUZwUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlJYcEZMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdVVUZEY0VJc1EwRkJRenRMUVVGQk8wbEJSVVFzYVVKQlFXbENMRU5CUVVNc1NVRkJVenRSUVVONlFpeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwN1dVRkRaQ3hQUVVGUE8xRkJSVlFzTUVSQlFUQkVPMUZCUlRGRUxFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUlVGQlJTeEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFVkJRVVVzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRekZHTEhOR1FVRnpSanRSUVVOMFJpd3JSRUZCSzBRN1VVRkRMMFFzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRWRCUVVjc1RVRkJUU3hEUVVGRE8xRkJRelZDTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFMUJRVTBzUjBGQlJ5eEhRVUZITEUxQlFVMHNTVUZCU1N4RFFVRkRPMUZCUlhwRExHbEVRVUZwUkR0UlFVTnFSQ3h4UmtGQmNVWTdVVUZEY2tZc2FVWkJRV2xHTzFGQlJXcEdMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdTVUZEY0VJc1EwRkJRenRKUVVWRU8wOUJRMGM3U1VGRFNDeFpRVUZaTzFGQlExWXNTVUZCU1N4SlFVRkpMRU5CUVVNc1UwRkJVeXhGUVVGRk8xbEJRMnhDTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMR3RDUVVGclFpeERRVUZETEVOQlFVTTdXVUZETVVRc1NVRkJTU3hKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTzJkQ1FVTm1MRWxCUVVrc1UwRkJVeXhIUVVGSExFTkJRVU1zUTBGQlF6dG5Ra0ZEYkVJc1MwRkJTeXhOUVVGTkxGRkJRVkVzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRlZCUVZVN2IwSkJRek5ETEZOQlFWTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExGTkJRVk1zUlVGQlJTeFJRVUZSTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1owSkJSVzVFTERCRVFVRXdSRHRuUWtGRE1VUXNUVUZCVFN4blFrRkJaMElzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTFCUVUwc1EwRkJReXhsUVVGbExFTkJRVU1zUTBGQlF6dG5Ra0ZETjBRc2EwUkJRV3RFTzJkQ1FVTnNSQ3hKUVVGSkxFTkJRVU1zWVVGQllTeEhRVUZITEdkQ1FVRm5RaXhEUVVGRExFTkJRVU1zUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVU42Uml4RFFVRkRMRWRCUVVjc1MwRkJTeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zU1VGQlNTeEZRVUZGTEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETzJkQ1FVVTFSQ3hKUVVGSkxFTkJRVU1zWVVGQllTeEhRVUZITEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRU5CUVVNN2IwSkJRMnBGTEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc1QwRkJUeXhEUVVGRExFbEJRVWtzUTBGQlF5eHBRa0ZCYVVJc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUTNwRUxFbEJRVWtzUTBGQlF5eFhRVUZYTEVkQlFVY3NTVUZCU1N4RFFVRkRMR1ZCUVdVc1NVRkJTU3hKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEVOQlFVTTdiMEpCUXpkRUxFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhsUVVGbExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4VFFVRlRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlJYSkZMSFZDUVVGMVFqdG5Ra0ZEZGtJc1VVRkJVU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEU5QlFVOHNSVUZCUlR0dlFrRkROMElzUzBGQlN5eFZRVUZWTEVOQlFVTXNkMEpCUVhkQ08zZENRVU4wUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hIUVVGSExHdENRVUZyUWl4RFFVRkRMRlZCUVZVc1EwRkJRenQzUWtGRGVFTXNUVUZCVFR0dlFrRkRVaXhMUVVGTExGZEJRVmNzUTBGQlF5eDNRa0ZCZDBJN2QwSkJRM1pETEVsQlFVa3NRMEZCUXl4RlFVRkZMRWRCUVVjc2JVSkJRVzFDTEVOQlFVTXNXVUZCV1N4RFFVRkRPM2RDUVVNelF5eE5RVUZOTzJsQ1FVTlFPMmRDUVVORUxEQkNRVUV3UWp0aFFVTXpRanRwUWtGQlRUdG5Ra0ZEVEN4SlFVRkpMRU5CUVVNc1JVRkJSU3hIUVVGSExFbEJRVWtzUTBGQlF6dG5Ra0ZEWml4SlFVRkpMRU5CUVVNc1lVRkJZU3hIUVVGSExFVkJRVVVzUTBGQlF6dG5Ra0ZEZUVJc1NVRkJTU3hEUVVGRExHRkJRV0VzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRlRUlzU1VGQlNTeERRVUZETEZkQlFWY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRoUVVOMlFqdFRRVU5HTzFGQlEwUXNTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRE8wbEJRMmhDTEVOQlFVTTdTVUZGUkN4cFFrRkJhVUlzUTBGQlF5eFJRVUZ4UWp0UlFVTnlReXhMUVVGTExFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03VVVGRmJFTXNVVUZCVVN4UlFVRlJMRU5CUVVNc1NVRkJTU3hGUVVGRk8xbEJRM1pDTEV0QlFVc3NkVUpCUVhWQ08yZENRVU14UWl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU03WjBKQlEyUXNUVUZCVFR0WlFVTlNMRXRCUVVzc2IwSkJRVzlDTzJkQ1FVTjJRaXhKUVVGSkxFTkJRVU1zV1VGQldTeEZRVUZGTEVOQlFVTTdaMEpCUTNCQ0xFMUJRVTA3V1VGRFVpeExRVUZMTEcxQ1FVRnRRanRuUWtGRGRFSXNTVUZCU1N4RFFVRkRMRmxCUVZrc1JVRkJSU3hEUVVGRE8yZENRVU53UWl4TlFVRk5PMWxCUTFJc1MwRkJTeXhwUWtGQmFVSTdaMEpCUTNCQ0xFbEJRVWtzUTBGQlF5eFpRVUZaTEVWQlFVVXNRMEZCUXp0blFrRkRjRUlzVFVGQlRUdFpRVU5TTEV0QlFVc3NaVUZCWlR0blFrRkRiRUlzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRuUWtGRGJFSXNUVUZCVFR0WlFVTlNMRXRCUVVzc1YwRkJWenRuUWtGRFpDeEpRVUZKTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdaMEpCUXpkQ0xFMUJRVTA3V1VGRFVpeExRVUZMTEZkQlFWYzdaMEpCUTJRc1NVRkJTU3hEUVVGRExHbENRVUZwUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8yZENRVU0zUWl4TlFVRk5PMU5CUTFBN1NVRkRTQ3hEUVVGRE8wbEJSVVFzWlVGQlpUdFJRVU5pTEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZCUVVVc1EwRkJRenRSUVVWd1FpeEpRVUZKTEVsQlFVa3NRMEZCUXl4VFFVRlRMRXRCUVVzc1MwRkJTeXhEUVVGRExFVkJRVVU3V1VGRE4wSXNORUpCUVRSQ08xbEJRelZDTEdsR1FVRnBSanRaUVVOcVJpeDVSa0ZCZVVZN1dVRkRla1lzZDBWQlFYZEZPMWxCUTNoRkxDdEZRVUVyUlR0WlFVTXZSU3dyUlVGQkswVTdXVUZETDBVc09FVkJRVGhGTzFsQlJUbEZMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zVTBGQlV5eERRVUZETEZOQlFWTXNRMEZCUXl4VFFVRlRMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhEUVVGRE8xbEJRMjVGTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1RVRkJUU3hEUVVGRExGTkJRVk1zUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RFFVRkRPMU5CUTJwRk8wbEJRMGdzUTBGQlF6dEpRVVZUTEdGQlFXRXNRMEZCUXl4aFFVRmhMRWRCUVVjc1IwRkJSenRSUVVONlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4eFFrRkJjVUk3V1VGRE5VSXNUMEZCVHl4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXp0UlFVVTNSQ3hQUVVGUExFVkJRVVVzUTBGQlF6dEpRVU5hTEVOQlFVTTdTVUZGVXl4VlFVRlZPMUZCUTJ4Q0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRWxCUVVrc1NVRkJTU3hEUVVGRExHRkJRV0VzUzBGQlN5eERRVUZETEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1YwRkJWeXhMUVVGTExFTkJRVU1zUTBGQlF6dFpRVU42Unl4UFFVRlBPMUZCUlZRc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNSMEZCUnl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRE8xRkJReTlETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1MwRkJTeXhIUVVGSExFdEJRVXNzUTBGQlF6dFJRVU14UWl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVkQlFVY3NSMEZCUnl4TFFVRkxMRWxCUVVrc1EwRkJRenRSUVVOMlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRXRCUVVzc1NVRkJTU3hEUVVGRE8xRkJSV3BFTEVsQlFVa3NRMEZCUXl4VFFVRlRMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMUZCUTNoRExFdEJRVXNzU1VGQlNTeEpRVUZKTEVkQlFVY3NRMEZCUXl4RlFVRkZMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVsQlFVa3NSVUZCUlN4RlFVRkZPMWxCUXpkRExFMUJRVTBzVDBGQlR5eEhRVUZYTEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNc1NVRkJTU3hEUVVGRExHRkJRV0VzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXp0WlFVTjBSU3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1dVRkJXU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzFOQlEyeEVPMUZCUlVRc2FVWkJRV2xHTzFGQlEycEdMRTFCUVUwc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMR3RDUVVGclFpeEZRVUZGTEVOQlFVTTdVVUZETTBRc01rZEJRVEpITzFGQlF6TkhMR2RFUVVGblJEdFJRVVZvUkN4SlFVRkpMRU5CUVVNc1ZVRkJWU3hIUVVGSExFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZEYWtNc1NVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZGYkVJc1MwRkJTeXhOUVVGTkxFTkJRVU1zU1VGQlNTeFBRVUZQTEVWQlFVVTdXVUZEZGtJc1NVRkJTU3hEUVVGRExFZEJRVzFDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVVTNReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEZRVUZGTzJkQ1FVTk9MRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zWVVGQllTeEZRVUZGTEVOQlFVTTdaMEpCUTNwQ0xFVkJRVVVzU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXp0aFFVTnFRanRwUWtGQlRUdG5Ra0ZEVEN4TFFVRkxMRWxCUVVrc1NVRkJTU3hIUVVGSExFTkJRVU1zUlVGQlJTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hKUVVGSkxFVkJRVVVzUlVGQlJUdHZRa0ZETjBNc1RVRkJUU3hOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU03YjBKQlEzcERMRTFCUVUwc1EwRkJReXhIUVVGWExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8yOUNRVU12UXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzVFVGQlRTeERRVUZETzNkQ1FVTm9RaXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4dFFrRkJiVUlzUlVGQlJTeERRVUZETzI5Q1FVVjRReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNN2FVSkJRMjVDTzJGQlEwWTdVMEZEUmp0UlFVVkVMRFJDUVVFMFFqdFJRVU0xUWl4TFFVRkxMRWxCUVVrc1NVRkJTU3hIUVVGSExFTkJRVU1zUlVGQlJTeEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hKUVVGSkxFVkJRVVVzUlVGQlJUdFpRVU0zUXl4NVEwRkJlVU03V1VGRmVrTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eFJRVUZSTEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTJ4RExFdEJRVXNzVFVGQlRTeERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTzJkQ1FVTjJReXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRkZCUVZFc1NVRkJTU3hKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTTdVMEZEZGtVN1VVRkRSQ3haUVVGWk8xRkJSVm9zVFVGQlRTeFRRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEZWQlFWVXNRMEZCUXp0UlFVTjJSQ3hwUlVGQmFVVTdVVUZGYWtVc01FSkJRVEJDTzFGQlF6RkNMRXRCUVVzc1NVRkJTU3hKUVVGSkxFZEJRVWNzUTBGQlF5eEZRVUZGTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFbEJRVWtzUlVGQlJTeEZRVUZGTzFsQlF6ZERMRTFCUVUwc1NVRkJTU3hIUVVGNVF5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF6dFpRVU0zUlN4TlFVRk5MRkZCUVZFc1IwRkJSeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRkZCUVZFc1EwRkJRenRaUVVVdlF5eEpRVUZKTEVOQlFVTXNSMEZCVnl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRE8xbEJSV2hETEUxQlFVMHNUMEZCVHl4SFFVRkhMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzJkQ1FVTnFSQ3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eExRVUZMTEVkQlFVYzdiMEpCUXpsQ0xFOUJRVThzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRPM0ZDUVVNMVFpeEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRWRCUVVjN2IwSkJRMjVETEU5QlFVOHNRMEZCUXl4RFFVRkRPM0ZDUVVOT0xFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRWRCUVVjN2IwSkJRMjVDTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNN2NVSkJRMUFzYjBKQlFXOUNPMjlDUVVOMlFpeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTJRc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRFNDeExRVUZMTEUxQlFVMHNTMEZCU3l4SlFVRkpMRTlCUVU4c1JVRkJSVHRuUWtGRE0wSXNUVUZCVFN4TlFVRk5MRWRCUVhkQ0xFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkROME1zT0VKQlFUaENPMmRDUVVNNVFpeE5RVUZOTEVOQlFVTXNSMEZCVnl4VFFVRlRMRWRCUVVjc1RVRkJUU3hEUVVGRExFdEJRVXNzUjBGQlJ5eFJRVUZSTEVOQlFVTTdaMEpCUlhSRUxFMUJRVTBzUTBGQlF5eE5RVUZOTEVkQlFVY3NTVUZCU1N4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eEpRVUZKTEVOQlFVTXNZVUZCWVN4RlFVRkZMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zWVVGQllTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVOcVJpeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMkZCUTFJN1UwRkRSanRSUVVORUxGbEJRVms3U1VGRFpDeERRVUZETzBsQlJVUXNNa05CUVRKRE8wbEJRek5ETEUxQlFVMHNRMEZCUXl4TlFVRk5MRWRCUVVjc1NVRkJTVHM3VVVGRGJFSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRk8xbEJRMmhDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVWQlFVVTdaMEpCUXpOQ0xFbEJRVWtzUTBGQlF5eFBRVUZSTEVOQlFVTXNVMEZCVXl4SFFVRkhMSEZEUVVGeFF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRTlCUVU4c1MwRkJTeXhEUVVGRE8yZENRVU40Uml4SlFVRkpMRU5CUVVNc1QwRkJVU3hEUVVGRExFdEJRVXNzUTBGQlF5eFBRVUZQTEVkQlFVY3NSVUZCUlN4RFFVRkRPMkZCUTJ4RE8ybENRVUZOTzJkQ1FVTk1MRWxCUVVrc1EwRkJReXhQUVVGUkxFTkJRVU1zUzBGQlN5eERRVUZETEU5QlFVOHNSMEZCUnl4TlFVRk5MRU5CUVVNN1lVRkRkRU03VTBGRFJqdFJRVVZFTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhUUVVGVExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlR0WlFVTTNSQ3hKUVVGSkxFTkJRVU1zWVVGQllTeExRVUZMTEVOQlFVTXNRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhYUVVGWExFdEJRVXNzUTBGQlF5eERRVUZETzFsQlEzQkVMRTlCUVU4N1VVRkZWQ3hOUVVGTkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRlZCUVZVc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVU4yUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRaUVVGRkxFOUJRVTg3VVVGRlppeEpRVUZKTEUxQlFVMDdXVUZEVWl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hGUVVGRkxFTkJRVU03VVVGRmNFSXNhME5CUVd0RE8xRkJRMnhETEcxRFFVRnRRenRSUVVOdVF5d3JRa0ZCSzBJN1VVRkZMMElzUTBGQlF5eERRVUZETEdOQlFXTXNSVUZCUlN4RFFVRkRPMUZCUTI1Q0xESkVRVUV5UkR0UlFVTXpSQ3hEUVVGRExFTkJRVU1zVTBGQlV5eEhRVUZITEU5QlFVOHNRMEZCUXp0UlFVTjBRaXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVWQlFVVXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVU40UkN4RFFVRkRMRU5CUVVNc1dVRkJXU3hIUVVGSExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTTdVVUZGYmtNc05FSkJRVFJDTzFGQlF6VkNMRU5CUVVNc1EwRkJReXhqUVVGakxFVkJRVVVzUTBGQlF6dFJRVU51UWl4RFFVRkRMRU5CUVVNc1UwRkJVeXhIUVVGSExFOUJRVThzUTBGQlF6dFJRVU4wUWl4RFFVRkRMRU5CUVVNc1UwRkJVeXhIUVVGSExGRkJRVkVzUTBGQlF6dFJRVU4yUWl4RFFVRkRMRU5CUVVNc1NVRkJTU3hIUVVGSExIVkRRVUYxUXl4RFFVRkRPMUZCUTJwRUxFMUJRVTBzWlVGQlpTeEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEZkQlFWY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTm9SeXhOUVVGTkxFMUJRVTBzUjBGQlJ5eGxRVUZsTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1lVRkJZU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEdGQlFXRXNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhsUVVGbExFTkJRVU03VVVGRk0wY3NTMEZCU3l4SlFVRkpMRWxCUVVrc1IwRkJSeXhEUVVGRExFVkJRVVVzU1VGQlNTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1NVRkJTU3hGUVVGRkxFVkJRVVU3V1VGRE4wTXNUVUZCVFN4SFFVRkhMRWRCUVdsQ0xFbEJRVWtzUTBGQlF5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1dVRkRMME1zUTBGQlF5eERRVUZETEdOQlFXTXNSVUZCUlN4RFFVRkRPMWxCUTI1Q0xFTkJRVU1zUTBGQlF5eFpRVUZaTEVOQlExb3NUVUZCVFN4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVU5tTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1lVRkJZU3hIUVVGSExFbEJRVWtzUTBGQlF5eGhRVUZoTEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM3BFTEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNN1UwRkROVUk3VVVGRFJDd3JRa0ZCSzBJN1VVRkZMMElzUzBGQlN5eEpRVUZKTEVsQlFVa3NSMEZCUnl4RFFVRkRMRVZCUVVVc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNTVUZCU1N4RlFVRkZMRVZCUVVVN1dVRkROME1zUzBGQlN5eE5RVUZOTEVOQlFVTXNUMEZCVHl4RlFVRkZMRTFCUVUwc1EwRkJReXhKUVVGSkxFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlR0blFrRkRla1VzU1VGQlNTeFBRVUZQTEV0QlFVc3NSMEZCUnl4RlFVRkZPMjlDUVVOdVFpeE5RVUZOTEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRE8yOUNRVVY0UWl4TlFVRk5MRk5CUVZNc1IwRkJSeXgxUTBGQmRVTXNRMEZCUXp0dlFrRkRNVVFzTUVSQlFUQkVPMjlDUVVNeFJDeE5RVUZOTEhGQ1FVRnhRaXhIUVVGSExFbEJRVWtzUTBGQlF6dHZRa0ZEYmtNc1RVRkJUU3h4UWtGQmNVSXNSMEZCUnl4SlFVRkpMRU5CUVVNN2IwSkJSVzVETEVOQlFVTXNRMEZCUXl4alFVRmpMRVZCUVVVc1EwRkJRenR2UWtGRGJrSXNRMEZCUXl4RFFVRkRMRmRCUVZjc1IwRkJSeXhYUVVGWExFTkJRVU03YjBKQlF6VkNMRU5CUVVNc1EwRkJReXhUUVVGVExFZEJRVWNzUTBGQlF5eERRVUZETzI5Q1FVTm9RaXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1EwRkJReXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dHZRa0ZEZWtNc1EwRkJReXhEUVVGRExGTkJRVk1zUjBGQlJ5eE5RVUZCTEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExHMURRVUZKTEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03YjBKQlEyNUVMRU5CUVVNc1EwRkJReXhUUVVGVExFZEJRVWNzVFVGQlRTeERRVUZETzI5Q1FVTnlRaXhEUVVGRExFTkJRVU1zU1VGQlNTeEhRVUZITEZOQlFWTXNRMEZCUXp0dlFrRkRia0lzSzBOQlFTdERPMjlDUVVNdlF5eE5RVUZOTEVkQlFVY3NSMEZCWjBJc1EwRkJReXhEUVVGRExGZEJRVmNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0dlFrRkZhRVFzZFVOQlFYVkRPMjlDUVVOMlF5eDVSa0ZCZVVZN2IwSkJSWHBHTEVOQlFVTXNRMEZCUXl4WlFVRlpMRU5CUTFvc1EwRkJReXhEUVVGRExFdEJRVXNzUjBGQlJ5eEhRVUZITEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEUxQlFVMHNSMEZCUnl4eFFrRkJjVUlzUlVGRE0wUXNRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdiMEpCUTJwQ0xFTkJRVU1zUTBGQlF5eFJRVUZSTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExIRkNRVUZ4UWl4RFFVRkRMRU5CUVVNN2FVSkJRMmhFTzJGQlEwWTdVMEZEUmp0SlFVTklMRU5CUVVNN08wRkJkRnBoTEcxQ1FVRlhMRWRCUVVjc1lVRkJZU3hEUVVGRElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElDb2dZWE1nWjNKdmF5Qm1jbTl0SUNka1lYUmhaM0p2YXkxaGNHa3ZaM0p2YXljN1hHNXBiWEJ2Y25RZ0tpQmhjeUIxYVNCbWNtOXRJQ2RrWVhSaFozSnZheTFoY0drdmRXa25PMXh1YVcxd2IzSjBJQ29nWVhNZ1JFY2dabkp2YlNBblpHRjBZV2R5YjJzdFlYQnBMMlJuSnp0Y2JseHVhVzF3YjNKMElDb2dZWE1nY25ocWN5Qm1jbTl0SUNkeWVHcHpKenRjYmx4dWFXMXdiM0owSUh0VGRISnBibWRFYVdOMGFXOXVZWEo1ZlNCbWNtOXRJQ2RBWkdGMFlXZHliMnN0YkdsaWNtRnlhV1Z6TDNWMGFXeHpMM055WXk5MGVYQmxMV1JsWTJ4aGNtRjBhVzl1Y3ljN1hHNWNibWx0Y0c5eWRDQjdRVzFwYm05aFkybGtjeXdnUVcxcGJtOWhZMmxrYzFCaGJHVjBkR1Z6ZlNCbWNtOXRJQ2N1TGk5aGJXbHViMkZqYVdSekp6dGNibWx0Y0c5eWRDQjdUblZqYkdWdmRHbGtaWE1zSUU1MVkyeGxiM1JwWkdWelVHRnNaWFIwWlhOOUlHWnliMjBnSnk0dUwyNTFZMnhsYjNScFpHVnpKenRjYmx4dUx5OGdWWE5wYm1jZ1kyOXNiM0lnYzJOb1pXMWxjeUJtY205dElHTm9aVzB0Y0dGc1pYUjBaVnh1WEc1a1pXTnNZWEpsSUcxdlpIVnNaU0FuWkdGMFlXZHliMnN0WVhCcEwzTnlZeTluY21sa0p5QjdYRzRnSUdsdWRHVnlabUZqWlNCU1pXTjBJSHRjYmlBZ0lDQmpiMjUwWVdsdWN5aDRPaUJ1ZFcxaVpYSXNJSGs2SUc1MWJXSmxjaWs2SUdKdmIyeGxZVzQ3WEc0Z0lIMWNibjFjYmx4dVpHVmpiR0Z5WlNCbmJHOWlZV3dnZTF4dUlDQnBiblJsY21aaFkyVWdTRlJOVEVOaGJuWmhjMFZzWlcxbGJuUWdlMXh1SUNBZ0lHZGxkRU4xY25OdmNsQnZjMmwwYVc5dUtHVjJaVzUwT2lCTmIzVnpaVVYyWlc1MEtUb2dSRWN1VUc5cGJuUTdYRzRnSUgxY2JuMWNibHh1U0ZSTlRFTmhiblpoYzBWc1pXMWxiblF1Y0hKdmRHOTBlWEJsTG1kbGRFTjFjbk52Y2xCdmMybDBhVzl1SUQwZ1puVnVZM1JwYjI0b1pYWmxiblE2SUUxdmRYTmxSWFpsYm5RcE9pQkVSeTVRYjJsdWRDQjdYRzRnSUdOdmJuTjBJSEpsWTNRZ1BTQjBhR2x6TG1kbGRFSnZkVzVrYVc1blEyeHBaVzUwVW1WamRDZ3BPMXh1SUNCeVpYUjFjbTRnYm1WM0lFUkhMbEJ2YVc1MEtHVjJaVzUwTG1Oc2FXVnVkRmdnTFNCeVpXTjBMbXhsWm5Rc0lHVjJaVzUwTG1Oc2FXVnVkRmtnTFNCeVpXTjBMblJ2Y0NrN1hHNTlPMXh1WEc1RVJ5NVNaV04wTG5CeWIzUnZkSGx3WlM1amIyNTBZV2x1Y3lBOUlHWjFibU4wYVc5dUtIZzZJRzUxYldKbGNpd2dlVG9nYm5WdFltVnlLVG9nWW05dmJHVmhiaUI3WEc0Z0lISmxkSFZ5YmlCMGFHbHpMbXhsWm5RZ1BEMGdlQ0FtSmlCNElEdzlJSFJvYVhNdWNtbG5hSFFnSmlZZ2RHaHBjeTUwYjNBZ1BEMGdlU0FtSmlCNUlEdzlJSFJvYVhNdVltOTBkRzl0TzF4dWZUdGNibHh1Wlhod2IzSjBJR05zWVhOeklGQnZjMmwwYVc5dVRXOXViMjFsY2tsdVptOGdlMXh1SUNBdktpb2dVMlZ4ZFdWdVkyVnpJR052ZFc1MElIZHBkR2dnYlc5dWIyMWxjaUJwYmlCd2IzTnBkR2x2Ymx4dUlDQWdLaTljYmlBZ1kyOTFiblE2SUc1MWJXSmxjanRjYmx4dUlDQXZLaW9nVW1WdFpXMWlaWElnYzJOeVpXVnVJR052YjNKa2N5QnlaV04wWEc0Z0lDQXFMMXh1SUNCaWIzVnVaSE02SUVSSExsSmxZM1E3WEc1Y2JpQWdZMjl1YzNSeWRXTjBiM0lvS1NCN1hHNGdJQ0FnZEdocGN5NWpiM1Z1ZENBOUlEQTdYRzRnSUNBZ2RHaHBjeTVpYjNWdVpITWdQU0J1WlhjZ1JFY3VVbVZqZENnd0xDQXdMQ0F3TENBd0tUdGNiaUFnZlZ4dWZWeHVYRzVsZUhCdmNuUWdZMnhoYzNNZ1VHOXphWFJwYjI1SmJtWnZJSHRjYmlBZ2NIVmliR2xqSUhKbFlXUnZibXg1SUc1aGJXVTZJSE4wY21sdVp6dGNiaUFnWm5KbGNUb2dleUJiYlRvZ2MzUnlhVzVuWFRvZ1VHOXphWFJwYjI1TmIyNXZiV1Z5U1c1bWJ5QjlPMXh1SUNCeWIzZERiM1Z1ZERvZ2JuVnRZbVZ5TzF4dVhHNGdJQzhxS2lCbWNtVnhJRDBnZTMwc0lISnZkME52ZFc1MElEMGdNRnh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JtRnRaU0JPWVcxbElHOW1JSEJ2YzJsMGFXOXVJQ2duTVRFeFFTY3NJQ2N4TVRFdU1TY3NJR1YwWXlsY2JpQWdJQ292WEc0Z0lHTnZibk4wY25WamRHOXlLRzVoYldVNklITjBjbWx1WnlrZ2UxeHVJQ0FnSUhSb2FYTXVibUZ0WlNBOUlHNWhiV1U3WEc0Z0lDQWdkR2hwY3k1bWNtVnhJRDBnZTMwN1hHNGdJQ0FnZEdocGN5NXliM2REYjNWdWRDQTlJREE3WEc0Z0lIMWNibjFjYmx4dVpYaHdiM0owSUdOc1lYTnpJRmRsWWt4dloyOGdaWGgwWlc1a2N5QkVSeTVLYzFacFpYZGxjaUI3WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nY21WemFXUjFaWE5UWlhRZ1BTQW5iblZqYkdWdmRHbGtaWE1uTzF4dVhHNGdJQzh2SUhCeWFYWmhkR1VnY21WaFpHOXViSGtnWTI5c2IzSlRZMmhsYldVNklFTnZiRzl5VTJOb1pXMWxJRDBnUTI5c2IzSlRZMmhsYldWelcwNTFZMnhsYjNScFpHVnpWMlZpVEc5bmJ5NXlaWE5wWkhWbGMxTmxkRjA3WEc0Z0lIQnliM1JsWTNSbFpDQmpjRG9nVTNSeWFXNW5SR2xqZEdsdmJtRnllU0I4SUc1MWJHd2dQU0J1ZFd4c08xeHVYRzRnSUM4dklIQnlhWFpoZEdVZ2NtVmhaRzl1YkhrZ2FHOXpkRG9nU0ZSTlRFUnBka1ZzWlcxbGJuUTdYRzRnSUhCeWFYWmhkR1VnYlhOblNHOXpkRDg2SUVoVVRVeEZiR1Z0Wlc1ME8xeHVJQ0J3Y21sMllYUmxJR05oYm5aaGN6ODZJRWhVVFV4RFlXNTJZWE5GYkdWdFpXNTBPMXh1SUNCd2NtbDJZWFJsSUhOc2FXUmxjajg2SUVSSExsSmhibWRsVTJ4cFpHVnlPMXh1SUNCd2NtbDJZWFJsSUhSbGVIUkNZWE5sYkdsdVpUb2dRMkZ1ZG1GelZHVjRkRUpoYzJWc2FXNWxPMXh1WEc0Z0lIQnlhWFpoZEdVZ1lYaHBjMGhsYVdkb2REb2diblZ0WW1WeUlEMGdNVEk3WEc1Y2JpQWdjSEpwZG1GMFpTQnpaWEZEYjJ3NklFUkhMa052YkhWdGJpQjhJRzUxYkd3Z1BTQnVkV3hzTzF4dUlDQXZMeUJ3Y21sMllYUmxJRzFoZUV4bGJtZDBhRG9nYm5WdFltVnlJRDBnTVRBd08xeHVJQ0J3Y21sMllYUmxJSEJ2YzJsMGFXOXVjem9nVUc5emFYUnBiMjVKYm1adlcxMGdQU0JiWFR0Y2JseHVJQ0J3Y21sMllYUmxJSEp2ZDNOTllYTnJaV1E2SUc1MWJXSmxjaUE5SURBN1hHNGdJSEJ5YVhaaGRHVWdjbTkzYzA1MWJHdzZJRzUxYldKbGNpQTlJREE3WEc1Y2JpQWdMeThnVm1sbGQyVnlKM01nY0hKdmNHVnlkR2xsY3lBb2JHbHJaV3g1SUhSb1pYa2djMmh2ZFd4a0lHSmxJSEIxWW14cFl5QnpieUIwYUdGMElIUm9aWGtnWTJGdUlHSmxJSE5sZENCdmRYUnphV1JsS1Z4dUlDQndkV0pzYVdNZ2NHOXphWFJwYjI1WGFXUjBhRG9nYm5WdFltVnlPMXh1SUNCd2RXSnNhV01nYldsdVNHVnBaMmgwT2lCdWRXMWlaWEk3WEc0Z0lIQjFZbXhwWXlCdFlYaElaV2xuYUhRNklHNTFiV0psY2p0Y2JpQWdjSFZpYkdsaklHTnZibk5wWkdWeVRuVnNiRk5sY1hWbGJtTmxjem9nWW05dmJHVmhianRjYmlBZ2NIVmliR2xqSUhObGNYVmxibU5sUTI5c2RXMXVUbUZ0WlRvZ2MzUnlhVzVuTzF4dUlDQndkV0pzYVdNZ2MzUmhjblJRYjNOcGRHbHZiazVoYldVNklITjBjbWx1Wnp0Y2JpQWdjSFZpYkdsaklHVnVaRkJ2YzJsMGFXOXVUbUZ0WlRvZ2MzUnlhVzVuTzF4dVhHNGdJSEJ5YVhaaGRHVWdjRzl6YVhScGIyNU9ZVzFsY3pvZ2MzUnlhVzVuVzEwZ1BTQmJYVHRjYmx4dUlDQndjbWwyWVhSbElITjBZWEowVUc5emFYUnBiMjQ2SUc1MWJXSmxjaUE5SUMweE8xeHVYRzRnSUhCeWFYWmhkR1VnWlc1a1VHOXphWFJwYjI0NklHNTFiV0psY2lBOUlDMHhPMXh1WEc0Z0lDOHFLaUJHYjNJZ2MzUmhjblJRYjNOcGRHbHZiaUJsY1hWaGJITWdkRzhnWlc1a1VHOXphWFJwYjI0Z1RHVnVaM1JvSUdseklERWdLaTljYmlBZ2NISnBkbUYwWlNCblpYUWdUR1Z1WjNSb0tDazZJRzUxYldKbGNpQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVjM1JoY25SUWIzTnBkR2x2YmlBOFBTQjBhR2x6TG1WdVpGQnZjMmwwYVc5dUlEOGdkR2hwY3k1bGJtUlFiM05wZEdsdmJpQXRJSFJvYVhNdWMzUmhjblJRYjNOcGRHbHZiaUFySURFZ09pQXdPMXh1SUNCOVhHNWNiaUFnWTI5dWMzUnlkV04wYjNJb0tTQjdYRzRnSUNBZ2MzVndaWElvS1R0Y2JseHVJQ0FnSUhSb2FYTXVkR1Y0ZEVKaGMyVnNhVzVsSUQwZ0ozUnZjQ2M3WEc1Y2JpQWdJQ0IwYUdsekxuQnZjMmwwYVc5dVYybGtkR2dnUFNCMGFHbHpMbVpzYjJGMEtDZHdiM05wZEdsdmJsZHBaSFJvSnl3Z01UWXBPMXh1SUNBZ0lIUm9hWE11YldsdVNHVnBaMmgwSUQwZ2RHaHBjeTVtYkc5aGRDZ25iV2x1U0dWcFoyaDBKeXdnTlRBcE8xeHVJQ0FnSUhSb2FYTXViV0Y0U0dWcFoyaDBJRDBnZEdocGN5NW1iRzloZENnbmJXRjRTR1ZwWjJoMEp5d2dNVEF3S1R0Y2JseHVJQ0FnSUhSb2FYTXVZMjl1YzJsa1pYSk9kV3hzVTJWeGRXVnVZMlZ6SUQwZ2RHaHBjeTVpYjI5c0tDZGpiMjV6YVdSbGNrNTFiR3hUWlhGMVpXNWpaWE1uTENCbVlXeHpaU2s3WEc0Z0lDQWdkR2hwY3k1elpYRjFaVzVqWlVOdmJIVnRiazVoYldVZ1BTQjBhR2x6TG5OMGNtbHVaeWduYzJWeGRXVnVZMlZEYjJ4MWJXNU9ZVzFsSnl3Z2JuVnNiQ2s3WEc1Y2JpQWdJQ0IwYUdsekxuTjBZWEowVUc5emFYUnBiMjVPWVcxbElEMGdkR2hwY3k1emRISnBibWNvSjNOMFlYSjBVRzl6YVhScGIyNU9ZVzFsSnl3Z2JuVnNiQ2s3WEc0Z0lDQWdkR2hwY3k1bGJtUlFiM05wZEdsdmJrNWhiV1VnUFNCMGFHbHpMbk4wY21sdVp5Z25aVzVrVUc5emFYUnBiMjVPWVcxbEp5d2diblZzYkNrN1hHNGdJSDFjYmx4dUlDQmhjM2x1WXlCcGJtbDBLQ2s2SUZCeWIyMXBjMlU4ZG05cFpENGdlMXh1SUNBZ0lIUm9hWE11YlhOblNHOXpkQ0E5SUhWcExtUnBkaWduVG04Z2JXVnpjMkZuWlNjcE8xeHVJQ0FnSUhSb2FYTXViWE5uU0c5emRDNXpkSGxzWlM1a2FYTndiR0Y1SUQwZ0oyNXZibVVuTzF4dVhHNGdJQ0FnZEdocGN5NWpZVzUyWVhNZ1BTQjFhUzVqWVc1MllYTW9LVHRjYmlBZ0lDQjBhR2x6TG1OaGJuWmhjeTV6ZEhsc1pTNTNhV1IwYUNBOUlDY3hNREFsSnp0Y2JseHVJQ0FnSUM4dklIUm9hWE11YzJ4cFpHVnlJRDBnZFdrdWNtRnVaMlZUYkdsa1pYSW9NQ3dnTWpBc0lESXNJRFVwTzF4dUlDQWdJQzh2SUhSb2FYTXVjMnhwWkdWeUxuSnZiM1F1YzNSNWJHVXVkMmxrZEdnZ1BTQW5NVEF3SlNjN1hHNGdJQ0FnTHk4Z2RHaHBjeTV6Ykdsa1pYSXVjbTl2ZEM1emRIbHNaUzVvWldsbmFIUWdQU0FuTVRKd2VDYzdYRzVjYmlBZ0lDQXZMeUIwYUdsekxtaHZjM1FnUFNCMWFTNWthWFpXS0ZzdktuUm9hWE11YzJ4cFpHVnlMQ292ZEdocGN5NWpZVzUyWVhOZEtUdGNibHh1SUNBZ0lHTnZibk4wSUdkbGRFMXZibTl0WlhJZ1BTQW9jRG9nUkVjdVVHOXBiblFwT2lCYmJuVnRZbVZ5TENCemRISnBibWNnZkNCdWRXeHNMQ0JRYjNOcGRHbHZiazF2Ym05dFpYSkpibVp2SUh3Z2JuVnNiRjBnUFQ0Z2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYWxCdmN5QTlJRTFoZEdndVpteHZiM0lvY0M1NElDOGdkR2hwY3k1d2IzTnBkR2x2YmxkcFpIUm9LVHRjYmlBZ0lDQWdJR052Ym5OMElIQnZjMmwwYVc5dUlEMGdkR2hwY3k1d2IzTnBkR2x2Ym5OYmFsQnZjMTA3WEc1Y2JpQWdJQ0FnSUdsbUlDaHdiM05wZEdsdmJpQTlQVDBnZG05cFpDQXdLVnh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdXMnBRYjNNc0lHNTFiR3dzSUc1MWJHeGRPMXh1WEc0Z0lDQWdJQ0JqYjI1emRDQnRiMjV2YldWeU9pQnpkSEpwYm1jZ2ZDQjFibVJsWm1sdVpXUWdQU0JQWW1wbFkzUXVhMlY1Y3lod2IzTnBkR2x2Ymk1bWNtVnhLVnh1SUNBZ0lDQWdJQ0F1Wm1sdVpDZ29iU2tnUFQ0Z2NHOXphWFJwYjI0dVpuSmxjVnR0WFM1aWIzVnVaSE11WTI5dWRHRnBibk1vY0M1NExDQndMbmtwS1R0Y2JpQWdJQ0FnSUdsbUlDaHRiMjV2YldWeUlEMDlQU0IxYm1SbFptbHVaV1FwWEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJiYWxCdmN5d2diblZzYkN3Z2JuVnNiRjA3WEc1Y2JpQWdJQ0FnSUhKbGRIVnliaUJiYWxCdmN5d2diVzl1YjIxbGNpd2djRzl6YVhScGIyNHVabkpsY1Z0dGIyNXZiV1Z5WFYwN1hHNGdJQ0FnZlR0Y2JseHVJQ0FnSUhSb2FYTXVZMkZ1ZG1GekxtOXViVzkxYzJWdmRtVnlJRDBnS0dVNklFMXZkWE5sUlhabGJuUXBJRDArSUh0Y2JseHVJQ0FnSUgwN1hHNWNiaUFnSUNCeWVHcHpMbVp5YjIxRmRtVnVkRHhOYjNWelpVVjJaVzUwUGloMGFHbHpMbU5oYm5aaGN5d2dKMjF2ZFhObGJXOTJaU2NwTG5OMVluTmpjbWxpWlNnb1pUb2dUVzkxYzJWRmRtVnVkQ2tnUFQ0Z2UxeHVJQ0FnSUNBZ2FXWWdLQ0YwYUdsekxtTmhiblpoY3lsY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1TzF4dVhHNGdJQ0FnSUNCamIyNXpkQ0JoY21keklEMGdaU0JoY3lCTmIzVnpaVVYyWlc1ME8xeHVJQ0FnSUNBZ1kyOXVjM1FnVzJwUWIzTXNJRzF2Ym05dFpYSmRJRDBnWjJWMFRXOXViMjFsY2loMGFHbHpMbU5oYm5aaGN5NW5aWFJEZFhKemIzSlFiM05wZEdsdmJpaGhjbWR6S1NrN1hHNWNiaUFnSUNBZ0lHbG1JQ2gwYUdsekxtUmhkR0ZHY21GdFpTQW1KaUIwYUdsekxuTmxjVU52YkNBbUppQnRiMjV2YldWeUtTQjdYRzRnSUNBZ0lDQWdJSFZwTG5SdmIyeDBhWEF1YzJodmQxSnZkMGR5YjNWd0tIUm9hWE11WkdGMFlVWnlZVzFsTENBb2FWSnZkeWtnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElITmxjU0E5SUhSb2FYTXVjMlZ4UTI5c0lTNW5aWFFvYVZKdmR5azdYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdiVk5sY1NBOUlITmxjU0EvSUhObGNWdDBhR2x6TG5OMFlYSjBVRzl6YVhScGIyNGdLeUJxVUc5elhTQTZJRzUxYkd3N1hHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHMVRaWEVnUFQwOUlHMXZibTl0WlhJN1hHNGdJQ0FnSUNBZ0lIMHNJR0Z5WjNNdWVDQXJJREUyTENCaGNtZHpMbmtnS3lBeE5pazdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ0lDQjFhUzUwYjI5c2RHbHdMbWhwWkdVb0tUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOUtUdGNibHh1SUNBZ0lISjRhbk11Wm5KdmJVVjJaVzUwUEUxdmRYTmxSWFpsYm5RK0tIUm9hWE11WTJGdWRtRnpMQ0FuYlc5MWMyVmtiM2R1SnlrdWMzVmljMk55YVdKbEtDaGxPaUJOYjNWelpVVjJaVzUwS1NBOVBpQjdYRzRnSUNBZ0lDQnBaaUFvSVhSb2FYTXVZMkZ1ZG1GeklIeDhJR1V1WW5WMGRHOXVJQ0U5SURBcFhHNGdJQ0FnSUNBZ0lISmxkSFZ5Ymp0Y2JseHVJQ0FnSUNBZ1kyOXVjM1FnWVhKbmN5QTlJR1VnWVhNZ1RXOTFjMlZGZG1WdWREdGNiaUFnSUNBZ0lHTnZibk4wSUZ0cVVHOXpMQ0J0YjI1dmJXVnlYU0E5SUdkbGRFMXZibTl0WlhJb2RHaHBjeTVqWVc1MllYTXVaMlYwUTNWeWMyOXlVRzl6YVhScGIyNG9ZWEpuY3lrcE8xeHVYRzRnSUNBZ0lDQXZMeUJ3Y21WMlpXNTBjeUJrWlhObGJHVmpkQ0JoYkd3Z2NtOTNjeUJwWmlCM1pTQnRhWE56SUcxdmJtOXRaWElnWW05MWJtUnpYRzRnSUNBZ0lDQnBaaUFvZEdocGN5NWtZWFJoUm5KaGJXVWdKaVlnZEdocGN5NXpaWEZEYjJ3Z0ppWWdiVzl1YjIxbGNpa2dlMXh1SUNBZ0lDQWdJQ0IwYUdsekxtUmhkR0ZHY21GdFpTNXpaV3hsWTNScGIyNHVhVzVwZENnb2FWSnZkeWtnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElITmxjU0E5SUhSb2FYTXVjMlZ4UTI5c0lTNW5aWFFvYVZKdmR5azdYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdiVk5sY1NBOUlITmxjU0EvSUhObGNWdDBhR2x6TG5OMFlYSjBVRzl6YVhScGIyNGdLeUJxVUc5elhTQTZJRzUxYkd3N1hHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHMVRaWEVnUFQwOUlHMXZibTl0WlhJN1hHNGdJQ0FnSUNBZ0lIMHBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMHBPMXh1WEc0Z0lDQWdkR2hwY3k1eWIyOTBMbUZ3Y0dWdVpDaDBhR2x6TG0xelowaHZjM1FwTzF4dUlDQWdJSFJvYVhNdWNtOXZkQzVoY0hCbGJtUW9kR2hwY3k1allXNTJZWE1wTzF4dUlDQWdJQzh2SUhSb2FYTXVjbTl2ZEM1aGNIQmxibVJEYUdsc1pDaDBhR2x6TG5Oc2FXUmxjaTV5YjI5MEtUdGNibHh1SUNBZ0lIVnBMbTl1VTJsNlpVTm9ZVzVuWldRb2RHaHBjeTV5YjI5MEtTNXpkV0p6WTNKcFltVW9kR2hwY3k1eWIyOTBUMjVUYVhwbFEyaGhibWRsWkM1aWFXNWtLSFJvYVhNcEtUdGNibHh1SUNBZ0lIUm9hWE11Y21WdVpHVnlLSFJ5ZFdVcE8xeHVJQ0I5WEc1Y2JpQWdjbTl2ZEU5dVUybDZaVU5vWVc1blpXUW9ZWEpuY3pvZ1lXNTVLU0I3WEc0Z0lDQWdhV1lnS0NGMGFHbHpMbU5oYm5aaGN5bGNiaUFnSUNBZ0lISmxkSFZ5Ymp0Y2JseHVJQ0FnSUM4dklIUm9hWE11WTJGdWRtRnpMbmRwWkhSb0lHTmhiR04xYkdGMFpTQnBiaUIwYUdsekxsOWpZV3hqZFd4aGRHVW9LU0J0WlhSb2IyUmNibHh1SUNBZ0lHTnZibk4wSUdobGFXZG9kQ0E5SUUxaGRHZ3ViV2x1S0hSb2FYTXViV0Y0U0dWcFoyaDBMQ0JOWVhSb0xtMWhlQ2gwYUdsekxtMXBia2hsYVdkb2RDd2dkR2hwY3k1eWIyOTBMbU5zYVdWdWRFaGxhV2RvZENrcE8xeHVJQ0FnSUM4dklHbG1JQ2gwYUdsekxtTmhiblpoY3k1M2FXUjBhQ0ErSUhSb2FYTXVjbTl2ZEM1amJHbGxiblJYYVdSMGFDa2dMeW9nYUc5eWFYcHZiblJoYkNCelkzSnZiR3hsY2lCcGN5QmxibUZpYkdWa0lDb3ZYRzRnSUNBZ0x5OGdJQ0JvWldsbmFIUWdMVDBnTmpzZ0x5b2dabkpsWlNCemIyMWxJSE53WVdObElHWnZjaUJvYjNKcGVtOXVkR0ZzSUhOamNtOXNiR1Z5SUNvdlhHNGdJQ0FnZEdocGN5NWpZVzUyWVhNdWFHVnBaMmgwSUQwZ2FHVnBaMmgwTzF4dUlDQWdJSFJvYVhNdVkyRnVkbUZ6TG5OMGVXeGxMbWhsYVdkb2RDQTlJR0FrZTJobGFXZG9kSDF3ZUdBN1hHNWNiaUFnSUNBdkx5QmpiMjV6YjJ4bExtUmxZblZuS0dCWFpXSk1iMmR2TG05dVVtOXZkRk5wZW1WRGFHRnVaMlZrS0NrZ1lDQXJYRzRnSUNBZ0x5OGdJQ0JnY205dmRDNTNhV1IwYUQwa2UzUm9hWE11Y205dmRDNWpiR2xsYm5SWGFXUjBhSDBzSUhKdmIzUXVhR1ZwWjJoMFBTUjdkR2hwY3k1eWIyOTBMbU5zYVdWdWRFaGxhV2RvZEgwc0lHQWdLMXh1SUNBZ0lDOHZJQ0FnWUdOaGJuWmhjeTUzYVdSMGFEMGtlM1JvYVhNdVkyRnVkbUZ6TG5kcFpIUm9mU3dnWTJGdWRtRnpMbWhsYVdkb2REMGtlM1JvYVhNdVkyRnVkbUZ6TG1obGFXZG9kSDBnTG1BcE8xeHVYRzRnSUNBZ2RHaHBjeTV5Wlc1a1pYSW9kSEoxWlNrN1hHNGdJSDFjYmx4dUlDQXZLaW9nUVhOemFXZHVjeUI3UUd4cGJtc2djMlZ4UTI5c2ZTQmhibVFnZTBCc2FXNXJJR053ZlNCaVlYTmxaQ0J2YmlCN1FHeHBibXNnYzJWeGRXVnVZMlZEYjJ4MWJXNU9ZVzFsZlNCaGJtUWdZMkZzYkhNZ2UwQnNhVzVySUhKbGJtUmxjbjBvS1M1Y2JpQWdJQ292WEc0Z0lIVndaR0YwWlZObGNVTnZiQ2dwT2lCMmIybGtJSHRjYmlBZ0lDQnBaaUFvZEdocGN5NWtZWFJoUm5KaGJXVXBJSHRjYmlBZ0lDQWdJSFJvYVhNdWMyVnhRMjlzSUQwZ2RHaHBjeTVrWVhSaFJuSmhiV1V1WTI5c0tIUm9hWE11YzJWeGRXVnVZMlZEYjJ4MWJXNU9ZVzFsS1R0Y2JpQWdJQ0FnSUdsbUlDaDBhR2x6TG5ObGNVTnZiQ2tnZTF4dUlDQWdJQ0FnSUNCc1pYUWdiV0Y0VEdWdVozUm9JRDBnTUR0Y2JpQWdJQ0FnSUNBZ1ptOXlJQ2hqYjI1emRDQmpZWFJsWjI5eWVTQnZaaUIwYUdsekxuTmxjVU52YkM1allYUmxaMjl5YVdWektWeHVJQ0FnSUNBZ0lDQWdJRzFoZUV4bGJtZDBhQ0E5SUUxaGRHZ3ViV0Y0S0cxaGVFeGxibWQwYUN3Z1kyRjBaV2R2Y25rdWJHVnVaM1JvS1R0Y2JseHVJQ0FnSUNBZ0lDQXZMeUJIWlhRZ2NHOXphWFJwYjI0Z2JtRnRaWE1nWm5KdmJTQmtZWFJoSUdOdmJIVnRiaUIwWVdjZ0ozQnZjMmwwYVc5dVRtRnRaWE1uWEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSEJ2YzJsMGFXOXVUbUZ0WlhOVWVIUWdQU0IwYUdsekxuTmxjVU52YkM1blpYUlVZV2NvSjNCdmMybDBhVzl1VG1GdFpYTW5LVHRjYmlBZ0lDQWdJQ0FnTHk4Z1JtRnNiR0poWTJzZ2FXWWdKM0J2YzJsMGFXOXVUbUZ0WlhNbklIUmhaeUJwY3lCdWIzUWdjSEp2ZG1sa1pXUmNiaUFnSUNBZ0lDQWdkR2hwY3k1d2IzTnBkR2x2Yms1aGJXVnpJRDBnY0c5emFYUnBiMjVPWVcxbGMxUjRkQ0EvSUhCdmMybDBhVzl1VG1GdFpYTlVlSFF1YzNCc2FYUW9KeXdnSnlrdWJXRndLQ2h1S1NBOVBpQnVMblJ5YVcwb0tTa2dPbHh1SUNBZ0lDQWdJQ0FnSUZzdUxpNUJjbkpoZVNodFlYaE1aVzVuZEdncExtdGxlWE1vS1YwdWJXRndLQ2hxVUc5ektTQTlQaUJnSkh0cVVHOXpJQ3NnTVgxZ0tUdGNibHh1SUNBZ0lDQWdJQ0IwYUdsekxuTjBZWEowVUc5emFYUnBiMjRnUFNCMGFHbHpMbk4wWVhKMFVHOXphWFJwYjI1T1lXMWxJQ1ltSUhSb2FYTXVjRzl6YVhScGIyNU9ZVzFsY3lBL1hHNGdJQ0FnSUNBZ0lDQWdkR2hwY3k1d2IzTnBkR2x2Yms1aGJXVnpMbWx1WkdWNFQyWW9kR2hwY3k1emRHRnlkRkJ2YzJsMGFXOXVUbUZ0WlNrZ09pQXdPMXh1SUNBZ0lDQWdJQ0IwYUdsekxtVnVaRkJ2YzJsMGFXOXVJRDBnZEdocGN5NWxibVJRYjNOcGRHbHZiazVoYldVZ0ppWWdkR2hwY3k1d2IzTnBkR2x2Yms1aGJXVnpJRDljYmlBZ0lDQWdJQ0FnSUNCMGFHbHpMbkJ2YzJsMGFXOXVUbUZ0WlhNdWFXNWtaWGhQWmloMGFHbHpMbVZ1WkZCdmMybDBhVzl1VG1GdFpTa2dPaUFvYldGNFRHVnVaM1JvSUMwZ01TazdYRzVjYmlBZ0lDQWdJQ0FnTHk4amNtVm5hVzl1SUMwdElIQmhiR1YwZEdVZ0xTMWNiaUFnSUNBZ0lDQWdjM2RwZEdOb0lDaDBhR2x6TG5ObGNVTnZiQzV6WlcxVWVYQmxLU0I3WEc0Z0lDQWdJQ0FnSUdOaGMyVWdRVzFwYm05aFkybGtjeTVUWlcxVWVYQmxUWFZzZEdsd2JHVkJiR2xuYm0xbGJuUTZYRzRnSUNBZ0lDQWdJQ0FnZEdocGN5NWpjQ0E5SUVGdGFXNXZZV05wWkhOUVlXeGxkSFJsY3k1SGNtOXJSM0p2ZFhCek8xeHVJQ0FnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ0lDQmpZWE5sSUU1MVkyeGxiM1JwWkdWekxsTmxiVlI1Y0dWTmRXeDBhWEJzWlVGc2FXZHViV1Z1ZERwY2JpQWdJQ0FnSUNBZ0lDQjBhR2x6TG1Od0lEMGdUblZqYkdWdmRHbGtaWE5RWVd4bGRIUmxjeTVEYUhKdmJXRjBiMmR5WVcwN1hHNGdJQ0FnSUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lDQWdMeThqWlc1a2NtVm5hVzl1SUMwdElIQmhiR1YwZEdVZ0xTMWNiaUFnSUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11WTNBZ1BTQnVkV3hzTzF4dUlDQWdJQ0FnSUNCMGFHbHpMbkJ2YzJsMGFXOXVUbUZ0WlhNZ1BTQmJYVHRjYmlBZ0lDQWdJQ0FnZEdocGN5NXpkR0Z5ZEZCdmMybDBhVzl1SUQwZ0xURTdYRzRnSUNBZ0lDQWdJSFJvYVhNdVpXNWtVRzl6YVhScGIyNGdQU0F0TVR0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lDQWdkR2hwY3k1eVpXNWtaWElvS1R0Y2JpQWdmVnh1WEc0Z0lHOXVVSEp2Y0dWeWRIbERhR0Z1WjJWa0tIQnliM0JsY25SNU9pQkVSeTVRY205d1pYSjBlU2s2SUhadmFXUWdlMXh1SUNBZ0lITjFjR1Z5TG05dVVISnZjR1Z5ZEhsRGFHRnVaMlZrS0hCeWIzQmxjblI1S1R0Y2JseHVJQ0FnSUhOM2FYUmphQ0FvY0hKdmNHVnlkSGt1Ym1GdFpTa2dlMXh1SUNBZ0lHTmhjMlVnSjJOdmJuTnBaR1Z5VG5Wc2JGTmxjWFZsYm1ObGN5YzZYRzRnSUNBZ0lDQjBhR2x6TG5KbGJtUmxjaWdwTzF4dUlDQWdJQ0FnWW5KbFlXczdYRzRnSUNBZ1kyRnpaU0FuYzJWeGRXVnVZMlZEYjJ4MWJXNU9ZVzFsSnpwY2JpQWdJQ0FnSUhSb2FYTXVkWEJrWVhSbFUyVnhRMjlzS0NrN1hHNGdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQmpZWE5sSUNkemRHRnlkRkJ2YzJsMGFXOXVUbUZ0WlNjNlhHNGdJQ0FnSUNCMGFHbHpMblZ3WkdGMFpWTmxjVU52YkNncE8xeHVJQ0FnSUNBZ1luSmxZV3M3WEc0Z0lDQWdZMkZ6WlNBblpXNWtVRzl6YVhScGIyNU9ZVzFsSnpwY2JpQWdJQ0FnSUhSb2FYTXVkWEJrWVhSbFUyVnhRMjlzS0NrN1hHNGdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQmpZWE5sSUNkd2IzTnBkR2x2YmxkcFpIUm9KenBjYmlBZ0lDQWdJSFJvYVhNdWNtVnVaR1Z5S0hSeWRXVXBPMXh1SUNBZ0lDQWdZbkpsWVdzN1hHNGdJQ0FnWTJGelpTQW5iV2x1U0dWcFoyaDBKenBjYmlBZ0lDQWdJSFJvYVhNdWNtOXZkRTl1VTJsNlpVTm9ZVzVuWldRb2JuVnNiQ2s3WEc0Z0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNCallYTmxJQ2R0WVhoSVpXbG5hSFFuT2x4dUlDQWdJQ0FnZEdocGN5NXliMjkwVDI1VGFYcGxRMmhoYm1kbFpDaHVkV3hzS1R0Y2JpQWdJQ0FnSUdKeVpXRnJPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJRzl1VkdGaWJHVkJkSFJoWTJobFpDZ3BJSHRjYmlBZ0lDQjBhR2x6TG5Wd1pHRjBaVk5sY1VOdmJDZ3BPMXh1WEc0Z0lDQWdhV1lnS0hSb2FYTXVaR0YwWVVaeVlXMWxJQ0U5UFNCMmIybGtJREFwSUh0Y2JpQWdJQ0FnSUM4dklGUm9aWEpsSUdGeVpTQjBkMjhnWVhCd2NtOWhZMmhsY3pwY2JpQWdJQ0FnSUM4dklHWnBjbk4wSUNBdElHeHZiMnNnYVc0Z2RHaGxJR1JoZEdGR2NtRnRaU0JtYjNJZ2RHaGxJR1pwY25OMElHMWhkR05vYVc1bklHTnZiSFZ0YmlCaWVTQnpaVzFVZVhCbElHOW1JSFJvWlZ4dUlDQWdJQ0FnTHk4Z0lDQWdJQ0FnSUNBZ1kyOXljbVZ6Y0c5dVpHbHVaeUIyYVdWM1pYSWdLR0oxZENCM1pTQjNZVzUwSUc5dWJIa2diMjVsSUdOc1lYTnpJRzltSUdFZ2JXOXlaU0IxYm1sMlpYSnpZV3dnZG1sbGQyVnlLU3hjYmlBZ0lDQWdJQzh2SUhObFkyOXVaQ0F0SUdSeVlYY2dZMjlzZFcxdUlHUmhkR0VnYVdZZ2RHaGxJSEJoYzNObFpDQmpiMngxYlc0Z2FYTWdiMllnYzNWcGRHRmliR1VnYzJWdFZIbHdaVnh1SUNBZ0lDQWdMeThnVjJVZ1pHVmphV1JsWkNCMGFHRjBJSGRsSUhkcGJHd2dibTkwSUhObFlYSmphQ3dnWW5WMElIZGxJSGRwYkd3Z1pHbHpjR3hoZVNCaGMydGxaQ0JrWVhSaElHbG1JSGRsSUdOaGJseHVJQ0FnSUNBZ0x5OGdZMjl1YzNRZ2MyVnRWSGx3WlNBOUlDZzhkSGx3Wlc5bUlFNTFZMnhsYjNScFpHVnpWMlZpVEc5bmJ6NG9kR2hwY3k1amIyNXpkSEoxWTNSdmNpa3BMbkpsYzJsa2RXVnpVMlYwTzF4dUlDQWdJQ0FnTHk4Z2RHaHBjeTV6WlhGRGIyd2dQU0FvZEdocGN5NWtZWFJoUm5KaGJXVXVZMjlzZFcxdWN5QmhjeUJFUnk1RGIyeDFiVzVNYVhOMEtTNWllVk5sYlZSNWNHVW9jMlZ0Vkhsd1pTazdYRzVjYmlBZ0lDQWdJSFJvYVhNdVpHRjBZVVp5WVcxbExuTmxiR1ZqZEdsdmJpNXZia05vWVc1blpXUXVjM1ZpYzJOeWFXSmxLQ2hmS1NBOVBpQjBhR2x6TG5KbGJtUmxjaWdwS1R0Y2JpQWdJQ0FnSUhSb2FYTXVaR0YwWVVaeVlXMWxMbVpwYkhSbGNpNXZia05vWVc1blpXUXVjM1ZpYzJOeWFXSmxLQ2hmS1NBOVBpQjBhR2x6TG5KbGJtUmxjaWdwS1R0Y2JpQWdJQ0I5WEc0Z0lIMWNibHh1SUNCd2NtOTBaV04wWldRZ1gyNTFiR3hUWlhGMVpXNWpaU2htYVd4c1pYSlNaWE5wWkhWbElEMGdKMWduS1RvZ2MzUnlhVzVuSUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVqYjI1emFXUmxjazUxYkd4VFpYRjFaVzVqWlhNcFhHNGdJQ0FnSUNCeVpYUjFjbTRnYm1WM0lFRnljbUY1S0hSb2FYTXVUR1Z1WjNSb0tTNW1hV3hzS0dacGJHeGxjbEpsYzJsa2RXVXBMbXB2YVc0b0p5Y3BPMXh1WEc0Z0lDQWdjbVYwZFhKdUlDY25PMXh1SUNCOVhHNWNiaUFnY0hKdmRHVmpkR1ZrSUY5allXeGpkV3hoZEdVb0tTQjdYRzRnSUNBZ2FXWWdLQ0YwYUdsekxtTmhiblpoY3lCOGZDQWhkR2hwY3k1elpYRkRiMndnZkh3Z0lYUm9hWE11WkdGMFlVWnlZVzFsSUh4OElIUm9hWE11YzNSaGNuUlFiM05wZEdsdmJpQTlQVDBnTFRFZ2ZId2dkR2hwY3k1bGJtUlFiM05wZEdsdmJpQTlQVDBnTFRFcFhHNGdJQ0FnSUNCeVpYUjFjbTQ3WEc1Y2JpQWdJQ0JqYjI1emRDQjNhV1IwYUNBOUlIUm9hWE11VEdWdVozUm9JQ29nZEdocGN5NXdiM05wZEdsdmJsZHBaSFJvTzF4dUlDQWdJSFJvYVhNdVkyRnVkbUZ6TG5kcFpIUm9JRDBnZDJsa2RHZzdYRzRnSUNBZ2RHaHBjeTVqWVc1MllYTXVjM1I1YkdVdWQybGtkR2dnUFNCZ0pIdDNhV1IwYUgxd2VHQTdYRzRnSUNBZ2RHaHBjeTV5YjI5MExuTjBlV3hsTG5kcFpIUm9JRDBnWUNSN2RHaHBjeTVqWVc1MllYTXVkMmxrZEdoOWNIaGdPMXh1WEc0Z0lDQWdkR2hwY3k1d2IzTnBkR2x2Ym5NZ1BTQnVaWGNnUVhKeVlYa29kR2hwY3k1TVpXNW5kR2dwTzF4dUlDQWdJR1p2Y2lBb2JHVjBJR3BRYjNNZ1BTQXdPeUJxVUc5eklEd2dkR2hwY3k1TVpXNW5kR2c3SUdwUWIzTXJLeWtnZTF4dUlDQWdJQ0FnWTI5dWMzUWdjRzl6VG1GdFpUb2djM1J5YVc1bklEMGdkR2hwY3k1d2IzTnBkR2x2Yms1aGJXVnpXM1JvYVhNdWMzUmhjblJRYjNOcGRHbHZiaUFySUdwUWIzTmRPMXh1SUNBZ0lDQWdkR2hwY3k1d2IzTnBkR2x2Ym5OYmFsQnZjMTBnUFNCdVpYY2dVRzl6YVhScGIyNUpibVp2S0hCdmMwNWhiV1VwTzF4dUlDQWdJSDFjYmx4dUlDQWdJQzh2SURJd01qSXRNRFV0TURVZ1lYTnJZV3hyYVc0Z2FXNXpkSEoxWTNSbFpDQjBieUJ6YUc5M0lGZGxZa3h2WjI4Z1ltRnpaV1FnYjI0Z1ptbHNkR1Z5SUNodWIzUWdjMlZzWldOMGFXOXVLVnh1SUNBZ0lHTnZibk4wSUdsdVpHbGpaWE1nUFNCMGFHbHpMbVJoZEdGR2NtRnRaUzVtYVd4MFpYSXVaMlYwVTJWc1pXTjBaV1JKYm1SbGVHVnpLQ2s3WEc0Z0lDQWdMeThnWTI5dWMzUWdhVzVrYVdObGN5QTlJSFJvYVhNdVpHRjBZVVp5WVcxbExuTmxiR1ZqZEdsdmJpNTBjblZsUTI5MWJuUWdQaUF3SUQ4Z2RHaHBjeTVrWVhSaFJuSmhiV1V1YzJWc1pXTjBhVzl1TG1kbGRGTmxiR1ZqZEdWa1NXNWtaWGhsY3lncElEcGNiaUFnSUNBdkx5QWdJSFJvYVhNdVpHRjBZVVp5WVcxbExtWnBiSFJsY2k1blpYUlRaV3hsWTNSbFpFbHVaR1Y0WlhNb0tUdGNibHh1SUNBZ0lIUm9hWE11Y205M2MwMWhjMnRsWkNBOUlHbHVaR2xqWlhNdWJHVnVaM1JvTzF4dUlDQWdJSFJvYVhNdWNtOTNjMDUxYkd3Z1BTQXdPMXh1WEc0Z0lDQWdabTl5SUNoamIyNXpkQ0JwSUc5bUlHbHVaR2xqWlhNcElIdGNiaUFnSUNBZ0lHeGxkQ0J6T2lCemRISnBibWNnUFNBOGMzUnlhVzVuUGloMGFHbHpMbk5sY1VOdmJDNW5aWFFvYVNrcE8xeHVYRzRnSUNBZ0lDQnBaaUFvSVhNcElIdGNiaUFnSUNBZ0lDQWdjeUE5SUhSb2FYTXVYMjUxYkd4VFpYRjFaVzVqWlNncE8xeHVJQ0FnSUNBZ0lDQXJLM1JvYVhNdWNtOTNjMDUxYkd3N1hHNGdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCbWIzSWdLR3hsZENCcVVHOXpJRDBnTURzZ2FsQnZjeUE4SUhSb2FYTXVUR1Z1WjNSb095QnFVRzl6S3lzcElIdGNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQndiVWx1Wm04Z1BTQjBhR2x6TG5CdmMybDBhVzl1YzF0cVVHOXpYUzVtY21WeE8xeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElHMDZJSE4wY21sdVp5QTlJSE5iZEdocGN5NXpkR0Z5ZEZCdmMybDBhVzl1SUNzZ2FsQnZjMTA3WEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLQ0VvYlNCcGJpQndiVWx1Wm04cEtWeHVJQ0FnSUNBZ0lDQWdJQ0FnY0cxSmJtWnZXMjFkSUQwZ2JtVjNJRkJ2YzJsMGFXOXVUVzl1YjIxbGNrbHVabThvS1R0Y2JseHVJQ0FnSUNBZ0lDQWdJSEJ0U1c1bWIxdHRYUzVqYjNWdWRDc3JPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThqY21WbmFXOXVJRkJ2YkdsemFDQm1jbVZ4SUdOdmRXNTBjMXh1SUNBZ0lHWnZjaUFvYkdWMElHcFFiM01nUFNBd095QnFVRzl6SUR3Z2RHaHBjeTVNWlc1bmRHZzdJR3BRYjNNckt5a2dlMXh1SUNBZ0lDQWdMeThnWkdWc1pYUmxJSFJvYVhNdWNHOXphWFJwYjI1elcycFFiM05kTG1aeVpYRmJKeTBuWFR0Y2JseHVJQ0FnSUNBZ2RHaHBjeTV3YjNOcGRHbHZibk5iYWxCdmMxMHVjbTkzUTI5MWJuUWdQU0F3TzF4dUlDQWdJQ0FnWm05eUlDaGpiMjV6ZENCdElHbHVJSFJvYVhNdWNHOXphWFJwYjI1elcycFFiM05kTG1aeVpYRXBYRzRnSUNBZ0lDQWdJSFJvYVhNdWNHOXphWFJwYjI1elcycFFiM05kTG5KdmQwTnZkVzUwSUNzOUlIUm9hWE11Y0c5emFYUnBiMjV6VzJwUWIzTmRMbVp5WlhGYmJWMHVZMjkxYm5RN1hHNGdJQ0FnZlZ4dUlDQWdJQzh2STJWdVpISmxaMmx2Ymx4dVhHNGdJQ0FnWTI5dWMzUWdiV0Y0U0dWcFoyaDBJRDBnZEdocGN5NWpZVzUyWVhNdWFHVnBaMmgwSUMwZ2RHaHBjeTVoZUdselNHVnBaMmgwTzF4dUlDQWdJQzh2SUdOdmJuTnZiR1V1WkdWaWRXY29ZRmRsWWt4dloyOHVYMk5oYkdOMWJHRjBaU2dwSUcxaGVFaGxhV2RvZEQwa2UyMWhlRWhsYVdkb2RIMHVZQ2s3WEc1Y2JpQWdJQ0F2THlOeVpXZHBiMjRnUTJGc1kzVnNZWFJsSUhOamNtVmxibHh1SUNBZ0lHWnZjaUFvYkdWMElHcFFiM01nUFNBd095QnFVRzl6SUR3Z2RHaHBjeTVNWlc1bmRHZzdJR3BRYjNNckt5a2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ1puSmxjVG9nZXlCYll6b2djM1J5YVc1blhUb2dVRzl6YVhScGIyNU5iMjV2YldWeVNXNW1ieUI5SUQwZ2RHaHBjeTV3YjNOcGRHbHZibk5iYWxCdmMxMHVabkpsY1R0Y2JpQWdJQ0FnSUdOdmJuTjBJSEp2ZDBOdmRXNTBJRDBnZEdocGN5NXdiM05wZEdsdmJuTmJhbEJ2YzEwdWNtOTNRMjkxYm5RN1hHNWNiaUFnSUNBZ0lHeGxkQ0I1T2lCdWRXMWlaWElnUFNCMGFHbHpMbUY0YVhOSVpXbG5hSFE3WEc1Y2JpQWdJQ0FnSUdOdmJuTjBJR1Z1ZEhKcFpYTWdQU0JQWW1wbFkzUXVaVzUwY21sbGN5aG1jbVZ4S1M1emIzSjBLQ2hoTENCaUtTQTlQaUI3WEc0Z0lDQWdJQ0FnSUdsbUlDaGhXekJkSUNFOVBTQW5MU2NnSmlZZ1lsc3dYU0FoUFQwZ0p5MG5LVnh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJpV3pGZExtTnZkVzUwSUMwZ1lWc3hYUzVqYjNWdWREdGNiaUFnSUNBZ0lDQWdaV3h6WlNCcFppQW9ZVnN3WFNBOVBUMGdKeTBuSUNZbUlHSmJNRjBnUFQwOUlDY3RKeWxjYmlBZ0lDQWdJQ0FnSUNCeVpYUjFjbTRnTUR0Y2JpQWdJQ0FnSUNBZ1pXeHpaU0JwWmlBb1lWc3dYU0E5UFQwZ0p5MG5LVnh1SUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUF0TVR0Y2JpQWdJQ0FnSUNBZ1pXeHpaU0F2S2lBb1lsc3dYU0E5UFQwZ0p5MG5LU0FxTDF4dUlDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlBck1UdGNiaUFnSUNBZ0lIMHBPMXh1SUNBZ0lDQWdabTl5SUNoamIyNXpkQ0JsYm5SeWVTQnZaaUJsYm5SeWFXVnpLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJSEJ0U1c1bWJ6b2dVRzl6YVhScGIyNU5iMjV2YldWeVNXNW1ieUE5SUdWdWRISjVXekZkTzF4dUlDQWdJQ0FnSUNBdkx5QmpiMjV6ZENCdE9pQnpkSEpwYm1jZ1BTQmxiblJ5ZVZzd1hUdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2FEb2diblZ0WW1WeUlEMGdiV0Y0U0dWcFoyaDBJQ29nY0cxSmJtWnZMbU52ZFc1MElDOGdjbTkzUTI5MWJuUTdYRzVjYmlBZ0lDQWdJQ0FnY0cxSmJtWnZMbUp2ZFc1a2N5QTlJRzVsZHlCRVJ5NVNaV04wS0dwUWIzTWdLaUIwYUdsekxuQnZjMmwwYVc5dVYybGtkR2dzSUhrc0lIUm9hWE11Y0c5emFYUnBiMjVYYVdSMGFDd2dhQ2s3WEc0Z0lDQWdJQ0FnSUhrZ0t6MGdhRHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ0x5OGpaVzVrY21WbmFXOXVYRzRnSUgxY2JseHVJQ0F2THlCeVpXWnNaV04wSUdOb1lXNW5aWE1nYldGa1pTQjBieUJtYVd4MFpYSXZjMlZzWldOMGFXOXVYRzRnSUhKbGJtUmxjaWh5WldOaGJHTWdQU0IwY25WbEtTQjdYRzRnSUNBZ2FXWWdLSFJvYVhNdWJYTm5TRzl6ZENrZ2UxeHVJQ0FnSUNBZ2FXWWdLSFJvYVhNdWMyVnhRMjlzSUNZbUlDRjBhR2x6TG1Od0tTQjdYRzRnSUNBZ0lDQWdJSFJvYVhNdWJYTm5TRzl6ZENFdWFXNXVaWEpVWlhoMElEMGdZRlZ1YTI1dmQyNGdjR0ZzWlhSMFpTQW9ZMjlzZFcxdUlITmxiVlI1Y0dVNklDY2tlM1JvYVhNdWMyVnhRMjlzTG5ObGJWUjVjR1Y5SnlrdVlEdGNiaUFnSUNBZ0lDQWdkR2hwY3k1dGMyZEliM04wSVM1emRIbHNaUzVrYVhOd2JHRjVJRDBnSnljN1hHNGdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbTF6WjBodmMzUWhMbk4wZVd4bExtUnBjM0JzWVhrZ1BTQW5ibTl1WlNjN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tDRjBhR2x6TG1OaGJuWmhjeUI4ZkNBaGRHaHBjeTV6WlhGRGIyd2dmSHdnSVhSb2FYTXVaR0YwWVVaeVlXMWxJSHg4SUNGMGFHbHpMbU53SUh4OFhHNGdJQ0FnSUNCMGFHbHpMbk4wWVhKMFVHOXphWFJwYjI0Z1BUMDlJQzB4SUh4OElIUm9hWE11Wlc1a1VHOXphWFJwYjI0Z1BUMDlJQzB4S1Z4dUlDQWdJQ0FnY21WMGRYSnVPMXh1WEc0Z0lDQWdZMjl1YzNRZ1p5QTlJSFJvYVhNdVkyRnVkbUZ6TG1kbGRFTnZiblJsZUhRb0p6SmtKeWs3WEc0Z0lDQWdhV1lnS0NGbktTQnlaWFIxY200N1hHNWNiaUFnSUNCcFppQW9jbVZqWVd4aktWeHVJQ0FnSUNBZ2RHaHBjeTVmWTJGc1kzVnNZWFJsS0NrN1hHNWNiaUFnSUNBdkx5QnNaWFFnY205M1EyOTFiblFnUFNCMGFHbHpMbkp2ZDNOTllYTnJaV1E3WEc0Z0lDQWdMeThnYVdZZ0tDRjBhR2x6TG1OdmJuTnBaR1Z5VG5Wc2JGTmxjWFZsYm1ObGN5bGNiaUFnSUNBdkx5QWdJSEp2ZDBOdmRXNTBJQzA5SUhSb2FYTXVjbTkzYzA1MWJHdzdYRzVjYmlBZ0lDQm5MbkpsYzJWMFZISmhibk5tYjNKdEtDazdYRzRnSUNBZ0x5OW5MbU5zWldGeVVtVmpkQ2d3TENBd0xDQjBhR2x6TG1OaGJuWmhjeTUzYVdSMGFDd2dkR2hwY3k1allXNTJZWE11YUdWcFoyaDBLVHRjYmlBZ0lDQm5MbVpwYkd4VGRIbHNaU0E5SUNkM2FHbDBaU2M3WEc0Z0lDQWdaeTVtYVd4c1VtVmpkQ2d3TENBd0xDQjBhR2x6TG1OaGJuWmhjeTUzYVdSMGFDd2dkR2hwY3k1allXNTJZWE11YUdWcFoyaDBLVHRjYmlBZ0lDQm5MblJsZUhSQ1lYTmxiR2x1WlNBOUlIUm9hWE11ZEdWNGRFSmhjMlZzYVc1bE8xeHVYRzRnSUNBZ0x5OGpjbVZuYVc5dUlGQnNiM1FnY0c5emFYUnBiMjVPWVcxbGMxeHVJQ0FnSUdjdWNtVnpaWFJVY21GdWMyWnZjbTBvS1R0Y2JpQWdJQ0JuTG1acGJHeFRkSGxzWlNBOUlDZGliR0ZqYXljN1hHNGdJQ0FnWnk1MFpYaDBRV3hwWjI0Z1BTQW5ZMlZ1ZEdWeUp6dGNiaUFnSUNCbkxtWnZiblFnUFNBbk1UQndlQ0JTYjJKdmRHOHNJRkp2WW05MGJ5Qk1iMk5oYkN3Z2MyRnVjeTF6WlhKcFppYzdYRzRnSUNBZ1kyOXVjM1FnY0c5elRtRnRaVTFoZUZkcFpIUm9JRDBnVFdGMGFDNXRZWGdvTGk0dWRHaHBjeTV3YjNOcGRHbHZibk11YldGd0tDaHdiM01wSUQwK0lHY3ViV1ZoYzNWeVpWUmxlSFFvY0c5ekxtNWhiV1VwTG5kcFpIUm9LU2s3WEc0Z0lDQWdZMjl1YzNRZ2FGTmpZV3hsSUQwZ2NHOXpUbUZ0WlUxaGVGZHBaSFJvSUR3Z0tIUm9hWE11Y0c5emFYUnBiMjVYYVdSMGFDQXRJRElwSUQ4Z01TQTZJQ2gwYUdsekxuQnZjMmwwYVc5dVYybGtkR2dnTFNBeUtTQXZJSEJ2YzA1aGJXVk5ZWGhYYVdSMGFEdGNibHh1SUNBZ0lHWnZjaUFvYkdWMElHcFFiM01nUFNBd095QnFVRzl6SUR3Z2RHaHBjeTVNWlc1bmRHZzdJR3BRYjNNckt5a2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ2NHOXpPaUJRYjNOcGRHbHZia2x1Wm04Z1BTQjBhR2x6TG5CdmMybDBhVzl1YzF0cVVHOXpYVHRjYmlBZ0lDQWdJR2N1Y21WelpYUlVjbUZ1YzJadmNtMG9LVHRjYmlBZ0lDQWdJR2N1YzJWMFZISmhibk5tYjNKdEtGeHVJQ0FnSUNBZ0lDQm9VMk5oYkdVc0lEQXNJREFzSURFc1hHNGdJQ0FnSUNBZ0lHcFFiM01nS2lCMGFHbHpMbkJ2YzJsMGFXOXVWMmxrZEdnZ0t5QjBhR2x6TG5CdmMybDBhVzl1VjJsa2RHZ2dMeUF5TENBd0tUdGNiaUFnSUNBZ0lHY3VabWxzYkZSbGVIUW9jRzl6TG01aGJXVXNJREFzSURBcE8xeHVJQ0FnSUgxY2JpQWdJQ0F2THlObGJtUnlaV2RwYjI0Z1VHeHZkQ0J3YjNOcGRHbHZiazVoYldWelhHNWNiaUFnSUNCbWIzSWdLR3hsZENCcVVHOXpJRDBnTURzZ2FsQnZjeUE4SUhSb2FYTXVUR1Z1WjNSb095QnFVRzl6S3lzcElIdGNiaUFnSUNBZ0lHWnZjaUFvWTI5dWMzUWdXMjF2Ym05dFpYSXNJSEJ0U1c1bWIxMGdiMllnVDJKcVpXTjBMbVZ1ZEhKcFpYTW9kR2hwY3k1d2IzTnBkR2x2Ym5OYmFsQnZjMTB1Wm5KbGNTa3BJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tHMXZibTl0WlhJZ0lUMDlJQ2N0SnlrZ2UxeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElHSWdQU0J3YlVsdVptOHVZbTkxYm1Sek8xeHVYRzRnSUNBZ0lDQWdJQ0FnWTI5dWMzUWdabTl1ZEZOMGVXeGxJRDBnSnpFMmNIZ2dVbTlpYjNSdkxDQlNiMkp2ZEc4Z1RHOWpZV3dzSUhOaGJuTXRjMlZ5YVdZbk8xeHVJQ0FnSUNBZ0lDQWdJQzh2SUVoaFkydHpJSFJ2SUhOallXeGxJSFZ3Y0dWeVkyRnpaU0JqYUdGeVlXTjBaWEp6SUhSdklIUmhjbWRsZENCeVpXTjBZVzVuYkdWY2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCMWNIQmxjbU5oYzJWTVpYUjBaWEpCYzJObGJuUWdQU0F3TGpJMU8xeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElIVndjR1Z5WTJGelpVeGxkSFJsY2tobGFXZG9kQ0E5SURFeUxqSTdYRzVjYmlBZ0lDQWdJQ0FnSUNCbkxuSmxjMlYwVkhKaGJuTm1iM0p0S0NrN1hHNGdJQ0FnSUNBZ0lDQWdaeTV6ZEhKdmEyVlRkSGxzWlNBOUlDZHNhV2RvZEdkeVlYa25PMXh1SUNBZ0lDQWdJQ0FnSUdjdWJHbHVaVmRwWkhSb0lEMGdNVHRjYmlBZ0lDQWdJQ0FnSUNCbkxuSmxZM1FvWWk1c1pXWjBMQ0JpTG5SdmNDd2dZaTUzYVdSMGFDd2dZaTVvWldsbmFIUXBPMXh1SUNBZ0lDQWdJQ0FnSUdjdVptbHNiRk4wZVd4bElEMGdkR2hwY3k1amNGdHRiMjV2YldWeVhTQS9QeUIwYUdsekxtTndXeWR2ZEdobGNpZGRPMXh1SUNBZ0lDQWdJQ0FnSUdjdWRHVjRkRUZzYVdkdUlEMGdKMnhsWm5Rbk8xeHVJQ0FnSUNBZ0lDQWdJR2N1Wm05dWRDQTlJR1p2Ym5SVGRIbHNaVHRjYmlBZ0lDQWdJQ0FnSUNBdkwyY3VabWxzYkZKbFkzUW9ZaTVzWldaMExDQmlMblJ2Y0N3Z1lpNTNhV1IwYUN3Z1lpNW9aV2xuYUhRcE8xeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElHMVViVG9nVkdWNGRFMWxkSEpwWTNNZ1BTQm5MbTFsWVhOMWNtVlVaWGgwS0cxdmJtOXRaWElwTzF4dVhHNGdJQ0FnSUNBZ0lDQWdMeThnYVdZZ0tHMU5MbUZqZEhWaGJFSnZkVzVrYVc1blFtOTRRWE5qWlc1MElDRTlJREFwWEc0Z0lDQWdJQ0FnSUNBZ0x5OGdJQ0JqYjI1emIyeGxMbVJsWW5WbktHQnRPaUFrZTIxOUxDQnRUUzVoWTNSMVlXeENiM1Z1WkdsdVowSnZlRUZ6WTJWdWREb2dKSHR0VFM1aFkzUjFZV3hDYjNWdVpHbHVaMEp2ZUVGelkyVnVkSDFnS1R0Y2JseHVJQ0FnSUNBZ0lDQWdJR2N1YzJWMFZISmhibk5tYjNKdEtGeHVJQ0FnSUNBZ0lDQWdJQ0FnWWk1M2FXUjBhQ0F2SUcxVWJTNTNhV1IwYUN3Z01Dd2dNQ3dnWWk1b1pXbG5hSFFnTHlCMWNIQmxjbU5oYzJWTVpYUjBaWEpJWldsbmFIUXNYRzRnSUNBZ0lDQWdJQ0FnSUNCaUxteGxablFzSUdJdWRHOXdLVHRjYmlBZ0lDQWdJQ0FnSUNCbkxtWnBiR3hVWlhoMEtHMXZibTl0WlhJc0lEQXNJQzExY0hCbGNtTmhjMlZNWlhSMFpYSkJjMk5sYm5RcE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZWeHVJQ0I5WEc1OVhHNGlYWDA9IiwiY2xhc3MgQ2VsbCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSAwO1xuICAgICAgICB0aGlzLnBhcmVudEkgPSAwO1xuICAgICAgICB0aGlzLnBhcmVudEogPSAwO1xuICAgIH1cbn1cbjtcbmV4cG9ydCBjbGFzcyBBbGlnbmVkIHtcbiAgICBjb25zdHJ1Y3RvcihzZXExXywgc2VxMl8sIHNjb3JlXykge1xuICAgICAgICB0aGlzLnNlcTEgPSBzZXExXztcbiAgICAgICAgdGhpcy5zZXEyID0gc2VxMl87XG4gICAgICAgIHRoaXMuc2NvcmUgPSBzY29yZV87XG4gICAgfVxufVxuO1xuZXhwb3J0IGNsYXNzIFNlcXVlbmNlQWxpZ25tZW50IHtcbiAgICBjb25zdHJ1Y3RvcihzZXExXywgc2VxMl8sIGdhcF8sIGFsaWduR3JpZF8gPSBcIlwiKSB7XG4gICAgICAgIHRoaXMuc2VxMSA9ICcnO1xuICAgICAgICB0aGlzLnNlcTIgPSAnJztcbiAgICAgICAgdGhpcy5nYXAgPSAxO1xuICAgICAgICB0aGlzLmxlbjEgPSAwO1xuICAgICAgICB0aGlzLmxlbjIgPSAwO1xuICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICB0aGlzLmFsaWduR3JpZCA9IFtdO1xuICAgICAgICB0aGlzLnNjb3JlcyA9IFtdO1xuICAgICAgICB0aGlzLmRwR3JpZCA9IFtdO1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0ge307XG4gICAgICAgIHRoaXMuQkxPU1VNNDUgPSBbWzUsIC0yLCAtMSwgLTIsIC0xLCAtMSwgLTEsIDAsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTIsIC0xLCAxLCAwLCAtMiwgLTIsIDAsIC0xLCAtMSwgMCwgLTVdLFxuICAgICAgICAgICAgWy0yLCA3LCAwLCAtMSwgLTMsIDEsIDAsIC0yLCAwLCAtMywgLTIsIDMsIC0xLCAtMiwgLTIsIC0xLCAtMSwgLTIsIC0xLCAtMiwgLTEsIDAsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIDAsIDYsIDIsIC0yLCAwLCAwLCAwLCAxLCAtMiwgLTMsIDAsIC0yLCAtMiwgLTIsIDEsIDAsIC00LCAtMiwgLTMsIDQsIDAsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTIsIC0xLCAyLCA3LCAtMywgMCwgMiwgLTEsIDAsIC00LCAtMywgMCwgLTMsIC00LCAtMSwgMCwgLTEsIC00LCAtMiwgLTMsIDUsIDEsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC0zLCAtMiwgLTMsIDEyLCAtMywgLTMsIC0zLCAtMywgLTMsIC0yLCAtMywgLTIsIC0yLCAtNCwgLTEsIC0xLCAtNSwgLTMsIC0xLCAtMiwgLTMsIC0yLCAtNV0sXG4gICAgICAgICAgICBbLTEsIDEsIDAsIDAsIC0zLCA2LCAyLCAtMiwgMSwgLTIsIC0yLCAxLCAwLCAtNCwgLTEsIDAsIC0xLCAtMiwgLTEsIC0zLCAwLCA0LCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAwLCAwLCAyLCAtMywgMiwgNiwgLTIsIDAsIC0zLCAtMiwgMSwgLTIsIC0zLCAwLCAwLCAtMSwgLTMsIC0yLCAtMywgMSwgNCwgLTEsIC01XSxcbiAgICAgICAgICAgIFswLCAtMiwgMCwgLTEsIC0zLCAtMiwgLTIsIDcsIC0yLCAtNCwgLTMsIC0yLCAtMiwgLTMsIC0yLCAwLCAtMiwgLTIsIC0zLCAtMywgLTEsIC0yLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0yLCAwLCAxLCAwLCAtMywgMSwgMCwgLTIsIDEwLCAtMywgLTIsIC0xLCAwLCAtMiwgLTIsIC0xLCAtMiwgLTMsIDIsIC0zLCAwLCAwLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMywgLTIsIC00LCAtMywgLTIsIC0zLCAtNCwgLTMsIDUsIDIsIC0zLCAyLCAwLCAtMiwgLTIsIC0xLCAtMiwgMCwgMywgLTMsIC0zLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMiwgLTMsIC0zLCAtMiwgLTIsIC0yLCAtMywgLTIsIDIsIDUsIC0zLCAyLCAxLCAtMywgLTMsIC0xLCAtMiwgMCwgMSwgLTMsIC0yLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAzLCAwLCAwLCAtMywgMSwgMSwgLTIsIC0xLCAtMywgLTMsIDUsIC0xLCAtMywgLTEsIC0xLCAtMSwgLTIsIC0xLCAtMiwgMCwgMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTEsIC0yLCAtMywgLTIsIDAsIC0yLCAtMiwgMCwgMiwgMiwgLTEsIDYsIDAsIC0yLCAtMiwgLTEsIC0yLCAwLCAxLCAtMiwgLTEsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTIsIC0yLCAtMiwgLTQsIC0yLCAtNCwgLTMsIC0zLCAtMiwgMCwgMSwgLTMsIDAsIDgsIC0zLCAtMiwgLTEsIDEsIDMsIDAsIC0zLCAtMywgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTIsIC0yLCAtMSwgLTQsIC0xLCAwLCAtMiwgLTIsIC0yLCAtMywgLTEsIC0yLCAtMywgOSwgLTEsIC0xLCAtMywgLTMsIC0zLCAtMiwgLTEsIC0xLCAtNV0sXG4gICAgICAgICAgICBbMSwgLTEsIDEsIDAsIC0xLCAwLCAwLCAwLCAtMSwgLTIsIC0zLCAtMSwgLTIsIC0yLCAtMSwgNCwgMiwgLTQsIC0yLCAtMSwgMCwgMCwgMCwgLTVdLFxuICAgICAgICAgICAgWzAsIC0xLCAwLCAtMSwgLTEsIC0xLCAtMSwgLTIsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAyLCA1LCAtMywgLTEsIDAsIDAsIC0xLCAwLCAtNV0sXG4gICAgICAgICAgICBbLTIsIC0yLCAtNCwgLTQsIC01LCAtMiwgLTMsIC0yLCAtMywgLTIsIC0yLCAtMiwgLTIsIDEsIC0zLCAtNCwgLTMsIDE1LCAzLCAtMywgLTQsIC0yLCAtMiwgLTVdLFxuICAgICAgICAgICAgWy0yLCAtMSwgLTIsIC0yLCAtMywgLTEsIC0yLCAtMywgMiwgMCwgMCwgLTEsIDAsIDMsIC0zLCAtMiwgLTEsIDMsIDgsIC0xLCAtMiwgLTIsIC0xLCAtNV0sXG4gICAgICAgICAgICBbMCwgLTIsIC0zLCAtMywgLTEsIC0zLCAtMywgLTMsIC0zLCAzLCAxLCAtMiwgMSwgMCwgLTMsIC0xLCAwLCAtMywgLTEsIDUsIC0zLCAtMywgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTEsIDQsIDUsIC0yLCAwLCAxLCAtMSwgMCwgLTMsIC0zLCAwLCAtMiwgLTMsIC0yLCAwLCAwLCAtNCwgLTIsIC0zLCA0LCAyLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0xLCAwLCAwLCAxLCAtMywgNCwgNCwgLTIsIDAsIC0zLCAtMiwgMSwgLTEsIC0zLCAtMSwgMCwgLTEsIC0yLCAtMiwgLTMsIDIsIDQsIC0xLCAtNV0sXG4gICAgICAgICAgICBbMCwgLTEsIC0xLCAtMSwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAwLCAwLCAtMiwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAxXV07XG4gICAgICAgIHRoaXMuQkxPU1VNNTAgPSBbWzUsIC0yLCAtMSwgLTIsIC0xLCAtMSwgLTEsIDAsIC0yLCAtMSwgLTIsIC0xLCAtMSwgLTMsIC0xLCAxLCAwLCAtMywgLTIsIDAsIC0yLCAtMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMiwgNywgLTEsIC0yLCAtNCwgMSwgMCwgLTMsIDAsIC00LCAtMywgMywgLTIsIC0zLCAtMywgLTEsIC0xLCAtMywgLTEsIC0zLCAtMSwgMCwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTEsIDcsIDIsIC0yLCAwLCAwLCAwLCAxLCAtMywgLTQsIDAsIC0yLCAtNCwgLTIsIDEsIDAsIC00LCAtMiwgLTMsIDQsIDAsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTIsIC0yLCAyLCA4LCAtNCwgMCwgMiwgLTEsIC0xLCAtNCwgLTQsIC0xLCAtNCwgLTUsIC0xLCAwLCAtMSwgLTUsIC0zLCAtNCwgNSwgMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTQsIC0yLCAtNCwgMTMsIC0zLCAtMywgLTMsIC0zLCAtMiwgLTIsIC0zLCAtMiwgLTIsIC00LCAtMSwgLTEsIC01LCAtMywgLTEsIC0zLCAtMywgLTIsIC01XSxcbiAgICAgICAgICAgIFstMSwgMSwgMCwgMCwgLTMsIDcsIDIsIC0yLCAxLCAtMywgLTIsIDIsIDAsIC00LCAtMSwgMCwgLTEsIC0xLCAtMSwgLTMsIDAsIDQsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIDAsIDAsIDIsIC0zLCAyLCA2LCAtMywgMCwgLTQsIC0zLCAxLCAtMiwgLTMsIC0xLCAtMSwgLTEsIC0zLCAtMiwgLTMsIDEsIDUsIC0xLCAtNV0sXG4gICAgICAgICAgICBbMCwgLTMsIDAsIC0xLCAtMywgLTIsIC0zLCA4LCAtMiwgLTQsIC00LCAtMiwgLTMsIC00LCAtMiwgMCwgLTIsIC0zLCAtMywgLTQsIC0xLCAtMiwgLTIsIC01XSxcbiAgICAgICAgICAgIFstMiwgMCwgMSwgLTEsIC0zLCAxLCAwLCAtMiwgMTAsIC00LCAtMywgMCwgLTEsIC0xLCAtMiwgLTEsIC0yLCAtMywgMiwgLTQsIDAsIDAsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIC00LCAtMywgLTQsIC0yLCAtMywgLTQsIC00LCAtNCwgNSwgMiwgLTMsIDIsIDAsIC0zLCAtMywgLTEsIC0zLCAtMSwgNCwgLTQsIC0zLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0yLCAtMywgLTQsIC00LCAtMiwgLTIsIC0zLCAtNCwgLTMsIDIsIDUsIC0zLCAzLCAxLCAtNCwgLTMsIC0xLCAtMiwgLTEsIDEsIC00LCAtMywgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgMywgMCwgLTEsIC0zLCAyLCAxLCAtMiwgMCwgLTMsIC0zLCA2LCAtMiwgLTQsIC0xLCAwLCAtMSwgLTMsIC0yLCAtMywgMCwgMSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTIsIC0yLCAtNCwgLTIsIDAsIC0yLCAtMywgLTEsIDIsIDMsIC0yLCA3LCAwLCAtMywgLTIsIC0xLCAtMSwgMCwgMSwgLTMsIC0xLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0zLCAtMywgLTQsIC01LCAtMiwgLTQsIC0zLCAtNCwgLTEsIDAsIDEsIC00LCAwLCA4LCAtNCwgLTMsIC0yLCAxLCA0LCAtMSwgLTQsIC00LCAtMiwgLTVdLFxuICAgICAgICAgICAgWy0xLCAtMywgLTIsIC0xLCAtNCwgLTEsIC0xLCAtMiwgLTIsIC0zLCAtNCwgLTEsIC0zLCAtNCwgMTAsIC0xLCAtMSwgLTQsIC0zLCAtMywgLTIsIC0xLCAtMiwgLTVdLFxuICAgICAgICAgICAgWzEsIC0xLCAxLCAwLCAtMSwgMCwgLTEsIDAsIC0xLCAtMywgLTMsIDAsIC0yLCAtMywgLTEsIDUsIDIsIC00LCAtMiwgLTIsIDAsIDAsIC0xLCAtNV0sXG4gICAgICAgICAgICBbMCwgLTEsIDAsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTEsIDIsIDUsIC0zLCAtMiwgMCwgMCwgLTEsIDAsIC01XSxcbiAgICAgICAgICAgIFstMywgLTMsIC00LCAtNSwgLTUsIC0xLCAtMywgLTMsIC0zLCAtMywgLTIsIC0zLCAtMSwgMSwgLTQsIC00LCAtMywgMTUsIDIsIC0zLCAtNSwgLTIsIC0zLCAtNV0sXG4gICAgICAgICAgICBbLTIsIC0xLCAtMiwgLTMsIC0zLCAtMSwgLTIsIC0zLCAyLCAtMSwgLTEsIC0yLCAwLCA0LCAtMywgLTIsIC0yLCAyLCA4LCAtMSwgLTMsIC0yLCAtMSwgLTVdLFxuICAgICAgICAgICAgWzAsIC0zLCAtMywgLTQsIC0xLCAtMywgLTMsIC00LCAtNCwgNCwgMSwgLTMsIDEsIC0xLCAtMywgLTIsIDAsIC0zLCAtMSwgNSwgLTQsIC0zLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy0yLCAtMSwgNCwgNSwgLTMsIDAsIDEsIC0xLCAwLCAtNCwgLTQsIDAsIC0zLCAtNCwgLTIsIDAsIDAsIC01LCAtMywgLTQsIDUsIDIsIC0xLCAtNV0sXG4gICAgICAgICAgICBbLTEsIDAsIDAsIDEsIC0zLCA0LCA1LCAtMiwgMCwgLTMsIC0zLCAxLCAtMSwgLTQsIC0xLCAwLCAtMSwgLTIsIC0yLCAtMywgMiwgNSwgLTEsIC01XSxcbiAgICAgICAgICAgIFstMSwgLTEsIC0xLCAtMSwgLTIsIC0xLCAtMSwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTIsIC0yLCAtMSwgMCwgLTMsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTVdLFxuICAgICAgICAgICAgWy01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNSwgMV1dO1xuICAgICAgICB0aGlzLkJMT1NVTTYyID0gW1s0LCAtMSwgLTIsIC0yLCAwLCAtMSwgLTEsIDAsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTIsIC0xLCAxLCAwLCAtMywgLTIsIDAsIC0yLCAtMSwgMCwgLTRdLFxuICAgICAgICAgICAgWy0xLCA1LCAwLCAtMiwgLTMsIDEsIDAsIC0yLCAwLCAtMywgLTIsIDIsIC0xLCAtMywgLTIsIC0xLCAtMSwgLTMsIC0yLCAtMywgLTEsIDAsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTIsIDAsIDYsIDEsIC0zLCAwLCAwLCAwLCAxLCAtMywgLTMsIDAsIC0yLCAtMywgLTIsIDEsIDAsIC00LCAtMiwgLTMsIDMsIDAsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTIsIC0yLCAxLCA2LCAtMywgMCwgMiwgLTEsIC0xLCAtMywgLTQsIC0xLCAtMywgLTMsIC0xLCAwLCAtMSwgLTQsIC0zLCAtMywgNCwgMSwgLTEsIC00XSxcbiAgICAgICAgICAgIFswLCAtMywgLTMsIC0zLCA5LCAtMywgLTQsIC0zLCAtMywgLTEsIC0xLCAtMywgLTEsIC0yLCAtMywgLTEsIC0xLCAtMiwgLTIsIC0xLCAtMywgLTMsIC0yLCAtNF0sXG4gICAgICAgICAgICBbLTEsIDEsIDAsIDAsIC0zLCA1LCAyLCAtMiwgMCwgLTMsIC0yLCAxLCAwLCAtMywgLTEsIDAsIC0xLCAtMiwgLTEsIC0yLCAwLCAzLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0xLCAwLCAwLCAyLCAtNCwgMiwgNSwgLTIsIDAsIC0zLCAtMywgMSwgLTIsIC0zLCAtMSwgMCwgLTEsIC0zLCAtMiwgLTIsIDEsIDQsIC0xLCAtNF0sXG4gICAgICAgICAgICBbMCwgLTIsIDAsIC0xLCAtMywgLTIsIC0yLCA2LCAtMiwgLTQsIC00LCAtMiwgLTMsIC0zLCAtMiwgMCwgLTIsIC0yLCAtMywgLTMsIC0xLCAtMiwgLTEsIC00XSxcbiAgICAgICAgICAgIFstMiwgMCwgMSwgLTEsIC0zLCAwLCAwLCAtMiwgOCwgLTMsIC0zLCAtMSwgLTIsIC0xLCAtMiwgLTEsIC0yLCAtMiwgMiwgLTMsIDAsIDAsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTEsIC0zLCAtMywgLTMsIC0xLCAtMywgLTMsIC00LCAtMywgNCwgMiwgLTMsIDEsIDAsIC0zLCAtMiwgLTEsIC0zLCAtMSwgMywgLTMsIC0zLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy0xLCAtMiwgLTMsIC00LCAtMSwgLTIsIC0zLCAtNCwgLTMsIDIsIDQsIC0yLCAyLCAwLCAtMywgLTIsIC0xLCAtMiwgLTEsIDEsIC00LCAtMywgLTEsIC00XSxcbiAgICAgICAgICAgIFstMSwgMiwgMCwgLTEsIC0zLCAxLCAxLCAtMiwgLTEsIC0zLCAtMiwgNSwgLTEsIC0zLCAtMSwgMCwgLTEsIC0zLCAtMiwgLTIsIDAsIDEsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTEsIC0xLCAtMiwgLTMsIC0xLCAwLCAtMiwgLTMsIC0yLCAxLCAyLCAtMSwgNSwgMCwgLTIsIC0xLCAtMSwgLTEsIC0xLCAxLCAtMywgLTEsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTIsIC0zLCAtMywgLTMsIC0yLCAtMywgLTMsIC0zLCAtMSwgMCwgMCwgLTMsIDAsIDYsIC00LCAtMiwgLTIsIDEsIDMsIC0xLCAtMywgLTMsIC0xLCAtNF0sXG4gICAgICAgICAgICBbLTEsIC0yLCAtMiwgLTEsIC0zLCAtMSwgLTEsIC0yLCAtMiwgLTMsIC0zLCAtMSwgLTIsIC00LCA3LCAtMSwgLTEsIC00LCAtMywgLTIsIC0yLCAtMSwgLTIsIC00XSxcbiAgICAgICAgICAgIFsxLCAtMSwgMSwgMCwgLTEsIDAsIDAsIDAsIC0xLCAtMiwgLTIsIDAsIC0xLCAtMiwgLTEsIDQsIDEsIC0zLCAtMiwgLTIsIDAsIDAsIDAsIC00XSxcbiAgICAgICAgICAgIFswLCAtMSwgMCwgLTEsIC0xLCAtMSwgLTEsIC0yLCAtMiwgLTEsIC0xLCAtMSwgLTEsIC0yLCAtMSwgMSwgNSwgLTIsIC0yLCAwLCAtMSwgLTEsIDAsIC00XSxcbiAgICAgICAgICAgIFstMywgLTMsIC00LCAtNCwgLTIsIC0yLCAtMywgLTIsIC0yLCAtMywgLTIsIC0zLCAtMSwgMSwgLTQsIC0zLCAtMiwgMTEsIDIsIC0zLCAtNCwgLTMsIC0yLCAtNF0sXG4gICAgICAgICAgICBbLTIsIC0yLCAtMiwgLTMsIC0yLCAtMSwgLTIsIC0zLCAyLCAtMSwgLTEsIC0yLCAtMSwgMywgLTMsIC0yLCAtMiwgMiwgNywgLTEsIC0zLCAtMiwgLTEsIC00XSxcbiAgICAgICAgICAgIFswLCAtMywgLTMsIC0zLCAtMSwgLTIsIC0yLCAtMywgLTMsIDMsIDEsIC0yLCAxLCAtMSwgLTIsIC0yLCAwLCAtMywgLTEsIDQsIC0zLCAtMiwgLTEsIC00XSxcbiAgICAgICAgICAgIFstMiwgLTEsIDMsIDQsIC0zLCAwLCAxLCAtMSwgMCwgLTMsIC00LCAwLCAtMywgLTMsIC0yLCAwLCAtMSwgLTQsIC0zLCAtMywgNCwgMSwgLTEsIC00XSxcbiAgICAgICAgICAgIFstMSwgMCwgMCwgMSwgLTMsIDMsIDQsIC0yLCAwLCAtMywgLTMsIDEsIC0xLCAtMywgLTEsIDAsIC0xLCAtMywgLTIsIC0yLCAxLCA0LCAtMSwgLTRdLFxuICAgICAgICAgICAgWzAsIC0xLCAtMSwgLTEsIC0yLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMiwgMCwgMCwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTRdLFxuICAgICAgICAgICAgWy00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgLTQsIC00LCAtNCwgMV1dO1xuICAgICAgICB0aGlzLkJMT1NVTTgwID0gW1s3LCAtMywgLTMsIC0zLCAtMSwgLTIsIC0yLCAwLCAtMywgLTMsIC0zLCAtMSwgLTIsIC00LCAtMSwgMiwgMCwgLTUsIC00LCAtMSwgLTMsIC0yLCAtMSwgLThdLFxuICAgICAgICAgICAgWy0zLCA5LCAtMSwgLTMsIC02LCAxLCAtMSwgLTQsIDAsIC01LCAtNCwgMywgLTMsIC01LCAtMywgLTIsIC0yLCAtNSwgLTQsIC00LCAtMiwgMCwgLTIsIC04XSxcbiAgICAgICAgICAgIFstMywgLTEsIDksIDIsIC01LCAwLCAtMSwgLTEsIDEsIC02LCAtNiwgMCwgLTQsIC02LCAtNCwgMSwgMCwgLTcsIC00LCAtNSwgNSwgLTEsIC0yLCAtOF0sXG4gICAgICAgICAgICBbLTMsIC0zLCAyLCAxMCwgLTcsIC0xLCAyLCAtMywgLTIsIC03LCAtNywgLTIsIC02LCAtNiwgLTMsIC0xLCAtMiwgLTgsIC02LCAtNiwgNiwgMSwgLTMsIC04XSxcbiAgICAgICAgICAgIFstMSwgLTYsIC01LCAtNywgMTMsIC01LCAtNywgLTYsIC03LCAtMiwgLTMsIC02LCAtMywgLTQsIC02LCAtMiwgLTIsIC01LCAtNSwgLTIsIC02LCAtNywgLTQsIC04XSxcbiAgICAgICAgICAgIFstMiwgMSwgMCwgLTEsIC01LCA5LCAzLCAtNCwgMSwgLTUsIC00LCAyLCAtMSwgLTUsIC0zLCAtMSwgLTEsIC00LCAtMywgLTQsIC0xLCA1LCAtMiwgLThdLFxuICAgICAgICAgICAgWy0yLCAtMSwgLTEsIDIsIC03LCAzLCA4LCAtNCwgMCwgLTYsIC02LCAxLCAtNCwgLTYsIC0yLCAtMSwgLTIsIC02LCAtNSwgLTQsIDEsIDYsIC0yLCAtOF0sXG4gICAgICAgICAgICBbMCwgLTQsIC0xLCAtMywgLTYsIC00LCAtNCwgOSwgLTQsIC03LCAtNywgLTMsIC01LCAtNiwgLTUsIC0xLCAtMywgLTYsIC02LCAtNiwgLTIsIC00LCAtMywgLThdLFxuICAgICAgICAgICAgWy0zLCAwLCAxLCAtMiwgLTcsIDEsIDAsIC00LCAxMiwgLTYsIC01LCAtMSwgLTQsIC0yLCAtNCwgLTIsIC0zLCAtNCwgMywgLTUsIC0xLCAwLCAtMiwgLThdLFxuICAgICAgICAgICAgWy0zLCAtNSwgLTYsIC03LCAtMiwgLTUsIC02LCAtNywgLTYsIDcsIDIsIC01LCAyLCAtMSwgLTUsIC00LCAtMiwgLTUsIC0zLCA0LCAtNiwgLTYsIC0yLCAtOF0sXG4gICAgICAgICAgICBbLTMsIC00LCAtNiwgLTcsIC0zLCAtNCwgLTYsIC03LCAtNSwgMiwgNiwgLTQsIDMsIDAsIC01LCAtNCwgLTMsIC00LCAtMiwgMSwgLTcsIC01LCAtMiwgLThdLFxuICAgICAgICAgICAgWy0xLCAzLCAwLCAtMiwgLTYsIDIsIDEsIC0zLCAtMSwgLTUsIC00LCA4LCAtMywgLTUsIC0yLCAtMSwgLTEsIC02LCAtNCwgLTQsIC0xLCAxLCAtMiwgLThdLFxuICAgICAgICAgICAgWy0yLCAtMywgLTQsIC02LCAtMywgLTEsIC00LCAtNSwgLTQsIDIsIDMsIC0zLCA5LCAwLCAtNCwgLTMsIC0xLCAtMywgLTMsIDEsIC01LCAtMywgLTIsIC04XSxcbiAgICAgICAgICAgIFstNCwgLTUsIC02LCAtNiwgLTQsIC01LCAtNiwgLTYsIC0yLCAtMSwgMCwgLTUsIDAsIDEwLCAtNiwgLTQsIC00LCAwLCA0LCAtMiwgLTYsIC02LCAtMywgLThdLFxuICAgICAgICAgICAgWy0xLCAtMywgLTQsIC0zLCAtNiwgLTMsIC0yLCAtNSwgLTQsIC01LCAtNSwgLTIsIC00LCAtNiwgMTIsIC0yLCAtMywgLTcsIC02LCAtNCwgLTQsIC0yLCAtMywgLThdLFxuICAgICAgICAgICAgWzIsIC0yLCAxLCAtMSwgLTIsIC0xLCAtMSwgLTEsIC0yLCAtNCwgLTQsIC0xLCAtMywgLTQsIC0yLCA3LCAyLCAtNiwgLTMsIC0zLCAwLCAtMSwgLTEsIC04XSxcbiAgICAgICAgICAgIFswLCAtMiwgMCwgLTIsIC0yLCAtMSwgLTIsIC0zLCAtMywgLTIsIC0zLCAtMSwgLTEsIC00LCAtMywgMiwgOCwgLTUsIC0zLCAwLCAtMSwgLTIsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTUsIC01LCAtNywgLTgsIC01LCAtNCwgLTYsIC02LCAtNCwgLTUsIC00LCAtNiwgLTMsIDAsIC03LCAtNiwgLTUsIDE2LCAzLCAtNSwgLTgsIC01LCAtNSwgLThdLFxuICAgICAgICAgICAgWy00LCAtNCwgLTQsIC02LCAtNSwgLTMsIC01LCAtNiwgMywgLTMsIC0yLCAtNCwgLTMsIDQsIC02LCAtMywgLTMsIDMsIDExLCAtMywgLTUsIC00LCAtMywgLThdLFxuICAgICAgICAgICAgWy0xLCAtNCwgLTUsIC02LCAtMiwgLTQsIC00LCAtNiwgLTUsIDQsIDEsIC00LCAxLCAtMiwgLTQsIC0zLCAwLCAtNSwgLTMsIDcsIC02LCAtNCwgLTIsIC04XSxcbiAgICAgICAgICAgIFstMywgLTIsIDUsIDYsIC02LCAtMSwgMSwgLTIsIC0xLCAtNiwgLTcsIC0xLCAtNSwgLTYsIC00LCAwLCAtMSwgLTgsIC01LCAtNiwgNiwgMCwgLTMsIC04XSxcbiAgICAgICAgICAgIFstMiwgMCwgLTEsIDEsIC03LCA1LCA2LCAtNCwgMCwgLTYsIC01LCAxLCAtMywgLTYsIC0yLCAtMSwgLTIsIC01LCAtNCwgLTQsIDAsIDYsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTEsIC0yLCAtMiwgLTMsIC00LCAtMiwgLTIsIC0zLCAtMiwgLTIsIC0yLCAtMiwgLTIsIC0zLCAtMywgLTEsIC0xLCAtNSwgLTMsIC0yLCAtMywgLTEsIC0yLCAtOF0sXG4gICAgICAgICAgICBbLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAxXV07XG4gICAgICAgIHRoaXMuQkxPU1VNOTAgPSBbWzUsIC0yLCAtMiwgLTMsIC0xLCAtMSwgLTEsIDAsIC0yLCAtMiwgLTIsIC0xLCAtMiwgLTMsIC0xLCAxLCAwLCAtNCwgLTMsIC0xLCAtMiwgLTEsIC0xLCAtNl0sXG4gICAgICAgICAgICBbLTIsIDYsIC0xLCAtMywgLTUsIDEsIC0xLCAtMywgMCwgLTQsIC0zLCAyLCAtMiwgLTQsIC0zLCAtMSwgLTIsIC00LCAtMywgLTMsIC0yLCAwLCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0yLCAtMSwgNywgMSwgLTQsIDAsIC0xLCAtMSwgMCwgLTQsIC00LCAwLCAtMywgLTQsIC0zLCAwLCAwLCAtNSwgLTMsIC00LCA0LCAtMSwgLTIsIC02XSxcbiAgICAgICAgICAgIFstMywgLTMsIDEsIDcsIC01LCAtMSwgMSwgLTIsIC0yLCAtNSwgLTUsIC0xLCAtNCwgLTUsIC0zLCAtMSwgLTIsIC02LCAtNCwgLTUsIDQsIDAsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTEsIC01LCAtNCwgLTUsIDksIC00LCAtNiwgLTQsIC01LCAtMiwgLTIsIC00LCAtMiwgLTMsIC00LCAtMiwgLTIsIC00LCAtNCwgLTIsIC00LCAtNSwgLTMsIC02XSxcbiAgICAgICAgICAgIFstMSwgMSwgMCwgLTEsIC00LCA3LCAyLCAtMywgMSwgLTQsIC0zLCAxLCAwLCAtNCwgLTIsIC0xLCAtMSwgLTMsIC0zLCAtMywgLTEsIDQsIC0xLCAtNl0sXG4gICAgICAgICAgICBbLTEsIC0xLCAtMSwgMSwgLTYsIDIsIDYsIC0zLCAtMSwgLTQsIC00LCAwLCAtMywgLTUsIC0yLCAtMSwgLTEsIC01LCAtNCwgLTMsIDAsIDQsIC0yLCAtNl0sXG4gICAgICAgICAgICBbMCwgLTMsIC0xLCAtMiwgLTQsIC0zLCAtMywgNiwgLTMsIC01LCAtNSwgLTIsIC00LCAtNSwgLTMsIC0xLCAtMywgLTQsIC01LCAtNSwgLTIsIC0zLCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0yLCAwLCAwLCAtMiwgLTUsIDEsIC0xLCAtMywgOCwgLTQsIC00LCAtMSwgLTMsIC0yLCAtMywgLTIsIC0yLCAtMywgMSwgLTQsIC0xLCAwLCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0yLCAtNCwgLTQsIC01LCAtMiwgLTQsIC00LCAtNSwgLTQsIDUsIDEsIC00LCAxLCAtMSwgLTQsIC0zLCAtMSwgLTQsIC0yLCAzLCAtNSwgLTQsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTIsIC0zLCAtNCwgLTUsIC0yLCAtMywgLTQsIC01LCAtNCwgMSwgNSwgLTMsIDIsIDAsIC00LCAtMywgLTIsIC0zLCAtMiwgMCwgLTUsIC00LCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0xLCAyLCAwLCAtMSwgLTQsIDEsIDAsIC0yLCAtMSwgLTQsIC0zLCA2LCAtMiwgLTQsIC0yLCAtMSwgLTEsIC01LCAtMywgLTMsIC0xLCAxLCAtMSwgLTZdLFxuICAgICAgICAgICAgWy0yLCAtMiwgLTMsIC00LCAtMiwgMCwgLTMsIC00LCAtMywgMSwgMiwgLTIsIDcsIC0xLCAtMywgLTIsIC0xLCAtMiwgLTIsIDAsIC00LCAtMiwgLTEsIC02XSxcbiAgICAgICAgICAgIFstMywgLTQsIC00LCAtNSwgLTMsIC00LCAtNSwgLTUsIC0yLCAtMSwgMCwgLTQsIC0xLCA3LCAtNCwgLTMsIC0zLCAwLCAzLCAtMiwgLTQsIC00LCAtMiwgLTZdLFxuICAgICAgICAgICAgWy0xLCAtMywgLTMsIC0zLCAtNCwgLTIsIC0yLCAtMywgLTMsIC00LCAtNCwgLTIsIC0zLCAtNCwgOCwgLTIsIC0yLCAtNSwgLTQsIC0zLCAtMywgLTIsIC0yLCAtNl0sXG4gICAgICAgICAgICBbMSwgLTEsIDAsIC0xLCAtMiwgLTEsIC0xLCAtMSwgLTIsIC0zLCAtMywgLTEsIC0yLCAtMywgLTIsIDUsIDEsIC00LCAtMywgLTIsIDAsIC0xLCAtMSwgLTZdLFxuICAgICAgICAgICAgWzAsIC0yLCAwLCAtMiwgLTIsIC0xLCAtMSwgLTMsIC0yLCAtMSwgLTIsIC0xLCAtMSwgLTMsIC0yLCAxLCA2LCAtNCwgLTIsIC0xLCAtMSwgLTEsIC0xLCAtNl0sXG4gICAgICAgICAgICBbLTQsIC00LCAtNSwgLTYsIC00LCAtMywgLTUsIC00LCAtMywgLTQsIC0zLCAtNSwgLTIsIDAsIC01LCAtNCwgLTQsIDExLCAyLCAtMywgLTYsIC00LCAtMywgLTZdLFxuICAgICAgICAgICAgWy0zLCAtMywgLTMsIC00LCAtNCwgLTMsIC00LCAtNSwgMSwgLTIsIC0yLCAtMywgLTIsIDMsIC00LCAtMywgLTIsIDIsIDgsIC0zLCAtNCwgLTMsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTEsIC0zLCAtNCwgLTUsIC0yLCAtMywgLTMsIC01LCAtNCwgMywgMCwgLTMsIDAsIC0yLCAtMywgLTIsIC0xLCAtMywgLTMsIDUsIC00LCAtMywgLTIsIC02XSxcbiAgICAgICAgICAgIFstMiwgLTIsIDQsIDQsIC00LCAtMSwgMCwgLTIsIC0xLCAtNSwgLTUsIC0xLCAtNCwgLTQsIC0zLCAwLCAtMSwgLTYsIC00LCAtNCwgNCwgMCwgLTIsIC02XSxcbiAgICAgICAgICAgIFstMSwgMCwgLTEsIDAsIC01LCA0LCA0LCAtMywgMCwgLTQsIC00LCAxLCAtMiwgLTQsIC0yLCAtMSwgLTEsIC00LCAtMywgLTMsIDAsIDQsIC0xLCAtNl0sXG4gICAgICAgICAgICBbLTEsIC0yLCAtMiwgLTIsIC0zLCAtMSwgLTIsIC0yLCAtMiwgLTIsIC0yLCAtMSwgLTEsIC0yLCAtMiwgLTEsIC0xLCAtMywgLTIsIC0yLCAtMiwgLTEsIC0yLCAtNl0sXG4gICAgICAgICAgICBbLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAtNiwgLTYsIC02LCAxXV07XG4gICAgICAgIHRoaXMuTlVDTEVPVElERVMgPSBbWzEsIC0xLCAtMSwgLTFdLFxuICAgICAgICAgICAgWy0xLCAxLCAtMSwgLTFdLFxuICAgICAgICAgICAgWy0xLCAtMSwgMSwgLTFdLFxuICAgICAgICAgICAgWy0xLCAtMSwgLTEsIDFdXTtcbiAgICAgICAgdGhpcy5QQU0zMCA9IFtbNiwgLTcsIC00LCAtMywgLTYsIC00LCAtMiwgLTIsIC03LCAtNSwgLTYsIC03LCAtNSwgLTgsIC0yLCAwLCAtMSwgLTEzLCAtOCwgLTIsIC0zLCAtMywgLTMsIC0xN10sXG4gICAgICAgICAgICBbLTcsIDgsIC02LCAtMTAsIC04LCAtMiwgLTksIC05LCAtMiwgLTUsIC04LCAwLCAtNCwgLTksIC00LCAtMywgLTYsIC0yLCAtMTAsIC04LCAtNywgLTQsIC02LCAtMTddLFxuICAgICAgICAgICAgWy00LCAtNiwgOCwgMiwgLTExLCAtMywgLTIsIC0zLCAwLCAtNSwgLTcsIC0xLCAtOSwgLTksIC02LCAwLCAtMiwgLTgsIC00LCAtOCwgNiwgLTMsIC0zLCAtMTddLFxuICAgICAgICAgICAgWy0zLCAtMTAsIDIsIDgsIC0xNCwgLTIsIDIsIC0zLCAtNCwgLTcsIC0xMiwgLTQsIC0xMSwgLTE1LCAtOCwgLTQsIC01LCAtMTUsIC0xMSwgLTgsIDYsIDEsIC01LCAtMTddLFxuICAgICAgICAgICAgWy02LCAtOCwgLTExLCAtMTQsIDEwLCAtMTQsIC0xNCwgLTksIC03LCAtNiwgLTE1LCAtMTQsIC0xMywgLTEzLCAtOCwgLTMsIC04LCAtMTUsIC00LCAtNiwgLTEyLCAtMTQsIC05LCAtMTddLFxuICAgICAgICAgICAgWy00LCAtMiwgLTMsIC0yLCAtMTQsIDgsIDEsIC03LCAxLCAtOCwgLTUsIC0zLCAtNCwgLTEzLCAtMywgLTUsIC01LCAtMTMsIC0xMiwgLTcsIC0zLCA2LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstMiwgLTksIC0yLCAyLCAtMTQsIDEsIDgsIC00LCAtNSwgLTUsIC05LCAtNCwgLTcsIC0xNCwgLTUsIC00LCAtNiwgLTE3LCAtOCwgLTYsIDEsIDYsIC01LCAtMTddLFxuICAgICAgICAgICAgWy0yLCAtOSwgLTMsIC0zLCAtOSwgLTcsIC00LCA2LCAtOSwgLTExLCAtMTAsIC03LCAtOCwgLTksIC02LCAtMiwgLTYsIC0xNSwgLTE0LCAtNSwgLTMsIC01LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstNywgLTIsIDAsIC00LCAtNywgMSwgLTUsIC05LCA5LCAtOSwgLTYsIC02LCAtMTAsIC02LCAtNCwgLTYsIC03LCAtNywgLTMsIC02LCAtMSwgLTEsIC01LCAtMTddLFxuICAgICAgICAgICAgWy01LCAtNSwgLTUsIC03LCAtNiwgLTgsIC01LCAtMTEsIC05LCA4LCAtMSwgLTYsIC0xLCAtMiwgLTgsIC03LCAtMiwgLTE0LCAtNiwgMiwgLTYsIC02LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstNiwgLTgsIC03LCAtMTIsIC0xNSwgLTUsIC05LCAtMTAsIC02LCAtMSwgNywgLTgsIDEsIC0zLCAtNywgLTgsIC03LCAtNiwgLTcsIC0yLCAtOSwgLTcsIC02LCAtMTddLFxuICAgICAgICAgICAgWy03LCAwLCAtMSwgLTQsIC0xNCwgLTMsIC00LCAtNywgLTYsIC02LCAtOCwgNywgLTIsIC0xNCwgLTYsIC00LCAtMywgLTEyLCAtOSwgLTksIC0yLCAtNCwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTUsIC00LCAtOSwgLTExLCAtMTMsIC00LCAtNywgLTgsIC0xMCwgLTEsIDEsIC0yLCAxMSwgLTQsIC04LCAtNSwgLTQsIC0xMywgLTExLCAtMSwgLTEwLCAtNSwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTgsIC05LCAtOSwgLTE1LCAtMTMsIC0xMywgLTE0LCAtOSwgLTYsIC0yLCAtMywgLTE0LCAtNCwgOSwgLTEwLCAtNiwgLTksIC00LCAyLCAtOCwgLTEwLCAtMTMsIC04LCAtMTddLFxuICAgICAgICAgICAgWy0yLCAtNCwgLTYsIC04LCAtOCwgLTMsIC01LCAtNiwgLTQsIC04LCAtNywgLTYsIC04LCAtMTAsIDgsIC0yLCAtNCwgLTE0LCAtMTMsIC02LCAtNywgLTQsIC01LCAtMTddLFxuICAgICAgICAgICAgWzAsIC0zLCAwLCAtNCwgLTMsIC01LCAtNCwgLTIsIC02LCAtNywgLTgsIC00LCAtNSwgLTYsIC0yLCA2LCAwLCAtNSwgLTcsIC02LCAtMSwgLTUsIC0zLCAtMTddLFxuICAgICAgICAgICAgWy0xLCAtNiwgLTIsIC01LCAtOCwgLTUsIC02LCAtNiwgLTcsIC0yLCAtNywgLTMsIC00LCAtOSwgLTQsIDAsIDcsIC0xMywgLTYsIC0zLCAtMywgLTYsIC00LCAtMTddLFxuICAgICAgICAgICAgWy0xMywgLTIsIC04LCAtMTUsIC0xNSwgLTEzLCAtMTcsIC0xNSwgLTcsIC0xNCwgLTYsIC0xMiwgLTEzLCAtNCwgLTE0LCAtNSwgLTEzLCAxMywgLTUsIC0xNSwgLTEwLCAtMTQsIC0xMSwgLTE3XSxcbiAgICAgICAgICAgIFstOCwgLTEwLCAtNCwgLTExLCAtNCwgLTEyLCAtOCwgLTE0LCAtMywgLTYsIC03LCAtOSwgLTExLCAyLCAtMTMsIC03LCAtNiwgLTUsIDEwLCAtNywgLTYsIC05LCAtNywgLTE3XSxcbiAgICAgICAgICAgIFstMiwgLTgsIC04LCAtOCwgLTYsIC03LCAtNiwgLTUsIC02LCAyLCAtMiwgLTksIC0xLCAtOCwgLTYsIC02LCAtMywgLTE1LCAtNywgNywgLTgsIC02LCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstMywgLTcsIDYsIDYsIC0xMiwgLTMsIDEsIC0zLCAtMSwgLTYsIC05LCAtMiwgLTEwLCAtMTAsIC03LCAtMSwgLTMsIC0xMCwgLTYsIC04LCA2LCAwLCAtNSwgLTE3XSxcbiAgICAgICAgICAgIFstMywgLTQsIC0zLCAxLCAtMTQsIDYsIDYsIC01LCAtMSwgLTYsIC03LCAtNCwgLTUsIC0xMywgLTQsIC01LCAtNiwgLTE0LCAtOSwgLTYsIDAsIDYsIC01LCAtMTddLFxuICAgICAgICAgICAgWy0zLCAtNiwgLTMsIC01LCAtOSwgLTUsIC01LCAtNSwgLTUsIC01LCAtNiwgLTUsIC01LCAtOCwgLTUsIC0zLCAtNCwgLTExLCAtNywgLTUsIC01LCAtNSwgLTUsIC0xN10sXG4gICAgICAgICAgICBbLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIC0xNywgLTE3LCAtMTcsIDFdXTtcbiAgICAgICAgdGhpcy5QQU03MCA9IFtbNSwgLTQsIC0yLCAtMSwgLTQsIC0yLCAtMSwgMCwgLTQsIC0yLCAtNCwgLTQsIC0zLCAtNiwgMCwgMSwgMSwgLTksIC01LCAtMSwgLTEsIC0xLCAtMiwgLTExXSxcbiAgICAgICAgICAgIFstNCwgOCwgLTMsIC02LCAtNSwgMCwgLTUsIC02LCAwLCAtMywgLTYsIDIsIC0yLCAtNywgLTIsIC0xLCAtNCwgMCwgLTcsIC01LCAtNCwgLTIsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWy0yLCAtMywgNiwgMywgLTcsIC0xLCAwLCAtMSwgMSwgLTMsIC01LCAwLCAtNSwgLTYsIC0zLCAxLCAwLCAtNiwgLTMsIC01LCA1LCAtMSwgLTIsIC0xMV0sXG4gICAgICAgICAgICBbLTEsIC02LCAzLCA2LCAtOSwgMCwgMywgLTEsIC0xLCAtNSwgLTgsIC0yLCAtNywgLTEwLCAtNCwgLTEsIC0yLCAtMTAsIC03LCAtNSwgNSwgMiwgLTMsIC0xMV0sXG4gICAgICAgICAgICBbLTQsIC01LCAtNywgLTksIDksIC05LCAtOSwgLTYsIC01LCAtNCwgLTEwLCAtOSwgLTksIC04LCAtNSwgLTEsIC01LCAtMTEsIC0yLCAtNCwgLTgsIC05LCAtNiwgLTExXSxcbiAgICAgICAgICAgIFstMiwgMCwgLTEsIDAsIC05LCA3LCAyLCAtNCwgMiwgLTUsIC0zLCAtMSwgLTIsIC05LCAtMSwgLTMsIC0zLCAtOCwgLTgsIC00LCAtMSwgNSwgLTIsIC0xMV0sXG4gICAgICAgICAgICBbLTEsIC01LCAwLCAzLCAtOSwgMiwgNiwgLTIsIC0yLCAtNCwgLTYsIC0yLCAtNCwgLTksIC0zLCAtMiwgLTMsIC0xMSwgLTYsIC00LCAyLCA1LCAtMywgLTExXSxcbiAgICAgICAgICAgIFswLCAtNiwgLTEsIC0xLCAtNiwgLTQsIC0yLCA2LCAtNiwgLTYsIC03LCAtNSwgLTYsIC03LCAtMywgMCwgLTMsIC0xMCwgLTksIC0zLCAtMSwgLTMsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWy00LCAwLCAxLCAtMSwgLTUsIDIsIC0yLCAtNiwgOCwgLTYsIC00LCAtMywgLTYsIC00LCAtMiwgLTMsIC00LCAtNSwgLTEsIC00LCAwLCAxLCAtMywgLTExXSxcbiAgICAgICAgICAgIFstMiwgLTMsIC0zLCAtNSwgLTQsIC01LCAtNCwgLTYsIC02LCA3LCAxLCAtNCwgMSwgMCwgLTUsIC00LCAtMSwgLTksIC00LCAzLCAtNCwgLTQsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWy00LCAtNiwgLTUsIC04LCAtMTAsIC0zLCAtNiwgLTcsIC00LCAxLCA2LCAtNSwgMiwgLTEsIC01LCAtNiwgLTQsIC00LCAtNCwgMCwgLTYsIC00LCAtNCwgLTExXSxcbiAgICAgICAgICAgIFstNCwgMiwgMCwgLTIsIC05LCAtMSwgLTIsIC01LCAtMywgLTQsIC01LCA2LCAwLCAtOSwgLTQsIC0yLCAtMSwgLTcsIC03LCAtNiwgLTEsIC0yLCAtMywgLTExXSxcbiAgICAgICAgICAgIFstMywgLTIsIC01LCAtNywgLTksIC0yLCAtNCwgLTYsIC02LCAxLCAyLCAwLCAxMCwgLTIsIC01LCAtMywgLTIsIC04LCAtNywgMCwgLTYsIC0zLCAtMywgLTExXSxcbiAgICAgICAgICAgIFstNiwgLTcsIC02LCAtMTAsIC04LCAtOSwgLTksIC03LCAtNCwgMCwgLTEsIC05LCAtMiwgOCwgLTcsIC00LCAtNiwgLTIsIDQsIC01LCAtNywgLTksIC01LCAtMTFdLFxuICAgICAgICAgICAgWzAsIC0yLCAtMywgLTQsIC01LCAtMSwgLTMsIC0zLCAtMiwgLTUsIC01LCAtNCwgLTUsIC03LCA3LCAwLCAtMiwgLTksIC05LCAtMywgLTQsIC0yLCAtMywgLTExXSxcbiAgICAgICAgICAgIFsxLCAtMSwgMSwgLTEsIC0xLCAtMywgLTIsIDAsIC0zLCAtNCwgLTYsIC0yLCAtMywgLTQsIDAsIDUsIDIsIC0zLCAtNSwgLTMsIDAsIC0yLCAtMSwgLTExXSxcbiAgICAgICAgICAgIFsxLCAtNCwgMCwgLTIsIC01LCAtMywgLTMsIC0zLCAtNCwgLTEsIC00LCAtMSwgLTIsIC02LCAtMiwgMiwgNiwgLTgsIC00LCAtMSwgLTEsIC0zLCAtMiwgLTExXSxcbiAgICAgICAgICAgIFstOSwgMCwgLTYsIC0xMCwgLTExLCAtOCwgLTExLCAtMTAsIC01LCAtOSwgLTQsIC03LCAtOCwgLTIsIC05LCAtMywgLTgsIDEzLCAtMywgLTEwLCAtNywgLTEwLCAtNywgLTExXSxcbiAgICAgICAgICAgIFstNSwgLTcsIC0zLCAtNywgLTIsIC04LCAtNiwgLTksIC0xLCAtNCwgLTQsIC03LCAtNywgNCwgLTksIC01LCAtNCwgLTMsIDksIC01LCAtNCwgLTcsIC01LCAtMTFdLFxuICAgICAgICAgICAgWy0xLCAtNSwgLTUsIC01LCAtNCwgLTQsIC00LCAtMywgLTQsIDMsIDAsIC02LCAwLCAtNSwgLTMsIC0zLCAtMSwgLTEwLCAtNSwgNiwgLTUsIC00LCAtMiwgLTExXSxcbiAgICAgICAgICAgIFstMSwgLTQsIDUsIDUsIC04LCAtMSwgMiwgLTEsIDAsIC00LCAtNiwgLTEsIC02LCAtNywgLTQsIDAsIC0xLCAtNywgLTQsIC01LCA1LCAxLCAtMiwgLTExXSxcbiAgICAgICAgICAgIFstMSwgLTIsIC0xLCAyLCAtOSwgNSwgNSwgLTMsIDEsIC00LCAtNCwgLTIsIC0zLCAtOSwgLTIsIC0yLCAtMywgLTEwLCAtNywgLTQsIDEsIDUsIC0zLCAtMTFdLFxuICAgICAgICAgICAgWy0yLCAtMywgLTIsIC0zLCAtNiwgLTIsIC0zLCAtMywgLTMsIC0zLCAtNCwgLTMsIC0zLCAtNSwgLTMsIC0xLCAtMiwgLTcsIC01LCAtMiwgLTIsIC0zLCAtMywgLTExXSxcbiAgICAgICAgICAgIFstMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgLTExLCAtMTEsIC0xMSwgMV1dO1xuICAgICAgICB0aGlzLlBBTTI1MCA9IFtbMiwgLTIsIDAsIDAsIC0yLCAwLCAwLCAxLCAtMSwgLTEsIC0yLCAtMSwgLTEsIC0zLCAxLCAxLCAxLCAtNiwgLTMsIDAsIDAsIDAsIDAsIC04XSxcbiAgICAgICAgICAgIFstMiwgNiwgMCwgLTEsIC00LCAxLCAtMSwgLTMsIDIsIC0yLCAtMywgMywgMCwgLTQsIDAsIDAsIC0xLCAyLCAtNCwgLTIsIC0xLCAwLCAtMSwgLThdLFxuICAgICAgICAgICAgWzAsIDAsIDIsIDIsIC00LCAxLCAxLCAwLCAyLCAtMiwgLTMsIDEsIC0yLCAtMywgMCwgMSwgMCwgLTQsIC0yLCAtMiwgMiwgMSwgMCwgLThdLFxuICAgICAgICAgICAgWzAsIC0xLCAyLCA0LCAtNSwgMiwgMywgMSwgMSwgLTIsIC00LCAwLCAtMywgLTYsIC0xLCAwLCAwLCAtNywgLTQsIC0yLCAzLCAzLCAtMSwgLThdLFxuICAgICAgICAgICAgWy0yLCAtNCwgLTQsIC01LCAxMiwgLTUsIC01LCAtMywgLTMsIC0yLCAtNiwgLTUsIC01LCAtNCwgLTMsIDAsIC0yLCAtOCwgMCwgLTIsIC00LCAtNSwgLTMsIC04XSxcbiAgICAgICAgICAgIFswLCAxLCAxLCAyLCAtNSwgNCwgMiwgLTEsIDMsIC0yLCAtMiwgMSwgLTEsIC01LCAwLCAtMSwgLTEsIC01LCAtNCwgLTIsIDEsIDMsIC0xLCAtOF0sXG4gICAgICAgICAgICBbMCwgLTEsIDEsIDMsIC01LCAyLCA0LCAwLCAxLCAtMiwgLTMsIDAsIC0yLCAtNSwgLTEsIDAsIDAsIC03LCAtNCwgLTIsIDMsIDMsIC0xLCAtOF0sXG4gICAgICAgICAgICBbMSwgLTMsIDAsIDEsIC0zLCAtMSwgMCwgNSwgLTIsIC0zLCAtNCwgLTIsIC0zLCAtNSwgMCwgMSwgMCwgLTcsIC01LCAtMSwgMCwgMCwgLTEsIC04XSxcbiAgICAgICAgICAgIFstMSwgMiwgMiwgMSwgLTMsIDMsIDEsIC0yLCA2LCAtMiwgLTIsIDAsIC0yLCAtMiwgMCwgLTEsIC0xLCAtMywgMCwgLTIsIDEsIDIsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTEsIC0yLCAtMiwgLTIsIC0yLCAtMiwgLTIsIC0zLCAtMiwgNSwgMiwgLTIsIDIsIDEsIC0yLCAtMSwgMCwgLTUsIC0xLCA0LCAtMiwgLTIsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTIsIC0zLCAtMywgLTQsIC02LCAtMiwgLTMsIC00LCAtMiwgMiwgNiwgLTMsIDQsIDIsIC0zLCAtMywgLTIsIC0yLCAtMSwgMiwgLTMsIC0zLCAtMSwgLThdLFxuICAgICAgICAgICAgWy0xLCAzLCAxLCAwLCAtNSwgMSwgMCwgLTIsIDAsIC0yLCAtMywgNSwgMCwgLTUsIC0xLCAwLCAwLCAtMywgLTQsIC0yLCAxLCAwLCAtMSwgLThdLFxuICAgICAgICAgICAgWy0xLCAwLCAtMiwgLTMsIC01LCAtMSwgLTIsIC0zLCAtMiwgMiwgNCwgMCwgNiwgMCwgLTIsIC0yLCAtMSwgLTQsIC0yLCAyLCAtMiwgLTIsIC0xLCAtOF0sXG4gICAgICAgICAgICBbLTMsIC00LCAtMywgLTYsIC00LCAtNSwgLTUsIC01LCAtMiwgMSwgMiwgLTUsIDAsIDksIC01LCAtMywgLTMsIDAsIDcsIC0xLCAtNCwgLTUsIC0yLCAtOF0sXG4gICAgICAgICAgICBbMSwgMCwgMCwgLTEsIC0zLCAwLCAtMSwgMCwgMCwgLTIsIC0zLCAtMSwgLTIsIC01LCA2LCAxLCAwLCAtNiwgLTUsIC0xLCAtMSwgMCwgLTEsIC04XSxcbiAgICAgICAgICAgIFsxLCAwLCAxLCAwLCAwLCAtMSwgMCwgMSwgLTEsIC0xLCAtMywgMCwgLTIsIC0zLCAxLCAyLCAxLCAtMiwgLTMsIC0xLCAwLCAwLCAwLCAtOF0sXG4gICAgICAgICAgICBbMSwgLTEsIDAsIDAsIC0yLCAtMSwgMCwgMCwgLTEsIDAsIC0yLCAwLCAtMSwgLTMsIDAsIDEsIDMsIC01LCAtMywgMCwgMCwgLTEsIDAsIC04XSxcbiAgICAgICAgICAgIFstNiwgMiwgLTQsIC03LCAtOCwgLTUsIC03LCAtNywgLTMsIC01LCAtMiwgLTMsIC00LCAwLCAtNiwgLTIsIC01LCAxNywgMCwgLTYsIC01LCAtNiwgLTQsIC04XSxcbiAgICAgICAgICAgIFstMywgLTQsIC0yLCAtNCwgMCwgLTQsIC00LCAtNSwgMCwgLTEsIC0xLCAtNCwgLTIsIDcsIC01LCAtMywgLTMsIDAsIDEwLCAtMiwgLTMsIC00LCAtMiwgLThdLFxuICAgICAgICAgICAgWzAsIC0yLCAtMiwgLTIsIC0yLCAtMiwgLTIsIC0xLCAtMiwgNCwgMiwgLTIsIDIsIC0xLCAtMSwgLTEsIDAsIC02LCAtMiwgNCwgLTIsIC0yLCAtMSwgLThdLFxuICAgICAgICAgICAgWzAsIC0xLCAyLCAzLCAtNCwgMSwgMywgMCwgMSwgLTIsIC0zLCAxLCAtMiwgLTQsIC0xLCAwLCAwLCAtNSwgLTMsIC0yLCAzLCAyLCAtMSwgLThdLFxuICAgICAgICAgICAgWzAsIDAsIDEsIDMsIC01LCAzLCAzLCAwLCAyLCAtMiwgLTMsIDAsIC0yLCAtNSwgMCwgMCwgLTEsIC02LCAtNCwgLTIsIDIsIDMsIC0xLCAtOF0sXG4gICAgICAgICAgICBbMCwgLTEsIDAsIC0xLCAtMywgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMiwgLTEsIDAsIDAsIC00LCAtMiwgLTEsIC0xLCAtMSwgLTEsIC04XSxcbiAgICAgICAgICAgIFstOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIC04LCAtOCwgLTgsIDFdXTtcbiAgICAgICAgdGhpcy5TQ0hORUlERVIgPSBbWzExLjYsIC0yLjcsIDkuNywgLTEuNywgLTIuNywgLTYuNCwgLTMuOSwgLTUuNiwgNS4xLCAtNS4wLCAzLjYsIC00LjIsIC02LjMsIC0xMy4wLCAtNy4xLCAtMTEuNSwgMC40LCAtNi4wLCAtMS45LCAtNS4zLCAtOC41LCAtMTEuMiwgLTguOSwgLTEwLjgsIDIuMSwgMC4wLCAxLjQsIDAuMiwgLTEwLjIsIC0xMy41LCAtMTMuMCwgLTEyLjUsIC0yLjYsIC04LjUsIC01LjAsIC04LjEsIC02LjMsIC05LjksIC03LjUsIC05LjAsIC03LjEsIC0xMC4yLCAtOC4yLCAtOS4yLCAtOC4yLCAtMTIuNSwgLTExLjEsIC0xMS40LCAtNTAuMCwgLTE0LjgsIC01MC4wLCAtMTMuOCwgLTcuMywgLTEwLjEsIC04LjQsIC05LjEsIC01MC4wLCAtMTMuMCwgLTEzLjUsIC0xMi40LCAtMTAuNywgLTE4LjEsIC0xMS44LCAtMTcuMixdLFxuICAgICAgICAgICAgWy0yLjcsIDEzLjAsIC0zLjMsIDEwLjksIC0zLjUsIC0wLjQsIC0zLjMsIC0xLjgsIC01LjQsIDQuNiwgLTUuNSwgMy4wLCAtMTAuMiwgLTcuOSwgLTkuOSwgLTkuNiwgLTUuMCwgMC41LCAtNS41LCAtMS4wLCAtMTAuMywgLTguMSwgLTkuNCwgLTkuNiwgLTguMSwgLTUuMCwgLTcuMywgLTYuMywgLTEzLjQsIC0xMS4zLCAtMTQuNCwgLTEyLjksIC02LjMsIDAuOCwgLTYuNCwgLTEuMSwgLTcuNCwgLTUuMCwgLTYuMiwgLTYuNSwgLTUuNiwgLTEuNiwgLTQuNywgLTMuMCwgLTEwLjgsIC04LjcsIC0xMS45LCAtMTAuMCwgLTUwLjAsIC02LjIsIC01MC4wLCAtNy41LCAtNi4zLCAtNC4zLCAtNi4yLCAtNS40LCAtNTAuMCwgLTcuMCwgLTE2LjMsIC04LjIsIC0xMy4yLCAtMTIuMywgLTEzLjEsIC0xMy4zLF0sXG4gICAgICAgICAgICBbOS43LCAtMy4zLCAxMS42LCAtMi44LCAtNC41LCAtNi43LCAtMy4xLCAtNi45LCAzLjMsIC01LjUsIDQuOCwgLTUuMSwgLTguOSwgLTEzLjIsIC01LjcsIC0xMi42LCAtMS41LCAtNi4xLCAtMC42LCAtNi4xLCAtMTAuMCwgLTExLjgsIC04LjYsIC0xMS45LCAxLjIsIDAuNSwgMi4yLCAwLjEsIC0xMS44LCAtMTQuMCwgLTExLjksIC0xMy40LCAtNC45LCAtOS4xLCAtMy40LCAtOC45LCAtOC4wLCAtMTAuMCwgLTcuMiwgLTEwLjAsIC05LjEsIC0xMC4yLCAtNy4xLCAtOS45LCAtMTAuMSwgLTEzLjAsIC0xMC42LCAtMTIuNywgLTUwLjAsIC0xNC45LCAtNTAuMCwgLTE0LjQsIC04LjksIC0xMC44LCAtOC45LCAtMTAuNCwgLTUwLjAsIC0xMy4xLCAtMTEuOCwgLTEzLjAsIC0xMi40LCAtMTkuNCwgLTExLjUsIC0xNy44LF0sXG4gICAgICAgICAgICBbLTEuNywgMTAuOSwgLTIuOCwgMTIuOSwgLTIuNywgLTIuMiwgLTIuOCwgMC4yLCAtNC44LCAyLjksIC01LjIsIDUuMiwgLTkuMSwgLTkuNSwgLTkuMCwgLTcuMCwgLTQuMCwgLTEuMCwgLTUuMCwgMS4wLCAtOS4wLCAtOC44LCAtOC45LCAtNy43LCAtNy4wLCAtNi44LCAtNy4xLCAtNC4zLCAtMTIuNCwgLTEyLjksIC0xMy45LCAtMTAuMCwgLTQuOSwgLTAuNywgLTUuNiwgMS40LCAtNi4wLCAtNi41LCAtNi4yLCAtNC44LCAtNS4xLCAtMy4yLCAtNS4wLCAtMS4yLCAtOS44LCAtOS45LCAtMTEuMywgLTguMiwgLTUwLjAsIC03LjYsIC01MC4wLCAtNS4xLCAtNS41LCAtNS44LCAtNS45LCAtNC4yLCAtNTAuMCwgLTguMywgLTE1LjUsIC01LjksIC0xMS42LCAtMTQuMiwgLTEyLjAsIC0xMS42LF0sXG4gICAgICAgICAgICBbLTIuNywgLTMuNSwgLTQuNSwgLTIuNywgMTEuNywgOS4wLCAxMC42LCA5LjYsIC0zLjIsIC0wLjcsIC01LjEsIC0wLjQsIDAuNywgLTQuNiwgLTAuNCwgLTMuNiwgLTQuOCwgLTguOSwgLTYuNSwgLTcuOCwgLTEuNCwgLTQuMSwgLTIuOSwgLTMuMywgLTguMCwgLTkuMSwgLTguMCwgLTguMiwgLTYuMCwgLTkuMywgLTcuNywgLTguNSwgLTYuNCwgLTEwLjEsIC03LjUsIC04LjYsIDIuOCwgLTAuNywgMC45LCAwLjEsIC01LjksIC03LjMsIC02LjUsIC02LjUsIC0wLjQsIC0zLjksIC0yLjYsIC0zLjEsIC01MC4wLCAtMTQuNiwgLTUwLjAsIC0xMi42LCAyLjksIDAuMSwgMS44LCAxLjAsIC01MC4wLCAtOS4yLCAtMTMuNiwgLTcuNywgLTQuOCwgLTEyLjIsIC02LjIsIC0xMS4wLF0sXG4gICAgICAgICAgICBbLTYuNCwgLTAuNCwgLTYuNywgLTIuMiwgOS4wLCAxMi4zLCA5LjgsIDkuNiwgLTcuMSwgMi40LCAtNy4yLCAwLjMsIC0yLjksIC0xLjIsIC0zLjAsIC0zLjMsIC03LjYsIC02LjcsIC04LjEsIC03LjksIC00LjksIC0xLjksIC00LjUsIC0zLjgsIC05LjUsIC03LjgsIC05LjMsIC04LjksIC05LjQsIC03LjEsIC05LjAsIC05LjAsIC05LjQsIC03LjUsIC05LjMsIC05LjIsIC0wLjcsIDIuNiwgMC4yLCAtMC4xLCAtOC4wLCAtNC42LCAtNy43LCAtNi4xLCAtMy42LCAtMS4wLCAtNC4xLCAtMy4xLCAtNTAuMCwgLTExLjYsIC01MC4wLCAtMTEuNiwgMC4yLCAyLjMsIDAuNCwgMC41LCAtNTAuMCwgLTYuNSwgLTE1LjMsIC03LjgsIC04LjQsIC05LjUsIC04LjMsIC0xMS4xLF0sXG4gICAgICAgICAgICBbLTMuOSwgLTMuMywgLTMuMSwgLTIuOCwgMTAuNiwgOS44LCAxMi4yLCA5LjgsIC00LjksIDAuMSwgLTMuNiwgLTAuMiwgLTEuNywgLTQuMSwgMC45LCAtMy41LCAtNS45LCAtOC45LCAtNS42LCAtOC41LCAtMy45LCAtMy45LCAtMi4yLCAtNC41LCAtNy4zLCAtNy41LCAtNi40LCAtOC41LCAtNy4xLCAtOC4yLCAtNi43LCAtNy44LCAtNy45LCAtOS4xLCAtNy4xLCAtOS40LCAwLjksIC0wLjIsIDIuNSwgLTAuMywgLTYuOSwgLTYuNSwgLTUuNSwgLTYuOCwgLTEuNywgLTMuNCwgLTEuNywgLTIuOCwgLTUwLjAsIC0xMy4wLCAtNTAuMCwgLTExLjUsIDEuNSwgMC43LCAyLjcsIDAuNiwgLTUwLjAsIC04LjksIC0xMi4xLCAtNy40LCAtNi4xLCAtMTEuNSwgLTUuNCwgLTEwLjQsXSxcbiAgICAgICAgICAgIFstNS42LCAtMS44LCAtNi45LCAwLjIsIDkuNiwgOS42LCA5LjgsIDExLjYsIC02LjYsIDAuOSwgLTcuMiwgMi41LCAtMi4zLCAtMy40LCAtMi4zLCAtMC42LCAtNi41LCAtOC4yLCAtOC4wLCAtNi4zLCAtMy43LCAtMy41LCAtMy45LCAtMS42LCAtOS45LCAtOC45LCAtOS42LCAtNy4wLCAtOC42LCAtOC45LCAtOC44LCAtNi44LCAtOC42LCAtOC4yLCAtOC44LCAtNi44LCAwLjMsIDAuMSwgMC4yLCAyLjQsIC03LjQsIC02LjIsIC02LjksIC00LjQsIC0yLjksIC0yLjksIC0zLjUsIC0wLjksIC01MC4wLCAtMTIuMiwgLTUwLjAsIC0xMC4xLCAxLjIsIDAuNiwgMS4yLCAyLjQsIC01MC4wLCAtNy42LCAtMTYuMSwgLTUuOCwgLTcuMiwgLTEwLjgsIC03LjQsIC05LjAsXSxcbiAgICAgICAgICAgIFs1LjEsIC01LjQsIDMuMywgLTQuOCwgLTMuMiwgLTcuMSwgLTQuOSwgLTYuNiwgMTMuMywgLTIuOCwgMTEuMiwgLTEuOSwgLTUuNywgLTEyLjUsIC03LjIsIC0xMS42LCAtMC43LCAtNC44LCAtMy4xLCAtNC4zLCAtMTAuMCwgLTExLjYsIC04LjgsIC0xMS43LCAxMC41LCA3LjcsIDkuMSwgOC41LCAtOS44LCAtMTIuNywgLTExLjcsIC0xMS44LCAtNi4zLCAtMTEuNCwgLTguOCwgLTExLjAsIC03LjUsIC0xMC4zLCAtOC4zLCAtOS45LCAtMS45LCAtNi43LCAtNC4xLCAtNi40LCAtNy45LCAtMTIuNSwgLTExLjQsIC0xMS43LCAtNTAuMCwgLTE0LjAsIC01MC4wLCAtMTMuMiwgLTguNSwgLTEwLjQsIC05LjEsIC05LjYsIC01MC4wLCAtOS44LCAtNy43LCAtOC44LCAtMTAuMywgLTE3LjksIC0xMS44LCAtMTYuMCxdLFxuICAgICAgICAgICAgWy01LjAsIDQuNiwgLTUuNSwgMi45LCAtMC43LCAyLjQsIDAuMSwgMC45LCAtMi44LCAxMi44LCAtMi42LCAxMS4wLCAtOC40LCAtNi4zLCAtOC4zLCAtNy43LCAtNi4xLCAtMi45LCAtNi41LCAtNC4yLCAtOC41LCAtNS45LCAtNy41LCAtNy43LCAtNS41LCAtMi40LCAtNS41LCAtNC4xLCAtMTIuOSwgLTEwLjMsIC0xMi43LCAtMTEuMywgLTcuNCwgLTMuMSwgLTcuNCwgLTQuOSwgLTQuNCwgLTEuOCwgLTMuNSwgLTMuNSwgLTEuNiwgMy4wLCAtMC44LCAwLjksIC04LjQsIC02LjMsIC05LjYsIC03LjMsIC01MC4wLCAtOS4wLCAtNTAuMCwgLTkuNywgLTIuMywgLTAuMiwgLTEuMiwgLTEuNSwgLTUwLjAsIC0wLjcsIC0xMy4zLCAtMi4wLCAtMTEuOCwgLTExLjksIC0xMi4zLCAtMTIuNyxdLFxuICAgICAgICAgICAgWzMuNiwgLTUuNSwgNC44LCAtNS4yLCAtNS4xLCAtNy4yLCAtMy42LCAtNy4yLCAxMS4yLCAtMi42LCAxMy40LCAtMi4xLCAtNy43LCAtMTIuNSwgLTUuMywgLTExLjksIC0yLjIsIC00LjQsIC0xLjksIC00LjgsIC0xMC4yLCAtMTEuNSwgLTguMSwgLTEyLjAsIDkuMywgOC4yLCAxMC4wLCA4LjAsIC0xMC44LCAtMTEuOSwgLTEwLjcsIC0xMi40LCAtOC4yLCAtMTEuOCwgLTYuOSwgLTExLjUsIC04LjQsIC05LjksIC03LjEsIC0xMC42LCAtNC43LCAtNi44LCAtMS4yLCAtNy4wLCAtOS44LCAtMTEuNiwgLTkuNiwgLTEyLjEsIC01MC4wLCAtMTQuMSwgLTUwLjAsIC0xMi43LCAtMTAuMCwgLTEwLjgsIC04LjgsIC0xMC41LCAtNTAuMCwgLTkuMiwgLTQuMiwgLTkuMywgLTExLjAsIC0xOC4yLCAtMTEuMSwgLTE2LjEsXSxcbiAgICAgICAgICAgIFstNC4yLCAzLjAsIC01LjEsIDUuMiwgLTAuNCwgMC4zLCAtMC4yLCAyLjUsIC0xLjksIDExLjAsIC0yLjEsIDEzLjIsIC03LjYsIC04LjUsIC04LjAsIC01LjMsIC01LjYsIC00LjUsIC02LjgsIC0yLjQsIC03LjgsIC03LjksIC03LjksIC02LjIsIC01LjcsIC01LjEsIC01LjQsIC0yLjEsIC0xMi40LCAtMTIuMywgLTEzLjEsIC0xMC4xLCAtNi42LCAtNC40LCAtNi45LCAtMi42LCAtMy42LCAtMy44LCAtMy43LCAtMi4wLCAtMS40LCAwLjgsIC0wLjksIDMuMCwgLTguMiwgLTguMSwgLTkuMiwgLTUuOCwgLTUwLjAsIC0xMC4xLCAtNTAuMCwgLTcuNCwgLTEuNywgLTIuMCwgLTEuNSwgLTAuNSwgLTUwLjAsIC0yLjEsIC0xMi42LCAtMC40LCAtMTEuNiwgLTEzLjksIC0xMS40LCAtMTEuMSxdLFxuICAgICAgICAgICAgWy02LjMsIC0xMC4yLCAtOC45LCAtOS4xLCAwLjcsIC0yLjksIC0xLjcsIC0yLjMsIC01LjcsIC04LjQsIC03LjcsIC03LjYsIDEzLjIsIDkuNiwgMy41LCA5LjcsIC04LjcsIC0xMi40LCAtMTAuNywgLTEwLjcsIC03LjgsIC0xMC4yLCAtOC44LCAtOS42LCAtOS41LCAtMTEuOSwgLTEwLjksIC0xMC41LCAyLjMsIC0wLjQsIC0wLjIsIC0wLjMsIC05LjcsIC0xNS41LCAtMTEuNCwgLTEzLjcsIC0zLjAsIC02LjQsIC00LjEsIC01LjQsIC05LjYsIC0xMS45LCAtMTAuNSwgLTExLjgsIDYuMiwgMy4zLCAzLjcsIDMuNiwgLTUwLjAsIC0xMy42LCAtNTAuMCwgLTExLjksIC01LjYsIC04LjgsIC03LjIsIC04LjksIC01MC4wLCAtMTIuNCwgLTE0LjEsIC0xMS42LCAyLjgsIC02LjQsIDAuNSwgLTUuMixdLFxuICAgICAgICAgICAgWy0xMy4wLCAtNy45LCAtMTMuMiwgLTkuNSwgLTQuNiwgLTEuMiwgLTQuMSwgLTMuNCwgLTEyLjUsIC02LjMsIC0xMi41LCAtOC41LCA5LjYsIDEyLjcsIDAuMiwgMTAuNSwgLTEyLjQsIC0xMS42LCAtMTMuMiwgLTEyLjAsIC0xMi40LCAtMTAuMSwgLTExLjYsIC0xMi4wLCAtMTUuMSwgLTEzLjEsIC0xNC4zLCAtMTMuNCwgLTEuNCwgMS40LCAtMS42LCAtMC41LCAtMTQuOSwgLTE0LjMsIC0xNS4yLCAtMTYuOCwgLTcuNywgLTQuNywgLTYuMywgLTYuNiwgLTE0LjYsIC0xMC44LCAtMTIuOCwgLTEzLjAsIDIuMywgNi4wLCAyLjUsIDMuNiwgLTUwLjAsIC0xMS4yLCAtNTAuMCwgLTExLjksIC0xMC41LCAtOS4yLCAtMTAuNSwgLTEwLjUsIC01MC4wLCAtMTAuMywgLTE2LjIsIC0xMS4zLCAtMS43LCAtMy43LCAtMi41LCAtNS40LF0sXG4gICAgICAgICAgICBbLTcuMSwgLTkuOSwgLTUuNywgLTkuMCwgLTAuNCwgLTMuMCwgMC45LCAtMi4zLCAtNy4yLCAtOC4zLCAtNS4zLCAtOC4wLCAzLjUsIDAuMiwgMTQuMywgMS4wLCAtNy4zLCAtMTEuMiwgLTYuOSwgLTkuNywgLTguNSwgLTEwLjIsIC03LjcsIC05LjgsIC0xMC4wLCAtMTAuNCwgLTguNCwgLTEwLjIsIDEuMCwgLTAuNiwgMS43LCAtMC41LCAtMTEuMSwgLTE0LjgsIC05LjcsIC0xNC41LCAtMy43LCAtNS44LCAtMy4xLCAtNS42LCAtMTAuNCwgLTExLjUsIC04LjIsIC0xMS4xLCAwLjYsIC0xLjYsIDEuNiwgLTEuMSwgLTUwLjAsIC0xMi40LCAtNTAuMCwgLTExLjUsIC01LjUsIC04LjAsIC00LjksIC03LjIsIC01MC4wLCAtMTIuNCwgLTEwLjMsIC0xMS42LCAwLjcsIC02LjgsIDIuNCwgLTYuMCxdLFxuICAgICAgICAgICAgWy0xMS41LCAtOS42LCAtMTIuNiwgLTcuMCwgLTMuNiwgLTMuMywgLTMuNSwgLTAuNiwgLTExLjYsIC03LjcsIC0xMS45LCAtNS4zLCA5LjcsIDEwLjUsIDEuMCwgMTIuNiwgLTEyLjAsIC0xMi4yLCAtMTIuNSwgLTkuNywgLTExLjEsIC0xMS4yLCAtMTEuOSwgLTkuNCwgLTEyLjksIC0xNC4zLCAtMTQuMCwgLTExLjksIC0xLjAsIC0wLjQsIC0xLjYsIDEuMiwgLTEzLjksIC0xNS40LCAtMTMuNywgLTEyLjYsIC02LjIsIC02LjcsIC02LjMsIC00LjQsIC0xMy4wLCAtMTIuMiwgLTEzLjAsIC0xMC40LCAyLjksIDMuOCwgMi41LCA1LjgsIC01MC4wLCAtMTIuNSwgLTUwLjAsIC0xMC4yLCAtOS42LCAtOS43LCAtOS42LCAtOC4zLCAtNTAuMCwgLTExLjYsIC0xNS40LCAtOS40LCAtMS4xLCAtNS40LCAtMS42LCAtMy4zLF0sXG4gICAgICAgICAgICBbMC40LCAtNS4wLCAtMS41LCAtNC4wLCAtNC44LCAtNy42LCAtNS45LCAtNi41LCAtMC43LCAtNi4xLCAtMi4yLCAtNS42LCAtOC43LCAtMTIuNCwgLTcuMywgLTEyLjAsIDEyLjgsIDIuMywgMTAuMiwgMy4wLCAwLjAsIC0zLjQsIC0wLjcsIC0zLjIsIDIuNSwgLTAuOCwgMC45LCAwLjIsIC0zLjAsIC03LjIsIC01LjcsIC02LjEsIC0wLjIsIC02LjYsIC0xLjgsIC02LjAsIC01LjMsIC04LjIsIC01LjcsIC03LjYsIC02LjcsIC05LjYsIC03LjUsIC05LjMsIC03LjEsIC0xMC41LCAtOS42LCAtOS40LCAtNTAuMCwgLTguMSwgLTUwLjAsIC03LjIsIC00LjMsIC02LjgsIC01LjcsIC02LjMsIC01MC4wLCAtOS41LCAtOS42LCAtOC45LCAtNi4yLCAtMTIuOCwgLTYuOCwgLTExLjgsXSxcbiAgICAgICAgICAgIFstNi4wLCAwLjUsIC02LjEsIC0xLjAsIC04LjksIC02LjcsIC04LjksIC04LjIsIC00LjgsIC0yLjksIC00LjQsIC00LjUsIC0xMi40LCAtMTEuNiwgLTExLjIsIC0xMi4yLCAyLjMsIDE0LjYsIDEuOSwgMTIuOSwgLTUuNSwgLTIuNiwgLTQuMSwgLTQuNywgLTEuMiwgMy4wLCAtMS4xLCAxLjYsIC04LjAsIC00LjcsIC04LjcsIC02LjAsIC04LjIsIC00LjcsIC03LjgsIC02LjcsIC0xMC4wLCAtOC4zLCAtOC45LCAtOS45LCAtMTAuOCwgLTcuMSwgLTEwLjAsIC05LjIsIC0xMS42LCAtMTAuMSwgLTEyLjMsIC0xMS45LCAtNTAuMCwgMi4yLCAtNTAuMCwgMC45LCAtNy45LCAtNS45LCAtNy40LCAtNi45LCAtNTAuMCwgLTQuNiwgLTExLjYsIC01LjYsIC05LjcsIC01LjksIC05LjksIC03LjMsXSxcbiAgICAgICAgICAgIFstMS45LCAtNS41LCAtMC42LCAtNS4wLCAtNi41LCAtOC4xLCAtNS42LCAtOC4wLCAtMy4xLCAtNi41LCAtMS45LCAtNi44LCAtMTAuNywgLTEzLjIsIC02LjksIC0xMi41LCAxMC4yLCAxLjksIDExLjksIDIuMSwgLTIuMywgLTQuMSwgLTAuNSwgLTQuNiwgLTAuMSwgLTAuOSwgMi40LCAtMC44LCAtNS4xLCAtNi45LCAtNC44LCAtNi43LCAtMi4zLCAtNy4xLCAtMC44LCAtNy4yLCAtNy4yLCAtOC4wLCAtNS42LCAtOC41LCAtOS40LCAtOS43LCAtNy4yLCAtOS44LCAtOS4yLCAtMTEuMSwgLTkuNSwgLTEwLjcsIC01MC4wLCAtOC43LCAtNTAuMCwgLTguNiwgLTYuMSwgLTcuNSwgLTUuNSwgLTcuNywgLTUwLjAsIC0xMC40LCAtNy43LCAtMTAuMCwgLTcuMywgLTEzLjYsIC02LjQsIC0xMy4zLF0sXG4gICAgICAgICAgICBbLTUuMywgLTEuMCwgLTYuMSwgMS4wLCAtNy44LCAtNy45LCAtOC41LCAtNi4zLCAtNC4zLCAtNC4yLCAtNC44LCAtMi40LCAtMTAuNywgLTEyLjAsIC05LjcsIC05LjcsIDMuMCwgMTIuOSwgMi4xLCAxNC43LCAtNC45LCAtMy44LCAtNC4wLCAtMi40LCAtMS4wLCAwLjgsIC0xLjMsIDMuNCwgLTcuNiwgLTUuNywgLTguMSwgLTMuNSwgLTYuOCwgLTUuOCwgLTcuMiwgLTQuMiwgLTguOSwgLTEwLjIsIC04LjQsIC04LjIsIC05LjksIC04LjQsIC05LjcsIC02LjQsIC0xMS4xLCAtMTEuMSwgLTExLjgsIC0xMC4wLCAtNTAuMCwgMC40LCAtNTAuMCwgMi42LCAtNy4yLCAtNy4wLCAtNy40LCAtNS4xLCAtNTAuMCwgLTUuNywgLTkuOCwgLTMuMiwgLTguNCwgLTcuNCwgLTguOSwgLTUuOSxdLFxuICAgICAgICAgICAgWy04LjUsIC0xMC4zLCAtMTAuMCwgLTkuMCwgLTEuNCwgLTQuOSwgLTMuOSwgLTMuNywgLTEwLjAsIC04LjUsIC0xMC4yLCAtNy44LCAtNy44LCAtMTIuNCwgLTguNSwgLTExLjEsIDAuMCwgLTUuNSwgLTIuMywgLTQuOSwgMTIuNiwgMTAuMCwgMTEuMSwgMTAuNSwgLTYuMCwgLTguMywgLTYuOSwgLTcuNSwgLTIuMiwgLTcuNCwgLTUuMywgLTUuOSwgLTguOSwgLTEyLjUsIC05LjQsIC0xMS42LCAtMC43LCAtMy45LCAtMi4zLCAtMy4wLCAtOS4xLCAtOS44LCAtOS4yLCAtOS41LCAtNS42LCAtOS4wLCAtOC4wLCAtOC41LCAtNTAuMCwgLTE1LjMsIC01MC4wLCAtMTQuMSwgMi4zLCAtMS40LCAwLjMsIC0wLjUsIC01MC4wLCAtMTMuNiwgLTE0LjMsIC0xMS41LCAtNS4zLCAtMTMuNywgLTYuMSwgLTEyLjcsXSxcbiAgICAgICAgICAgIFstMTEuMiwgLTguMSwgLTExLjgsIC04LjgsIC00LjEsIC0xLjksIC0zLjksIC0zLjUsIC0xMS42LCAtNS45LCAtMTEuNSwgLTcuOSwgLTEwLjIsIC0xMC4xLCAtMTAuMiwgLTExLjIsIC0zLjQsIC0yLjYsIC00LjEsIC0zLjgsIDEwLjAsIDEzLjEsIDEwLjcsIDEwLjYsIC04LjEsIC01LjIsIC04LjAsIC02LjcsIC02LjEsIC0zLjcsIC03LjUsIC01LjYsIC0xMS4xLCAtMTAuMywgLTEwLjYsIC0xMS45LCAtMy4yLCAtMS4wLCAtMi4yLCAtMi44LCAtMTAuNSwgLTguMSwgLTkuNCwgLTkuNSwgLTguMywgLTYuOSwgLTkuNCwgLTguOCwgLTUwLjAsIC0xMS4zLCAtNTAuMCwgLTEyLjgsIC0wLjYsIDIuMiwgLTAuMywgMC4xLCAtNTAuMCwgLTEwLjEsIC0xNy41LCAtMTEuMSwgLTguNiwgLTkuOSwgLTguNiwgLTExLjksXSxcbiAgICAgICAgICAgIFstOC45LCAtOS40LCAtOC42LCAtOC45LCAtMi45LCAtNC41LCAtMi4yLCAtMy45LCAtOC44LCAtNy41LCAtOC4xLCAtNy45LCAtOC44LCAtMTEuNiwgLTcuNywgLTExLjksIC0wLjcsIC00LjEsIC0wLjUsIC00LjAsIDExLjEsIDEwLjcsIDEzLjIsIDEwLjQsIC01LjcsIC01LjgsIC0zLjUsIC02LjEsIC0zLjYsIC02LjUsIC0zLjMsIC01LjUsIC05LjQsIC0xMS4wLCAtOC43LCAtMTEuMiwgLTEuOCwgLTIuNywgMC43LCAtMy4wLCAtOS4xLCAtOC4yLCAtNy4zLCAtOS40LCAtNy4yLCAtOC4yLCAtNy4yLCAtOC4yLCAtNTAuMCwgLTEzLjIsIC01MC4wLCAtMTMuMywgMC41LCAtMC45LCAxLjgsIC0wLjYsIC01MC4wLCAtMTEuNCwgLTExLjEsIC0xMC41LCAtNi4xLCAtMTIuOSwgLTUuMCwgLTExLjksXSxcbiAgICAgICAgICAgIFstMTAuOCwgLTkuNiwgLTExLjksIC03LjcsIC0zLjMsIC0zLjgsIC00LjUsIC0xLjYsIC0xMS43LCAtNy43LCAtMTIuMCwgLTYuMiwgLTkuNiwgLTEyLjAsIC05LjgsIC05LjQsIC0zLjIsIC00LjcsIC00LjYsIC0yLjQsIDEwLjUsIDEwLjYsIDEwLjQsIDEyLjYsIC04LjIsIC03LjksIC05LjAsIC00LjcsIC02LjEsIC02LjAsIC03LjUsIC0yLjksIC0xMC45LCAtMTIuMiwgLTExLjIsIC0xMC45LCAtMi40LCAtMi45LCAtMi43LCAtMC45LCAtMTAuNCwgLTkuNywgLTEwLjIsIC04LjAsIC04LjQsIC05LjEsIC05LjMsIC02LjUsIC01MC4wLCAtMTMuMywgLTUwLjAsIC0xMS4wLCAtMC4wLCAtMC40LCAtMC40LCAyLjMsIC01MC4wLCAtMTAuOSwgLTE3LjIsIC04LjMsIC04LjMsIC0xMi43LCAtNy44LCAtOS4zLF0sXG4gICAgICAgICAgICBbMi4xLCAtOC4xLCAxLjIsIC03LjAsIC04LjAsIC05LjUsIC03LjMsIC05LjksIDEwLjUsIC01LjUsIDkuMywgLTUuNywgLTkuNSwgLTE1LjEsIC0xMC4wLCAtMTIuOSwgMi41LCAtMS4yLCAtMC4xLCAtMS4wLCAtNi4wLCAtOC4xLCAtNS43LCAtOC4yLCAxMy44LCAxMS4zLCAxMS44LCAxMi4xLCAtNi4wLCAtOS4xLCAtOS4wLCAtOS41LCAtOC45LCAtMTMuNCwgLTEwLjAsIC0xMy4xLCAtOS45LCAtMTEuNywgLTkuOCwgLTEyLjgsIC01LjksIC05LjQsIC02LjUsIC04LjEsIC0xMC43LCAtMTQuMCwgLTEzLjMsIC0xMy45LCAtNTAuMCwgLTExLjksIC01MC4wLCAtOS43LCAtOC45LCAtMTAuOCwgLTkuMCwgLTExLjEsIC01MC4wLCAtNi41LCAtNS4zLCAtNi4zLCAtMTAuNSwgLTE2LjIsIC0xMC40LCAtMTUuMixdLFxuICAgICAgICAgICAgWzAuMCwgLTUuMCwgMC41LCAtNi44LCAtOS4xLCAtNy44LCAtNy41LCAtOC45LCA3LjcsIC0yLjQsIDguMiwgLTUuMSwgLTExLjksIC0xMy4xLCAtMTAuNCwgLTE0LjMsIC0wLjgsIDMuMCwgLTAuOSwgMC44LCAtOC4zLCAtNS4yLCAtNS44LCAtNy45LCAxMS4zLCAxNS4wLCAxMS4yLCAxMi44LCAtOS43LCAtNS4zLCAtOS4yLCAtNy44LCAtMTEuNywgLTEwLjYsIC0xMC4xLCAtMTIuMiwgLTExLjcsIC04LjgsIC04LjksIC0xMS44LCAtOS4zLCAtNS4wLCAtOC4wLCAtOC4yLCAtMTMuNiwgLTExLjQsIC0xMi44LCAtMTMuMCwgLTUwLjAsIC03LjIsIC01MC4wLCAtOC40LCAtMTEuMCwgLTcuNywgLTguNywgLTEwLjIsIC01MC4wLCAtMS41LCAtNy4xLCAtNC45LCAtMTEuMiwgLTExLjYsIC0xMS42LCAtMTUuMCxdLFxuICAgICAgICAgICAgWzEuNCwgLTcuMywgMi4yLCAtNy4xLCAtOC4wLCAtOS4zLCAtNi40LCAtOS42LCA5LjEsIC01LjUsIDEwLjAsIC01LjQsIC0xMC45LCAtMTQuMywgLTguNCwgLTE0LjAsIDAuOSwgLTEuMSwgMi40LCAtMS4zLCAtNi45LCAtOC4wLCAtMy41LCAtOS4wLCAxMS44LCAxMS4yLCAxMy40LCAxMS40LCAtNy4zLCAtOC44LCAtNi41LCAtOC41LCAtMTAuMCwgLTEyLjUsIC03LjgsIC0xMi41LCAtOS42LCAtMTEuMCwgLTcuMSwgLTEwLjcsIC03LjksIC04LjAsIC00LjMsIC05LjQsIC0xMS40LCAtMTIuMywgLTEwLjksIC0xMi45LCAtNTAuMCwgLTExLjgsIC01MC4wLCAtMTEuMiwgLTkuNCwgLTkuOCwgLTcuMywgLTEwLjUsIC01MC4wLCAtNi4yLCAtMi4yLCAtNi43LCAtOS44LCAtMTUuMiwgLTguNSwgLTE0LjksXSxcbiAgICAgICAgICAgIFswLjIsIC02LjMsIDAuMSwgLTQuMywgLTguMiwgLTguOSwgLTguNSwgLTcuMCwgOC41LCAtNC4xLCA4LjAsIC0yLjEsIC0xMC41LCAtMTMuNCwgLTEwLjIsIC0xMS45LCAwLjIsIDEuNiwgLTAuOCwgMy40LCAtNy41LCAtNi43LCAtNi4xLCAtNC43LCAxMi4xLCAxMi44LCAxMS40LCAxNC43LCAtOC43LCAtNy40LCAtOS40LCAtNS4zLCAtOS45LCAtMTEuOCwgLTEwLjUsIC0xMC4zLCAtOS45LCAtMTAuMSwgLTkuMywgLTkuMywgLTguMSwgLTcuMiwgLTguMCwgLTUuMiwgLTEyLjAsIC0xMi4xLCAtMTIuNiwgLTEwLjksIC01MC4wLCAtNy45LCAtNTAuMCwgLTUuMywgLTkuMywgLTguOCwgLTguOSwgLTcuMCwgLTUwLjAsIC0zLjYsIC03LjEsIC0xLjIsIC0xMC4yLCAtMTIuNywgLTkuOSwgLTExLjAsXSxcbiAgICAgICAgICAgIFstMTAuMiwgLTEzLjQsIC0xMS44LCAtMTIuNCwgLTYuMCwgLTkuNCwgLTcuMSwgLTguNiwgLTkuOCwgLTEyLjksIC0xMC44LCAtMTIuNCwgMi4zLCAtMS40LCAxLjAsIC0xLjAsIC0zLjAsIC04LjAsIC01LjEsIC03LjYsIC0yLjIsIC02LjEsIC0zLjYsIC02LjEsIC02LjAsIC05LjcsIC03LjMsIC04LjcsIDExLjIsIDcuOSwgOC45LCA4LjEsIC0xMi4xLCAtMTcuNCwgLTEzLjIsIC0xNi44LCAtNi4zLCAtOS41LCAtNy41LCAtOC44LCAtMTIuNywgLTE1LjIsIC0xMy4xLCAtMTQuMiwgMC4wLCAtMy4xLCAtMS44LCAtMy4xLCAtNTAuMCwgLTEwLjcsIC01MC4wLCAtOS4zLCAtNC42LCAtOC45LCAtNS45LCAtOC4zLCAtNTAuMCwgLTEyLjgsIC05LjYsIC0xMC42LCA5LjUsIC0zLjIsIDguMiwgLTIuOCxdLFxuICAgICAgICAgICAgWy0xMy41LCAtMTEuMywgLTE0LjAsIC0xMi45LCAtOS4zLCAtNy4xLCAtOC4yLCAtOC45LCAtMTIuNywgLTEwLjMsIC0xMS45LCAtMTIuMywgLTAuNCwgMS40LCAtMC42LCAtMC40LCAtNy4yLCAtNC43LCAtNi45LCAtNS43LCAtNy40LCAtMy43LCAtNi41LCAtNi4wLCAtOS4xLCAtNS4zLCAtOC44LCAtNy40LCA3LjksIDExLjksIDcuOCwgOS4zLCAtMTUuMiwgLTE1LjEsIC0xNC42LCAtMTcuMiwgLTkuNywgLTcuMywgLTguMiwgLTkuMiwgLTE1LjAsIC0xMi44LCAtMTQuMSwgLTE0LjksIC0yLjgsIDAuMiwgLTIuOSwgLTIuMywgLTUwLjAsIC03LjQsIC01MC4wLCAtOC43LCAtOS40LCAtNy4zLCAtOS40LCAtOS40LCAtNTAuMCwgLTguMCwgLTExLjksIC05LjcsIDYuNSwgMC41LCA2LjQsIC0xLjgsXSxcbiAgICAgICAgICAgIFstMTMuMCwgLTE0LjQsIC0xMS45LCAtMTMuOSwgLTcuNywgLTkuMCwgLTYuNywgLTguOCwgLTExLjcsIC0xMi43LCAtMTAuNywgLTEzLjEsIC0wLjIsIC0xLjYsIDEuNywgLTEuNiwgLTUuNywgLTguNywgLTQuOCwgLTguMSwgLTUuMywgLTcuNSwgLTMuMywgLTcuNSwgLTkuMCwgLTkuMiwgLTYuNSwgLTkuNCwgOC45LCA3LjgsIDEwLjEsIDcuOCwgLTE0LjMsIC0xNy43LCAtMTMuMCwgLTE3LjgsIC04LjAsIC05LjQsIC02LjIsIC05LjIsIC0xNS4xLCAtMTQuOSwgLTEyLjIsIC0xNC45LCAtMS44LCAtMy4yLCAtMC44LCAtMy4yLCAtNTAuMCwgLTEwLjgsIC01MC4wLCAtOS45LCAtNy4zLCAtOS42LCAtNi40LCAtOS40LCAtNTAuMCwgLTEyLjMsIC04LjcsIC0xMS4zLCA3LjYsIC0zLjMsIDguNywgLTIuOSxdLFxuICAgICAgICAgICAgWy0xMi41LCAtMTIuOSwgLTEzLjQsIC0xMC4wLCAtOC41LCAtOS4wLCAtNy44LCAtNi44LCAtMTEuOCwgLTExLjMsIC0xMi40LCAtMTAuMSwgLTAuMywgLTAuNSwgLTAuNSwgMS4yLCAtNi4xLCAtNi4wLCAtNi43LCAtMy41LCAtNS45LCAtNS42LCAtNS41LCAtMi45LCAtOS41LCAtNy44LCAtOC41LCAtNS4zLCA4LjEsIDkuMywgNy44LCAxMS44LCAtMTQuNCwgLTE1LjcsIC0xNC41LCAtMTQuNiwgLTguNCwgLTguNywgLTcuOSwgLTcuMSwgLTE0LjMsIC0xMy44LCAtMTMuOCwgLTEyLjMsIC0yLjQsIC0yLjIsIC0yLjksIC0wLjIsIC01MC4wLCAtOC45LCAtNTAuMCwgLTcuMSwgLTguMSwgLTkuMSwgLTguNywgLTYuNiwgLTUwLjAsIC05LjcsIC0xMS40LCAtOC4wLCA2LjgsIC0xLjgsIDYuOSwgMC40LF0sXG4gICAgICAgICAgICBbLTIuNiwgLTYuMywgLTQuOSwgLTQuOSwgLTYuNCwgLTkuNCwgLTcuOSwgLTguNiwgLTYuMywgLTcuNCwgLTguMiwgLTYuNiwgLTkuNywgLTE0LjksIC0xMS4xLCAtMTMuOSwgLTAuMiwgLTguMiwgLTIuMywgLTYuOCwgLTguOSwgLTExLjEsIC05LjQsIC0xMC45LCAtOC45LCAtMTEuNywgLTEwLjAsIC05LjksIC0xMi4xLCAtMTUuMiwgLTE0LjMsIC0xNC40LCAxMS4xLCAyLjksIDkuMiwgMy41LCAtMy4wLCAtNy4wLCAtNC4zLCAtNi4yLCAtMi4yLCAtNi42LCAtMy43LCAtNS43LCAtNi4wLCAtMTAuNCwgLTguNiwgLTkuNSwgLTUwLjAsIC0xNS41LCAtNTAuMCwgLTEzLjksIC03LjgsIC0xMC41LCAtOC43LCAtOS42LCAtNTAuMCwgLTE2LjUsIC0xNy4xLCAtMTQuOCwgLTEyLjEsIC0xOC45LCAtMTIuNCwgLTE3LjQsXSxcbiAgICAgICAgICAgIFstOC41LCAwLjgsIC05LjEsIC0wLjcsIC0xMC4xLCAtNy41LCAtOS4xLCAtOC4yLCAtMTEuNCwgLTMuMSwgLTExLjgsIC00LjQsIC0xNS41LCAtMTQuMywgLTE0LjgsIC0xNS40LCAtNi42LCAtNC43LCAtNy4xLCAtNS44LCAtMTIuNSwgLTEwLjMsIC0xMS4wLCAtMTIuMiwgLTEzLjQsIC0xMC42LCAtMTIuNSwgLTExLjgsIC0xNy40LCAtMTUuMSwgLTE3LjcsIC0xNS43LCAyLjksIDEyLjUsIDMuMSwgMTAuMywgLTcuNywgLTUuMiwgLTYuMiwgLTcuMywgLTUuNCwgLTEuNywgLTUuNCwgLTMuNywgLTExLjYsIC05LjEsIC0xMy4wLCAtMTAuOCwgLTUwLjAsIC0xMC4zLCAtNTAuMCwgLTExLjIsIC05LjgsIC04LjMsIC05LjEsIC05LjcsIC01MC4wLCAtMTIuNywgLTIwLjYsIC0xMy4xLCAtMTYuMCwgLTE2LjYsIC0xNy4wLCAtMTguNCxdLFxuICAgICAgICAgICAgWy01LjAsIC02LjQsIC0zLjQsIC01LjYsIC03LjUsIC05LjMsIC03LjEsIC04LjgsIC04LjgsIC03LjQsIC02LjksIC02LjksIC0xMS40LCAtMTUuMiwgLTkuNywgLTEzLjcsIC0xLjgsIC03LjgsIC0wLjgsIC03LjIsIC05LjQsIC0xMC42LCAtOC43LCAtMTEuMiwgLTEwLjAsIC0xMC4xLCAtNy44LCAtMTAuNSwgLTEzLjIsIC0xNC42LCAtMTMuMCwgLTE0LjUsIDkuMiwgMy4xLCAxMC44LCAzLjAsIC00LjUsIC02LjcsIC0yLjcsIC02LjcsIC01LjAsIC02LjgsIC0yLjUsIC02LjcsIC03LjUsIC0xMC40LCAtNy40LCAtMTAuMiwgLTUwLjAsIC0xNS41LCAtNTAuMCwgLTE0LjIsIC04LjksIC0xMC4yLCAtOC41LCAtMTAuMCwgLTUwLjAsIC0xNS42LCAtMTUuMywgLTE1LjUsIC0xMy4wLCAtMTguOCwgLTEyLjYsIC0xOC4zLF0sXG4gICAgICAgICAgICBbLTguMSwgLTEuMSwgLTguOSwgMS40LCAtOC42LCAtOS4yLCAtOS40LCAtNi44LCAtMTEuMCwgLTQuOSwgLTExLjUsIC0yLjYsIC0xMy43LCAtMTYuOCwgLTE0LjUsIC0xMi42LCAtNi4wLCAtNi43LCAtNy4yLCAtNC4yLCAtMTEuNiwgLTExLjksIC0xMS4yLCAtMTAuOSwgLTEzLjEsIC0xMi4yLCAtMTIuNSwgLTEwLjMsIC0xNi44LCAtMTcuMiwgLTE3LjgsIC0xNC42LCAzLjUsIDEwLjMsIDMuMCwgMTIuNCwgLTYuOSwgLTcuNSwgLTYuOCwgLTQuOSwgLTUuNCwgLTQuMiwgLTUuNCwgLTEuMywgLTEwLjgsIC0xMS41LCAtMTIuNCwgLTguMiwgLTUwLjAsIC0xMi41LCAtNTAuMCwgLTguOSwgLTkuMiwgLTEwLjAsIC05LjQsIC03LjksIC01MC4wLCAtMTQuMywgLTE5LjksIC0xMS40LCAtMTYuMiwgLTE5LjIsIC0xNS44LCAtMTUuOSxdLFxuICAgICAgICAgICAgWy02LjMsIC03LjQsIC04LjAsIC02LjAsIDIuOCwgLTAuNywgMC45LCAwLjMsIC03LjUsIC00LjQsIC04LjQsIC0zLjYsIC0zLjAsIC03LjcsIC0zLjcsIC02LjIsIC01LjMsIC0xMC4wLCAtNy4yLCAtOC45LCAtMC43LCAtMy4yLCAtMS44LCAtMi40LCAtOS45LCAtMTEuNywgLTkuNiwgLTkuOSwgLTYuMywgLTkuNywgLTguMCwgLTguNCwgLTMuMCwgLTcuNywgLTQuNSwgLTYuOSwgMTEuMywgOC4yLCA5LjQsIDkuMSwgLTEuMCwgLTMuMywgLTEuOCwgLTIuNCwgMS41LCAtMi4xLCAtMC40LCAtMS4xLCAtNTAuMCwgLTE0LjUsIC01MC4wLCAtMTIuOSwgMi44LCAtMC4wLCAxLjQsIDAuNywgLTUwLjAsIC04LjcsIC0xNC4xLCAtNy41LCAtNS4yLCAtMTIuNSwgLTYuNSwgLTEwLjcsXSxcbiAgICAgICAgICAgIFstOS45LCAtNS4wLCAtMTAuMCwgLTYuNSwgLTAuNywgMi42LCAtMC4yLCAwLjEsIC0xMC4zLCAtMS44LCAtOS45LCAtMy44LCAtNi40LCAtNC43LCAtNS44LCAtNi43LCAtOC4yLCAtOC4zLCAtOC4wLCAtMTAuMiwgLTMuOSwgLTEuMCwgLTIuNywgLTIuOSwgLTExLjcsIC04LjgsIC0xMS4wLCAtMTAuMSwgLTkuNSwgLTcuMywgLTkuNCwgLTguNywgLTcuMCwgLTUuMiwgLTYuNywgLTcuNSwgOC4yLCAxMS42LCA4LjgsIDkuMSwgLTMuNywgLTAuOSwgLTMuMSwgLTMuMCwgLTIuMCwgMS4yLCAtMi4zLCAtMS4zLCAtNTAuMCwgLTEyLjEsIC01MC4wLCAtMTIuNiwgMC4xLCAyLjUsIDAuNywgMC42LCAtNTAuMCwgLTYuMCwgLTE0LjgsIC03LjUsIC04LjYsIC05LjQsIC04LjUsIC0xMS4yLF0sXG4gICAgICAgICAgICBbLTcuNSwgLTYuMiwgLTcuMiwgLTYuMiwgMC45LCAwLjIsIDIuNSwgMC4yLCAtOC4zLCAtMy41LCAtNy4xLCAtMy43LCAtNC4xLCAtNi4zLCAtMy4xLCAtNi4zLCAtNS43LCAtOC45LCAtNS42LCAtOC40LCAtMi4zLCAtMi4yLCAwLjcsIC0yLjcsIC05LjgsIC04LjksIC03LjEsIC05LjMsIC03LjUsIC04LjIsIC02LjIsIC03LjksIC00LjMsIC02LjIsIC0yLjcsIC02LjgsIDkuNCwgOC44LCAxMi4xLCA4LjgsIC0yLjEsIC0yLjAsIDAuMSwgLTIuNCwgMC4wLCAtMS4xLCAxLjMsIC0wLjgsIC01MC4wLCAtMTEuOSwgLTUwLjAsIC0xMi42LCAxLjIsIDAuNywgMy41LCAwLjgsIC01MC4wLCAtNy4xLCAtMTIuNCwgLTcuMSwgLTcuMSwgLTEwLjYsIC01LjAsIC0xMC42LF0sXG4gICAgICAgICAgICBbLTkuMCwgLTYuNSwgLTEwLjAsIC00LjgsIDAuMSwgLTAuMSwgLTAuMywgMi40LCAtOS45LCAtMy41LCAtMTAuNiwgLTIuMCwgLTUuNCwgLTYuNiwgLTUuNiwgLTQuNCwgLTcuNiwgLTkuOSwgLTguNSwgLTguMiwgLTMuMCwgLTIuOCwgLTMuMCwgLTAuOSwgLTEyLjgsIC0xMS44LCAtMTAuNywgLTkuMywgLTguOCwgLTkuMiwgLTkuMiwgLTcuMSwgLTYuMiwgLTcuMywgLTYuNywgLTQuOSwgOS4xLCA5LjEsIDguOCwgMTEuMiwgLTMuMSwgLTMuMCwgLTMuMywgLTEuMCwgLTEuMSwgLTEuNCwgLTIuMCwgMS4yLCAtNTAuMCwgLTEyLjgsIC01MC4wLCAtMTAuOSwgMC44LCAwLjUsIDAuNywgMi4zLCAtNTAuMCwgLTcuNSwgLTE2LjUsIC01LjksIC03LjgsIC0xMS4xLCAtNy44LCAtOS4wLF0sXG4gICAgICAgICAgICBbLTcuMSwgLTUuNiwgLTkuMSwgLTUuMSwgLTUuOSwgLTguMCwgLTYuOSwgLTcuNCwgLTEuOSwgLTEuNiwgLTQuNywgLTEuNCwgLTkuNiwgLTE0LjYsIC0xMC40LCAtMTMuMCwgLTYuNywgLTEwLjgsIC05LjQsIC05LjksIC05LjEsIC0xMC41LCAtOS4xLCAtMTAuNCwgLTUuOSwgLTkuMywgLTcuOSwgLTguMSwgLTEyLjcsIC0xNS4wLCAtMTUuMSwgLTE0LjMsIC0yLjIsIC01LjQsIC01LjAsIC01LjQsIC0xLjAsIC0zLjcsIC0yLjEsIC0zLjEsIDEyLjgsIDkuNiwgMTEuMSwgMTAuMSwgLTQuOCwgLTkuNCwgLTguMSwgLTguNiwgLTUwLjAsIC0xOC4zLCAtNTAuMCwgLTE1LjQsIC01LjksIC03LjUsIC02LjYsIC03LjEsIC01MC4wLCAtOS41LCAtMTEuNywgLTguNCwgLTEyLjUsIC0xNy4zLCAtMTMuMiwgLTE1LjQsXSxcbiAgICAgICAgICAgIFstMTAuMiwgLTEuNiwgLTEwLjIsIC0zLjIsIC03LjMsIC00LjYsIC02LjUsIC02LjIsIC02LjcsIDMuMCwgLTYuOCwgMC44LCAtMTEuOSwgLTEwLjgsIC0xMS41LCAtMTIuMiwgLTkuNiwgLTcuMSwgLTkuNywgLTguNCwgLTkuOCwgLTguMSwgLTguMiwgLTkuNywgLTkuNCwgLTUuMCwgLTguMCwgLTcuMiwgLTE1LjIsIC0xMi44LCAtMTQuOSwgLTEzLjgsIC02LjYsIC0xLjcsIC02LjgsIC00LjIsIC0zLjMsIC0wLjksIC0yLjAsIC0zLjAsIDkuNiwgMTIuOCwgOS43LCAxMC41LCAtOC41LCAtNS42LCAtOS4zLCAtNy44LCAtNTAuMCwgLTEyLjcsIC01MC4wLCAtMTMuOCwgLTYuOCwgLTUuMSwgLTUuMywgLTYuNSwgLTUwLjAsIC00LjEsIC0xMi44LCAtNS44LCAtMTQuNCwgLTE0LjEsIC0xMy42LCAtMTQuOCxdLFxuICAgICAgICAgICAgWy04LjIsIC00LjcsIC03LjEsIC01LjAsIC02LjUsIC03LjcsIC01LjUsIC02LjksIC00LjEsIC0wLjgsIC0xLjIsIC0wLjksIC0xMC41LCAtMTIuOCwgLTguMiwgLTEzLjAsIC03LjUsIC0xMC4wLCAtNy4yLCAtOS43LCAtOS4yLCAtOS40LCAtNy4zLCAtMTAuMiwgLTYuNSwgLTguMCwgLTQuMywgLTguMCwgLTEzLjEsIC0xNC4xLCAtMTIuMiwgLTEzLjgsIC0zLjcsIC01LjQsIC0yLjUsIC01LjQsIC0xLjgsIC0zLjEsIDAuMSwgLTMuMywgMTEuMSwgOS43LCAxMi45LCA5LjgsIC01LjUsIC04LjEsIC01LjQsIC03LjgsIC01MC4wLCAtMTYuNCwgLTUwLjAsIC0xNC44LCAtNS45LCAtNy4xLCAtNC43LCAtNy4yLCAtNTAuMCwgLTguNCwgLTYuNCwgLTguMSwgLTEyLjEsIC0xNi4yLCAtMTAuMywgLTE1LjgsXSxcbiAgICAgICAgICAgIFstOS4yLCAtMy4wLCAtOS45LCAtMS4yLCAtNi41LCAtNi4xLCAtNi44LCAtNC40LCAtNi40LCAwLjksIC03LjAsIDMuMCwgLTExLjgsIC0xMy4wLCAtMTEuMSwgLTEwLjQsIC05LjMsIC05LjIsIC05LjgsIC02LjQsIC05LjUsIC05LjUsIC05LjQsIC04LjAsIC04LjEsIC04LjIsIC05LjQsIC01LjIsIC0xNC4yLCAtMTQuOSwgLTE0LjksIC0xMi4zLCAtNS43LCAtMy43LCAtNi43LCAtMS4zLCAtMi40LCAtMy4wLCAtMi40LCAtMS4wLCAxMC4xLCAxMC41LCA5LjgsIDEzLjEsIC03LjIsIC04LjAsIC04LjQsIC01LjAsIC01MC4wLCAtMTQuNywgLTUwLjAsIC0xMS40LCAtNi4zLCAtNi43LCAtNS44LCAtNS4wLCAtNTAuMCwgLTYuMSwgLTEzLjQsIC0zLjYsIC0xMy4wLCAtMTYuMCwgLTEzLjcsIC0xMy4zLF0sXG4gICAgICAgICAgICBbLTguMiwgLTEwLjgsIC0xMC4xLCAtOS44LCAtMC40LCAtMy42LCAtMS43LCAtMi45LCAtNy45LCAtOC40LCAtOS44LCAtOC4yLCA2LjIsIDIuMywgMC42LCAyLjksIC03LjEsIC0xMS42LCAtOS4yLCAtMTEuMSwgLTUuNiwgLTguMywgLTcuMiwgLTguNCwgLTEwLjcsIC0xMy42LCAtMTEuNCwgLTEyLjAsIDAuMCwgLTIuOCwgLTEuOCwgLTIuNCwgLTYuMCwgLTExLjYsIC03LjUsIC0xMC44LCAxLjUsIC0yLjAsIDAuMCwgLTEuMSwgLTQuOCwgLTguNSwgLTUuNSwgLTcuMiwgMTEuOSwgOC42LCAxMC4wLCA5LjAsIC01MC4wLCAtMTQuMiwgLTUwLjAsIC0xMi44LCAtNC4xLCAtNy40LCAtNS43LCAtNi41LCAtNTAuMCwgLTExLjAsIC0xNC4zLCAtOS45LCAxLjQsIC03LjksIC0wLjcsIC02LjgsXSxcbiAgICAgICAgICAgIFstMTIuNSwgLTguNywgLTEzLjAsIC05LjksIC0zLjksIC0xLjAsIC0zLjQsIC0yLjksIC0xMi41LCAtNi4zLCAtMTEuNiwgLTguMSwgMy4zLCA2LjAsIC0xLjYsIDMuOCwgLTEwLjUsIC0xMC4xLCAtMTEuMSwgLTExLjEsIC05LjAsIC02LjksIC04LjIsIC05LjEsIC0xNC4wLCAtMTEuNCwgLTEyLjMsIC0xMi4xLCAtMy4xLCAwLjIsIC0zLjIsIC0yLjIsIC0xMC40LCAtOS4xLCAtMTAuNCwgLTExLjUsIC0yLjEsIDEuMiwgLTEuMSwgLTEuNCwgLTkuNCwgLTUuNiwgLTguMSwgLTguMCwgOC42LCAxMi40LCA4LjYsIDkuNSwgLTUwLjAsIC0xMC40LCAtNTAuMCwgLTExLjYsIC03LjIsIC01LjcsIC03LjUsIC03LjQsIC01MC4wLCAtOC42LCAtMTUuNywgLTkuNywgLTMuMCwgLTMuNywgLTMuMiwgLTUuOSxdLFxuICAgICAgICAgICAgWy0xMS4xLCAtMTEuOSwgLTEwLjYsIC0xMS4zLCAtMi42LCAtNC4xLCAtMS43LCAtMy41LCAtMTEuNCwgLTkuNiwgLTkuNiwgLTkuMiwgMy43LCAyLjUsIDEuNiwgMi41LCAtOS42LCAtMTIuMywgLTkuNSwgLTExLjgsIC04LjAsIC05LjQsIC03LjIsIC05LjMsIC0xMy4zLCAtMTIuOCwgLTEwLjksIC0xMi42LCAtMS44LCAtMi45LCAtMC44LCAtMi45LCAtOC42LCAtMTMuMCwgLTcuNCwgLTEyLjQsIC0wLjQsIC0yLjMsIDEuMywgLTIuMCwgLTguMSwgLTkuMywgLTUuNCwgLTguNCwgMTAuMCwgOC42LCAxMS40LCA4LjksIC01MC4wLCAtMTMuNywgLTUwLjAsIC0xMy4yLCAtNi4xLCAtOC4xLCAtNS41LCAtNy41LCAtNTAuMCwgLTExLjMsIC0xMi43LCAtMTAuMSwgLTEuNiwgLTcuOCwgLTAuMywgLTcuMixdLFxuICAgICAgICAgICAgWy0xMS40LCAtMTAuMCwgLTEyLjcsIC04LjIsIC0zLjEsIC0zLjEsIC0yLjgsIC0wLjksIC0xMS43LCAtNy4zLCAtMTIuMSwgLTUuOCwgMy42LCAzLjYsIC0xLjEsIDUuOCwgLTkuNCwgLTExLjksIC0xMC43LCAtMTAuMCwgLTguNSwgLTguOCwgLTguMiwgLTYuNSwgLTEzLjksIC0xMy4wLCAtMTIuOSwgLTEwLjksIC0zLjEsIC0yLjMsIC0zLjIsIC0wLjIsIC05LjUsIC0xMC44LCAtMTAuMiwgLTguMiwgLTEuMSwgLTEuMywgLTAuOCwgMS4yLCAtOC42LCAtNy44LCAtNy44LCAtNS4wLCA5LjAsIDkuNSwgOC45LCAxMi4wLCAtNTAuMCwgLTEzLjAsIC01MC4wLCAtMTAuMywgLTYuMiwgLTcuMCwgLTcuMSwgLTUuNCwgLTUwLjAsIC05LjMsIC0xNC4wLCAtOC4yLCAtMi40LCAtNi4zLCAtMi40LCAtMy45LF0sXG4gICAgICAgICAgICBbLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgMzMuMywgLTUwLjAsIDMwLjYsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgMjkuMiwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsXSxcbiAgICAgICAgICAgIFstMTQuOCwgLTYuMiwgLTE0LjksIC03LjYsIC0xNC42LCAtMTEuNiwgLTEzLjAsIC0xMi4yLCAtMTQuMCwgLTkuMCwgLTE0LjEsIC0xMC4xLCAtMTMuNiwgLTExLjIsIC0xMi40LCAtMTIuNSwgLTguMSwgMi4yLCAtOC43LCAwLjQsIC0xNS4zLCAtMTEuMywgLTEzLjIsIC0xMy4zLCAtMTEuOSwgLTcuMiwgLTExLjgsIC03LjksIC0xMC43LCAtNy40LCAtMTAuOCwgLTguOSwgLTE1LjUsIC0xMC4zLCAtMTUuNSwgLTEyLjUsIC0xNC41LCAtMTIuMSwgLTExLjksIC0xMi44LCAtMTguMywgLTEyLjcsIC0xNi40LCAtMTQuNywgLTE0LjIsIC0xMC40LCAtMTMuNywgLTEzLjAsIC01MC4wLCAxNS4xLCAtNTAuMCwgMTMuMywgLTkuOSwgLTUuOCwgLTguOSwgLTcuNiwgLTUwLjAsIC0xLjUsIC03LjgsIC0zLjAsIC04LjEsIDMuNiwgLTkuNCwgMi4wLF0sXG4gICAgICAgICAgICBbLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgMzAuNiwgLTUwLjAsIDM1LjIsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgMjguNSwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsXSxcbiAgICAgICAgICAgIFstMTMuOCwgLTcuNSwgLTE0LjQsIC01LjEsIC0xMi42LCAtMTEuNiwgLTExLjUsIC0xMC4xLCAtMTMuMiwgLTkuNywgLTEyLjcsIC03LjQsIC0xMS45LCAtMTEuOSwgLTExLjUsIC0xMC4yLCAtNy4yLCAwLjksIC04LjYsIDIuNiwgLTE0LjEsIC0xMi44LCAtMTMuMywgLTExLjAsIC05LjcsIC04LjQsIC0xMS4yLCAtNS4zLCAtOS4zLCAtOC43LCAtOS45LCAtNy4xLCAtMTMuOSwgLTExLjIsIC0xNC4yLCAtOC45LCAtMTIuOSwgLTEyLjYsIC0xMi42LCAtMTAuOSwgLTE1LjQsIC0xMy44LCAtMTQuOCwgLTExLjQsIC0xMi44LCAtMTEuNiwgLTEzLjIsIC0xMC4zLCAtNTAuMCwgMTMuMywgLTUwLjAsIDE1LjIsIC04LjYsIC03LjAsIC04LjQsIC00LjgsIC01MC4wLCAtMy4wLCAtNy4xLCAtMC4xLCAtNy4zLCAyLjMsIC04LjcsIDMuOSxdLFxuICAgICAgICAgICAgWy03LjMsIC02LjMsIC04LjksIC01LjUsIDIuOSwgMC4yLCAxLjUsIDEuMiwgLTguNSwgLTIuMywgLTEwLjAsIC0xLjcsIC01LjYsIC0xMC41LCAtNS41LCAtOS42LCAtNC4zLCAtNy45LCAtNi4xLCAtNy4yLCAyLjMsIC0wLjYsIDAuNSwgLTAuMCwgLTguOSwgLTExLjAsIC05LjQsIC05LjMsIC00LjYsIC05LjQsIC03LjMsIC04LjEsIC03LjgsIC05LjgsIC04LjksIC05LjIsIDIuOCwgMC4xLCAxLjIsIDAuOCwgLTUuOSwgLTYuOCwgLTUuOSwgLTYuMywgLTQuMSwgLTcuMiwgLTYuMSwgLTYuMiwgLTUwLjAsIC05LjksIC01MC4wLCAtOC42LCAxMi41LCA5LjQsIDExLjAsIDkuOCwgLTUwLjAsIC00LjgsIC04LjcsIC0zLjUsIC0wLjAsIC04LjYsIC0yLjEsIC03LjAsXSxcbiAgICAgICAgICAgIFstMTAuMSwgLTQuMywgLTEwLjgsIC01LjgsIDAuMSwgMi4zLCAwLjcsIDAuNiwgLTEwLjQsIC0wLjIsIC0xMC44LCAtMi4wLCAtOC44LCAtOS4yLCAtOC4wLCAtOS43LCAtNi44LCAtNS45LCAtNy41LCAtNy4wLCAtMS40LCAyLjIsIC0wLjksIC0wLjQsIC0xMC44LCAtNy43LCAtOS44LCAtOC44LCAtOC45LCAtNy4zLCAtOS42LCAtOS4xLCAtMTAuNSwgLTguMywgLTEwLjIsIC0xMC4wLCAtMC4wLCAyLjUsIDAuNywgMC41LCAtNy41LCAtNS4xLCAtNy4xLCAtNi43LCAtNy40LCAtNS43LCAtOC4xLCAtNy4wLCAtNTAuMCwgLTUuOCwgLTUwLjAsIC03LjAsIDkuNCwgMTIuNywgMTAuMSwgMTAuMCwgLTUwLjAsIC0xLjUsIC0xMS4zLCAtMy4zLCAtNS40LCAtNC4yLCAtNS42LCAtNi44LF0sXG4gICAgICAgICAgICBbLTguNCwgLTYuMiwgLTguOSwgLTUuOSwgMS44LCAwLjQsIDIuNywgMS4yLCAtOS4xLCAtMS4yLCAtOC44LCAtMS41LCAtNy4yLCAtMTAuNSwgLTQuOSwgLTkuNiwgLTUuNywgLTcuNCwgLTUuNSwgLTcuNCwgMC4zLCAtMC4zLCAxLjgsIC0wLjQsIC05LjAsIC04LjcsIC03LjMsIC04LjksIC01LjksIC05LjQsIC02LjQsIC04LjcsIC04LjcsIC05LjEsIC04LjUsIC05LjQsIDEuNCwgMC43LCAzLjUsIDAuNywgLTYuNiwgLTUuMywgLTQuNywgLTUuOCwgLTUuNywgLTcuNSwgLTUuNSwgLTcuMSwgLTUwLjAsIC04LjksIC01MC4wLCAtOC40LCAxMS4wLCAxMC4xLCAxMy4yLCAxMC4yLCAtNTAuMCwgLTQuMiwgLTYuMSwgLTMuNiwgLTMuNSwgLTguNCwgLTEuMiwgLTYuOCxdLFxuICAgICAgICAgICAgWy05LjEsIC01LjQsIC0xMC40LCAtNC4yLCAxLjAsIDAuNSwgMC42LCAyLjQsIC05LjYsIC0xLjUsIC0xMC41LCAtMC41LCAtOC45LCAtMTAuNSwgLTcuMiwgLTguMywgLTYuMywgLTYuOSwgLTcuNywgLTUuMSwgLTAuNSwgMC4xLCAtMC42LCAyLjMsIC0xMS4xLCAtMTAuMiwgLTEwLjUsIC03LjAsIC04LjMsIC05LjQsIC05LjQsIC02LjYsIC05LjYsIC05LjcsIC0xMC4wLCAtNy45LCAwLjcsIDAuNiwgMC44LCAyLjMsIC03LjEsIC02LjUsIC03LjIsIC01LjAsIC02LjUsIC03LjQsIC03LjUsIC01LjQsIC01MC4wLCAtNy42LCAtNTAuMCwgLTQuOCwgOS44LCAxMC4wLCAxMC4yLCAxMi4xLCAtNTAuMCwgLTMuMSwgLTExLjQsIC0wLjcsIC00LjYsIC02LjYsIC00LjksIC0zLjksXSxcbiAgICAgICAgICAgIFstNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAyOS4yLCAtNTAuMCwgMjguNSwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAzMy4zLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCwgLTUwLjAsIC01MC4wLCAtNTAuMCxdLFxuICAgICAgICAgICAgWy0xMy4wLCAtNy4wLCAtMTMuMSwgLTguMywgLTkuMiwgLTYuNSwgLTguOSwgLTcuNiwgLTkuOCwgLTAuNywgLTkuMiwgLTIuMSwgLTEyLjQsIC0xMC4zLCAtMTIuNCwgLTExLjYsIC05LjUsIC00LjYsIC0xMC40LCAtNS43LCAtMTMuNiwgLTEwLjEsIC0xMS40LCAtMTAuOSwgLTYuNSwgLTEuNSwgLTYuMiwgLTMuNiwgLTEyLjgsIC04LjAsIC0xMi4zLCAtOS43LCAtMTYuNSwgLTEyLjcsIC0xNS42LCAtMTQuMywgLTguNywgLTYuMCwgLTcuMSwgLTcuNSwgLTkuNSwgLTQuMSwgLTguNCwgLTYuMSwgLTExLjAsIC04LjYsIC0xMS4zLCAtOS4zLCAtNTAuMCwgLTEuNSwgLTUwLjAsIC0zLjAsIC00LjgsIC0xLjUsIC00LjIsIC0zLjEsIC01MC4wLCAxNi40LCAtNS4xLCAxNC4yLCAtMTAuMSwgLTQuMywgLTEwLjAsIC01LjQsXSxcbiAgICAgICAgICAgIFstMTMuNSwgLTE2LjMsIC0xMS44LCAtMTUuNSwgLTEzLjYsIC0xNS4zLCAtMTIuMSwgLTE2LjEsIC03LjcsIC0xMy4zLCAtNC4yLCAtMTIuNiwgLTE0LjEsIC0xNi4yLCAtMTAuMywgLTE1LjQsIC05LjYsIC0xMS42LCAtNy43LCAtOS44LCAtMTQuMywgLTE3LjUsIC0xMS4xLCAtMTcuMiwgLTUuMywgLTcuMSwgLTIuMiwgLTcuMSwgLTkuNiwgLTExLjksIC04LjcsIC0xMS40LCAtMTcuMSwgLTIwLjYsIC0xNS4zLCAtMTkuOSwgLTE0LjEsIC0xNC44LCAtMTIuNCwgLTE2LjUsIC0xMS43LCAtMTIuOCwgLTYuNCwgLTEzLjQsIC0xNC4zLCAtMTUuNywgLTEyLjcsIC0xNC4wLCAtNTAuMCwgLTcuOCwgLTUwLjAsIC03LjEsIC04LjcsIC0xMS4zLCAtNi4xLCAtMTEuNCwgLTUwLjAsIC01LjEsIDE4LjYsIC00LjgsIC04LjYsIC04LjEsIC00LjUsIC03LjMsXSxcbiAgICAgICAgICAgIFstMTIuNCwgLTguMiwgLTEzLjAsIC01LjksIC03LjcsIC03LjgsIC03LjQsIC01LjgsIC04LjgsIC0yLjAsIC05LjMsIC0wLjQsIC0xMS42LCAtMTEuMywgLTExLjYsIC05LjQsIC04LjksIC01LjYsIC0xMC4wLCAtMy4yLCAtMTEuNSwgLTExLjEsIC0xMC41LCAtOC4zLCAtNi4zLCAtNC45LCAtNi43LCAtMS4yLCAtMTAuNiwgLTkuNywgLTExLjMsIC04LjAsIC0xNC44LCAtMTMuMSwgLTE1LjUsIC0xMS40LCAtNy41LCAtNy41LCAtNy4xLCAtNS45LCAtOC40LCAtNS44LCAtOC4xLCAtMy42LCAtOS45LCAtOS43LCAtMTAuMSwgLTguMiwgLTUwLjAsIC0zLjAsIC01MC4wLCAtMC4xLCAtMy41LCAtMy4zLCAtMy42LCAtMC43LCAtNTAuMCwgMTQuMiwgLTQuOCwgMTYuNCwgLTguOSwgLTUuOCwgLTguOSwgLTMuNCxdLFxuICAgICAgICAgICAgWy0xMC43LCAtMTMuMiwgLTEyLjQsIC0xMS42LCAtNC44LCAtOC40LCAtNi4xLCAtNy4yLCAtMTAuMywgLTExLjgsIC0xMS4wLCAtMTEuNiwgMi44LCAtMS43LCAwLjcsIC0xLjEsIC02LjIsIC05LjcsIC03LjMsIC04LjQsIC01LjMsIC04LjYsIC02LjEsIC04LjMsIC0xMC41LCAtMTEuMiwgLTkuOCwgLTEwLjIsIDkuNSwgNi41LCA3LjYsIDYuOCwgLTEyLjEsIC0xNi4wLCAtMTMuMCwgLTE2LjIsIC01LjIsIC04LjYsIC03LjEsIC03LjgsIC0xMi41LCAtMTQuNCwgLTEyLjEsIC0xMy4wLCAxLjQsIC0zLjAsIC0xLjYsIC0yLjQsIC01MC4wLCAtOC4xLCAtNTAuMCwgLTcuMywgLTAuMCwgLTUuNCwgLTMuNSwgLTQuNiwgLTUwLjAsIC0xMC4xLCAtOC42LCAtOC45LCAxMy4yLCAtMC45LCA5LjcsIC0wLjMsXSxcbiAgICAgICAgICAgIFstMTguMSwgLTEyLjMsIC0xOS40LCAtMTQuMiwgLTEyLjIsIC05LjUsIC0xMS41LCAtMTAuOCwgLTE3LjksIC0xMS45LCAtMTguMiwgLTEzLjksIC02LjQsIC0zLjcsIC02LjgsIC01LjQsIC0xMi44LCAtNS45LCAtMTMuNiwgLTcuNCwgLTEzLjcsIC05LjksIC0xMi45LCAtMTIuNywgLTE2LjIsIC0xMS42LCAtMTUuMiwgLTEyLjcsIC0zLjIsIDAuNSwgLTMuMywgLTEuOCwgLTE4LjksIC0xNi42LCAtMTguOCwgLTE5LjIsIC0xMi41LCAtOS40LCAtMTAuNiwgLTExLjEsIC0xNy4zLCAtMTQuMSwgLTE2LjIsIC0xNi4wLCAtNy45LCAtMy43LCAtNy44LCAtNi4zLCAtNTAuMCwgMy42LCAtNTAuMCwgMi4zLCAtOC42LCAtNC4yLCAtOC40LCAtNi42LCAtNTAuMCwgLTQuMywgLTguMSwgLTUuOCwgLTAuOSwgMTQuMiwgLTEuOCwgMTEuNixdLFxuICAgICAgICAgICAgWy0xMS44LCAtMTMuMSwgLTExLjUsIC0xMi4wLCAtNi4yLCAtOC4zLCAtNS40LCAtNy40LCAtMTEuOCwgLTEyLjMsIC0xMS4xLCAtMTEuNCwgMC41LCAtMi41LCAyLjQsIC0xLjYsIC02LjgsIC05LjksIC02LjQsIC04LjksIC02LjEsIC04LjYsIC01LjAsIC03LjgsIC0xMC40LCAtMTEuNiwgLTguNSwgLTkuOSwgOC4yLCA2LjQsIDguNywgNi45LCAtMTIuNCwgLTE3LjAsIC0xMi42LCAtMTUuOCwgLTYuNSwgLTguNSwgLTUuMCwgLTcuOCwgLTEzLjIsIC0xMy42LCAtMTAuMywgLTEzLjcsIC0wLjcsIC0zLjIsIC0wLjMsIC0yLjQsIC01MC4wLCAtOS40LCAtNTAuMCwgLTguNywgLTIuMSwgLTUuNiwgLTEuMiwgLTQuOSwgLTUwLjAsIC0xMC4wLCAtNC41LCAtOC45LCA5LjcsIC0xLjgsIDExLjMsIC0wLjksXSxcbiAgICAgICAgICAgIFstMTcuMiwgLTEzLjMsIC0xNy44LCAtMTEuNiwgLTExLjAsIC0xMS4xLCAtMTAuNCwgLTkuMCwgLTE2LjAsIC0xMi43LCAtMTYuMSwgLTExLjEsIC01LjIsIC01LjQsIC02LjAsIC0zLjMsIC0xMS44LCAtNy4zLCAtMTMuMywgLTUuOSwgLTEyLjcsIC0xMS45LCAtMTEuOSwgLTkuMywgLTE1LjIsIC0xNS4wLCAtMTQuOSwgLTExLjAsIC0yLjgsIC0xLjgsIC0yLjksIDAuNCwgLTE3LjQsIC0xOC40LCAtMTguMywgLTE1LjksIC0xMC43LCAtMTEuMiwgLTEwLjYsIC05LjAsIC0xNS40LCAtMTQuOCwgLTE1LjgsIC0xMy4zLCAtNi44LCAtNS45LCAtNy4yLCAtMy45LCAtNTAuMCwgMi4wLCAtNTAuMCwgMy45LCAtNy4wLCAtNi44LCAtNi44LCAtMy45LCAtNTAuMCwgLTUuNCwgLTcuMywgLTMuNCwgLTAuMywgMTEuNiwgLTAuOSwgMTQuMSxdXTtcbiAgICAgICAgdGhpcy5UUkFOUyA9IFtbNSwgMCwgMCwgNF0sXG4gICAgICAgICAgICBbMCwgNSwgNCwgMF0sXG4gICAgICAgICAgICBbMCwgNCwgNSwgMF0sXG4gICAgICAgICAgICBbNCwgMCwgMCwgNV1dO1xuICAgICAgICB0aGlzLkNPTkJMTyA9IHsgJ0EnOiAwLCAnUic6IDEsICdOJzogMiwgJ0QnOiAzLCAnQyc6IDQsICdRJzogNSwgJ0UnOiA2LCAnRyc6IDcsICdIJzogOCwgJ0knOiA5LCAnTCc6IDEwLCAnSyc6IDExLCAnTSc6IDEyLCAnRic6IDEzLCAnUCc6IDE0LCAnUyc6IDE1LCAnVCc6IDE2LCAnVyc6IDE3LCAnWSc6IDE4LCAnVic6IDE5LCAnQic6IDIwLCAnWic6IDIxLCAnWCc6IDIyLCAnKic6IDIzIH07XG4gICAgICAgIHRoaXMuQ09OTlVDTCA9IHsgJ0EnOiAwLCAnVCc6IDEsICdDJzogMiwgJ0cnOiAzIH07XG4gICAgICAgIHRoaXMuQ09OU0NITiA9IHsgJ0FBQSc6IDAsICdBQUMnOiAxLCAnQUFHJzogMiwgJ0FBVCc6IDMsICdBQ0EnOiA0LCAnQUNDJzogNSwgJ0FDRyc6IDYsICdBQ1QnOiA3LCAnQUdBJzogOCwgJ0FHQyc6IDksICdBR0cnOiAxMCwgJ0FHVCc6IDExLCAnQVRBJzogMTIsICdBVEMnOiAxMywgJ0FURyc6IDE0LCAnQVRUJzogMTUsICdDQUEnOiAxNiwgJ0NBQyc6IDE3LCAnQ0FHJzogMTgsICdDQVQnOiAxOSwgJ0NDQSc6IDIwLCAnQ0NDJzogMjEsICdDQ0cnOiAyMiwgJ0NDVCc6IDIzLCAnQ0dBJzogMjQsICdDR0MnOiAyNSwgJ0NHRyc6IDI2LCAnQ0dUJzogMjcsICdDVEEnOiAyOCwgJ0NUQyc6IDI5LCAnQ1RHJzogMzAsICdDVFQnOiAzMSwgJ0dBQSc6IDMyLCAnR0FDJzogMzMsICdHQUcnOiAzNCwgJ0dBVCc6IDM1LCAnR0NBJzogMzYsICdHQ0MnOiAzNywgJ0dDRyc6IDM4LCAnR0NUJzogMzksICdHR0EnOiA0MCwgJ0dHQyc6IDQxLCAnR0dHJzogNDIsICdHR1QnOiA0MywgJ0dUQSc6IDQ0LCAnR1RDJzogNDUsICdHVEcnOiA0NiwgJ0dUVCc6IDQ3LCAnVEFBJzogNDgsICdUQUMnOiA0OSwgJ1RBRyc6IDUwLCAnVEFUJzogNTEsICdUQ0EnOiA1MiwgJ1RDQyc6IDUzLCAnVENHJzogNTQsICdUQ1QnOiA1NSwgJ1RHQSc6IDU2LCAnVEdDJzogNTcsICdUR0cnOiA1OCwgJ1RHVCc6IDU5LCAnVFRBJzogNjAsICdUVEMnOiA2MSwgJ1RURyc6IDYyLCAnVFRUJzogNjMgfTtcbiAgICAgICAgdGhpcy5zZXRNZXRob2QoYWxpZ25HcmlkXyk7XG4gICAgICAgIHRoaXMuc2V0U2VxdWVuY2VzKHNlcTFfLCBzZXEyXyk7XG4gICAgICAgIHRoaXMuc2V0R2FwKGdhcF8pO1xuICAgIH1cbiAgICBmaWxsTmVlZGxlbWFuKCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8PSB0aGlzLmxlbjE7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bMF0udmFsdWUgPSAtaSAqIHRoaXMuZ2FwO1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bMF0ucGFyZW50SSA9IGkgLSAxO1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bMF0ucGFyZW50SiA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdGhpcy5sZW4yOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkWzBdW2ldLnZhbHVlID0gLWkgKiB0aGlzLmdhcDtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkWzBdW2ldLnBhcmVudEkgPSAwO1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbMF1baV0ucGFyZW50SiA9IGkgLSAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIGZpbGxPbmUoaSwgaikge1xuICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS52YWx1ZSA9IE1hdGgubWF4KHRoaXMuZHBHcmlkW2kgLSAxXVtqIC0gMV0udmFsdWUgKyB0aGlzLnNjb3Jlc1tpIC0gMV1baiAtIDFdLCBNYXRoLm1heCh0aGlzLmRwR3JpZFtpIC0gMV1bal0udmFsdWUgLSB0aGlzLmdhcCwgdGhpcy5kcEdyaWRbaV1baiAtIDFdLnZhbHVlIC0gdGhpcy5nYXApKTtcbiAgICAgICAgaWYgKHRoaXMuZHBHcmlkW2ldW2pdLnZhbHVlID09IHRoaXMuZHBHcmlkW2kgLSAxXVtqIC0gMV0udmFsdWUgKyB0aGlzLnNjb3Jlc1tpIC0gMV1baiAtIDFdKSB7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRJID0gaSAtIDE7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRKID0gaiAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGhpcy5kcEdyaWRbaV1bal0udmFsdWUgPT0gdGhpcy5kcEdyaWRbaSAtIDFdW2pdLnZhbHVlIC0gdGhpcy5nYXApIHtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEkgPSBpIC0gMTtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEogPSBqO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SSA9IGk7XG4gICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRKID0gaiAtIDE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ3JpZEZyb21OYW1lKHBhdGgpIHtcbiAgICAgICAgc3dpdGNoIChwYXRoKSB7XG4gICAgICAgICAgICBjYXNlICdCTE9TVU00NSc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLkJMT1NVTTQ1O1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTkJMTztcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQkxPU1VNNTAnOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5CTE9TVU01MDtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05CTE87XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0JMT1NVTTYyJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuQkxPU1VNNjI7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OQkxPO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdCTE9TVU04MCc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLkJMT1NVTTgwO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTkJMTztcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnQkxPU1VNOTAnOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5CTE9TVU05MDtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05CTE87XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1BBTTMwJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuUEFNMzA7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuQ09OQkxPO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdQQU03MCc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLlBBTTcwO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTkJMTztcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUEFNMjUwJzpcbiAgICAgICAgICAgICAgICB0aGlzLmFsaWduR3JpZCA9IHRoaXMuUEFNMjUwO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTkJMTztcbiAgICAgICAgICAgICAgICB0aGlzLnN0ZXAgPSAxO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnTlVDTEVPVElERVMnOlxuICAgICAgICAgICAgICAgIHRoaXMuYWxpZ25HcmlkID0gdGhpcy5OVUNMRU9USURFUztcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05OVUNMO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdUUkFOUyc6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLlRSQU5TO1xuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLkNPTk5VQ0w7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1NDSE5FSURFUic6XG4gICAgICAgICAgICAgICAgdGhpcy5hbGlnbkdyaWQgPSB0aGlzLlNDSE5FSURFUjtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5DT05TQ0hOO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RlcCA9IDM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5maWxsU2NvcmVzKCk7XG4gICAgfVxuICAgIGNvbnN0cnVjdFJlc3VsdChpLCBqKSB7XG4gICAgICAgIGxldCByZXMxID0gXCJcIiwgcmVzMiA9IFwiXCIsIGdhcFMgPSBcIlwiO1xuICAgICAgICBsZXQgdG90YWwgPSB0aGlzLmRwR3JpZFtpXVtqXS52YWx1ZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0ZXA7IGkrKykge1xuICAgICAgICAgICAgZ2FwUyArPSAnfCc7XG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKGkgPiAwIHx8IGogPiAwKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SSA9PSBpKSB7XG4gICAgICAgICAgICAgICAgcmVzMSA9IGdhcFMgKyByZXMxO1xuICAgICAgICAgICAgICAgIHJlczIgPSB0aGlzLnNlcTIuc3Vic3RyKChqIC0gMSkgKiB0aGlzLnN0ZXAsIHRoaXMuc3RlcCkgKyByZXMyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SiA9PSBqKSB7XG4gICAgICAgICAgICAgICAgcmVzMiA9IGdhcFMgKyByZXMyO1xuICAgICAgICAgICAgICAgIHJlczEgPSB0aGlzLnNlcTEuc3Vic3RyKChpIC0gMSkgKiB0aGlzLnN0ZXAsIHRoaXMuc3RlcCkgKyByZXMxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGkgLSAxID49IDApXG4gICAgICAgICAgICAgICAgICAgIHJlczEgPSB0aGlzLnNlcTEuc3Vic3RyKChpIC0gMSkgKiB0aGlzLnN0ZXAsIHRoaXMuc3RlcCkgKyByZXMxO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgcmVzMSA9IGdhcFMgKyByZXMxO1xuICAgICAgICAgICAgICAgIGlmIChqIC0gMSA+PSAwKVxuICAgICAgICAgICAgICAgICAgICByZXMyID0gdGhpcy5zZXEyLnN1YnN0cigoaiAtIDEpICogdGhpcy5zdGVwLCB0aGlzLnN0ZXApICsgcmVzMjtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHJlczIgPSBnYXBTICsgcmVzMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB0ZW1wSSA9IGk7XG4gICAgICAgICAgICBpID0gdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50STtcbiAgICAgICAgICAgIGogPSB0aGlzLmRwR3JpZFt0ZW1wSV1bal0ucGFyZW50SjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IEFsaWduZWQocmVzMSwgcmVzMiwgdG90YWwpO1xuICAgIH1cbiAgICBmaWxsU2NvcmVzKCkge1xuICAgICAgICB0aGlzLnNjb3JlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGVuMTsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLnNjb3Jlcy5wdXNoKFtdKTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5sZW4yOyBqKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNjb3Jlc1tpXS5wdXNoKHRoaXMuYWxpZ25HcmlkW3RoaXMuY29ubmVjdGlvbnNbdGhpcy5zZXExLnN1YnN0cihpICogdGhpcy5zdGVwLCB0aGlzLnN0ZXApXV1bdGhpcy5jb25uZWN0aW9uc1t0aGlzLnNlcTIuc3Vic3RyKGogKiB0aGlzLnN0ZXAsIHRoaXMuc3RlcCldXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdHlwZVJlYygpIHtcbiAgICAgICAgaWYgKC9bQVRHQ10qLy50ZXN0KHRoaXMuc2VxMSkgJiYgL1tBVEdDXSovLnRlc3QodGhpcy5zZXEyKSlcbiAgICAgICAgICAgIHJldHVybiBcIk5VQ0xFT1RJREVTXCI7XG4gICAgICAgIGlmICgvW0FSTkRDUUVHSElMS01GUFNUV1lWQlpYKl0qLy50ZXN0KHRoaXMuc2VxMSkgJiYgL1tBUk5EQ1FFR0hJTEtNRlBTVFdZVkJaWCpdKi8udGVzdCh0aGlzLnNlcTIpKVxuICAgICAgICAgICAgcmV0dXJuIFwiQkxPU1VNNjJcIjtcbiAgICAgICAgdGhyb3cgRXJyb3IoXCJDYW4ndCByZWNvZ25pemUgc2VxdWVuY2UgdHlwZVwiKTtcbiAgICB9XG4gICAgbmVlZGxlbWFuV3VuY2goKSB7XG4gICAgICAgIHRoaXMuZHBHcmlkID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sZW4xICsgMTsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgcm93ID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMubGVuMiArIDE7IGorKylcbiAgICAgICAgICAgICAgICByb3cucHVzaChuZXcgQ2VsbCgpKTtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkLnB1c2gocm93KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpbGxOZWVkbGVtYW4oKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdGhpcy5sZW4xOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAxOyBqIDw9IHRoaXMubGVuMjsgaisrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxsT25lKGksIGopO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdFJlc3VsdCh0aGlzLmxlbjEsIHRoaXMubGVuMik7XG4gICAgfVxuICAgIHNtaXRoV2F0ZXJtYW4oKSB7XG4gICAgICAgIHRoaXMuZHBHcmlkID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sZW4xICsgMTsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgcm93ID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMubGVuMiArIDE7IGorKylcbiAgICAgICAgICAgICAgICByb3cucHVzaChuZXcgQ2VsbCgpKTtcbiAgICAgICAgICAgIHRoaXMuZHBHcmlkLnB1c2gocm93KTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgYmVzdFZhbCA9IDA7XG4gICAgICAgIGxldCBiZXN0SSA9IDAsIGJlc3RKID0gMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdGhpcy5sZW4xOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAxOyBqIDw9IHRoaXMubGVuMjsgaisrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxsT25lKGksIGopO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRwR3JpZFtpXVtqXS52YWx1ZSA8PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnZhbHVlID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcEdyaWRbaV1bal0ucGFyZW50SSA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEogPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmRwR3JpZFt0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRJXVt0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRKXS52YWx1ZSA9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHBHcmlkW2ldW2pdLnBhcmVudEkgPSAwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRwR3JpZFtpXVtqXS5wYXJlbnRKID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZHBHcmlkW2ldW2pdLnZhbHVlID4gYmVzdFZhbCkge1xuICAgICAgICAgICAgICAgICAgICBiZXN0VmFsID0gdGhpcy5kcEdyaWRbaV1bal0udmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGJlc3RJID0gaTtcbiAgICAgICAgICAgICAgICAgICAgYmVzdEogPSBqO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3RSZXN1bHQoYmVzdEksIGJlc3RKKTtcbiAgICB9XG4gICAgc2V0U2VxdWVuY2VzKHNlcTFfLCBzZXEyXykge1xuICAgICAgICB0aGlzLnNlcTEgPSBzZXExXztcbiAgICAgICAgdGhpcy5zZXEyID0gc2VxMl87XG4gICAgICAgIHRoaXMubGVuMSA9IHRoaXMuc2VxMS5sZW5ndGggLyB0aGlzLnN0ZXA7XG4gICAgICAgIHRoaXMubGVuMiA9IHRoaXMuc2VxMi5sZW5ndGggLyB0aGlzLnN0ZXA7XG4gICAgICAgIHRoaXMuZmlsbFNjb3JlcygpO1xuICAgIH1cbiAgICBzZXRHYXAoZ2FwXykge1xuICAgICAgICB0aGlzLmdhcCA9IGdhcF87XG4gICAgfVxuICAgIHNldE1ldGhvZChhbGlnbkdyaWRfID0gXCJcIikge1xuICAgICAgICBpZiAoYWxpZ25HcmlkXyA9PSBcIkFVVE9cIikge1xuICAgICAgICAgICAgYWxpZ25HcmlkXyA9IHRoaXMudHlwZVJlYygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ3JpZEZyb21OYW1lKGFsaWduR3JpZF8pO1xuICAgIH1cbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gREc7IiwibW9kdWxlLmV4cG9ydHMgPSByeGpzOyIsIm1vZHVsZS5leHBvcnRzID0gdWk7IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsImltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgeyBTZXF1ZW5jZUFsaWdubWVudCB9IGZyb20gJy4vc2VxX2FsaWduJztcbmV4cG9ydCBsZXQgX3BhY2thZ2UgPSBuZXcgREcuUGFja2FnZSgpO1xuaW1wb3J0IHsgV2ViTG9nbyB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvYmlvL3NyYy92aWV3ZXJzL3dlYi1sb2dvJztcbi8vbmFtZTogc2VxdWVuY2VBbGlnbm1lbnRcbi8vaW5wdXQ6IHN0cmluZyBhbGlnblR5cGUge2Nob2ljZXM6IFsnTG9jYWwgYWxpZ25tZW50JywgJ0dsb2JhbCBhbGlnbm1lbnQnXX1cbi8vaW5wdXQ6IHN0cmluZyBhbGlnblRhYmxlIHtjaG9pY2VzOiBbJ0FVVE8nLCAnTlVDTEVPVElERVMnLCAnQkxPU1VNNDUnLCAnQkxPU1VNNTAnLCdCTE9TVU02MicsJ0JMT1NVTTgwJywnQkxPU1VNOTAnLCdQQU0zMCcsJ1BBTTcwJywnUEFNMjUwJywnU0NITkVJREVSJywnVFJBTlMnXX1cbi8vaW5wdXQ6IGRvdWJsZSBnYXBcbi8vaW5wdXQ6IHN0cmluZyBzZXExXG4vL2lucHV0OiBzdHJpbmcgc2VxMlxuLy9vdXRwdXQ6IG9iamVjdCByZXMgXG5leHBvcnQgZnVuY3Rpb24gc2VxdWVuY2VBbGlnbm1lbnQoYWxpZ25UeXBlLCBhbGlnblRhYmxlLCBnYXAsIHNlcTEsIHNlcTIpIHtcbiAgICBsZXQgdG9BbGlnbiA9IG5ldyBTZXF1ZW5jZUFsaWdubWVudChzZXExLCBzZXEyLCBnYXAsIGFsaWduVGFibGUpO1xuICAgIGxldCByZXMgPSBhbGlnblR5cGUgPT0gJ0xvY2FsIGFsaWdubWVudCcgPyB0b0FsaWduLnNtaXRoV2F0ZXJtYW4oKSA6IHRvQWxpZ24ubmVlZGxlbWFuV3VuY2goKTtcbiAgICByZXR1cm4gcmVzO1xufVxuLy9uYW1lOiBXZWJMb2dvXG4vL2Rlc2NyaXB0aW9uOiBXZWJMb2dvIHZpZXdlclxuLy90YWdzOiB2aWV3ZXIsIHBhbmVsXG4vL291dHB1dDogdmlld2VyIHJlc3VsdFxuZXhwb3J0IGZ1bmN0aW9uIHdlYkxvZ29WaWV3ZXIoKSB7XG4gICAgcmV0dXJuIG5ldyBXZWJMb2dvKCk7XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=
|