sliftutils 1.2.23 → 1.2.25

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.
@@ -0,0 +1,2406 @@
1
+ "use strict";
2
+ // @ts-nocheck
3
+ Object.defineProperty(exports, "__esModule", { value: true , configurable: true});
4
+ //exports.stringify = exports.parse = void 0;
5
+ /**
6
+ * Bundled by jsDelivr using Rollup v2.79.2 and Terser v5.39.0.
7
+ * Original file: /npm/yaml@2.8.1/browser/index.js
8
+ *
9
+ * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
10
+ */
11
+ const e = Symbol.for("yaml.alias"), t = Symbol.for("yaml.document"), n = Symbol.for("yaml.map"), s = Symbol.for("yaml.pair"), i = Symbol.for("yaml.scalar"), o = Symbol.for("yaml.seq"), r = Symbol.for("yaml.node.type"), a = t => !!t && "object" == typeof t && t[r] === e, c = e => !!e && "object" == typeof e && e[r] === t, l = e => !!e && "object" == typeof e && e[r] === n, u = e => !!e && "object" == typeof e && e[r] === s, f = e => !!e && "object" == typeof e && e[r] === i, h = e => !!e && "object" == typeof e && e[r] === o;
12
+ function d(e) { if (e && "object" == typeof e)
13
+ switch (e[r]) {
14
+ case n:
15
+ case o: return !0;
16
+ } return !1; }
17
+ function p(t) { if (t && "object" == typeof t)
18
+ switch (t[r]) {
19
+ case e:
20
+ case n:
21
+ case i:
22
+ case o: return !0;
23
+ } return !1; }
24
+ const m = e => (f(e) || d(e)) && !!e.anchor, y = Symbol("break visit"), g = Symbol("skip children"), b = Symbol("remove node");
25
+ function k(e, t) { const n = E(t); if (c(e)) {
26
+ w(null, e.contents, n, Object.freeze([e])) === b && (e.contents = null);
27
+ }
28
+ else
29
+ w(null, e, n, Object.freeze([])); }
30
+ function w(e, t, n, s) { const i = N(e, t, n, s); if (p(i) || u(i))
31
+ return O(e, s, i), w(e, i, n, s); if ("symbol" != typeof i)
32
+ if (d(t)) {
33
+ s = Object.freeze(s.concat(t));
34
+ for (let e = 0; e < t.items.length; ++e) {
35
+ const i = w(e, t.items[e], n, s);
36
+ if ("number" == typeof i)
37
+ e = i - 1;
38
+ else {
39
+ if (i === y)
40
+ return y;
41
+ i === b && (t.items.splice(e, 1), e -= 1);
42
+ }
43
+ }
44
+ }
45
+ else if (u(t)) {
46
+ s = Object.freeze(s.concat(t));
47
+ const e = w("key", t.key, n, s);
48
+ if (e === y)
49
+ return y;
50
+ e === b && (t.key = null);
51
+ const i = w("value", t.value, n, s);
52
+ if (i === y)
53
+ return y;
54
+ i === b && (t.value = null);
55
+ } return i; }
56
+ async function v(e, t) { const n = E(t); if (c(e)) {
57
+ await S(null, e.contents, n, Object.freeze([e])) === b && (e.contents = null);
58
+ }
59
+ else
60
+ await S(null, e, n, Object.freeze([])); }
61
+ async function S(e, t, n, s) { const i = await N(e, t, n, s); if (p(i) || u(i))
62
+ return O(e, s, i), S(e, i, n, s); if ("symbol" != typeof i)
63
+ if (d(t)) {
64
+ s = Object.freeze(s.concat(t));
65
+ for (let e = 0; e < t.items.length; ++e) {
66
+ const i = await S(e, t.items[e], n, s);
67
+ if ("number" == typeof i)
68
+ e = i - 1;
69
+ else {
70
+ if (i === y)
71
+ return y;
72
+ i === b && (t.items.splice(e, 1), e -= 1);
73
+ }
74
+ }
75
+ }
76
+ else if (u(t)) {
77
+ s = Object.freeze(s.concat(t));
78
+ const e = await S("key", t.key, n, s);
79
+ if (e === y)
80
+ return y;
81
+ e === b && (t.key = null);
82
+ const i = await S("value", t.value, n, s);
83
+ if (i === y)
84
+ return y;
85
+ i === b && (t.value = null);
86
+ } return i; }
87
+ function E(e) { return "object" == typeof e && (e.Collection || e.Node || e.Value) ? Object.assign({ Alias: e.Node, Map: e.Node, Scalar: e.Node, Seq: e.Node }, e.Value && { Map: e.Value, Scalar: e.Value, Seq: e.Value }, e.Collection && { Map: e.Collection, Seq: e.Collection }, e) : e; }
88
+ function N(e, t, n, s) { var _a, _b, _c, _d, _f; return "function" == typeof n ? n(e, t, s) : l(t) ? (_a = n.Map) === null || _a === void 0 ? void 0 : _a.call(n, e, t, s) : h(t) ? (_b = n.Seq) === null || _b === void 0 ? void 0 : _b.call(n, e, t, s) : u(t) ? (_c = n.Pair) === null || _c === void 0 ? void 0 : _c.call(n, e, t, s) : f(t) ? (_d = n.Scalar) === null || _d === void 0 ? void 0 : _d.call(n, e, t, s) : a(t) ? (_f = n.Alias) === null || _f === void 0 ? void 0 : _f.call(n, e, t, s) : void 0; }
89
+ function O(e, t, n) { const s = t[t.length - 1]; if (d(s))
90
+ s.items[e] = n;
91
+ else if (u(s))
92
+ "key" === e ? s.key = n : s.value = n;
93
+ else {
94
+ if (!c(s)) {
95
+ const e = a(s) ? "alias" : "scalar";
96
+ throw new Error(`Cannot replace node with ${e} parent`);
97
+ }
98
+ s.contents = n;
99
+ } }
100
+ k.BREAK = y, k.SKIP = g, k.REMOVE = b, v.BREAK = y, v.SKIP = g, v.REMOVE = b;
101
+ const A = { "!": "%21", ",": "%2C", "[": "%5B", "]": "%5D", "{": "%7B", "}": "%7D" };
102
+ class I {
103
+ constructor(e, t) { this.docStart = null, this.docEnd = !1, this.yaml = Object.assign({}, I.defaultYaml, e), this.tags = Object.assign({}, I.defaultTags, t); }
104
+ clone() { const e = new I(this.yaml, this.tags); return e.docStart = this.docStart, e; }
105
+ atDocument() { const e = new I(this.yaml, this.tags); switch (this.yaml.version) {
106
+ case "1.1":
107
+ this.atNextDocument = !0;
108
+ break;
109
+ case "1.2": this.atNextDocument = !1, this.yaml = { explicit: I.defaultYaml.explicit, version: "1.2" }, this.tags = Object.assign({}, I.defaultTags);
110
+ } return e; }
111
+ add(e, t) { this.atNextDocument && (this.yaml = { explicit: I.defaultYaml.explicit, version: "1.1" }, this.tags = Object.assign({}, I.defaultTags), this.atNextDocument = !1); const n = e.trim().split(/[ \t]+/), s = n.shift(); switch (s) {
112
+ case "%TAG": {
113
+ if (2 !== n.length && (t(0, "%TAG directive should contain exactly two parts"), n.length < 2))
114
+ return !1;
115
+ const [e, s] = n;
116
+ return this.tags[e] = s, !0;
117
+ }
118
+ case "%YAML": {
119
+ if (this.yaml.explicit = !0, 1 !== n.length)
120
+ return t(0, "%YAML directive should contain exactly one part"), !1;
121
+ const [e] = n;
122
+ if ("1.1" === e || "1.2" === e)
123
+ return this.yaml.version = e, !0;
124
+ return t(6, `Unsupported YAML version ${e}`, /^\d+\.\d+$/.test(e)), !1;
125
+ }
126
+ default: return t(0, `Unknown directive ${s}`, !0), !1;
127
+ } }
128
+ tagName(e, t) { if ("!" === e)
129
+ return "!"; if ("!" !== e[0])
130
+ return t(`Not a valid tag: ${e}`), null; if ("<" === e[1]) {
131
+ const n = e.slice(2, -1);
132
+ return "!" === n || "!!" === n ? (t(`Verbatim tags aren't resolved, so ${e} is invalid.`), null) : (">" !== e[e.length - 1] && t("Verbatim tags must end with a >"), n);
133
+ } const [, n, s] = e.match(/^(.*!)([^!]*)$/s); s || t(`The ${e} tag has no suffix`); const i = this.tags[n]; if (i)
134
+ try {
135
+ return i + decodeURIComponent(s);
136
+ }
137
+ catch (e) {
138
+ return t(String(e)), null;
139
+ } return "!" === n ? e : (t(`Could not resolve tag: ${e}`), null); }
140
+ tagString(e) { for (const [t, n] of Object.entries(this.tags))
141
+ if (e.startsWith(n))
142
+ return t + e.substring(n.length).replace(/[!,[\]{}]/g, (e => A[e])); return "!" === e[0] ? e : `!<${e}>`; }
143
+ toString(e) { const t = this.yaml.explicit ? [`%YAML ${this.yaml.version || "1.2"}`] : [], n = Object.entries(this.tags); let s; if (e && n.length > 0 && p(e.contents)) {
144
+ const t = {};
145
+ k(e.contents, ((e, n) => { p(n) && n.tag && (t[n.tag] = !0); })), s = Object.keys(t);
146
+ }
147
+ else
148
+ s = []; for (const [i, o] of n)
149
+ "!!" === i && "tag:yaml.org,2002:" === o || e && !s.some((e => e.startsWith(o))) || t.push(`%TAG ${i} ${o}`); return t.join("\n"); }
150
+ }
151
+ function T(e) { if (/[\x00-\x19\s,[\]{}]/.test(e)) {
152
+ const t = JSON.stringify(e);
153
+ throw new Error(`Anchor must not contain whitespace or control characters: ${t}`);
154
+ } return !0; }
155
+ function L(e) { const t = new Set; return k(e, { Value(e, n) { n.anchor && t.add(n.anchor); } }), t; }
156
+ function x(e, t) { for (let n = 1;; ++n) {
157
+ const s = `${e}${n}`;
158
+ if (!t.has(s))
159
+ return s;
160
+ } }
161
+ function $(e, t, n, s) { if (s && "object" == typeof s)
162
+ if (Array.isArray(s))
163
+ for (let t = 0, n = s.length; t < n; ++t) {
164
+ const n = s[t], i = $(e, s, String(t), n);
165
+ void 0 === i ? delete s[t] : i !== n && (s[t] = i);
166
+ }
167
+ else if (s instanceof Map)
168
+ for (const t of Array.from(s.keys())) {
169
+ const n = s.get(t), i = $(e, s, t, n);
170
+ void 0 === i ? s.delete(t) : i !== n && s.set(t, i);
171
+ }
172
+ else if (s instanceof Set)
173
+ for (const t of Array.from(s)) {
174
+ const n = $(e, s, t, t);
175
+ void 0 === n ? s.delete(t) : n !== t && (s.delete(t), s.add(n));
176
+ }
177
+ else
178
+ for (const [t, n] of Object.entries(s)) {
179
+ const i = $(e, s, t, n);
180
+ void 0 === i ? delete s[t] : i !== n && (s[t] = i);
181
+ } return e.call(t, n, s); }
182
+ function C(e, t, n) { if (Array.isArray(e))
183
+ return e.map(((e, t) => C(e, String(t), n))); if (e && "function" == typeof e.toJSON) {
184
+ if (!n || !m(e))
185
+ return e.toJSON(t, n);
186
+ const s = { aliasCount: 0, count: 1, res: void 0 };
187
+ n.anchors.set(e, s), n.onCreate = e => { s.res = e, delete n.onCreate; };
188
+ const i = e.toJSON(t, n);
189
+ return n.onCreate && n.onCreate(i), i;
190
+ } return "bigint" != typeof e || (n === null || n === void 0 ? void 0 : n.keep) ? e : Number(e); }
191
+ I.defaultYaml = { explicit: !1, version: "1.2" }, I.defaultTags = { "!!": "tag:yaml.org,2002:" };
192
+ class _ {
193
+ constructor(e) { Object.defineProperty(this, r, { value: e }); }
194
+ clone() { const e = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this)); return this.range && (e.range = this.range.slice()), e; }
195
+ toJS(e, { mapAsMap: t, maxAliasCount: n, onAnchor: s, reviver: i } = {}) { if (!c(e))
196
+ throw new TypeError("A document argument is required"); const o = { anchors: new Map, doc: e, keep: !0, mapAsMap: !0 === t, mapKeyWarned: !1, maxAliasCount: "number" == typeof n ? n : 100 }, r = C(this, "", o); if ("function" == typeof s)
197
+ for (const { count: e, res: t } of o.anchors.values())
198
+ s(t, e); return "function" == typeof i ? $(i, { "": r }, "", r) : r; }
199
+ }
200
+ class K extends _ {
201
+ constructor(t) { super(e), this.source = t, Object.defineProperty(this, "tag", { set() { throw new Error("Alias nodes cannot have tags"); } }); }
202
+ resolve(e, t) { let n, s; (t === null || t === void 0 ? void 0 : t.aliasResolveCache) ? n = t.aliasResolveCache : (n = [], k(e, { Node: (e, t) => { (a(t) || m(t)) && n.push(t); } }), t && (t.aliasResolveCache = n)); for (const e of n) {
203
+ if (e === this)
204
+ break;
205
+ e.anchor === this.source && (s = e);
206
+ } return s; }
207
+ toJSON(e, t) { if (!t)
208
+ return { source: this.source }; const { anchors: n, doc: s, maxAliasCount: i } = t, o = this.resolve(s, t); if (!o) {
209
+ const e = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;
210
+ throw new ReferenceError(e);
211
+ } let r = n.get(o); if (r || (C(o, null, t), r = n.get(o)), !r || void 0 === r.res) {
212
+ throw new ReferenceError("This should not happen: Alias anchor was not resolved?");
213
+ } if (i >= 0 && (r.count += 1, 0 === r.aliasCount && (r.aliasCount = B(s, o, n)), r.count * r.aliasCount > i)) {
214
+ throw new ReferenceError("Excessive alias count indicates a resource exhaustion attack");
215
+ } return r.res; }
216
+ toString(e, t, n) { const s = `*${this.source}`; if (e) {
217
+ if (T(this.source), e.options.verifyAliasOrder && !e.anchors.has(this.source)) {
218
+ const e = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;
219
+ throw new Error(e);
220
+ }
221
+ if (e.implicitKey)
222
+ return `${s} `;
223
+ } return s; }
224
+ }
225
+ function B(e, t, n) { if (a(t)) {
226
+ const s = t.resolve(e), i = n && s && n.get(s);
227
+ return i ? i.count * i.aliasCount : 0;
228
+ } if (d(t)) {
229
+ let s = 0;
230
+ for (const i of t.items) {
231
+ const t = B(e, i, n);
232
+ t > s && (s = t);
233
+ }
234
+ return s;
235
+ } if (u(t)) {
236
+ const s = B(e, t.key, n), i = B(e, t.value, n);
237
+ return Math.max(s, i);
238
+ } return 1; }
239
+ const j = e => !e || "function" != typeof e && "object" != typeof e;
240
+ class M extends _ {
241
+ constructor(e) { super(i), this.value = e; }
242
+ toJSON(e, t) { return (t === null || t === void 0 ? void 0 : t.keep) ? this.value : C(this.value, e, t); }
243
+ toString() { return String(this.value); }
244
+ }
245
+ M.BLOCK_FOLDED = "BLOCK_FOLDED", M.BLOCK_LITERAL = "BLOCK_LITERAL", M.PLAIN = "PLAIN", M.QUOTE_DOUBLE = "QUOTE_DOUBLE", M.QUOTE_SINGLE = "QUOTE_SINGLE";
246
+ function D(e, t, s) { var _a, _b, _c, _d; if (c(e) && (e = e.contents), p(e))
247
+ return e; if (u(e)) {
248
+ const t = (_b = (_a = s.schema[n]).createNode) === null || _b === void 0 ? void 0 : _b.call(_a, s.schema, null, s);
249
+ return t.items.push(e), t;
250
+ } (e instanceof String || e instanceof Number || e instanceof Boolean || "undefined" != typeof BigInt && e instanceof BigInt) && (e = e.valueOf()); const { aliasDuplicateObjects: i, onAnchor: r, onTagObj: a, schema: l, sourceObjects: f } = s; let h; if (i && e && "object" == typeof e) {
251
+ if (h = f.get(e), h)
252
+ return (_c = h.anchor) !== null && _c !== void 0 ? _c : (h.anchor = r(e)), new K(h.anchor);
253
+ h = { anchor: null, node: null }, f.set(e, h);
254
+ } (t === null || t === void 0 ? void 0 : t.startsWith("!!")) && (t = "tag:yaml.org,2002:" + t.slice(2)); let d = function (e, t, n) { var _a; if (t) {
255
+ const e = n.filter((e => e.tag === t)), s = (_a = e.find((e => !e.format))) !== null && _a !== void 0 ? _a : e[0];
256
+ if (!s)
257
+ throw new Error(`Tag ${t} not found`);
258
+ return s;
259
+ } return n.find((t => { var _a; return ((_a = t.identify) === null || _a === void 0 ? void 0 : _a.call(t, e)) && !t.format; })); }(e, t, l.tags); if (!d) {
260
+ if (e && "function" == typeof e.toJSON && (e = e.toJSON()), !e || "object" != typeof e) {
261
+ const t = new M(e);
262
+ return h && (h.node = t), t;
263
+ }
264
+ d = e instanceof Map ? l[n] : Symbol.iterator in Object(e) ? l[o] : l[n];
265
+ } a && (a(d), delete s.onTagObj); const m = (d === null || d === void 0 ? void 0 : d.createNode) ? d.createNode(s.schema, e, s) : "function" == typeof ((_d = d === null || d === void 0 ? void 0 : d.nodeClass) === null || _d === void 0 ? void 0 : _d.from) ? d.nodeClass.from(s.schema, e, s) : new M(e); return t ? m.tag = t : d.default || (m.tag = d.tag), h && (h.node = m), m; }
266
+ function q(e, t, n) { let s = n; for (let e = t.length - 1; e >= 0; --e) {
267
+ const n = t[e];
268
+ if ("number" == typeof n && Number.isInteger(n) && n >= 0) {
269
+ const e = [];
270
+ e[n] = s, s = e;
271
+ }
272
+ else
273
+ s = new Map([[n, s]]);
274
+ } return D(s, void 0, { aliasDuplicateObjects: !1, keepUndefined: !1, onAnchor: () => { throw new Error("This should not happen, please report a bug."); }, schema: e, sourceObjects: new Map }); }
275
+ const P = e => null == e || "object" == typeof e && !!e[Symbol.iterator]().next().done;
276
+ class U extends _ {
277
+ constructor(e, t) { super(e), Object.defineProperty(this, "schema", { value: t, configurable: !0, enumerable: !1, writable: !0 }); }
278
+ clone(e) { const t = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this)); return e && (t.schema = e), t.items = t.items.map((t => p(t) || u(t) ? t.clone(e) : t)), this.range && (t.range = this.range.slice()), t; }
279
+ addIn(e, t) { if (P(e))
280
+ this.add(t);
281
+ else {
282
+ const [n, ...s] = e, i = this.get(n, !0);
283
+ if (d(i))
284
+ i.addIn(s, t);
285
+ else {
286
+ if (void 0 !== i || !this.schema)
287
+ throw new Error(`Expected YAML collection at ${n}. Remaining path: ${s}`);
288
+ this.set(n, q(this.schema, s, t));
289
+ }
290
+ } }
291
+ deleteIn(e) { const [t, ...n] = e; if (0 === n.length)
292
+ return this.delete(t); const s = this.get(t, !0); if (d(s))
293
+ return s.deleteIn(n); throw new Error(`Expected YAML collection at ${t}. Remaining path: ${n}`); }
294
+ getIn(e, t) { const [n, ...s] = e, i = this.get(n, !0); return 0 === s.length ? !t && f(i) ? i.value : i : d(i) ? i.getIn(s, t) : void 0; }
295
+ hasAllNullValues(e) { return this.items.every((t => { if (!u(t))
296
+ return !1; const n = t.value; return null == n || e && f(n) && null == n.value && !n.commentBefore && !n.comment && !n.tag; })); }
297
+ hasIn(e) { const [t, ...n] = e; if (0 === n.length)
298
+ return this.has(t); const s = this.get(t, !0); return !!d(s) && s.hasIn(n); }
299
+ setIn(e, t) { const [n, ...s] = e; if (0 === s.length)
300
+ this.set(n, t);
301
+ else {
302
+ const e = this.get(n, !0);
303
+ if (d(e))
304
+ e.setIn(s, t);
305
+ else {
306
+ if (void 0 !== e || !this.schema)
307
+ throw new Error(`Expected YAML collection at ${n}. Remaining path: ${s}`);
308
+ this.set(n, q(this.schema, s, t));
309
+ }
310
+ } }
311
+ }
312
+ const R = e => e.replace(/^(?!$)(?: $)?/gm, "#");
313
+ function F(e, t) { return /^\n+$/.test(e) ? e.substring(1) : t ? e.replace(/^(?! *$)/gm, t) : e; }
314
+ const V = (e, t, n) => e.endsWith("\n") ? F(n, t) : n.includes("\n") ? "\n" + F(n, t) : (e.endsWith(" ") ? "" : " ") + n, J = "flow", Y = "block", W = "quoted";
315
+ function G(e, t, n = "flow", { indentAtStart: s, lineWidth: i = 80, minContentWidth: o = 20, onFold: r, onOverflow: a } = {}) { if (!i || i < 0)
316
+ return e; i < o && (o = 0); const c = Math.max(1 + o, 1 + i - t.length); if (e.length <= c)
317
+ return e; const l = [], u = {}; let f, h, d = i - t.length; "number" == typeof s && (s > i - Math.max(2, o) ? l.push(0) : d = i - s); let p = !1, m = -1, y = -1, g = -1; n === Y && (m = Q(e, m, t.length), -1 !== m && (d = m + c)); for (let s; s = e[m += 1];) {
318
+ if (n === W && "\\" === s) {
319
+ switch (y = m, e[m + 1]) {
320
+ case "x":
321
+ m += 3;
322
+ break;
323
+ case "u":
324
+ m += 5;
325
+ break;
326
+ case "U":
327
+ m += 9;
328
+ break;
329
+ default: m += 1;
330
+ }
331
+ g = m;
332
+ }
333
+ if ("\n" === s)
334
+ n === Y && (m = Q(e, m, t.length)), d = m + t.length + c, f = void 0;
335
+ else {
336
+ if (" " === s && h && " " !== h && "\n" !== h && "\t" !== h) {
337
+ const t = e[m + 1];
338
+ t && " " !== t && "\n" !== t && "\t" !== t && (f = m);
339
+ }
340
+ if (m >= d)
341
+ if (f)
342
+ l.push(f), d = f + c, f = void 0;
343
+ else if (n === W) {
344
+ for (; " " === h || "\t" === h;)
345
+ h = s, s = e[m += 1], p = !0;
346
+ const t = m > g + 1 ? m - 2 : y - 1;
347
+ if (u[t])
348
+ return e;
349
+ l.push(t), u[t] = !0, d = t + c, f = void 0;
350
+ }
351
+ else
352
+ p = !0;
353
+ }
354
+ h = s;
355
+ } if (p && a && a(), 0 === l.length)
356
+ return e; r && r(); let b = e.slice(0, l[0]); for (let s = 0; s < l.length; ++s) {
357
+ const i = l[s], o = l[s + 1] || e.length;
358
+ 0 === i ? b = `\n${t}${e.slice(0, o)}` : (n === W && u[i] && (b += `${e[i]}\\`), b += `\n${t}${e.slice(i + 1, o)}`);
359
+ } return b; }
360
+ function Q(e, t, n) { let s = t, i = t + 1, o = e[i]; for (; " " === o || "\t" === o;)
361
+ if (t < i + n)
362
+ o = e[++t];
363
+ else {
364
+ do {
365
+ o = e[++t];
366
+ } while (o && "\n" !== o);
367
+ s = t, i = t + 1, o = e[i];
368
+ } return s; }
369
+ const H = (e, t) => ({ indentAtStart: t ? e.indent.length : e.indentAtStart, lineWidth: e.options.lineWidth, minContentWidth: e.options.minContentWidth }), X = e => /^(%|---|\.\.\.)/m.test(e);
370
+ function z(e, t) { const n = JSON.stringify(e); if (t.options.doubleQuotedAsJSON)
371
+ return n; const { implicitKey: s } = t, i = t.options.doubleQuotedMinMultiLineLength, o = t.indent || (X(e) ? " " : ""); let r = "", a = 0; for (let e = 0, t = n[e]; t; t = n[++e])
372
+ if (" " === t && "\\" === n[e + 1] && "n" === n[e + 2] && (r += n.slice(a, e) + "\\ ", e += 1, a = e, t = "\\"), "\\" === t)
373
+ switch (n[e + 1]) {
374
+ case "u":
375
+ {
376
+ r += n.slice(a, e);
377
+ const t = n.substr(e + 2, 4);
378
+ switch (t) {
379
+ case "0000":
380
+ r += "\\0";
381
+ break;
382
+ case "0007":
383
+ r += "\\a";
384
+ break;
385
+ case "000b":
386
+ r += "\\v";
387
+ break;
388
+ case "001b":
389
+ r += "\\e";
390
+ break;
391
+ case "0085":
392
+ r += "\\N";
393
+ break;
394
+ case "00a0":
395
+ r += "\\_";
396
+ break;
397
+ case "2028":
398
+ r += "\\L";
399
+ break;
400
+ case "2029":
401
+ r += "\\P";
402
+ break;
403
+ default: "00" === t.substr(0, 2) ? r += "\\x" + t.substr(2) : r += n.substr(e, 6);
404
+ }
405
+ e += 5, a = e + 1;
406
+ }
407
+ break;
408
+ case "n":
409
+ if (s || '"' === n[e + 2] || n.length < i)
410
+ e += 1;
411
+ else {
412
+ for (r += n.slice(a, e) + "\n\n"; "\\" === n[e + 2] && "n" === n[e + 3] && '"' !== n[e + 4];)
413
+ r += "\n", e += 2;
414
+ r += o, " " === n[e + 2] && (r += "\\"), e += 1, a = e + 1;
415
+ }
416
+ break;
417
+ default: e += 1;
418
+ } return r = a ? r + n.slice(a) : n, s ? r : G(r, o, W, H(t, !1)); }
419
+ function Z(e, t) { if (!1 === t.options.singleQuote || t.implicitKey && e.includes("\n") || /[ \t]\n|\n[ \t]/.test(e))
420
+ return z(e, t); const n = t.indent || (X(e) ? " " : ""), s = "'" + e.replace(/'/g, "''").replace(/\n+/g, `$&\n${n}`) + "'"; return t.implicitKey ? s : G(s, n, J, H(t, !1)); }
421
+ function ee(e, t) { const { singleQuote: n } = t.options; let s; if (!1 === n)
422
+ s = z;
423
+ else {
424
+ const t = e.includes('"'), i = e.includes("'");
425
+ s = t && !i ? Z : i && !t ? z : n ? Z : z;
426
+ } return s(e, t); }
427
+ let te;
428
+ try {
429
+ te = new RegExp("(^|(?<!\n))\n+(?!\n|$)", "g");
430
+ }
431
+ catch (_a) {
432
+ te = /\n+(?!\n|$)/g;
433
+ }
434
+ function ne({ comment: e, type: t, value: n }, s, i, o) { const { blockQuote: r, commentString: a, lineWidth: c } = s.options; if (!r || /\n[\t ]+$/.test(n))
435
+ return ee(n, s); const l = s.indent || (s.forceBlockIndent || X(n) ? " " : ""), u = "literal" === r || "folded" !== r && t !== M.BLOCK_FOLDED && (t === M.BLOCK_LITERAL || !function (e, t, n) { if (!t || t < 0)
436
+ return !1; const s = t - n, i = e.length; if (i <= s)
437
+ return !1; for (let t = 0, n = 0; t < i; ++t)
438
+ if ("\n" === e[t]) {
439
+ if (t - n > s)
440
+ return !0;
441
+ if (n = t + 1, i - n <= s)
442
+ return !1;
443
+ } return !0; }(n, c, l.length)); if (!n)
444
+ return u ? "|\n" : ">\n"; let f, h; for (h = n.length; h > 0; --h) {
445
+ const e = n[h - 1];
446
+ if ("\n" !== e && "\t" !== e && " " !== e)
447
+ break;
448
+ } let d = n.substring(h); const p = d.indexOf("\n"); -1 === p ? f = "-" : n === d || p !== d.length - 1 ? (f = "+", o && o()) : f = "", d && (n = n.slice(0, -d.length), "\n" === d[d.length - 1] && (d = d.slice(0, -1)), d = d.replace(te, `$&${l}`)); let m, y = !1, g = -1; for (m = 0; m < n.length; ++m) {
449
+ const e = n[m];
450
+ if (" " === e)
451
+ y = !0;
452
+ else {
453
+ if ("\n" !== e)
454
+ break;
455
+ g = m;
456
+ }
457
+ } let b = n.substring(0, g < m ? g + 1 : m); b && (n = n.substring(b.length), b = b.replace(/\n+/g, `$&${l}`)); let k = (y ? l ? "2" : "1" : "") + f; if (e && (k += " " + a(e.replace(/ ?[\r\n]+/g, " ")), i && i()), !u) {
458
+ const e = n.replace(/\n+/g, "\n$&").replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g, "$1$2").replace(/\n+/g, `$&${l}`);
459
+ let i = !1;
460
+ const o = H(s, !0);
461
+ "folded" !== r && t !== M.BLOCK_FOLDED && (o.onOverflow = () => { i = !0; });
462
+ const a = G(`${b}${e}${d}`, l, Y, o);
463
+ if (!i)
464
+ return `>${k}\n${l}${a}`;
465
+ } return `|${k}\n${l}${b}${n = n.replace(/\n+/g, `$&${l}`)}${d}`; }
466
+ function se(e, t, n, s) { const { implicitKey: i, inFlow: o } = t, r = "string" == typeof e.value ? e : Object.assign({}, e, { value: String(e.value) }); let { type: a } = e; a !== M.QUOTE_DOUBLE && /[\x00-\x08\x0b-\x1f\x7f-\x9f\u{D800}-\u{DFFF}]/u.test(r.value) && (a = M.QUOTE_DOUBLE); const c = e => { switch (e) {
467
+ case M.BLOCK_FOLDED:
468
+ case M.BLOCK_LITERAL: return i || o ? ee(r.value, t) : ne(r, t, n, s);
469
+ case M.QUOTE_DOUBLE: return z(r.value, t);
470
+ case M.QUOTE_SINGLE: return Z(r.value, t);
471
+ case M.PLAIN: return function (e, t, n, s) { const { type: i, value: o } = e, { actualString: r, implicitKey: a, indent: c, indentStep: l, inFlow: u } = t; if (a && o.includes("\n") || u && /[[\]{},]/.test(o))
472
+ return ee(o, t); if (/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(o))
473
+ return a || u || !o.includes("\n") ? ee(o, t) : ne(e, t, n, s); if (!a && !u && i !== M.PLAIN && o.includes("\n"))
474
+ return ne(e, t, n, s); if (X(o)) {
475
+ if ("" === c)
476
+ return t.forceBlockIndent = !0, ne(e, t, n, s);
477
+ if (a && c === l)
478
+ return ee(o, t);
479
+ } const f = o.replace(/\n+/g, `$&\n${c}`); if (r) {
480
+ const e = e => { var _a; return e.default && "tag:yaml.org,2002:str" !== e.tag && ((_a = e.test) === null || _a === void 0 ? void 0 : _a.test(f)); }, { compat: n, tags: s } = t.doc.schema;
481
+ if (s.some(e) || (n === null || n === void 0 ? void 0 : n.some(e)))
482
+ return ee(o, t);
483
+ } return a ? f : G(f, c, J, H(t, !1)); }(r, t, n, s);
484
+ default: return null;
485
+ } }; let l = c(a); if (null === l) {
486
+ const { defaultKeyType: e, defaultStringType: n } = t.options, s = i && e || n;
487
+ if (l = c(s), null === l)
488
+ throw new Error(`Unsupported default string type ${s}`);
489
+ } return l; }
490
+ function ie(e, t) { const n = Object.assign({ blockQuote: !0, commentString: R, defaultKeyType: null, defaultStringType: "PLAIN", directives: null, doubleQuotedAsJSON: !1, doubleQuotedMinMultiLineLength: 40, falseStr: "false", flowCollectionPadding: !0, indentSeq: !0, lineWidth: 80, minContentWidth: 20, nullStr: "null", simpleKeys: !1, singleQuote: null, trueStr: "true", verifyAliasOrder: !0 }, e.schema.toStringOptions, t); let s; switch (n.collectionStyle) {
491
+ case "block":
492
+ s = !1;
493
+ break;
494
+ case "flow":
495
+ s = !0;
496
+ break;
497
+ default: s = null;
498
+ } return { anchors: new Set, doc: e, flowCollectionPadding: n.flowCollectionPadding ? " " : "", indent: "", indentStep: "number" == typeof n.indent ? " ".repeat(n.indent) : " ", inFlow: s, options: n }; }
499
+ function oe(e, t, n, s) { var _a, _b; if (u(e))
500
+ return e.toString(t, n, s); if (a(e)) {
501
+ if (t.doc.directives)
502
+ return e.toString(t);
503
+ if ((_a = t.resolvedAliases) === null || _a === void 0 ? void 0 : _a.has(e))
504
+ throw new TypeError("Cannot stringify circular structure without alias nodes");
505
+ t.resolvedAliases ? t.resolvedAliases.add(e) : t.resolvedAliases = new Set([e]), e = e.resolve(t.doc);
506
+ } let i; const o = p(e) ? e : t.doc.createNode(e, { onTagObj: e => i = e }); i !== null && i !== void 0 ? i : (i = function (e, t) { var _a, _b, _c, _d; if (t.tag) {
507
+ const n = e.filter((e => e.tag === t.tag));
508
+ if (n.length > 0)
509
+ return (_a = n.find((e => e.format === t.format))) !== null && _a !== void 0 ? _a : n[0];
510
+ } let n, s; if (f(t)) {
511
+ s = t.value;
512
+ let i = e.filter((e => { var _a; return (_a = e.identify) === null || _a === void 0 ? void 0 : _a.call(e, s); }));
513
+ if (i.length > 1) {
514
+ const e = i.filter((e => e.test));
515
+ e.length > 0 && (i = e);
516
+ }
517
+ n = (_b = i.find((e => e.format === t.format))) !== null && _b !== void 0 ? _b : i.find((e => !e.format));
518
+ }
519
+ else
520
+ s = t, n = e.find((e => e.nodeClass && s instanceof e.nodeClass)); if (!n)
521
+ throw new Error(`Tag not resolved for ${(_d = (_c = s === null || s === void 0 ? void 0 : s.constructor) === null || _c === void 0 ? void 0 : _c.name) !== null && _d !== void 0 ? _d : (null === s ? "null" : typeof s)} value`); return n; }(t.doc.schema.tags, o)); const r = function (e, t, { anchors: n, doc: s }) { var _a; if (!s.directives)
522
+ return ""; const i = [], o = (f(e) || d(e)) && e.anchor; o && T(o) && (n.add(o), i.push(`&${o}`)); const r = (_a = e.tag) !== null && _a !== void 0 ? _a : (t.default ? null : t.tag); return r && i.push(s.directives.tagString(r)), i.join(" "); }(o, i, t); r.length > 0 && (t.indentAtStart = ((_b = t.indentAtStart) !== null && _b !== void 0 ? _b : 0) + r.length + 1); const c = "function" == typeof i.stringify ? i.stringify(o, t, n, s) : f(o) ? se(o, t, n, s) : o.toString(t, n, s); return r ? f(o) || "{" === c[0] || "[" === c[0] ? `${r} ${c}` : `${r}\n${t.indent}${c}` : c; }
523
+ function re(e, t) { "debug" !== e && "warn" !== e || console.warn(t); }
524
+ const ae = "<<", ce = { identify: e => e === ae || "symbol" == typeof e && e.description === ae, default: "key", tag: "tag:yaml.org,2002:merge", test: /^<<$/, resolve: () => Object.assign(new M(Symbol(ae)), { addToJSMap: le }), stringify: () => ae };
525
+ function le(e, t, n) { if (n = e && a(n) ? n.resolve(e.doc) : n, h(n))
526
+ for (const s of n.items)
527
+ ue(e, t, s);
528
+ else if (Array.isArray(n))
529
+ for (const s of n)
530
+ ue(e, t, s);
531
+ else
532
+ ue(e, t, n); }
533
+ function ue(e, t, n) { const s = e && a(n) ? n.resolve(e.doc) : n; if (!l(s))
534
+ throw new Error("Merge sources must be maps or map aliases"); const i = s.toJSON(null, e, Map); for (const [e, n] of i)
535
+ t instanceof Map ? t.has(e) || t.set(e, n) : t instanceof Set ? t.add(e) : Object.prototype.hasOwnProperty.call(t, e) || Object.defineProperty(t, e, { value: n, writable: !0, enumerable: !0, configurable: !0 }); return t; }
536
+ function fe(e, t, { key: n, value: s }) { if (p(n) && n.addToJSMap)
537
+ n.addToJSMap(e, t, s);
538
+ else if (((e, t) => (ce.identify(t) || f(t) && (!t.type || t.type === M.PLAIN) && ce.identify(t.value)) && (e === null || e === void 0 ? void 0 : e.doc.schema.tags.some((e => e.tag === ce.tag && e.default))))(e, n))
539
+ le(e, t, s);
540
+ else {
541
+ const i = C(n, "", e);
542
+ if (t instanceof Map)
543
+ t.set(i, C(s, i, e));
544
+ else if (t instanceof Set)
545
+ t.add(i);
546
+ else {
547
+ const o = function (e, t, n) { if (null === t)
548
+ return ""; if ("object" != typeof t)
549
+ return String(t); if (p(e) && (n === null || n === void 0 ? void 0 : n.doc)) {
550
+ const t = ie(n.doc, {});
551
+ t.anchors = new Set;
552
+ for (const e of n.anchors.keys())
553
+ t.anchors.add(e.anchor);
554
+ t.inFlow = !0, t.inStringifyKey = !0;
555
+ const s = e.toString(t);
556
+ if (!n.mapKeyWarned) {
557
+ let e = JSON.stringify(s);
558
+ e.length > 40 && (e = e.substring(0, 36) + '..."'), re(n.doc.options.logLevel, `Keys with collection values will be stringified due to JS Object restrictions: ${e}. Set mapAsMap: true to use object keys.`), n.mapKeyWarned = !0;
559
+ }
560
+ return s;
561
+ } return JSON.stringify(t); }(n, i, e), r = C(s, o, e);
562
+ o in t ? Object.defineProperty(t, o, { value: r, writable: !0, enumerable: !0, configurable: !0 }) : t[o] = r;
563
+ }
564
+ } return t; }
565
+ function he(e, t, n) { const s = D(e, void 0, n), i = D(t, void 0, n); return new de(s, i); }
566
+ class de {
567
+ constructor(e, t = null) { Object.defineProperty(this, r, { value: s }), this.key = e, this.value = t; }
568
+ clone(e) { let { key: t, value: n } = this; return p(t) && (t = t.clone(e)), p(n) && (n = n.clone(e)), new de(t, n); }
569
+ toJSON(e, t) { return fe(t, (t === null || t === void 0 ? void 0 : t.mapAsMap) ? new Map : {}, this); }
570
+ toString(e, t, n) { return (e === null || e === void 0 ? void 0 : e.doc) ? function ({ key: e, value: t }, n, s, i) { var _a, _b; const { allNullValues: o, doc: r, indent: a, indentStep: c, options: { commentString: l, indentSeq: u, simpleKeys: m } } = n; let y = p(e) && e.comment || null; if (m) {
571
+ if (y)
572
+ throw new Error("With simple keys, key nodes cannot have comments");
573
+ if (d(e) || !p(e) && "object" == typeof e)
574
+ throw new Error("With simple keys, collection cannot be used as a key value");
575
+ } let g = !m && (!e || y && null == t && !n.inFlow || d(e) || (f(e) ? e.type === M.BLOCK_FOLDED || e.type === M.BLOCK_LITERAL : "object" == typeof e)); n = Object.assign({}, n, { allNullValues: !1, implicitKey: !g && (m || !o), indent: a + c }); let b, k, w, v = !1, S = !1, E = oe(e, n, (() => v = !0), (() => S = !0)); if (!g && !n.inFlow && E.length > 1024) {
576
+ if (m)
577
+ throw new Error("With simple keys, single line scalar must not span more than 1024 characters");
578
+ g = !0;
579
+ } if (n.inFlow) {
580
+ if (o || null == t)
581
+ return v && s && s(), "" === E ? "?" : g ? `? ${E}` : E;
582
+ }
583
+ else if (o && !m || null == t && g)
584
+ return E = `? ${E}`, y && !v ? E += V(E, n.indent, l(y)) : S && i && i(), E; v && (y = null), g ? (y && (E += V(E, n.indent, l(y))), E = `? ${E}\n${a}:`) : (E = `${E}:`, y && (E += V(E, n.indent, l(y)))), p(t) ? (b = !!t.spaceBefore, k = t.commentBefore, w = t.comment) : (b = !1, k = null, w = null, t && "object" == typeof t && (t = r.createNode(t))), n.implicitKey = !1, g || y || !f(t) || (n.indentAtStart = E.length + 1), S = !1, u || !(c.length >= 2) || n.inFlow || g || !h(t) || t.flow || t.tag || t.anchor || (n.indent = n.indent.substring(2)); let N = !1; const O = oe(t, n, (() => N = !0), (() => S = !0)); let A = " "; if (y || b || k)
585
+ A = b ? "\n" : "", k && (A += `\n${F(l(k), n.indent)}`), "" !== O || n.inFlow ? A += `\n${n.indent}` : "\n" === A && (A = "\n\n");
586
+ else if (!g && d(t)) {
587
+ const e = O[0], s = O.indexOf("\n"), i = -1 !== s, o = (_b = (_a = n.inFlow) !== null && _a !== void 0 ? _a : t.flow) !== null && _b !== void 0 ? _b : 0 === t.items.length;
588
+ if (i || !o) {
589
+ let t = !1;
590
+ if (i && ("&" === e || "!" === e)) {
591
+ let n = O.indexOf(" ");
592
+ "&" === e && -1 !== n && n < s && "!" === O[n + 1] && (n = O.indexOf(" ", n + 1)), (-1 === n || s < n) && (t = !0);
593
+ }
594
+ t || (A = `\n${n.indent}`);
595
+ }
596
+ }
597
+ else
598
+ "" !== O && "\n" !== O[0] || (A = ""); return E += A + O, n.inFlow ? N && s && s() : w && !N ? E += V(E, n.indent, l(w)) : S && i && i(), E; }(this, e, t, n) : JSON.stringify(this); }
599
+ }
600
+ function pe(e, t, n) { var _a; return (((_a = t.inFlow) !== null && _a !== void 0 ? _a : e.flow) ? ye : me)(e, t, n); }
601
+ function me({ comment: e, items: t }, n, { blockItemPrefix: s, flowChars: i, itemIndent: o, onChompKeep: r, onComment: a }) { const { indent: c, options: { commentString: l } } = n, f = Object.assign({}, n, { indent: o, type: null }); let h = !1; const d = []; for (let e = 0; e < t.length; ++e) {
602
+ const i = t[e];
603
+ let r = null;
604
+ if (p(i))
605
+ !h && i.spaceBefore && d.push(""), ge(n, d, i.commentBefore, h), i.comment && (r = i.comment);
606
+ else if (u(i)) {
607
+ const e = p(i.key) ? i.key : null;
608
+ e && (!h && e.spaceBefore && d.push(""), ge(n, d, e.commentBefore, h));
609
+ }
610
+ h = !1;
611
+ let a = oe(i, f, (() => r = null), (() => h = !0));
612
+ r && (a += V(a, o, l(r))), h && r && (h = !1), d.push(s + a);
613
+ } let m; if (0 === d.length)
614
+ m = i.start + i.end;
615
+ else {
616
+ m = d[0];
617
+ for (let e = 1; e < d.length; ++e) {
618
+ const t = d[e];
619
+ m += t ? `\n${c}${t}` : "\n";
620
+ }
621
+ } return e ? (m += "\n" + F(l(e), c), a && a()) : h && r && r(), m; }
622
+ function ye({ items: e }, t, { flowChars: n, itemIndent: s }) { const { indent: i, indentStep: o, flowCollectionPadding: r, options: { commentString: a } } = t; s += o; const c = Object.assign({}, t, { indent: s, inFlow: !0, type: null }); let l = !1, f = 0; const h = []; for (let n = 0; n < e.length; ++n) {
623
+ const i = e[n];
624
+ let o = null;
625
+ if (p(i))
626
+ i.spaceBefore && h.push(""), ge(t, h, i.commentBefore, !1), i.comment && (o = i.comment);
627
+ else if (u(i)) {
628
+ const e = p(i.key) ? i.key : null;
629
+ e && (e.spaceBefore && h.push(""), ge(t, h, e.commentBefore, !1), e.comment && (l = !0));
630
+ const n = p(i.value) ? i.value : null;
631
+ n ? (n.comment && (o = n.comment), n.commentBefore && (l = !0)) : null == i.value && (e === null || e === void 0 ? void 0 : e.comment) && (o = e.comment);
632
+ }
633
+ o && (l = !0);
634
+ let r = oe(i, c, (() => o = null));
635
+ n < e.length - 1 && (r += ","), o && (r += V(r, s, a(o))), !l && (h.length > f || r.includes("\n")) && (l = !0), h.push(r), f = h.length;
636
+ } const { start: d, end: m } = n; if (0 === h.length)
637
+ return d + m; if (!l) {
638
+ const e = h.reduce(((e, t) => e + t.length + 2), 2);
639
+ l = t.options.lineWidth > 0 && e > t.options.lineWidth;
640
+ } if (l) {
641
+ let e = d;
642
+ for (const t of h)
643
+ e += t ? `\n${o}${i}${t}` : "\n";
644
+ return `${e}\n${i}${m}`;
645
+ } return `${d}${r}${h.join(" ")}${r}${m}`; }
646
+ function ge({ indent: e, options: { commentString: t } }, n, s, i) { if (s && i && (s = s.replace(/^\n+/, "")), s) {
647
+ const i = F(t(s), e);
648
+ n.push(i.trimStart());
649
+ } }
650
+ function be(e, t) { const n = f(t) ? t.value : t; for (const s of e)
651
+ if (u(s)) {
652
+ if (s.key === t || s.key === n)
653
+ return s;
654
+ if (f(s.key) && s.key.value === n)
655
+ return s;
656
+ } }
657
+ class ke extends U {
658
+ static get tagName() { return "tag:yaml.org,2002:map"; }
659
+ constructor(e) { super(n, e), this.items = []; }
660
+ static from(e, t, n) { const { keepUndefined: s, replacer: i } = n, o = new this(e), r = (e, r) => { if ("function" == typeof i)
661
+ r = i.call(t, e, r);
662
+ else if (Array.isArray(i) && !i.includes(e))
663
+ return; (void 0 !== r || s) && o.items.push(he(e, r, n)); }; if (t instanceof Map)
664
+ for (const [e, n] of t)
665
+ r(e, n);
666
+ else if (t && "object" == typeof t)
667
+ for (const e of Object.keys(t))
668
+ r(e, t[e]); return "function" == typeof e.sortMapEntries && o.items.sort(e.sortMapEntries), o; }
669
+ add(e, t) { var _a; let n; n = u(e) ? e : e && "object" == typeof e && "key" in e ? new de(e.key, e.value) : new de(e, e === null || e === void 0 ? void 0 : e.value); const s = be(this.items, n.key), i = (_a = this.schema) === null || _a === void 0 ? void 0 : _a.sortMapEntries; if (s) {
670
+ if (!t)
671
+ throw new Error(`Key ${n.key} already set`);
672
+ f(s.value) && j(n.value) ? s.value.value = n.value : s.value = n.value;
673
+ }
674
+ else if (i) {
675
+ const e = this.items.findIndex((e => i(n, e) < 0));
676
+ -1 === e ? this.items.push(n) : this.items.splice(e, 0, n);
677
+ }
678
+ else
679
+ this.items.push(n); }
680
+ delete(e) { const t = be(this.items, e); if (!t)
681
+ return !1; return this.items.splice(this.items.indexOf(t), 1).length > 0; }
682
+ get(e, t) { var _a; const n = be(this.items, e), s = n === null || n === void 0 ? void 0 : n.value; return (_a = (!t && f(s) ? s.value : s)) !== null && _a !== void 0 ? _a : void 0; }
683
+ has(e) { return !!be(this.items, e); }
684
+ set(e, t) { this.add(new de(e, t), !0); }
685
+ toJSON(e, t, n) { const s = n ? new n : (t === null || t === void 0 ? void 0 : t.mapAsMap) ? new Map : {}; (t === null || t === void 0 ? void 0 : t.onCreate) && t.onCreate(s); for (const e of this.items)
686
+ fe(t, s, e); return s; }
687
+ toString(e, t, n) { if (!e)
688
+ return JSON.stringify(this); for (const e of this.items)
689
+ if (!u(e))
690
+ throw new Error(`Map items must all be pairs; found ${JSON.stringify(e)} instead`); return !e.allNullValues && this.hasAllNullValues(!1) && (e = Object.assign({}, e, { allNullValues: !0 })), pe(this, e, { blockItemPrefix: "", flowChars: { start: "{", end: "}" }, itemIndent: e.indent || "", onChompKeep: n, onComment: t }); }
691
+ }
692
+ const we = { collection: "map", default: !0, nodeClass: ke, tag: "tag:yaml.org,2002:map", resolve: (e, t) => (l(e) || t("Expected a mapping for this tag"), e), createNode: (e, t, n) => ke.from(e, t, n) };
693
+ class ve extends U {
694
+ static get tagName() { return "tag:yaml.org,2002:seq"; }
695
+ constructor(e) { super(o, e), this.items = []; }
696
+ add(e) { this.items.push(e); }
697
+ delete(e) { const t = Se(e); if ("number" != typeof t)
698
+ return !1; return this.items.splice(t, 1).length > 0; }
699
+ get(e, t) { const n = Se(e); if ("number" != typeof n)
700
+ return; const s = this.items[n]; return !t && f(s) ? s.value : s; }
701
+ has(e) { const t = Se(e); return "number" == typeof t && t < this.items.length; }
702
+ set(e, t) { const n = Se(e); if ("number" != typeof n)
703
+ throw new Error(`Expected a valid index, not ${e}.`); const s = this.items[n]; f(s) && j(t) ? s.value = t : this.items[n] = t; }
704
+ toJSON(e, t) { const n = []; (t === null || t === void 0 ? void 0 : t.onCreate) && t.onCreate(n); let s = 0; for (const e of this.items)
705
+ n.push(C(e, String(s++), t)); return n; }
706
+ toString(e, t, n) { return e ? pe(this, e, { blockItemPrefix: "- ", flowChars: { start: "[", end: "]" }, itemIndent: (e.indent || "") + " ", onChompKeep: n, onComment: t }) : JSON.stringify(this); }
707
+ static from(e, t, n) { const { replacer: s } = n, i = new this(e); if (t && Symbol.iterator in Object(t)) {
708
+ let e = 0;
709
+ for (let o of t) {
710
+ if ("function" == typeof s) {
711
+ const n = t instanceof Set ? o : String(e++);
712
+ o = s.call(t, n, o);
713
+ }
714
+ i.items.push(D(o, void 0, n));
715
+ }
716
+ } return i; }
717
+ }
718
+ function Se(e) { let t = f(e) ? e.value : e; return t && "string" == typeof t && (t = Number(t)), "number" == typeof t && Number.isInteger(t) && t >= 0 ? t : null; }
719
+ const Ee = { collection: "seq", default: !0, nodeClass: ve, tag: "tag:yaml.org,2002:seq", resolve: (e, t) => (h(e) || t("Expected a sequence for this tag"), e), createNode: (e, t, n) => ve.from(e, t, n) }, Ne = { identify: e => "string" == typeof e, default: !0, tag: "tag:yaml.org,2002:str", resolve: e => e, stringify: (e, t, n, s) => se(e, t = Object.assign({ actualString: !0 }, t), n, s) }, Oe = { identify: e => null == e, createNode: () => new M(null), default: !0, tag: "tag:yaml.org,2002:null", test: /^(?:~|[Nn]ull|NULL)?$/, resolve: () => new M(null), stringify: ({ source: e }, t) => "string" == typeof e && Oe.test.test(e) ? e : t.options.nullStr }, Ae = { identify: e => "boolean" == typeof e, default: !0, tag: "tag:yaml.org,2002:bool", test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/, resolve: e => new M("t" === e[0] || "T" === e[0]), stringify({ source: e, value: t }, n) { if (e && Ae.test.test(e)) {
720
+ if (t === ("t" === e[0] || "T" === e[0]))
721
+ return e;
722
+ } return t ? n.options.trueStr : n.options.falseStr; } };
723
+ function Ie({ format: e, minFractionDigits: t, tag: n, value: s }) { if ("bigint" == typeof s)
724
+ return String(s); const i = "number" == typeof s ? s : Number(s); if (!isFinite(i))
725
+ return isNaN(i) ? ".nan" : i < 0 ? "-.inf" : ".inf"; let o = JSON.stringify(s); if (!e && t && (!n || "tag:yaml.org,2002:float" === n) && /^\d/.test(o)) {
726
+ let e = o.indexOf(".");
727
+ e < 0 && (e = o.length, o += ".");
728
+ let n = t - (o.length - e - 1);
729
+ for (; n-- > 0;)
730
+ o += "0";
731
+ } return o; }
732
+ const Te = { identify: e => "number" == typeof e, default: !0, tag: "tag:yaml.org,2002:float", test: /^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/, resolve: e => "nan" === e.slice(-3).toLowerCase() ? NaN : "-" === e[0] ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY, stringify: Ie }, Le = { identify: e => "number" == typeof e, default: !0, tag: "tag:yaml.org,2002:float", format: "EXP", test: /^[-+]?(?:\.[0-9]+|[0-9]+(?:\.[0-9]*)?)[eE][-+]?[0-9]+$/, resolve: e => parseFloat(e), stringify(e) { const t = Number(e.value); return isFinite(t) ? t.toExponential() : Ie(e); } }, xe = { identify: e => "number" == typeof e, default: !0, tag: "tag:yaml.org,2002:float", test: /^[-+]?(?:\.[0-9]+|[0-9]+\.[0-9]*)$/, resolve(e) { const t = new M(parseFloat(e)), n = e.indexOf("."); return -1 !== n && "0" === e[e.length - 1] && (t.minFractionDigits = e.length - n - 1), t; }, stringify: Ie }, $e = e => "bigint" == typeof e || Number.isInteger(e), Ce = (e, t, n, { intAsBigInt: s }) => s ? BigInt(e) : parseInt(e.substring(t), n);
733
+ function _e(e, t, n) { const { value: s } = e; return $e(s) && s >= 0 ? n + s.toString(t) : Ie(e); }
734
+ const Ke = { identify: e => $e(e) && e >= 0, default: !0, tag: "tag:yaml.org,2002:int", format: "OCT", test: /^0o[0-7]+$/, resolve: (e, t, n) => Ce(e, 2, 8, n), stringify: e => _e(e, 8, "0o") }, Be = { identify: $e, default: !0, tag: "tag:yaml.org,2002:int", test: /^[-+]?[0-9]+$/, resolve: (e, t, n) => Ce(e, 0, 10, n), stringify: Ie }, je = { identify: e => $e(e) && e >= 0, default: !0, tag: "tag:yaml.org,2002:int", format: "HEX", test: /^0x[0-9a-fA-F]+$/, resolve: (e, t, n) => Ce(e, 2, 16, n), stringify: e => _e(e, 16, "0x") }, Me = [we, Ee, Ne, Oe, Ae, Ke, Be, je, Te, Le, xe];
735
+ function De(e) { return "bigint" == typeof e || Number.isInteger(e); }
736
+ const qe = ({ value: e }) => JSON.stringify(e), Pe = [we, Ee].concat([{ identify: e => "string" == typeof e, default: !0, tag: "tag:yaml.org,2002:str", resolve: e => e, stringify: qe }, { identify: e => null == e, createNode: () => new M(null), default: !0, tag: "tag:yaml.org,2002:null", test: /^null$/, resolve: () => null, stringify: qe }, { identify: e => "boolean" == typeof e, default: !0, tag: "tag:yaml.org,2002:bool", test: /^true$|^false$/, resolve: e => "true" === e, stringify: qe }, { identify: De, default: !0, tag: "tag:yaml.org,2002:int", test: /^-?(?:0|[1-9][0-9]*)$/, resolve: (e, t, { intAsBigInt: n }) => n ? BigInt(e) : parseInt(e, 10), stringify: ({ value: e }) => De(e) ? e.toString() : JSON.stringify(e) }, { identify: e => "number" == typeof e, default: !0, tag: "tag:yaml.org,2002:float", test: /^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/, resolve: e => parseFloat(e), stringify: qe }], { default: !0, tag: "", test: /^/, resolve: (e, t) => (t(`Unresolved plain scalar ${JSON.stringify(e)}`), e) }), Ue = { identify: e => e instanceof Uint8Array, default: !1, tag: "tag:yaml.org,2002:binary", resolve(e, t) { if ("function" == typeof atob) {
737
+ const t = atob(e.replace(/[\n\r]/g, "")), n = new Uint8Array(t.length);
738
+ for (let e = 0; e < t.length; ++e)
739
+ n[e] = t.charCodeAt(e);
740
+ return n;
741
+ } return t("This environment does not support reading binary tags; either Buffer or atob is required"), e; }, stringify({ comment: e, type: t, value: n }, s, i, o) { if (!n)
742
+ return ""; const r = n; let a; if ("function" != typeof btoa)
743
+ throw new Error("This environment does not support writing binary tags; either Buffer or btoa is required"); {
744
+ let e = "";
745
+ for (let t = 0; t < r.length; ++t)
746
+ e += String.fromCharCode(r[t]);
747
+ a = btoa(e);
748
+ } if (t !== null && t !== void 0 ? t : (t = M.BLOCK_LITERAL), t !== M.QUOTE_DOUBLE) {
749
+ const e = Math.max(s.options.lineWidth - s.indent.length, s.options.minContentWidth), n = Math.ceil(a.length / e), i = new Array(n);
750
+ for (let t = 0, s = 0; t < n; ++t, s += e)
751
+ i[t] = a.substr(s, e);
752
+ a = i.join(t === M.BLOCK_LITERAL ? "\n" : " ");
753
+ } return se({ comment: e, type: t, value: a }, s, i, o); } };
754
+ function Re(e, t) { var _a; if (h(e))
755
+ for (let n = 0; n < e.items.length; ++n) {
756
+ let s = e.items[n];
757
+ if (!u(s)) {
758
+ if (l(s)) {
759
+ s.items.length > 1 && t("Each pair must have its own sequence indicator");
760
+ const e = s.items[0] || new de(new M(null));
761
+ if (s.commentBefore && (e.key.commentBefore = e.key.commentBefore ? `${s.commentBefore}\n${e.key.commentBefore}` : s.commentBefore), s.comment) {
762
+ const t = (_a = e.value) !== null && _a !== void 0 ? _a : e.key;
763
+ t.comment = t.comment ? `${s.comment}\n${t.comment}` : s.comment;
764
+ }
765
+ s = e;
766
+ }
767
+ e.items[n] = u(s) ? s : new de(s);
768
+ }
769
+ }
770
+ else
771
+ t("Expected a sequence for this tag"); return e; }
772
+ function Fe(e, t, n) { const { replacer: s } = n, i = new ve(e); i.tag = "tag:yaml.org,2002:pairs"; let o = 0; if (t && Symbol.iterator in Object(t))
773
+ for (let e of t) {
774
+ let r, a;
775
+ if ("function" == typeof s && (e = s.call(t, String(o++), e)), Array.isArray(e)) {
776
+ if (2 !== e.length)
777
+ throw new TypeError(`Expected [key, value] tuple: ${e}`);
778
+ r = e[0], a = e[1];
779
+ }
780
+ else if (e && e instanceof Object) {
781
+ const t = Object.keys(e);
782
+ if (1 !== t.length)
783
+ throw new TypeError(`Expected tuple with one key, not ${t.length} keys`);
784
+ r = t[0], a = e[r];
785
+ }
786
+ else
787
+ r = e;
788
+ i.items.push(he(r, a, n));
789
+ } return i; }
790
+ const Ve = { collection: "seq", default: !1, tag: "tag:yaml.org,2002:pairs", resolve: Re, createNode: Fe };
791
+ class Je extends ve {
792
+ constructor() { super(), this.add = ke.prototype.add.bind(this), this.delete = ke.prototype.delete.bind(this), this.get = ke.prototype.get.bind(this), this.has = ke.prototype.has.bind(this), this.set = ke.prototype.set.bind(this), this.tag = Je.tag; }
793
+ toJSON(e, t) { if (!t)
794
+ return super.toJSON(e); const n = new Map; (t === null || t === void 0 ? void 0 : t.onCreate) && t.onCreate(n); for (const e of this.items) {
795
+ let s, i;
796
+ if (u(e) ? (s = C(e.key, "", t), i = C(e.value, s, t)) : s = C(e, "", t), n.has(s))
797
+ throw new Error("Ordered maps must not include duplicate keys");
798
+ n.set(s, i);
799
+ } return n; }
800
+ static from(e, t, n) { const s = Fe(e, t, n), i = new this; return i.items = s.items, i; }
801
+ }
802
+ Je.tag = "tag:yaml.org,2002:omap";
803
+ const Ye = { collection: "seq", identify: e => e instanceof Map, nodeClass: Je, default: !1, tag: "tag:yaml.org,2002:omap", resolve(e, t) { const n = Re(e, t), s = []; for (const { key: e } of n.items)
804
+ f(e) && (s.includes(e.value) ? t(`Ordered maps must not include duplicate keys: ${e.value}`) : s.push(e.value)); return Object.assign(new Je, n); }, createNode: (e, t, n) => Je.from(e, t, n) };
805
+ function We({ value: e, source: t }, n) { return t && (e ? Ge : Qe).test.test(t) ? t : e ? n.options.trueStr : n.options.falseStr; }
806
+ const Ge = { identify: e => !0 === e, default: !0, tag: "tag:yaml.org,2002:bool", test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/, resolve: () => new M(!0), stringify: We }, Qe = { identify: e => !1 === e, default: !0, tag: "tag:yaml.org,2002:bool", test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/, resolve: () => new M(!1), stringify: We }, He = { identify: e => "number" == typeof e, default: !0, tag: "tag:yaml.org,2002:float", test: /^(?:[-+]?\.(?:inf|Inf|INF)|\.nan|\.NaN|\.NAN)$/, resolve: e => "nan" === e.slice(-3).toLowerCase() ? NaN : "-" === e[0] ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY, stringify: Ie }, Xe = { identify: e => "number" == typeof e, default: !0, tag: "tag:yaml.org,2002:float", format: "EXP", test: /^[-+]?(?:[0-9][0-9_]*)?(?:\.[0-9_]*)?[eE][-+]?[0-9]+$/, resolve: e => parseFloat(e.replace(/_/g, "")), stringify(e) { const t = Number(e.value); return isFinite(t) ? t.toExponential() : Ie(e); } }, ze = { identify: e => "number" == typeof e, default: !0, tag: "tag:yaml.org,2002:float", test: /^[-+]?(?:[0-9][0-9_]*)?\.[0-9_]*$/, resolve(e) { const t = new M(parseFloat(e.replace(/_/g, ""))), n = e.indexOf("."); if (-1 !== n) {
807
+ const s = e.substring(n + 1).replace(/_/g, "");
808
+ "0" === s[s.length - 1] && (t.minFractionDigits = s.length);
809
+ } return t; }, stringify: Ie }, Ze = e => "bigint" == typeof e || Number.isInteger(e);
810
+ function et(e, t, n, { intAsBigInt: s }) { const i = e[0]; if ("-" !== i && "+" !== i || (t += 1), e = e.substring(t).replace(/_/g, ""), s) {
811
+ switch (n) {
812
+ case 2:
813
+ e = `0b${e}`;
814
+ break;
815
+ case 8:
816
+ e = `0o${e}`;
817
+ break;
818
+ case 16: e = `0x${e}`;
819
+ }
820
+ const t = BigInt(e);
821
+ return "-" === i ? BigInt(-1) * t : t;
822
+ } const o = parseInt(e, n); return "-" === i ? -1 * o : o; }
823
+ function tt(e, t, n) { const { value: s } = e; if (Ze(s)) {
824
+ const e = s.toString(t);
825
+ return s < 0 ? "-" + n + e.substr(1) : n + e;
826
+ } return Ie(e); }
827
+ const nt = { identify: Ze, default: !0, tag: "tag:yaml.org,2002:int", format: "BIN", test: /^[-+]?0b[0-1_]+$/, resolve: (e, t, n) => et(e, 2, 2, n), stringify: e => tt(e, 2, "0b") }, st = { identify: Ze, default: !0, tag: "tag:yaml.org,2002:int", format: "OCT", test: /^[-+]?0[0-7_]+$/, resolve: (e, t, n) => et(e, 1, 8, n), stringify: e => tt(e, 8, "0") }, it = { identify: Ze, default: !0, tag: "tag:yaml.org,2002:int", test: /^[-+]?[0-9][0-9_]*$/, resolve: (e, t, n) => et(e, 0, 10, n), stringify: Ie }, ot = { identify: Ze, default: !0, tag: "tag:yaml.org,2002:int", format: "HEX", test: /^[-+]?0x[0-9a-fA-F_]+$/, resolve: (e, t, n) => et(e, 2, 16, n), stringify: e => tt(e, 16, "0x") };
828
+ class rt extends ke {
829
+ constructor(e) { super(e), this.tag = rt.tag; }
830
+ add(e) { let t; t = u(e) ? e : e && "object" == typeof e && "key" in e && "value" in e && null === e.value ? new de(e.key, null) : new de(e, null); be(this.items, t.key) || this.items.push(t); }
831
+ get(e, t) { const n = be(this.items, e); return !t && u(n) ? f(n.key) ? n.key.value : n.key : n; }
832
+ set(e, t) { if ("boolean" != typeof t)
833
+ throw new Error("Expected boolean value for set(key, value) in a YAML set, not " + typeof t); const n = be(this.items, e); n && !t ? this.items.splice(this.items.indexOf(n), 1) : !n && t && this.items.push(new de(e)); }
834
+ toJSON(e, t) { return super.toJSON(e, t, Set); }
835
+ toString(e, t, n) { if (!e)
836
+ return JSON.stringify(this); if (this.hasAllNullValues(!0))
837
+ return super.toString(Object.assign({}, e, { allNullValues: !0 }), t, n); throw new Error("Set items must all have null values"); }
838
+ static from(e, t, n) { const { replacer: s } = n, i = new this(e); if (t && Symbol.iterator in Object(t))
839
+ for (let e of t)
840
+ "function" == typeof s && (e = s.call(t, e, e)), i.items.push(he(e, null, n)); return i; }
841
+ }
842
+ rt.tag = "tag:yaml.org,2002:set";
843
+ const at = { collection: "map", identify: e => e instanceof Set, nodeClass: rt, default: !1, tag: "tag:yaml.org,2002:set", createNode: (e, t, n) => rt.from(e, t, n), resolve(e, t) { if (l(e)) {
844
+ if (e.hasAllNullValues(!0))
845
+ return Object.assign(new rt, e);
846
+ t("Set items must all have null values");
847
+ }
848
+ else
849
+ t("Expected a mapping for this tag"); return e; } };
850
+ function ct(e, t) { const n = e[0], s = "-" === n || "+" === n ? e.substring(1) : e, i = e => t ? BigInt(e) : Number(e), o = s.replace(/_/g, "").split(":").reduce(((e, t) => e * i(60) + i(t)), i(0)); return "-" === n ? i(-1) * o : o; }
851
+ function lt(e) { let { value: t } = e, n = e => e; if ("bigint" == typeof t)
852
+ n = e => BigInt(e);
853
+ else if (isNaN(t) || !isFinite(t))
854
+ return Ie(e); let s = ""; t < 0 && (s = "-", t *= n(-1)); const i = n(60), o = [t % i]; return t < 60 ? o.unshift(0) : (t = (t - o[0]) / i, o.unshift(t % i), t >= 60 && (t = (t - o[0]) / i, o.unshift(t))), s + o.map((e => String(e).padStart(2, "0"))).join(":").replace(/000000\d*$/, ""); }
855
+ const ut = { identify: e => "bigint" == typeof e || Number.isInteger(e), default: !0, tag: "tag:yaml.org,2002:int", format: "TIME", test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/, resolve: (e, t, { intAsBigInt: n }) => ct(e, n), stringify: lt }, ft = { identify: e => "number" == typeof e, default: !0, tag: "tag:yaml.org,2002:float", format: "TIME", test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*$/, resolve: e => ct(e, !1), stringify: lt }, ht = { identify: e => e instanceof Date, default: !0, tag: "tag:yaml.org,2002:timestamp", test: RegExp("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?$"), resolve(e) { const t = e.match(ht.test); if (!t)
856
+ throw new Error("!!timestamp expects a date, starting with yyyy-mm-dd"); const [, n, s, i, o, r, a] = t.map(Number), c = t[7] ? Number((t[7] + "00").substr(1, 3)) : 0; let l = Date.UTC(n, s - 1, i, o || 0, r || 0, a || 0, c); const u = t[8]; if (u && "Z" !== u) {
857
+ let e = ct(u, !1);
858
+ Math.abs(e) < 30 && (e *= 60), l -= 6e4 * e;
859
+ } return new Date(l); }, stringify: ({ value: e }) => { var _a; return (_a = e === null || e === void 0 ? void 0 : e.toISOString().replace(/(T00:00:00)?\.000Z$/, "")) !== null && _a !== void 0 ? _a : ""; } }, dt = [we, Ee, Ne, Oe, Ge, Qe, nt, st, it, ot, He, Xe, ze, Ue, ce, Ye, Ve, at, ut, ft, ht], pt = new Map([["core", Me], ["failsafe", [we, Ee, Ne]], ["json", Pe], ["yaml11", dt], ["yaml-1.1", dt]]), mt = { binary: Ue, bool: Ae, float: xe, floatExp: Le, floatNaN: Te, floatTime: ft, int: Be, intHex: je, intOct: Ke, intTime: ut, map: we, merge: ce, null: Oe, omap: Ye, pairs: Ve, seq: Ee, set: at, timestamp: ht }, yt = { "tag:yaml.org,2002:binary": Ue, "tag:yaml.org,2002:merge": ce, "tag:yaml.org,2002:omap": Ye, "tag:yaml.org,2002:pairs": Ve, "tag:yaml.org,2002:set": at, "tag:yaml.org,2002:timestamp": ht };
860
+ function gt(e, t, n) { const s = pt.get(t); if (s && !e)
861
+ return n && !s.includes(ce) ? s.concat(ce) : s.slice(); let i = s; if (!i) {
862
+ if (!Array.isArray(e)) {
863
+ const e = Array.from(pt.keys()).filter((e => "yaml11" !== e)).map((e => JSON.stringify(e))).join(", ");
864
+ throw new Error(`Unknown schema "${t}"; use one of ${e} or define customTags array`);
865
+ }
866
+ i = [];
867
+ } if (Array.isArray(e))
868
+ for (const t of e)
869
+ i = i.concat(t);
870
+ else
871
+ "function" == typeof e && (i = e(i.slice())); return n && (i = i.concat(ce)), i.reduce(((e, t) => { const n = "string" == typeof t ? mt[t] : t; if (!n) {
872
+ const e = JSON.stringify(t), n = Object.keys(mt).map((e => JSON.stringify(e))).join(", ");
873
+ throw new Error(`Unknown custom tag ${e}; use one of ${n}`);
874
+ } return e.includes(n) || e.push(n), e; }), []); }
875
+ const bt = (e, t) => e.key < t.key ? -1 : e.key > t.key ? 1 : 0;
876
+ class kt {
877
+ constructor({ compat: e, customTags: t, merge: s, resolveKnownTags: r, schema: a, sortMapEntries: c, toStringDefaults: l }) { this.compat = Array.isArray(e) ? gt(e, "compat") : e ? gt(null, e) : null, this.name = "string" == typeof a && a || "core", this.knownTags = r ? yt : {}, this.tags = gt(t, this.name, s), this.toStringOptions = l !== null && l !== void 0 ? l : null, Object.defineProperty(this, n, { value: we }), Object.defineProperty(this, i, { value: Ne }), Object.defineProperty(this, o, { value: Ee }), this.sortMapEntries = "function" == typeof c ? c : !0 === c ? bt : null; }
878
+ clone() { const e = Object.create(kt.prototype, Object.getOwnPropertyDescriptors(this)); return e.tags = this.tags.slice(), e; }
879
+ }
880
+ class wt {
881
+ constructor(e, n, s) { this.commentBefore = null, this.comment = null, this.errors = [], this.warnings = [], Object.defineProperty(this, r, { value: t }); let i = null; "function" == typeof n || Array.isArray(n) ? i = n : void 0 === s && n && (s = n, n = void 0); const o = Object.assign({ intAsBigInt: !1, keepSourceTokens: !1, logLevel: "warn", prettyErrors: !0, strict: !0, stringKeys: !1, uniqueKeys: !0, version: "1.2" }, s); this.options = o; let { version: a } = o; (s === null || s === void 0 ? void 0 : s._directives) ? (this.directives = s._directives.atDocument(), this.directives.yaml.explicit && (a = this.directives.yaml.version)) : this.directives = new I({ version: a }), this.setSchema(a, s), this.contents = void 0 === e ? null : this.createNode(e, i, s); }
882
+ clone() { const e = Object.create(wt.prototype, { [r]: { value: t } }); return e.commentBefore = this.commentBefore, e.comment = this.comment, e.errors = this.errors.slice(), e.warnings = this.warnings.slice(), e.options = Object.assign({}, this.options), this.directives && (e.directives = this.directives.clone()), e.schema = this.schema.clone(), e.contents = p(this.contents) ? this.contents.clone(e.schema) : this.contents, this.range && (e.range = this.range.slice()), e; }
883
+ add(e) { vt(this.contents) && this.contents.add(e); }
884
+ addIn(e, t) { vt(this.contents) && this.contents.addIn(e, t); }
885
+ createAlias(e, t) { if (!e.anchor) {
886
+ const n = L(this);
887
+ e.anchor = !t || n.has(t) ? x(t || "a", n) : t;
888
+ } return new K(e.anchor); }
889
+ createNode(e, t, n) { let s; if ("function" == typeof t)
890
+ e = t.call({ "": e }, "", e), s = t;
891
+ else if (Array.isArray(t)) {
892
+ const e = e => "number" == typeof e || e instanceof String || e instanceof Number, n = t.filter(e).map(String);
893
+ n.length > 0 && (t = t.concat(n)), s = t;
894
+ }
895
+ else
896
+ void 0 === n && t && (n = t, t = void 0); const { aliasDuplicateObjects: i, anchorPrefix: o, flow: r, keepUndefined: a, onTagObj: c, tag: l } = n !== null && n !== void 0 ? n : {}, { onAnchor: u, setAnchors: h, sourceObjects: p } = function (e, t) { const n = [], s = new Map; let i = null; return { onAnchor: s => { n.push(s), i !== null && i !== void 0 ? i : (i = L(e)); const o = x(t, i); return i.add(o), o; }, setAnchors: () => { for (const e of n) {
897
+ const t = s.get(e);
898
+ if ("object" != typeof t || !t.anchor || !f(t.node) && !d(t.node)) {
899
+ const t = new Error("Failed to resolve repeated object (this should not happen)");
900
+ throw t.source = e, t;
901
+ }
902
+ t.node.anchor = t.anchor;
903
+ } }, sourceObjects: s }; }(this, o || "a"), m = D(e, l, { aliasDuplicateObjects: i !== null && i !== void 0 ? i : !0, keepUndefined: a !== null && a !== void 0 ? a : !1, onAnchor: u, onTagObj: c, replacer: s, schema: this.schema, sourceObjects: p }); return r && d(m) && (m.flow = !0), h(), m; }
904
+ createPair(e, t, n = {}) { const s = this.createNode(e, null, n), i = this.createNode(t, null, n); return new de(s, i); }
905
+ delete(e) { return !!vt(this.contents) && this.contents.delete(e); }
906
+ deleteIn(e) { return P(e) ? null != this.contents && (this.contents = null, !0) : !!vt(this.contents) && this.contents.deleteIn(e); }
907
+ get(e, t) { return d(this.contents) ? this.contents.get(e, t) : void 0; }
908
+ getIn(e, t) { return P(e) ? !t && f(this.contents) ? this.contents.value : this.contents : d(this.contents) ? this.contents.getIn(e, t) : void 0; }
909
+ has(e) { return !!d(this.contents) && this.contents.has(e); }
910
+ hasIn(e) { return P(e) ? void 0 !== this.contents : !!d(this.contents) && this.contents.hasIn(e); }
911
+ set(e, t) { null == this.contents ? this.contents = q(this.schema, [e], t) : vt(this.contents) && this.contents.set(e, t); }
912
+ setIn(e, t) { P(e) ? this.contents = t : null == this.contents ? this.contents = q(this.schema, Array.from(e), t) : vt(this.contents) && this.contents.setIn(e, t); }
913
+ setSchema(e, t = {}) { let n; switch ("number" == typeof e && (e = String(e)), e) {
914
+ case "1.1":
915
+ this.directives ? this.directives.yaml.version = "1.1" : this.directives = new I({ version: "1.1" }), n = { resolveKnownTags: !1, schema: "yaml-1.1" };
916
+ break;
917
+ case "1.2":
918
+ case "next":
919
+ this.directives ? this.directives.yaml.version = e : this.directives = new I({ version: e }), n = { resolveKnownTags: !0, schema: "core" };
920
+ break;
921
+ case null:
922
+ this.directives && delete this.directives, n = null;
923
+ break;
924
+ default: {
925
+ const t = JSON.stringify(e);
926
+ throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${t}`);
927
+ }
928
+ } if (t.schema instanceof Object)
929
+ this.schema = t.schema;
930
+ else {
931
+ if (!n)
932
+ throw new Error("With a null YAML version, the { schema: Schema } option is required");
933
+ this.schema = new kt(Object.assign(n, t));
934
+ } }
935
+ toJS({ json: e, jsonArg: t, mapAsMap: n, maxAliasCount: s, onAnchor: i, reviver: o } = {}) { const r = { anchors: new Map, doc: this, keep: !e, mapAsMap: !0 === n, mapKeyWarned: !1, maxAliasCount: "number" == typeof s ? s : 100 }, a = C(this.contents, t !== null && t !== void 0 ? t : "", r); if ("function" == typeof i)
936
+ for (const { count: e, res: t } of r.anchors.values())
937
+ i(t, e); return "function" == typeof o ? $(o, { "": a }, "", a) : a; }
938
+ toJSON(e, t) { return this.toJS({ json: !0, jsonArg: e, mapAsMap: !1, onAnchor: t }); }
939
+ toString(e = {}) { if (this.errors.length > 0)
940
+ throw new Error("Document with errors cannot be stringified"); if ("indent" in e && (!Number.isInteger(e.indent) || Number(e.indent) <= 0)) {
941
+ const t = JSON.stringify(e.indent);
942
+ throw new Error(`"indent" option must be a positive integer, not ${t}`);
943
+ } return function (e, t) { var _a; const n = []; let s = !0 === t.directives; if (!1 !== t.directives && e.directives) {
944
+ const t = e.directives.toString(e);
945
+ t ? (n.push(t), s = !0) : e.directives.docStart && (s = !0);
946
+ } s && n.push("---"); const i = ie(e, t), { commentString: o } = i.options; if (e.commentBefore) {
947
+ 1 !== n.length && n.unshift("");
948
+ const t = o(e.commentBefore);
949
+ n.unshift(F(t, ""));
950
+ } let r = !1, a = null; if (e.contents) {
951
+ if (p(e.contents)) {
952
+ if (e.contents.spaceBefore && s && n.push(""), e.contents.commentBefore) {
953
+ const t = o(e.contents.commentBefore);
954
+ n.push(F(t, ""));
955
+ }
956
+ i.forceBlockIndent = !!e.comment, a = e.contents.comment;
957
+ }
958
+ const t = a ? void 0 : () => r = !0;
959
+ let c = oe(e.contents, i, (() => a = null), t);
960
+ a && (c += V(c, "", o(a))), "|" !== c[0] && ">" !== c[0] || "---" !== n[n.length - 1] ? n.push(c) : n[n.length - 1] = `--- ${c}`;
961
+ }
962
+ else
963
+ n.push(oe(e.contents, i)); if ((_a = e.directives) === null || _a === void 0 ? void 0 : _a.docEnd)
964
+ if (e.comment) {
965
+ const t = o(e.comment);
966
+ t.includes("\n") ? (n.push("..."), n.push(F(t, ""))) : n.push(`... ${t}`);
967
+ }
968
+ else
969
+ n.push("...");
970
+ else {
971
+ let t = e.comment;
972
+ t && r && (t = t.replace(/^\n+/, "")), t && (r && !a || "" === n[n.length - 1] || n.push(""), n.push(F(o(t), "")));
973
+ } return n.join("\n") + "\n"; }(this, e); }
974
+ }
975
+ function vt(e) { if (d(e))
976
+ return !0; throw new Error("Expected a YAML collection as document contents"); }
977
+ class St extends Error {
978
+ constructor(e, t, n, s) { super(), this.name = e, this.code = n, this.message = s, this.pos = t; }
979
+ }
980
+ class Et extends St {
981
+ constructor(e, t, n) { super("YAMLParseError", e, t, n); }
982
+ }
983
+ class Nt extends St {
984
+ constructor(e, t, n) { super("YAMLWarning", e, t, n); }
985
+ }
986
+ const Ot = (e, t) => n => { if (-1 === n.pos[0])
987
+ return; n.linePos = n.pos.map((e => t.linePos(e))); const { line: s, col: i } = n.linePos[0]; n.message += ` at line ${s}, column ${i}`; let o = i - 1, r = e.substring(t.lineStarts[s - 1], t.lineStarts[s]).replace(/[\n\r]+$/, ""); if (o >= 60 && r.length > 80) {
988
+ const e = Math.min(o - 39, r.length - 79);
989
+ r = "…" + r.substring(e), o -= e - 1;
990
+ } if (r.length > 80 && (r = r.substring(0, 79) + "…"), s > 1 && /^ *$/.test(r.substring(0, o))) {
991
+ let n = e.substring(t.lineStarts[s - 2], t.lineStarts[s - 1]);
992
+ n.length > 80 && (n = n.substring(0, 79) + "…\n"), r = n + r;
993
+ } if (/[^ ]/.test(r)) {
994
+ let e = 1;
995
+ const t = n.linePos[1];
996
+ t && t.line === s && t.col > i && (e = Math.max(1, Math.min(t.col - i, 80 - o)));
997
+ const a = " ".repeat(o) + "^".repeat(e);
998
+ n.message += `:\n\n${r}\n${a}\n`;
999
+ } };
1000
+ function At(e, { flow: t, indicator: n, next: s, offset: i, onError: o, parentIndent: r, startOnNewline: a }) { let c = !1, l = a, u = a, f = "", h = "", d = !1, p = !1, m = null, y = null, g = null, b = null, k = null, w = null, v = null; for (const i of e)
1001
+ switch ((p && ("space" !== i.type && "newline" !== i.type && "comma" !== i.type && o(i.offset, "MISSING_CHAR", "Tags and anchors must be separated from the next token by white space"), p = !1), m && (l && "comment" !== i.type && "newline" !== i.type && o(m, "TAB_AS_INDENT", "Tabs are not allowed as indentation"), m = null), i.type)) {
1002
+ case "space":
1003
+ t || "doc-start" === n && "flow-collection" === (s === null || s === void 0 ? void 0 : s.type) || !i.source.includes("\t") || (m = i), u = !0;
1004
+ break;
1005
+ case "comment": {
1006
+ u || o(i, "MISSING_CHAR", "Comments must be separated from other tokens by white space characters");
1007
+ const e = i.source.substring(1) || " ";
1008
+ f ? f += h + e : f = e, h = "", l = !1;
1009
+ break;
1010
+ }
1011
+ case "newline":
1012
+ l ? f ? f += i.source : w && "seq-item-ind" === n || (c = !0) : h += i.source, l = !0, d = !0, (y || g) && (b = i), u = !0;
1013
+ break;
1014
+ case "anchor":
1015
+ y && o(i, "MULTIPLE_ANCHORS", "A node can have at most one anchor"), i.source.endsWith(":") && o(i.offset + i.source.length - 1, "BAD_ALIAS", "Anchor ending in : is ambiguous", !0), y = i, v !== null && v !== void 0 ? v : (v = i.offset), l = !1, u = !1, p = !0;
1016
+ break;
1017
+ case "tag":
1018
+ g && o(i, "MULTIPLE_TAGS", "A node can have at most one tag"), g = i, v !== null && v !== void 0 ? v : (v = i.offset), l = !1, u = !1, p = !0;
1019
+ break;
1020
+ case n:
1021
+ (y || g) && o(i, "BAD_PROP_ORDER", `Anchors and tags must be after the ${i.source} indicator`), w && o(i, "UNEXPECTED_TOKEN", `Unexpected ${i.source} in ${t !== null && t !== void 0 ? t : "collection"}`), w = i, l = "seq-item-ind" === n || "explicit-key-ind" === n, u = !1;
1022
+ break;
1023
+ case "comma": if (t) {
1024
+ k && o(i, "UNEXPECTED_TOKEN", `Unexpected , in ${t}`), k = i, l = !1, u = !1;
1025
+ break;
1026
+ }
1027
+ default: o(i, "UNEXPECTED_TOKEN", `Unexpected ${i.type} token`), l = !1, u = !1;
1028
+ } const S = e[e.length - 1], E = S ? S.offset + S.source.length : i; return p && s && "space" !== s.type && "newline" !== s.type && "comma" !== s.type && ("scalar" !== s.type || "" !== s.source) && o(s.offset, "MISSING_CHAR", "Tags and anchors must be separated from the next token by white space"), m && (l && m.indent <= r || "block-map" === (s === null || s === void 0 ? void 0 : s.type) || "block-seq" === (s === null || s === void 0 ? void 0 : s.type)) && o(m, "TAB_AS_INDENT", "Tabs are not allowed as indentation"), { comma: k, found: w, spaceBefore: c, comment: f, hasNewline: d, anchor: y, tag: g, newlineAfterProp: b, end: E, start: v !== null && v !== void 0 ? v : E }; }
1029
+ function It(e) { if (!e)
1030
+ return null; switch (e.type) {
1031
+ case "alias":
1032
+ case "scalar":
1033
+ case "double-quoted-scalar":
1034
+ case "single-quoted-scalar":
1035
+ if (e.source.includes("\n"))
1036
+ return !0;
1037
+ if (e.end)
1038
+ for (const t of e.end)
1039
+ if ("newline" === t.type)
1040
+ return !0;
1041
+ return !1;
1042
+ case "flow-collection":
1043
+ for (const t of e.items) {
1044
+ for (const e of t.start)
1045
+ if ("newline" === e.type)
1046
+ return !0;
1047
+ if (t.sep)
1048
+ for (const e of t.sep)
1049
+ if ("newline" === e.type)
1050
+ return !0;
1051
+ if (It(t.key) || It(t.value))
1052
+ return !0;
1053
+ }
1054
+ return !1;
1055
+ default: return !0;
1056
+ } }
1057
+ function Tt(e, t, n) { if ("flow-collection" === (t === null || t === void 0 ? void 0 : t.type)) {
1058
+ const s = t.end[0];
1059
+ if (s.indent === e && ("]" === s.source || "}" === s.source) && It(t)) {
1060
+ n(s, "BAD_INDENT", "Flow end indicator should be more indented than parent", !0);
1061
+ }
1062
+ } }
1063
+ function Lt(e, t, n) { const { uniqueKeys: s } = e.options; if (!1 === s)
1064
+ return !1; const i = "function" == typeof s ? s : (e, t) => e === t || f(e) && f(t) && e.value === t.value; return t.some((e => i(e.key, n))); }
1065
+ const xt = "All mapping items must start at the same column";
1066
+ function $t(e, t, n, s) { let i = ""; if (e) {
1067
+ let o = !1, r = "";
1068
+ for (const a of e) {
1069
+ const { source: e, type: c } = a;
1070
+ switch (c) {
1071
+ case "space":
1072
+ o = !0;
1073
+ break;
1074
+ case "comment": {
1075
+ n && !o && s(a, "MISSING_CHAR", "Comments must be separated from other tokens by white space characters");
1076
+ const t = e.substring(1) || " ";
1077
+ i ? i += r + t : i = t, r = "";
1078
+ break;
1079
+ }
1080
+ case "newline":
1081
+ i && (r += e), o = !0;
1082
+ break;
1083
+ default: s(a, "UNEXPECTED_TOKEN", `Unexpected ${c} at node end`);
1084
+ }
1085
+ t += e.length;
1086
+ }
1087
+ } return { comment: i, offset: t }; }
1088
+ const Ct = "Block collections are not allowed within flow collections", _t = e => e && ("block-map" === e.type || "block-seq" === e.type);
1089
+ function Kt(e, t, n, s, i, o) { const r = "block-map" === n.type ? function ({ composeNode: e, composeEmptyNode: t }, n, s, i, o) { var _a, _b; const r = new ((_a = o === null || o === void 0 ? void 0 : o.nodeClass) !== null && _a !== void 0 ? _a : ke)(n.schema); n.atRoot && (n.atRoot = !1); let a = s.offset, c = null; for (const o of s.items) {
1090
+ const { start: l, key: u, sep: f, value: h } = o, d = At(l, { indicator: "explicit-key-ind", next: u !== null && u !== void 0 ? u : f === null || f === void 0 ? void 0 : f[0], offset: a, onError: i, parentIndent: s.indent, startOnNewline: !0 }), p = !d.found;
1091
+ if (p) {
1092
+ if (u && ("block-seq" === u.type ? i(a, "BLOCK_AS_IMPLICIT_KEY", "A block sequence may not be used as an implicit map key") : "indent" in u && u.indent !== s.indent && i(a, "BAD_INDENT", xt)), !d.anchor && !d.tag && !f) {
1093
+ c = d.end, d.comment && (r.comment ? r.comment += "\n" + d.comment : r.comment = d.comment);
1094
+ continue;
1095
+ }
1096
+ (d.newlineAfterProp || It(u)) && i(u !== null && u !== void 0 ? u : l[l.length - 1], "MULTILINE_IMPLICIT_KEY", "Implicit keys need to be on a single line");
1097
+ }
1098
+ else
1099
+ ((_b = d.found) === null || _b === void 0 ? void 0 : _b.indent) !== s.indent && i(a, "BAD_INDENT", xt);
1100
+ n.atKey = !0;
1101
+ const m = d.end, y = u ? e(n, u, d, i) : t(n, m, l, null, d, i);
1102
+ n.schema.compat && Tt(s.indent, u, i), n.atKey = !1, Lt(n, r.items, y) && i(m, "DUPLICATE_KEY", "Map keys must be unique");
1103
+ const g = At(f !== null && f !== void 0 ? f : [], { indicator: "map-value-ind", next: h, offset: y.range[2], onError: i, parentIndent: s.indent, startOnNewline: !u || "block-scalar" === u.type });
1104
+ if (a = g.end, g.found) {
1105
+ p && ("block-map" !== (h === null || h === void 0 ? void 0 : h.type) || g.hasNewline || i(a, "BLOCK_AS_IMPLICIT_KEY", "Nested mappings are not allowed in compact mappings"), n.options.strict && d.start < g.found.offset - 1024 && i(y.range, "KEY_OVER_1024_CHARS", "The : indicator must be at most 1024 chars after the start of an implicit block mapping key"));
1106
+ const c = h ? e(n, h, g, i) : t(n, a, f, null, g, i);
1107
+ n.schema.compat && Tt(s.indent, h, i), a = c.range[2];
1108
+ const l = new de(y, c);
1109
+ n.options.keepSourceTokens && (l.srcToken = o), r.items.push(l);
1110
+ }
1111
+ else {
1112
+ p && i(y.range, "MISSING_CHAR", "Implicit map keys need to be followed by map values"), g.comment && (y.comment ? y.comment += "\n" + g.comment : y.comment = g.comment);
1113
+ const e = new de(y);
1114
+ n.options.keepSourceTokens && (e.srcToken = o), r.items.push(e);
1115
+ }
1116
+ } return c && c < a && i(c, "IMPOSSIBLE", "Map comment with trailing content"), r.range = [s.offset, a, c !== null && c !== void 0 ? c : a], r; }(e, t, n, s, o) : "block-seq" === n.type ? function ({ composeNode: e, composeEmptyNode: t }, n, s, i, o) { var _a; const r = new ((_a = o === null || o === void 0 ? void 0 : o.nodeClass) !== null && _a !== void 0 ? _a : ve)(n.schema); n.atRoot && (n.atRoot = !1), n.atKey && (n.atKey = !1); let a = s.offset, c = null; for (const { start: o, value: l } of s.items) {
1117
+ const u = At(o, { indicator: "seq-item-ind", next: l, offset: a, onError: i, parentIndent: s.indent, startOnNewline: !0 });
1118
+ if (!u.found) {
1119
+ if (!(u.anchor || u.tag || l)) {
1120
+ c = u.end, u.comment && (r.comment = u.comment);
1121
+ continue;
1122
+ }
1123
+ l && "block-seq" === l.type ? i(u.end, "BAD_INDENT", "All sequence items must start at the same column") : i(a, "MISSING_CHAR", "Sequence item without - indicator");
1124
+ }
1125
+ const f = l ? e(n, l, u, i) : t(n, u.end, o, null, u, i);
1126
+ n.schema.compat && Tt(s.indent, l, i), a = f.range[2], r.items.push(f);
1127
+ } return r.range = [s.offset, a, c !== null && c !== void 0 ? c : a], r; }(e, t, n, s, o) : function ({ composeNode: e, composeEmptyNode: t }, n, s, i, o) { var _a, _b; const r = "{" === s.start.source, a = r ? "flow map" : "flow sequence", c = new ((_a = o === null || o === void 0 ? void 0 : o.nodeClass) !== null && _a !== void 0 ? _a : (r ? ke : ve))(n.schema); c.flow = !0; const l = n.atRoot; l && (n.atRoot = !1), n.atKey && (n.atKey = !1); let f = s.offset + s.start.source.length; for (let o = 0; o < s.items.length; ++o) {
1128
+ const l = s.items[o], { start: h, key: d, sep: p, value: m } = l, y = At(h, { flow: a, indicator: "explicit-key-ind", next: d !== null && d !== void 0 ? d : p === null || p === void 0 ? void 0 : p[0], offset: f, onError: i, parentIndent: s.indent, startOnNewline: !1 });
1129
+ if (!y.found) {
1130
+ if (!(y.anchor || y.tag || p || m)) {
1131
+ 0 === o && y.comma ? i(y.comma, "UNEXPECTED_TOKEN", `Unexpected , in ${a}`) : o < s.items.length - 1 && i(y.start, "UNEXPECTED_TOKEN", `Unexpected empty item in ${a}`), y.comment && (c.comment ? c.comment += "\n" + y.comment : c.comment = y.comment), f = y.end;
1132
+ continue;
1133
+ }
1134
+ !r && n.options.strict && It(d) && i(d, "MULTILINE_IMPLICIT_KEY", "Implicit keys of flow sequence pairs need to be on a single line");
1135
+ }
1136
+ if (0 === o)
1137
+ y.comma && i(y.comma, "UNEXPECTED_TOKEN", `Unexpected , in ${a}`);
1138
+ else if (y.comma || i(y.start, "MISSING_CHAR", `Missing , between ${a} items`), y.comment) {
1139
+ let e = "";
1140
+ e: for (const t of h)
1141
+ switch (t.type) {
1142
+ case "comma":
1143
+ case "space": break;
1144
+ case "comment":
1145
+ e = t.source.substring(1);
1146
+ break e;
1147
+ default: break e;
1148
+ }
1149
+ if (e) {
1150
+ let t = c.items[c.items.length - 1];
1151
+ u(t) && (t = (_b = t.value) !== null && _b !== void 0 ? _b : t.key), t.comment ? t.comment += "\n" + e : t.comment = e, y.comment = y.comment.substring(e.length + 1);
1152
+ }
1153
+ }
1154
+ if (r || p || y.found) {
1155
+ n.atKey = !0;
1156
+ const o = y.end, u = d ? e(n, d, y, i) : t(n, o, h, null, y, i);
1157
+ _t(d) && i(u.range, "BLOCK_IN_FLOW", Ct), n.atKey = !1;
1158
+ const g = At(p !== null && p !== void 0 ? p : [], { flow: a, indicator: "map-value-ind", next: m, offset: u.range[2], onError: i, parentIndent: s.indent, startOnNewline: !1 });
1159
+ if (g.found) {
1160
+ if (!r && !y.found && n.options.strict) {
1161
+ if (p)
1162
+ for (const e of p) {
1163
+ if (e === g.found)
1164
+ break;
1165
+ if ("newline" === e.type) {
1166
+ i(e, "MULTILINE_IMPLICIT_KEY", "Implicit keys of flow sequence pairs need to be on a single line");
1167
+ break;
1168
+ }
1169
+ }
1170
+ y.start < g.found.offset - 1024 && i(g.found, "KEY_OVER_1024_CHARS", "The : indicator must be at most 1024 chars after the start of an implicit flow sequence key");
1171
+ }
1172
+ }
1173
+ else
1174
+ m && ("source" in m && m.source && ":" === m.source[0] ? i(m, "MISSING_CHAR", `Missing space after : in ${a}`) : i(g.start, "MISSING_CHAR", `Missing , or : between ${a} items`));
1175
+ const b = m ? e(n, m, g, i) : g.found ? t(n, g.end, p, null, g, i) : null;
1176
+ b ? _t(m) && i(b.range, "BLOCK_IN_FLOW", Ct) : g.comment && (u.comment ? u.comment += "\n" + g.comment : u.comment = g.comment);
1177
+ const k = new de(u, b);
1178
+ if (n.options.keepSourceTokens && (k.srcToken = l), r) {
1179
+ const e = c;
1180
+ Lt(n, e.items, u) && i(o, "DUPLICATE_KEY", "Map keys must be unique"), e.items.push(k);
1181
+ }
1182
+ else {
1183
+ const e = new ke(n.schema);
1184
+ e.flow = !0, e.items.push(k);
1185
+ const t = (b !== null && b !== void 0 ? b : u).range;
1186
+ e.range = [u.range[0], t[1], t[2]], c.items.push(e);
1187
+ }
1188
+ f = b ? b.range[2] : g.end;
1189
+ }
1190
+ else {
1191
+ const s = m ? e(n, m, y, i) : t(n, y.end, p, null, y, i);
1192
+ c.items.push(s), f = s.range[2], _t(m) && i(s.range, "BLOCK_IN_FLOW", Ct);
1193
+ }
1194
+ } const h = r ? "}" : "]", [d, ...p] = s.end; let m = f; if (d && d.source === h)
1195
+ m = d.offset + d.source.length;
1196
+ else {
1197
+ const e = a[0].toUpperCase() + a.substring(1);
1198
+ i(f, l ? "MISSING_CHAR" : "BAD_INDENT", l ? `${e} must end with a ${h}` : `${e} in block collection must be sufficiently indented and end with a ${h}`), d && 1 !== d.source.length && p.unshift(d);
1199
+ } if (p.length > 0) {
1200
+ const e = $t(p, m, n.options.strict, i);
1201
+ e.comment && (c.comment ? c.comment += "\n" + e.comment : c.comment = e.comment), c.range = [s.offset, m, e.offset];
1202
+ }
1203
+ else
1204
+ c.range = [s.offset, m, m]; return c; }(e, t, n, s, o), a = r.constructor; return "!" === i || i === a.tagName ? (r.tag = a.tagName, r) : (i && (r.tag = i), r); }
1205
+ function Bt(e, t, n) { const s = t.offset, i = function ({ offset: e, props: t }, n, s) { if ("block-scalar-header" !== t[0].type)
1206
+ return s(t[0], "IMPOSSIBLE", "Block scalar header not found"), null; const { source: i } = t[0], o = i[0]; let r = 0, a = "", c = -1; for (let t = 1; t < i.length; ++t) {
1207
+ const n = i[t];
1208
+ if (a || "-" !== n && "+" !== n) {
1209
+ const s = Number(n);
1210
+ !r && s ? r = s : -1 === c && (c = e + t);
1211
+ }
1212
+ else
1213
+ a = n;
1214
+ } -1 !== c && s(c, "UNEXPECTED_TOKEN", `Block scalar header includes extra characters: ${i}`); let l = !1, u = "", f = i.length; for (let e = 1; e < t.length; ++e) {
1215
+ const i = t[e];
1216
+ switch (i.type) {
1217
+ case "space": l = !0;
1218
+ case "newline":
1219
+ f += i.source.length;
1220
+ break;
1221
+ case "comment":
1222
+ if (n && !l) {
1223
+ s(i, "MISSING_CHAR", "Comments must be separated from other tokens by white space characters");
1224
+ }
1225
+ f += i.source.length, u = i.source.substring(1);
1226
+ break;
1227
+ case "error":
1228
+ s(i, "UNEXPECTED_TOKEN", i.message), f += i.source.length;
1229
+ break;
1230
+ default: {
1231
+ s(i, "UNEXPECTED_TOKEN", `Unexpected token in block scalar header: ${i.type}`);
1232
+ const e = i.source;
1233
+ e && "string" == typeof e && (f += e.length);
1234
+ }
1235
+ }
1236
+ } return { mode: o, indent: r, chomp: a, comment: u, length: f }; }(t, e.options.strict, n); if (!i)
1237
+ return { value: "", type: null, comment: "", range: [s, s, s] }; const o = ">" === i.mode ? M.BLOCK_FOLDED : M.BLOCK_LITERAL, r = t.source ? function (e) { const t = e.split(/\n( *)/), n = t[0], s = n.match(/^( *)/), i = [(s === null || s === void 0 ? void 0 : s[1]) ? [s[1], n.slice(s[1].length)] : ["", n]]; for (let e = 1; e < t.length; e += 2)
1238
+ i.push([t[e], t[e + 1]]); return i; }(t.source) : []; let a = r.length; for (let e = r.length - 1; e >= 0; --e) {
1239
+ const t = r[e][1];
1240
+ if ("" !== t && "\r" !== t)
1241
+ break;
1242
+ a = e;
1243
+ } if (0 === a) {
1244
+ const e = "+" === i.chomp && r.length > 0 ? "\n".repeat(Math.max(1, r.length - 1)) : "";
1245
+ let n = s + i.length;
1246
+ return t.source && (n += t.source.length), { value: e, type: o, comment: i.comment, range: [s, n, n] };
1247
+ } let c = t.indent + i.indent, l = t.offset + i.length, u = 0; for (let t = 0; t < a; ++t) {
1248
+ const [s, o] = r[t];
1249
+ if ("" !== o && "\r" !== o) {
1250
+ if (s.length < c) {
1251
+ const e = "Block scalars with more-indented leading empty lines must use an explicit indentation indicator";
1252
+ n(l + s.length, "MISSING_CHAR", e);
1253
+ }
1254
+ if (0 === i.indent && (c = s.length), u = t, 0 === c && !e.atRoot) {
1255
+ n(l, "BAD_INDENT", "Block scalar values in collections must be indented");
1256
+ }
1257
+ break;
1258
+ }
1259
+ 0 === i.indent && s.length > c && (c = s.length), l += s.length + o.length + 1;
1260
+ } for (let e = r.length - 1; e >= a; --e)
1261
+ r[e][0].length > c && (a = e + 1); let f = "", h = "", d = !1; for (let e = 0; e < u; ++e)
1262
+ f += r[e][0].slice(c) + "\n"; for (let e = u; e < a; ++e) {
1263
+ let [t, s] = r[e];
1264
+ l += t.length + s.length + 1;
1265
+ const a = "\r" === s[s.length - 1];
1266
+ if (a && (s = s.slice(0, -1)), s && t.length < c) {
1267
+ const e = `Block scalar lines must not be less indented than their ${i.indent ? "explicit indentation indicator" : "first line"}`;
1268
+ n(l - s.length - (a ? 2 : 1), "BAD_INDENT", e), t = "";
1269
+ }
1270
+ o === M.BLOCK_LITERAL ? (f += h + t.slice(c) + s, h = "\n") : t.length > c || "\t" === s[0] ? (" " === h ? h = "\n" : d || "\n" !== h || (h = "\n\n"), f += h + t.slice(c) + s, h = "\n", d = !0) : "" === s ? "\n" === h ? f += "\n" : h = "\n" : (f += h + s, h = " ", d = !1);
1271
+ } switch (i.chomp) {
1272
+ case "-": break;
1273
+ case "+":
1274
+ for (let e = a; e < r.length; ++e)
1275
+ f += "\n" + r[e][0].slice(c);
1276
+ "\n" !== f[f.length - 1] && (f += "\n");
1277
+ break;
1278
+ default: f += "\n";
1279
+ } const p = s + i.length + t.source.length; return { value: f, type: o, comment: i.comment, range: [s, p, p] }; }
1280
+ function jt(e, t, n) { const { offset: s, type: i, source: o, end: r } = e; let a, c; const l = (e, t, i) => n(s + e, t, i); switch (i) {
1281
+ case "scalar":
1282
+ a = M.PLAIN, c = function (e, t) { let n = ""; switch (e[0]) {
1283
+ case "\t":
1284
+ n = "a tab character";
1285
+ break;
1286
+ case ",":
1287
+ n = "flow indicator character ,";
1288
+ break;
1289
+ case "%":
1290
+ n = "directive indicator character %";
1291
+ break;
1292
+ case "|":
1293
+ case ">":
1294
+ n = `block scalar indicator ${e[0]}`;
1295
+ break;
1296
+ case "@":
1297
+ case "`": n = `reserved character ${e[0]}`;
1298
+ } n && t(0, "BAD_SCALAR_START", `Plain value cannot start with ${n}`); return Mt(e); }(o, l);
1299
+ break;
1300
+ case "single-quoted-scalar":
1301
+ a = M.QUOTE_SINGLE, c = function (e, t) { "'" === e[e.length - 1] && 1 !== e.length || t(e.length, "MISSING_CHAR", "Missing closing 'quote"); return Mt(e.slice(1, -1)).replace(/''/g, "'"); }(o, l);
1302
+ break;
1303
+ case "double-quoted-scalar":
1304
+ a = M.QUOTE_DOUBLE, c = function (e, t) { let n = ""; for (let s = 1; s < e.length - 1; ++s) {
1305
+ const i = e[s];
1306
+ if ("\r" !== i || "\n" !== e[s + 1])
1307
+ if ("\n" === i) {
1308
+ const { fold: t, offset: i } = Dt(e, s);
1309
+ n += t, s = i;
1310
+ }
1311
+ else if ("\\" === i) {
1312
+ let i = e[++s];
1313
+ const o = qt[i];
1314
+ if (o)
1315
+ n += o;
1316
+ else if ("\n" === i)
1317
+ for (i = e[s + 1]; " " === i || "\t" === i;)
1318
+ i = e[1 + ++s];
1319
+ else if ("\r" === i && "\n" === e[s + 1])
1320
+ for (i = e[1 + ++s]; " " === i || "\t" === i;)
1321
+ i = e[1 + ++s];
1322
+ else if ("x" === i || "u" === i || "U" === i) {
1323
+ const o = { x: 2, u: 4, U: 8 }[i];
1324
+ n += Pt(e, s + 1, o, t), s += o;
1325
+ }
1326
+ else {
1327
+ const i = e.substr(s - 1, 2);
1328
+ t(s - 1, "BAD_DQ_ESCAPE", `Invalid escape sequence ${i}`), n += i;
1329
+ }
1330
+ }
1331
+ else if (" " === i || "\t" === i) {
1332
+ const t = s;
1333
+ let o = e[s + 1];
1334
+ for (; " " === o || "\t" === o;)
1335
+ o = e[1 + ++s];
1336
+ "\n" === o || "\r" === o && "\n" === e[s + 2] || (n += s > t ? e.slice(t, s + 1) : i);
1337
+ }
1338
+ else
1339
+ n += i;
1340
+ } '"' === e[e.length - 1] && 1 !== e.length || t(e.length, "MISSING_CHAR", 'Missing closing "quote'); return n; }(o, l);
1341
+ break;
1342
+ default: return n(e, "UNEXPECTED_TOKEN", `Expected a flow scalar value, but found: ${i}`), { value: "", type: null, comment: "", range: [s, s + o.length, s + o.length] };
1343
+ } const u = s + o.length, f = $t(r, u, t, n); return { value: c, type: a, comment: f.comment, range: [s, u, f.offset] }; }
1344
+ function Mt(e) { var _a; let t, n; try {
1345
+ t = new RegExp("(.*?)(?<![ \t])[ \t]*\r?\n", "sy"), n = new RegExp("[ \t]*(.*?)(?:(?<![ \t])[ \t]*)?\r?\n", "sy");
1346
+ }
1347
+ catch (_b) {
1348
+ t = /(.*?)[ \t]*\r?\n/sy, n = /[ \t]*(.*?)[ \t]*\r?\n/sy;
1349
+ } let s = t.exec(e); if (!s)
1350
+ return e; let i = s[1], o = " ", r = t.lastIndex; for (n.lastIndex = r; s = n.exec(e);)
1351
+ "" === s[1] ? "\n" === o ? i += o : o = "\n" : (i += o + s[1], o = " "), r = n.lastIndex; const a = /[ \t]*(.*)/sy; return a.lastIndex = r, s = a.exec(e), i + o + ((_a = s === null || s === void 0 ? void 0 : s[1]) !== null && _a !== void 0 ? _a : ""); }
1352
+ function Dt(e, t) { let n = "", s = e[t + 1]; for (; !(" " !== s && "\t" !== s && "\n" !== s && "\r" !== s || "\r" === s && "\n" !== e[t + 2]);)
1353
+ "\n" === s && (n += "\n"), s = e[(t += 1) + 1]; return n || (n = " "), { fold: n, offset: t }; }
1354
+ const qt = { 0: "\0", a: "", b: "\b", e: "", f: "\f", n: "\n", r: "\r", t: "\t", v: "\v", N: "…", _: " ", L: "\u2028", P: "\u2029", " ": " ", '"': '"', "/": "/", "\\": "\\", "\t": "\t" };
1355
+ function Pt(e, t, n, s) { const i = e.substr(t, n), o = i.length === n && /^[0-9a-fA-F]+$/.test(i) ? parseInt(i, 16) : NaN; if (isNaN(o)) {
1356
+ const i = e.substr(t - 2, n + 2);
1357
+ return s(t - 2, "BAD_DQ_ESCAPE", `Invalid escape sequence ${i}`), i;
1358
+ } return String.fromCodePoint(o); }
1359
+ function Ut(e, t, n, s) { const { value: o, type: r, comment: a, range: c } = "block-scalar" === t.type ? Bt(e, t, s) : jt(t, e.options.strict, s), l = n ? e.directives.tagName(n.source, (e => s(n, "TAG_RESOLVE_FAILED", e))) : null; let u, h; u = e.options.stringKeys && e.atKey ? e.schema[i] : l ? function (e, t, n, s, o) { var _a; if ("!" === n)
1360
+ return e[i]; const r = []; for (const t of e.tags)
1361
+ if (!t.collection && t.tag === n) {
1362
+ if (!t.default || !t.test)
1363
+ return t;
1364
+ r.push(t);
1365
+ } for (const e of r)
1366
+ if ((_a = e.test) === null || _a === void 0 ? void 0 : _a.test(t))
1367
+ return e; const a = e.knownTags[n]; if (a && !a.collection)
1368
+ return e.tags.push(Object.assign({}, a, { default: !1, test: void 0 })), a; return o(s, "TAG_RESOLVE_FAILED", `Unresolved tag: ${n}`, "tag:yaml.org,2002:str" !== n), e[i]; }(e.schema, o, l, n, s) : "scalar" === t.type ? function ({ atKey: e, directives: t, schema: n }, s, o, r) { var _a; const a = n.tags.find((t => { var _a; return (!0 === t.default || e && "key" === t.default) && ((_a = t.test) === null || _a === void 0 ? void 0 : _a.test(s)); })) || n[i]; if (n.compat) {
1369
+ const e = (_a = n.compat.find((e => { var _a; return e.default && ((_a = e.test) === null || _a === void 0 ? void 0 : _a.test(s)); }))) !== null && _a !== void 0 ? _a : n[i];
1370
+ if (a.tag !== e.tag) {
1371
+ r(o, "TAG_RESOLVE_FAILED", `Value may be parsed as either ${t.tagString(a.tag)} or ${t.tagString(e.tag)}`, !0);
1372
+ }
1373
+ } return a; }(e, o, t, s) : e.schema[i]; try {
1374
+ const i = u.resolve(o, (e => s(n !== null && n !== void 0 ? n : t, "TAG_RESOLVE_FAILED", e)), e.options);
1375
+ h = f(i) ? i : new M(i);
1376
+ }
1377
+ catch (e) {
1378
+ const i = e instanceof Error ? e.message : String(e);
1379
+ s(n !== null && n !== void 0 ? n : t, "TAG_RESOLVE_FAILED", i), h = new M(o);
1380
+ } return h.range = c, h.source = o, r && (h.type = r), l && (h.tag = l), u.format && (h.format = u.format), a && (h.comment = a), h; }
1381
+ function Rt(e, t, n) { if (t) {
1382
+ n !== null && n !== void 0 ? n : (n = t.length);
1383
+ for (let s = n - 1; s >= 0; --s) {
1384
+ let n = t[s];
1385
+ switch (n.type) {
1386
+ case "space":
1387
+ case "comment":
1388
+ case "newline":
1389
+ e -= n.source.length;
1390
+ continue;
1391
+ }
1392
+ for (n = t[++s]; "space" === (n === null || n === void 0 ? void 0 : n.type);)
1393
+ e += n.source.length, n = t[++s];
1394
+ break;
1395
+ }
1396
+ } return e; }
1397
+ const Ft = { composeNode: Vt, composeEmptyNode: Jt };
1398
+ function Vt(e, t, n, s) { const i = e.atKey, { spaceBefore: o, comment: r, anchor: a, tag: c } = n; let l, u = !0; switch (t.type) {
1399
+ case "alias":
1400
+ l = function ({ options: e }, { offset: t, source: n, end: s }, i) { const o = new K(n.substring(1)); "" === o.source && i(t, "BAD_ALIAS", "Alias cannot be an empty string"); o.source.endsWith(":") && i(t + n.length - 1, "BAD_ALIAS", "Alias ending in : is ambiguous", !0); const r = t + n.length, a = $t(s, r, e.strict, i); o.range = [t, r, a.offset], a.comment && (o.comment = a.comment); return o; }(e, t, s), (a || c) && s(t, "ALIAS_PROPS", "An alias node must not specify any properties");
1401
+ break;
1402
+ case "scalar":
1403
+ case "single-quoted-scalar":
1404
+ case "double-quoted-scalar":
1405
+ case "block-scalar":
1406
+ l = Ut(e, t, c, s), a && (l.anchor = a.source.substring(1));
1407
+ break;
1408
+ case "block-map":
1409
+ case "block-seq":
1410
+ case "flow-collection":
1411
+ l = function (e, t, n, s, i) { var _a, _b, _c; const o = s.tag, r = o ? t.directives.tagName(o.source, (e => i(o, "TAG_RESOLVE_FAILED", e))) : null; if ("block-seq" === n.type) {
1412
+ const { anchor: e, newlineAfterProp: t } = s, n = e && o ? e.offset > o.offset ? e : o : e !== null && e !== void 0 ? e : o;
1413
+ n && (!t || t.offset < n.offset) && i(n, "MISSING_CHAR", "Missing newline after block sequence props");
1414
+ } const a = "block-map" === n.type ? "map" : "block-seq" === n.type ? "seq" : "{" === n.start.source ? "map" : "seq"; if (!o || !r || "!" === r || r === ke.tagName && "map" === a || r === ve.tagName && "seq" === a)
1415
+ return Kt(e, t, n, i, r); let c = t.schema.tags.find((e => e.tag === r && e.collection === a)); if (!c) {
1416
+ const s = t.schema.knownTags[r];
1417
+ if (!s || s.collection !== a)
1418
+ return s ? i(o, "BAD_COLLECTION_TYPE", `${s.tag} used for ${a} collection, but expects ${(_a = s.collection) !== null && _a !== void 0 ? _a : "scalar"}`, !0) : i(o, "TAG_RESOLVE_FAILED", `Unresolved tag: ${r}`, !0), Kt(e, t, n, i, r);
1419
+ t.schema.tags.push(Object.assign({}, s, { default: !1 })), c = s;
1420
+ } const l = Kt(e, t, n, i, r, c), u = (_c = (_b = c.resolve) === null || _b === void 0 ? void 0 : _b.call(c, l, (e => i(o, "TAG_RESOLVE_FAILED", e)), t.options)) !== null && _c !== void 0 ? _c : l, f = p(u) ? u : new M(u); return f.range = l.range, f.tag = r, (c === null || c === void 0 ? void 0 : c.format) && (f.format = c.format), f; }(Ft, e, t, n, s), a && (l.anchor = a.source.substring(1));
1421
+ break;
1422
+ default: s(t, "UNEXPECTED_TOKEN", "error" === t.type ? t.message : `Unsupported token (type: ${t.type})`), l = Jt(e, t.offset, void 0, null, n, s), u = !1;
1423
+ } if (a && "" === l.anchor && s(a, "BAD_ALIAS", "Anchor cannot be an empty string"), i && e.options.stringKeys && (!f(l) || "string" != typeof l.value || l.tag && "tag:yaml.org,2002:str" !== l.tag)) {
1424
+ s(c !== null && c !== void 0 ? c : t, "NON_STRING_KEY", "With stringKeys, all keys must be strings");
1425
+ } return o && (l.spaceBefore = !0), r && ("scalar" === t.type && "" === t.source ? l.comment = r : l.commentBefore = r), e.options.keepSourceTokens && u && (l.srcToken = t), l; }
1426
+ function Jt(e, t, n, s, { spaceBefore: i, comment: o, anchor: r, tag: a, end: c }, l) { const u = Ut(e, { type: "scalar", offset: Rt(t, n, s), indent: -1, source: "" }, a, l); return r && (u.anchor = r.source.substring(1), "" === u.anchor && l(r, "BAD_ALIAS", "Anchor cannot be an empty string")), i && (u.spaceBefore = !0), o && (u.comment = o, u.range[2] = c), u; }
1427
+ function Yt(e) { if ("number" == typeof e)
1428
+ return [e, e + 1]; if (Array.isArray(e))
1429
+ return 2 === e.length ? e : [e[0], e[1]]; const { offset: t, source: n } = e; return [t, t + ("string" == typeof n ? n.length : 1)]; }
1430
+ function Wt(e) { var _a; let t = "", n = !1, s = !1; for (let i = 0; i < e.length; ++i) {
1431
+ const o = e[i];
1432
+ switch (o[0]) {
1433
+ case "#":
1434
+ t += ("" === t ? "" : s ? "\n\n" : "\n") + (o.substring(1) || " "), n = !0, s = !1;
1435
+ break;
1436
+ case "%":
1437
+ "#" !== ((_a = e[i + 1]) === null || _a === void 0 ? void 0 : _a[0]) && (i += 1), n = !1;
1438
+ break;
1439
+ default: n || (s = !0), n = !1;
1440
+ }
1441
+ } return { comment: t, afterEmptyLine: s }; }
1442
+ class Gt {
1443
+ constructor(e = {}) { this.doc = null, this.atDirectives = !1, this.prelude = [], this.errors = [], this.warnings = [], this.onError = (e, t, n, s) => { const i = Yt(e); s ? this.warnings.push(new Nt(i, t, n)) : this.errors.push(new Et(i, t, n)); }, this.directives = new I({ version: e.version || "1.2" }), this.options = e; }
1444
+ decorate(e, t) { const { comment: n, afterEmptyLine: s } = Wt(this.prelude); if (n) {
1445
+ const i = e.contents;
1446
+ if (t)
1447
+ e.comment = e.comment ? `${e.comment}\n${n}` : n;
1448
+ else if (s || e.directives.docStart || !i)
1449
+ e.commentBefore = n;
1450
+ else if (d(i) && !i.flow && i.items.length > 0) {
1451
+ let e = i.items[0];
1452
+ u(e) && (e = e.key);
1453
+ const t = e.commentBefore;
1454
+ e.commentBefore = t ? `${n}\n${t}` : n;
1455
+ }
1456
+ else {
1457
+ const e = i.commentBefore;
1458
+ i.commentBefore = e ? `${n}\n${e}` : n;
1459
+ }
1460
+ } t ? (Array.prototype.push.apply(e.errors, this.errors), Array.prototype.push.apply(e.warnings, this.warnings)) : (e.errors = this.errors, e.warnings = this.warnings), this.prelude = [], this.errors = [], this.warnings = []; }
1461
+ streamInfo() { return { comment: Wt(this.prelude).comment, directives: this.directives, errors: this.errors, warnings: this.warnings }; }
1462
+ *compose(e, t = !1, n = -1) { for (const t of e)
1463
+ yield* this.next(t); yield* this.end(t, n); }
1464
+ *next(e) { switch (e.type) {
1465
+ case "directive":
1466
+ this.directives.add(e.source, ((t, n, s) => { const i = Yt(e); i[0] += t, this.onError(i, "BAD_DIRECTIVE", n, s); })), this.prelude.push(e.source), this.atDirectives = !0;
1467
+ break;
1468
+ case "document": {
1469
+ const t = function (e, t, { offset: n, start: s, value: i, end: o }, r) { const a = Object.assign({ _directives: t }, e), c = new wt(void 0, a), l = { atKey: !1, atRoot: !0, directives: c.directives, options: c.options, schema: c.schema }, u = At(s, { indicator: "doc-start", next: i !== null && i !== void 0 ? i : o === null || o === void 0 ? void 0 : o[0], offset: n, onError: r, parentIndent: 0, startOnNewline: !0 }); u.found && (c.directives.docStart = !0, !i || "block-map" !== i.type && "block-seq" !== i.type || u.hasNewline || r(u.end, "MISSING_CHAR", "Block collection cannot start on same line with directives-end marker")), c.contents = i ? Vt(l, i, u, r) : Jt(l, u.end, s, null, u, r); const f = c.contents.range[2], h = $t(o, f, !1, r); return h.comment && (c.comment = h.comment), c.range = [n, f, h.offset], c; }(this.options, this.directives, e, this.onError);
1470
+ this.atDirectives && !t.directives.docStart && this.onError(e, "MISSING_CHAR", "Missing directives-end/doc-start indicator line"), this.decorate(t, !1), this.doc && (yield this.doc), this.doc = t, this.atDirectives = !1;
1471
+ break;
1472
+ }
1473
+ case "byte-order-mark":
1474
+ case "space": break;
1475
+ case "comment":
1476
+ case "newline":
1477
+ this.prelude.push(e.source);
1478
+ break;
1479
+ case "error": {
1480
+ const t = e.source ? `${e.message}: ${JSON.stringify(e.source)}` : e.message, n = new Et(Yt(e), "UNEXPECTED_TOKEN", t);
1481
+ this.atDirectives || !this.doc ? this.errors.push(n) : this.doc.errors.push(n);
1482
+ break;
1483
+ }
1484
+ case "doc-end": {
1485
+ if (!this.doc) {
1486
+ const t = "Unexpected doc-end without preceding document";
1487
+ this.errors.push(new Et(Yt(e), "UNEXPECTED_TOKEN", t));
1488
+ break;
1489
+ }
1490
+ this.doc.directives.docEnd = !0;
1491
+ const t = $t(e.end, e.offset + e.source.length, this.doc.options.strict, this.onError);
1492
+ if (this.decorate(this.doc, !0), t.comment) {
1493
+ const e = this.doc.comment;
1494
+ this.doc.comment = e ? `${e}\n${t.comment}` : t.comment;
1495
+ }
1496
+ this.doc.range[2] = t.offset;
1497
+ break;
1498
+ }
1499
+ default: this.errors.push(new Et(Yt(e), "UNEXPECTED_TOKEN", `Unsupported token ${e.type}`));
1500
+ } }
1501
+ *end(e = !1, t = -1) { if (this.doc)
1502
+ this.decorate(this.doc, !0), yield this.doc, this.doc = null;
1503
+ else if (e) {
1504
+ const e = Object.assign({ _directives: this.directives }, this.options), n = new wt(void 0, e);
1505
+ this.atDirectives && this.onError(t, "MISSING_CHAR", "Missing directives-end indicator line"), n.range = [0, t, t], this.decorate(n, !1), yield n;
1506
+ } }
1507
+ }
1508
+ function Qt(e, t) { if (t)
1509
+ for (const n of t)
1510
+ switch (n.type) {
1511
+ case "space":
1512
+ case "comment":
1513
+ e.push(n);
1514
+ break;
1515
+ case "newline": return e.push(n), !0;
1516
+ } return !1; }
1517
+ function Ht(e, t, n) { switch (e.type) {
1518
+ case "scalar":
1519
+ case "double-quoted-scalar":
1520
+ case "single-quoted-scalar":
1521
+ e.type = n, e.source = t;
1522
+ break;
1523
+ case "block-scalar": {
1524
+ const s = e.props.slice(1);
1525
+ let i = t.length;
1526
+ "block-scalar-header" === e.props[0].type && (i -= e.props[0].source.length);
1527
+ for (const e of s)
1528
+ e.offset += i;
1529
+ delete e.props, Object.assign(e, { type: n, source: t, end: s });
1530
+ break;
1531
+ }
1532
+ case "block-map":
1533
+ case "block-seq": {
1534
+ const s = { type: "newline", offset: e.offset + t.length, indent: e.indent, source: "\n" };
1535
+ delete e.items, Object.assign(e, { type: n, source: t, end: [s] });
1536
+ break;
1537
+ }
1538
+ default: {
1539
+ const s = "indent" in e ? e.indent : -1, i = "end" in e && Array.isArray(e.end) ? e.end.filter((e => "space" === e.type || "comment" === e.type || "newline" === e.type)) : [];
1540
+ for (const t of Object.keys(e))
1541
+ "type" !== t && "offset" !== t && delete e[t];
1542
+ Object.assign(e, { type: n, indent: s, source: t, end: i });
1543
+ }
1544
+ } }
1545
+ function Xt(e) { switch (e.type) {
1546
+ case "block-scalar": {
1547
+ let t = "";
1548
+ for (const n of e.props)
1549
+ t += Xt(n);
1550
+ return t + e.source;
1551
+ }
1552
+ case "block-map":
1553
+ case "block-seq": {
1554
+ let t = "";
1555
+ for (const n of e.items)
1556
+ t += zt(n);
1557
+ return t;
1558
+ }
1559
+ case "flow-collection": {
1560
+ let t = e.start.source;
1561
+ for (const n of e.items)
1562
+ t += zt(n);
1563
+ for (const n of e.end)
1564
+ t += n.source;
1565
+ return t;
1566
+ }
1567
+ case "document": {
1568
+ let t = zt(e);
1569
+ if (e.end)
1570
+ for (const n of e.end)
1571
+ t += n.source;
1572
+ return t;
1573
+ }
1574
+ default: {
1575
+ let t = e.source;
1576
+ if ("end" in e && e.end)
1577
+ for (const n of e.end)
1578
+ t += n.source;
1579
+ return t;
1580
+ }
1581
+ } }
1582
+ function zt({ start: e, key: t, sep: n, value: s }) { let i = ""; for (const t of e)
1583
+ i += t.source; if (t && (i += Xt(t)), n)
1584
+ for (const e of n)
1585
+ i += e.source; return s && (i += Xt(s)), i; }
1586
+ const Zt = Symbol("break visit"), en = Symbol("skip children"), tn = Symbol("remove item");
1587
+ function nn(e, t) { "type" in e && "document" === e.type && (e = { start: e.start, value: e.value }), sn(Object.freeze([]), e, t); }
1588
+ function sn(e, t, n) { let s = n(t, e); if ("symbol" == typeof s)
1589
+ return s; for (const i of ["key", "value"]) {
1590
+ const o = t[i];
1591
+ if (o && "items" in o) {
1592
+ for (let t = 0; t < o.items.length; ++t) {
1593
+ const s = sn(Object.freeze(e.concat([[i, t]])), o.items[t], n);
1594
+ if ("number" == typeof s)
1595
+ t = s - 1;
1596
+ else {
1597
+ if (s === Zt)
1598
+ return Zt;
1599
+ s === tn && (o.items.splice(t, 1), t -= 1);
1600
+ }
1601
+ }
1602
+ "function" == typeof s && "key" === i && (s = s(t, e));
1603
+ }
1604
+ } return "function" == typeof s ? s(t, e) : s; }
1605
+ nn.BREAK = Zt, nn.SKIP = en, nn.REMOVE = tn, nn.itemAtPath = (e, t) => { let n = e; for (const [e, s] of t) {
1606
+ const t = n === null || n === void 0 ? void 0 : n[e];
1607
+ if (!t || !("items" in t))
1608
+ return;
1609
+ n = t.items[s];
1610
+ } return n; }, nn.parentCollection = (e, t) => { const n = nn.itemAtPath(e, t.slice(0, -1)), s = t[t.length - 1][0], i = n === null || n === void 0 ? void 0 : n[s]; if (i && "items" in i)
1611
+ return i; throw new Error("Parent collection not found"); };
1612
+ const on = "\ufeff", rn = "", an = "", cn = "";
1613
+ function ln(e) { switch (e) {
1614
+ case on: return "byte-order-mark";
1615
+ case rn: return "doc-mode";
1616
+ case an: return "flow-error-end";
1617
+ case cn: return "scalar";
1618
+ case "---": return "doc-start";
1619
+ case "...": return "doc-end";
1620
+ case "":
1621
+ case "\n":
1622
+ case "\r\n": return "newline";
1623
+ case "-": return "seq-item-ind";
1624
+ case "?": return "explicit-key-ind";
1625
+ case ":": return "map-value-ind";
1626
+ case "{": return "flow-map-start";
1627
+ case "}": return "flow-map-end";
1628
+ case "[": return "flow-seq-start";
1629
+ case "]": return "flow-seq-end";
1630
+ case ",": return "comma";
1631
+ } switch (e[0]) {
1632
+ case " ":
1633
+ case "\t": return "space";
1634
+ case "#": return "comment";
1635
+ case "%": return "directive-line";
1636
+ case "*": return "alias";
1637
+ case "&": return "anchor";
1638
+ case "!": return "tag";
1639
+ case "'": return "single-quoted-scalar";
1640
+ case '"': return "double-quoted-scalar";
1641
+ case "|":
1642
+ case ">": return "block-scalar-header";
1643
+ } return null; }
1644
+ var un = Object.freeze({ __proto__: null, BOM: on, DOCUMENT: rn, FLOW_END: an, SCALAR: cn, isCollection: e => !!e && "items" in e, isScalar: e => !!e && ("scalar" === e.type || "single-quoted-scalar" === e.type || "double-quoted-scalar" === e.type || "block-scalar" === e.type), prettyToken: function (e) { switch (e) {
1645
+ case on: return "<BOM>";
1646
+ case rn: return "<DOC>";
1647
+ case an: return "<FLOW_END>";
1648
+ case cn: return "<SCALAR>";
1649
+ default: return JSON.stringify(e);
1650
+ } }, tokenType: ln, createScalarToken: function (e, t) { var _a; const { implicitKey: n = !1, indent: s, inFlow: i = !1, offset: o = -1, type: r = "PLAIN" } = t, a = se({ type: r, value: e }, { implicitKey: n, indent: s > 0 ? " ".repeat(s) : "", inFlow: i, options: { blockQuote: !0, lineWidth: -1 } }), c = (_a = t.end) !== null && _a !== void 0 ? _a : [{ type: "newline", offset: -1, indent: s, source: "\n" }]; switch (a[0]) {
1651
+ case "|":
1652
+ case ">": {
1653
+ const e = a.indexOf("\n"), t = a.substring(0, e), n = a.substring(e + 1) + "\n", i = [{ type: "block-scalar-header", offset: o, indent: s, source: t }];
1654
+ return Qt(i, c) || i.push({ type: "newline", offset: -1, indent: s, source: "\n" }), { type: "block-scalar", offset: o, indent: s, props: i, source: n };
1655
+ }
1656
+ case '"': return { type: "double-quoted-scalar", offset: o, indent: s, source: a, end: c };
1657
+ case "'": return { type: "single-quoted-scalar", offset: o, indent: s, source: a, end: c };
1658
+ default: return { type: "scalar", offset: o, indent: s, source: a, end: c };
1659
+ } }, resolveAsScalar: function (e, t = !0, n) { if (e) {
1660
+ const s = (e, t, s) => { const i = "number" == typeof e ? e : Array.isArray(e) ? e[0] : e.offset; if (!n)
1661
+ throw new Et([i, i + 1], t, s); n(i, t, s); };
1662
+ switch (e.type) {
1663
+ case "scalar":
1664
+ case "single-quoted-scalar":
1665
+ case "double-quoted-scalar": return jt(e, t, s);
1666
+ case "block-scalar": return Bt({ options: { strict: t } }, e, s);
1667
+ }
1668
+ } return null; }, setScalarValue: function (e, t, n = {}) { let { afterKey: s = !1, implicitKey: i = !1, inFlow: o = !1, type: r } = n, a = "indent" in e ? e.indent : null; if (s && "number" == typeof a && (a += 2), !r)
1669
+ switch (e.type) {
1670
+ case "single-quoted-scalar":
1671
+ r = "QUOTE_SINGLE";
1672
+ break;
1673
+ case "double-quoted-scalar":
1674
+ r = "QUOTE_DOUBLE";
1675
+ break;
1676
+ case "block-scalar": {
1677
+ const t = e.props[0];
1678
+ if ("block-scalar-header" !== t.type)
1679
+ throw new Error("Invalid block scalar header");
1680
+ r = ">" === t.source[0] ? "BLOCK_FOLDED" : "BLOCK_LITERAL";
1681
+ break;
1682
+ }
1683
+ default: r = "PLAIN";
1684
+ } const c = se({ type: r, value: t }, { implicitKey: i || null === a, indent: null !== a && a > 0 ? " ".repeat(a) : "", inFlow: o, options: { blockQuote: !0, lineWidth: -1 } }); switch (c[0]) {
1685
+ case "|":
1686
+ case ">":
1687
+ !function (e, t) { const n = t.indexOf("\n"), s = t.substring(0, n), i = t.substring(n + 1) + "\n"; if ("block-scalar" === e.type) {
1688
+ const t = e.props[0];
1689
+ if ("block-scalar-header" !== t.type)
1690
+ throw new Error("Invalid block scalar header");
1691
+ t.source = s, e.source = i;
1692
+ }
1693
+ else {
1694
+ const { offset: t } = e, n = "indent" in e ? e.indent : -1, o = [{ type: "block-scalar-header", offset: t, indent: n, source: s }];
1695
+ Qt(o, "end" in e ? e.end : void 0) || o.push({ type: "newline", offset: -1, indent: n, source: "\n" });
1696
+ for (const t of Object.keys(e))
1697
+ "type" !== t && "offset" !== t && delete e[t];
1698
+ Object.assign(e, { type: "block-scalar", indent: n, props: o, source: i });
1699
+ } }(e, c);
1700
+ break;
1701
+ case '"':
1702
+ Ht(e, c, "double-quoted-scalar");
1703
+ break;
1704
+ case "'":
1705
+ Ht(e, c, "single-quoted-scalar");
1706
+ break;
1707
+ default: Ht(e, c, "scalar");
1708
+ } }, stringify: e => "type" in e ? Xt(e) : zt(e), visit: nn });
1709
+ function fn(e) { switch (e) {
1710
+ case void 0:
1711
+ case " ":
1712
+ case "\n":
1713
+ case "\r":
1714
+ case "\t": return !0;
1715
+ default: return !1;
1716
+ } }
1717
+ const hn = new Set("0123456789ABCDEFabcdef"), dn = new Set("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()"), pn = new Set(",[]{}"), mn = new Set(" ,[]{}\n\r\t"), yn = e => !e || mn.has(e);
1718
+ class gn {
1719
+ constructor() { this.atEnd = !1, this.blockScalarIndent = -1, this.blockScalarKeep = !1, this.buffer = "", this.flowKey = !1, this.flowLevel = 0, this.indentNext = 0, this.indentValue = 0, this.lineEndPos = null, this.next = null, this.pos = 0; }
1720
+ *lex(e, t = !1) { var _a; if (e) {
1721
+ if ("string" != typeof e)
1722
+ throw TypeError("source is not a string");
1723
+ this.buffer = this.buffer ? this.buffer + e : e, this.lineEndPos = null;
1724
+ } this.atEnd = !t; let n = (_a = this.next) !== null && _a !== void 0 ? _a : "stream"; for (; n && (t || this.hasChars(1));)
1725
+ n = yield* this.parseNext(n); }
1726
+ atLineEnd() { let e = this.pos, t = this.buffer[e]; for (; " " === t || "\t" === t;)
1727
+ t = this.buffer[++e]; return !t || "#" === t || "\n" === t || "\r" === t && "\n" === this.buffer[e + 1]; }
1728
+ charAt(e) { return this.buffer[this.pos + e]; }
1729
+ continueScalar(e) { let t = this.buffer[e]; if (this.indentNext > 0) {
1730
+ let n = 0;
1731
+ for (; " " === t;)
1732
+ t = this.buffer[++n + e];
1733
+ if ("\r" === t) {
1734
+ const t = this.buffer[n + e + 1];
1735
+ if ("\n" === t || !t && !this.atEnd)
1736
+ return e + n + 1;
1737
+ }
1738
+ return "\n" === t || n >= this.indentNext || !t && !this.atEnd ? e + n : -1;
1739
+ } if ("-" === t || "." === t) {
1740
+ const t = this.buffer.substr(e, 3);
1741
+ if (("---" === t || "..." === t) && fn(this.buffer[e + 3]))
1742
+ return -1;
1743
+ } return e; }
1744
+ getLine() { let e = this.lineEndPos; return ("number" != typeof e || -1 !== e && e < this.pos) && (e = this.buffer.indexOf("\n", this.pos), this.lineEndPos = e), -1 === e ? this.atEnd ? this.buffer.substring(this.pos) : null : ("\r" === this.buffer[e - 1] && (e -= 1), this.buffer.substring(this.pos, e)); }
1745
+ hasChars(e) { return this.pos + e <= this.buffer.length; }
1746
+ setNext(e) { return this.buffer = this.buffer.substring(this.pos), this.pos = 0, this.lineEndPos = null, this.next = e, null; }
1747
+ peek(e) { return this.buffer.substr(this.pos, e); }
1748
+ *parseNext(e) { switch (e) {
1749
+ case "stream": return yield* this.parseStream();
1750
+ case "line-start": return yield* this.parseLineStart();
1751
+ case "block-start": return yield* this.parseBlockStart();
1752
+ case "doc": return yield* this.parseDocument();
1753
+ case "flow": return yield* this.parseFlowCollection();
1754
+ case "quoted-scalar": return yield* this.parseQuotedScalar();
1755
+ case "block-scalar": return yield* this.parseBlockScalar();
1756
+ case "plain-scalar": return yield* this.parsePlainScalar();
1757
+ } }
1758
+ *parseStream() { let e = this.getLine(); if (null === e)
1759
+ return this.setNext("stream"); if (e[0] === on && (yield* this.pushCount(1), e = e.substring(1)), "%" === e[0]) {
1760
+ let t = e.length, n = e.indexOf("#");
1761
+ for (; -1 !== n;) {
1762
+ const s = e[n - 1];
1763
+ if (" " === s || "\t" === s) {
1764
+ t = n - 1;
1765
+ break;
1766
+ }
1767
+ n = e.indexOf("#", n + 1);
1768
+ }
1769
+ for (;;) {
1770
+ const n = e[t - 1];
1771
+ if (" " !== n && "\t" !== n)
1772
+ break;
1773
+ t -= 1;
1774
+ }
1775
+ const s = (yield* this.pushCount(t)) + (yield* this.pushSpaces(!0));
1776
+ return yield* this.pushCount(e.length - s), this.pushNewline(), "stream";
1777
+ } if (this.atLineEnd()) {
1778
+ const t = yield* this.pushSpaces(!0);
1779
+ return yield* this.pushCount(e.length - t), yield* this.pushNewline(), "stream";
1780
+ } return yield rn, yield* this.parseLineStart(); }
1781
+ *parseLineStart() { const e = this.charAt(0); if (!e && !this.atEnd)
1782
+ return this.setNext("line-start"); if ("-" === e || "." === e) {
1783
+ if (!this.atEnd && !this.hasChars(4))
1784
+ return this.setNext("line-start");
1785
+ const e = this.peek(3);
1786
+ if (("---" === e || "..." === e) && fn(this.charAt(3)))
1787
+ return yield* this.pushCount(3), this.indentValue = 0, this.indentNext = 0, "---" === e ? "doc" : "stream";
1788
+ } return this.indentValue = yield* this.pushSpaces(!1), this.indentNext > this.indentValue && !fn(this.charAt(1)) && (this.indentNext = this.indentValue), yield* this.parseBlockStart(); }
1789
+ *parseBlockStart() { const [e, t] = this.peek(2); if (!t && !this.atEnd)
1790
+ return this.setNext("block-start"); if (("-" === e || "?" === e || ":" === e) && fn(t)) {
1791
+ const e = (yield* this.pushCount(1)) + (yield* this.pushSpaces(!0));
1792
+ return this.indentNext = this.indentValue + 1, this.indentValue += e, yield* this.parseBlockStart();
1793
+ } return "doc"; }
1794
+ *parseDocument() { yield* this.pushSpaces(!0); const e = this.getLine(); if (null === e)
1795
+ return this.setNext("doc"); let t = yield* this.pushIndicators(); switch (e[t]) {
1796
+ case "#": yield* this.pushCount(e.length - t);
1797
+ case void 0: return yield* this.pushNewline(), yield* this.parseLineStart();
1798
+ case "{":
1799
+ case "[": return yield* this.pushCount(1), this.flowKey = !1, this.flowLevel = 1, "flow";
1800
+ case "}":
1801
+ case "]": return yield* this.pushCount(1), "doc";
1802
+ case "*": return yield* this.pushUntil(yn), "doc";
1803
+ case '"':
1804
+ case "'": return yield* this.parseQuotedScalar();
1805
+ case "|":
1806
+ case ">": return t += (yield* this.parseBlockScalarHeader()), t += (yield* this.pushSpaces(!0)), yield* this.pushCount(e.length - t), yield* this.pushNewline(), yield* this.parseBlockScalar();
1807
+ default: return yield* this.parsePlainScalar();
1808
+ } }
1809
+ *parseFlowCollection() { let e, t, n = -1; do {
1810
+ e = yield* this.pushNewline(), e > 0 ? (t = yield* this.pushSpaces(!1), this.indentValue = n = t) : t = 0, t += (yield* this.pushSpaces(!0));
1811
+ } while (e + t > 0); const s = this.getLine(); if (null === s)
1812
+ return this.setNext("flow"); if (-1 !== n && n < this.indentNext && "#" !== s[0] || 0 === n && (s.startsWith("---") || s.startsWith("...")) && fn(s[3])) {
1813
+ if (!(n === this.indentNext - 1 && 1 === this.flowLevel && ("]" === s[0] || "}" === s[0])))
1814
+ return this.flowLevel = 0, yield an, yield* this.parseLineStart();
1815
+ } let i = 0; for (; "," === s[i];)
1816
+ i += (yield* this.pushCount(1)), i += (yield* this.pushSpaces(!0)), this.flowKey = !1; switch (i += (yield* this.pushIndicators()), s[i]) {
1817
+ case void 0: return "flow";
1818
+ case "#": return yield* this.pushCount(s.length - i), "flow";
1819
+ case "{":
1820
+ case "[": return yield* this.pushCount(1), this.flowKey = !1, this.flowLevel += 1, "flow";
1821
+ case "}":
1822
+ case "]": return yield* this.pushCount(1), this.flowKey = !0, this.flowLevel -= 1, this.flowLevel ? "flow" : "doc";
1823
+ case "*": return yield* this.pushUntil(yn), "flow";
1824
+ case '"':
1825
+ case "'": return this.flowKey = !0, yield* this.parseQuotedScalar();
1826
+ case ":": {
1827
+ const e = this.charAt(1);
1828
+ if (this.flowKey || fn(e) || "," === e)
1829
+ return this.flowKey = !1, yield* this.pushCount(1), yield* this.pushSpaces(!0), "flow";
1830
+ }
1831
+ default: return this.flowKey = !1, yield* this.parsePlainScalar();
1832
+ } }
1833
+ *parseQuotedScalar() { const e = this.charAt(0); let t = this.buffer.indexOf(e, this.pos + 1); if ("'" === e)
1834
+ for (; -1 !== t && "'" === this.buffer[t + 1];)
1835
+ t = this.buffer.indexOf("'", t + 2);
1836
+ else
1837
+ for (; -1 !== t;) {
1838
+ let e = 0;
1839
+ for (; "\\" === this.buffer[t - 1 - e];)
1840
+ e += 1;
1841
+ if (e % 2 == 0)
1842
+ break;
1843
+ t = this.buffer.indexOf('"', t + 1);
1844
+ } const n = this.buffer.substring(0, t); let s = n.indexOf("\n", this.pos); if (-1 !== s) {
1845
+ for (; -1 !== s;) {
1846
+ const e = this.continueScalar(s + 1);
1847
+ if (-1 === e)
1848
+ break;
1849
+ s = n.indexOf("\n", e);
1850
+ }
1851
+ -1 !== s && (t = s - ("\r" === n[s - 1] ? 2 : 1));
1852
+ } if (-1 === t) {
1853
+ if (!this.atEnd)
1854
+ return this.setNext("quoted-scalar");
1855
+ t = this.buffer.length;
1856
+ } return yield* this.pushToIndex(t + 1, !1), this.flowLevel ? "flow" : "doc"; }
1857
+ *parseBlockScalarHeader() { this.blockScalarIndent = -1, this.blockScalarKeep = !1; let e = this.pos; for (;;) {
1858
+ const t = this.buffer[++e];
1859
+ if ("+" === t)
1860
+ this.blockScalarKeep = !0;
1861
+ else if (t > "0" && t <= "9")
1862
+ this.blockScalarIndent = Number(t) - 1;
1863
+ else if ("-" !== t)
1864
+ break;
1865
+ } return yield* this.pushUntil((e => fn(e) || "#" === e)); }
1866
+ *parseBlockScalar() { let e, t = this.pos - 1, n = 0; e: for (let s = this.pos; e = this.buffer[s]; ++s)
1867
+ switch (e) {
1868
+ case " ":
1869
+ n += 1;
1870
+ break;
1871
+ case "\n":
1872
+ t = s, n = 0;
1873
+ break;
1874
+ case "\r": {
1875
+ const e = this.buffer[s + 1];
1876
+ if (!e && !this.atEnd)
1877
+ return this.setNext("block-scalar");
1878
+ if ("\n" === e)
1879
+ break;
1880
+ }
1881
+ default: break e;
1882
+ } if (!e && !this.atEnd)
1883
+ return this.setNext("block-scalar"); if (n >= this.indentNext) {
1884
+ -1 === this.blockScalarIndent ? this.indentNext = n : this.indentNext = this.blockScalarIndent + (0 === this.indentNext ? 1 : this.indentNext);
1885
+ do {
1886
+ const e = this.continueScalar(t + 1);
1887
+ if (-1 === e)
1888
+ break;
1889
+ t = this.buffer.indexOf("\n", e);
1890
+ } while (-1 !== t);
1891
+ if (-1 === t) {
1892
+ if (!this.atEnd)
1893
+ return this.setNext("block-scalar");
1894
+ t = this.buffer.length;
1895
+ }
1896
+ } let s = t + 1; for (e = this.buffer[s]; " " === e;)
1897
+ e = this.buffer[++s]; if ("\t" === e) {
1898
+ for (; "\t" === e || " " === e || "\r" === e || "\n" === e;)
1899
+ e = this.buffer[++s];
1900
+ t = s - 1;
1901
+ }
1902
+ else if (!this.blockScalarKeep)
1903
+ for (;;) {
1904
+ let e = t - 1, s = this.buffer[e];
1905
+ "\r" === s && (s = this.buffer[--e]);
1906
+ const i = e;
1907
+ for (; " " === s;)
1908
+ s = this.buffer[--e];
1909
+ if (!("\n" === s && e >= this.pos && e + 1 + n > i))
1910
+ break;
1911
+ t = e;
1912
+ } return yield cn, yield* this.pushToIndex(t + 1, !0), yield* this.parseLineStart(); }
1913
+ *parsePlainScalar() { const e = this.flowLevel > 0; let t, n = this.pos - 1, s = this.pos - 1; for (; t = this.buffer[++s];)
1914
+ if (":" === t) {
1915
+ const t = this.buffer[s + 1];
1916
+ if (fn(t) || e && pn.has(t))
1917
+ break;
1918
+ n = s;
1919
+ }
1920
+ else if (fn(t)) {
1921
+ let i = this.buffer[s + 1];
1922
+ if ("\r" === t && ("\n" === i ? (s += 1, t = "\n", i = this.buffer[s + 1]) : n = s), "#" === i || e && pn.has(i))
1923
+ break;
1924
+ if ("\n" === t) {
1925
+ const e = this.continueScalar(s + 1);
1926
+ if (-1 === e)
1927
+ break;
1928
+ s = Math.max(s, e - 2);
1929
+ }
1930
+ }
1931
+ else {
1932
+ if (e && pn.has(t))
1933
+ break;
1934
+ n = s;
1935
+ } return t || this.atEnd ? (yield cn, yield* this.pushToIndex(n + 1, !0), e ? "flow" : "doc") : this.setNext("plain-scalar"); }
1936
+ *pushCount(e) { return e > 0 ? (yield this.buffer.substr(this.pos, e), this.pos += e, e) : 0; }
1937
+ *pushToIndex(e, t) { const n = this.buffer.slice(this.pos, e); return n ? (yield n, this.pos += n.length, n.length) : (t && (yield ""), 0); }
1938
+ *pushIndicators() { switch (this.charAt(0)) {
1939
+ case "!": return (yield* this.pushTag()) + (yield* this.pushSpaces(!0)) + (yield* this.pushIndicators());
1940
+ case "&": return (yield* this.pushUntil(yn)) + (yield* this.pushSpaces(!0)) + (yield* this.pushIndicators());
1941
+ case "-":
1942
+ case "?":
1943
+ case ":": {
1944
+ const e = this.flowLevel > 0, t = this.charAt(1);
1945
+ if (fn(t) || e && pn.has(t))
1946
+ return e ? this.flowKey && (this.flowKey = !1) : this.indentNext = this.indentValue + 1, (yield* this.pushCount(1)) + (yield* this.pushSpaces(!0)) + (yield* this.pushIndicators());
1947
+ }
1948
+ } return 0; }
1949
+ *pushTag() { if ("<" === this.charAt(1)) {
1950
+ let e = this.pos + 2, t = this.buffer[e];
1951
+ for (; !fn(t) && ">" !== t;)
1952
+ t = this.buffer[++e];
1953
+ return yield* this.pushToIndex(">" === t ? e + 1 : e, !1);
1954
+ } {
1955
+ let e = this.pos + 1, t = this.buffer[e];
1956
+ for (; t;)
1957
+ if (dn.has(t))
1958
+ t = this.buffer[++e];
1959
+ else {
1960
+ if ("%" !== t || !hn.has(this.buffer[e + 1]) || !hn.has(this.buffer[e + 2]))
1961
+ break;
1962
+ t = this.buffer[e += 3];
1963
+ }
1964
+ return yield* this.pushToIndex(e, !1);
1965
+ } }
1966
+ *pushNewline() { const e = this.buffer[this.pos]; return "\n" === e ? yield* this.pushCount(1) : "\r" === e && "\n" === this.charAt(1) ? yield* this.pushCount(2) : 0; }
1967
+ *pushSpaces(e) { let t, n = this.pos - 1; do {
1968
+ t = this.buffer[++n];
1969
+ } while (" " === t || e && "\t" === t); const s = n - this.pos; return s > 0 && (yield this.buffer.substr(this.pos, s), this.pos = n), s; }
1970
+ *pushUntil(e) { let t = this.pos, n = this.buffer[t]; for (; !e(n);)
1971
+ n = this.buffer[++t]; return yield* this.pushToIndex(t, !1); }
1972
+ }
1973
+ class bn {
1974
+ constructor() { this.lineStarts = [], this.addNewLine = e => this.lineStarts.push(e), this.linePos = e => { let t = 0, n = this.lineStarts.length; for (; t < n;) {
1975
+ const s = t + n >> 1;
1976
+ this.lineStarts[s] < e ? t = s + 1 : n = s;
1977
+ } if (this.lineStarts[t] === e)
1978
+ return { line: t + 1, col: 1 }; if (0 === t)
1979
+ return { line: 0, col: e }; return { line: t, col: e - this.lineStarts[t - 1] + 1 }; }; }
1980
+ }
1981
+ function kn(e, t) { for (let n = 0; n < e.length; ++n)
1982
+ if (e[n].type === t)
1983
+ return !0; return !1; }
1984
+ function wn(e) { for (let t = 0; t < e.length; ++t)
1985
+ switch (e[t].type) {
1986
+ case "space":
1987
+ case "comment":
1988
+ case "newline": break;
1989
+ default: return t;
1990
+ } return -1; }
1991
+ function vn(e) { switch (e === null || e === void 0 ? void 0 : e.type) {
1992
+ case "alias":
1993
+ case "scalar":
1994
+ case "single-quoted-scalar":
1995
+ case "double-quoted-scalar":
1996
+ case "flow-collection": return !0;
1997
+ default: return !1;
1998
+ } }
1999
+ function Sn(e) { var _a; switch (e.type) {
2000
+ case "document": return e.start;
2001
+ case "block-map": {
2002
+ const t = e.items[e.items.length - 1];
2003
+ return (_a = t.sep) !== null && _a !== void 0 ? _a : t.start;
2004
+ }
2005
+ case "block-seq": return e.items[e.items.length - 1].start;
2006
+ default: return [];
2007
+ } }
2008
+ function En(e) { var _a; if (0 === e.length)
2009
+ return []; let t = e.length; e: for (; --t >= 0;)
2010
+ switch (e[t].type) {
2011
+ case "doc-start":
2012
+ case "explicit-key-ind":
2013
+ case "map-value-ind":
2014
+ case "seq-item-ind":
2015
+ case "newline": break e;
2016
+ } for (; "space" === ((_a = e[++t]) === null || _a === void 0 ? void 0 : _a.type);)
2017
+ ; return e.splice(t, e.length); }
2018
+ function Nn(e) { if ("flow-seq-start" === e.start.type)
2019
+ for (const t of e.items)
2020
+ !t.sep || t.value || kn(t.start, "explicit-key-ind") || kn(t.sep, "map-value-ind") || (t.key && (t.value = t.key), delete t.key, vn(t.value) ? t.value.end ? Array.prototype.push.apply(t.value.end, t.sep) : t.value.end = t.sep : Array.prototype.push.apply(t.start, t.sep), delete t.sep); }
2021
+ class On {
2022
+ constructor(e) { this.atNewLine = !0, this.atScalar = !1, this.indent = 0, this.offset = 0, this.onKeyLine = !1, this.stack = [], this.source = "", this.type = "", this.lexer = new gn, this.onNewLine = e; }
2023
+ *parse(e, t = !1) { this.onNewLine && 0 === this.offset && this.onNewLine(0); for (const n of this.lexer.lex(e, t))
2024
+ yield* this.next(n); t || (yield* this.end()); }
2025
+ *next(e) { if (this.source = e, this.atScalar)
2026
+ return this.atScalar = !1, yield* this.step(), void (this.offset += e.length); const t = ln(e); if (t)
2027
+ if ("scalar" === t)
2028
+ this.atNewLine = !1, this.atScalar = !0, this.type = "scalar";
2029
+ else {
2030
+ switch (this.type = t, yield* this.step(), t) {
2031
+ case "newline":
2032
+ this.atNewLine = !0, this.indent = 0, this.onNewLine && this.onNewLine(this.offset + e.length);
2033
+ break;
2034
+ case "space":
2035
+ this.atNewLine && " " === e[0] && (this.indent += e.length);
2036
+ break;
2037
+ case "explicit-key-ind":
2038
+ case "map-value-ind":
2039
+ case "seq-item-ind":
2040
+ this.atNewLine && (this.indent += e.length);
2041
+ break;
2042
+ case "doc-mode":
2043
+ case "flow-error-end": return;
2044
+ default: this.atNewLine = !1;
2045
+ }
2046
+ this.offset += e.length;
2047
+ }
2048
+ else {
2049
+ const t = `Not a YAML token: ${e}`;
2050
+ yield* this.pop({ type: "error", offset: this.offset, message: t, source: e }), this.offset += e.length;
2051
+ } }
2052
+ *end() { for (; this.stack.length > 0;)
2053
+ yield* this.pop(); }
2054
+ get sourceToken() { return { type: this.type, offset: this.offset, indent: this.indent, source: this.source }; }
2055
+ *step() { const e = this.peek(1); if ("doc-end" !== this.type || e && "doc-end" === e.type) {
2056
+ if (!e)
2057
+ return yield* this.stream();
2058
+ switch (e.type) {
2059
+ case "document": return yield* this.document(e);
2060
+ case "alias":
2061
+ case "scalar":
2062
+ case "single-quoted-scalar":
2063
+ case "double-quoted-scalar": return yield* this.scalar(e);
2064
+ case "block-scalar": return yield* this.blockScalar(e);
2065
+ case "block-map": return yield* this.blockMap(e);
2066
+ case "block-seq": return yield* this.blockSequence(e);
2067
+ case "flow-collection": return yield* this.flowCollection(e);
2068
+ case "doc-end": return yield* this.documentEnd(e);
2069
+ }
2070
+ yield* this.pop();
2071
+ }
2072
+ else {
2073
+ for (; this.stack.length > 0;)
2074
+ yield* this.pop();
2075
+ this.stack.push({ type: "doc-end", offset: this.offset, source: this.source });
2076
+ } }
2077
+ peek(e) { return this.stack[this.stack.length - e]; }
2078
+ *pop(e) { const t = e !== null && e !== void 0 ? e : this.stack.pop(); if (t)
2079
+ if (0 === this.stack.length)
2080
+ yield t;
2081
+ else {
2082
+ const e = this.peek(1);
2083
+ switch ("block-scalar" === t.type ? t.indent = "indent" in e ? e.indent : 0 : "flow-collection" === t.type && "document" === e.type && (t.indent = 0), "flow-collection" === t.type && Nn(t), e.type) {
2084
+ case "document":
2085
+ e.value = t;
2086
+ break;
2087
+ case "block-scalar":
2088
+ e.props.push(t);
2089
+ break;
2090
+ case "block-map": {
2091
+ const n = e.items[e.items.length - 1];
2092
+ if (n.value)
2093
+ return e.items.push({ start: [], key: t, sep: [] }), void (this.onKeyLine = !0);
2094
+ if (!n.sep)
2095
+ return Object.assign(n, { key: t, sep: [] }), void (this.onKeyLine = !n.explicitKey);
2096
+ n.value = t;
2097
+ break;
2098
+ }
2099
+ case "block-seq": {
2100
+ const n = e.items[e.items.length - 1];
2101
+ n.value ? e.items.push({ start: [], value: t }) : n.value = t;
2102
+ break;
2103
+ }
2104
+ case "flow-collection": {
2105
+ const n = e.items[e.items.length - 1];
2106
+ return void (!n || n.value ? e.items.push({ start: [], key: t, sep: [] }) : n.sep ? n.value = t : Object.assign(n, { key: t, sep: [] }));
2107
+ }
2108
+ default: yield* this.pop(), yield* this.pop(t);
2109
+ }
2110
+ if (!("document" !== e.type && "block-map" !== e.type && "block-seq" !== e.type || "block-map" !== t.type && "block-seq" !== t.type)) {
2111
+ const n = t.items[t.items.length - 1];
2112
+ n && !n.sep && !n.value && n.start.length > 0 && -1 === wn(n.start) && (0 === t.indent || n.start.every((e => "comment" !== e.type || e.indent < t.indent))) && ("document" === e.type ? e.end = n.start : e.items.push({ start: n.start }), t.items.splice(-1, 1));
2113
+ }
2114
+ }
2115
+ else {
2116
+ const e = "Tried to pop an empty stack";
2117
+ yield { type: "error", offset: this.offset, source: "", message: e };
2118
+ } }
2119
+ *stream() { switch (this.type) {
2120
+ case "directive-line": return void (yield { type: "directive", offset: this.offset, source: this.source });
2121
+ case "byte-order-mark":
2122
+ case "space":
2123
+ case "comment":
2124
+ case "newline": return void (yield this.sourceToken);
2125
+ case "doc-mode":
2126
+ case "doc-start": {
2127
+ const e = { type: "document", offset: this.offset, start: [] };
2128
+ return "doc-start" === this.type && e.start.push(this.sourceToken), void this.stack.push(e);
2129
+ }
2130
+ } yield { type: "error", offset: this.offset, message: `Unexpected ${this.type} token in YAML stream`, source: this.source }; }
2131
+ *document(e) { if (e.value)
2132
+ return yield* this.lineEnd(e); switch (this.type) {
2133
+ case "doc-start": return void (-1 !== wn(e.start) ? (yield* this.pop(), yield* this.step()) : e.start.push(this.sourceToken));
2134
+ case "anchor":
2135
+ case "tag":
2136
+ case "space":
2137
+ case "comment":
2138
+ case "newline": return void e.start.push(this.sourceToken);
2139
+ } const t = this.startBlockValue(e); t ? this.stack.push(t) : yield { type: "error", offset: this.offset, message: `Unexpected ${this.type} token in YAML document`, source: this.source }; }
2140
+ *scalar(e) { if ("map-value-ind" === this.type) {
2141
+ const t = En(Sn(this.peek(2)));
2142
+ let n;
2143
+ e.end ? (n = e.end, n.push(this.sourceToken), delete e.end) : n = [this.sourceToken];
2144
+ const s = { type: "block-map", offset: e.offset, indent: e.indent, items: [{ start: t, key: e, sep: n }] };
2145
+ this.onKeyLine = !0, this.stack[this.stack.length - 1] = s;
2146
+ }
2147
+ else
2148
+ yield* this.lineEnd(e); }
2149
+ *blockScalar(e) { switch (this.type) {
2150
+ case "space":
2151
+ case "comment":
2152
+ case "newline": return void e.props.push(this.sourceToken);
2153
+ case "scalar":
2154
+ if (e.source = this.source, this.atNewLine = !0, this.indent = 0, this.onNewLine) {
2155
+ let e = this.source.indexOf("\n") + 1;
2156
+ for (; 0 !== e;)
2157
+ this.onNewLine(this.offset + e), e = this.source.indexOf("\n", e) + 1;
2158
+ }
2159
+ yield* this.pop();
2160
+ break;
2161
+ default: yield* this.pop(), yield* this.step();
2162
+ } }
2163
+ *blockMap(e) { var _a; const t = e.items[e.items.length - 1]; switch (this.type) {
2164
+ case "newline":
2165
+ if (this.onKeyLine = !1, t.value) {
2166
+ const n = "end" in t.value ? t.value.end : void 0, s = Array.isArray(n) ? n[n.length - 1] : void 0;
2167
+ "comment" === (s === null || s === void 0 ? void 0 : s.type) ? n === null || n === void 0 ? void 0 : n.push(this.sourceToken) : e.items.push({ start: [this.sourceToken] });
2168
+ }
2169
+ else
2170
+ t.sep ? t.sep.push(this.sourceToken) : t.start.push(this.sourceToken);
2171
+ return;
2172
+ case "space":
2173
+ case "comment":
2174
+ if (t.value)
2175
+ e.items.push({ start: [this.sourceToken] });
2176
+ else if (t.sep)
2177
+ t.sep.push(this.sourceToken);
2178
+ else {
2179
+ if (this.atIndentedComment(t.start, e.indent)) {
2180
+ const n = e.items[e.items.length - 2], s = (_a = n === null || n === void 0 ? void 0 : n.value) === null || _a === void 0 ? void 0 : _a.end;
2181
+ if (Array.isArray(s))
2182
+ return Array.prototype.push.apply(s, t.start), s.push(this.sourceToken), void e.items.pop();
2183
+ }
2184
+ t.start.push(this.sourceToken);
2185
+ }
2186
+ return;
2187
+ } if (this.indent >= e.indent) {
2188
+ const n = !this.onKeyLine && this.indent === e.indent, s = n && (t.sep || t.explicitKey) && "seq-item-ind" !== this.type;
2189
+ let i = [];
2190
+ if (s && t.sep && !t.value) {
2191
+ const n = [];
2192
+ for (let s = 0; s < t.sep.length; ++s) {
2193
+ const i = t.sep[s];
2194
+ switch (i.type) {
2195
+ case "newline":
2196
+ n.push(s);
2197
+ break;
2198
+ case "space": break;
2199
+ case "comment":
2200
+ i.indent > e.indent && (n.length = 0);
2201
+ break;
2202
+ default: n.length = 0;
2203
+ }
2204
+ }
2205
+ n.length >= 2 && (i = t.sep.splice(n[1]));
2206
+ }
2207
+ switch (this.type) {
2208
+ case "anchor":
2209
+ case "tag": return void (s || t.value ? (i.push(this.sourceToken), e.items.push({ start: i }), this.onKeyLine = !0) : t.sep ? t.sep.push(this.sourceToken) : t.start.push(this.sourceToken));
2210
+ case "explicit-key-ind": return t.sep || t.explicitKey ? s || t.value ? (i.push(this.sourceToken), e.items.push({ start: i, explicitKey: !0 })) : this.stack.push({ type: "block-map", offset: this.offset, indent: this.indent, items: [{ start: [this.sourceToken], explicitKey: !0 }] }) : (t.start.push(this.sourceToken), t.explicitKey = !0), void (this.onKeyLine = !0);
2211
+ case "map-value-ind":
2212
+ if (t.explicitKey)
2213
+ if (t.sep)
2214
+ if (t.value)
2215
+ e.items.push({ start: [], key: null, sep: [this.sourceToken] });
2216
+ else if (kn(t.sep, "map-value-ind"))
2217
+ this.stack.push({ type: "block-map", offset: this.offset, indent: this.indent, items: [{ start: i, key: null, sep: [this.sourceToken] }] });
2218
+ else if (vn(t.key) && !kn(t.sep, "newline")) {
2219
+ const e = En(t.start), n = t.key, s = t.sep;
2220
+ s.push(this.sourceToken), delete t.key, delete t.sep, this.stack.push({ type: "block-map", offset: this.offset, indent: this.indent, items: [{ start: e, key: n, sep: s }] });
2221
+ }
2222
+ else
2223
+ i.length > 0 ? t.sep = t.sep.concat(i, this.sourceToken) : t.sep.push(this.sourceToken);
2224
+ else if (kn(t.start, "newline"))
2225
+ Object.assign(t, { key: null, sep: [this.sourceToken] });
2226
+ else {
2227
+ const e = En(t.start);
2228
+ this.stack.push({ type: "block-map", offset: this.offset, indent: this.indent, items: [{ start: e, key: null, sep: [this.sourceToken] }] });
2229
+ }
2230
+ else
2231
+ t.sep ? t.value || s ? e.items.push({ start: i, key: null, sep: [this.sourceToken] }) : kn(t.sep, "map-value-ind") ? this.stack.push({ type: "block-map", offset: this.offset, indent: this.indent, items: [{ start: [], key: null, sep: [this.sourceToken] }] }) : t.sep.push(this.sourceToken) : Object.assign(t, { key: null, sep: [this.sourceToken] });
2232
+ return void (this.onKeyLine = !0);
2233
+ case "alias":
2234
+ case "scalar":
2235
+ case "single-quoted-scalar":
2236
+ case "double-quoted-scalar": {
2237
+ const n = this.flowScalar(this.type);
2238
+ return void (s || t.value ? (e.items.push({ start: i, key: n, sep: [] }), this.onKeyLine = !0) : t.sep ? this.stack.push(n) : (Object.assign(t, { key: n, sep: [] }), this.onKeyLine = !0));
2239
+ }
2240
+ default: {
2241
+ const s = this.startBlockValue(e);
2242
+ if (s) {
2243
+ if ("block-seq" === s.type) {
2244
+ if (!t.explicitKey && t.sep && !kn(t.sep, "newline"))
2245
+ return void (yield* this.pop({ type: "error", offset: this.offset, message: "Unexpected block-seq-ind on same line with key", source: this.source }));
2246
+ }
2247
+ else
2248
+ n && e.items.push({ start: i });
2249
+ return void this.stack.push(s);
2250
+ }
2251
+ }
2252
+ }
2253
+ } yield* this.pop(), yield* this.step(); }
2254
+ *blockSequence(e) { var _a; const t = e.items[e.items.length - 1]; switch (this.type) {
2255
+ case "newline":
2256
+ if (t.value) {
2257
+ const n = "end" in t.value ? t.value.end : void 0, s = Array.isArray(n) ? n[n.length - 1] : void 0;
2258
+ "comment" === (s === null || s === void 0 ? void 0 : s.type) ? n === null || n === void 0 ? void 0 : n.push(this.sourceToken) : e.items.push({ start: [this.sourceToken] });
2259
+ }
2260
+ else
2261
+ t.start.push(this.sourceToken);
2262
+ return;
2263
+ case "space":
2264
+ case "comment":
2265
+ if (t.value)
2266
+ e.items.push({ start: [this.sourceToken] });
2267
+ else {
2268
+ if (this.atIndentedComment(t.start, e.indent)) {
2269
+ const n = e.items[e.items.length - 2], s = (_a = n === null || n === void 0 ? void 0 : n.value) === null || _a === void 0 ? void 0 : _a.end;
2270
+ if (Array.isArray(s))
2271
+ return Array.prototype.push.apply(s, t.start), s.push(this.sourceToken), void e.items.pop();
2272
+ }
2273
+ t.start.push(this.sourceToken);
2274
+ }
2275
+ return;
2276
+ case "anchor":
2277
+ case "tag":
2278
+ if (t.value || this.indent <= e.indent)
2279
+ break;
2280
+ return void t.start.push(this.sourceToken);
2281
+ case "seq-item-ind":
2282
+ if (this.indent !== e.indent)
2283
+ break;
2284
+ return void (t.value || kn(t.start, "seq-item-ind") ? e.items.push({ start: [this.sourceToken] }) : t.start.push(this.sourceToken));
2285
+ } if (this.indent > e.indent) {
2286
+ const t = this.startBlockValue(e);
2287
+ if (t)
2288
+ return void this.stack.push(t);
2289
+ } yield* this.pop(), yield* this.step(); }
2290
+ *flowCollection(e) { const t = e.items[e.items.length - 1]; if ("flow-error-end" === this.type) {
2291
+ let e;
2292
+ do {
2293
+ yield* this.pop(), e = this.peek(1);
2294
+ } while (e && "flow-collection" === e.type);
2295
+ }
2296
+ else if (0 === e.end.length) {
2297
+ switch (this.type) {
2298
+ case "comma":
2299
+ case "explicit-key-ind": return void (!t || t.sep ? e.items.push({ start: [this.sourceToken] }) : t.start.push(this.sourceToken));
2300
+ case "map-value-ind": return void (!t || t.value ? e.items.push({ start: [], key: null, sep: [this.sourceToken] }) : t.sep ? t.sep.push(this.sourceToken) : Object.assign(t, { key: null, sep: [this.sourceToken] }));
2301
+ case "space":
2302
+ case "comment":
2303
+ case "newline":
2304
+ case "anchor":
2305
+ case "tag": return void (!t || t.value ? e.items.push({ start: [this.sourceToken] }) : t.sep ? t.sep.push(this.sourceToken) : t.start.push(this.sourceToken));
2306
+ case "alias":
2307
+ case "scalar":
2308
+ case "single-quoted-scalar":
2309
+ case "double-quoted-scalar": {
2310
+ const n = this.flowScalar(this.type);
2311
+ return void (!t || t.value ? e.items.push({ start: [], key: n, sep: [] }) : t.sep ? this.stack.push(n) : Object.assign(t, { key: n, sep: [] }));
2312
+ }
2313
+ case "flow-map-end":
2314
+ case "flow-seq-end": return void e.end.push(this.sourceToken);
2315
+ }
2316
+ const n = this.startBlockValue(e);
2317
+ n ? this.stack.push(n) : (yield* this.pop(), yield* this.step());
2318
+ }
2319
+ else {
2320
+ const t = this.peek(2);
2321
+ if ("block-map" === t.type && ("map-value-ind" === this.type && t.indent === e.indent || "newline" === this.type && !t.items[t.items.length - 1].sep))
2322
+ yield* this.pop(), yield* this.step();
2323
+ else if ("map-value-ind" === this.type && "flow-collection" !== t.type) {
2324
+ const n = En(Sn(t));
2325
+ Nn(e);
2326
+ const s = e.end.splice(1, e.end.length);
2327
+ s.push(this.sourceToken);
2328
+ const i = { type: "block-map", offset: e.offset, indent: e.indent, items: [{ start: n, key: e, sep: s }] };
2329
+ this.onKeyLine = !0, this.stack[this.stack.length - 1] = i;
2330
+ }
2331
+ else
2332
+ yield* this.lineEnd(e);
2333
+ } }
2334
+ flowScalar(e) { if (this.onNewLine) {
2335
+ let e = this.source.indexOf("\n") + 1;
2336
+ for (; 0 !== e;)
2337
+ this.onNewLine(this.offset + e), e = this.source.indexOf("\n", e) + 1;
2338
+ } return { type: e, offset: this.offset, indent: this.indent, source: this.source }; }
2339
+ startBlockValue(e) { switch (this.type) {
2340
+ case "alias":
2341
+ case "scalar":
2342
+ case "single-quoted-scalar":
2343
+ case "double-quoted-scalar": return this.flowScalar(this.type);
2344
+ case "block-scalar-header": return { type: "block-scalar", offset: this.offset, indent: this.indent, props: [this.sourceToken], source: "" };
2345
+ case "flow-map-start":
2346
+ case "flow-seq-start": return { type: "flow-collection", offset: this.offset, indent: this.indent, start: this.sourceToken, items: [], end: [] };
2347
+ case "seq-item-ind": return { type: "block-seq", offset: this.offset, indent: this.indent, items: [{ start: [this.sourceToken] }] };
2348
+ case "explicit-key-ind": {
2349
+ this.onKeyLine = !0;
2350
+ const t = En(Sn(e));
2351
+ return t.push(this.sourceToken), { type: "block-map", offset: this.offset, indent: this.indent, items: [{ start: t, explicitKey: !0 }] };
2352
+ }
2353
+ case "map-value-ind": {
2354
+ this.onKeyLine = !0;
2355
+ const t = En(Sn(e));
2356
+ return { type: "block-map", offset: this.offset, indent: this.indent, items: [{ start: t, key: null, sep: [this.sourceToken] }] };
2357
+ }
2358
+ } return null; }
2359
+ atIndentedComment(e, t) { return "comment" === this.type && (!(this.indent <= t) && e.every((e => "newline" === e.type || "space" === e.type))); }
2360
+ *documentEnd(e) { "doc-mode" !== this.type && (e.end ? e.end.push(this.sourceToken) : e.end = [this.sourceToken], "newline" === this.type && (yield* this.pop())); }
2361
+ *lineEnd(e) { switch (this.type) {
2362
+ case "comma":
2363
+ case "doc-start":
2364
+ case "doc-end":
2365
+ case "flow-seq-end":
2366
+ case "flow-map-end":
2367
+ case "map-value-ind":
2368
+ yield* this.pop(), yield* this.step();
2369
+ break;
2370
+ case "newline": this.onKeyLine = !1;
2371
+ default: e.end ? e.end.push(this.sourceToken) : e.end = [this.sourceToken], "newline" === this.type && (yield* this.pop());
2372
+ } }
2373
+ }
2374
+ function An(e) { const t = !1 !== e.prettyErrors; return { lineCounter: e.lineCounter || t && new bn || null, prettyErrors: t }; }
2375
+ function In(e, t = {}) { const { lineCounter: n, prettyErrors: s } = An(t), i = new On(n === null || n === void 0 ? void 0 : n.addNewLine), o = new Gt(t), r = Array.from(o.compose(i.parse(e))); if (s && n)
2376
+ for (const t of r)
2377
+ t.errors.forEach(Ot(e, n)), t.warnings.forEach(Ot(e, n)); return r.length > 0 ? r : Object.assign([], { empty: !0 }, o.streamInfo()); }
2378
+ function Tn(e, t = {}) { const { lineCounter: n, prettyErrors: s } = An(t), i = new On(n === null || n === void 0 ? void 0 : n.addNewLine), o = new Gt(t); let r = null; for (const t of o.compose(i.parse(e), !0, e.length))
2379
+ if (r) {
2380
+ if ("silent" !== r.options.logLevel) {
2381
+ r.errors.push(new Et(t.range.slice(0, 2), "MULTIPLE_DOCS", "Source contains multiple documents; please use YAML.parseAllDocuments()"));
2382
+ break;
2383
+ }
2384
+ }
2385
+ else
2386
+ r = t; return s && n && (r.errors.forEach(Ot(e, n)), r.warnings.forEach(Ot(e, n))), r; }
2387
+ function Ln(e, t, n) { let s; "function" == typeof t ? s = t : void 0 === n && t && "object" == typeof t && (n = t); const i = Tn(e, n); if (!i)
2388
+ return null; if (i.warnings.forEach((e => re(i.options.logLevel, e))), i.errors.length > 0) {
2389
+ if ("silent" !== i.options.logLevel)
2390
+ throw i.errors[0];
2391
+ i.errors = [];
2392
+ } return i.toJS(Object.assign({ reviver: s }, n)); }
2393
+ function xn(e, t, n) { var _a; let s = null; if ("function" == typeof t || Array.isArray(t) ? s = t : void 0 === n && t && (n = t), "string" == typeof n && (n = n.length), "number" == typeof n) {
2394
+ const e = Math.round(n);
2395
+ n = e < 1 ? void 0 : e > 8 ? { indent: 8 } : { indent: e };
2396
+ } if (void 0 === e) {
2397
+ const { keepUndefined: e } = (_a = n !== null && n !== void 0 ? n : t) !== null && _a !== void 0 ? _a : {};
2398
+ if (!e)
2399
+ return;
2400
+ } return c(e) && !s ? e.toString(n) : new wt(e, s, n).toString(n); }
2401
+ var $n = Object.freeze({ __proto__: null, CST: un, Composer: Gt, Document: wt, Schema: kt, YAMLError: St, YAMLParseError: Et, YAMLWarning: Nt, Alias: K, isAlias: a, isCollection: d, isDocument: c, isMap: l, isNode: p, isPair: u, isScalar: f, isSeq: h, Pair: de, Scalar: M, YAMLMap: ke, YAMLSeq: ve, Lexer: gn, LineCounter: bn, Parser: On, parse: Ln, parseAllDocuments: In, parseDocument: Tn, stringify: xn, visit: k, visitAsync: v });
2402
+ // export { K as Alias, un as CST, Gt as Composer, wt as Document, gn as Lexer, bn as LineCounter, de as Pair, On as Parser, M as Scalar, kt as Schema, St as YAMLError, ke as YAMLMap, Et as YAMLParseError, ve as YAMLSeq, Nt as YAMLWarning, $n as default, a as isAlias, d as isCollection, c as isDocument, l as isMap, p as isNode, u as isPair, f as isScalar, h as isSeq, Ln as parse, In as parseAllDocuments, Tn as parseDocument, xn as stringify, k as visit, v as visitAsync };
2403
+ exports.parse = Ln;
2404
+ exports.stringify = xn;
2405
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWFtbEJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ5YW1sQmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsY0FBYzs7O0FBRWQ7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxRQUFRLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxRQUFRLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksUUFBUSxJQUFJLE9BQU8sQ0FBQztJQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFBQyxLQUFLLENBQUMsQ0FBQztRQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUFDLENBQUMsQ0FBQSxPQUFPLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztBQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxRQUFRLElBQUksT0FBTyxDQUFDO0lBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUFDLEtBQUssQ0FBQyxDQUFDO1FBQUMsS0FBSyxDQUFDLENBQUM7UUFBQyxLQUFLLENBQUMsQ0FBQztRQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUFDLENBQUMsQ0FBQSxPQUFPLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztBQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7QUFBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQTtBQUFDLENBQUM7O0lBQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUM7QUFBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxRQUFRLElBQUksT0FBTyxDQUFDO0lBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUFDLElBQUksUUFBUSxJQUFJLE9BQU8sQ0FBQztnQkFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFBTSxDQUFDO2dCQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7b0JBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7WUFBQyxDQUFDO1FBQUMsQ0FBQztJQUFDLENBQUM7U0FBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLENBQUMsQ0FBQztRQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLENBQUMsQ0FBQztRQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFBO0lBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUMsQ0FBQztBQUFDLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQTtBQUFDLENBQUM7O0lBQU0sTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztBQUFDLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxRQUFRLElBQUksT0FBTyxDQUFDO0lBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQUMsSUFBSSxRQUFRLElBQUksT0FBTyxDQUFDO2dCQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUFNLENBQUM7Z0JBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztvQkFBRSxPQUFPLENBQUMsQ0FBQztnQkFBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtZQUFDLENBQUM7UUFBQyxDQUFDO0lBQUMsQ0FBQztTQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLENBQUMsQ0FBQztRQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFBO0lBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUMsQ0FBQztBQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxVQUFVLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0FBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyw0QkFBSSxPQUFPLFVBQVUsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBQSxDQUFDLENBQUMsR0FBRyxrREFBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQUEsQ0FBQyxDQUFDLEdBQUcsa0RBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFBLENBQUMsQ0FBQyxJQUFJLGtEQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBQSxDQUFDLENBQUMsTUFBTSxrREFBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQUEsQ0FBQyxDQUFDLEtBQUssa0RBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQyxDQUFDO0FBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUFFLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztLQUFNLENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUFDLENBQUM7SUFBQyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQTtBQUFDLENBQUMsQ0FBQyxDQUFDO0FBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFBQyxNQUFNLENBQUM7SUFBRyxZQUFZLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLEtBQUssS0FBSyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFBQyxVQUFVLEtBQUssTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFBQyxLQUFLLEtBQUs7WUFBRSxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQUMsTUFBTTtRQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUFDLENBQUMsQ0FBQSxPQUFPLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUFDLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQztZQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLGlEQUFpRCxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7Z0JBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUFDLENBQUM7UUFBQyxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTTtnQkFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsaURBQWlELENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFBQyxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUM7Z0JBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsNEJBQTRCLENBQUMsRUFBRSxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUFDLENBQUM7UUFBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUscUJBQXFCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFBQyxDQUFDLENBQUMsQ0FBQztJQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksR0FBRyxLQUFLLENBQUM7UUFBRSxPQUFPLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFBRSxPQUFPLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMscUNBQXFDLENBQUMsY0FBYyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxpQ0FBaUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUFFLElBQUksQ0FBQztZQUFDLE9BQU8sQ0FBQyxHQUFHLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQUMsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUE7UUFBQyxDQUFDLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUFFLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUEsQ0FBQyxDQUFDO0lBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFBQyxDQUFDOztRQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUFFLElBQUksS0FBSyxDQUFDLElBQUksb0JBQW9CLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLENBQUM7Q0FBRTtBQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsNkRBQTZELENBQUMsRUFBRSxDQUFDLENBQUE7QUFBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUM7QUFBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQyxDQUFDO0FBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBSSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFBRSxPQUFPLENBQUMsQ0FBQTtBQUFDLENBQUMsQ0FBQyxDQUFDO0FBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLFFBQVEsSUFBSSxPQUFPLENBQUM7SUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQUMsQ0FBQztTQUFNLElBQUksQ0FBQyxZQUFZLEdBQUc7UUFBRSxLQUFLLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUFDLENBQUM7U0FBTSxJQUFJLENBQUMsWUFBWSxHQUFHO1FBQUUsS0FBSyxNQUFNLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUFDLENBQUM7O1FBQU0sS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0FBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxJQUFJLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQSxDQUFDLENBQUMsQ0FBQztJQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBQUMsQ0FBQyxDQUFDLE9BQU8sUUFBUSxJQUFJLE9BQU8sQ0FBQyxLQUFJLENBQUMsYUFBRCxDQUFDLHVCQUFELENBQUMsQ0FBRSxJQUFJLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0FBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsR0FBRyxFQUFFLElBQUksRUFBRSxvQkFBb0IsRUFBRSxDQUFDO0FBQUMsTUFBTSxDQUFDO0lBQUcsWUFBWSxDQUFDLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUMsS0FBSyxLQUFLLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFFLE1BQU0sSUFBSSxTQUFTLENBQUMsaUNBQWlDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxRQUFRLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLElBQUksT0FBTyxDQUFDO1FBQUUsS0FBSyxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxVQUFVLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0NBQUU7QUFBQyxNQUFNLENBQUUsU0FBUSxDQUFDO0lBQUcsWUFBWSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEdBQUcsS0FBSyxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxhQUFELENBQUMsdUJBQUQsQ0FBQyxDQUFFLGlCQUFpQixFQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUFDLElBQUksQ0FBQyxLQUFLLElBQUk7WUFBRSxNQUFNO1FBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQUMsTUFBTSxDQUFDLEdBQUcsK0RBQStELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUFDLE1BQU0sSUFBSSxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7UUFBQyxNQUFNLElBQUksY0FBYyxDQUFDLHdEQUF3RCxDQUFDLENBQUE7SUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFBQyxNQUFNLElBQUksY0FBYyxDQUFDLDhEQUE4RCxDQUFDLENBQUE7SUFBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUMsQ0FBQztJQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQUMsTUFBTSxDQUFDLEdBQUcsK0RBQStELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFBQyxDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUMsV0FBVztZQUFFLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQTtJQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFDLENBQUM7Q0FBRTtBQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUFDLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQUMsQ0FBQztJQUFDLE9BQU8sQ0FBQyxDQUFBO0FBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUFDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBQyxDQUFDO0FBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVLElBQUksT0FBTyxDQUFDLElBQUksUUFBUSxJQUFJLE9BQU8sQ0FBQyxDQUFDO0FBQUMsTUFBTSxDQUFFLFNBQVEsQ0FBQztJQUFHLFlBQVksQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUEsQ0FBQyxhQUFELENBQUMsdUJBQUQsQ0FBQyxDQUFFLElBQUksRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLFFBQVEsS0FBSyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQyxDQUFDO0NBQUU7QUFBQyxDQUFDLENBQUMsWUFBWSxHQUFHLGNBQWMsRUFBRSxDQUFDLENBQUMsYUFBYSxHQUFHLGVBQWUsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUMsWUFBWSxHQUFHLGNBQWMsRUFBRSxDQUFDLENBQUMsWUFBWSxHQUFHLGNBQWMsQ0FBQztBQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyx3QkFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQUEsTUFBQSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFDLFVBQVUsbURBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxNQUFNLElBQUksQ0FBQyxZQUFZLE1BQU0sSUFBSSxDQUFDLFlBQVksT0FBTyxJQUFJLFdBQVcsSUFBSSxPQUFPLE1BQU0sSUFBSSxDQUFDLFlBQVksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxRQUFRLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUFFLE9BQU8sTUFBQSxDQUFDLENBQUMsTUFBTSxtQ0FBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7QUFBQyxDQUFDLENBQUMsQ0FBQSxDQUFDLGFBQUQsQ0FBQyx1QkFBRCxDQUFDLENBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFJLENBQUMsQ0FBQyxHQUFHLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBQSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxtQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQUMsT0FBTyxDQUFDLENBQUE7QUFBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBQyxPQUFBLENBQUEsTUFBQSxDQUFDLENBQUMsUUFBUSxrREFBRyxDQUFDLENBQUMsS0FBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUEsRUFBQSxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUFDLElBQUksQ0FBQyxJQUFJLFVBQVUsSUFBSSxPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksUUFBUSxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUE7SUFBQyxDQUFDO0lBQUMsQ0FBQyxHQUFHLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUEsQ0FBQyxhQUFELENBQUMsdUJBQUQsQ0FBQyxDQUFFLFVBQVUsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQSxNQUFBLENBQUMsYUFBRCxDQUFDLHVCQUFELENBQUMsQ0FBRSxTQUFTLDBDQUFFLElBQUksQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFDLENBQUM7QUFBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUFDLElBQUksUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQUMsQ0FBQzs7UUFBTSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsR0FBRyxNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxhQUFhLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFBLENBQUMsQ0FBQztBQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxRQUFRLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUM7QUFBQyxNQUFNLENBQUUsU0FBUSxDQUFDO0lBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUFNLENBQUM7UUFBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFBTSxDQUFDO1lBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtnQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFBQyxDQUFDO0lBQUMsQ0FBQyxDQUFDLENBQUM7SUFBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTTtRQUFFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU07UUFBRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNO1FBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FBTSxDQUFDO1FBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQU0sQ0FBQztZQUFDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQUMsQ0FBQztJQUFDLENBQUMsQ0FBQyxDQUFDO0NBQUU7QUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztBQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxHQUFHLE9BQU8sRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO0FBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxlQUFlLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDO0lBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUFDLEtBQUssR0FBRztnQkFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFBQyxLQUFLLEdBQUc7Z0JBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFBQyxNQUFNO1lBQUMsS0FBSyxHQUFHO2dCQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQUMsTUFBTTtZQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUE7UUFBQyxDQUFDO1FBQUEsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUFDLENBQUM7SUFBQyxJQUFJLElBQUksS0FBSyxDQUFDO1FBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztTQUFNLENBQUM7UUFBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQUMsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQUMsQ0FBQztRQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFBRSxJQUFJLENBQUM7Z0JBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUM7aUJBQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDO29CQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFBRSxPQUFPLENBQUMsQ0FBQztnQkFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7WUFBQyxDQUFDOztnQkFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFBQyxDQUFDO0lBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNO0lBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFDLENBQUM7QUFBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQztJQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO1FBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQU0sQ0FBQztRQUFDLEdBQUcsQ0FBQztZQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUFDLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRTtRQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFDLENBQUM7QUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCO0lBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyw4QkFBOEIsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQztRQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQUMsS0FBSyxHQUFHO2dCQUFFLENBQUM7b0JBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFBQyxRQUFRLENBQUMsRUFBRSxDQUFDO3dCQUFDLEtBQUssTUFBTTs0QkFBRSxDQUFDLElBQUksS0FBSyxDQUFDOzRCQUFDLE1BQU07d0JBQUMsS0FBSyxNQUFNOzRCQUFFLENBQUMsSUFBSSxLQUFLLENBQUM7NEJBQUMsTUFBTTt3QkFBQyxLQUFLLE1BQU07NEJBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQzs0QkFBQyxNQUFNO3dCQUFDLEtBQUssTUFBTTs0QkFBRSxDQUFDLElBQUksS0FBSyxDQUFDOzRCQUFDLE1BQU07d0JBQUMsS0FBSyxNQUFNOzRCQUFFLENBQUMsSUFBSSxLQUFLLENBQUM7NEJBQUMsTUFBTTt3QkFBQyxLQUFLLE1BQU07NEJBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQzs0QkFBQyxNQUFNO3dCQUFDLEtBQUssTUFBTTs0QkFBRSxDQUFDLElBQUksS0FBSyxDQUFDOzRCQUFDLE1BQU07d0JBQUMsS0FBSyxNQUFNOzRCQUFFLENBQUMsSUFBSSxLQUFLLENBQUM7NEJBQUMsTUFBTTt3QkFBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO29CQUFDLENBQUM7b0JBQUEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFBQyxDQUFDO2dCQUFDLE1BQU07WUFBQyxLQUFLLEdBQUc7Z0JBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO29CQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQU0sQ0FBQztvQkFBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxNQUFNLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUFFLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQUMsQ0FBQztnQkFBQyxNQUFNO1lBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUFDLENBQUMsQ0FBQSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUM7QUFBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUM7QUFBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUFNLENBQUM7SUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0FBQUMsSUFBSSxFQUFFLENBQUM7QUFBQyxJQUFJLENBQUM7SUFBQyxFQUFFLEdBQUcsSUFBSSxNQUFNLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxDQUFDLENBQUE7QUFBQyxDQUFDO0FBQUMsV0FBTSxDQUFDO0lBQUMsRUFBRSxHQUFHLGNBQWMsQ0FBQTtBQUFDLENBQUM7QUFBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsYUFBYSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxLQUFLLENBQUMsSUFBSSxRQUFRLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxhQUFhLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7SUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUFDLElBQUksSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7WUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFBO0lBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFBRSxNQUFLO0FBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FBTSxDQUFDO1FBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQztZQUFFLE1BQU07UUFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQUMsQ0FBQztBQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsZ0RBQWdELEVBQUUsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUFDLFFBQVEsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQTtBQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQSxDQUFDLENBQUM7QUFBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxJQUFJLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxJQUFJLGlEQUFpRCxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxDQUFDO0lBQUMsS0FBSyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxZQUFZLEVBQUUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksbUZBQW1GLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO1lBQUUsT0FBTyxDQUFDLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFdBQUMsT0FBQSxDQUFDLENBQUMsT0FBTyxJQUFJLHVCQUF1QixLQUFLLENBQUMsQ0FBQyxHQUFHLEtBQUksTUFBQSxDQUFDLENBQUMsSUFBSSwwQ0FBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQSxFQUFBLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLGFBQUQsQ0FBQyx1QkFBRCxDQUFDLENBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFBO0FBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQUMsTUFBTSxFQUFFLGNBQWMsRUFBRSxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUM7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUMsQ0FBQztBQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsOEJBQThCLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7SUFBQyxLQUFLLE9BQU87UUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFBQyxNQUFNO0lBQUMsS0FBSyxNQUFNO1FBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQUMsTUFBTTtJQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUE7QUFBQyxDQUFDLENBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsUUFBUSxJQUFJLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQSxDQUFDLENBQUM7QUFBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLGdCQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUFFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVO1FBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQUMsSUFBSSxNQUFBLENBQUMsQ0FBQyxlQUFlLDBDQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFBRSxNQUFNLElBQUksU0FBUyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7SUFBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFELENBQUMsY0FBRCxDQUFDLEdBQUksQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQyx3QkFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQztRQUFFLE9BQU8sTUFBQSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxtQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQUMsT0FBQSxNQUFBLENBQUMsQ0FBQyxRQUFRLGtEQUFHLENBQUMsQ0FBQyxDQUFBLEVBQUEsQ0FBQyxDQUFDLENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQUMsQ0FBQztJQUFDLENBQUMsR0FBRyxNQUFBLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLG1DQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7QUFBQyxDQUFDOztJQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixNQUFBLE1BQUEsQ0FBQyxhQUFELENBQUMsdUJBQUQsQ0FBQyxDQUFFLFdBQVcsMENBQUUsSUFBSSxtQ0FBSSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxZQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVTtJQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQUEsQ0FBQyxDQUFDLEdBQUcsbUNBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxNQUFBLENBQUMsQ0FBQyxhQUFhLG1DQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxVQUFVLElBQUksT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0FBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxPQUFPLEtBQUssQ0FBQyxJQUFJLE1BQU0sS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUM7QUFBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxRQUFRLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUFFLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUs7UUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztLQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFBRSxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzs7SUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUM7QUFBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUFFLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFDLENBQUM7QUFBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVU7SUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUksQ0FBQyxhQUFELENBQUMsdUJBQUQsQ0FBQyxDQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7S0FBTSxDQUFDO0lBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFBQyxJQUFJLENBQUMsWUFBWSxHQUFHO1FBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUFNLElBQUksQ0FBQyxZQUFZLEdBQUc7UUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQU0sQ0FBQztRQUFDLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxJQUFJLEtBQUssQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxRQUFRLElBQUksT0FBTyxDQUFDO1lBQUUsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLGFBQUQsQ0FBQyx1QkFBRCxDQUFDLENBQUUsR0FBRyxDQUFBLEVBQUUsQ0FBQztZQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQztZQUFDLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7Z0JBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFBQyxDQUFDLENBQUMsTUFBTSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLGtGQUFrRixDQUFDLDBDQUEwQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQTtZQUFDLENBQUM7WUFBQyxPQUFPLENBQUMsQ0FBQTtRQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUFDLENBQUM7QUFBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBQyxDQUFDO0FBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztBQUFDLE1BQU0sRUFBRTtJQUFHLFlBQVksQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUMsYUFBRCxDQUFDLHVCQUFELENBQUMsQ0FBRSxRQUFRLEVBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQSxDQUFDLGFBQUQsQ0FBQyx1QkFBRCxDQUFDLENBQUUsR0FBRyxFQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLGdCQUFJLE1BQU0sRUFBRSxhQUFhLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLGFBQWEsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQUMsSUFBSSxDQUFDO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxJQUFJLE9BQU8sQ0FBQztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsNERBQTRELENBQUMsQ0FBQTtJQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksRUFBRSxDQUFDO1FBQUMsSUFBSSxDQUFDO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw4RUFBOEUsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUM7WUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUFDLENBQUM7U0FBTSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUM7UUFBRSxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLElBQUksUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO1NBQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFBLE1BQUEsQ0FBQyxDQUFDLE1BQU0sbUNBQUksQ0FBQyxDQUFDLElBQUksbUNBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUFDLENBQUM7WUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtRQUFDLENBQUM7SUFBQyxDQUFDOztRQUFNLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLENBQUM7Q0FBRTtBQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFJLE9BQU8sQ0FBQyxDQUFBLE1BQUEsQ0FBQyxDQUFDLE1BQU0sbUNBQUksQ0FBQyxDQUFDLElBQUksRUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztBQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsZUFBZSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7U0FBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUFDLENBQUM7SUFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7QUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTTtJQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7S0FBTSxDQUFDO0lBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO0lBQUMsQ0FBQztBQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBLENBQUMsQ0FBQztBQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLGFBQWEsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQUUsQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEtBQUssS0FBSSxDQUFDLGFBQUQsQ0FBQyx1QkFBRCxDQUFDLENBQUUsT0FBTyxDQUFBLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQUMsQ0FBQztJQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUE7QUFBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNO0lBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQTtBQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQUMsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFBQyxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQTtBQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQSxDQUFDLENBQUM7QUFBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQTtBQUFDLENBQUMsQ0FBQyxDQUFDO0FBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQztJQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztZQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLENBQUM7WUFBRSxPQUFPLENBQUMsQ0FBQTtJQUFDLENBQUMsQ0FBQyxDQUFDO0FBQUMsTUFBTSxFQUFHLFNBQVEsQ0FBQztJQUFHLE1BQU0sS0FBSyxPQUFPLEtBQUssT0FBTyx1QkFBdUIsQ0FBQSxDQUFDLENBQUM7SUFBQyxZQUFZLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFBLENBQUMsQ0FBQztJQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksTUFBTSxFQUFFLGFBQWEsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxVQUFVLElBQUksT0FBTyxDQUFDO1FBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHO1FBQUUsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQU0sSUFBSSxDQUFDLElBQUksUUFBUSxJQUFJLE9BQU8sQ0FBQztRQUFFLEtBQUssTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxVQUFVLElBQUksT0FBTyxDQUFDLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLFlBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxRQUFRLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLGFBQUQsQ0FBQyx1QkFBRCxDQUFDLENBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQUEsSUFBSSxDQUFDLE1BQU0sMENBQUUsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUE7SUFBQyxDQUFDO1NBQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQUMsQ0FBQzs7UUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxZQUFJLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGFBQUQsQ0FBQyx1QkFBRCxDQUFDLENBQUUsS0FBSyxDQUFDLENBQUMsT0FBTyxNQUFBLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsbUNBQUksS0FBSyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsYUFBRCxDQUFDLHVCQUFELENBQUMsQ0FBRSxRQUFRLEVBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUMsYUFBRCxDQUFDLHVCQUFELENBQUMsQ0FBRSxRQUFRLEtBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUs7UUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUs7UUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsZUFBZSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sSUFBSSxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFDLENBQUM7Q0FBRTtBQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsdUJBQXVCLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLGlDQUFpQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQUMsTUFBTSxFQUFHLFNBQVEsQ0FBQztJQUFHLE1BQU0sS0FBSyxPQUFPLEtBQUssT0FBTyx1QkFBdUIsQ0FBQSxDQUFDLENBQUM7SUFBQyxZQUFZLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFBLENBQUMsQ0FBQztJQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsSUFBSSxPQUFPLENBQUM7UUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsSUFBSSxPQUFPLENBQUM7UUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUEsQ0FBQyxDQUFDO0lBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxRQUFRLElBQUksT0FBTyxDQUFDO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQSxDQUFDLGFBQUQsQ0FBQyx1QkFBRCxDQUFDLENBQUUsUUFBUSxLQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLO1FBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFBQyxJQUFJLFVBQVUsSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtZQUFDLENBQUM7WUFBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFBQyxDQUFDO0lBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUMsQ0FBQztDQUFFO0FBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBLENBQUMsQ0FBQztBQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsdUJBQXVCLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLGtDQUFrQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLHVCQUF1QixFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLHdCQUF3QixFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLElBQUksT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsbUNBQW1DLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksSUFBSSxRQUFRLElBQUksT0FBTyxDQUFDO0lBQUUsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxRQUFRLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFBRSxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLHlCQUF5QixLQUFLLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxHQUFHLENBQUM7UUFBRSxDQUFDLElBQUksR0FBRyxDQUFBO0FBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUMsQ0FBQztBQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxFQUFFLGdEQUFnRCxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLHdEQUF3RCxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSx5QkFBeUIsRUFBRSxJQUFJLEVBQUUsb0NBQW9DLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0FBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxJQUFJLE9BQU8sUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0FBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSx1QkFBdUIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsd0JBQXdCLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLHlCQUF5QixFQUFFLElBQUksRUFBRSx3REFBd0QsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLDJCQUEyQixJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLDBCQUEwQixFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksVUFBVSxJQUFJLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFBQyxPQUFPLENBQUMsQ0FBQTtJQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQywwRkFBMEYsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxJQUFJLE9BQU8sSUFBSTtRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEZBQTBGLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFBQyxDQUFDLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQUQsQ0FBQyxjQUFELENBQUMsR0FBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQztZQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxZQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO2dCQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFBQyxJQUFJLENBQUMsQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQUMsTUFBTSxDQUFDLEdBQUcsTUFBQSxDQUFDLENBQUMsS0FBSyxtQ0FBSSxDQUFDLENBQUMsR0FBRyxDQUFDO29CQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQTtnQkFBQyxDQUFDO2dCQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7WUFBQyxDQUFDO1lBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFBQyxDQUFDO0lBQUMsQ0FBQzs7SUFBTSxDQUFDLENBQUMsa0NBQWtDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUMsQ0FBQztBQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcseUJBQXlCLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFBRSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQUMsSUFBSSxVQUFVLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTTtnQkFBRSxNQUFNLElBQUksU0FBUyxDQUFDLGdDQUFnQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQUMsQ0FBQzthQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxNQUFNLEVBQUUsQ0FBQztZQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTTtnQkFBRSxNQUFNLElBQUksU0FBUyxDQUFDLG9DQUFvQyxDQUFDLENBQUMsTUFBTSxPQUFPLENBQUMsQ0FBQztZQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUFDLENBQUM7O1lBQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBQyxDQUFDO0FBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUseUJBQXlCLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFBQyxNQUFNLEVBQUcsU0FBUSxFQUFFO0lBQUcsZ0JBQWdCLEtBQUssRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQSxDQUFDLENBQUM7SUFBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFDLGFBQUQsQ0FBQyx1QkFBRCxDQUFDLENBQUUsUUFBUSxLQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7UUFBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQSxDQUFDLENBQUM7Q0FBRTtBQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsd0JBQXdCLENBQUM7QUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLEdBQUcsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsd0JBQXdCLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLO1FBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpREFBaUQsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQSxDQUFDLENBQUM7QUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLHdCQUF3QixFQUFFLElBQUksRUFBRSw0Q0FBNEMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsd0JBQXdCLEVBQUUsSUFBSSxFQUFFLDhDQUE4QyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSx5QkFBeUIsRUFBRSxJQUFJLEVBQUUsZ0RBQWdELEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsdURBQXVELEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxFQUFFLG1DQUFtQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUFDLEtBQUssQ0FBQztZQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQUMsTUFBTTtRQUFDLEtBQUssQ0FBQztZQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQUMsTUFBTTtRQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUE7SUFBQyxDQUFDO0lBQUEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUM7QUFBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7QUFBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0FBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsd0JBQXdCLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQUMsTUFBTSxFQUFHLFNBQVEsRUFBRTtJQUFHLFlBQVksQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUEsQ0FBQyxDQUFDO0lBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksU0FBUyxJQUFJLE9BQU8sQ0FBQztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0VBQWdFLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFBRSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUM7WUFBRSxVQUFVLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUMsQ0FBQztDQUFFO0FBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyx1QkFBdUIsQ0FBQztBQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFlBQVksR0FBRyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSx1QkFBdUIsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUFFLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUFDLENBQUMsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFBO0lBQUMsQ0FBQzs7UUFBTSxDQUFDLENBQUMsaUNBQWlDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0FBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxJQUFJLE9BQU8sQ0FBQztJQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQSxDQUFDLENBQUM7QUFBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsc0NBQXNDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsK0NBQStDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFlBQVksSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsNkJBQTZCLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQywySkFBMkosQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFBO0lBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxXQUFDLE9BQUEsTUFBQSxDQUFDLGFBQUQsQ0FBQyx1QkFBRCxDQUFDLENBQUUsV0FBVyxHQUFHLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLENBQUMsbUNBQUksRUFBRSxDQUFBLEVBQUEsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsMEJBQTBCLEVBQUUsRUFBRSxFQUFFLHlCQUF5QixFQUFFLEVBQUUsRUFBRSx3QkFBd0IsRUFBRSxFQUFFLEVBQUUseUJBQXlCLEVBQUUsRUFBRSxFQUFFLHVCQUF1QixFQUFFLEVBQUUsRUFBRSw2QkFBNkIsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFBQyxNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLDZCQUE2QixDQUFDLENBQUE7SUFBQyxDQUFDO0lBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQTtBQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQUUsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7O0lBQU0sVUFBVSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLFFBQVEsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQSxDQUFDLENBQUM7QUFBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBQyxNQUFNLEVBQUU7SUFBRyxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsY0FBYyxFQUFFLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxhQUFELENBQUMsY0FBRCxDQUFDLEdBQUksSUFBSSxFQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxjQUFjLEdBQUcsVUFBVSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUEsQ0FBQyxDQUFDO0lBQUMsS0FBSyxLQUFLLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQSxDQUFDLENBQUM7Q0FBRTtBQUFDLE1BQU0sRUFBRTtJQUFHLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsYUFBRCxDQUFDLHVCQUFELENBQUMsQ0FBRSxXQUFXLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLEtBQUssS0FBSyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsSUFBSSxPQUFPLENBQUM7UUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLE1BQU0sSUFBSSxDQUFDLFlBQVksTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQUMsQ0FBQzs7UUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxhQUFELENBQUMsY0FBRCxDQUFDLEdBQUksRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLEVBQUUsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsYUFBRCxDQUFDLGNBQUQsQ0FBQyxHQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQUMsSUFBSSxRQUFRLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFBQyxNQUFNLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO2dCQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1lBQUMsQ0FBQztZQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUE7UUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLEVBQUUsQ0FBQSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLHFCQUFxQixFQUFFLENBQUMsYUFBRCxDQUFDLGNBQUQsQ0FBQyxHQUFJLENBQUMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLGFBQUQsQ0FBQyxjQUFELENBQUMsR0FBSSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQUMsS0FBSyxLQUFLO1lBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQztZQUFDLE1BQU07UUFBQyxLQUFLLEtBQUssQ0FBQztRQUFDLEtBQUssTUFBTTtZQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFBQyxNQUFNO1FBQUMsS0FBSyxJQUFJO1lBQUUsSUFBSSxDQUFDLFVBQVUsSUFBSSxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztZQUFDLE1BQU07UUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsK0RBQStELENBQUMsRUFBRSxDQUFDLENBQUE7UUFBQyxDQUFDO0lBQUMsQ0FBQyxDQUFBLElBQUksQ0FBQyxDQUFDLE1BQU0sWUFBWSxNQUFNO1FBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO1NBQU0sQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxxRUFBcUUsQ0FBQyxDQUFDO1FBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQUMsQ0FBQyxDQUFDLENBQUM7SUFBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxNQUFNLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsRUFBRSxhQUFhLEVBQUUsUUFBUSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLGFBQUQsQ0FBQyxjQUFELENBQUMsR0FBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsSUFBSSxPQUFPLENBQUM7UUFBRSxLQUFLLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLFVBQVUsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDLENBQUMsSUFBSSxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsbURBQW1ELENBQUMsRUFBRSxDQUFDLENBQUE7SUFBQyxDQUFDLENBQUMsT0FBTyxVQUFVLENBQUMsRUFBRSxDQUFDLFlBQUksTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7UUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLGFBQWEsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUM7UUFBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBQUMsQ0FBQztZQUFDLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUE7UUFBQyxDQUFDO1FBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQTtJQUFDLENBQUM7O1FBQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFBLENBQUMsQ0FBQyxVQUFVLDBDQUFFLE1BQU07UUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7WUFBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUE7UUFBQyxDQUFDOztZQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FBTSxDQUFDO1FBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFBLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUM7Q0FBRTtBQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFBLENBQUMsQ0FBQztBQUFDLE1BQU0sRUFBRyxTQUFRLEtBQUs7SUFBRyxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQSxDQUFDLENBQUM7Q0FBRTtBQUFDLE1BQU0sRUFBRyxTQUFRLEVBQUU7SUFBRyxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztDQUFFO0FBQUMsTUFBTSxFQUFHLFNBQVEsRUFBRTtJQUFHLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztDQUFFO0FBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksWUFBWSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztJQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFBQyxDQUFDLENBQUMsTUFBTSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQTtBQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxjQUFjLEVBQUUsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFBRSxRQUFRLENBQUEsQ0FBQyxJQUFJLENBQUMsT0FBTyxLQUFLLENBQUMsQ0FBQyxJQUFJLElBQUksU0FBUyxLQUFLLENBQUMsQ0FBQyxJQUFJLElBQUksT0FBTyxLQUFLLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLHVFQUF1RSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLFNBQVMsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLFNBQVMsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxFQUFFLHFDQUFxQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUEsRUFBRSxDQUFDO1FBQUMsS0FBSyxPQUFPO1lBQUUsQ0FBQyxJQUFJLFdBQVcsS0FBSyxDQUFDLElBQUksaUJBQWlCLE1BQUssQ0FBQyxhQUFELENBQUMsdUJBQUQsQ0FBQyxDQUFFLElBQUksQ0FBQSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQUMsTUFBTTtRQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztZQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLGNBQWMsRUFBRSx3RUFBd0UsQ0FBQyxDQUFDO1lBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDO1lBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUFDLE1BQUs7UUFBQyxDQUFDO1FBQUMsS0FBSyxTQUFTO1lBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksY0FBYyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUFDLE1BQU07UUFBQyxLQUFLLFFBQVE7WUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxvQ0FBb0MsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxXQUFXLEVBQUUsaUNBQWlDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsYUFBRCxDQUFDLGNBQUQsQ0FBQyxHQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUFDLE1BQU07UUFBQyxLQUFLLEtBQUs7WUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxlQUFlLEVBQUUsaUNBQWlDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsYUFBRCxDQUFDLGNBQUQsQ0FBQyxHQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUFDLE1BQU07UUFBQyxLQUFLLENBQUM7WUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLHNDQUFzQyxDQUFDLENBQUMsTUFBTSxZQUFZLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLENBQUMsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxhQUFELENBQUMsY0FBRCxDQUFDLEdBQUksWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxjQUFjLEtBQUssQ0FBQyxJQUFJLGtCQUFrQixLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFBQyxNQUFNO1FBQUMsS0FBSyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQUMsTUFBSztRQUFDLENBQUM7UUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUFDLENBQUMsQ0FBQSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxLQUFLLENBQUMsQ0FBQyxJQUFJLElBQUksU0FBUyxLQUFLLENBQUMsQ0FBQyxJQUFJLElBQUksT0FBTyxLQUFLLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLGNBQWMsRUFBRSx1RUFBdUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxXQUFXLE1BQUssQ0FBQyxhQUFELENBQUMsdUJBQUQsQ0FBQyxDQUFFLElBQUksQ0FBQSxJQUFJLFdBQVcsTUFBSyxDQUFDLGFBQUQsQ0FBQyx1QkFBRCxDQUFDLENBQUUsSUFBSSxDQUFBLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsRUFBRSxxQ0FBcUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxhQUFELENBQUMsY0FBRCxDQUFDLEdBQUksQ0FBQyxFQUFFLENBQUEsQ0FBQyxDQUFDO0FBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUFDLEtBQUssT0FBTyxDQUFDO0lBQUMsS0FBSyxRQUFRLENBQUM7SUFBQyxLQUFLLHNCQUFzQixDQUFDO0lBQUMsS0FBSyxzQkFBc0I7UUFBRSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztZQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQyxHQUFHO1lBQUUsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRztnQkFBRSxJQUFJLFNBQVMsS0FBSyxDQUFDLENBQUMsSUFBSTtvQkFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUFDLEtBQUssaUJBQWlCO1FBQUUsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7WUFBQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLO2dCQUFFLElBQUksU0FBUyxLQUFLLENBQUMsQ0FBQyxJQUFJO29CQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFBQyxJQUFJLENBQUMsQ0FBQyxHQUFHO2dCQUFFLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUc7b0JBQUUsSUFBSSxTQUFTLEtBQUssQ0FBQyxDQUFDLElBQUk7d0JBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFBRSxPQUFPLENBQUMsQ0FBQyxDQUFBO1FBQUMsQ0FBQztRQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO0FBQUMsQ0FBQyxDQUFDLENBQUM7QUFBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLGlCQUFpQixNQUFLLENBQUMsYUFBRCxDQUFDLHVCQUFELENBQUMsQ0FBRSxJQUFJLENBQUEsRUFBRSxDQUFDO0lBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsd0RBQXdELEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUFDLENBQUM7QUFBQyxDQUFDLENBQUMsQ0FBQztBQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxVQUFVLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0FBQUMsTUFBTSxFQUFFLEdBQUcsaURBQWlELENBQUM7QUFBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7SUFBQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFBQyxLQUFLLE9BQU87Z0JBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxFQUFFLHdFQUF3RSxDQUFDLENBQUM7Z0JBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUM7Z0JBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUFDLE1BQUs7WUFBQyxDQUFDO1lBQUMsS0FBSyxTQUFTO2dCQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQUMsTUFBTTtZQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBQUMsQ0FBQztRQUFBLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFBO0lBQUMsQ0FBQztBQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUEsQ0FBQyxDQUFDO0FBQUMsTUFBTSxFQUFFLEdBQUcsMkRBQTJELEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxLQUFLLENBQUMsQ0FBQyxJQUFJLElBQUksV0FBVyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLFdBQVcsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLGdCQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFBLENBQUMsYUFBRCxDQUFDLHVCQUFELENBQUMsQ0FBRSxTQUFTLG1DQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxDQUFDLGFBQUQsQ0FBQyxjQUFELENBQUMsR0FBSSxDQUFDLGFBQUQsQ0FBQyx1QkFBRCxDQUFDLENBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLHVCQUF1QixFQUFFLHlEQUF5RCxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQUMsU0FBUTtRQUFDLENBQUM7UUFBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFELENBQUMsY0FBRCxDQUFDLEdBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsd0JBQXdCLEVBQUUsMkNBQTJDLENBQUMsQ0FBQTtJQUFDLENBQUM7O1FBQU0sQ0FBQSxNQUFBLENBQUMsQ0FBQyxLQUFLLDBDQUFFLE1BQU0sTUFBSyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztJQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO0lBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsYUFBRCxDQUFDLGNBQUQsQ0FBQyxHQUFJLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUMsSUFBSSxjQUFjLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsTUFBSyxDQUFDLGFBQUQsQ0FBQyx1QkFBRCxDQUFDLENBQUUsSUFBSSxDQUFBLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLHVCQUF1QixFQUFFLHFEQUFxRCxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsNkZBQTZGLENBQUMsQ0FBQyxDQUFDO1FBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFBQyxDQUFDO1NBQU0sQ0FBQztRQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUUscURBQXFELENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFBQyxNQUFNLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQUMsQ0FBQztBQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxFQUFFLG1DQUFtQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsYUFBRCxDQUFDLGNBQUQsQ0FBQyxHQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQUksTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQUEsQ0FBQyxhQUFELENBQUMsdUJBQUQsQ0FBQyxDQUFFLFNBQVMsbUNBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsS0FBSyxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUFDLFNBQVE7UUFBQyxDQUFDO1FBQUMsQ0FBQyxJQUFJLFdBQVcsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxZQUFZLEVBQUUsa0RBQWtELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsbUNBQW1DLENBQUMsQ0FBQTtJQUFDLENBQUM7SUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsYUFBRCxDQUFDLGNBQUQsQ0FBQyxHQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsZ0JBQUksTUFBTSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBQSxDQUFDLGFBQUQsQ0FBQyx1QkFBRCxDQUFDLENBQUUsU0FBUyxtQ0FBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsQ0FBQyxhQUFELENBQUMsY0FBRCxDQUFDLEdBQUksQ0FBQyxhQUFELENBQUMsdUJBQUQsQ0FBQyxDQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsNEJBQTRCLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQUMsU0FBUTtRQUFDLENBQUM7UUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSx3QkFBd0IsRUFBRSxrRUFBa0UsQ0FBQyxDQUFBO0lBQUMsQ0FBQztJQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFBQyxDQUFDLEVBQUUsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQUMsS0FBSyxPQUFPLENBQUM7Z0JBQUMsS0FBSyxPQUFPLENBQUMsQ0FBQyxNQUFNO2dCQUFDLEtBQUssU0FBUztvQkFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUE7WUFBQyxDQUFDO1FBQUEsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsTUFBQSxDQUFDLENBQUMsS0FBSyxtQ0FBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUE7UUFBQyxDQUFDO0lBQUMsQ0FBQztJQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLGVBQWUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsYUFBRCxDQUFDLGNBQUQsQ0FBQyxHQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFBQyxJQUFJLENBQUM7b0JBQUUsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQzt3QkFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSzs0QkFBRSxNQUFNO3dCQUFDLElBQUksU0FBUyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQzs0QkFBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLHdCQUF3QixFQUFFLGtFQUFrRSxDQUFDLENBQUM7NEJBQUMsTUFBSzt3QkFBQyxDQUFDO29CQUFDLENBQUM7Z0JBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsNkZBQTZGLENBQUMsQ0FBQTtZQUFDLENBQUM7UUFBQyxDQUFDOztZQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsNEJBQTRCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSwwQkFBMEIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFBQyxNQUFNLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxFQUFFLHlCQUF5QixDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFBQyxDQUFDO2FBQU0sQ0FBQztZQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBRCxDQUFDLGNBQUQsQ0FBQyxHQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUFDLENBQUM7UUFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBO0lBQUMsQ0FBQztTQUFNLENBQUM7UUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUFDLENBQUM7QUFBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUM7SUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztLQUFNLENBQUM7SUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxxRUFBcUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUFDLENBQUM7O0lBQU0sQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztBQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUkscUJBQXFCLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7SUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxFQUFFLCtCQUErQixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUFDLENBQUM7O1FBQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtBQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxrREFBa0QsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFBQyxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUFDLEtBQUssU0FBUztZQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUFDLE1BQU07UUFBQyxLQUFLLFNBQVM7WUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxFQUFFLHdFQUF3RSxDQUFDLENBQUE7WUFBQyxDQUFDO1lBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUFDLE1BQU07UUFBQyxLQUFLLE9BQU87WUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFBQyxNQUFNO1FBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLEVBQUUsNENBQTRDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUFDLENBQUMsSUFBSSxRQUFRLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQUMsQ0FBQztJQUFDLENBQUM7QUFBQyxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQSxDQUFDLGFBQUQsQ0FBQyx1QkFBRCxDQUFDLENBQUcsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQztJQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUFDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQztRQUFFLE1BQU07SUFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtBQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQUMsTUFBTSxDQUFDLEdBQUcsaUdBQWlHLENBQUM7WUFBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQUMsQ0FBQztRQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxFQUFFLHFEQUFxRCxDQUFDLENBQUE7UUFBQyxDQUFDO1FBQUMsTUFBSztJQUFDLENBQUM7SUFBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUE7QUFBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUFDLE1BQU0sQ0FBQyxHQUFHLDJEQUEyRCxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7UUFBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUE7SUFBQyxDQUFDO0lBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLE1BQU07SUFBQyxLQUFLLEdBQUc7UUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7WUFBQyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7UUFBQyxNQUFNO0lBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQTtBQUFDLENBQUMsQ0FBQSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUMsQ0FBQztBQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztJQUFDLEtBQUssUUFBUTtRQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUFDLEtBQUssSUFBSTtnQkFBRSxDQUFDLEdBQUcsaUJBQWlCLENBQUM7Z0JBQUMsTUFBTTtZQUFDLEtBQUssR0FBRztnQkFBRSxDQUFDLEdBQUcsNEJBQTRCLENBQUM7Z0JBQUMsTUFBTTtZQUFDLEtBQUssR0FBRztnQkFBRSxDQUFDLEdBQUcsaUNBQWlDLENBQUM7Z0JBQUMsTUFBTTtZQUFDLEtBQUssR0FBRyxDQUFDO1lBQUMsS0FBSyxHQUFHO2dCQUFFLENBQUMsR0FBRywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQUMsTUFBTTtZQUFDLEtBQUssR0FBRyxDQUFDO1lBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1FBQUMsQ0FBQyxDQUFBLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixFQUFFLGlDQUFpQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQUMsTUFBTTtJQUFDLEtBQUssc0JBQXNCO1FBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFBQyxNQUFNO0lBQUMsS0FBSyxzQkFBc0I7UUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFBRSxJQUFJLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQUMsQ0FBQztxQkFBTSxJQUFJLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQUMsSUFBSSxDQUFDO3dCQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7eUJBQU0sSUFBSSxJQUFJLEtBQUssQ0FBQzt3QkFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUM7NEJBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQzt5QkFBTSxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDOzRCQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7eUJBQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO3dCQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFBO29CQUFDLENBQUM7eUJBQU0sQ0FBQzt3QkFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsZUFBZSxFQUFFLDJCQUEyQixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUE7b0JBQUMsQ0FBQztnQkFBQyxDQUFDO3FCQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDO3dCQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQUMsQ0FBQzs7b0JBQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFBQyxNQUFNO0lBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixFQUFFLDRDQUE0QyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQTtBQUFDLENBQUMsQ0FBQSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFBLENBQUMsQ0FBQztBQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsWUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFBQyxDQUFDLEdBQUcsSUFBSSxNQUFNLENBQUMsNEJBQTRCLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLHVDQUF1QyxFQUFFLElBQUksQ0FBQyxDQUFBO0FBQUMsQ0FBQztBQUFDLFdBQU0sQ0FBQztJQUFDLENBQUMsR0FBRyxvQkFBb0IsRUFBRSxDQUFDLEdBQUcsMEJBQTBCLENBQUE7QUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFBLENBQUMsYUFBRCxDQUFDLHVCQUFELENBQUMsQ0FBRyxDQUFDLENBQUMsbUNBQUksRUFBRSxDQUFDLENBQUEsQ0FBQyxDQUFDO0FBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFBRSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFBLENBQUMsQ0FBQztBQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsZUFBZSxFQUFFLDJCQUEyQixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUFDLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0FBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsY0FBYyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQUksSUFBSSxHQUFHLEtBQUssQ0FBQztJQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSTtJQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQUMsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQztJQUFFLElBQUksTUFBQSxDQUFDLENBQUMsSUFBSSwwQ0FBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVTtJQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLENBQUMsRUFBRSxFQUFFLHVCQUF1QixLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFDLE9BQUEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFJLE1BQUEsQ0FBQyxDQUFDLElBQUksMENBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUEsRUFBQSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQUEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFDLE9BQUEsQ0FBQyxDQUFDLE9BQU8sS0FBSSxNQUFBLENBQUMsQ0FBQyxJQUFJLDBDQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFBLEVBQUEsQ0FBQyxDQUFDLG1DQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7UUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLG9CQUFvQixFQUFFLGlDQUFpQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFBQyxDQUFDO0FBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQUQsQ0FBQyxjQUFELENBQUMsR0FBSSxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7SUFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQUMsQ0FBQztBQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7SUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFBQyxDQUFDLENBQUMsQ0FBQyxhQUFELENBQUMsY0FBRCxDQUFDLEdBQUksQ0FBQyxFQUFFLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQyxDQUFDO0FBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUFDLENBQUMsYUFBRCxDQUFDLGNBQUQsQ0FBQyxHQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUFDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUFDLEtBQUssT0FBTyxDQUFDO1lBQUMsS0FBSyxTQUFTLENBQUM7WUFBQyxLQUFLLFNBQVM7Z0JBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO2dCQUFDLFNBQVE7UUFBQyxDQUFDO1FBQUEsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxNQUFLLENBQUMsYUFBRCxDQUFDLHVCQUFELENBQUMsQ0FBRSxJQUFJLENBQUE7WUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQUMsTUFBSztJQUFDLENBQUM7QUFBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBQyxDQUFDO0FBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFBQyxLQUFLLE9BQU87UUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLGlDQUFpQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLFdBQVcsRUFBRSxnQ0FBZ0MsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLGFBQWEsRUFBRSwrQ0FBK0MsQ0FBQyxDQUFDO1FBQUMsTUFBTTtJQUFDLEtBQUssUUFBUSxDQUFDO0lBQUMsS0FBSyxzQkFBc0IsQ0FBQztJQUFDLEtBQUssc0JBQXNCLENBQUM7SUFBQyxLQUFLLGNBQWM7UUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLE1BQU07SUFBQyxLQUFLLFdBQVcsQ0FBQztJQUFDLEtBQUssV0FBVyxDQUFDO0lBQUMsS0FBSyxpQkFBaUI7UUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxvQkFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLFdBQVcsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBRCxDQUFDLGNBQUQsQ0FBQyxHQUFJLENBQUMsQ0FBQztZQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxFQUFFLDRDQUE0QyxDQUFDLENBQUE7UUFBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsV0FBVyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sSUFBSSxLQUFLLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxJQUFJLEtBQUssS0FBSyxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBVSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsS0FBSyxDQUFDO2dCQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLHFCQUFxQixFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLDRCQUE0QixNQUFBLENBQUMsQ0FBQyxVQUFVLG1DQUFJLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBQSxNQUFBLENBQUMsQ0FBQyxPQUFPLGtEQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxvQkFBb0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsbUNBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFBLENBQUMsYUFBRCxDQUFDLHVCQUFELENBQUMsQ0FBRSxNQUFNLEtBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLE1BQU07SUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixFQUFFLE9BQU8sS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtBQUFDLENBQUMsQ0FBQSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxrQ0FBa0MsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsSUFBSSxPQUFPLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSx1QkFBdUIsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUFDLENBQUMsQ0FBQyxDQUFDLGFBQUQsQ0FBQyxjQUFELENBQUMsR0FBSSxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsMkNBQTJDLENBQUMsQ0FBQTtBQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFDLENBQUM7QUFBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLGtDQUFrQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQyxDQUFDO0FBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksUUFBUSxJQUFJLE9BQU8sQ0FBQztJQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0FBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxZQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFBQyxLQUFLLEdBQUc7WUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUFDLE1BQU07UUFBQyxLQUFLLEdBQUc7WUFBRSxHQUFHLE1BQUssTUFBQSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQywwQ0FBRyxDQUFDLENBQUMsQ0FBQSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUFDLE1BQU07UUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFBQyxDQUFDO0FBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLGNBQWMsRUFBRSxDQUFDLEVBQUUsQ0FBQSxDQUFDLENBQUM7QUFBQyxNQUFNLEVBQUU7SUFBRyxZQUFZLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLEVBQUUsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sSUFBSSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLGNBQWMsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFBQyxJQUFJLENBQUM7WUFBRSxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDO1lBQUUsQ0FBQyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7YUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUM7WUFBQyxDQUFDLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUFDLENBQUM7YUFBTSxDQUFDO1lBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQztZQUFDLENBQUMsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQUMsQ0FBQztJQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQSxDQUFDLENBQUM7SUFBQyxVQUFVLEtBQUssT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFBLENBQUMsQ0FBQztJQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQztRQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFBQyxLQUFLLFdBQVc7WUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQztZQUFDLE1BQU07UUFBQyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFBQyxNQUFNLENBQUMsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsYUFBRCxDQUFDLGNBQUQsQ0FBQyxHQUFJLENBQUMsYUFBRCxDQUFDLHVCQUFELENBQUMsQ0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLFdBQVcsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLFdBQVcsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsY0FBYyxFQUFFLHVFQUF1RSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxpREFBaUQsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFBQyxNQUFLO1FBQUMsQ0FBQztRQUFDLEtBQUssaUJBQWlCLENBQUM7UUFBQyxLQUFLLE9BQU8sQ0FBQyxDQUFDLE1BQU07UUFBQyxLQUFLLFNBQVMsQ0FBQztRQUFDLEtBQUssU0FBUztZQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUFDLE1BQU07UUFBQyxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFBQyxNQUFLO1FBQUMsQ0FBQztRQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztZQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQUMsTUFBTSxDQUFDLEdBQUcsK0NBQStDLENBQUM7Z0JBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQUMsTUFBSztZQUFDLENBQUM7WUFBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFBQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztnQkFBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQTtZQUFDLENBQUM7WUFBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQUMsTUFBSztRQUFDLENBQUM7UUFBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFBQyxDQUFDLENBQUMsQ0FBQztJQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsR0FBRztRQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztTQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7UUFBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsdUNBQXVDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQUMsQ0FBQyxDQUFDLENBQUM7Q0FBRTtBQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDO0lBQUUsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFBQyxLQUFLLE9BQU8sQ0FBQztZQUFDLEtBQUssU0FBUztnQkFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUFDLE1BQU07WUFBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUFDLENBQUMsQ0FBQSxPQUFPLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztBQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQUMsS0FBSyxRQUFRLENBQUM7SUFBQyxLQUFLLHNCQUFzQixDQUFDO0lBQUMsS0FBSyxzQkFBc0I7UUFBRSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUFDLE1BQU07SUFBQyxLQUFLLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFBQyxxQkFBcUIsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUFDLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQztZQUFFLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO1FBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQUMsTUFBSztJQUFDLENBQUM7SUFBQyxLQUFLLFdBQVcsQ0FBQztJQUFDLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztRQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFBQyxNQUFLO0lBQUMsQ0FBQztJQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFBQyxNQUFNLENBQUMsR0FBRyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLFNBQVMsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLFNBQVMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQUMsS0FBSyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUFFLE1BQU0sS0FBSyxDQUFDLElBQUksUUFBUSxLQUFLLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUE7SUFBQyxDQUFDO0FBQUMsQ0FBQyxDQUFDLENBQUM7QUFBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFBQyxLQUFLLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFBQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLO1lBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUE7SUFBQyxDQUFDO0lBQUMsS0FBSyxXQUFXLENBQUM7SUFBQyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFBQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLO1lBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQUMsQ0FBQztJQUFDLEtBQUssaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFBQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLO1lBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUc7WUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQUMsQ0FBQztJQUFDLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQztRQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDLEdBQUc7WUFBRSxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHO2dCQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQUMsT0FBTyxDQUFDLENBQUE7SUFBQyxDQUFDO0lBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUc7WUFBRSxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHO2dCQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQUMsT0FBTyxDQUFDLENBQUE7SUFBQyxDQUFDO0FBQUMsQ0FBQyxDQUFDLENBQUM7QUFBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFBRSxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFDLENBQUM7QUFBQyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxNQUFNLElBQUksQ0FBQyxJQUFJLFVBQVUsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUM7QUFBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxRQUFRLElBQUksT0FBTyxDQUFDO0lBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7SUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFBQyxJQUFJLENBQUMsSUFBSSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7UUFBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQUMsSUFBSSxRQUFRLElBQUksT0FBTyxDQUFDO2dCQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUFNLENBQUM7Z0JBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtvQkFBRSxPQUFPLEVBQUUsQ0FBQztnQkFBQyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtZQUFDLENBQUM7UUFBQyxDQUFDO1FBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQUMsQ0FBQztBQUFDLENBQUMsQ0FBQyxPQUFPLFVBQVUsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztBQUFDLEVBQUUsQ0FBQyxLQUFLLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLGFBQUQsQ0FBQyx1QkFBRCxDQUFDLENBQUcsQ0FBQyxDQUFDLENBQUM7SUFBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDO1FBQUUsT0FBTztJQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsYUFBRCxDQUFDLHVCQUFELENBQUMsQ0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDO0lBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUM7QUFBQyxNQUFNLEVBQUUsR0FBRyxRQUFRLEVBQUUsRUFBRSxHQUFHLEdBQUcsRUFBRSxFQUFFLEdBQUcsR0FBRyxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUM7QUFBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLEVBQUUsQ0FBQztJQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxpQkFBaUIsQ0FBQztJQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxVQUFVLENBQUM7SUFBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sZ0JBQWdCLENBQUM7SUFBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sUUFBUSxDQUFDO0lBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxPQUFPLFdBQVcsQ0FBQztJQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsT0FBTyxTQUFTLENBQUM7SUFBQyxLQUFLLEVBQUUsQ0FBQztJQUFDLEtBQUssSUFBSSxDQUFDO0lBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxPQUFPLFNBQVMsQ0FBQztJQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxjQUFjLENBQUM7SUFBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sa0JBQWtCLENBQUM7SUFBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sZUFBZSxDQUFDO0lBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLGdCQUFnQixDQUFDO0lBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLGNBQWMsQ0FBQztJQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxnQkFBZ0IsQ0FBQztJQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxjQUFjLENBQUM7SUFBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sT0FBTyxDQUFBO0FBQUMsQ0FBQyxDQUFBLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFBQyxLQUFLLEdBQUcsQ0FBQztJQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxPQUFPLENBQUM7SUFBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sU0FBUyxDQUFDO0lBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLGdCQUFnQixDQUFDO0lBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLE9BQU8sQ0FBQztJQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxRQUFRLENBQUM7SUFBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDO0lBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLHNCQUFzQixDQUFDO0lBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLHNCQUFzQixDQUFDO0lBQUMsS0FBSyxHQUFHLENBQUM7SUFBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8scUJBQXFCLENBQUE7QUFBQyxDQUFDLENBQUEsT0FBTyxJQUFJLENBQUEsQ0FBQyxDQUFDO0FBQUMsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLHNCQUFzQixLQUFLLENBQUMsQ0FBQyxJQUFJLElBQUksc0JBQXNCLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxjQUFjLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsSUFBSSxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxPQUFPLE9BQU8sQ0FBQztRQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxPQUFPLENBQUM7UUFBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sWUFBWSxDQUFDO1FBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxPQUFPLFVBQVUsQ0FBQztRQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLFlBQUksTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBQSxDQUFDLENBQUMsR0FBRyxtQ0FBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFBQyxLQUFLLEdBQUcsQ0FBQztRQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztZQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUE7UUFBQyxDQUFDO1FBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUE7SUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUM7UUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxNQUFNLENBQUMsR0FBRyxRQUFRLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7WUFBRSxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQztRQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQUMsS0FBSyxRQUFRLENBQUM7WUFBQyxLQUFLLHNCQUFzQixDQUFDO1lBQUMsS0FBSyxzQkFBc0IsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFBQyxLQUFLLGNBQWMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQUMsQ0FBQztJQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQSxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFBRSxRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUFDLEtBQUssc0JBQXNCO2dCQUFFLENBQUMsR0FBRyxjQUFjLENBQUM7Z0JBQUMsTUFBTTtZQUFDLEtBQUssc0JBQXNCO2dCQUFFLENBQUMsR0FBRyxjQUFjLENBQUM7Z0JBQUMsTUFBTTtZQUFDLEtBQUssY0FBYyxDQUFDLENBQUMsQ0FBQztnQkFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUFDLElBQUkscUJBQXFCLEtBQUssQ0FBQyxDQUFDLElBQUk7b0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO2dCQUFDLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUM7Z0JBQUMsTUFBSztZQUFDLENBQUM7WUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFBO1FBQUMsQ0FBQyxDQUFBLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQUMsS0FBSyxHQUFHLENBQUM7UUFBQyxLQUFLLEdBQUc7WUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxjQUFjLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQUMsSUFBSSxxQkFBcUIsS0FBSyxDQUFDLENBQUMsSUFBSTtvQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7Z0JBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUE7WUFBQyxDQUFDO2lCQUFNLENBQUM7Z0JBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQUMsS0FBSyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFBRSxNQUFNLEtBQUssQ0FBQyxJQUFJLFFBQVEsS0FBSyxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtZQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQUMsTUFBTTtRQUFDLEtBQUssR0FBRztZQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLHNCQUFzQixDQUFDLENBQUM7WUFBQyxNQUFNO1FBQUMsS0FBSyxHQUFHO1lBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztZQUFDLE1BQU07UUFBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLEVBQUUsQ0FBQztJQUFDLEtBQUssS0FBSyxDQUFDLENBQUM7SUFBQyxLQUFLLEdBQUcsQ0FBQztJQUFDLEtBQUssSUFBSSxDQUFDO0lBQUMsS0FBSyxJQUFJLENBQUM7SUFBQyxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO0FBQUMsQ0FBQyxDQUFDLENBQUM7QUFBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxtRkFBbUYsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUFDLE1BQU0sRUFBRTtJQUFHLGdCQUFnQixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQUMsSUFBSSxRQUFRLElBQUksT0FBTyxDQUFDO1lBQUUsTUFBTSxTQUFTLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQTtJQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBQSxJQUFJLENBQUMsSUFBSSxtQ0FBSSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUM7UUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFBQyxJQUFJLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUFDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLO2dCQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7UUFBQyxDQUFDO1FBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFBO0lBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksT0FBTyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQSxDQUFDLENBQUM7SUFBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFBLENBQUMsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDLElBQUksT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUFDLEtBQUssWUFBWSxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFBQyxLQUFLLGFBQWEsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUFDLEtBQUssTUFBTSxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUFDLEtBQUssZUFBZSxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUFDLEtBQUssY0FBYyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUFDLEtBQUssY0FBYyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQTtJQUFDLENBQUMsQ0FBQyxDQUFDO0lBQUMsQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUFDLE1BQUs7WUFBQyxDQUFDO1lBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUFDLENBQUM7UUFBQyxTQUFVLENBQUM7WUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDO2dCQUFFLE1BQU07WUFBQyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQUMsQ0FBQztRQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsUUFBUSxDQUFBO0lBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7UUFBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsUUFBUSxDQUFBO0lBQUMsQ0FBQyxDQUFDLE9BQU8sTUFBTSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFBLENBQUMsQ0FBQztJQUFDLENBQUMsY0FBYyxLQUFLLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFBQyxJQUFJLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUE7SUFBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFBLENBQUMsQ0FBQztJQUFDLENBQUMsZUFBZSxLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLE9BQU8sSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUE7SUFBQyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUEsQ0FBQyxDQUFDO0lBQUMsQ0FBQyxhQUFhLEtBQUssS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFBQyxLQUFLLEdBQUcsQ0FBQztRQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBQUMsS0FBSyxHQUFHLENBQUM7UUFBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7UUFBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUM7UUFBQyxLQUFLLEdBQUcsQ0FBQztRQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUFDLEtBQUssR0FBRyxDQUFDO1FBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUE7SUFBQyxDQUFDLENBQUMsQ0FBQztJQUFDLENBQUMsbUJBQW1CLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQTtJQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sTUFBTSxDQUFDO1FBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUM7UUFBQyxLQUFLLEdBQUcsQ0FBQztRQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBQUMsS0FBSyxHQUFHLENBQUM7UUFBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDO1FBQUMsS0FBSyxHQUFHLENBQUM7UUFBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztZQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFBQyxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO2dCQUFFLE9BQU8sSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUE7UUFBQyxDQUFDO1FBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO0lBQUMsQ0FBQyxDQUFDLENBQUM7SUFBQyxDQUFDLGlCQUFpQixLQUFLLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7O1FBQU0sT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUFDLE9BQU8sSUFBSSxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO2dCQUFFLE1BQU07WUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDO2dCQUFFLE1BQU07WUFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFBQyxDQUFDO1FBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQTtJQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFBLENBQUMsQ0FBQztJQUFDLENBQUMsc0JBQXNCLEtBQUssSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBVSxDQUFDO1FBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztZQUFFLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFBTSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUc7WUFBRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUFNLElBQUksR0FBRyxLQUFLLENBQUM7WUFBRSxNQUFLO0lBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLENBQUMsZ0JBQWdCLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFBQyxLQUFLLEdBQUc7Z0JBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFBQyxNQUFNO1lBQUMsS0FBSyxJQUFJO2dCQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFBQyxNQUFNO1lBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztvQkFBRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQztvQkFBRSxNQUFLO1lBQUMsQ0FBQztZQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQUMsQ0FBQyxDQUFBLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQUMsR0FBRyxDQUFDO1lBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBQUUsTUFBTTtZQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFO1FBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztnQkFBRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7WUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUE7UUFBQyxDQUFDO0lBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQztZQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUFDLENBQUM7U0FBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWU7UUFBRSxTQUFVLENBQUM7WUFBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUFDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUFFLE1BQU07WUFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQUMsQ0FBQyxDQUFDLE9BQU8sTUFBTSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFBLENBQUMsQ0FBQztJQUFDLENBQUMsZ0JBQWdCLEtBQUssTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUFFLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQUUsTUFBTTtZQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7UUFBQyxDQUFDO2FBQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFBRSxNQUFNO1lBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDO29CQUFFLE1BQU07Z0JBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtZQUFDLENBQUM7UUFBQyxDQUFDO2FBQU0sQ0FBQztZQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUFFLE1BQU07WUFBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLENBQUMsY0FBYyxLQUFLLFFBQVEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUFDLEtBQUssR0FBRyxDQUFDO1FBQUMsS0FBSyxHQUFHLENBQUM7UUFBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUE7UUFBQyxDQUFDO0lBQUMsQ0FBQyxDQUFBLE9BQU8sQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLENBQUMsT0FBTyxLQUFLLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztZQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFBQyxDQUFDLENBQUMsQ0FBQztRQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQUMsT0FBTyxDQUFDO1lBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUFNLENBQUM7Z0JBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFBRSxNQUFNO2dCQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtZQUFDLENBQUM7UUFBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFBQyxDQUFDLENBQUMsQ0FBQztJQUFDLENBQUMsV0FBVyxLQUFLLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFBQyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztDQUFFO0FBQUMsTUFBTSxFQUFFO0lBQUcsZ0JBQWdCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO1FBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7SUFBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUEsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0NBQUU7QUFBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDO1FBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0FBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztJQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQUMsS0FBSyxPQUFPLENBQUM7UUFBQyxLQUFLLFNBQVMsQ0FBQztRQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsTUFBTTtRQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQUMsQ0FBQyxDQUFBLE9BQU8sQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0FBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxhQUFELENBQUMsdUJBQUQsQ0FBQyxDQUFFLElBQUksRUFBRSxDQUFDO0lBQUMsS0FBSyxPQUFPLENBQUM7SUFBQyxLQUFLLFFBQVEsQ0FBQztJQUFDLEtBQUssc0JBQXNCLENBQUM7SUFBQyxLQUFLLHNCQUFzQixDQUFDO0lBQUMsS0FBSyxpQkFBaUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO0FBQUMsQ0FBQyxDQUFDLENBQUM7QUFBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFlBQUksUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFBQyxLQUFLLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUFDLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztRQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFBQyxPQUFPLE1BQUEsQ0FBQyxDQUFDLEdBQUcsbUNBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQTtJQUFDLENBQUM7SUFBQyxLQUFLLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtBQUFDLENBQUMsQ0FBQyxDQUFDO0FBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxZQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNO0lBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQztJQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQUMsS0FBSyxXQUFXLENBQUM7UUFBQyxLQUFLLGtCQUFrQixDQUFDO1FBQUMsS0FBSyxlQUFlLENBQUM7UUFBQyxLQUFLLGNBQWMsQ0FBQztRQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUE7SUFBQyxDQUFDLENBQUEsT0FBTyxPQUFPLE1BQUssTUFBQSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsMENBQUUsSUFBSSxDQUFBO0lBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUMsQ0FBQztBQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLGdCQUFnQixLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSTtJQUFFLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUs7UUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBLENBQUMsQ0FBQztBQUFDLE1BQU0sRUFBRTtJQUFHLFlBQVksQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVE7UUFBRSxPQUFPLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUFFLElBQUksUUFBUSxLQUFLLENBQUM7WUFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7YUFBTSxDQUFDO1lBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQUMsS0FBSyxTQUFTO29CQUFFLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUFDLE1BQU07Z0JBQUMsS0FBSyxPQUFPO29CQUFFLElBQUksQ0FBQyxTQUFTLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUFDLE1BQU07Z0JBQUMsS0FBSyxrQkFBa0IsQ0FBQztnQkFBQyxLQUFLLGVBQWUsQ0FBQztnQkFBQyxLQUFLLGNBQWM7b0JBQUUsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUFDLE1BQU07Z0JBQUMsS0FBSyxVQUFVLENBQUM7Z0JBQUMsS0FBSyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU87Z0JBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQTtZQUFDLENBQUM7WUFBQSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUE7UUFBQyxDQUFDO1NBQU0sQ0FBQztRQUFDLE1BQU0sQ0FBQyxHQUFHLHFCQUFxQixDQUFDLEVBQUUsQ0FBQztRQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFBO0lBQUMsQ0FBQyxDQUFDLENBQUM7SUFBQyxDQUFDLEdBQUcsS0FBSyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7UUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUEsQ0FBQyxDQUFDO0lBQUMsSUFBSSxXQUFXLEtBQUssT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUEsQ0FBQyxDQUFDO0lBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLFNBQVMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFBQyxLQUFLLFVBQVUsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUFDLEtBQUssT0FBTyxDQUFDO1lBQUMsS0FBSyxRQUFRLENBQUM7WUFBQyxLQUFLLHNCQUFzQixDQUFDO1lBQUMsS0FBSyxzQkFBc0IsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUFDLEtBQUssY0FBYyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQUMsS0FBSyxXQUFXLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFBQyxLQUFLLFdBQVcsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUFDLEtBQUssaUJBQWlCLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUFDLENBQUM7UUFBQSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUE7SUFBQyxDQUFDO1NBQU0sQ0FBQztRQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7SUFBQyxDQUFDLENBQUMsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLGFBQUQsQ0FBQyxjQUFELENBQUMsR0FBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQUUsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1lBQUUsTUFBTSxDQUFDLENBQUM7YUFBTSxDQUFDO1lBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUFDLFFBQVEsY0FBYyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLFVBQVUsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxpQkFBaUIsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQUMsS0FBSyxVQUFVO29CQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO29CQUFDLE1BQU07Z0JBQUMsS0FBSyxjQUFjO29CQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUFDLE1BQU07Z0JBQUMsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDO29CQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQUMsSUFBSSxDQUFDLENBQUMsS0FBSzt3QkFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHO3dCQUFFLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO29CQUFDLE1BQUs7Z0JBQUMsQ0FBQztnQkFBQyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7b0JBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO29CQUFDLE1BQUs7Z0JBQUMsQ0FBQztnQkFBQyxLQUFLLGlCQUFpQixDQUFDLENBQUMsQ0FBQztvQkFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7Z0JBQUMsQ0FBQztnQkFBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUFDLENBQUM7WUFBQSxJQUFJLENBQUMsQ0FBQyxVQUFVLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxXQUFXLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxXQUFXLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxXQUFXLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxXQUFXLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQUMsQ0FBQztRQUFDLENBQUM7U0FBTSxDQUFDO1FBQUMsTUFBTSxDQUFDLEdBQUcsNkJBQTZCLENBQUM7UUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQTtJQUFDLENBQUMsQ0FBQyxDQUFDO0lBQUMsQ0FBQyxNQUFNLEtBQUssUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFBQyxLQUFLLGdCQUFnQixDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQUMsS0FBSyxpQkFBaUIsQ0FBQztRQUFDLEtBQUssT0FBTyxDQUFDO1FBQUMsS0FBSyxTQUFTLENBQUM7UUFBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQUMsS0FBSyxVQUFVLENBQUM7UUFBQyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFBQyxNQUFNLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQUMsT0FBTyxXQUFXLEtBQUssSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUFDLENBQUM7SUFBQyxDQUFDLENBQUEsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLGNBQWMsSUFBSSxDQUFDLElBQUksdUJBQXVCLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQSxDQUFDLENBQUM7SUFBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsS0FBSztRQUFFLE9BQU8sS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQUMsS0FBSyxXQUFXLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFBQyxLQUFLLFFBQVEsQ0FBQztRQUFDLEtBQUssS0FBSyxDQUFDO1FBQUMsS0FBSyxPQUFPLENBQUM7UUFBQyxLQUFLLFNBQVMsQ0FBQztRQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUFDLENBQUMsQ0FBQSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLGNBQWMsSUFBSSxDQUFDLElBQUkseUJBQXlCLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQSxDQUFDLENBQUM7SUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksSUFBSSxlQUFlLEtBQUssSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1FBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFBQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQUMsQ0FBQzs7UUFBTSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUFDLEtBQUssT0FBTyxDQUFDO1FBQUMsS0FBSyxTQUFTLENBQUM7UUFBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFBQyxLQUFLLFFBQVE7WUFBRSxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztvQkFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7WUFBQyxDQUFDO1lBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQUMsTUFBTTtRQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUE7SUFBQyxDQUFDLENBQUMsQ0FBQztJQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFBQyxLQUFLLFNBQVM7WUFBRSxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFBQyxTQUFTLE1BQUssQ0FBQyxhQUFELENBQUMsdUJBQUQsQ0FBQyxDQUFFLElBQUksQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQUQsQ0FBQyx1QkFBRCxDQUFDLENBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1lBQUMsQ0FBQzs7Z0JBQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFBQyxPQUFPO1FBQUMsS0FBSyxPQUFPLENBQUM7UUFBQyxLQUFLLFNBQVM7WUFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLO2dCQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztpQkFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHO2dCQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztpQkFBTSxDQUFDO2dCQUFDLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7b0JBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBQSxDQUFDLGFBQUQsQ0FBQyx1QkFBRCxDQUFDLENBQUUsS0FBSywwQ0FBRSxHQUFHLENBQUM7b0JBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQzt3QkFBRSxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQTtnQkFBQyxDQUFDO2dCQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtZQUFDLENBQUM7WUFBQyxPQUFNO0lBQUMsQ0FBQyxDQUFBLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxjQUFjLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQztRQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7WUFBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7WUFBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUFDLEtBQUssU0FBUzt3QkFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUFDLE1BQU07b0JBQUMsS0FBSyxPQUFPLENBQUMsQ0FBQyxNQUFNO29CQUFDLEtBQUssU0FBUzt3QkFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO3dCQUFDLE1BQU07b0JBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUE7Z0JBQUMsQ0FBQztZQUFDLENBQUM7WUFBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQUMsQ0FBQztRQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQUMsS0FBSyxRQUFRLENBQUM7WUFBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQUMsS0FBSyxrQkFBa0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQUMsS0FBSyxlQUFlO2dCQUFFLElBQUksQ0FBQyxDQUFDLFdBQVc7b0JBQUUsSUFBSSxDQUFDLENBQUMsR0FBRzt3QkFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLOzRCQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7NkJBQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxlQUFlLENBQUM7NEJBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDOzZCQUFNLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUM7NEJBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQzs0QkFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUE7d0JBQUMsQ0FBQzs7NEJBQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO3lCQUFNLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDO3dCQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO3lCQUFNLENBQUM7d0JBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUE7b0JBQUMsQ0FBQzs7b0JBQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQUMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQUMsS0FBSyxPQUFPLENBQUM7WUFBQyxLQUFLLFFBQVEsQ0FBQztZQUFDLEtBQUssc0JBQXNCLENBQUM7WUFBQyxLQUFLLHNCQUFzQixDQUFDLENBQUMsQ0FBQztnQkFBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUFDLENBQUM7WUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztvQkFBQyxJQUFJLFdBQVcsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7d0JBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQzs0QkFBRSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsZ0RBQWdELEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUE7b0JBQUMsQ0FBQzs7d0JBQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUFDLENBQUM7WUFBQyxDQUFDO1FBQUMsQ0FBQztJQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFBLENBQUMsQ0FBQztJQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsWUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFBQyxLQUFLLFNBQVM7WUFBRSxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFBQyxNQUFNLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQUMsU0FBUyxNQUFLLENBQUMsYUFBRCxDQUFDLHVCQUFELENBQUMsQ0FBRSxJQUFJLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFELENBQUMsdUJBQUQsQ0FBQyxDQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQTtZQUFDLENBQUM7O2dCQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUFDLE9BQU87UUFBQyxLQUFLLE9BQU8sQ0FBQztRQUFDLEtBQUssU0FBUztZQUFFLElBQUksQ0FBQyxDQUFDLEtBQUs7Z0JBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lCQUFNLENBQUM7Z0JBQUMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFBLENBQUMsYUFBRCxDQUFDLHVCQUFELENBQUMsQ0FBRSxLQUFLLDBDQUFFLEdBQUcsQ0FBQztvQkFBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO3dCQUFFLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFBO2dCQUFDLENBQUM7Z0JBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1lBQUMsQ0FBQztZQUFDLE9BQU87UUFBQyxLQUFLLFFBQVEsQ0FBQztRQUFDLEtBQUssS0FBSztZQUFFLElBQUksQ0FBQyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNO2dCQUFFLE1BQU07WUFBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQUMsS0FBSyxjQUFjO1lBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxNQUFNO2dCQUFFLE1BQU07WUFBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFBO0lBQUMsQ0FBQyxDQUFBLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUEsQ0FBQyxDQUFDO0lBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLGdCQUFnQixLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1FBQUMsR0FBRyxDQUFDO1lBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxpQkFBaUIsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFDO0lBQUMsQ0FBQztTQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7UUFBQyxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUFDLEtBQUssT0FBTyxDQUFDO1lBQUMsS0FBSyxrQkFBa0IsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFBQyxLQUFLLGVBQWUsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUFDLEtBQUssT0FBTyxDQUFDO1lBQUMsS0FBSyxTQUFTLENBQUM7WUFBQyxLQUFLLFNBQVMsQ0FBQztZQUFDLEtBQUssUUFBUSxDQUFDO1lBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFBQyxLQUFLLE9BQU8sQ0FBQztZQUFDLEtBQUssUUFBUSxDQUFDO1lBQUMsS0FBSyxzQkFBc0IsQ0FBQztZQUFDLEtBQUssc0JBQXNCLENBQUMsQ0FBQyxDQUFDO2dCQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFBQyxDQUFDO1lBQUMsS0FBSyxjQUFjLENBQUM7WUFBQyxLQUFLLGNBQWMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7UUFBQyxDQUFDO1FBQUEsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQUMsQ0FBQztTQUFNLENBQUM7UUFBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQUMsSUFBSSxXQUFXLEtBQUssQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLE1BQU0sSUFBSSxTQUFTLEtBQUssSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUFNLElBQUksZUFBZSxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksaUJBQWlCLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7WUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUFDLENBQUM7O1lBQU0sS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUFDLENBQUMsQ0FBQyxDQUFDO0lBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUE7SUFBQyxDQUFDLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQSxDQUFDLENBQUM7SUFBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQUMsS0FBSyxPQUFPLENBQUM7UUFBQyxLQUFLLFFBQVEsQ0FBQztRQUFDLEtBQUssc0JBQXNCLENBQUM7UUFBQyxLQUFLLHNCQUFzQixDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUFDLEtBQUsscUJBQXFCLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQUMsS0FBSyxnQkFBZ0IsQ0FBQztRQUFDLEtBQUssZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQUMsS0FBSyxjQUFjLENBQUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUFDLEtBQUssa0JBQWtCLENBQUMsQ0FBQyxDQUFDO1lBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUE7UUFBQyxDQUFDO1FBQUMsS0FBSyxlQUFlLENBQUMsQ0FBQyxDQUFDO1lBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQTtRQUFDLENBQUM7SUFBQyxDQUFDLENBQUEsT0FBTyxJQUFJLENBQUEsQ0FBQyxDQUFDO0lBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxPQUFPLFNBQVMsS0FBSyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxLQUFLLENBQUMsQ0FBQyxJQUFJLElBQUksT0FBTyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLFVBQVUsS0FBSyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFNBQVMsS0FBSyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFBQyxLQUFLLE9BQU8sQ0FBQztRQUFDLEtBQUssV0FBVyxDQUFDO1FBQUMsS0FBSyxTQUFTLENBQUM7UUFBQyxLQUFLLGNBQWMsQ0FBQztRQUFDLEtBQUssY0FBYyxDQUFDO1FBQUMsS0FBSyxlQUFlO1lBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUFDLE1BQU07UUFBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsU0FBUyxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQTtJQUFDLENBQUMsQ0FBQyxDQUFDO0NBQUU7QUFBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFDLEVBQUUsQ0FBQSxDQUFDLENBQUM7QUFBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLGFBQUQsQ0FBQyx1QkFBRCxDQUFDLENBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQUUsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQSxDQUFDLENBQUM7QUFBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLGFBQUQsQ0FBQyx1QkFBRCxDQUFDLENBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7UUFBQyxJQUFJLFFBQVEsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGVBQWUsRUFBRSx5RUFBeUUsQ0FBQyxDQUFDLENBQUM7WUFBQyxNQUFLO1FBQUMsQ0FBQztJQUFDLENBQUM7O1FBQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQyxDQUFDO0FBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksUUFBUSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQUMsSUFBSSxRQUFRLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRO1FBQUUsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUE7QUFBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUM7QUFBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLFVBQVUsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUM7SUFBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUE7QUFBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsQ0FBQyxFQUFFLEdBQUcsTUFBQSxDQUFDLGFBQUQsQ0FBQyxjQUFELENBQUMsR0FBSSxDQUFDLG1DQUFJLEVBQUUsQ0FBQztJQUFDLElBQUksQ0FBQyxDQUFDO1FBQUUsT0FBTTtBQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFDO0FBQUMsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBRzl4dkgsNGRBQTRkO0FBRy9jLFFBQUEsS0FBSyxHQUFHLEVBQWdDLENBQUM7QUFDekMsUUFBQSxTQUFTLEdBQUcsRUFBZ0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1ub2NoZWNrXG5cbi8qKlxuICogQnVuZGxlZCBieSBqc0RlbGl2ciB1c2luZyBSb2xsdXAgdjIuNzkuMiBhbmQgVGVyc2VyIHY1LjM5LjAuXG4gKiBPcmlnaW5hbCBmaWxlOiAvbnBtL3lhbWxAMi44LjEvYnJvd3Nlci9pbmRleC5qc1xuICpcbiAqIERvIE5PVCB1c2UgU1JJIHdpdGggZHluYW1pY2FsbHkgZ2VuZXJhdGVkIGZpbGVzISBNb3JlIGluZm9ybWF0aW9uOiBodHRwczovL3d3dy5qc2RlbGl2ci5jb20vdXNpbmctc3JpLXdpdGgtZHluYW1pYy1maWxlc1xuICovXG5jb25zdCBlID0gU3ltYm9sLmZvcihcInlhbWwuYWxpYXNcIiksIHQgPSBTeW1ib2wuZm9yKFwieWFtbC5kb2N1bWVudFwiKSwgbiA9IFN5bWJvbC5mb3IoXCJ5YW1sLm1hcFwiKSwgcyA9IFN5bWJvbC5mb3IoXCJ5YW1sLnBhaXJcIiksIGkgPSBTeW1ib2wuZm9yKFwieWFtbC5zY2FsYXJcIiksIG8gPSBTeW1ib2wuZm9yKFwieWFtbC5zZXFcIiksIHIgPSBTeW1ib2wuZm9yKFwieWFtbC5ub2RlLnR5cGVcIiksIGEgPSB0ID0+ICEhdCAmJiBcIm9iamVjdFwiID09IHR5cGVvZiB0ICYmIHRbcl0gPT09IGUsIGMgPSBlID0+ICEhZSAmJiBcIm9iamVjdFwiID09IHR5cGVvZiBlICYmIGVbcl0gPT09IHQsIGwgPSBlID0+ICEhZSAmJiBcIm9iamVjdFwiID09IHR5cGVvZiBlICYmIGVbcl0gPT09IG4sIHUgPSBlID0+ICEhZSAmJiBcIm9iamVjdFwiID09IHR5cGVvZiBlICYmIGVbcl0gPT09IHMsIGYgPSBlID0+ICEhZSAmJiBcIm9iamVjdFwiID09IHR5cGVvZiBlICYmIGVbcl0gPT09IGksIGggPSBlID0+ICEhZSAmJiBcIm9iamVjdFwiID09IHR5cGVvZiBlICYmIGVbcl0gPT09IG87IGZ1bmN0aW9uIGQoZSkgeyBpZiAoZSAmJiBcIm9iamVjdFwiID09IHR5cGVvZiBlKSBzd2l0Y2ggKGVbcl0pIHsgY2FzZSBuOiBjYXNlIG86IHJldHVybiAhMCB9cmV0dXJuICExIH0gZnVuY3Rpb24gcCh0KSB7IGlmICh0ICYmIFwib2JqZWN0XCIgPT0gdHlwZW9mIHQpIHN3aXRjaCAodFtyXSkgeyBjYXNlIGU6IGNhc2UgbjogY2FzZSBpOiBjYXNlIG86IHJldHVybiAhMCB9cmV0dXJuICExIH0gY29uc3QgbSA9IGUgPT4gKGYoZSkgfHwgZChlKSkgJiYgISFlLmFuY2hvciwgeSA9IFN5bWJvbChcImJyZWFrIHZpc2l0XCIpLCBnID0gU3ltYm9sKFwic2tpcCBjaGlsZHJlblwiKSwgYiA9IFN5bWJvbChcInJlbW92ZSBub2RlXCIpOyBmdW5jdGlvbiBrKGUsIHQpIHsgY29uc3QgbiA9IEUodCk7IGlmIChjKGUpKSB7IHcobnVsbCwgZS5jb250ZW50cywgbiwgT2JqZWN0LmZyZWV6ZShbZV0pKSA9PT0gYiAmJiAoZS5jb250ZW50cyA9IG51bGwpIH0gZWxzZSB3KG51bGwsIGUsIG4sIE9iamVjdC5mcmVlemUoW10pKSB9IGZ1bmN0aW9uIHcoZSwgdCwgbiwgcykgeyBjb25zdCBpID0gTihlLCB0LCBuLCBzKTsgaWYgKHAoaSkgfHwgdShpKSkgcmV0dXJuIE8oZSwgcywgaSksIHcoZSwgaSwgbiwgcyk7IGlmIChcInN5bWJvbFwiICE9IHR5cGVvZiBpKSBpZiAoZCh0KSkgeyBzID0gT2JqZWN0LmZyZWV6ZShzLmNvbmNhdCh0KSk7IGZvciAobGV0IGUgPSAwOyBlIDwgdC5pdGVtcy5sZW5ndGg7ICsrZSkgeyBjb25zdCBpID0gdyhlLCB0Lml0ZW1zW2VdLCBuLCBzKTsgaWYgKFwibnVtYmVyXCIgPT0gdHlwZW9mIGkpIGUgPSBpIC0gMTsgZWxzZSB7IGlmIChpID09PSB5KSByZXR1cm4geTsgaSA9PT0gYiAmJiAodC5pdGVtcy5zcGxpY2UoZSwgMSksIGUgLT0gMSkgfSB9IH0gZWxzZSBpZiAodSh0KSkgeyBzID0gT2JqZWN0LmZyZWV6ZShzLmNvbmNhdCh0KSk7IGNvbnN0IGUgPSB3KFwia2V5XCIsIHQua2V5LCBuLCBzKTsgaWYgKGUgPT09IHkpIHJldHVybiB5OyBlID09PSBiICYmICh0LmtleSA9IG51bGwpOyBjb25zdCBpID0gdyhcInZhbHVlXCIsIHQudmFsdWUsIG4sIHMpOyBpZiAoaSA9PT0geSkgcmV0dXJuIHk7IGkgPT09IGIgJiYgKHQudmFsdWUgPSBudWxsKSB9IHJldHVybiBpIH0gYXN5bmMgZnVuY3Rpb24gdihlLCB0KSB7IGNvbnN0IG4gPSBFKHQpOyBpZiAoYyhlKSkgeyBhd2FpdCBTKG51bGwsIGUuY29udGVudHMsIG4sIE9iamVjdC5mcmVlemUoW2VdKSkgPT09IGIgJiYgKGUuY29udGVudHMgPSBudWxsKSB9IGVsc2UgYXdhaXQgUyhudWxsLCBlLCBuLCBPYmplY3QuZnJlZXplKFtdKSkgfSBhc3luYyBmdW5jdGlvbiBTKGUsIHQsIG4sIHMpIHsgY29uc3QgaSA9IGF3YWl0IE4oZSwgdCwgbiwgcyk7IGlmIChwKGkpIHx8IHUoaSkpIHJldHVybiBPKGUsIHMsIGkpLCBTKGUsIGksIG4sIHMpOyBpZiAoXCJzeW1ib2xcIiAhPSB0eXBlb2YgaSkgaWYgKGQodCkpIHsgcyA9IE9iamVjdC5mcmVlemUocy5jb25jYXQodCkpOyBmb3IgKGxldCBlID0gMDsgZSA8IHQuaXRlbXMubGVuZ3RoOyArK2UpIHsgY29uc3QgaSA9IGF3YWl0IFMoZSwgdC5pdGVtc1tlXSwgbiwgcyk7IGlmIChcIm51bWJlclwiID09IHR5cGVvZiBpKSBlID0gaSAtIDE7IGVsc2UgeyBpZiAoaSA9PT0geSkgcmV0dXJuIHk7IGkgPT09IGIgJiYgKHQuaXRlbXMuc3BsaWNlKGUsIDEpLCBlIC09IDEpIH0gfSB9IGVsc2UgaWYgKHUodCkpIHsgcyA9IE9iamVjdC5mcmVlemUocy5jb25jYXQodCkpOyBjb25zdCBlID0gYXdhaXQgUyhcImtleVwiLCB0LmtleSwgbiwgcyk7IGlmIChlID09PSB5KSByZXR1cm4geTsgZSA9PT0gYiAmJiAodC5rZXkgPSBudWxsKTsgY29uc3QgaSA9IGF3YWl0IFMoXCJ2YWx1ZVwiLCB0LnZhbHVlLCBuLCBzKTsgaWYgKGkgPT09IHkpIHJldHVybiB5OyBpID09PSBiICYmICh0LnZhbHVlID0gbnVsbCkgfSByZXR1cm4gaSB9IGZ1bmN0aW9uIEUoZSkgeyByZXR1cm4gXCJvYmplY3RcIiA9PSB0eXBlb2YgZSAmJiAoZS5Db2xsZWN0aW9uIHx8IGUuTm9kZSB8fCBlLlZhbHVlKSA/IE9iamVjdC5hc3NpZ24oeyBBbGlhczogZS5Ob2RlLCBNYXA6IGUuTm9kZSwgU2NhbGFyOiBlLk5vZGUsIFNlcTogZS5Ob2RlIH0sIGUuVmFsdWUgJiYgeyBNYXA6IGUuVmFsdWUsIFNjYWxhcjogZS5WYWx1ZSwgU2VxOiBlLlZhbHVlIH0sIGUuQ29sbGVjdGlvbiAmJiB7IE1hcDogZS5Db2xsZWN0aW9uLCBTZXE6IGUuQ29sbGVjdGlvbiB9LCBlKSA6IGUgfSBmdW5jdGlvbiBOKGUsIHQsIG4sIHMpIHsgcmV0dXJuIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgbiA/IG4oZSwgdCwgcykgOiBsKHQpID8gbi5NYXA/LihlLCB0LCBzKSA6IGgodCkgPyBuLlNlcT8uKGUsIHQsIHMpIDogdSh0KSA/IG4uUGFpcj8uKGUsIHQsIHMpIDogZih0KSA/IG4uU2NhbGFyPy4oZSwgdCwgcykgOiBhKHQpID8gbi5BbGlhcz8uKGUsIHQsIHMpIDogdm9pZCAwIH0gZnVuY3Rpb24gTyhlLCB0LCBuKSB7IGNvbnN0IHMgPSB0W3QubGVuZ3RoIC0gMV07IGlmIChkKHMpKSBzLml0ZW1zW2VdID0gbjsgZWxzZSBpZiAodShzKSkgXCJrZXlcIiA9PT0gZSA/IHMua2V5ID0gbiA6IHMudmFsdWUgPSBuOyBlbHNlIHsgaWYgKCFjKHMpKSB7IGNvbnN0IGUgPSBhKHMpID8gXCJhbGlhc1wiIDogXCJzY2FsYXJcIjsgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcmVwbGFjZSBub2RlIHdpdGggJHtlfSBwYXJlbnRgKSB9IHMuY29udGVudHMgPSBuIH0gfSBrLkJSRUFLID0geSwgay5TS0lQID0gZywgay5SRU1PVkUgPSBiLCB2LkJSRUFLID0geSwgdi5TS0lQID0gZywgdi5SRU1PVkUgPSBiOyBjb25zdCBBID0geyBcIiFcIjogXCIlMjFcIiwgXCIsXCI6IFwiJTJDXCIsIFwiW1wiOiBcIiU1QlwiLCBcIl1cIjogXCIlNURcIiwgXCJ7XCI6IFwiJTdCXCIsIFwifVwiOiBcIiU3RFwiIH07IGNsYXNzIEkgeyBjb25zdHJ1Y3RvcihlLCB0KSB7IHRoaXMuZG9jU3RhcnQgPSBudWxsLCB0aGlzLmRvY0VuZCA9ICExLCB0aGlzLnlhbWwgPSBPYmplY3QuYXNzaWduKHt9LCBJLmRlZmF1bHRZYW1sLCBlKSwgdGhpcy50YWdzID0gT2JqZWN0LmFzc2lnbih7fSwgSS5kZWZhdWx0VGFncywgdCkgfSBjbG9uZSgpIHsgY29uc3QgZSA9IG5ldyBJKHRoaXMueWFtbCwgdGhpcy50YWdzKTsgcmV0dXJuIGUuZG9jU3RhcnQgPSB0aGlzLmRvY1N0YXJ0LCBlIH0gYXREb2N1bWVudCgpIHsgY29uc3QgZSA9IG5ldyBJKHRoaXMueWFtbCwgdGhpcy50YWdzKTsgc3dpdGNoICh0aGlzLnlhbWwudmVyc2lvbikgeyBjYXNlIFwiMS4xXCI6IHRoaXMuYXROZXh0RG9jdW1lbnQgPSAhMDsgYnJlYWs7IGNhc2UgXCIxLjJcIjogdGhpcy5hdE5leHREb2N1bWVudCA9ICExLCB0aGlzLnlhbWwgPSB7IGV4cGxpY2l0OiBJLmRlZmF1bHRZYW1sLmV4cGxpY2l0LCB2ZXJzaW9uOiBcIjEuMlwiIH0sIHRoaXMudGFncyA9IE9iamVjdC5hc3NpZ24oe30sIEkuZGVmYXVsdFRhZ3MpIH1yZXR1cm4gZSB9IGFkZChlLCB0KSB7IHRoaXMuYXROZXh0RG9jdW1lbnQgJiYgKHRoaXMueWFtbCA9IHsgZXhwbGljaXQ6IEkuZGVmYXVsdFlhbWwuZXhwbGljaXQsIHZlcnNpb246IFwiMS4xXCIgfSwgdGhpcy50YWdzID0gT2JqZWN0LmFzc2lnbih7fSwgSS5kZWZhdWx0VGFncyksIHRoaXMuYXROZXh0RG9jdW1lbnQgPSAhMSk7IGNvbnN0IG4gPSBlLnRyaW0oKS5zcGxpdCgvWyBcXHRdKy8pLCBzID0gbi5zaGlmdCgpOyBzd2l0Y2ggKHMpIHsgY2FzZSBcIiVUQUdcIjogeyBpZiAoMiAhPT0gbi5sZW5ndGggJiYgKHQoMCwgXCIlVEFHIGRpcmVjdGl2ZSBzaG91bGQgY29udGFpbiBleGFjdGx5IHR3byBwYXJ0c1wiKSwgbi5sZW5ndGggPCAyKSkgcmV0dXJuICExOyBjb25zdCBbZSwgc10gPSBuOyByZXR1cm4gdGhpcy50YWdzW2VdID0gcywgITAgfSBjYXNlIFwiJVlBTUxcIjogeyBpZiAodGhpcy55YW1sLmV4cGxpY2l0ID0gITAsIDEgIT09IG4ubGVuZ3RoKSByZXR1cm4gdCgwLCBcIiVZQU1MIGRpcmVjdGl2ZSBzaG91bGQgY29udGFpbiBleGFjdGx5IG9uZSBwYXJ0XCIpLCAhMTsgY29uc3QgW2VdID0gbjsgaWYgKFwiMS4xXCIgPT09IGUgfHwgXCIxLjJcIiA9PT0gZSkgcmV0dXJuIHRoaXMueWFtbC52ZXJzaW9uID0gZSwgITA7IHJldHVybiB0KDYsIGBVbnN1cHBvcnRlZCBZQU1MIHZlcnNpb24gJHtlfWAsIC9eXFxkK1xcLlxcZCskLy50ZXN0KGUpKSwgITEgfSBkZWZhdWx0OiByZXR1cm4gdCgwLCBgVW5rbm93biBkaXJlY3RpdmUgJHtzfWAsICEwKSwgITEgfSB9IHRhZ05hbWUoZSwgdCkgeyBpZiAoXCIhXCIgPT09IGUpIHJldHVybiBcIiFcIjsgaWYgKFwiIVwiICE9PSBlWzBdKSByZXR1cm4gdChgTm90IGEgdmFsaWQgdGFnOiAke2V9YCksIG51bGw7IGlmIChcIjxcIiA9PT0gZVsxXSkgeyBjb25zdCBuID0gZS5zbGljZSgyLCAtMSk7IHJldHVybiBcIiFcIiA9PT0gbiB8fCBcIiEhXCIgPT09IG4gPyAodChgVmVyYmF0aW0gdGFncyBhcmVuJ3QgcmVzb2x2ZWQsIHNvICR7ZX0gaXMgaW52YWxpZC5gKSwgbnVsbCkgOiAoXCI+XCIgIT09IGVbZS5sZW5ndGggLSAxXSAmJiB0KFwiVmVyYmF0aW0gdGFncyBtdXN0IGVuZCB3aXRoIGEgPlwiKSwgbikgfSBjb25zdCBbLCBuLCBzXSA9IGUubWF0Y2goL14oLiohKShbXiFdKikkL3MpOyBzIHx8IHQoYFRoZSAke2V9IHRhZyBoYXMgbm8gc3VmZml4YCk7IGNvbnN0IGkgPSB0aGlzLnRhZ3Nbbl07IGlmIChpKSB0cnkgeyByZXR1cm4gaSArIGRlY29kZVVSSUNvbXBvbmVudChzKSB9IGNhdGNoIChlKSB7IHJldHVybiB0KFN0cmluZyhlKSksIG51bGwgfSByZXR1cm4gXCIhXCIgPT09IG4gPyBlIDogKHQoYENvdWxkIG5vdCByZXNvbHZlIHRhZzogJHtlfWApLCBudWxsKSB9IHRhZ1N0cmluZyhlKSB7IGZvciAoY29uc3QgW3QsIG5dIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMudGFncykpIGlmIChlLnN0YXJ0c1dpdGgobikpIHJldHVybiB0ICsgZS5zdWJzdHJpbmcobi5sZW5ndGgpLnJlcGxhY2UoL1shLFtcXF17fV0vZywgKGUgPT4gQVtlXSkpOyByZXR1cm4gXCIhXCIgPT09IGVbMF0gPyBlIDogYCE8JHtlfT5gIH0gdG9TdHJpbmcoZSkgeyBjb25zdCB0ID0gdGhpcy55YW1sLmV4cGxpY2l0ID8gW2AlWUFNTCAke3RoaXMueWFtbC52ZXJzaW9uIHx8IFwiMS4yXCJ9YF0gOiBbXSwgbiA9IE9iamVjdC5lbnRyaWVzKHRoaXMudGFncyk7IGxldCBzOyBpZiAoZSAmJiBuLmxlbmd0aCA+IDAgJiYgcChlLmNvbnRlbnRzKSkgeyBjb25zdCB0ID0ge307IGsoZS5jb250ZW50cywgKChlLCBuKSA9PiB7IHAobikgJiYgbi50YWcgJiYgKHRbbi50YWddID0gITApIH0pKSwgcyA9IE9iamVjdC5rZXlzKHQpIH0gZWxzZSBzID0gW107IGZvciAoY29uc3QgW2ksIG9dIG9mIG4pIFwiISFcIiA9PT0gaSAmJiBcInRhZzp5YW1sLm9yZywyMDAyOlwiID09PSBvIHx8IGUgJiYgIXMuc29tZSgoZSA9PiBlLnN0YXJ0c1dpdGgobykpKSB8fCB0LnB1c2goYCVUQUcgJHtpfSAke299YCk7IHJldHVybiB0LmpvaW4oXCJcXG5cIikgfSB9IGZ1bmN0aW9uIFQoZSkgeyBpZiAoL1tcXHgwMC1cXHgxOVxccyxbXFxde31dLy50ZXN0KGUpKSB7IGNvbnN0IHQgPSBKU09OLnN0cmluZ2lmeShlKTsgdGhyb3cgbmV3IEVycm9yKGBBbmNob3IgbXVzdCBub3QgY29udGFpbiB3aGl0ZXNwYWNlIG9yIGNvbnRyb2wgY2hhcmFjdGVyczogJHt0fWApIH0gcmV0dXJuICEwIH0gZnVuY3Rpb24gTChlKSB7IGNvbnN0IHQgPSBuZXcgU2V0OyByZXR1cm4gayhlLCB7IFZhbHVlKGUsIG4pIHsgbi5hbmNob3IgJiYgdC5hZGQobi5hbmNob3IpIH0gfSksIHQgfSBmdW5jdGlvbiB4KGUsIHQpIHsgZm9yIChsZXQgbiA9IDE7IDsgKytuKSB7IGNvbnN0IHMgPSBgJHtlfSR7bn1gOyBpZiAoIXQuaGFzKHMpKSByZXR1cm4gcyB9IH0gZnVuY3Rpb24gJChlLCB0LCBuLCBzKSB7IGlmIChzICYmIFwib2JqZWN0XCIgPT0gdHlwZW9mIHMpIGlmIChBcnJheS5pc0FycmF5KHMpKSBmb3IgKGxldCB0ID0gMCwgbiA9IHMubGVuZ3RoOyB0IDwgbjsgKyt0KSB7IGNvbnN0IG4gPSBzW3RdLCBpID0gJChlLCBzLCBTdHJpbmcodCksIG4pOyB2b2lkIDAgPT09IGkgPyBkZWxldGUgc1t0XSA6IGkgIT09IG4gJiYgKHNbdF0gPSBpKSB9IGVsc2UgaWYgKHMgaW5zdGFuY2VvZiBNYXApIGZvciAoY29uc3QgdCBvZiBBcnJheS5mcm9tKHMua2V5cygpKSkgeyBjb25zdCBuID0gcy5nZXQodCksIGkgPSAkKGUsIHMsIHQsIG4pOyB2b2lkIDAgPT09IGkgPyBzLmRlbGV0ZSh0KSA6IGkgIT09IG4gJiYgcy5zZXQodCwgaSkgfSBlbHNlIGlmIChzIGluc3RhbmNlb2YgU2V0KSBmb3IgKGNvbnN0IHQgb2YgQXJyYXkuZnJvbShzKSkgeyBjb25zdCBuID0gJChlLCBzLCB0LCB0KTsgdm9pZCAwID09PSBuID8gcy5kZWxldGUodCkgOiBuICE9PSB0ICYmIChzLmRlbGV0ZSh0KSwgcy5hZGQobikpIH0gZWxzZSBmb3IgKGNvbnN0IFt0LCBuXSBvZiBPYmplY3QuZW50cmllcyhzKSkgeyBjb25zdCBpID0gJChlLCBzLCB0LCBuKTsgdm9pZCAwID09PSBpID8gZGVsZXRlIHNbdF0gOiBpICE9PSBuICYmIChzW3RdID0gaSkgfSByZXR1cm4gZS5jYWxsKHQsIG4sIHMpIH0gZnVuY3Rpb24gQyhlLCB0LCBuKSB7IGlmIChBcnJheS5pc0FycmF5KGUpKSByZXR1cm4gZS5tYXAoKChlLCB0KSA9PiBDKGUsIFN0cmluZyh0KSwgbikpKTsgaWYgKGUgJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBlLnRvSlNPTikgeyBpZiAoIW4gfHwgIW0oZSkpIHJldHVybiBlLnRvSlNPTih0LCBuKTsgY29uc3QgcyA9IHsgYWxpYXNDb3VudDogMCwgY291bnQ6IDEsIHJlczogdm9pZCAwIH07IG4uYW5jaG9ycy5zZXQoZSwgcyksIG4ub25DcmVhdGUgPSBlID0+IHsgcy5yZXMgPSBlLCBkZWxldGUgbi5vbkNyZWF0ZSB9OyBjb25zdCBpID0gZS50b0pTT04odCwgbik7IHJldHVybiBuLm9uQ3JlYXRlICYmIG4ub25DcmVhdGUoaSksIGkgfSByZXR1cm4gXCJiaWdpbnRcIiAhPSB0eXBlb2YgZSB8fCBuPy5rZWVwID8gZSA6IE51bWJlcihlKSB9IEkuZGVmYXVsdFlhbWwgPSB7IGV4cGxpY2l0OiAhMSwgdmVyc2lvbjogXCIxLjJcIiB9LCBJLmRlZmF1bHRUYWdzID0geyBcIiEhXCI6IFwidGFnOnlhbWwub3JnLDIwMDI6XCIgfTsgY2xhc3MgXyB7IGNvbnN0cnVjdG9yKGUpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIHIsIHsgdmFsdWU6IGUgfSkgfSBjbG9uZSgpIHsgY29uc3QgZSA9IE9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0aGlzKSk7IHJldHVybiB0aGlzLnJhbmdlICYmIChlLnJhbmdlID0gdGhpcy5yYW5nZS5zbGljZSgpKSwgZSB9IHRvSlMoZSwgeyBtYXBBc01hcDogdCwgbWF4QWxpYXNDb3VudDogbiwgb25BbmNob3I6IHMsIHJldml2ZXI6IGkgfSA9IHt9KSB7IGlmICghYyhlKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkEgZG9jdW1lbnQgYXJndW1lbnQgaXMgcmVxdWlyZWRcIik7IGNvbnN0IG8gPSB7IGFuY2hvcnM6IG5ldyBNYXAsIGRvYzogZSwga2VlcDogITAsIG1hcEFzTWFwOiAhMCA9PT0gdCwgbWFwS2V5V2FybmVkOiAhMSwgbWF4QWxpYXNDb3VudDogXCJudW1iZXJcIiA9PSB0eXBlb2YgbiA/IG4gOiAxMDAgfSwgciA9IEModGhpcywgXCJcIiwgbyk7IGlmIChcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIHMpIGZvciAoY29uc3QgeyBjb3VudDogZSwgcmVzOiB0IH0gb2Ygby5hbmNob3JzLnZhbHVlcygpKSBzKHQsIGUpOyByZXR1cm4gXCJmdW5jdGlvblwiID09IHR5cGVvZiBpID8gJChpLCB7IFwiXCI6IHIgfSwgXCJcIiwgcikgOiByIH0gfSBjbGFzcyBLIGV4dGVuZHMgXyB7IGNvbnN0cnVjdG9yKHQpIHsgc3VwZXIoZSksIHRoaXMuc291cmNlID0gdCwgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIFwidGFnXCIsIHsgc2V0KCkgeyB0aHJvdyBuZXcgRXJyb3IoXCJBbGlhcyBub2RlcyBjYW5ub3QgaGF2ZSB0YWdzXCIpIH0gfSkgfSByZXNvbHZlKGUsIHQpIHsgbGV0IG4sIHM7IHQ/LmFsaWFzUmVzb2x2ZUNhY2hlID8gbiA9IHQuYWxpYXNSZXNvbHZlQ2FjaGUgOiAobiA9IFtdLCBrKGUsIHsgTm9kZTogKGUsIHQpID0+IHsgKGEodCkgfHwgbSh0KSkgJiYgbi5wdXNoKHQpIH0gfSksIHQgJiYgKHQuYWxpYXNSZXNvbHZlQ2FjaGUgPSBuKSk7IGZvciAoY29uc3QgZSBvZiBuKSB7IGlmIChlID09PSB0aGlzKSBicmVhazsgZS5hbmNob3IgPT09IHRoaXMuc291cmNlICYmIChzID0gZSkgfSByZXR1cm4gcyB9IHRvSlNPTihlLCB0KSB7IGlmICghdCkgcmV0dXJuIHsgc291cmNlOiB0aGlzLnNvdXJjZSB9OyBjb25zdCB7IGFuY2hvcnM6IG4sIGRvYzogcywgbWF4QWxpYXNDb3VudDogaSB9ID0gdCwgbyA9IHRoaXMucmVzb2x2ZShzLCB0KTsgaWYgKCFvKSB7IGNvbnN0IGUgPSBgVW5yZXNvbHZlZCBhbGlhcyAodGhlIGFuY2hvciBtdXN0IGJlIHNldCBiZWZvcmUgdGhlIGFsaWFzKTogJHt0aGlzLnNvdXJjZX1gOyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoZSkgfSBsZXQgciA9IG4uZ2V0KG8pOyBpZiAociB8fCAoQyhvLCBudWxsLCB0KSwgciA9IG4uZ2V0KG8pKSwgIXIgfHwgdm9pZCAwID09PSByLnJlcykgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJUaGlzIHNob3VsZCBub3QgaGFwcGVuOiBBbGlhcyBhbmNob3Igd2FzIG5vdCByZXNvbHZlZD9cIikgfSBpZiAoaSA+PSAwICYmIChyLmNvdW50ICs9IDEsIDAgPT09IHIuYWxpYXNDb3VudCAmJiAoci5hbGlhc0NvdW50ID0gQihzLCBvLCBuKSksIHIuY291bnQgKiByLmFsaWFzQ291bnQgPiBpKSkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJFeGNlc3NpdmUgYWxpYXMgY291bnQgaW5kaWNhdGVzIGEgcmVzb3VyY2UgZXhoYXVzdGlvbiBhdHRhY2tcIikgfSByZXR1cm4gci5yZXMgfSB0b1N0cmluZyhlLCB0LCBuKSB7IGNvbnN0IHMgPSBgKiR7dGhpcy5zb3VyY2V9YDsgaWYgKGUpIHsgaWYgKFQodGhpcy5zb3VyY2UpLCBlLm9wdGlvbnMudmVyaWZ5QWxpYXNPcmRlciAmJiAhZS5hbmNob3JzLmhhcyh0aGlzLnNvdXJjZSkpIHsgY29uc3QgZSA9IGBVbnJlc29sdmVkIGFsaWFzICh0aGUgYW5jaG9yIG11c3QgYmUgc2V0IGJlZm9yZSB0aGUgYWxpYXMpOiAke3RoaXMuc291cmNlfWA7IHRocm93IG5ldyBFcnJvcihlKSB9IGlmIChlLmltcGxpY2l0S2V5KSByZXR1cm4gYCR7c30gYCB9IHJldHVybiBzIH0gfSBmdW5jdGlvbiBCKGUsIHQsIG4pIHsgaWYgKGEodCkpIHsgY29uc3QgcyA9IHQucmVzb2x2ZShlKSwgaSA9IG4gJiYgcyAmJiBuLmdldChzKTsgcmV0dXJuIGkgPyBpLmNvdW50ICogaS5hbGlhc0NvdW50IDogMCB9IGlmIChkKHQpKSB7IGxldCBzID0gMDsgZm9yIChjb25zdCBpIG9mIHQuaXRlbXMpIHsgY29uc3QgdCA9IEIoZSwgaSwgbik7IHQgPiBzICYmIChzID0gdCkgfSByZXR1cm4gcyB9IGlmICh1KHQpKSB7IGNvbnN0IHMgPSBCKGUsIHQua2V5LCBuKSwgaSA9IEIoZSwgdC52YWx1ZSwgbik7IHJldHVybiBNYXRoLm1heChzLCBpKSB9IHJldHVybiAxIH0gY29uc3QgaiA9IGUgPT4gIWUgfHwgXCJmdW5jdGlvblwiICE9IHR5cGVvZiBlICYmIFwib2JqZWN0XCIgIT0gdHlwZW9mIGU7IGNsYXNzIE0gZXh0ZW5kcyBfIHsgY29uc3RydWN0b3IoZSkgeyBzdXBlcihpKSwgdGhpcy52YWx1ZSA9IGUgfSB0b0pTT04oZSwgdCkgeyByZXR1cm4gdD8ua2VlcCA/IHRoaXMudmFsdWUgOiBDKHRoaXMudmFsdWUsIGUsIHQpIH0gdG9TdHJpbmcoKSB7IHJldHVybiBTdHJpbmcodGhpcy52YWx1ZSkgfSB9IE0uQkxPQ0tfRk9MREVEID0gXCJCTE9DS19GT0xERURcIiwgTS5CTE9DS19MSVRFUkFMID0gXCJCTE9DS19MSVRFUkFMXCIsIE0uUExBSU4gPSBcIlBMQUlOXCIsIE0uUVVPVEVfRE9VQkxFID0gXCJRVU9URV9ET1VCTEVcIiwgTS5RVU9URV9TSU5HTEUgPSBcIlFVT1RFX1NJTkdMRVwiOyBmdW5jdGlvbiBEKGUsIHQsIHMpIHsgaWYgKGMoZSkgJiYgKGUgPSBlLmNvbnRlbnRzKSwgcChlKSkgcmV0dXJuIGU7IGlmICh1KGUpKSB7IGNvbnN0IHQgPSBzLnNjaGVtYVtuXS5jcmVhdGVOb2RlPy4ocy5zY2hlbWEsIG51bGwsIHMpOyByZXR1cm4gdC5pdGVtcy5wdXNoKGUpLCB0IH0gKGUgaW5zdGFuY2VvZiBTdHJpbmcgfHwgZSBpbnN0YW5jZW9mIE51bWJlciB8fCBlIGluc3RhbmNlb2YgQm9vbGVhbiB8fCBcInVuZGVmaW5lZFwiICE9IHR5cGVvZiBCaWdJbnQgJiYgZSBpbnN0YW5jZW9mIEJpZ0ludCkgJiYgKGUgPSBlLnZhbHVlT2YoKSk7IGNvbnN0IHsgYWxpYXNEdXBsaWNhdGVPYmplY3RzOiBpLCBvbkFuY2hvcjogciwgb25UYWdPYmo6IGEsIHNjaGVtYTogbCwgc291cmNlT2JqZWN0czogZiB9ID0gczsgbGV0IGg7IGlmIChpICYmIGUgJiYgXCJvYmplY3RcIiA9PSB0eXBlb2YgZSkgeyBpZiAoaCA9IGYuZ2V0KGUpLCBoKSByZXR1cm4gaC5hbmNob3IgPz8gKGguYW5jaG9yID0gcihlKSksIG5ldyBLKGguYW5jaG9yKTsgaCA9IHsgYW5jaG9yOiBudWxsLCBub2RlOiBudWxsIH0sIGYuc2V0KGUsIGgpIH0gdD8uc3RhcnRzV2l0aChcIiEhXCIpICYmICh0ID0gXCJ0YWc6eWFtbC5vcmcsMjAwMjpcIiArIHQuc2xpY2UoMikpOyBsZXQgZCA9IGZ1bmN0aW9uIChlLCB0LCBuKSB7IGlmICh0KSB7IGNvbnN0IGUgPSBuLmZpbHRlcigoZSA9PiBlLnRhZyA9PT0gdCkpLCBzID0gZS5maW5kKChlID0+ICFlLmZvcm1hdCkpID8/IGVbMF07IGlmICghcykgdGhyb3cgbmV3IEVycm9yKGBUYWcgJHt0fSBub3QgZm91bmRgKTsgcmV0dXJuIHMgfSByZXR1cm4gbi5maW5kKCh0ID0+IHQuaWRlbnRpZnk/LihlKSAmJiAhdC5mb3JtYXQpKSB9KGUsIHQsIGwudGFncyk7IGlmICghZCkgeyBpZiAoZSAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIGUudG9KU09OICYmIChlID0gZS50b0pTT04oKSksICFlIHx8IFwib2JqZWN0XCIgIT0gdHlwZW9mIGUpIHsgY29uc3QgdCA9IG5ldyBNKGUpOyByZXR1cm4gaCAmJiAoaC5ub2RlID0gdCksIHQgfSBkID0gZSBpbnN0YW5jZW9mIE1hcCA/IGxbbl0gOiBTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGUpID8gbFtvXSA6IGxbbl0gfSBhICYmIChhKGQpLCBkZWxldGUgcy5vblRhZ09iaik7IGNvbnN0IG0gPSBkPy5jcmVhdGVOb2RlID8gZC5jcmVhdGVOb2RlKHMuc2NoZW1hLCBlLCBzKSA6IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgZD8ubm9kZUNsYXNzPy5mcm9tID8gZC5ub2RlQ2xhc3MuZnJvbShzLnNjaGVtYSwgZSwgcykgOiBuZXcgTShlKTsgcmV0dXJuIHQgPyBtLnRhZyA9IHQgOiBkLmRlZmF1bHQgfHwgKG0udGFnID0gZC50YWcpLCBoICYmIChoLm5vZGUgPSBtKSwgbSB9IGZ1bmN0aW9uIHEoZSwgdCwgbikgeyBsZXQgcyA9IG47IGZvciAobGV0IGUgPSB0Lmxlbmd0aCAtIDE7IGUgPj0gMDsgLS1lKSB7IGNvbnN0IG4gPSB0W2VdOyBpZiAoXCJudW1iZXJcIiA9PSB0eXBlb2YgbiAmJiBOdW1iZXIuaXNJbnRlZ2VyKG4pICYmIG4gPj0gMCkgeyBjb25zdCBlID0gW107IGVbbl0gPSBzLCBzID0gZSB9IGVsc2UgcyA9IG5ldyBNYXAoW1tuLCBzXV0pIH0gcmV0dXJuIEQocywgdm9pZCAwLCB7IGFsaWFzRHVwbGljYXRlT2JqZWN0czogITEsIGtlZXBVbmRlZmluZWQ6ICExLCBvbkFuY2hvcjogKCkgPT4geyB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIHNob3VsZCBub3QgaGFwcGVuLCBwbGVhc2UgcmVwb3J0IGEgYnVnLlwiKSB9LCBzY2hlbWE6IGUsIHNvdXJjZU9iamVjdHM6IG5ldyBNYXAgfSkgfSBjb25zdCBQID0gZSA9PiBudWxsID09IGUgfHwgXCJvYmplY3RcIiA9PSB0eXBlb2YgZSAmJiAhIWVbU3ltYm9sLml0ZXJhdG9yXSgpLm5leHQoKS5kb25lOyBjbGFzcyBVIGV4dGVuZHMgXyB7IGNvbnN0cnVjdG9yKGUsIHQpIHsgc3VwZXIoZSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBcInNjaGVtYVwiLCB7IHZhbHVlOiB0LCBjb25maWd1cmFibGU6ICEwLCBlbnVtZXJhYmxlOiAhMSwgd3JpdGFibGU6ICEwIH0pIH0gY2xvbmUoZSkgeyBjb25zdCB0ID0gT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcyksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHRoaXMpKTsgcmV0dXJuIGUgJiYgKHQuc2NoZW1hID0gZSksIHQuaXRlbXMgPSB0Lml0ZW1zLm1hcCgodCA9PiBwKHQpIHx8IHUodCkgPyB0LmNsb25lKGUpIDogdCkpLCB0aGlzLnJhbmdlICYmICh0LnJhbmdlID0gdGhpcy5yYW5nZS5zbGljZSgpKSwgdCB9IGFkZEluKGUsIHQpIHsgaWYgKFAoZSkpIHRoaXMuYWRkKHQpOyBlbHNlIHsgY29uc3QgW24sIC4uLnNdID0gZSwgaSA9IHRoaXMuZ2V0KG4sICEwKTsgaWYgKGQoaSkpIGkuYWRkSW4ocywgdCk7IGVsc2UgeyBpZiAodm9pZCAwICE9PSBpIHx8ICF0aGlzLnNjaGVtYSkgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBZQU1MIGNvbGxlY3Rpb24gYXQgJHtufS4gUmVtYWluaW5nIHBhdGg6ICR7c31gKTsgdGhpcy5zZXQobiwgcSh0aGlzLnNjaGVtYSwgcywgdCkpIH0gfSB9IGRlbGV0ZUluKGUpIHsgY29uc3QgW3QsIC4uLm5dID0gZTsgaWYgKDAgPT09IG4ubGVuZ3RoKSByZXR1cm4gdGhpcy5kZWxldGUodCk7IGNvbnN0IHMgPSB0aGlzLmdldCh0LCAhMCk7IGlmIChkKHMpKSByZXR1cm4gcy5kZWxldGVJbihuKTsgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBZQU1MIGNvbGxlY3Rpb24gYXQgJHt0fS4gUmVtYWluaW5nIHBhdGg6ICR7bn1gKSB9IGdldEluKGUsIHQpIHsgY29uc3QgW24sIC4uLnNdID0gZSwgaSA9IHRoaXMuZ2V0KG4sICEwKTsgcmV0dXJuIDAgPT09IHMubGVuZ3RoID8gIXQgJiYgZihpKSA/IGkudmFsdWUgOiBpIDogZChpKSA/IGkuZ2V0SW4ocywgdCkgOiB2b2lkIDAgfSBoYXNBbGxOdWxsVmFsdWVzKGUpIHsgcmV0dXJuIHRoaXMuaXRlbXMuZXZlcnkoKHQgPT4geyBpZiAoIXUodCkpIHJldHVybiAhMTsgY29uc3QgbiA9IHQudmFsdWU7IHJldHVybiBudWxsID09IG4gfHwgZSAmJiBmKG4pICYmIG51bGwgPT0gbi52YWx1ZSAmJiAhbi5jb21tZW50QmVmb3JlICYmICFuLmNvbW1lbnQgJiYgIW4udGFnIH0pKSB9IGhhc0luKGUpIHsgY29uc3QgW3QsIC4uLm5dID0gZTsgaWYgKDAgPT09IG4ubGVuZ3RoKSByZXR1cm4gdGhpcy5oYXModCk7IGNvbnN0IHMgPSB0aGlzLmdldCh0LCAhMCk7IHJldHVybiAhIWQocykgJiYgcy5oYXNJbihuKSB9IHNldEluKGUsIHQpIHsgY29uc3QgW24sIC4uLnNdID0gZTsgaWYgKDAgPT09IHMubGVuZ3RoKSB0aGlzLnNldChuLCB0KTsgZWxzZSB7IGNvbnN0IGUgPSB0aGlzLmdldChuLCAhMCk7IGlmIChkKGUpKSBlLnNldEluKHMsIHQpOyBlbHNlIHsgaWYgKHZvaWQgMCAhPT0gZSB8fCAhdGhpcy5zY2hlbWEpIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgWUFNTCBjb2xsZWN0aW9uIGF0ICR7bn0uIFJlbWFpbmluZyBwYXRoOiAke3N9YCk7IHRoaXMuc2V0KG4sIHEodGhpcy5zY2hlbWEsIHMsIHQpKSB9IH0gfSB9IGNvbnN0IFIgPSBlID0+IGUucmVwbGFjZSgvXig/ISQpKD86ICQpPy9nbSwgXCIjXCIpOyBmdW5jdGlvbiBGKGUsIHQpIHsgcmV0dXJuIC9eXFxuKyQvLnRlc3QoZSkgPyBlLnN1YnN0cmluZygxKSA6IHQgPyBlLnJlcGxhY2UoL14oPyEgKiQpL2dtLCB0KSA6IGUgfSBjb25zdCBWID0gKGUsIHQsIG4pID0+IGUuZW5kc1dpdGgoXCJcXG5cIikgPyBGKG4sIHQpIDogbi5pbmNsdWRlcyhcIlxcblwiKSA/IFwiXFxuXCIgKyBGKG4sIHQpIDogKGUuZW5kc1dpdGgoXCIgXCIpID8gXCJcIiA6IFwiIFwiKSArIG4sIEogPSBcImZsb3dcIiwgWSA9IFwiYmxvY2tcIiwgVyA9IFwicXVvdGVkXCI7IGZ1bmN0aW9uIEcoZSwgdCwgbiA9IFwiZmxvd1wiLCB7IGluZGVudEF0U3RhcnQ6IHMsIGxpbmVXaWR0aDogaSA9IDgwLCBtaW5Db250ZW50V2lkdGg6IG8gPSAyMCwgb25Gb2xkOiByLCBvbk92ZXJmbG93OiBhIH0gPSB7fSkgeyBpZiAoIWkgfHwgaSA8IDApIHJldHVybiBlOyBpIDwgbyAmJiAobyA9IDApOyBjb25zdCBjID0gTWF0aC5tYXgoMSArIG8sIDEgKyBpIC0gdC5sZW5ndGgpOyBpZiAoZS5sZW5ndGggPD0gYykgcmV0dXJuIGU7IGNvbnN0IGwgPSBbXSwgdSA9IHt9OyBsZXQgZiwgaCwgZCA9IGkgLSB0Lmxlbmd0aDsgXCJudW1iZXJcIiA9PSB0eXBlb2YgcyAmJiAocyA+IGkgLSBNYXRoLm1heCgyLCBvKSA/IGwucHVzaCgwKSA6IGQgPSBpIC0gcyk7IGxldCBwID0gITEsIG0gPSAtMSwgeSA9IC0xLCBnID0gLTE7IG4gPT09IFkgJiYgKG0gPSBRKGUsIG0sIHQubGVuZ3RoKSwgLTEgIT09IG0gJiYgKGQgPSBtICsgYykpOyBmb3IgKGxldCBzOyBzID0gZVttICs9IDFdOykgeyBpZiAobiA9PT0gVyAmJiBcIlxcXFxcIiA9PT0gcykgeyBzd2l0Y2ggKHkgPSBtLCBlW20gKyAxXSkgeyBjYXNlIFwieFwiOiBtICs9IDM7IGJyZWFrOyBjYXNlIFwidVwiOiBtICs9IDU7IGJyZWFrOyBjYXNlIFwiVVwiOiBtICs9IDk7IGJyZWFrOyBkZWZhdWx0OiBtICs9IDEgfWcgPSBtIH0gaWYgKFwiXFxuXCIgPT09IHMpIG4gPT09IFkgJiYgKG0gPSBRKGUsIG0sIHQubGVuZ3RoKSksIGQgPSBtICsgdC5sZW5ndGggKyBjLCBmID0gdm9pZCAwOyBlbHNlIHsgaWYgKFwiIFwiID09PSBzICYmIGggJiYgXCIgXCIgIT09IGggJiYgXCJcXG5cIiAhPT0gaCAmJiBcIlxcdFwiICE9PSBoKSB7IGNvbnN0IHQgPSBlW20gKyAxXTsgdCAmJiBcIiBcIiAhPT0gdCAmJiBcIlxcblwiICE9PSB0ICYmIFwiXFx0XCIgIT09IHQgJiYgKGYgPSBtKSB9IGlmIChtID49IGQpIGlmIChmKSBsLnB1c2goZiksIGQgPSBmICsgYywgZiA9IHZvaWQgMDsgZWxzZSBpZiAobiA9PT0gVykgeyBmb3IgKDsgXCIgXCIgPT09IGggfHwgXCJcXHRcIiA9PT0gaDspaCA9IHMsIHMgPSBlW20gKz0gMV0sIHAgPSAhMDsgY29uc3QgdCA9IG0gPiBnICsgMSA/IG0gLSAyIDogeSAtIDE7IGlmICh1W3RdKSByZXR1cm4gZTsgbC5wdXNoKHQpLCB1W3RdID0gITAsIGQgPSB0ICsgYywgZiA9IHZvaWQgMCB9IGVsc2UgcCA9ICEwIH0gaCA9IHMgfSBpZiAocCAmJiBhICYmIGEoKSwgMCA9PT0gbC5sZW5ndGgpIHJldHVybiBlOyByICYmIHIoKTsgbGV0IGIgPSBlLnNsaWNlKDAsIGxbMF0pOyBmb3IgKGxldCBzID0gMDsgcyA8IGwubGVuZ3RoOyArK3MpIHsgY29uc3QgaSA9IGxbc10sIG8gPSBsW3MgKyAxXSB8fCBlLmxlbmd0aDsgMCA9PT0gaSA/IGIgPSBgXFxuJHt0fSR7ZS5zbGljZSgwLCBvKX1gIDogKG4gPT09IFcgJiYgdVtpXSAmJiAoYiArPSBgJHtlW2ldfVxcXFxgKSwgYiArPSBgXFxuJHt0fSR7ZS5zbGljZShpICsgMSwgbyl9YCkgfSByZXR1cm4gYiB9IGZ1bmN0aW9uIFEoZSwgdCwgbikgeyBsZXQgcyA9IHQsIGkgPSB0ICsgMSwgbyA9IGVbaV07IGZvciAoOyBcIiBcIiA9PT0gbyB8fCBcIlxcdFwiID09PSBvOylpZiAodCA8IGkgKyBuKSBvID0gZVsrK3RdOyBlbHNlIHsgZG8geyBvID0gZVsrK3RdIH0gd2hpbGUgKG8gJiYgXCJcXG5cIiAhPT0gbyk7IHMgPSB0LCBpID0gdCArIDEsIG8gPSBlW2ldIH0gcmV0dXJuIHMgfSBjb25zdCBIID0gKGUsIHQpID0+ICh7IGluZGVudEF0U3RhcnQ6IHQgPyBlLmluZGVudC5sZW5ndGggOiBlLmluZGVudEF0U3RhcnQsIGxpbmVXaWR0aDogZS5vcHRpb25zLmxpbmVXaWR0aCwgbWluQ29udGVudFdpZHRoOiBlLm9wdGlvbnMubWluQ29udGVudFdpZHRoIH0pLCBYID0gZSA9PiAvXiglfC0tLXxcXC5cXC5cXC4pL20udGVzdChlKTsgZnVuY3Rpb24geihlLCB0KSB7IGNvbnN0IG4gPSBKU09OLnN0cmluZ2lmeShlKTsgaWYgKHQub3B0aW9ucy5kb3VibGVRdW90ZWRBc0pTT04pIHJldHVybiBuOyBjb25zdCB7IGltcGxpY2l0S2V5OiBzIH0gPSB0LCBpID0gdC5vcHRpb25zLmRvdWJsZVF1b3RlZE1pbk11bHRpTGluZUxlbmd0aCwgbyA9IHQuaW5kZW50IHx8IChYKGUpID8gXCIgIFwiIDogXCJcIik7IGxldCByID0gXCJcIiwgYSA9IDA7IGZvciAobGV0IGUgPSAwLCB0ID0gbltlXTsgdDsgdCA9IG5bKytlXSlpZiAoXCIgXCIgPT09IHQgJiYgXCJcXFxcXCIgPT09IG5bZSArIDFdICYmIFwiblwiID09PSBuW2UgKyAyXSAmJiAociArPSBuLnNsaWNlKGEsIGUpICsgXCJcXFxcIFwiLCBlICs9IDEsIGEgPSBlLCB0ID0gXCJcXFxcXCIpLCBcIlxcXFxcIiA9PT0gdCkgc3dpdGNoIChuW2UgKyAxXSkgeyBjYXNlIFwidVwiOiB7IHIgKz0gbi5zbGljZShhLCBlKTsgY29uc3QgdCA9IG4uc3Vic3RyKGUgKyAyLCA0KTsgc3dpdGNoICh0KSB7IGNhc2UgXCIwMDAwXCI6IHIgKz0gXCJcXFxcMFwiOyBicmVhazsgY2FzZSBcIjAwMDdcIjogciArPSBcIlxcXFxhXCI7IGJyZWFrOyBjYXNlIFwiMDAwYlwiOiByICs9IFwiXFxcXHZcIjsgYnJlYWs7IGNhc2UgXCIwMDFiXCI6IHIgKz0gXCJcXFxcZVwiOyBicmVhazsgY2FzZSBcIjAwODVcIjogciArPSBcIlxcXFxOXCI7IGJyZWFrOyBjYXNlIFwiMDBhMFwiOiByICs9IFwiXFxcXF9cIjsgYnJlYWs7IGNhc2UgXCIyMDI4XCI6IHIgKz0gXCJcXFxcTFwiOyBicmVhazsgY2FzZSBcIjIwMjlcIjogciArPSBcIlxcXFxQXCI7IGJyZWFrOyBkZWZhdWx0OiBcIjAwXCIgPT09IHQuc3Vic3RyKDAsIDIpID8gciArPSBcIlxcXFx4XCIgKyB0LnN1YnN0cigyKSA6IHIgKz0gbi5zdWJzdHIoZSwgNikgfWUgKz0gNSwgYSA9IGUgKyAxIH0gYnJlYWs7IGNhc2UgXCJuXCI6IGlmIChzIHx8ICdcIicgPT09IG5bZSArIDJdIHx8IG4ubGVuZ3RoIDwgaSkgZSArPSAxOyBlbHNlIHsgZm9yIChyICs9IG4uc2xpY2UoYSwgZSkgKyBcIlxcblxcblwiOyBcIlxcXFxcIiA9PT0gbltlICsgMl0gJiYgXCJuXCIgPT09IG5bZSArIDNdICYmICdcIicgIT09IG5bZSArIDRdOylyICs9IFwiXFxuXCIsIGUgKz0gMjsgciArPSBvLCBcIiBcIiA9PT0gbltlICsgMl0gJiYgKHIgKz0gXCJcXFxcXCIpLCBlICs9IDEsIGEgPSBlICsgMSB9IGJyZWFrOyBkZWZhdWx0OiBlICs9IDEgfXJldHVybiByID0gYSA/IHIgKyBuLnNsaWNlKGEpIDogbiwgcyA/IHIgOiBHKHIsIG8sIFcsIEgodCwgITEpKSB9IGZ1bmN0aW9uIFooZSwgdCkgeyBpZiAoITEgPT09IHQub3B0aW9ucy5zaW5nbGVRdW90ZSB8fCB0LmltcGxpY2l0S2V5ICYmIGUuaW5jbHVkZXMoXCJcXG5cIikgfHwgL1sgXFx0XVxcbnxcXG5bIFxcdF0vLnRlc3QoZSkpIHJldHVybiB6KGUsIHQpOyBjb25zdCBuID0gdC5pbmRlbnQgfHwgKFgoZSkgPyBcIiAgXCIgOiBcIlwiKSwgcyA9IFwiJ1wiICsgZS5yZXBsYWNlKC8nL2csIFwiJydcIikucmVwbGFjZSgvXFxuKy9nLCBgJCZcXG4ke259YCkgKyBcIidcIjsgcmV0dXJuIHQuaW1wbGljaXRLZXkgPyBzIDogRyhzLCBuLCBKLCBIKHQsICExKSkgfSBmdW5jdGlvbiBlZShlLCB0KSB7IGNvbnN0IHsgc2luZ2xlUXVvdGU6IG4gfSA9IHQub3B0aW9uczsgbGV0IHM7IGlmICghMSA9PT0gbikgcyA9IHo7IGVsc2UgeyBjb25zdCB0ID0gZS5pbmNsdWRlcygnXCInKSwgaSA9IGUuaW5jbHVkZXMoXCInXCIpOyBzID0gdCAmJiAhaSA/IFogOiBpICYmICF0ID8geiA6IG4gPyBaIDogeiB9IHJldHVybiBzKGUsIHQpIH0gbGV0IHRlOyB0cnkgeyB0ZSA9IG5ldyBSZWdFeHAoXCIoXnwoPzwhXFxuKSlcXG4rKD8hXFxufCQpXCIsIFwiZ1wiKSB9IGNhdGNoIHsgdGUgPSAvXFxuKyg/IVxcbnwkKS9nIH0gZnVuY3Rpb24gbmUoeyBjb21tZW50OiBlLCB0eXBlOiB0LCB2YWx1ZTogbiB9LCBzLCBpLCBvKSB7IGNvbnN0IHsgYmxvY2tRdW90ZTogciwgY29tbWVudFN0cmluZzogYSwgbGluZVdpZHRoOiBjIH0gPSBzLm9wdGlvbnM7IGlmICghciB8fCAvXFxuW1xcdCBdKyQvLnRlc3QobikpIHJldHVybiBlZShuLCBzKTsgY29uc3QgbCA9IHMuaW5kZW50IHx8IChzLmZvcmNlQmxvY2tJbmRlbnQgfHwgWChuKSA/IFwiICBcIiA6IFwiXCIpLCB1ID0gXCJsaXRlcmFsXCIgPT09IHIgfHwgXCJmb2xkZWRcIiAhPT0gciAmJiB0ICE9PSBNLkJMT0NLX0ZPTERFRCAmJiAodCA9PT0gTS5CTE9DS19MSVRFUkFMIHx8ICFmdW5jdGlvbiAoZSwgdCwgbikgeyBpZiAoIXQgfHwgdCA8IDApIHJldHVybiAhMTsgY29uc3QgcyA9IHQgLSBuLCBpID0gZS5sZW5ndGg7IGlmIChpIDw9IHMpIHJldHVybiAhMTsgZm9yIChsZXQgdCA9IDAsIG4gPSAwOyB0IDwgaTsgKyt0KWlmIChcIlxcblwiID09PSBlW3RdKSB7IGlmICh0IC0gbiA+IHMpIHJldHVybiAhMDsgaWYgKG4gPSB0ICsgMSwgaSAtIG4gPD0gcykgcmV0dXJuICExIH0gcmV0dXJuICEwIH0obiwgYywgbC5sZW5ndGgpKTsgaWYgKCFuKSByZXR1cm4gdSA/IFwifFxcblwiIDogXCI+XFxuXCI7IGxldCBmLCBoOyBmb3IgKGggPSBuLmxlbmd0aDsgaCA+IDA7IC0taCkgeyBjb25zdCBlID0gbltoIC0gMV07IGlmIChcIlxcblwiICE9PSBlICYmIFwiXFx0XCIgIT09IGUgJiYgXCIgXCIgIT09IGUpIGJyZWFrIH0gbGV0IGQgPSBuLnN1YnN0cmluZyhoKTsgY29uc3QgcCA9IGQuaW5kZXhPZihcIlxcblwiKTsgLTEgPT09IHAgPyBmID0gXCItXCIgOiBuID09PSBkIHx8IHAgIT09IGQubGVuZ3RoIC0gMSA/IChmID0gXCIrXCIsIG8gJiYgbygpKSA6IGYgPSBcIlwiLCBkICYmIChuID0gbi5zbGljZSgwLCAtZC5sZW5ndGgpLCBcIlxcblwiID09PSBkW2QubGVuZ3RoIC0gMV0gJiYgKGQgPSBkLnNsaWNlKDAsIC0xKSksIGQgPSBkLnJlcGxhY2UodGUsIGAkJiR7bH1gKSk7IGxldCBtLCB5ID0gITEsIGcgPSAtMTsgZm9yIChtID0gMDsgbSA8IG4ubGVuZ3RoOyArK20pIHsgY29uc3QgZSA9IG5bbV07IGlmIChcIiBcIiA9PT0gZSkgeSA9ICEwOyBlbHNlIHsgaWYgKFwiXFxuXCIgIT09IGUpIGJyZWFrOyBnID0gbSB9IH0gbGV0IGIgPSBuLnN1YnN0cmluZygwLCBnIDwgbSA/IGcgKyAxIDogbSk7IGIgJiYgKG4gPSBuLnN1YnN0cmluZyhiLmxlbmd0aCksIGIgPSBiLnJlcGxhY2UoL1xcbisvZywgYCQmJHtsfWApKTsgbGV0IGsgPSAoeSA/IGwgPyBcIjJcIiA6IFwiMVwiIDogXCJcIikgKyBmOyBpZiAoZSAmJiAoayArPSBcIiBcIiArIGEoZS5yZXBsYWNlKC8gP1tcXHJcXG5dKy9nLCBcIiBcIikpLCBpICYmIGkoKSksICF1KSB7IGNvbnN0IGUgPSBuLnJlcGxhY2UoL1xcbisvZywgXCJcXG4kJlwiKS5yZXBsYWNlKC8oPzpefFxcbikoW1xcdCBdLiopKD86KFtcXG5cXHQgXSopXFxuKD8hW1xcblxcdCBdKSk/L2csIFwiJDEkMlwiKS5yZXBsYWNlKC9cXG4rL2csIGAkJiR7bH1gKTsgbGV0IGkgPSAhMTsgY29uc3QgbyA9IEgocywgITApOyBcImZvbGRlZFwiICE9PSByICYmIHQgIT09IE0uQkxPQ0tfRk9MREVEICYmIChvLm9uT3ZlcmZsb3cgPSAoKSA9PiB7IGkgPSAhMCB9KTsgY29uc3QgYSA9IEcoYCR7Yn0ke2V9JHtkfWAsIGwsIFksIG8pOyBpZiAoIWkpIHJldHVybiBgPiR7a31cXG4ke2x9JHthfWAgfSByZXR1cm4gYHwke2t9XFxuJHtsfSR7Yn0ke24gPSBuLnJlcGxhY2UoL1xcbisvZywgYCQmJHtsfWApfSR7ZH1gIH0gZnVuY3Rpb24gc2UoZSwgdCwgbiwgcykgeyBjb25zdCB7IGltcGxpY2l0S2V5OiBpLCBpbkZsb3c6IG8gfSA9IHQsIHIgPSBcInN0cmluZ1wiID09IHR5cGVvZiBlLnZhbHVlID8gZSA6IE9iamVjdC5hc3NpZ24oe30sIGUsIHsgdmFsdWU6IFN0cmluZyhlLnZhbHVlKSB9KTsgbGV0IHsgdHlwZTogYSB9ID0gZTsgYSAhPT0gTS5RVU9URV9ET1VCTEUgJiYgL1tcXHgwMC1cXHgwOFxceDBiLVxceDFmXFx4N2YtXFx4OWZcXHV7RDgwMH0tXFx1e0RGRkZ9XS91LnRlc3Qoci52YWx1ZSkgJiYgKGEgPSBNLlFVT1RFX0RPVUJMRSk7IGNvbnN0IGMgPSBlID0+IHsgc3dpdGNoIChlKSB7IGNhc2UgTS5CTE9DS19GT0xERUQ6IGNhc2UgTS5CTE9DS19MSVRFUkFMOiByZXR1cm4gaSB8fCBvID8gZWUoci52YWx1ZSwgdCkgOiBuZShyLCB0LCBuLCBzKTsgY2FzZSBNLlFVT1RFX0RPVUJMRTogcmV0dXJuIHooci52YWx1ZSwgdCk7IGNhc2UgTS5RVU9URV9TSU5HTEU6IHJldHVybiBaKHIudmFsdWUsIHQpOyBjYXNlIE0uUExBSU46IHJldHVybiBmdW5jdGlvbiAoZSwgdCwgbiwgcykgeyBjb25zdCB7IHR5cGU6IGksIHZhbHVlOiBvIH0gPSBlLCB7IGFjdHVhbFN0cmluZzogciwgaW1wbGljaXRLZXk6IGEsIGluZGVudDogYywgaW5kZW50U3RlcDogbCwgaW5GbG93OiB1IH0gPSB0OyBpZiAoYSAmJiBvLmluY2x1ZGVzKFwiXFxuXCIpIHx8IHUgJiYgL1tbXFxde30sXS8udGVzdChvKSkgcmV0dXJuIGVlKG8sIHQpOyBpZiAoL15bXFxuXFx0ICxbXFxde30jJiohfD4nXCIlQGBdfF5bPy1dJHxeWz8tXVsgXFx0XXxbXFxuOl1bIFxcdF18WyBcXHRdXFxufFtcXG5cXHQgXSN8W1xcblxcdCA6XSQvLnRlc3QobykpIHJldHVybiBhIHx8IHUgfHwgIW8uaW5jbHVkZXMoXCJcXG5cIikgPyBlZShvLCB0KSA6IG5lKGUsIHQsIG4sIHMpOyBpZiAoIWEgJiYgIXUgJiYgaSAhPT0gTS5QTEFJTiAmJiBvLmluY2x1ZGVzKFwiXFxuXCIpKSByZXR1cm4gbmUoZSwgdCwgbiwgcyk7IGlmIChYKG8pKSB7IGlmIChcIlwiID09PSBjKSByZXR1cm4gdC5mb3JjZUJsb2NrSW5kZW50ID0gITAsIG5lKGUsIHQsIG4sIHMpOyBpZiAoYSAmJiBjID09PSBsKSByZXR1cm4gZWUobywgdCkgfSBjb25zdCBmID0gby5yZXBsYWNlKC9cXG4rL2csIGAkJlxcbiR7Y31gKTsgaWYgKHIpIHsgY29uc3QgZSA9IGUgPT4gZS5kZWZhdWx0ICYmIFwidGFnOnlhbWwub3JnLDIwMDI6c3RyXCIgIT09IGUudGFnICYmIGUudGVzdD8udGVzdChmKSwgeyBjb21wYXQ6IG4sIHRhZ3M6IHMgfSA9IHQuZG9jLnNjaGVtYTsgaWYgKHMuc29tZShlKSB8fCBuPy5zb21lKGUpKSByZXR1cm4gZWUobywgdCkgfSByZXR1cm4gYSA/IGYgOiBHKGYsIGMsIEosIEgodCwgITEpKSB9KHIsIHQsIG4sIHMpOyBkZWZhdWx0OiByZXR1cm4gbnVsbCB9IH07IGxldCBsID0gYyhhKTsgaWYgKG51bGwgPT09IGwpIHsgY29uc3QgeyBkZWZhdWx0S2V5VHlwZTogZSwgZGVmYXVsdFN0cmluZ1R5cGU6IG4gfSA9IHQub3B0aW9ucywgcyA9IGkgJiYgZSB8fCBuOyBpZiAobCA9IGMocyksIG51bGwgPT09IGwpIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgZGVmYXVsdCBzdHJpbmcgdHlwZSAke3N9YCkgfSByZXR1cm4gbCB9IGZ1bmN0aW9uIGllKGUsIHQpIHsgY29uc3QgbiA9IE9iamVjdC5hc3NpZ24oeyBibG9ja1F1b3RlOiAhMCwgY29tbWVudFN0cmluZzogUiwgZGVmYXVsdEtleVR5cGU6IG51bGwsIGRlZmF1bHRTdHJpbmdUeXBlOiBcIlBMQUlOXCIsIGRpcmVjdGl2ZXM6IG51bGwsIGRvdWJsZVF1b3RlZEFzSlNPTjogITEsIGRvdWJsZVF1b3RlZE1pbk11bHRpTGluZUxlbmd0aDogNDAsIGZhbHNlU3RyOiBcImZhbHNlXCIsIGZsb3dDb2xsZWN0aW9uUGFkZGluZzogITAsIGluZGVudFNlcTogITAsIGxpbmVXaWR0aDogODAsIG1pbkNvbnRlbnRXaWR0aDogMjAsIG51bGxTdHI6IFwibnVsbFwiLCBzaW1wbGVLZXlzOiAhMSwgc2luZ2xlUXVvdGU6IG51bGwsIHRydWVTdHI6IFwidHJ1ZVwiLCB2ZXJpZnlBbGlhc09yZGVyOiAhMCB9LCBlLnNjaGVtYS50b1N0cmluZ09wdGlvbnMsIHQpOyBsZXQgczsgc3dpdGNoIChuLmNvbGxlY3Rpb25TdHlsZSkgeyBjYXNlIFwiYmxvY2tcIjogcyA9ICExOyBicmVhazsgY2FzZSBcImZsb3dcIjogcyA9ICEwOyBicmVhazsgZGVmYXVsdDogcyA9IG51bGwgfXJldHVybiB7IGFuY2hvcnM6IG5ldyBTZXQsIGRvYzogZSwgZmxvd0NvbGxlY3Rpb25QYWRkaW5nOiBuLmZsb3dDb2xsZWN0aW9uUGFkZGluZyA/IFwiIFwiIDogXCJcIiwgaW5kZW50OiBcIlwiLCBpbmRlbnRTdGVwOiBcIm51bWJlclwiID09IHR5cGVvZiBuLmluZGVudCA/IFwiIFwiLnJlcGVhdChuLmluZGVudCkgOiBcIiAgXCIsIGluRmxvdzogcywgb3B0aW9uczogbiB9IH0gZnVuY3Rpb24gb2UoZSwgdCwgbiwgcykgeyBpZiAodShlKSkgcmV0dXJuIGUudG9TdHJpbmcodCwgbiwgcyk7IGlmIChhKGUpKSB7IGlmICh0LmRvYy5kaXJlY3RpdmVzKSByZXR1cm4gZS50b1N0cmluZyh0KTsgaWYgKHQucmVzb2x2ZWRBbGlhc2VzPy5oYXMoZSkpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgc3RyaW5naWZ5IGNpcmN1bGFyIHN0cnVjdHVyZSB3aXRob3V0IGFsaWFzIG5vZGVzXCIpOyB0LnJlc29sdmVkQWxpYXNlcyA/IHQucmVzb2x2ZWRBbGlhc2VzLmFkZChlKSA6IHQucmVzb2x2ZWRBbGlhc2VzID0gbmV3IFNldChbZV0pLCBlID0gZS5yZXNvbHZlKHQuZG9jKSB9IGxldCBpOyBjb25zdCBvID0gcChlKSA/IGUgOiB0LmRvYy5jcmVhdGVOb2RlKGUsIHsgb25UYWdPYmo6IGUgPT4gaSA9IGUgfSk7IGkgPz8gKGkgPSBmdW5jdGlvbiAoZSwgdCkgeyBpZiAodC50YWcpIHsgY29uc3QgbiA9IGUuZmlsdGVyKChlID0+IGUudGFnID09PSB0LnRhZykpOyBpZiAobi5sZW5ndGggPiAwKSByZXR1cm4gbi5maW5kKChlID0+IGUuZm9ybWF0ID09PSB0LmZvcm1hdCkpID8/IG5bMF0gfSBsZXQgbiwgczsgaWYgKGYodCkpIHsgcyA9IHQudmFsdWU7IGxldCBpID0gZS5maWx0ZXIoKGUgPT4gZS5pZGVudGlmeT8uKHMpKSk7IGlmIChpLmxlbmd0aCA+IDEpIHsgY29uc3QgZSA9IGkuZmlsdGVyKChlID0+IGUudGVzdCkpOyBlLmxlbmd0aCA+IDAgJiYgKGkgPSBlKSB9IG4gPSBpLmZpbmQoKGUgPT4gZS5mb3JtYXQgPT09IHQuZm9ybWF0KSkgPz8gaS5maW5kKChlID0+ICFlLmZvcm1hdCkpIH0gZWxzZSBzID0gdCwgbiA9IGUuZmluZCgoZSA9PiBlLm5vZGVDbGFzcyAmJiBzIGluc3RhbmNlb2YgZS5ub2RlQ2xhc3MpKTsgaWYgKCFuKSB0aHJvdyBuZXcgRXJyb3IoYFRhZyBub3QgcmVzb2x2ZWQgZm9yICR7cz8uY29uc3RydWN0b3I/Lm5hbWUgPz8gKG51bGwgPT09IHMgPyBcIm51bGxcIiA6IHR5cGVvZiBzKX0gdmFsdWVgKTsgcmV0dXJuIG4gfSh0LmRvYy5zY2hlbWEudGFncywgbykpOyBjb25zdCByID0gZnVuY3Rpb24gKGUsIHQsIHsgYW5jaG9yczogbiwgZG9jOiBzIH0pIHsgaWYgKCFzLmRpcmVjdGl2ZXMpIHJldHVybiBcIlwiOyBjb25zdCBpID0gW10sIG8gPSAoZihlKSB8fCBkKGUpKSAmJiBlLmFuY2hvcjsgbyAmJiBUKG8pICYmIChuLmFkZChvKSwgaS5wdXNoKGAmJHtvfWApKTsgY29uc3QgciA9IGUudGFnID8/ICh0LmRlZmF1bHQgPyBudWxsIDogdC50YWcpOyByZXR1cm4gciAmJiBpLnB1c2gocy5kaXJlY3RpdmVzLnRhZ1N0cmluZyhyKSksIGkuam9pbihcIiBcIikgfShvLCBpLCB0KTsgci5sZW5ndGggPiAwICYmICh0LmluZGVudEF0U3RhcnQgPSAodC5pbmRlbnRBdFN0YXJ0ID8/IDApICsgci5sZW5ndGggKyAxKTsgY29uc3QgYyA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgaS5zdHJpbmdpZnkgPyBpLnN0cmluZ2lmeShvLCB0LCBuLCBzKSA6IGYobykgPyBzZShvLCB0LCBuLCBzKSA6IG8udG9TdHJpbmcodCwgbiwgcyk7IHJldHVybiByID8gZihvKSB8fCBcIntcIiA9PT0gY1swXSB8fCBcIltcIiA9PT0gY1swXSA/IGAke3J9ICR7Y31gIDogYCR7cn1cXG4ke3QuaW5kZW50fSR7Y31gIDogYyB9IGZ1bmN0aW9uIHJlKGUsIHQpIHsgXCJkZWJ1Z1wiICE9PSBlICYmIFwid2FyblwiICE9PSBlIHx8IGNvbnNvbGUud2Fybih0KSB9IGNvbnN0IGFlID0gXCI8PFwiLCBjZSA9IHsgaWRlbnRpZnk6IGUgPT4gZSA9PT0gYWUgfHwgXCJzeW1ib2xcIiA9PSB0eXBlb2YgZSAmJiBlLmRlc2NyaXB0aW9uID09PSBhZSwgZGVmYXVsdDogXCJrZXlcIiwgdGFnOiBcInRhZzp5YW1sLm9yZywyMDAyOm1lcmdlXCIsIHRlc3Q6IC9ePDwkLywgcmVzb2x2ZTogKCkgPT4gT2JqZWN0LmFzc2lnbihuZXcgTShTeW1ib2woYWUpKSwgeyBhZGRUb0pTTWFwOiBsZSB9KSwgc3RyaW5naWZ5OiAoKSA9PiBhZSB9OyBmdW5jdGlvbiBsZShlLCB0LCBuKSB7IGlmIChuID0gZSAmJiBhKG4pID8gbi5yZXNvbHZlKGUuZG9jKSA6IG4sIGgobikpIGZvciAoY29uc3QgcyBvZiBuLml0ZW1zKSB1ZShlLCB0LCBzKTsgZWxzZSBpZiAoQXJyYXkuaXNBcnJheShuKSkgZm9yIChjb25zdCBzIG9mIG4pIHVlKGUsIHQsIHMpOyBlbHNlIHVlKGUsIHQsIG4pIH0gZnVuY3Rpb24gdWUoZSwgdCwgbikgeyBjb25zdCBzID0gZSAmJiBhKG4pID8gbi5yZXNvbHZlKGUuZG9jKSA6IG47IGlmICghbChzKSkgdGhyb3cgbmV3IEVycm9yKFwiTWVyZ2Ugc291cmNlcyBtdXN0IGJlIG1hcHMgb3IgbWFwIGFsaWFzZXNcIik7IGNvbnN0IGkgPSBzLnRvSlNPTihudWxsLCBlLCBNYXApOyBmb3IgKGNvbnN0IFtlLCBuXSBvZiBpKSB0IGluc3RhbmNlb2YgTWFwID8gdC5oYXMoZSkgfHwgdC5zZXQoZSwgbikgOiB0IGluc3RhbmNlb2YgU2V0ID8gdC5hZGQoZSkgOiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCwgZSkgfHwgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIGUsIHsgdmFsdWU6IG4sIHdyaXRhYmxlOiAhMCwgZW51bWVyYWJsZTogITAsIGNvbmZpZ3VyYWJsZTogITAgfSk7IHJldHVybiB0IH0gZnVuY3Rpb24gZmUoZSwgdCwgeyBrZXk6IG4sIHZhbHVlOiBzIH0pIHsgaWYgKHAobikgJiYgbi5hZGRUb0pTTWFwKSBuLmFkZFRvSlNNYXAoZSwgdCwgcyk7IGVsc2UgaWYgKCgoZSwgdCkgPT4gKGNlLmlkZW50aWZ5KHQpIHx8IGYodCkgJiYgKCF0LnR5cGUgfHwgdC50eXBlID09PSBNLlBMQUlOKSAmJiBjZS5pZGVudGlmeSh0LnZhbHVlKSkgJiYgZT8uZG9jLnNjaGVtYS50YWdzLnNvbWUoKGUgPT4gZS50YWcgPT09IGNlLnRhZyAmJiBlLmRlZmF1bHQpKSkoZSwgbikpIGxlKGUsIHQsIHMpOyBlbHNlIHsgY29uc3QgaSA9IEMobiwgXCJcIiwgZSk7IGlmICh0IGluc3RhbmNlb2YgTWFwKSB0LnNldChpLCBDKHMsIGksIGUpKTsgZWxzZSBpZiAodCBpbnN0YW5jZW9mIFNldCkgdC5hZGQoaSk7IGVsc2UgeyBjb25zdCBvID0gZnVuY3Rpb24gKGUsIHQsIG4pIHsgaWYgKG51bGwgPT09IHQpIHJldHVybiBcIlwiOyBpZiAoXCJvYmplY3RcIiAhPSB0eXBlb2YgdCkgcmV0dXJuIFN0cmluZyh0KTsgaWYgKHAoZSkgJiYgbj8uZG9jKSB7IGNvbnN0IHQgPSBpZShuLmRvYywge30pOyB0LmFuY2hvcnMgPSBuZXcgU2V0OyBmb3IgKGNvbnN0IGUgb2Ygbi5hbmNob3JzLmtleXMoKSkgdC5hbmNob3JzLmFkZChlLmFuY2hvcik7IHQuaW5GbG93ID0gITAsIHQuaW5TdHJpbmdpZnlLZXkgPSAhMDsgY29uc3QgcyA9IGUudG9TdHJpbmcodCk7IGlmICghbi5tYXBLZXlXYXJuZWQpIHsgbGV0IGUgPSBKU09OLnN0cmluZ2lmeShzKTsgZS5sZW5ndGggPiA0MCAmJiAoZSA9IGUuc3Vic3RyaW5nKDAsIDM2KSArICcuLi5cIicpLCByZShuLmRvYy5vcHRpb25zLmxvZ0xldmVsLCBgS2V5cyB3aXRoIGNvbGxlY3Rpb24gdmFsdWVzIHdpbGwgYmUgc3RyaW5naWZpZWQgZHVlIHRvIEpTIE9iamVjdCByZXN0cmljdGlvbnM6ICR7ZX0uIFNldCBtYXBBc01hcDogdHJ1ZSB0byB1c2Ugb2JqZWN0IGtleXMuYCksIG4ubWFwS2V5V2FybmVkID0gITAgfSByZXR1cm4gcyB9IHJldHVybiBKU09OLnN0cmluZ2lmeSh0KSB9KG4sIGksIGUpLCByID0gQyhzLCBvLCBlKTsgbyBpbiB0ID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIG8sIHsgdmFsdWU6IHIsIHdyaXRhYmxlOiAhMCwgZW51bWVyYWJsZTogITAsIGNvbmZpZ3VyYWJsZTogITAgfSkgOiB0W29dID0gciB9IH0gcmV0dXJuIHQgfSBmdW5jdGlvbiBoZShlLCB0LCBuKSB7IGNvbnN0IHMgPSBEKGUsIHZvaWQgMCwgbiksIGkgPSBEKHQsIHZvaWQgMCwgbik7IHJldHVybiBuZXcgZGUocywgaSkgfSBjbGFzcyBkZSB7IGNvbnN0cnVjdG9yKGUsIHQgPSBudWxsKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCByLCB7IHZhbHVlOiBzIH0pLCB0aGlzLmtleSA9IGUsIHRoaXMudmFsdWUgPSB0IH0gY2xvbmUoZSkgeyBsZXQgeyBrZXk6IHQsIHZhbHVlOiBuIH0gPSB0aGlzOyByZXR1cm4gcCh0KSAmJiAodCA9IHQuY2xvbmUoZSkpLCBwKG4pICYmIChuID0gbi5jbG9uZShlKSksIG5ldyBkZSh0LCBuKSB9IHRvSlNPTihlLCB0KSB7IHJldHVybiBmZSh0LCB0Py5tYXBBc01hcCA/IG5ldyBNYXAgOiB7fSwgdGhpcykgfSB0b1N0cmluZyhlLCB0LCBuKSB7IHJldHVybiBlPy5kb2MgPyBmdW5jdGlvbiAoeyBrZXk6IGUsIHZhbHVlOiB0IH0sIG4sIHMsIGkpIHsgY29uc3QgeyBhbGxOdWxsVmFsdWVzOiBvLCBkb2M6IHIsIGluZGVudDogYSwgaW5kZW50U3RlcDogYywgb3B0aW9uczogeyBjb21tZW50U3RyaW5nOiBsLCBpbmRlbnRTZXE6IHUsIHNpbXBsZUtleXM6IG0gfSB9ID0gbjsgbGV0IHkgPSBwKGUpICYmIGUuY29tbWVudCB8fCBudWxsOyBpZiAobSkgeyBpZiAoeSkgdGhyb3cgbmV3IEVycm9yKFwiV2l0aCBzaW1wbGUga2V5cywga2V5IG5vZGVzIGNhbm5vdCBoYXZlIGNvbW1lbnRzXCIpOyBpZiAoZChlKSB8fCAhcChlKSAmJiBcIm9iamVjdFwiID09IHR5cGVvZiBlKSB0aHJvdyBuZXcgRXJyb3IoXCJXaXRoIHNpbXBsZSBrZXlzLCBjb2xsZWN0aW9uIGNhbm5vdCBiZSB1c2VkIGFzIGEga2V5IHZhbHVlXCIpIH0gbGV0IGcgPSAhbSAmJiAoIWUgfHwgeSAmJiBudWxsID09IHQgJiYgIW4uaW5GbG93IHx8IGQoZSkgfHwgKGYoZSkgPyBlLnR5cGUgPT09IE0uQkxPQ0tfRk9MREVEIHx8IGUudHlwZSA9PT0gTS5CTE9DS19MSVRFUkFMIDogXCJvYmplY3RcIiA9PSB0eXBlb2YgZSkpOyBuID0gT2JqZWN0LmFzc2lnbih7fSwgbiwgeyBhbGxOdWxsVmFsdWVzOiAhMSwgaW1wbGljaXRLZXk6ICFnICYmIChtIHx8ICFvKSwgaW5kZW50OiBhICsgYyB9KTsgbGV0IGIsIGssIHcsIHYgPSAhMSwgUyA9ICExLCBFID0gb2UoZSwgbiwgKCgpID0+IHYgPSAhMCksICgoKSA9PiBTID0gITApKTsgaWYgKCFnICYmICFuLmluRmxvdyAmJiBFLmxlbmd0aCA+IDEwMjQpIHsgaWYgKG0pIHRocm93IG5ldyBFcnJvcihcIldpdGggc2ltcGxlIGtleXMsIHNpbmdsZSBsaW5lIHNjYWxhciBtdXN0IG5vdCBzcGFuIG1vcmUgdGhhbiAxMDI0IGNoYXJhY3RlcnNcIik7IGcgPSAhMCB9IGlmIChuLmluRmxvdykgeyBpZiAobyB8fCBudWxsID09IHQpIHJldHVybiB2ICYmIHMgJiYgcygpLCBcIlwiID09PSBFID8gXCI/XCIgOiBnID8gYD8gJHtFfWAgOiBFIH0gZWxzZSBpZiAobyAmJiAhbSB8fCBudWxsID09IHQgJiYgZykgcmV0dXJuIEUgPSBgPyAke0V9YCwgeSAmJiAhdiA/IEUgKz0gVihFLCBuLmluZGVudCwgbCh5KSkgOiBTICYmIGkgJiYgaSgpLCBFOyB2ICYmICh5ID0gbnVsbCksIGcgPyAoeSAmJiAoRSArPSBWKEUsIG4uaW5kZW50LCBsKHkpKSksIEUgPSBgPyAke0V9XFxuJHthfTpgKSA6IChFID0gYCR7RX06YCwgeSAmJiAoRSArPSBWKEUsIG4uaW5kZW50LCBsKHkpKSkpLCBwKHQpID8gKGIgPSAhIXQuc3BhY2VCZWZvcmUsIGsgPSB0LmNvbW1lbnRCZWZvcmUsIHcgPSB0LmNvbW1lbnQpIDogKGIgPSAhMSwgayA9IG51bGwsIHcgPSBudWxsLCB0ICYmIFwib2JqZWN0XCIgPT0gdHlwZW9mIHQgJiYgKHQgPSByLmNyZWF0ZU5vZGUodCkpKSwgbi5pbXBsaWNpdEtleSA9ICExLCBnIHx8IHkgfHwgIWYodCkgfHwgKG4uaW5kZW50QXRTdGFydCA9IEUubGVuZ3RoICsgMSksIFMgPSAhMSwgdSB8fCAhKGMubGVuZ3RoID49IDIpIHx8IG4uaW5GbG93IHx8IGcgfHwgIWgodCkgfHwgdC5mbG93IHx8IHQudGFnIHx8IHQuYW5jaG9yIHx8IChuLmluZGVudCA9IG4uaW5kZW50LnN1YnN0cmluZygyKSk7IGxldCBOID0gITE7IGNvbnN0IE8gPSBvZSh0LCBuLCAoKCkgPT4gTiA9ICEwKSwgKCgpID0+IFMgPSAhMCkpOyBsZXQgQSA9IFwiIFwiOyBpZiAoeSB8fCBiIHx8IGspIEEgPSBiID8gXCJcXG5cIiA6IFwiXCIsIGsgJiYgKEEgKz0gYFxcbiR7RihsKGspLCBuLmluZGVudCl9YCksIFwiXCIgIT09IE8gfHwgbi5pbkZsb3cgPyBBICs9IGBcXG4ke24uaW5kZW50fWAgOiBcIlxcblwiID09PSBBICYmIChBID0gXCJcXG5cXG5cIik7IGVsc2UgaWYgKCFnICYmIGQodCkpIHsgY29uc3QgZSA9IE9bMF0sIHMgPSBPLmluZGV4T2YoXCJcXG5cIiksIGkgPSAtMSAhPT0gcywgbyA9IG4uaW5GbG93ID8/IHQuZmxvdyA/PyAwID09PSB0Lml0ZW1zLmxlbmd0aDsgaWYgKGkgfHwgIW8pIHsgbGV0IHQgPSAhMTsgaWYgKGkgJiYgKFwiJlwiID09PSBlIHx8IFwiIVwiID09PSBlKSkgeyBsZXQgbiA9IE8uaW5kZXhPZihcIiBcIik7IFwiJlwiID09PSBlICYmIC0xICE9PSBuICYmIG4gPCBzICYmIFwiIVwiID09PSBPW24gKyAxXSAmJiAobiA9IE8uaW5kZXhPZihcIiBcIiwgbiArIDEpKSwgKC0xID09PSBuIHx8IHMgPCBuKSAmJiAodCA9ICEwKSB9IHQgfHwgKEEgPSBgXFxuJHtuLmluZGVudH1gKSB9IH0gZWxzZSBcIlwiICE9PSBPICYmIFwiXFxuXCIgIT09IE9bMF0gfHwgKEEgPSBcIlwiKTsgcmV0dXJuIEUgKz0gQSArIE8sIG4uaW5GbG93ID8gTiAmJiBzICYmIHMoKSA6IHcgJiYgIU4gPyBFICs9IFYoRSwgbi5pbmRlbnQsIGwodykpIDogUyAmJiBpICYmIGkoKSwgRSB9KHRoaXMsIGUsIHQsIG4pIDogSlNPTi5zdHJpbmdpZnkodGhpcykgfSB9IGZ1bmN0aW9uIHBlKGUsIHQsIG4pIHsgcmV0dXJuICh0LmluRmxvdyA/PyBlLmZsb3cgPyB5ZSA6IG1lKShlLCB0LCBuKSB9IGZ1bmN0aW9uIG1lKHsgY29tbWVudDogZSwgaXRlbXM6IHQgfSwgbiwgeyBibG9ja0l0ZW1QcmVmaXg6IHMsIGZsb3dDaGFyczogaSwgaXRlbUluZGVudDogbywgb25DaG9tcEtlZXA6IHIsIG9uQ29tbWVudDogYSB9KSB7IGNvbnN0IHsgaW5kZW50OiBjLCBvcHRpb25zOiB7IGNvbW1lbnRTdHJpbmc6IGwgfSB9ID0gbiwgZiA9IE9iamVjdC5hc3NpZ24oe30sIG4sIHsgaW5kZW50OiBvLCB0eXBlOiBudWxsIH0pOyBsZXQgaCA9ICExOyBjb25zdCBkID0gW107IGZvciAobGV0IGUgPSAwOyBlIDwgdC5sZW5ndGg7ICsrZSkgeyBjb25zdCBpID0gdFtlXTsgbGV0IHIgPSBudWxsOyBpZiAocChpKSkgIWggJiYgaS5zcGFjZUJlZm9yZSAmJiBkLnB1c2goXCJcIiksIGdlKG4sIGQsIGkuY29tbWVudEJlZm9yZSwgaCksIGkuY29tbWVudCAmJiAociA9IGkuY29tbWVudCk7IGVsc2UgaWYgKHUoaSkpIHsgY29uc3QgZSA9IHAoaS5rZXkpID8gaS5rZXkgOiBudWxsOyBlICYmICghaCAmJiBlLnNwYWNlQmVmb3JlICYmIGQucHVzaChcIlwiKSwgZ2UobiwgZCwgZS5jb21tZW50QmVmb3JlLCBoKSkgfSBoID0gITE7IGxldCBhID0gb2UoaSwgZiwgKCgpID0+IHIgPSBudWxsKSwgKCgpID0+IGggPSAhMCkpOyByICYmIChhICs9IFYoYSwgbywgbChyKSkpLCBoICYmIHIgJiYgKGggPSAhMSksIGQucHVzaChzICsgYSkgfSBsZXQgbTsgaWYgKDAgPT09IGQubGVuZ3RoKSBtID0gaS5zdGFydCArIGkuZW5kOyBlbHNlIHsgbSA9IGRbMF07IGZvciAobGV0IGUgPSAxOyBlIDwgZC5sZW5ndGg7ICsrZSkgeyBjb25zdCB0ID0gZFtlXTsgbSArPSB0ID8gYFxcbiR7Y30ke3R9YCA6IFwiXFxuXCIgfSB9IHJldHVybiBlID8gKG0gKz0gXCJcXG5cIiArIEYobChlKSwgYyksIGEgJiYgYSgpKSA6IGggJiYgciAmJiByKCksIG0gfSBmdW5jdGlvbiB5ZSh7IGl0ZW1zOiBlIH0sIHQsIHsgZmxvd0NoYXJzOiBuLCBpdGVtSW5kZW50OiBzIH0pIHsgY29uc3QgeyBpbmRlbnQ6IGksIGluZGVudFN0ZXA6IG8sIGZsb3dDb2xsZWN0aW9uUGFkZGluZzogciwgb3B0aW9uczogeyBjb21tZW50U3RyaW5nOiBhIH0gfSA9IHQ7IHMgKz0gbzsgY29uc3QgYyA9IE9iamVjdC5hc3NpZ24oe30sIHQsIHsgaW5kZW50OiBzLCBpbkZsb3c6ICEwLCB0eXBlOiBudWxsIH0pOyBsZXQgbCA9ICExLCBmID0gMDsgY29uc3QgaCA9IFtdOyBmb3IgKGxldCBuID0gMDsgbiA8IGUubGVuZ3RoOyArK24pIHsgY29uc3QgaSA9IGVbbl07IGxldCBvID0gbnVsbDsgaWYgKHAoaSkpIGkuc3BhY2VCZWZvcmUgJiYgaC5wdXNoKFwiXCIpLCBnZSh0LCBoLCBpLmNvbW1lbnRCZWZvcmUsICExKSwgaS5jb21tZW50ICYmIChvID0gaS5jb21tZW50KTsgZWxzZSBpZiAodShpKSkgeyBjb25zdCBlID0gcChpLmtleSkgPyBpLmtleSA6IG51bGw7IGUgJiYgKGUuc3BhY2VCZWZvcmUgJiYgaC5wdXNoKFwiXCIpLCBnZSh0LCBoLCBlLmNvbW1lbnRCZWZvcmUsICExKSwgZS5jb21tZW50ICYmIChsID0gITApKTsgY29uc3QgbiA9IHAoaS52YWx1ZSkgPyBpLnZhbHVlIDogbnVsbDsgbiA/IChuLmNvbW1lbnQgJiYgKG8gPSBuLmNvbW1lbnQpLCBuLmNvbW1lbnRCZWZvcmUgJiYgKGwgPSAhMCkpIDogbnVsbCA9PSBpLnZhbHVlICYmIGU/LmNvbW1lbnQgJiYgKG8gPSBlLmNvbW1lbnQpIH0gbyAmJiAobCA9ICEwKTsgbGV0IHIgPSBvZShpLCBjLCAoKCkgPT4gbyA9IG51bGwpKTsgbiA8IGUubGVuZ3RoIC0gMSAmJiAociArPSBcIixcIiksIG8gJiYgKHIgKz0gVihyLCBzLCBhKG8pKSksICFsICYmIChoLmxlbmd0aCA+IGYgfHwgci5pbmNsdWRlcyhcIlxcblwiKSkgJiYgKGwgPSAhMCksIGgucHVzaChyKSwgZiA9IGgubGVuZ3RoIH0gY29uc3QgeyBzdGFydDogZCwgZW5kOiBtIH0gPSBuOyBpZiAoMCA9PT0gaC5sZW5ndGgpIHJldHVybiBkICsgbTsgaWYgKCFsKSB7IGNvbnN0IGUgPSBoLnJlZHVjZSgoKGUsIHQpID0+IGUgKyB0Lmxlbmd0aCArIDIpLCAyKTsgbCA9IHQub3B0aW9ucy5saW5lV2lkdGggPiAwICYmIGUgPiB0Lm9wdGlvbnMubGluZVdpZHRoIH0gaWYgKGwpIHsgbGV0IGUgPSBkOyBmb3IgKGNvbnN0IHQgb2YgaCkgZSArPSB0ID8gYFxcbiR7b30ke2l9JHt0fWAgOiBcIlxcblwiOyByZXR1cm4gYCR7ZX1cXG4ke2l9JHttfWAgfSByZXR1cm4gYCR7ZH0ke3J9JHtoLmpvaW4oXCIgXCIpfSR7cn0ke219YCB9IGZ1bmN0aW9uIGdlKHsgaW5kZW50OiBlLCBvcHRpb25zOiB7IGNvbW1lbnRTdHJpbmc6IHQgfSB9LCBuLCBzLCBpKSB7IGlmIChzICYmIGkgJiYgKHMgPSBzLnJlcGxhY2UoL15cXG4rLywgXCJcIikpLCBzKSB7IGNvbnN0IGkgPSBGKHQocyksIGUpOyBuLnB1c2goaS50cmltU3RhcnQoKSkgfSB9IGZ1bmN0aW9uIGJlKGUsIHQpIHsgY29uc3QgbiA9IGYodCkgPyB0LnZhbHVlIDogdDsgZm9yIChjb25zdCBzIG9mIGUpIGlmICh1KHMpKSB7IGlmIChzLmtleSA9PT0gdCB8fCBzLmtleSA9PT0gbikgcmV0dXJuIHM7IGlmIChmKHMua2V5KSAmJiBzLmtleS52YWx1ZSA9PT0gbikgcmV0dXJuIHMgfSB9IGNsYXNzIGtlIGV4dGVuZHMgVSB7IHN0YXRpYyBnZXQgdGFnTmFtZSgpIHsgcmV0dXJuIFwidGFnOnlhbWwub3JnLDIwMDI6bWFwXCIgfSBjb25zdHJ1Y3RvcihlKSB7IHN1cGVyKG4sIGUpLCB0aGlzLml0ZW1zID0gW10gfSBzdGF0aWMgZnJvbShlLCB0LCBuKSB7IGNvbnN0IHsga2VlcFVuZGVmaW5lZDogcywgcmVwbGFjZXI6IGkgfSA9IG4sIG8gPSBuZXcgdGhpcyhlKSwgciA9IChlLCByKSA9PiB7IGlmIChcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIGkpIHIgPSBpLmNhbGwodCwgZSwgcik7IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoaSkgJiYgIWkuaW5jbHVkZXMoZSkpIHJldHVybjsgKHZvaWQgMCAhPT0gciB8fCBzKSAmJiBvLml0ZW1zLnB1c2goaGUoZSwgciwgbikpIH07IGlmICh0IGluc3RhbmNlb2YgTWFwKSBmb3IgKGNvbnN0IFtlLCBuXSBvZiB0KSByKGUsIG4pOyBlbHNlIGlmICh0ICYmIFwib2JqZWN0XCIgPT0gdHlwZW9mIHQpIGZvciAoY29uc3QgZSBvZiBPYmplY3Qua2V5cyh0KSkgcihlLCB0W2VdKTsgcmV0dXJuIFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgZS5zb3J0TWFwRW50cmllcyAmJiBvLml0ZW1zLnNvcnQoZS5zb3J0TWFwRW50cmllcyksIG8gfSBhZGQoZSwgdCkgeyBsZXQgbjsgbiA9IHUoZSkgPyBlIDogZSAmJiBcIm9iamVjdFwiID09IHR5cGVvZiBlICYmIFwia2V5XCIgaW4gZSA/IG5ldyBkZShlLmtleSwgZS52YWx1ZSkgOiBuZXcgZGUoZSwgZT8udmFsdWUpOyBjb25zdCBzID0gYmUodGhpcy5pdGVtcywgbi5rZXkpLCBpID0gdGhpcy5zY2hlbWE/LnNvcnRNYXBFbnRyaWVzOyBpZiAocykgeyBpZiAoIXQpIHRocm93IG5ldyBFcnJvcihgS2V5ICR7bi5rZXl9IGFscmVhZHkgc2V0YCk7IGYocy52YWx1ZSkgJiYgaihuLnZhbHVlKSA/IHMudmFsdWUudmFsdWUgPSBuLnZhbHVlIDogcy52YWx1ZSA9IG4udmFsdWUgfSBlbHNlIGlmIChpKSB7IGNvbnN0IGUgPSB0aGlzLml0ZW1zLmZpbmRJbmRleCgoZSA9PiBpKG4sIGUpIDwgMCkpOyAtMSA9PT0gZSA/IHRoaXMuaXRlbXMucHVzaChuKSA6IHRoaXMuaXRlbXMuc3BsaWNlKGUsIDAsIG4pIH0gZWxzZSB0aGlzLml0ZW1zLnB1c2gobikgfSBkZWxldGUoZSkgeyBjb25zdCB0ID0gYmUodGhpcy5pdGVtcywgZSk7IGlmICghdCkgcmV0dXJuICExOyByZXR1cm4gdGhpcy5pdGVtcy5zcGxpY2UodGhpcy5pdGVtcy5pbmRleE9mKHQpLCAxKS5sZW5ndGggPiAwIH0gZ2V0KGUsIHQpIHsgY29uc3QgbiA9IGJlKHRoaXMuaXRlbXMsIGUpLCBzID0gbj8udmFsdWU7IHJldHVybiAoIXQgJiYgZihzKSA/IHMudmFsdWUgOiBzKSA/PyB2b2lkIDAgfSBoYXMoZSkgeyByZXR1cm4gISFiZSh0aGlzLml0ZW1zLCBlKSB9IHNldChlLCB0KSB7IHRoaXMuYWRkKG5ldyBkZShlLCB0KSwgITApIH0gdG9KU09OKGUsIHQsIG4pIHsgY29uc3QgcyA9IG4gPyBuZXcgbiA6IHQ/Lm1hcEFzTWFwID8gbmV3IE1hcCA6IHt9OyB0Py5vbkNyZWF0ZSAmJiB0Lm9uQ3JlYXRlKHMpOyBmb3IgKGNvbnN0IGUgb2YgdGhpcy5pdGVtcykgZmUodCwgcywgZSk7IHJldHVybiBzIH0gdG9TdHJpbmcoZSwgdCwgbikgeyBpZiAoIWUpIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzKTsgZm9yIChjb25zdCBlIG9mIHRoaXMuaXRlbXMpIGlmICghdShlKSkgdGhyb3cgbmV3IEVycm9yKGBNYXAgaXRlbXMgbXVzdCBhbGwgYmUgcGFpcnM7IGZvdW5kICR7SlNPTi5zdHJpbmdpZnkoZSl9IGluc3RlYWRgKTsgcmV0dXJuICFlLmFsbE51bGxWYWx1ZXMgJiYgdGhpcy5oYXNBbGxOdWxsVmFsdWVzKCExKSAmJiAoZSA9IE9iamVjdC5hc3NpZ24oe30sIGUsIHsgYWxsTnVsbFZhbHVlczogITAgfSkpLCBwZSh0aGlzLCBlLCB7IGJsb2NrSXRlbVByZWZpeDogXCJcIiwgZmxvd0NoYXJzOiB7IHN0YXJ0OiBcIntcIiwgZW5kOiBcIn1cIiB9LCBpdGVtSW5kZW50OiBlLmluZGVudCB8fCBcIlwiLCBvbkNob21wS2VlcDogbiwgb25Db21tZW50OiB0IH0pIH0gfSBjb25zdCB3ZSA9IHsgY29sbGVjdGlvbjogXCJtYXBcIiwgZGVmYXVsdDogITAsIG5vZGVDbGFzczoga2UsIHRhZzogXCJ0YWc6eWFtbC5vcmcsMjAwMjptYXBcIiwgcmVzb2x2ZTogKGUsIHQpID0+IChsKGUpIHx8IHQoXCJFeHBlY3RlZCBhIG1hcHBpbmcgZm9yIHRoaXMgdGFnXCIpLCBlKSwgY3JlYXRlTm9kZTogKGUsIHQsIG4pID0+IGtlLmZyb20oZSwgdCwgbikgfTsgY2xhc3MgdmUgZXh0ZW5kcyBVIHsgc3RhdGljIGdldCB0YWdOYW1lKCkgeyByZXR1cm4gXCJ0YWc6eWFtbC5vcmcsMjAwMjpzZXFcIiB9IGNvbnN0cnVjdG9yKGUpIHsgc3VwZXIobywgZSksIHRoaXMuaXRlbXMgPSBbXSB9IGFkZChlKSB7IHRoaXMuaXRlbXMucHVzaChlKSB9IGRlbGV0ZShlKSB7IGNvbnN0IHQgPSBTZShlKTsgaWYgKFwibnVtYmVyXCIgIT0gdHlwZW9mIHQpIHJldHVybiAhMTsgcmV0dXJuIHRoaXMuaXRlbXMuc3BsaWNlKHQsIDEpLmxlbmd0aCA+IDAgfSBnZXQoZSwgdCkgeyBjb25zdCBuID0gU2UoZSk7IGlmIChcIm51bWJlclwiICE9IHR5cGVvZiBuKSByZXR1cm47IGNvbnN0IHMgPSB0aGlzLml0ZW1zW25dOyByZXR1cm4gIXQgJiYgZihzKSA/IHMudmFsdWUgOiBzIH0gaGFzKGUpIHsgY29uc3QgdCA9IFNlKGUpOyByZXR1cm4gXCJudW1iZXJcIiA9PSB0eXBlb2YgdCAmJiB0IDwgdGhpcy5pdGVtcy5sZW5ndGggfSBzZXQoZSwgdCkgeyBjb25zdCBuID0gU2UoZSk7IGlmIChcIm51bWJlclwiICE9IHR5cGVvZiBuKSB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGEgdmFsaWQgaW5kZXgsIG5vdCAke2V9LmApOyBjb25zdCBzID0gdGhpcy5pdGVtc1tuXTsgZihzKSAmJiBqKHQpID8gcy52YWx1ZSA9IHQgOiB0aGlzLml0ZW1zW25dID0gdCB9IHRvSlNPTihlLCB0KSB7IGNvbnN0IG4gPSBbXTsgdD8ub25DcmVhdGUgJiYgdC5vbkNyZWF0ZShuKTsgbGV0IHMgPSAwOyBmb3IgKGNvbnN0IGUgb2YgdGhpcy5pdGVtcykgbi5wdXNoKEMoZSwgU3RyaW5nKHMrKyksIHQpKTsgcmV0dXJuIG4gfSB0b1N0cmluZyhlLCB0LCBuKSB7IHJldHVybiBlID8gcGUodGhpcywgZSwgeyBibG9ja0l0ZW1QcmVmaXg6IFwiLSBcIiwgZmxvd0NoYXJzOiB7IHN0YXJ0OiBcIltcIiwgZW5kOiBcIl1cIiB9LCBpdGVtSW5kZW50OiAoZS5pbmRlbnQgfHwgXCJcIikgKyBcIiAgXCIsIG9uQ2hvbXBLZWVwOiBuLCBvbkNvbW1lbnQ6IHQgfSkgOiBKU09OLnN0cmluZ2lmeSh0aGlzKSB9IHN0YXRpYyBmcm9tKGUsIHQsIG4pIHsgY29uc3QgeyByZXBsYWNlcjogcyB9ID0gbiwgaSA9IG5ldyB0aGlzKGUpOyBpZiAodCAmJiBTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KHQpKSB7IGxldCBlID0gMDsgZm9yIChsZXQgbyBvZiB0KSB7IGlmIChcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIHMpIHsgY29uc3QgbiA9IHQgaW5zdGFuY2VvZiBTZXQgPyBvIDogU3RyaW5nKGUrKyk7IG8gPSBzLmNhbGwodCwgbiwgbykgfSBpLml0ZW1zLnB1c2goRChvLCB2b2lkIDAsIG4pKSB9IH0gcmV0dXJuIGkgfSB9IGZ1bmN0aW9uIFNlKGUpIHsgbGV0IHQgPSBmKGUpID8gZS52YWx1ZSA6IGU7IHJldHVybiB0ICYmIFwic3RyaW5nXCIgPT0gdHlwZW9mIHQgJiYgKHQgPSBOdW1iZXIodCkpLCBcIm51bWJlclwiID09IHR5cGVvZiB0ICYmIE51bWJlci5pc0ludGVnZXIodCkgJiYgdCA+PSAwID8gdCA6IG51bGwgfSBjb25zdCBFZSA9IHsgY29sbGVjdGlvbjogXCJzZXFcIiwgZGVmYXVsdDogITAsIG5vZGVDbGFzczogdmUsIHRhZzogXCJ0YWc6eWFtbC5vcmcsMjAwMjpzZXFcIiwgcmVzb2x2ZTogKGUsIHQpID0+IChoKGUpIHx8IHQoXCJFeHBlY3RlZCBhIHNlcXVlbmNlIGZvciB0aGlzIHRhZ1wiKSwgZSksIGNyZWF0ZU5vZGU6IChlLCB0LCBuKSA9PiB2ZS5mcm9tKGUsIHQsIG4pIH0sIE5lID0geyBpZGVudGlmeTogZSA9PiBcInN0cmluZ1wiID09IHR5cGVvZiBlLCBkZWZhdWx0OiAhMCwgdGFnOiBcInRhZzp5YW1sLm9yZywyMDAyOnN0clwiLCByZXNvbHZlOiBlID0+IGUsIHN0cmluZ2lmeTogKGUsIHQsIG4sIHMpID0+IHNlKGUsIHQgPSBPYmplY3QuYXNzaWduKHsgYWN0dWFsU3RyaW5nOiAhMCB9LCB0KSwgbiwgcykgfSwgT2UgPSB7IGlkZW50aWZ5OiBlID0+IG51bGwgPT0gZSwgY3JlYXRlTm9kZTogKCkgPT4gbmV3IE0obnVsbCksIGRlZmF1bHQ6ICEwLCB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6bnVsbFwiLCB0ZXN0OiAvXig/On58W05uXXVsbHxOVUxMKT8kLywgcmVzb2x2ZTogKCkgPT4gbmV3IE0obnVsbCksIHN0cmluZ2lmeTogKHsgc291cmNlOiBlIH0sIHQpID0+IFwic3RyaW5nXCIgPT0gdHlwZW9mIGUgJiYgT2UudGVzdC50ZXN0KGUpID8gZSA6IHQub3B0aW9ucy5udWxsU3RyIH0sIEFlID0geyBpZGVudGlmeTogZSA9PiBcImJvb2xlYW5cIiA9PSB0eXBlb2YgZSwgZGVmYXVsdDogITAsIHRhZzogXCJ0YWc6eWFtbC5vcmcsMjAwMjpib29sXCIsIHRlc3Q6IC9eKD86W1R0XXJ1ZXxUUlVFfFtGZl1hbHNlfEZBTFNFKSQvLCByZXNvbHZlOiBlID0+IG5ldyBNKFwidFwiID09PSBlWzBdIHx8IFwiVFwiID09PSBlWzBdKSwgc3RyaW5naWZ5KHsgc291cmNlOiBlLCB2YWx1ZTogdCB9LCBuKSB7IGlmIChlICYmIEFlLnRlc3QudGVzdChlKSkgeyBpZiAodCA9PT0gKFwidFwiID09PSBlWzBdIHx8IFwiVFwiID09PSBlWzBdKSkgcmV0dXJuIGUgfSByZXR1cm4gdCA/IG4ub3B0aW9ucy50cnVlU3RyIDogbi5vcHRpb25zLmZhbHNlU3RyIH0gfTsgZnVuY3Rpb24gSWUoeyBmb3JtYXQ6IGUsIG1pbkZyYWN0aW9uRGlnaXRzOiB0LCB0YWc6IG4sIHZhbHVlOiBzIH0pIHsgaWYgKFwiYmlnaW50XCIgPT0gdHlwZW9mIHMpIHJldHVybiBTdHJpbmcocyk7IGNvbnN0IGkgPSBcIm51bWJlclwiID09IHR5cGVvZiBzID8gcyA6IE51bWJlcihzKTsgaWYgKCFpc0Zpbml0ZShpKSkgcmV0dXJuIGlzTmFOKGkpID8gXCIubmFuXCIgOiBpIDwgMCA/IFwiLS5pbmZcIiA6IFwiLmluZlwiOyBsZXQgbyA9IEpTT04uc3RyaW5naWZ5KHMpOyBpZiAoIWUgJiYgdCAmJiAoIW4gfHwgXCJ0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdFwiID09PSBuKSAmJiAvXlxcZC8udGVzdChvKSkgeyBsZXQgZSA9IG8uaW5kZXhPZihcIi5cIik7IGUgPCAwICYmIChlID0gby5sZW5ndGgsIG8gKz0gXCIuXCIpOyBsZXQgbiA9IHQgLSAoby5sZW5ndGggLSBlIC0gMSk7IGZvciAoOyBuLS0gPiAwOylvICs9IFwiMFwiIH0gcmV0dXJuIG8gfSBjb25zdCBUZSA9IHsgaWRlbnRpZnk6IGUgPT4gXCJudW1iZXJcIiA9PSB0eXBlb2YgZSwgZGVmYXVsdDogITAsIHRhZzogXCJ0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdFwiLCB0ZXN0OiAvXig/OlstK10/XFwuKD86aW5mfEluZnxJTkYpfFxcLm5hbnxcXC5OYU58XFwuTkFOKSQvLCByZXNvbHZlOiBlID0+IFwibmFuXCIgPT09IGUuc2xpY2UoLTMpLnRvTG93ZXJDYXNlKCkgPyBOYU4gOiBcIi1cIiA9PT0gZVswXSA/IE51bWJlci5ORUdBVElWRV9JTkZJTklUWSA6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSwgc3RyaW5naWZ5OiBJZSB9LCBMZSA9IHsgaWRlbnRpZnk6IGUgPT4gXCJudW1iZXJcIiA9PSB0eXBlb2YgZSwgZGVmYXVsdDogITAsIHRhZzogXCJ0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdFwiLCBmb3JtYXQ6IFwiRVhQXCIsIHRlc3Q6IC9eWy0rXT8oPzpcXC5bMC05XSt8WzAtOV0rKD86XFwuWzAtOV0qKT8pW2VFXVstK10/WzAtOV0rJC8sIHJlc29sdmU6IGUgPT4gcGFyc2VGbG9hdChlKSwgc3RyaW5naWZ5KGUpIHsgY29uc3QgdCA9IE51bWJlcihlLnZhbHVlKTsgcmV0dXJuIGlzRmluaXRlKHQpID8gdC50b0V4cG9uZW50aWFsKCkgOiBJZShlKSB9IH0sIHhlID0geyBpZGVudGlmeTogZSA9PiBcIm51bWJlclwiID09IHR5cGVvZiBlLCBkZWZhdWx0OiAhMCwgdGFnOiBcInRhZzp5YW1sLm9yZywyMDAyOmZsb2F0XCIsIHRlc3Q6IC9eWy0rXT8oPzpcXC5bMC05XSt8WzAtOV0rXFwuWzAtOV0qKSQvLCByZXNvbHZlKGUpIHsgY29uc3QgdCA9IG5ldyBNKHBhcnNlRmxvYXQoZSkpLCBuID0gZS5pbmRleE9mKFwiLlwiKTsgcmV0dXJuIC0xICE9PSBuICYmIFwiMFwiID09PSBlW2UubGVuZ3RoIC0gMV0gJiYgKHQubWluRnJhY3Rpb25EaWdpdHMgPSBlLmxlbmd0aCAtIG4gLSAxKSwgdCB9LCBzdHJpbmdpZnk6IEllIH0sICRlID0gZSA9PiBcImJpZ2ludFwiID09IHR5cGVvZiBlIHx8IE51bWJlci5pc0ludGVnZXIoZSksIENlID0gKGUsIHQsIG4sIHsgaW50QXNCaWdJbnQ6IHMgfSkgPT4gcyA/IEJpZ0ludChlKSA6IHBhcnNlSW50KGUuc3Vic3RyaW5nKHQpLCBuKTsgZnVuY3Rpb24gX2UoZSwgdCwgbikgeyBjb25zdCB7IHZhbHVlOiBzIH0gPSBlOyByZXR1cm4gJGUocykgJiYgcyA+PSAwID8gbiArIHMudG9TdHJpbmcodCkgOiBJZShlKSB9IGNvbnN0IEtlID0geyBpZGVudGlmeTogZSA9PiAkZShlKSAmJiBlID49IDAsIGRlZmF1bHQ6ICEwLCB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6aW50XCIsIGZvcm1hdDogXCJPQ1RcIiwgdGVzdDogL14wb1swLTddKyQvLCByZXNvbHZlOiAoZSwgdCwgbikgPT4gQ2UoZSwgMiwgOCwgbiksIHN0cmluZ2lmeTogZSA9PiBfZShlLCA4LCBcIjBvXCIpIH0sIEJlID0geyBpZGVudGlmeTogJGUsIGRlZmF1bHQ6ICEwLCB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6aW50XCIsIHRlc3Q6IC9eWy0rXT9bMC05XSskLywgcmVzb2x2ZTogKGUsIHQsIG4pID0+IENlKGUsIDAsIDEwLCBuKSwgc3RyaW5naWZ5OiBJZSB9LCBqZSA9IHsgaWRlbnRpZnk6IGUgPT4gJGUoZSkgJiYgZSA+PSAwLCBkZWZhdWx0OiAhMCwgdGFnOiBcInRhZzp5YW1sLm9yZywyMDAyOmludFwiLCBmb3JtYXQ6IFwiSEVYXCIsIHRlc3Q6IC9eMHhbMC05YS1mQS1GXSskLywgcmVzb2x2ZTogKGUsIHQsIG4pID0+IENlKGUsIDIsIDE2LCBuKSwgc3RyaW5naWZ5OiBlID0+IF9lKGUsIDE2LCBcIjB4XCIpIH0sIE1lID0gW3dlLCBFZSwgTmUsIE9lLCBBZSwgS2UsIEJlLCBqZSwgVGUsIExlLCB4ZV07IGZ1bmN0aW9uIERlKGUpIHsgcmV0dXJuIFwiYmlnaW50XCIgPT0gdHlwZW9mIGUgfHwgTnVtYmVyLmlzSW50ZWdlcihlKSB9IGNvbnN0IHFlID0gKHsgdmFsdWU6IGUgfSkgPT4gSlNPTi5zdHJpbmdpZnkoZSksIFBlID0gW3dlLCBFZV0uY29uY2F0KFt7IGlkZW50aWZ5OiBlID0+IFwic3RyaW5nXCIgPT0gdHlwZW9mIGUsIGRlZmF1bHQ6ICEwLCB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6c3RyXCIsIHJlc29sdmU6IGUgPT4gZSwgc3RyaW5naWZ5OiBxZSB9LCB7IGlkZW50aWZ5OiBlID0+IG51bGwgPT0gZSwgY3JlYXRlTm9kZTogKCkgPT4gbmV3IE0obnVsbCksIGRlZmF1bHQ6ICEwLCB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6bnVsbFwiLCB0ZXN0OiAvXm51bGwkLywgcmVzb2x2ZTogKCkgPT4gbnVsbCwgc3RyaW5naWZ5OiBxZSB9LCB7IGlkZW50aWZ5OiBlID0+IFwiYm9vbGVhblwiID09IHR5cGVvZiBlLCBkZWZhdWx0OiAhMCwgdGFnOiBcInRhZzp5YW1sLm9yZywyMDAyOmJvb2xcIiwgdGVzdDogL150cnVlJHxeZmFsc2UkLywgcmVzb2x2ZTogZSA9PiBcInRydWVcIiA9PT0gZSwgc3RyaW5naWZ5OiBxZSB9LCB7IGlkZW50aWZ5OiBEZSwgZGVmYXVsdDogITAsIHRhZzogXCJ0YWc6eWFtbC5vcmcsMjAwMjppbnRcIiwgdGVzdDogL14tPyg/OjB8WzEtOV1bMC05XSopJC8sIHJlc29sdmU6IChlLCB0LCB7IGludEFzQmlnSW50OiBuIH0pID0+IG4gPyBCaWdJbnQoZSkgOiBwYXJzZUludChlLCAxMCksIHN0cmluZ2lmeTogKHsgdmFsdWU6IGUgfSkgPT4gRGUoZSkgPyBlLnRvU3RyaW5nKCkgOiBKU09OLnN0cmluZ2lmeShlKSB9LCB7IGlkZW50aWZ5OiBlID0+IFwibnVtYmVyXCIgPT0gdHlwZW9mIGUsIGRlZmF1bHQ6ICEwLCB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6ZmxvYXRcIiwgdGVzdDogL14tPyg/OjB8WzEtOV1bMC05XSopKD86XFwuWzAtOV0qKT8oPzpbZUVdWy0rXT9bMC05XSspPyQvLCByZXNvbHZlOiBlID0+IHBhcnNlRmxvYXQoZSksIHN0cmluZ2lmeTogcWUgfV0sIHsgZGVmYXVsdDogITAsIHRhZzogXCJcIiwgdGVzdDogL14vLCByZXNvbHZlOiAoZSwgdCkgPT4gKHQoYFVucmVzb2x2ZWQgcGxhaW4gc2NhbGFyICR7SlNPTi5zdHJpbmdpZnkoZSl9YCksIGUpIH0pLCBVZSA9IHsgaWRlbnRpZnk6IGUgPT4gZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXksIGRlZmF1bHQ6ICExLCB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6YmluYXJ5XCIsIHJlc29sdmUoZSwgdCkgeyBpZiAoXCJmdW5jdGlvblwiID09IHR5cGVvZiBhdG9iKSB7IGNvbnN0IHQgPSBhdG9iKGUucmVwbGFjZSgvW1xcblxccl0vZywgXCJcIikpLCBuID0gbmV3IFVpbnQ4QXJyYXkodC5sZW5ndGgpOyBmb3IgKGxldCBlID0gMDsgZSA8IHQubGVuZ3RoOyArK2UpbltlXSA9IHQuY2hhckNvZGVBdChlKTsgcmV0dXJuIG4gfSByZXR1cm4gdChcIlRoaXMgZW52aXJvbm1lbnQgZG9lcyBub3Qgc3VwcG9ydCByZWFkaW5nIGJpbmFyeSB0YWdzOyBlaXRoZXIgQnVmZmVyIG9yIGF0b2IgaXMgcmVxdWlyZWRcIiksIGUgfSwgc3RyaW5naWZ5KHsgY29tbWVudDogZSwgdHlwZTogdCwgdmFsdWU6IG4gfSwgcywgaSwgbykgeyBpZiAoIW4pIHJldHVybiBcIlwiOyBjb25zdCByID0gbjsgbGV0IGE7IGlmIChcImZ1bmN0aW9uXCIgIT0gdHlwZW9mIGJ0b2EpIHRocm93IG5ldyBFcnJvcihcIlRoaXMgZW52aXJvbm1lbnQgZG9lcyBub3Qgc3VwcG9ydCB3cml0aW5nIGJpbmFyeSB0YWdzOyBlaXRoZXIgQnVmZmVyIG9yIGJ0b2EgaXMgcmVxdWlyZWRcIik7IHsgbGV0IGUgPSBcIlwiOyBmb3IgKGxldCB0ID0gMDsgdCA8IHIubGVuZ3RoOyArK3QpZSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHJbdF0pOyBhID0gYnRvYShlKSB9IGlmICh0ID8/ICh0ID0gTS5CTE9DS19MSVRFUkFMKSwgdCAhPT0gTS5RVU9URV9ET1VCTEUpIHsgY29uc3QgZSA9IE1hdGgubWF4KHMub3B0aW9ucy5saW5lV2lkdGggLSBzLmluZGVudC5sZW5ndGgsIHMub3B0aW9ucy5taW5Db250ZW50V2lkdGgpLCBuID0gTWF0aC5jZWlsKGEubGVuZ3RoIC8gZSksIGkgPSBuZXcgQXJyYXkobik7IGZvciAobGV0IHQgPSAwLCBzID0gMDsgdCA8IG47ICsrdCwgcyArPSBlKWlbdF0gPSBhLnN1YnN0cihzLCBlKTsgYSA9IGkuam9pbih0ID09PSBNLkJMT0NLX0xJVEVSQUwgPyBcIlxcblwiIDogXCIgXCIpIH0gcmV0dXJuIHNlKHsgY29tbWVudDogZSwgdHlwZTogdCwgdmFsdWU6IGEgfSwgcywgaSwgbykgfSB9OyBmdW5jdGlvbiBSZShlLCB0KSB7IGlmIChoKGUpKSBmb3IgKGxldCBuID0gMDsgbiA8IGUuaXRlbXMubGVuZ3RoOyArK24pIHsgbGV0IHMgPSBlLml0ZW1zW25dOyBpZiAoIXUocykpIHsgaWYgKGwocykpIHsgcy5pdGVtcy5sZW5ndGggPiAxICYmIHQoXCJFYWNoIHBhaXIgbXVzdCBoYXZlIGl0cyBvd24gc2VxdWVuY2UgaW5kaWNhdG9yXCIpOyBjb25zdCBlID0gcy5pdGVtc1swXSB8fCBuZXcgZGUobmV3IE0obnVsbCkpOyBpZiAocy5jb21tZW50QmVmb3JlICYmIChlLmtleS5jb21tZW50QmVmb3JlID0gZS5rZXkuY29tbWVudEJlZm9yZSA/IGAke3MuY29tbWVudEJlZm9yZX1cXG4ke2Uua2V5LmNvbW1lbnRCZWZvcmV9YCA6IHMuY29tbWVudEJlZm9yZSksIHMuY29tbWVudCkgeyBjb25zdCB0ID0gZS52YWx1ZSA/PyBlLmtleTsgdC5jb21tZW50ID0gdC5jb21tZW50ID8gYCR7cy5jb21tZW50fVxcbiR7dC5jb21tZW50fWAgOiBzLmNvbW1lbnQgfSBzID0gZSB9IGUuaXRlbXNbbl0gPSB1KHMpID8gcyA6IG5ldyBkZShzKSB9IH0gZWxzZSB0KFwiRXhwZWN0ZWQgYSBzZXF1ZW5jZSBmb3IgdGhpcyB0YWdcIik7IHJldHVybiBlIH0gZnVuY3Rpb24gRmUoZSwgdCwgbikgeyBjb25zdCB7IHJlcGxhY2VyOiBzIH0gPSBuLCBpID0gbmV3IHZlKGUpOyBpLnRhZyA9IFwidGFnOnlhbWwub3JnLDIwMDI6cGFpcnNcIjsgbGV0IG8gPSAwOyBpZiAodCAmJiBTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KHQpKSBmb3IgKGxldCBlIG9mIHQpIHsgbGV0IHIsIGE7IGlmIChcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIHMgJiYgKGUgPSBzLmNhbGwodCwgU3RyaW5nKG8rKyksIGUpKSwgQXJyYXkuaXNBcnJheShlKSkgeyBpZiAoMiAhPT0gZS5sZW5ndGgpIHRocm93IG5ldyBUeXBlRXJyb3IoYEV4cGVjdGVkIFtrZXksIHZhbHVlXSB0dXBsZTogJHtlfWApOyByID0gZVswXSwgYSA9IGVbMV0gfSBlbHNlIGlmIChlICYmIGUgaW5zdGFuY2VvZiBPYmplY3QpIHsgY29uc3QgdCA9IE9iamVjdC5rZXlzKGUpOyBpZiAoMSAhPT0gdC5sZW5ndGgpIHRocm93IG5ldyBUeXBlRXJyb3IoYEV4cGVjdGVkIHR1cGxlIHdpdGggb25lIGtleSwgbm90ICR7dC5sZW5ndGh9IGtleXNgKTsgciA9IHRbMF0sIGEgPSBlW3JdIH0gZWxzZSByID0gZTsgaS5pdGVtcy5wdXNoKGhlKHIsIGEsIG4pKSB9IHJldHVybiBpIH0gY29uc3QgVmUgPSB7IGNvbGxlY3Rpb246IFwic2VxXCIsIGRlZmF1bHQ6ICExLCB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6cGFpcnNcIiwgcmVzb2x2ZTogUmUsIGNyZWF0ZU5vZGU6IEZlIH07IGNsYXNzIEplIGV4dGVuZHMgdmUgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKSwgdGhpcy5hZGQgPSBrZS5wcm90b3R5cGUuYWRkLmJpbmQodGhpcyksIHRoaXMuZGVsZXRlID0ga2UucHJvdG90eXBlLmRlbGV0ZS5iaW5kKHRoaXMpLCB0aGlzLmdldCA9IGtlLnByb3RvdHlwZS5nZXQuYmluZCh0aGlzKSwgdGhpcy5oYXMgPSBrZS5wcm90b3R5cGUuaGFzLmJpbmQodGhpcyksIHRoaXMuc2V0ID0ga2UucHJvdG90eXBlLnNldC5iaW5kKHRoaXMpLCB0aGlzLnRhZyA9IEplLnRhZyB9IHRvSlNPTihlLCB0KSB7IGlmICghdCkgcmV0dXJuIHN1cGVyLnRvSlNPTihlKTsgY29uc3QgbiA9IG5ldyBNYXA7IHQ/Lm9uQ3JlYXRlICYmIHQub25DcmVhdGUobik7IGZvciAoY29uc3QgZSBvZiB0aGlzLml0ZW1zKSB7IGxldCBzLCBpOyBpZiAodShlKSA/IChzID0gQyhlLmtleSwgXCJcIiwgdCksIGkgPSBDKGUudmFsdWUsIHMsIHQpKSA6IHMgPSBDKGUsIFwiXCIsIHQpLCBuLmhhcyhzKSkgdGhyb3cgbmV3IEVycm9yKFwiT3JkZXJlZCBtYXBzIG11c3Qgbm90IGluY2x1ZGUgZHVwbGljYXRlIGtleXNcIik7IG4uc2V0KHMsIGkpIH0gcmV0dXJuIG4gfSBzdGF0aWMgZnJvbShlLCB0LCBuKSB7IGNvbnN0IHMgPSBGZShlLCB0LCBuKSwgaSA9IG5ldyB0aGlzOyByZXR1cm4gaS5pdGVtcyA9IHMuaXRlbXMsIGkgfSB9IEplLnRhZyA9IFwidGFnOnlhbWwub3JnLDIwMDI6b21hcFwiOyBjb25zdCBZZSA9IHsgY29sbGVjdGlvbjogXCJzZXFcIiwgaWRlbnRpZnk6IGUgPT4gZSBpbnN0YW5jZW9mIE1hcCwgbm9kZUNsYXNzOiBKZSwgZGVmYXVsdDogITEsIHRhZzogXCJ0YWc6eWFtbC5vcmcsMjAwMjpvbWFwXCIsIHJlc29sdmUoZSwgdCkgeyBjb25zdCBuID0gUmUoZSwgdCksIHMgPSBbXTsgZm9yIChjb25zdCB7IGtleTogZSB9IG9mIG4uaXRlbXMpIGYoZSkgJiYgKHMuaW5jbHVkZXMoZS52YWx1ZSkgPyB0KGBPcmRlcmVkIG1hcHMgbXVzdCBub3QgaW5jbHVkZSBkdXBsaWNhdGUga2V5czogJHtlLnZhbHVlfWApIDogcy5wdXNoKGUudmFsdWUpKTsgcmV0dXJuIE9iamVjdC5hc3NpZ24obmV3IEplLCBuKSB9LCBjcmVhdGVOb2RlOiAoZSwgdCwgbikgPT4gSmUuZnJvbShlLCB0LCBuKSB9OyBmdW5jdGlvbiBXZSh7IHZhbHVlOiBlLCBzb3VyY2U6IHQgfSwgbikgeyByZXR1cm4gdCAmJiAoZSA/IEdlIDogUWUpLnRlc3QudGVzdCh0KSA/IHQgOiBlID8gbi5vcHRpb25zLnRydWVTdHIgOiBuLm9wdGlvbnMuZmFsc2VTdHIgfSBjb25zdCBHZSA9IHsgaWRlbnRpZnk6IGUgPT4gITAgPT09IGUsIGRlZmF1bHQ6ICEwLCB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6Ym9vbFwiLCB0ZXN0OiAvXig/Oll8eXxbWXldZXN8WUVTfFtUdF1ydWV8VFJVRXxbT29dbnxPTikkLywgcmVzb2x2ZTogKCkgPT4gbmV3IE0oITApLCBzdHJpbmdpZnk6IFdlIH0sIFFlID0geyBpZGVudGlmeTogZSA9PiAhMSA9PT0gZSwgZGVmYXVsdDogITAsIHRhZzogXCJ0YWc6eWFtbC5vcmcsMjAwMjpib29sXCIsIHRlc3Q6IC9eKD86TnxufFtObl1vfE5PfFtGZl1hbHNlfEZBTFNFfFtPb11mZnxPRkYpJC8sIHJlc29sdmU6ICgpID0+IG5ldyBNKCExKSwgc3RyaW5naWZ5OiBXZSB9LCBIZSA9IHsgaWRlbnRpZnk6IGUgPT4gXCJudW1iZXJcIiA9PSB0eXBlb2YgZSwgZGVmYXVsdDogITAsIHRhZzogXCJ0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdFwiLCB0ZXN0OiAvXig/OlstK10/XFwuKD86aW5mfEluZnxJTkYpfFxcLm5hbnxcXC5OYU58XFwuTkFOKSQvLCByZXNvbHZlOiBlID0+IFwibmFuXCIgPT09IGUuc2xpY2UoLTMpLnRvTG93ZXJDYXNlKCkgPyBOYU4gOiBcIi1cIiA9PT0gZVswXSA/IE51bWJlci5ORUdBVElWRV9JTkZJTklUWSA6IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSwgc3RyaW5naWZ5OiBJZSB9LCBYZSA9IHsgaWRlbnRpZnk6IGUgPT4gXCJudW1iZXJcIiA9PSB0eXBlb2YgZSwgZGVmYXVsdDogITAsIHRhZzogXCJ0YWc6eWFtbC5vcmcsMjAwMjpmbG9hdFwiLCBmb3JtYXQ6IFwiRVhQXCIsIHRlc3Q6IC9eWy0rXT8oPzpbMC05XVswLTlfXSopPyg/OlxcLlswLTlfXSopP1tlRV1bLStdP1swLTldKyQvLCByZXNvbHZlOiBlID0+IHBhcnNlRmxvYXQoZS5yZXBsYWNlKC9fL2csIFwiXCIpKSwgc3RyaW5naWZ5KGUpIHsgY29uc3QgdCA9IE51bWJlcihlLnZhbHVlKTsgcmV0dXJuIGlzRmluaXRlKHQpID8gdC50b0V4cG9uZW50aWFsKCkgOiBJZShlKSB9IH0sIHplID0geyBpZGVudGlmeTogZSA9PiBcIm51bWJlclwiID09IHR5cGVvZiBlLCBkZWZhdWx0OiAhMCwgdGFnOiBcInRhZzp5YW1sLm9yZywyMDAyOmZsb2F0XCIsIHRlc3Q6IC9eWy0rXT8oPzpbMC05XVswLTlfXSopP1xcLlswLTlfXSokLywgcmVzb2x2ZShlKSB7IGNvbnN0IHQgPSBuZXcgTShwYXJzZUZsb2F0KGUucmVwbGFjZSgvXy9nLCBcIlwiKSkpLCBuID0gZS5pbmRleE9mKFwiLlwiKTsgaWYgKC0xICE9PSBuKSB7IGNvbnN0IHMgPSBlLnN1YnN0cmluZyhuICsgMSkucmVwbGFjZSgvXy9nLCBcIlwiKTsgXCIwXCIgPT09IHNbcy5sZW5ndGggLSAxXSAmJiAodC5taW5GcmFjdGlvbkRpZ2l0cyA9IHMubGVuZ3RoKSB9IHJldHVybiB0IH0sIHN0cmluZ2lmeTogSWUgfSwgWmUgPSBlID0+IFwiYmlnaW50XCIgPT0gdHlwZW9mIGUgfHwgTnVtYmVyLmlzSW50ZWdlcihlKTsgZnVuY3Rpb24gZXQoZSwgdCwgbiwgeyBpbnRBc0JpZ0ludDogcyB9KSB7IGNvbnN0IGkgPSBlWzBdOyBpZiAoXCItXCIgIT09IGkgJiYgXCIrXCIgIT09IGkgfHwgKHQgKz0gMSksIGUgPSBlLnN1YnN0cmluZyh0KS5yZXBsYWNlKC9fL2csIFwiXCIpLCBzKSB7IHN3aXRjaCAobikgeyBjYXNlIDI6IGUgPSBgMGIke2V9YDsgYnJlYWs7IGNhc2UgODogZSA9IGAwbyR7ZX1gOyBicmVhazsgY2FzZSAxNjogZSA9IGAweCR7ZX1gIH1jb25zdCB0ID0gQmlnSW50KGUpOyByZXR1cm4gXCItXCIgPT09IGkgPyBCaWdJbnQoLTEpICogdCA6IHQgfSBjb25zdCBvID0gcGFyc2VJbnQoZSwgbik7IHJldHVybiBcIi1cIiA9PT0gaSA/IC0xICogbyA6IG8gfSBmdW5jdGlvbiB0dChlLCB0LCBuKSB7IGNvbnN0IHsgdmFsdWU6IHMgfSA9IGU7IGlmIChaZShzKSkgeyBjb25zdCBlID0gcy50b1N0cmluZyh0KTsgcmV0dXJuIHMgPCAwID8gXCItXCIgKyBuICsgZS5zdWJzdHIoMSkgOiBuICsgZSB9IHJldHVybiBJZShlKSB9IGNvbnN0IG50ID0geyBpZGVudGlmeTogWmUsIGRlZmF1bHQ6ICEwLCB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6aW50XCIsIGZvcm1hdDogXCJCSU5cIiwgdGVzdDogL15bLStdPzBiWzAtMV9dKyQvLCByZXNvbHZlOiAoZSwgdCwgbikgPT4gZXQoZSwgMiwgMiwgbiksIHN0cmluZ2lmeTogZSA9PiB0dChlLCAyLCBcIjBiXCIpIH0sIHN0ID0geyBpZGVudGlmeTogWmUsIGRlZmF1bHQ6ICEwLCB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6aW50XCIsIGZvcm1hdDogXCJPQ1RcIiwgdGVzdDogL15bLStdPzBbMC03X10rJC8sIHJlc29sdmU6IChlLCB0LCBuKSA9PiBldChlLCAxLCA4LCBuKSwgc3RyaW5naWZ5OiBlID0+IHR0KGUsIDgsIFwiMFwiKSB9LCBpdCA9IHsgaWRlbnRpZnk6IFplLCBkZWZhdWx0OiAhMCwgdGFnOiBcInRhZzp5YW1sLm9yZywyMDAyOmludFwiLCB0ZXN0OiAvXlstK10/WzAtOV1bMC05X10qJC8sIHJlc29sdmU6IChlLCB0LCBuKSA9PiBldChlLCAwLCAxMCwgbiksIHN0cmluZ2lmeTogSWUgfSwgb3QgPSB7IGlkZW50aWZ5OiBaZSwgZGVmYXVsdDogITAsIHRhZzogXCJ0YWc6eWFtbC5vcmcsMjAwMjppbnRcIiwgZm9ybWF0OiBcIkhFWFwiLCB0ZXN0OiAvXlstK10/MHhbMC05YS1mQS1GX10rJC8sIHJlc29sdmU6IChlLCB0LCBuKSA9PiBldChlLCAyLCAxNiwgbiksIHN0cmluZ2lmeTogZSA9PiB0dChlLCAxNiwgXCIweFwiKSB9OyBjbGFzcyBydCBleHRlbmRzIGtlIHsgY29uc3RydWN0b3IoZSkgeyBzdXBlcihlKSwgdGhpcy50YWcgPSBydC50YWcgfSBhZGQoZSkgeyBsZXQgdDsgdCA9IHUoZSkgPyBlIDogZSAmJiBcIm9iamVjdFwiID09IHR5cGVvZiBlICYmIFwia2V5XCIgaW4gZSAmJiBcInZhbHVlXCIgaW4gZSAmJiBudWxsID09PSBlLnZhbHVlID8gbmV3IGRlKGUua2V5LCBudWxsKSA6IG5ldyBkZShlLCBudWxsKTsgYmUodGhpcy5pdGVtcywgdC5rZXkpIHx8IHRoaXMuaXRlbXMucHVzaCh0KSB9IGdldChlLCB0KSB7IGNvbnN0IG4gPSBiZSh0aGlzLml0ZW1zLCBlKTsgcmV0dXJuICF0ICYmIHUobikgPyBmKG4ua2V5KSA/IG4ua2V5LnZhbHVlIDogbi5rZXkgOiBuIH0gc2V0KGUsIHQpIHsgaWYgKFwiYm9vbGVhblwiICE9IHR5cGVvZiB0KSB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBib29sZWFuIHZhbHVlIGZvciBzZXQoa2V5LCB2YWx1ZSkgaW4gYSBZQU1MIHNldCwgbm90IFwiICsgdHlwZW9mIHQpOyBjb25zdCBuID0gYmUodGhpcy5pdGVtcywgZSk7IG4gJiYgIXQgPyB0aGlzLml0ZW1zLnNwbGljZSh0aGlzLml0ZW1zLmluZGV4T2YobiksIDEpIDogIW4gJiYgdCAmJiB0aGlzLml0ZW1zLnB1c2gobmV3IGRlKGUpKSB9IHRvSlNPTihlLCB0KSB7IHJldHVybiBzdXBlci50b0pTT04oZSwgdCwgU2V0KSB9IHRvU3RyaW5nKGUsIHQsIG4pIHsgaWYgKCFlKSByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcyk7IGlmICh0aGlzLmhhc0FsbE51bGxWYWx1ZXMoITApKSByZXR1cm4gc3VwZXIudG9TdHJpbmcoT2JqZWN0LmFzc2lnbih7fSwgZSwgeyBhbGxOdWxsVmFsdWVzOiAhMCB9KSwgdCwgbik7IHRocm93IG5ldyBFcnJvcihcIlNldCBpdGVtcyBtdXN0IGFsbCBoYXZlIG51bGwgdmFsdWVzXCIpIH0gc3RhdGljIGZyb20oZSwgdCwgbikgeyBjb25zdCB7IHJlcGxhY2VyOiBzIH0gPSBuLCBpID0gbmV3IHRoaXMoZSk7IGlmICh0ICYmIFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QodCkpIGZvciAobGV0IGUgb2YgdCkgXCJmdW5jdGlvblwiID09IHR5cGVvZiBzICYmIChlID0gcy5jYWxsKHQsIGUsIGUpKSwgaS5pdGVtcy5wdXNoKGhlKGUsIG51bGwsIG4pKTsgcmV0dXJuIGkgfSB9IHJ0LnRhZyA9IFwidGFnOnlhbWwub3JnLDIwMDI6c2V0XCI7IGNvbnN0IGF0ID0geyBjb2xsZWN0aW9uOiBcIm1hcFwiLCBpZGVudGlmeTogZSA9PiBlIGluc3RhbmNlb2YgU2V0LCBub2RlQ2xhc3M6IHJ0LCBkZWZhdWx0OiAhMSwgdGFnOiBcInRhZzp5YW1sLm9yZywyMDAyOnNldFwiLCBjcmVhdGVOb2RlOiAoZSwgdCwgbikgPT4gcnQuZnJvbShlLCB0LCBuKSwgcmVzb2x2ZShlLCB0KSB7IGlmIChsKGUpKSB7IGlmIChlLmhhc0FsbE51bGxWYWx1ZXMoITApKSByZXR1cm4gT2JqZWN0LmFzc2lnbihuZXcgcnQsIGUpOyB0KFwiU2V0IGl0ZW1zIG11c3QgYWxsIGhhdmUgbnVsbCB2YWx1ZXNcIikgfSBlbHNlIHQoXCJFeHBlY3RlZCBhIG1hcHBpbmcgZm9yIHRoaXMgdGFnXCIpOyByZXR1cm4gZSB9IH07IGZ1bmN0aW9uIGN0KGUsIHQpIHsgY29uc3QgbiA9IGVbMF0sIHMgPSBcIi1cIiA9PT0gbiB8fCBcIitcIiA9PT0gbiA/IGUuc3Vic3RyaW5nKDEpIDogZSwgaSA9IGUgPT4gdCA/IEJpZ0ludChlKSA6IE51bWJlcihlKSwgbyA9IHMucmVwbGFjZSgvXy9nLCBcIlwiKS5zcGxpdChcIjpcIikucmVkdWNlKCgoZSwgdCkgPT4gZSAqIGkoNjApICsgaSh0KSksIGkoMCkpOyByZXR1cm4gXCItXCIgPT09IG4gPyBpKC0xKSAqIG8gOiBvIH0gZnVuY3Rpb24gbHQoZSkgeyBsZXQgeyB2YWx1ZTogdCB9ID0gZSwgbiA9IGUgPT4gZTsgaWYgKFwiYmlnaW50XCIgPT0gdHlwZW9mIHQpIG4gPSBlID0+IEJpZ0ludChlKTsgZWxzZSBpZiAoaXNOYU4odCkgfHwgIWlzRmluaXRlKHQpKSByZXR1cm4gSWUoZSk7IGxldCBzID0gXCJcIjsgdCA8IDAgJiYgKHMgPSBcIi1cIiwgdCAqPSBuKC0xKSk7IGNvbnN0IGkgPSBuKDYwKSwgbyA9IFt0ICUgaV07IHJldHVybiB0IDwgNjAgPyBvLnVuc2hpZnQoMCkgOiAodCA9ICh0IC0gb1swXSkgLyBpLCBvLnVuc2hpZnQodCAlIGkpLCB0ID49IDYwICYmICh0ID0gKHQgLSBvWzBdKSAvIGksIG8udW5zaGlmdCh0KSkpLCBzICsgby5tYXAoKGUgPT4gU3RyaW5nKGUpLnBhZFN0YXJ0KDIsIFwiMFwiKSkpLmpvaW4oXCI6XCIpLnJlcGxhY2UoLzAwMDAwMFxcZCokLywgXCJcIikgfSBjb25zdCB1dCA9IHsgaWRlbnRpZnk6IGUgPT4gXCJiaWdpbnRcIiA9PSB0eXBlb2YgZSB8fCBOdW1iZXIuaXNJbnRlZ2VyKGUpLCBkZWZhdWx0OiAhMCwgdGFnOiBcInRhZzp5YW1sLm9yZywyMDAyOmludFwiLCBmb3JtYXQ6IFwiVElNRVwiLCB0ZXN0OiAvXlstK10/WzAtOV1bMC05X10qKD86OlswLTVdP1swLTldKSskLywgcmVzb2x2ZTogKGUsIHQsIHsgaW50QXNCaWdJbnQ6IG4gfSkgPT4gY3QoZSwgbiksIHN0cmluZ2lmeTogbHQgfSwgZnQgPSB7IGlkZW50aWZ5OiBlID0+IFwibnVtYmVyXCIgPT0gdHlwZW9mIGUsIGRlZmF1bHQ6ICEwLCB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6ZmxvYXRcIiwgZm9ybWF0OiBcIlRJTUVcIiwgdGVzdDogL15bLStdP1swLTldWzAtOV9dKig/OjpbMC01XT9bMC05XSkrXFwuWzAtOV9dKiQvLCByZXNvbHZlOiBlID0+IGN0KGUsICExKSwgc3RyaW5naWZ5OiBsdCB9LCBodCA9IHsgaWRlbnRpZnk6IGUgPT4gZSBpbnN0YW5jZW9mIERhdGUsIGRlZmF1bHQ6ICEwLCB0YWc6IFwidGFnOnlhbWwub3JnLDIwMDI6dGltZXN0YW1wXCIsIHRlc3Q6IFJlZ0V4cChcIl4oWzAtOV17NH0pLShbMC05XXsxLDJ9KS0oWzAtOV17MSwyfSkoPzooPzp0fFR8WyBcXFxcdF0rKShbMC05XXsxLDJ9KTooWzAtOV17MSwyfSk6KFswLTldezEsMn0oXFxcXC5bMC05XSspPykoPzpbIFxcXFx0XSooWnxbLStdWzAxMl0/WzAtOV0oPzo6WzAtOV17Mn0pPykpPyk/JFwiKSwgcmVzb2x2ZShlKSB7IGNvbnN0IHQgPSBlLm1hdGNoKGh0LnRlc3QpOyBpZiAoIXQpIHRocm93IG5ldyBFcnJvcihcIiEhdGltZXN0YW1wIGV4cGVjdHMgYSBkYXRlLCBzdGFydGluZyB3aXRoIHl5eXktbW0tZGRcIik7IGNvbnN0IFssIG4sIHMsIGksIG8sIHIsIGFdID0gdC5tYXAoTnVtYmVyKSwgYyA9IHRbN10gPyBOdW1iZXIoKHRbN10gKyBcIjAwXCIpLnN1YnN0cigxLCAzKSkgOiAwOyBsZXQgbCA9IERhdGUuVVRDKG4sIHMgLSAxLCBpLCBvIHx8IDAsIHIgfHwgMCwgYSB8fCAwLCBjKTsgY29uc3QgdSA9IHRbOF07IGlmICh1ICYmIFwiWlwiICE9PSB1KSB7IGxldCBlID0gY3QodSwgITEpOyBNYXRoLmFicyhlKSA8IDMwICYmIChlICo9IDYwKSwgbCAtPSA2ZTQgKiBlIH0gcmV0dXJuIG5ldyBEYXRlKGwpIH0sIHN0cmluZ2lmeTogKHsgdmFsdWU6IGUgfSkgPT4gZT8udG9JU09TdHJpbmcoKS5yZXBsYWNlKC8oVDAwOjAwOjAwKT9cXC4wMDBaJC8sIFwiXCIpID8/IFwiXCIgfSwgZHQgPSBbd2UsIEVlLCBOZSwgT2UsIEdlLCBRZSwgbnQsIHN0LCBpdCwgb3QsIEhlLCBYZSwgemUsIFVlLCBjZSwgWWUsIFZlLCBhdCwgdXQsIGZ0LCBodF0sIHB0ID0gbmV3IE1hcChbW1wiY29yZVwiLCBNZV0sIFtcImZhaWxzYWZlXCIsIFt3ZSwgRWUsIE5lXV0sIFtcImpzb25cIiwgUGVdLCBbXCJ5YW1sMTFcIiwgZHRdLCBbXCJ5YW1sLTEuMVwiLCBkdF1dKSwgbXQgPSB7IGJpbmFyeTogVWUsIGJvb2w6IEFlLCBmbG9hdDogeGUsIGZsb2F0RXhwOiBMZSwgZmxvYXROYU46IFRlLCBmbG9hdFRpbWU6IGZ0LCBpbnQ6IEJlLCBpbnRIZXg6IGplLCBpbnRPY3Q6IEtlLCBpbnRUaW1lOiB1dCwgbWFwOiB3ZSwgbWVyZ2U6IGNlLCBudWxsOiBPZSwgb21hcDogWWUsIHBhaXJzOiBWZSwgc2VxOiBFZSwgc2V0OiBhdCwgdGltZXN0YW1wOiBodCB9LCB5dCA9IHsgXCJ0YWc6eWFtbC5vcmcsMjAwMjpiaW5hcnlcIjogVWUsIFwidGFnOnlhbWwub3JnLDIwMDI6bWVyZ2VcIjogY2UsIFwidGFnOnlhbWwub3JnLDIwMDI6b21hcFwiOiBZZSwgXCJ0YWc6eWFtbC5vcmcsMjAwMjpwYWlyc1wiOiBWZSwgXCJ0YWc6eWFtbC5vcmcsMjAwMjpzZXRcIjogYXQsIFwidGFnOnlhbWwub3JnLDIwMDI6dGltZXN0YW1wXCI6IGh0IH07IGZ1bmN0aW9uIGd0KGUsIHQsIG4pIHsgY29uc3QgcyA9IHB0LmdldCh0KTsgaWYgKHMgJiYgIWUpIHJldHVybiBuICYmICFzLmluY2x1ZGVzKGNlKSA/IHMuY29uY2F0KGNlKSA6IHMuc2xpY2UoKTsgbGV0IGkgPSBzOyBpZiAoIWkpIHsgaWYgKCFBcnJheS5pc0FycmF5KGUpKSB7IGNvbnN0IGUgPSBBcnJheS5mcm9tKHB0LmtleXMoKSkuZmlsdGVyKChlID0+IFwieWFtbDExXCIgIT09IGUpKS5tYXAoKGUgPT4gSlNPTi5zdHJpbmdpZnkoZSkpKS5qb2luKFwiLCBcIik7IHRocm93IG5ldyBFcnJvcihgVW5rbm93biBzY2hlbWEgXCIke3R9XCI7IHVzZSBvbmUgb2YgJHtlfSBvciBkZWZpbmUgY3VzdG9tVGFncyBhcnJheWApIH0gaSA9IFtdIH0gaWYgKEFycmF5LmlzQXJyYXkoZSkpIGZvciAoY29uc3QgdCBvZiBlKSBpID0gaS5jb25jYXQodCk7IGVsc2UgXCJmdW5jdGlvblwiID09IHR5cGVvZiBlICYmIChpID0gZShpLnNsaWNlKCkpKTsgcmV0dXJuIG4gJiYgKGkgPSBpLmNvbmNhdChjZSkpLCBpLnJlZHVjZSgoKGUsIHQpID0+IHsgY29uc3QgbiA9IFwic3RyaW5nXCIgPT0gdHlwZW9mIHQgPyBtdFt0XSA6IHQ7IGlmICghbikgeyBjb25zdCBlID0gSlNPTi5zdHJpbmdpZnkodCksIG4gPSBPYmplY3Qua2V5cyhtdCkubWFwKChlID0+IEpTT04uc3RyaW5naWZ5KGUpKSkuam9pbihcIiwgXCIpOyB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gY3VzdG9tIHRhZyAke2V9OyB1c2Ugb25lIG9mICR7bn1gKSB9IHJldHVybiBlLmluY2x1ZGVzKG4pIHx8IGUucHVzaChuKSwgZSB9KSwgW10pIH0gY29uc3QgYnQgPSAoZSwgdCkgPT4gZS5rZXkgPCB0LmtleSA/IC0xIDogZS5rZXkgPiB0LmtleSA/IDEgOiAwOyBjbGFzcyBrdCB7IGNvbnN0cnVjdG9yKHsgY29tcGF0OiBlLCBjdXN0b21UYWdzOiB0LCBtZXJnZTogcywgcmVzb2x2ZUtub3duVGFnczogciwgc2NoZW1hOiBhLCBzb3J0TWFwRW50cmllczogYywgdG9TdHJpbmdEZWZhdWx0czogbCB9KSB7IHRoaXMuY29tcGF0ID0gQXJyYXkuaXNBcnJheShlKSA/IGd0KGUsIFwiY29tcGF0XCIpIDogZSA/IGd0KG51bGwsIGUpIDogbnVsbCwgdGhpcy5uYW1lID0gXCJzdHJpbmdcIiA9PSB0eXBlb2YgYSAmJiBhIHx8IFwiY29yZVwiLCB0aGlzLmtub3duVGFncyA9IHIgPyB5dCA6IHt9LCB0aGlzLnRhZ3MgPSBndCh0LCB0aGlzLm5hbWUsIHMpLCB0aGlzLnRvU3RyaW5nT3B0aW9ucyA9IGwgPz8gbnVsbCwgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIG4sIHsgdmFsdWU6IHdlIH0pLCBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgaSwgeyB2YWx1ZTogTmUgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBvLCB7IHZhbHVlOiBFZSB9KSwgdGhpcy5zb3J0TWFwRW50cmllcyA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgYyA/IGMgOiAhMCA9PT0gYyA/IGJ0IDogbnVsbCB9IGNsb25lKCkgeyBjb25zdCBlID0gT2JqZWN0LmNyZWF0ZShrdC5wcm90b3R5cGUsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHRoaXMpKTsgcmV0dXJuIGUudGFncyA9IHRoaXMudGFncy5zbGljZSgpLCBlIH0gfSBjbGFzcyB3dCB7IGNvbnN0cnVjdG9yKGUsIG4sIHMpIHsgdGhpcy5jb21tZW50QmVmb3JlID0gbnVsbCwgdGhpcy5jb21tZW50ID0gbnVsbCwgdGhpcy5lcnJvcnMgPSBbXSwgdGhpcy53YXJuaW5ncyA9IFtdLCBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgciwgeyB2YWx1ZTogdCB9KTsgbGV0IGkgPSBudWxsOyBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIG4gfHwgQXJyYXkuaXNBcnJheShuKSA/IGkgPSBuIDogdm9pZCAwID09PSBzICYmIG4gJiYgKHMgPSBuLCBuID0gdm9pZCAwKTsgY29uc3QgbyA9IE9iamVjdC5hc3NpZ24oeyBpbnRBc0JpZ0ludDogITEsIGtlZXBTb3VyY2VUb2tlbnM6ICExLCBsb2dMZXZlbDogXCJ3YXJuXCIsIHByZXR0eUVycm9yczogITAsIHN0cmljdDogITAsIHN0cmluZ0tleXM6ICExLCB1bmlxdWVLZXlzOiAhMCwgdmVyc2lvbjogXCIxLjJcIiB9LCBzKTsgdGhpcy5vcHRpb25zID0gbzsgbGV0IHsgdmVyc2lvbjogYSB9ID0gbzsgcz8uX2RpcmVjdGl2ZXMgPyAodGhpcy5kaXJlY3RpdmVzID0gcy5fZGlyZWN0aXZlcy5hdERvY3VtZW50KCksIHRoaXMuZGlyZWN0aXZlcy55YW1sLmV4cGxpY2l0ICYmIChhID0gdGhpcy5kaXJlY3RpdmVzLnlhbWwudmVyc2lvbikpIDogdGhpcy5kaXJlY3RpdmVzID0gbmV3IEkoeyB2ZXJzaW9uOiBhIH0pLCB0aGlzLnNldFNjaGVtYShhLCBzKSwgdGhpcy5jb250ZW50cyA9IHZvaWQgMCA9PT0gZSA/IG51bGwgOiB0aGlzLmNyZWF0ZU5vZGUoZSwgaSwgcykgfSBjbG9uZSgpIHsgY29uc3QgZSA9IE9iamVjdC5jcmVhdGUod3QucHJvdG90eXBlLCB7IFtyXTogeyB2YWx1ZTogdCB9IH0pOyByZXR1cm4gZS5jb21tZW50QmVmb3JlID0gdGhpcy5jb21tZW50QmVmb3JlLCBlLmNvbW1lbnQgPSB0aGlzLmNvbW1lbnQsIGUuZXJyb3JzID0gdGhpcy5lcnJvcnMuc2xpY2UoKSwgZS53YXJuaW5ncyA9IHRoaXMud2FybmluZ3Muc2xpY2UoKSwgZS5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5vcHRpb25zKSwgdGhpcy5kaXJlY3RpdmVzICYmIChlLmRpcmVjdGl2ZXMgPSB0aGlzLmRpcmVjdGl2ZXMuY2xvbmUoKSksIGUuc2NoZW1hID0gdGhpcy5zY2hlbWEuY2xvbmUoKSwgZS5jb250ZW50cyA9IHAodGhpcy5jb250ZW50cykgPyB0aGlzLmNvbnRlbnRzLmNsb25lKGUuc2NoZW1hKSA6IHRoaXMuY29udGVudHMsIHRoaXMucmFuZ2UgJiYgKGUucmFuZ2UgPSB0aGlzLnJhbmdlLnNsaWNlKCkpLCBlIH0gYWRkKGUpIHsgdnQodGhpcy5jb250ZW50cykgJiYgdGhpcy5jb250ZW50cy5hZGQoZSkgfSBhZGRJbihlLCB0KSB7IHZ0KHRoaXMuY29udGVudHMpICYmIHRoaXMuY29udGVudHMuYWRkSW4oZSwgdCkgfSBjcmVhdGVBbGlhcyhlLCB0KSB7IGlmICghZS5hbmNob3IpIHsgY29uc3QgbiA9IEwodGhpcyk7IGUuYW5jaG9yID0gIXQgfHwgbi5oYXModCkgPyB4KHQgfHwgXCJhXCIsIG4pIDogdCB9IHJldHVybiBuZXcgSyhlLmFuY2hvcikgfSBjcmVhdGVOb2RlKGUsIHQsIG4pIHsgbGV0IHM7IGlmIChcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIHQpIGUgPSB0LmNhbGwoeyBcIlwiOiBlIH0sIFwiXCIsIGUpLCBzID0gdDsgZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh0KSkgeyBjb25zdCBlID0gZSA9PiBcIm51bWJlclwiID09IHR5cGVvZiBlIHx8IGUgaW5zdGFuY2VvZiBTdHJpbmcgfHwgZSBpbnN0YW5jZW9mIE51bWJlciwgbiA9IHQuZmlsdGVyKGUpLm1hcChTdHJpbmcpOyBuLmxlbmd0aCA+IDAgJiYgKHQgPSB0LmNvbmNhdChuKSksIHMgPSB0IH0gZWxzZSB2b2lkIDAgPT09IG4gJiYgdCAmJiAobiA9IHQsIHQgPSB2b2lkIDApOyBjb25zdCB7IGFsaWFzRHVwbGljYXRlT2JqZWN0czogaSwgYW5jaG9yUHJlZml4OiBvLCBmbG93OiByLCBrZWVwVW5kZWZpbmVkOiBhLCBvblRhZ09iajogYywgdGFnOiBsIH0gPSBuID8/IHt9LCB7IG9uQW5jaG9yOiB1LCBzZXRBbmNob3JzOiBoLCBzb3VyY2VPYmplY3RzOiBwIH0gPSBmdW5jdGlvbiAoZSwgdCkgeyBjb25zdCBuID0gW10sIHMgPSBuZXcgTWFwOyBsZXQgaSA9IG51bGw7IHJldHVybiB7IG9uQW5jaG9yOiBzID0+IHsgbi5wdXNoKHMpLCBpID8/IChpID0gTChlKSk7IGNvbnN0IG8gPSB4KHQsIGkpOyByZXR1cm4gaS5hZGQobyksIG8gfSwgc2V0QW5jaG9yczogKCkgPT4geyBmb3IgKGNvbnN0IGUgb2YgbikgeyBjb25zdCB0ID0gcy5nZXQoZSk7IGlmIChcIm9iamVjdFwiICE9IHR5cGVvZiB0IHx8ICF0LmFuY2hvciB8fCAhZih0Lm5vZGUpICYmICFkKHQubm9kZSkpIHsgY29uc3QgdCA9IG5ldyBFcnJvcihcIkZhaWxlZCB0byByZXNvbHZlIHJlcGVhdGVkIG9iamVjdCAodGhpcyBzaG91bGQgbm90IGhhcHBlbilcIik7IHRocm93IHQuc291cmNlID0gZSwgdCB9IHQubm9kZS5hbmNob3IgPSB0LmFuY2hvciB9IH0sIHNvdXJjZU9iamVjdHM6IHMgfSB9KHRoaXMsIG8gfHwgXCJhXCIpLCBtID0gRChlLCBsLCB7IGFsaWFzRHVwbGljYXRlT2JqZWN0czogaSA/PyAhMCwga2VlcFVuZGVmaW5lZDogYSA/PyAhMSwgb25BbmNob3I6IHUsIG9uVGFnT2JqOiBjLCByZXBsYWNlcjogcywgc2NoZW1hOiB0aGlzLnNjaGVtYSwgc291cmNlT2JqZWN0czogcCB9KTsgcmV0dXJuIHIgJiYgZChtKSAmJiAobS5mbG93ID0gITApLCBoKCksIG0gfSBjcmVhdGVQYWlyKGUsIHQsIG4gPSB7fSkgeyBjb25zdCBzID0gdGhpcy5jcmVhdGVOb2RlKGUsIG51bGwsIG4pLCBpID0gdGhpcy5jcmVhdGVOb2RlKHQsIG51bGwsIG4pOyByZXR1cm4gbmV3IGRlKHMsIGkpIH0gZGVsZXRlKGUpIHsgcmV0dXJuICEhdnQodGhpcy5jb250ZW50cykgJiYgdGhpcy5jb250ZW50cy5kZWxldGUoZSkgfSBkZWxldGVJbihlKSB7IHJldHVybiBQKGUpID8gbnVsbCAhPSB0aGlzLmNvbnRlbnRzICYmICh0aGlzLmNvbnRlbnRzID0gbnVsbCwgITApIDogISF2dCh0aGlzLmNvbnRlbnRzKSAmJiB0aGlzLmNvbnRlbnRzLmRlbGV0ZUluKGUpIH0gZ2V0KGUsIHQpIHsgcmV0dXJuIGQodGhpcy5jb250ZW50cykgPyB0aGlzLmNvbnRlbnRzLmdldChlLCB0KSA6IHZvaWQgMCB9IGdldEluKGUsIHQpIHsgcmV0dXJuIFAoZSkgPyAhdCAmJiBmKHRoaXMuY29udGVudHMpID8gdGhpcy5jb250ZW50cy52YWx1ZSA6IHRoaXMuY29udGVudHMgOiBkKHRoaXMuY29udGVudHMpID8gdGhpcy5jb250ZW50cy5nZXRJbihlLCB0KSA6IHZvaWQgMCB9IGhhcyhlKSB7IHJldHVybiAhIWQodGhpcy5jb250ZW50cykgJiYgdGhpcy5jb250ZW50cy5oYXMoZSkgfSBoYXNJbihlKSB7IHJldHVybiBQKGUpID8gdm9pZCAwICE9PSB0aGlzLmNvbnRlbnRzIDogISFkKHRoaXMuY29udGVudHMpICYmIHRoaXMuY29udGVudHMuaGFzSW4oZSkgfSBzZXQoZSwgdCkgeyBudWxsID09IHRoaXMuY29udGVudHMgPyB0aGlzLmNvbnRlbnRzID0gcSh0aGlzLnNjaGVtYSwgW2VdLCB0KSA6IHZ0KHRoaXMuY29udGVudHMpICYmIHRoaXMuY29udGVudHMuc2V0KGUsIHQpIH0gc2V0SW4oZSwgdCkgeyBQKGUpID8gdGhpcy5jb250ZW50cyA9IHQgOiBudWxsID09IHRoaXMuY29udGVudHMgPyB0aGlzLmNvbnRlbnRzID0gcSh0aGlzLnNjaGVtYSwgQXJyYXkuZnJvbShlKSwgdCkgOiB2dCh0aGlzLmNvbnRlbnRzKSAmJiB0aGlzLmNvbnRlbnRzLnNldEluKGUsIHQpIH0gc2V0U2NoZW1hKGUsIHQgPSB7fSkgeyBsZXQgbjsgc3dpdGNoIChcIm51bWJlclwiID09IHR5cGVvZiBlICYmIChlID0gU3RyaW5nKGUpKSwgZSkgeyBjYXNlIFwiMS4xXCI6IHRoaXMuZGlyZWN0aXZlcyA/IHRoaXMuZGlyZWN0aXZlcy55YW1sLnZlcnNpb24gPSBcIjEuMVwiIDogdGhpcy5kaXJlY3RpdmVzID0gbmV3IEkoeyB2ZXJzaW9uOiBcIjEuMVwiIH0pLCBuID0geyByZXNvbHZlS25vd25UYWdzOiAhMSwgc2NoZW1hOiBcInlhbWwtMS4xXCIgfTsgYnJlYWs7IGNhc2UgXCIxLjJcIjogY2FzZSBcIm5leHRcIjogdGhpcy5kaXJlY3RpdmVzID8gdGhpcy5kaXJlY3RpdmVzLnlhbWwudmVyc2lvbiA9IGUgOiB0aGlzLmRpcmVjdGl2ZXMgPSBuZXcgSSh7IHZlcnNpb246IGUgfSksIG4gPSB7IHJlc29sdmVLbm93blRhZ3M6ICEwLCBzY2hlbWE6IFwiY29yZVwiIH07IGJyZWFrOyBjYXNlIG51bGw6IHRoaXMuZGlyZWN0aXZlcyAmJiBkZWxldGUgdGhpcy5kaXJlY3RpdmVzLCBuID0gbnVsbDsgYnJlYWs7IGRlZmF1bHQ6IHsgY29uc3QgdCA9IEpTT04uc3RyaW5naWZ5KGUpOyB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICcxLjEnLCAnMS4yJyBvciBudWxsIGFzIGZpcnN0IGFyZ3VtZW50LCBidXQgZm91bmQ6ICR7dH1gKSB9IH1pZiAodC5zY2hlbWEgaW5zdGFuY2VvZiBPYmplY3QpIHRoaXMuc2NoZW1hID0gdC5zY2hlbWE7IGVsc2UgeyBpZiAoIW4pIHRocm93IG5ldyBFcnJvcihcIldpdGggYSBudWxsIFlBTUwgdmVyc2lvbiwgdGhlIHsgc2NoZW1hOiBTY2hlbWEgfSBvcHRpb24gaXMgcmVxdWlyZWRcIik7IHRoaXMuc2NoZW1hID0gbmV3IGt0KE9iamVjdC5hc3NpZ24obiwgdCkpIH0gfSB0b0pTKHsganNvbjogZSwganNvbkFyZzogdCwgbWFwQXNNYXA6IG4sIG1heEFsaWFzQ291bnQ6IHMsIG9uQW5jaG9yOiBpLCByZXZpdmVyOiBvIH0gPSB7fSkgeyBjb25zdCByID0geyBhbmNob3JzOiBuZXcgTWFwLCBkb2M6IHRoaXMsIGtlZXA6ICFlLCBtYXBBc01hcDogITAgPT09IG4sIG1hcEtleVdhcm5lZDogITEsIG1heEFsaWFzQ291bnQ6IFwibnVtYmVyXCIgPT0gdHlwZW9mIHMgPyBzIDogMTAwIH0sIGEgPSBDKHRoaXMuY29udGVudHMsIHQgPz8gXCJcIiwgcik7IGlmIChcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIGkpIGZvciAoY29uc3QgeyBjb3VudDogZSwgcmVzOiB0IH0gb2Ygci5hbmNob3JzLnZhbHVlcygpKSBpKHQsIGUpOyByZXR1cm4gXCJmdW5jdGlvblwiID09IHR5cGVvZiBvID8gJChvLCB7IFwiXCI6IGEgfSwgXCJcIiwgYSkgOiBhIH0gdG9KU09OKGUsIHQpIHsgcmV0dXJuIHRoaXMudG9KUyh7IGpzb246ICEwLCBqc29uQXJnOiBlLCBtYXBBc01hcDogITEsIG9uQW5jaG9yOiB0IH0pIH0gdG9TdHJpbmcoZSA9IHt9KSB7IGlmICh0aGlzLmVycm9ycy5sZW5ndGggPiAwKSB0aHJvdyBuZXcgRXJyb3IoXCJEb2N1bWVudCB3aXRoIGVycm9ycyBjYW5ub3QgYmUgc3RyaW5naWZpZWRcIik7IGlmIChcImluZGVudFwiIGluIGUgJiYgKCFOdW1iZXIuaXNJbnRlZ2VyKGUuaW5kZW50KSB8fCBOdW1iZXIoZS5pbmRlbnQpIDw9IDApKSB7IGNvbnN0IHQgPSBKU09OLnN0cmluZ2lmeShlLmluZGVudCk7IHRocm93IG5ldyBFcnJvcihgXCJpbmRlbnRcIiBvcHRpb24gbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIsIG5vdCAke3R9YCkgfSByZXR1cm4gZnVuY3Rpb24gKGUsIHQpIHsgY29uc3QgbiA9IFtdOyBsZXQgcyA9ICEwID09PSB0LmRpcmVjdGl2ZXM7IGlmICghMSAhPT0gdC5kaXJlY3RpdmVzICYmIGUuZGlyZWN0aXZlcykgeyBjb25zdCB0ID0gZS5kaXJlY3RpdmVzLnRvU3RyaW5nKGUpOyB0ID8gKG4ucHVzaCh0KSwgcyA9ICEwKSA6IGUuZGlyZWN0aXZlcy5kb2NTdGFydCAmJiAocyA9ICEwKSB9IHMgJiYgbi5wdXNoKFwiLS0tXCIpOyBjb25zdCBpID0gaWUoZSwgdCksIHsgY29tbWVudFN0cmluZzogbyB9ID0gaS5vcHRpb25zOyBpZiAoZS5jb21tZW50QmVmb3JlKSB7IDEgIT09IG4ubGVuZ3RoICYmIG4udW5zaGlmdChcIlwiKTsgY29uc3QgdCA9IG8oZS5jb21tZW50QmVmb3JlKTsgbi51bnNoaWZ0KEYodCwgXCJcIikpIH0gbGV0IHIgPSAhMSwgYSA9IG51bGw7IGlmIChlLmNvbnRlbnRzKSB7IGlmIChwKGUuY29udGVudHMpKSB7IGlmIChlLmNvbnRlbnRzLnNwYWNlQmVmb3JlICYmIHMgJiYgbi5wdXNoKFwiXCIpLCBlLmNvbnRlbnRzLmNvbW1lbnRCZWZvcmUpIHsgY29uc3QgdCA9IG8oZS5jb250ZW50cy5jb21tZW50QmVmb3JlKTsgbi5wdXNoKEYodCwgXCJcIikpIH0gaS5mb3JjZUJsb2NrSW5kZW50ID0gISFlLmNvbW1lbnQsIGEgPSBlLmNvbnRlbnRzLmNvbW1lbnQgfSBjb25zdCB0ID0gYSA/IHZvaWQgMCA6ICgpID0+IHIgPSAhMDsgbGV0IGMgPSBvZShlLmNvbnRlbnRzLCBpLCAoKCkgPT4gYSA9IG51bGwpLCB0KTsgYSAmJiAoYyArPSBWKGMsIFwiXCIsIG8oYSkpKSwgXCJ8XCIgIT09IGNbMF0gJiYgXCI+XCIgIT09IGNbMF0gfHwgXCItLS1cIiAhPT0gbltuLmxlbmd0aCAtIDFdID8gbi5wdXNoKGMpIDogbltuLmxlbmd0aCAtIDFdID0gYC0tLSAke2N9YCB9IGVsc2Ugbi5wdXNoKG9lKGUuY29udGVudHMsIGkpKTsgaWYgKGUuZGlyZWN0aXZlcz8uZG9jRW5kKSBpZiAoZS5jb21tZW50KSB7IGNvbnN0IHQgPSBvKGUuY29tbWVudCk7IHQuaW5jbHVkZXMoXCJcXG5cIikgPyAobi5wdXNoKFwiLi4uXCIpLCBuLnB1c2goRih0LCBcIlwiKSkpIDogbi5wdXNoKGAuLi4gJHt0fWApIH0gZWxzZSBuLnB1c2goXCIuLi5cIik7IGVsc2UgeyBsZXQgdCA9IGUuY29tbWVudDsgdCAmJiByICYmICh0ID0gdC5yZXBsYWNlKC9eXFxuKy8sIFwiXCIpKSwgdCAmJiAociAmJiAhYSB8fCBcIlwiID09PSBuW24ubGVuZ3RoIC0gMV0gfHwgbi5wdXNoKFwiXCIpLCBuLnB1c2goRihvKHQpLCBcIlwiKSkpIH0gcmV0dXJuIG4uam9pbihcIlxcblwiKSArIFwiXFxuXCIgfSh0aGlzLCBlKSB9IH0gZnVuY3Rpb24gdnQoZSkgeyBpZiAoZChlKSkgcmV0dXJuICEwOyB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBhIFlBTUwgY29sbGVjdGlvbiBhcyBkb2N1bWVudCBjb250ZW50c1wiKSB9IGNsYXNzIFN0IGV4dGVuZHMgRXJyb3IgeyBjb25zdHJ1Y3RvcihlLCB0LCBuLCBzKSB7IHN1cGVyKCksIHRoaXMubmFtZSA9IGUsIHRoaXMuY29kZSA9IG4sIHRoaXMubWVzc2FnZSA9IHMsIHRoaXMucG9zID0gdCB9IH0gY2xhc3MgRXQgZXh0ZW5kcyBTdCB7IGNvbnN0cnVjdG9yKGUsIHQsIG4pIHsgc3VwZXIoXCJZQU1MUGFyc2VFcnJvclwiLCBlLCB0LCBuKSB9IH0gY2xhc3MgTnQgZXh0ZW5kcyBTdCB7IGNvbnN0cnVjdG9yKGUsIHQsIG4pIHsgc3VwZXIoXCJZQU1MV2FybmluZ1wiLCBlLCB0LCBuKSB9IH0gY29uc3QgT3QgPSAoZSwgdCkgPT4gbiA9PiB7IGlmICgtMSA9PT0gbi5wb3NbMF0pIHJldHVybjsgbi5saW5lUG9zID0gbi5wb3MubWFwKChlID0+IHQubGluZVBvcyhlKSkpOyBjb25zdCB7IGxpbmU6IHMsIGNvbDogaSB9ID0gbi5saW5lUG9zWzBdOyBuLm1lc3NhZ2UgKz0gYCBhdCBsaW5lICR7c30sIGNvbHVtbiAke2l9YDsgbGV0IG8gPSBpIC0gMSwgciA9IGUuc3Vic3RyaW5nKHQubGluZVN0YXJ0c1tzIC0gMV0sIHQubGluZVN0YXJ0c1tzXSkucmVwbGFjZSgvW1xcblxccl0rJC8sIFwiXCIpOyBpZiAobyA+PSA2MCAmJiByLmxlbmd0aCA+IDgwKSB7IGNvbnN0IGUgPSBNYXRoLm1pbihvIC0gMzksIHIubGVuZ3RoIC0gNzkpOyByID0gXCLigKZcIiArIHIuc3Vic3RyaW5nKGUpLCBvIC09IGUgLSAxIH0gaWYgKHIubGVuZ3RoID4gODAgJiYgKHIgPSByLnN1YnN0cmluZygwLCA3OSkgKyBcIuKAplwiKSwgcyA+IDEgJiYgL14gKiQvLnRlc3Qoci5zdWJzdHJpbmcoMCwgbykpKSB7IGxldCBuID0gZS5zdWJzdHJpbmcodC5saW5lU3RhcnRzW3MgLSAyXSwgdC5saW5lU3RhcnRzW3MgLSAxXSk7IG4ubGVuZ3RoID4gODAgJiYgKG4gPSBuLnN1YnN0cmluZygwLCA3OSkgKyBcIuKAplxcblwiKSwgciA9IG4gKyByIH0gaWYgKC9bXiBdLy50ZXN0KHIpKSB7IGxldCBlID0gMTsgY29uc3QgdCA9IG4ubGluZVBvc1sxXTsgdCAmJiB0LmxpbmUgPT09IHMgJiYgdC5jb2wgPiBpICYmIChlID0gTWF0aC5tYXgoMSwgTWF0aC5taW4odC5jb2wgLSBpLCA4MCAtIG8pKSk7IGNvbnN0IGEgPSBcIiBcIi5yZXBlYXQobykgKyBcIl5cIi5yZXBlYXQoZSk7IG4ubWVzc2FnZSArPSBgOlxcblxcbiR7cn1cXG4ke2F9XFxuYCB9IH07IGZ1bmN0aW9uIEF0KGUsIHsgZmxvdzogdCwgaW5kaWNhdG9yOiBuLCBuZXh0OiBzLCBvZmZzZXQ6IGksIG9uRXJyb3I6IG8sIHBhcmVudEluZGVudDogciwgc3RhcnRPbk5ld2xpbmU6IGEgfSkgeyBsZXQgYyA9ICExLCBsID0gYSwgdSA9IGEsIGYgPSBcIlwiLCBoID0gXCJcIiwgZCA9ICExLCBwID0gITEsIG0gPSBudWxsLCB5ID0gbnVsbCwgZyA9IG51bGwsIGIgPSBudWxsLCBrID0gbnVsbCwgdyA9IG51bGwsIHYgPSBudWxsOyBmb3IgKGNvbnN0IGkgb2YgZSkgc3dpdGNoIChwICYmIChcInNwYWNlXCIgIT09IGkudHlwZSAmJiBcIm5ld2xpbmVcIiAhPT0gaS50eXBlICYmIFwiY29tbWFcIiAhPT0gaS50eXBlICYmIG8oaS5vZmZzZXQsIFwiTUlTU0lOR19DSEFSXCIsIFwiVGFncyBhbmQgYW5jaG9ycyBtdXN0IGJlIHNlcGFyYXRlZCBmcm9tIHRoZSBuZXh0IHRva2VuIGJ5IHdoaXRlIHNwYWNlXCIpLCBwID0gITEpLCBtICYmIChsICYmIFwiY29tbWVudFwiICE9PSBpLnR5cGUgJiYgXCJuZXdsaW5lXCIgIT09IGkudHlwZSAmJiBvKG0sIFwiVEFCX0FTX0lOREVOVFwiLCBcIlRhYnMgYXJlIG5vdCBhbGxvd2VkIGFzIGluZGVudGF0aW9uXCIpLCBtID0gbnVsbCksIGkudHlwZSkgeyBjYXNlIFwic3BhY2VcIjogdCB8fCBcImRvYy1zdGFydFwiID09PSBuICYmIFwiZmxvdy1jb2xsZWN0aW9uXCIgPT09IHM/LnR5cGUgfHwgIWkuc291cmNlLmluY2x1ZGVzKFwiXFx0XCIpIHx8IChtID0gaSksIHUgPSAhMDsgYnJlYWs7IGNhc2UgXCJjb21tZW50XCI6IHsgdSB8fCBvKGksIFwiTUlTU0lOR19DSEFSXCIsIFwiQ29tbWVudHMgbXVzdCBiZSBzZXBhcmF0ZWQgZnJvbSBvdGhlciB0b2tlbnMgYnkgd2hpdGUgc3BhY2UgY2hhcmFjdGVyc1wiKTsgY29uc3QgZSA9IGkuc291cmNlLnN1YnN0cmluZygxKSB8fCBcIiBcIjsgZiA/IGYgKz0gaCArIGUgOiBmID0gZSwgaCA9IFwiXCIsIGwgPSAhMTsgYnJlYWsgfSBjYXNlIFwibmV3bGluZVwiOiBsID8gZiA/IGYgKz0gaS5zb3VyY2UgOiB3ICYmIFwic2VxLWl0ZW0taW5kXCIgPT09IG4gfHwgKGMgPSAhMCkgOiBoICs9IGkuc291cmNlLCBsID0gITAsIGQgPSAhMCwgKHkgfHwgZykgJiYgKGIgPSBpKSwgdSA9ICEwOyBicmVhazsgY2FzZSBcImFuY2hvclwiOiB5ICYmIG8oaSwgXCJNVUxUSVBMRV9BTkNIT1JTXCIsIFwiQSBub2RlIGNhbiBoYXZlIGF0IG1vc3Qgb25lIGFuY2hvclwiKSwgaS5zb3VyY2UuZW5kc1dpdGgoXCI6XCIpICYmIG8oaS5vZmZzZXQgKyBpLnNvdXJjZS5sZW5ndGggLSAxLCBcIkJBRF9BTElBU1wiLCBcIkFuY2hvciBlbmRpbmcgaW4gOiBpcyBhbWJpZ3VvdXNcIiwgITApLCB5ID0gaSwgdiA/PyAodiA9IGkub2Zmc2V0KSwgbCA9ICExLCB1ID0gITEsIHAgPSAhMDsgYnJlYWs7IGNhc2UgXCJ0YWdcIjogZyAmJiBvKGksIFwiTVVMVElQTEVfVEFHU1wiLCBcIkEgbm9kZSBjYW4gaGF2ZSBhdCBtb3N0IG9uZSB0YWdcIiksIGcgPSBpLCB2ID8/ICh2ID0gaS5vZmZzZXQpLCBsID0gITEsIHUgPSAhMSwgcCA9ICEwOyBicmVhazsgY2FzZSBuOiAoeSB8fCBnKSAmJiBvKGksIFwiQkFEX1BST1BfT1JERVJcIiwgYEFuY2hvcnMgYW5kIHRhZ3MgbXVzdCBiZSBhZnRlciB0aGUgJHtpLnNvdXJjZX0gaW5kaWNhdG9yYCksIHcgJiYgbyhpLCBcIlVORVhQRUNURURfVE9LRU5cIiwgYFVuZXhwZWN0ZWQgJHtpLnNvdXJjZX0gaW4gJHt0ID8/IFwiY29sbGVjdGlvblwifWApLCB3ID0gaSwgbCA9IFwic2VxLWl0ZW0taW5kXCIgPT09IG4gfHwgXCJleHBsaWNpdC1rZXktaW5kXCIgPT09IG4sIHUgPSAhMTsgYnJlYWs7IGNhc2UgXCJjb21tYVwiOiBpZiAodCkgeyBrICYmIG8oaSwgXCJVTkVYUEVDVEVEX1RPS0VOXCIsIGBVbmV4cGVjdGVkICwgaW4gJHt0fWApLCBrID0gaSwgbCA9ICExLCB1ID0gITE7IGJyZWFrIH0gZGVmYXVsdDogbyhpLCBcIlVORVhQRUNURURfVE9LRU5cIiwgYFVuZXhwZWN0ZWQgJHtpLnR5cGV9IHRva2VuYCksIGwgPSAhMSwgdSA9ICExIH1jb25zdCBTID0gZVtlLmxlbmd0aCAtIDFdLCBFID0gUyA/IFMub2Zmc2V0ICsgUy5zb3VyY2UubGVuZ3RoIDogaTsgcmV0dXJuIHAgJiYgcyAmJiBcInNwYWNlXCIgIT09IHMudHlwZSAmJiBcIm5ld2xpbmVcIiAhPT0gcy50eXBlICYmIFwiY29tbWFcIiAhPT0gcy50eXBlICYmIChcInNjYWxhclwiICE9PSBzLnR5cGUgfHwgXCJcIiAhPT0gcy5zb3VyY2UpICYmIG8ocy5vZmZzZXQsIFwiTUlTU0lOR19DSEFSXCIsIFwiVGFncyBhbmQgYW5jaG9ycyBtdXN0IGJlIHNlcGFyYXRlZCBmcm9tIHRoZSBuZXh0IHRva2VuIGJ5IHdoaXRlIHNwYWNlXCIpLCBtICYmIChsICYmIG0uaW5kZW50IDw9IHIgfHwgXCJibG9jay1tYXBcIiA9PT0gcz8udHlwZSB8fCBcImJsb2NrLXNlcVwiID09PSBzPy50eXBlKSAmJiBvKG0sIFwiVEFCX0FTX0lOREVOVFwiLCBcIlRhYnMgYXJlIG5vdCBhbGxvd2VkIGFzIGluZGVudGF0aW9uXCIpLCB7IGNvbW1hOiBrLCBmb3VuZDogdywgc3BhY2VCZWZvcmU6IGMsIGNvbW1lbnQ6IGYsIGhhc05ld2xpbmU6IGQsIGFuY2hvcjogeSwgdGFnOiBnLCBuZXdsaW5lQWZ0ZXJQcm9wOiBiLCBlbmQ6IEUsIHN0YXJ0OiB2ID8/IEUgfSB9IGZ1bmN0aW9uIEl0KGUpIHsgaWYgKCFlKSByZXR1cm4gbnVsbDsgc3dpdGNoIChlLnR5cGUpIHsgY2FzZSBcImFsaWFzXCI6IGNhc2UgXCJzY2FsYXJcIjogY2FzZSBcImRvdWJsZS1xdW90ZWQtc2NhbGFyXCI6IGNhc2UgXCJzaW5nbGUtcXVvdGVkLXNjYWxhclwiOiBpZiAoZS5zb3VyY2UuaW5jbHVkZXMoXCJcXG5cIikpIHJldHVybiAhMDsgaWYgKGUuZW5kKSBmb3IgKGNvbnN0IHQgb2YgZS5lbmQpIGlmIChcIm5ld2xpbmVcIiA9PT0gdC50eXBlKSByZXR1cm4gITA7IHJldHVybiAhMTsgY2FzZSBcImZsb3ctY29sbGVjdGlvblwiOiBmb3IgKGNvbnN0IHQgb2YgZS5pdGVtcykgeyBmb3IgKGNvbnN0IGUgb2YgdC5zdGFydCkgaWYgKFwibmV3bGluZVwiID09PSBlLnR5cGUpIHJldHVybiAhMDsgaWYgKHQuc2VwKSBmb3IgKGNvbnN0IGUgb2YgdC5zZXApIGlmIChcIm5ld2xpbmVcIiA9PT0gZS50eXBlKSByZXR1cm4gITA7IGlmIChJdCh0LmtleSkgfHwgSXQodC52YWx1ZSkpIHJldHVybiAhMCB9IHJldHVybiAhMTsgZGVmYXVsdDogcmV0dXJuICEwIH0gfSBmdW5jdGlvbiBUdChlLCB0LCBuKSB7IGlmIChcImZsb3ctY29sbGVjdGlvblwiID09PSB0Py50eXBlKSB7IGNvbnN0IHMgPSB0LmVuZFswXTsgaWYgKHMuaW5kZW50ID09PSBlICYmIChcIl1cIiA9PT0gcy5zb3VyY2UgfHwgXCJ9XCIgPT09IHMuc291cmNlKSAmJiBJdCh0KSkgeyBuKHMsIFwiQkFEX0lOREVOVFwiLCBcIkZsb3cgZW5kIGluZGljYXRvciBzaG91bGQgYmUgbW9yZSBpbmRlbnRlZCB0aGFuIHBhcmVudFwiLCAhMCkgfSB9IH0gZnVuY3Rpb24gTHQoZSwgdCwgbikgeyBjb25zdCB7IHVuaXF1ZUtleXM6IHMgfSA9IGUub3B0aW9uczsgaWYgKCExID09PSBzKSByZXR1cm4gITE7IGNvbnN0IGkgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIHMgPyBzIDogKGUsIHQpID0+IGUgPT09IHQgfHwgZihlKSAmJiBmKHQpICYmIGUudmFsdWUgPT09IHQudmFsdWU7IHJldHVybiB0LnNvbWUoKGUgPT4gaShlLmtleSwgbikpKSB9IGNvbnN0IHh0ID0gXCJBbGwgbWFwcGluZyBpdGVtcyBtdXN0IHN0YXJ0IGF0IHRoZSBzYW1lIGNvbHVtblwiOyBmdW5jdGlvbiAkdChlLCB0LCBuLCBzKSB7IGxldCBpID0gXCJcIjsgaWYgKGUpIHsgbGV0IG8gPSAhMSwgciA9IFwiXCI7IGZvciAoY29uc3QgYSBvZiBlKSB7IGNvbnN0IHsgc291cmNlOiBlLCB0eXBlOiBjIH0gPSBhOyBzd2l0Y2ggKGMpIHsgY2FzZSBcInNwYWNlXCI6IG8gPSAhMDsgYnJlYWs7IGNhc2UgXCJjb21tZW50XCI6IHsgbiAmJiAhbyAmJiBzKGEsIFwiTUlTU0lOR19DSEFSXCIsIFwiQ29tbWVudHMgbXVzdCBiZSBzZXBhcmF0ZWQgZnJvbSBvdGhlciB0b2tlbnMgYnkgd2hpdGUgc3BhY2UgY2hhcmFjdGVyc1wiKTsgY29uc3QgdCA9IGUuc3Vic3RyaW5nKDEpIHx8IFwiIFwiOyBpID8gaSArPSByICsgdCA6IGkgPSB0LCByID0gXCJcIjsgYnJlYWsgfSBjYXNlIFwibmV3bGluZVwiOiBpICYmIChyICs9IGUpLCBvID0gITA7IGJyZWFrOyBkZWZhdWx0OiBzKGEsIFwiVU5FWFBFQ1RFRF9UT0tFTlwiLCBgVW5leHBlY3RlZCAke2N9IGF0IG5vZGUgZW5kYCkgfXQgKz0gZS5sZW5ndGggfSB9IHJldHVybiB7IGNvbW1lbnQ6IGksIG9mZnNldDogdCB9IH0gY29uc3QgQ3QgPSBcIkJsb2NrIGNvbGxlY3Rpb25zIGFyZSBub3QgYWxsb3dlZCB3aXRoaW4gZmxvdyBjb2xsZWN0aW9uc1wiLCBfdCA9IGUgPT4gZSAmJiAoXCJibG9jay1tYXBcIiA9PT0gZS50eXBlIHx8IFwiYmxvY2stc2VxXCIgPT09IGUudHlwZSk7IGZ1bmN0aW9uIEt0KGUsIHQsIG4sIHMsIGksIG8pIHsgY29uc3QgciA9IFwiYmxvY2stbWFwXCIgPT09IG4udHlwZSA/IGZ1bmN0aW9uICh7IGNvbXBvc2VOb2RlOiBlLCBjb21wb3NlRW1wdHlOb2RlOiB0IH0sIG4sIHMsIGksIG8pIHsgY29uc3QgciA9IG5ldyAobz8ubm9kZUNsYXNzID8/IGtlKShuLnNjaGVtYSk7IG4uYXRSb290ICYmIChuLmF0Um9vdCA9ICExKTsgbGV0IGEgPSBzLm9mZnNldCwgYyA9IG51bGw7IGZvciAoY29uc3QgbyBvZiBzLml0ZW1zKSB7IGNvbnN0IHsgc3RhcnQ6IGwsIGtleTogdSwgc2VwOiBmLCB2YWx1ZTogaCB9ID0gbywgZCA9IEF0KGwsIHsgaW5kaWNhdG9yOiBcImV4cGxpY2l0LWtleS1pbmRcIiwgbmV4dDogdSA/PyBmPy5bMF0sIG9mZnNldDogYSwgb25FcnJvcjogaSwgcGFyZW50SW5kZW50OiBzLmluZGVudCwgc3RhcnRPbk5ld2xpbmU6ICEwIH0pLCBwID0gIWQuZm91bmQ7IGlmIChwKSB7IGlmICh1ICYmIChcImJsb2NrLXNlcVwiID09PSB1LnR5cGUgPyBpKGEsIFwiQkxPQ0tfQVNfSU1QTElDSVRfS0VZXCIsIFwiQSBibG9jayBzZXF1ZW5jZSBtYXkgbm90IGJlIHVzZWQgYXMgYW4gaW1wbGljaXQgbWFwIGtleVwiKSA6IFwiaW5kZW50XCIgaW4gdSAmJiB1LmluZGVudCAhPT0gcy5pbmRlbnQgJiYgaShhLCBcIkJBRF9JTkRFTlRcIiwgeHQpKSwgIWQuYW5jaG9yICYmICFkLnRhZyAmJiAhZikgeyBjID0gZC5lbmQsIGQuY29tbWVudCAmJiAoci5jb21tZW50ID8gci5jb21tZW50ICs9IFwiXFxuXCIgKyBkLmNvbW1lbnQgOiByLmNvbW1lbnQgPSBkLmNvbW1lbnQpOyBjb250aW51ZSB9IChkLm5ld2xpbmVBZnRlclByb3AgfHwgSXQodSkpICYmIGkodSA/PyBsW2wubGVuZ3RoIC0gMV0sIFwiTVVMVElMSU5FX0lNUExJQ0lUX0tFWVwiLCBcIkltcGxpY2l0IGtleXMgbmVlZCB0byBiZSBvbiBhIHNpbmdsZSBsaW5lXCIpIH0gZWxzZSBkLmZvdW5kPy5pbmRlbnQgIT09IHMuaW5kZW50ICYmIGkoYSwgXCJCQURfSU5ERU5UXCIsIHh0KTsgbi5hdEtleSA9ICEwOyBjb25zdCBtID0gZC5lbmQsIHkgPSB1ID8gZShuLCB1LCBkLCBpKSA6IHQobiwgbSwgbCwgbnVsbCwgZCwgaSk7IG4uc2NoZW1hLmNvbXBhdCAmJiBUdChzLmluZGVudCwgdSwgaSksIG4uYXRLZXkgPSAhMSwgTHQobiwgci5pdGVtcywgeSkgJiYgaShtLCBcIkRVUExJQ0FURV9LRVlcIiwgXCJNYXAga2V5cyBtdXN0IGJlIHVuaXF1ZVwiKTsgY29uc3QgZyA9IEF0KGYgPz8gW10sIHsgaW5kaWNhdG9yOiBcIm1hcC12YWx1ZS1pbmRcIiwgbmV4dDogaCwgb2Zmc2V0OiB5LnJhbmdlWzJdLCBvbkVycm9yOiBpLCBwYXJlbnRJbmRlbnQ6IHMuaW5kZW50LCBzdGFydE9uTmV3bGluZTogIXUgfHwgXCJibG9jay1zY2FsYXJcIiA9PT0gdS50eXBlIH0pOyBpZiAoYSA9IGcuZW5kLCBnLmZvdW5kKSB7IHAgJiYgKFwiYmxvY2stbWFwXCIgIT09IGg/LnR5cGUgfHwgZy5oYXNOZXdsaW5lIHx8IGkoYSwgXCJCTE9DS19BU19JTVBMSUNJVF9LRVlcIiwgXCJOZXN0ZWQgbWFwcGluZ3MgYXJlIG5vdCBhbGxvd2VkIGluIGNvbXBhY3QgbWFwcGluZ3NcIiksIG4ub3B0aW9ucy5zdHJpY3QgJiYgZC5zdGFydCA8IGcuZm91bmQub2Zmc2V0IC0gMTAyNCAmJiBpKHkucmFuZ2UsIFwiS0VZX09WRVJfMTAyNF9DSEFSU1wiLCBcIlRoZSA6IGluZGljYXRvciBtdXN0IGJlIGF0IG1vc3QgMTAyNCBjaGFycyBhZnRlciB0aGUgc3RhcnQgb2YgYW4gaW1wbGljaXQgYmxvY2sgbWFwcGluZyBrZXlcIikpOyBjb25zdCBjID0gaCA/IGUobiwgaCwgZywgaSkgOiB0KG4sIGEsIGYsIG51bGwsIGcsIGkpOyBuLnNjaGVtYS5jb21wYXQgJiYgVHQocy5pbmRlbnQsIGgsIGkpLCBhID0gYy5yYW5nZVsyXTsgY29uc3QgbCA9IG5ldyBkZSh5LCBjKTsgbi5vcHRpb25zLmtlZXBTb3VyY2VUb2tlbnMgJiYgKGwuc3JjVG9rZW4gPSBvKSwgci5pdGVtcy5wdXNoKGwpIH0gZWxzZSB7IHAgJiYgaSh5LnJhbmdlLCBcIk1JU1NJTkdfQ0hBUlwiLCBcIkltcGxpY2l0IG1hcCBrZXlzIG5lZWQgdG8gYmUgZm9sbG93ZWQgYnkgbWFwIHZhbHVlc1wiKSwgZy5jb21tZW50ICYmICh5LmNvbW1lbnQgPyB5LmNvbW1lbnQgKz0gXCJcXG5cIiArIGcuY29tbWVudCA6IHkuY29tbWVudCA9IGcuY29tbWVudCk7IGNvbnN0IGUgPSBuZXcgZGUoeSk7IG4ub3B0aW9ucy5rZWVwU291cmNlVG9rZW5zICYmIChlLnNyY1Rva2VuID0gbyksIHIuaXRlbXMucHVzaChlKSB9IH0gcmV0dXJuIGMgJiYgYyA8IGEgJiYgaShjLCBcIklNUE9TU0lCTEVcIiwgXCJNYXAgY29tbWVudCB3aXRoIHRyYWlsaW5nIGNvbnRlbnRcIiksIHIucmFuZ2UgPSBbcy5vZmZzZXQsIGEsIGMgPz8gYV0sIHIgfShlLCB0LCBuLCBzLCBvKSA6IFwiYmxvY2stc2VxXCIgPT09IG4udHlwZSA/IGZ1bmN0aW9uICh7IGNvbXBvc2VOb2RlOiBlLCBjb21wb3NlRW1wdHlOb2RlOiB0IH0sIG4sIHMsIGksIG8pIHsgY29uc3QgciA9IG5ldyAobz8ubm9kZUNsYXNzID8/IHZlKShuLnNjaGVtYSk7IG4uYXRSb290ICYmIChuLmF0Um9vdCA9ICExKSwgbi5hdEtleSAmJiAobi5hdEtleSA9ICExKTsgbGV0IGEgPSBzLm9mZnNldCwgYyA9IG51bGw7IGZvciAoY29uc3QgeyBzdGFydDogbywgdmFsdWU6IGwgfSBvZiBzLml0ZW1zKSB7IGNvbnN0IHUgPSBBdChvLCB7IGluZGljYXRvcjogXCJzZXEtaXRlbS1pbmRcIiwgbmV4dDogbCwgb2Zmc2V0OiBhLCBvbkVycm9yOiBpLCBwYXJlbnRJbmRlbnQ6IHMuaW5kZW50LCBzdGFydE9uTmV3bGluZTogITAgfSk7IGlmICghdS5mb3VuZCkgeyBpZiAoISh1LmFuY2hvciB8fCB1LnRhZyB8fCBsKSkgeyBjID0gdS5lbmQsIHUuY29tbWVudCAmJiAoci5jb21tZW50ID0gdS5jb21tZW50KTsgY29udGludWUgfSBsICYmIFwiYmxvY2stc2VxXCIgPT09IGwudHlwZSA/IGkodS5lbmQsIFwiQkFEX0lOREVOVFwiLCBcIkFsbCBzZXF1ZW5jZSBpdGVtcyBtdXN0IHN0YXJ0IGF0IHRoZSBzYW1lIGNvbHVtblwiKSA6IGkoYSwgXCJNSVNTSU5HX0NIQVJcIiwgXCJTZXF1ZW5jZSBpdGVtIHdpdGhvdXQgLSBpbmRpY2F0b3JcIikgfSBjb25zdCBmID0gbCA/IGUobiwgbCwgdSwgaSkgOiB0KG4sIHUuZW5kLCBvLCBudWxsLCB1LCBpKTsgbi5zY2hlbWEuY29tcGF0ICYmIFR0KHMuaW5kZW50LCBsLCBpKSwgYSA9IGYucmFuZ2VbMl0sIHIuaXRlbXMucHVzaChmKSB9IHJldHVybiByLnJhbmdlID0gW3Mub2Zmc2V0LCBhLCBjID8/IGFdLCByIH0oZSwgdCwgbiwgcywgbykgOiBmdW5jdGlvbiAoeyBjb21wb3NlTm9kZTogZSwgY29tcG9zZUVtcHR5Tm9kZTogdCB9LCBuLCBzLCBpLCBvKSB7IGNvbnN0IHIgPSBcIntcIiA9PT0gcy5zdGFydC5zb3VyY2UsIGEgPSByID8gXCJmbG93IG1hcFwiIDogXCJmbG93IHNlcXVlbmNlXCIsIGMgPSBuZXcgKG8/Lm5vZGVDbGFzcyA/PyAociA/IGtlIDogdmUpKShuLnNjaGVtYSk7IGMuZmxvdyA9ICEwOyBjb25zdCBsID0gbi5hdFJvb3Q7IGwgJiYgKG4uYXRSb290ID0gITEpLCBuLmF0S2V5ICYmIChuLmF0S2V5ID0gITEpOyBsZXQgZiA9IHMub2Zmc2V0ICsgcy5zdGFydC5zb3VyY2UubGVuZ3RoOyBmb3IgKGxldCBvID0gMDsgbyA8IHMuaXRlbXMubGVuZ3RoOyArK28pIHsgY29uc3QgbCA9IHMuaXRlbXNbb10sIHsgc3RhcnQ6IGgsIGtleTogZCwgc2VwOiBwLCB2YWx1ZTogbSB9ID0gbCwgeSA9IEF0KGgsIHsgZmxvdzogYSwgaW5kaWNhdG9yOiBcImV4cGxpY2l0LWtleS1pbmRcIiwgbmV4dDogZCA/PyBwPy5bMF0sIG9mZnNldDogZiwgb25FcnJvcjogaSwgcGFyZW50SW5kZW50OiBzLmluZGVudCwgc3RhcnRPbk5ld2xpbmU6ICExIH0pOyBpZiAoIXkuZm91bmQpIHsgaWYgKCEoeS5hbmNob3IgfHwgeS50YWcgfHwgcCB8fCBtKSkgeyAwID09PSBvICYmIHkuY29tbWEgPyBpKHkuY29tbWEsIFwiVU5FWFBFQ1RFRF9UT0tFTlwiLCBgVW5leHBlY3RlZCAsIGluICR7YX1gKSA6IG8gPCBzLml0ZW1zLmxlbmd0aCAtIDEgJiYgaSh5LnN0YXJ0LCBcIlVORVhQRUNURURfVE9LRU5cIiwgYFVuZXhwZWN0ZWQgZW1wdHkgaXRlbSBpbiAke2F9YCksIHkuY29tbWVudCAmJiAoYy5jb21tZW50ID8gYy5jb21tZW50ICs9IFwiXFxuXCIgKyB5LmNvbW1lbnQgOiBjLmNvbW1lbnQgPSB5LmNvbW1lbnQpLCBmID0geS5lbmQ7IGNvbnRpbnVlIH0gIXIgJiYgbi5vcHRpb25zLnN0cmljdCAmJiBJdChkKSAmJiBpKGQsIFwiTVVMVElMSU5FX0lNUExJQ0lUX0tFWVwiLCBcIkltcGxpY2l0IGtleXMgb2YgZmxvdyBzZXF1ZW5jZSBwYWlycyBuZWVkIHRvIGJlIG9uIGEgc2luZ2xlIGxpbmVcIikgfSBpZiAoMCA9PT0gbykgeS5jb21tYSAmJiBpKHkuY29tbWEsIFwiVU5FWFBFQ1RFRF9UT0tFTlwiLCBgVW5leHBlY3RlZCAsIGluICR7YX1gKTsgZWxzZSBpZiAoeS5jb21tYSB8fCBpKHkuc3RhcnQsIFwiTUlTU0lOR19DSEFSXCIsIGBNaXNzaW5nICwgYmV0d2VlbiAke2F9IGl0ZW1zYCksIHkuY29tbWVudCkgeyBsZXQgZSA9IFwiXCI7IGU6IGZvciAoY29uc3QgdCBvZiBoKSBzd2l0Y2ggKHQudHlwZSkgeyBjYXNlIFwiY29tbWFcIjogY2FzZSBcInNwYWNlXCI6IGJyZWFrOyBjYXNlIFwiY29tbWVudFwiOiBlID0gdC5zb3VyY2Uuc3Vic3RyaW5nKDEpOyBicmVhayBlOyBkZWZhdWx0OiBicmVhayBlIH1pZiAoZSkgeyBsZXQgdCA9IGMuaXRlbXNbYy5pdGVtcy5sZW5ndGggLSAxXTsgdSh0KSAmJiAodCA9IHQudmFsdWUgPz8gdC5rZXkpLCB0LmNvbW1lbnQgPyB0LmNvbW1lbnQgKz0gXCJcXG5cIiArIGUgOiB0LmNvbW1lbnQgPSBlLCB5LmNvbW1lbnQgPSB5LmNvbW1lbnQuc3Vic3RyaW5nKGUubGVuZ3RoICsgMSkgfSB9IGlmIChyIHx8IHAgfHwgeS5mb3VuZCkgeyBuLmF0S2V5ID0gITA7IGNvbnN0IG8gPSB5LmVuZCwgdSA9IGQgPyBlKG4sIGQsIHksIGkpIDogdChuLCBvLCBoLCBudWxsLCB5LCBpKTsgX3QoZCkgJiYgaSh1LnJhbmdlLCBcIkJMT0NLX0lOX0ZMT1dcIiwgQ3QpLCBuLmF0S2V5ID0gITE7IGNvbnN0IGcgPSBBdChwID8/IFtdLCB7IGZsb3c6IGEsIGluZGljYXRvcjogXCJtYXAtdmFsdWUtaW5kXCIsIG5leHQ6IG0sIG9mZnNldDogdS5yYW5nZVsyXSwgb25FcnJvcjogaSwgcGFyZW50SW5kZW50OiBzLmluZGVudCwgc3RhcnRPbk5ld2xpbmU6ICExIH0pOyBpZiAoZy5mb3VuZCkgeyBpZiAoIXIgJiYgIXkuZm91bmQgJiYgbi5vcHRpb25zLnN0cmljdCkgeyBpZiAocCkgZm9yIChjb25zdCBlIG9mIHApIHsgaWYgKGUgPT09IGcuZm91bmQpIGJyZWFrOyBpZiAoXCJuZXdsaW5lXCIgPT09IGUudHlwZSkgeyBpKGUsIFwiTVVMVElMSU5FX0lNUExJQ0lUX0tFWVwiLCBcIkltcGxpY2l0IGtleXMgb2YgZmxvdyBzZXF1ZW5jZSBwYWlycyBuZWVkIHRvIGJlIG9uIGEgc2luZ2xlIGxpbmVcIik7IGJyZWFrIH0gfSB5LnN0YXJ0IDwgZy5mb3VuZC5vZmZzZXQgLSAxMDI0ICYmIGkoZy5mb3VuZCwgXCJLRVlfT1ZFUl8xMDI0X0NIQVJTXCIsIFwiVGhlIDogaW5kaWNhdG9yIG11c3QgYmUgYXQgbW9zdCAxMDI0IGNoYXJzIGFmdGVyIHRoZSBzdGFydCBvZiBhbiBpbXBsaWNpdCBmbG93IHNlcXVlbmNlIGtleVwiKSB9IH0gZWxzZSBtICYmIChcInNvdXJjZVwiIGluIG0gJiYgbS5zb3VyY2UgJiYgXCI6XCIgPT09IG0uc291cmNlWzBdID8gaShtLCBcIk1JU1NJTkdfQ0hBUlwiLCBgTWlzc2luZyBzcGFjZSBhZnRlciA6IGluICR7YX1gKSA6IGkoZy5zdGFydCwgXCJNSVNTSU5HX0NIQVJcIiwgYE1pc3NpbmcgLCBvciA6IGJldHdlZW4gJHthfSBpdGVtc2ApKTsgY29uc3QgYiA9IG0gPyBlKG4sIG0sIGcsIGkpIDogZy5mb3VuZCA/IHQobiwgZy5lbmQsIHAsIG51bGwsIGcsIGkpIDogbnVsbDsgYiA/IF90KG0pICYmIGkoYi5yYW5nZSwgXCJCTE9DS19JTl9GTE9XXCIsIEN0KSA6IGcuY29tbWVudCAmJiAodS5jb21tZW50ID8gdS5jb21tZW50ICs9IFwiXFxuXCIgKyBnLmNvbW1lbnQgOiB1LmNvbW1lbnQgPSBnLmNvbW1lbnQpOyBjb25zdCBrID0gbmV3IGRlKHUsIGIpOyBpZiAobi5vcHRpb25zLmtlZXBTb3VyY2VUb2tlbnMgJiYgKGsuc3JjVG9rZW4gPSBsKSwgcikgeyBjb25zdCBlID0gYzsgTHQobiwgZS5pdGVtcywgdSkgJiYgaShvLCBcIkRVUExJQ0FURV9LRVlcIiwgXCJNYXAga2V5cyBtdXN0IGJlIHVuaXF1ZVwiKSwgZS5pdGVtcy5wdXNoKGspIH0gZWxzZSB7IGNvbnN0IGUgPSBuZXcga2Uobi5zY2hlbWEpOyBlLmZsb3cgPSAhMCwgZS5pdGVtcy5wdXNoKGspOyBjb25zdCB0ID0gKGIgPz8gdSkucmFuZ2U7IGUucmFuZ2UgPSBbdS5yYW5nZVswXSwgdFsxXSwgdFsyXV0sIGMuaXRlbXMucHVzaChlKSB9IGYgPSBiID8gYi5yYW5nZVsyXSA6IGcuZW5kIH0gZWxzZSB7IGNvbnN0IHMgPSBtID8gZShuLCBtLCB5LCBpKSA6IHQobiwgeS5lbmQsIHAsIG51bGwsIHksIGkpOyBjLml0ZW1zLnB1c2gocyksIGYgPSBzLnJhbmdlWzJdLCBfdChtKSAmJiBpKHMucmFuZ2UsIFwiQkxPQ0tfSU5fRkxPV1wiLCBDdCkgfSB9IGNvbnN0IGggPSByID8gXCJ9XCIgOiBcIl1cIiwgW2QsIC4uLnBdID0gcy5lbmQ7IGxldCBtID0gZjsgaWYgKGQgJiYgZC5zb3VyY2UgPT09IGgpIG0gPSBkLm9mZnNldCArIGQuc291cmNlLmxlbmd0aDsgZWxzZSB7IGNvbnN0IGUgPSBhWzBdLnRvVXBwZXJDYXNlKCkgKyBhLnN1YnN0cmluZygxKTsgaShmLCBsID8gXCJNSVNTSU5HX0NIQVJcIiA6IFwiQkFEX0lOREVOVFwiLCBsID8gYCR7ZX0gbXVzdCBlbmQgd2l0aCBhICR7aH1gIDogYCR7ZX0gaW4gYmxvY2sgY29sbGVjdGlvbiBtdXN0IGJlIHN1ZmZpY2llbnRseSBpbmRlbnRlZCBhbmQgZW5kIHdpdGggYSAke2h9YCksIGQgJiYgMSAhPT0gZC5zb3VyY2UubGVuZ3RoICYmIHAudW5zaGlmdChkKSB9IGlmIChwLmxlbmd0aCA+IDApIHsgY29uc3QgZSA9ICR0KHAsIG0sIG4ub3B0aW9ucy5zdHJpY3QsIGkpOyBlLmNvbW1lbnQgJiYgKGMuY29tbWVudCA/IGMuY29tbWVudCArPSBcIlxcblwiICsgZS5jb21tZW50IDogYy5jb21tZW50ID0gZS5jb21tZW50KSwgYy5yYW5nZSA9IFtzLm9mZnNldCwgbSwgZS5vZmZzZXRdIH0gZWxzZSBjLnJhbmdlID0gW3Mub2Zmc2V0LCBtLCBtXTsgcmV0dXJuIGMgfShlLCB0LCBuLCBzLCBvKSwgYSA9IHIuY29uc3RydWN0b3I7IHJldHVybiBcIiFcIiA9PT0gaSB8fCBpID09PSBhLnRhZ05hbWUgPyAoci50YWcgPSBhLnRhZ05hbWUsIHIpIDogKGkgJiYgKHIudGFnID0gaSksIHIpIH0gZnVuY3Rpb24gQnQoZSwgdCwgbikgeyBjb25zdCBzID0gdC5vZmZzZXQsIGkgPSBmdW5jdGlvbiAoeyBvZmZzZXQ6IGUsIHByb3BzOiB0IH0sIG4sIHMpIHsgaWYgKFwiYmxvY2stc2NhbGFyLWhlYWRlclwiICE9PSB0WzBdLnR5cGUpIHJldHVybiBzKHRbMF0sIFwiSU1QT1NTSUJMRVwiLCBcIkJsb2NrIHNjYWxhciBoZWFkZXIgbm90IGZvdW5kXCIpLCBudWxsOyBjb25zdCB7IHNvdXJjZTogaSB9ID0gdFswXSwgbyA9IGlbMF07IGxldCByID0gMCwgYSA9IFwiXCIsIGMgPSAtMTsgZm9yIChsZXQgdCA9IDE7IHQgPCBpLmxlbmd0aDsgKyt0KSB7IGNvbnN0IG4gPSBpW3RdOyBpZiAoYSB8fCBcIi1cIiAhPT0gbiAmJiBcIitcIiAhPT0gbikgeyBjb25zdCBzID0gTnVtYmVyKG4pOyAhciAmJiBzID8gciA9IHMgOiAtMSA9PT0gYyAmJiAoYyA9IGUgKyB0KSB9IGVsc2UgYSA9IG4gfSAtMSAhPT0gYyAmJiBzKGMsIFwiVU5FWFBFQ1RFRF9UT0tFTlwiLCBgQmxvY2sgc2NhbGFyIGhlYWRlciBpbmNsdWRlcyBleHRyYSBjaGFyYWN0ZXJzOiAke2l9YCk7IGxldCBsID0gITEsIHUgPSBcIlwiLCBmID0gaS5sZW5ndGg7IGZvciAobGV0IGUgPSAxOyBlIDwgdC5sZW5ndGg7ICsrZSkgeyBjb25zdCBpID0gdFtlXTsgc3dpdGNoIChpLnR5cGUpIHsgY2FzZSBcInNwYWNlXCI6IGwgPSAhMDsgY2FzZSBcIm5ld2xpbmVcIjogZiArPSBpLnNvdXJjZS5sZW5ndGg7IGJyZWFrOyBjYXNlIFwiY29tbWVudFwiOiBpZiAobiAmJiAhbCkgeyBzKGksIFwiTUlTU0lOR19DSEFSXCIsIFwiQ29tbWVudHMgbXVzdCBiZSBzZXBhcmF0ZWQgZnJvbSBvdGhlciB0b2tlbnMgYnkgd2hpdGUgc3BhY2UgY2hhcmFjdGVyc1wiKSB9IGYgKz0gaS5zb3VyY2UubGVuZ3RoLCB1ID0gaS5zb3VyY2Uuc3Vic3RyaW5nKDEpOyBicmVhazsgY2FzZSBcImVycm9yXCI6IHMoaSwgXCJVTkVYUEVDVEVEX1RPS0VOXCIsIGkubWVzc2FnZSksIGYgKz0gaS5zb3VyY2UubGVuZ3RoOyBicmVhazsgZGVmYXVsdDogeyBzKGksIFwiVU5FWFBFQ1RFRF9UT0tFTlwiLCBgVW5leHBlY3RlZCB0b2tlbiBpbiBibG9jayBzY2FsYXIgaGVhZGVyOiAke2kudHlwZX1gKTsgY29uc3QgZSA9IGkuc291cmNlOyBlICYmIFwic3RyaW5nXCIgPT0gdHlwZW9mIGUgJiYgKGYgKz0gZS5sZW5ndGgpIH0gfSB9IHJldHVybiB7IG1vZGU6IG8sIGluZGVudDogciwgY2hvbXA6IGEsIGNvbW1lbnQ6IHUsIGxlbmd0aDogZiB9IH0odCwgZS5vcHRpb25zLnN0cmljdCwgbik7IGlmICghaSkgcmV0dXJuIHsgdmFsdWU6IFwiXCIsIHR5cGU6IG51bGwsIGNvbW1lbnQ6IFwiXCIsIHJhbmdlOiBbcywgcywgc10gfTsgY29uc3QgbyA9IFwiPlwiID09PSBpLm1vZGUgPyBNLkJMT0NLX0ZPTERFRCA6IE0uQkxPQ0tfTElURVJBTCwgciA9IHQuc291cmNlID8gZnVuY3Rpb24gKGUpIHsgY29uc3QgdCA9IGUuc3BsaXQoL1xcbiggKikvKSwgbiA9IHRbMF0sIHMgPSBuLm1hdGNoKC9eKCAqKS8pLCBpID0gW3M/LlsxXSA/IFtzWzFdLCBuLnNsaWNlKHNbMV0ubGVuZ3RoKV0gOiBbXCJcIiwgbl1dOyBmb3IgKGxldCBlID0gMTsgZSA8IHQubGVuZ3RoOyBlICs9IDIpaS5wdXNoKFt0W2VdLCB0W2UgKyAxXV0pOyByZXR1cm4gaSB9KHQuc291cmNlKSA6IFtdOyBsZXQgYSA9IHIubGVuZ3RoOyBmb3IgKGxldCBlID0gci5sZW5ndGggLSAxOyBlID49IDA7IC0tZSkgeyBjb25zdCB0ID0gcltlXVsxXTsgaWYgKFwiXCIgIT09IHQgJiYgXCJcXHJcIiAhPT0gdCkgYnJlYWs7IGEgPSBlIH0gaWYgKDAgPT09IGEpIHsgY29uc3QgZSA9IFwiK1wiID09PSBpLmNob21wICYmIHIubGVuZ3RoID4gMCA/IFwiXFxuXCIucmVwZWF0KE1hdGgubWF4KDEsIHIubGVuZ3RoIC0gMSkpIDogXCJcIjsgbGV0IG4gPSBzICsgaS5sZW5ndGg7IHJldHVybiB0LnNvdXJjZSAmJiAobiArPSB0LnNvdXJjZS5sZW5ndGgpLCB7IHZhbHVlOiBlLCB0eXBlOiBvLCBjb21tZW50OiBpLmNvbW1lbnQsIHJhbmdlOiBbcywgbiwgbl0gfSB9IGxldCBjID0gdC5pbmRlbnQgKyBpLmluZGVudCwgbCA9IHQub2Zmc2V0ICsgaS5sZW5ndGgsIHUgPSAwOyBmb3IgKGxldCB0ID0gMDsgdCA8IGE7ICsrdCkgeyBjb25zdCBbcywgb10gPSByW3RdOyBpZiAoXCJcIiAhPT0gbyAmJiBcIlxcclwiICE9PSBvKSB7IGlmIChzLmxlbmd0aCA8IGMpIHsgY29uc3QgZSA9IFwiQmxvY2sgc2NhbGFycyB3aXRoIG1vcmUtaW5kZW50ZWQgbGVhZGluZyBlbXB0eSBsaW5lcyBtdXN0IHVzZSBhbiBleHBsaWNpdCBpbmRlbnRhdGlvbiBpbmRpY2F0b3JcIjsgbihsICsgcy5sZW5ndGgsIFwiTUlTU0lOR19DSEFSXCIsIGUpIH0gaWYgKDAgPT09IGkuaW5kZW50ICYmIChjID0gcy5sZW5ndGgpLCB1ID0gdCwgMCA9PT0gYyAmJiAhZS5hdFJvb3QpIHsgbihsLCBcIkJBRF9JTkRFTlRcIiwgXCJCbG9jayBzY2FsYXIgdmFsdWVzIGluIGNvbGxlY3Rpb25zIG11c3QgYmUgaW5kZW50ZWRcIikgfSBicmVhayB9IDAgPT09IGkuaW5kZW50ICYmIHMubGVuZ3RoID4gYyAmJiAoYyA9IHMubGVuZ3RoKSwgbCArPSBzLmxlbmd0aCArIG8ubGVuZ3RoICsgMSB9IGZvciAobGV0IGUgPSByLmxlbmd0aCAtIDE7IGUgPj0gYTsgLS1lKXJbZV1bMF0ubGVuZ3RoID4gYyAmJiAoYSA9IGUgKyAxKTsgbGV0IGYgPSBcIlwiLCBoID0gXCJcIiwgZCA9ICExOyBmb3IgKGxldCBlID0gMDsgZSA8IHU7ICsrZSlmICs9IHJbZV1bMF0uc2xpY2UoYykgKyBcIlxcblwiOyBmb3IgKGxldCBlID0gdTsgZSA8IGE7ICsrZSkgeyBsZXQgW3QsIHNdID0gcltlXTsgbCArPSB0Lmxlbmd0aCArIHMubGVuZ3RoICsgMTsgY29uc3QgYSA9IFwiXFxyXCIgPT09IHNbcy5sZW5ndGggLSAxXTsgaWYgKGEgJiYgKHMgPSBzLnNsaWNlKDAsIC0xKSksIHMgJiYgdC5sZW5ndGggPCBjKSB7IGNvbnN0IGUgPSBgQmxvY2sgc2NhbGFyIGxpbmVzIG11c3Qgbm90IGJlIGxlc3MgaW5kZW50ZWQgdGhhbiB0aGVpciAke2kuaW5kZW50ID8gXCJleHBsaWNpdCBpbmRlbnRhdGlvbiBpbmRpY2F0b3JcIiA6IFwiZmlyc3QgbGluZVwifWA7IG4obCAtIHMubGVuZ3RoIC0gKGEgPyAyIDogMSksIFwiQkFEX0lOREVOVFwiLCBlKSwgdCA9IFwiXCIgfSBvID09PSBNLkJMT0NLX0xJVEVSQUwgPyAoZiArPSBoICsgdC5zbGljZShjKSArIHMsIGggPSBcIlxcblwiKSA6IHQubGVuZ3RoID4gYyB8fCBcIlxcdFwiID09PSBzWzBdID8gKFwiIFwiID09PSBoID8gaCA9IFwiXFxuXCIgOiBkIHx8IFwiXFxuXCIgIT09IGggfHwgKGggPSBcIlxcblxcblwiKSwgZiArPSBoICsgdC5zbGljZShjKSArIHMsIGggPSBcIlxcblwiLCBkID0gITApIDogXCJcIiA9PT0gcyA/IFwiXFxuXCIgPT09IGggPyBmICs9IFwiXFxuXCIgOiBoID0gXCJcXG5cIiA6IChmICs9IGggKyBzLCBoID0gXCIgXCIsIGQgPSAhMSkgfSBzd2l0Y2ggKGkuY2hvbXApIHsgY2FzZSBcIi1cIjogYnJlYWs7IGNhc2UgXCIrXCI6IGZvciAobGV0IGUgPSBhOyBlIDwgci5sZW5ndGg7ICsrZSlmICs9IFwiXFxuXCIgKyByW2VdWzBdLnNsaWNlKGMpOyBcIlxcblwiICE9PSBmW2YubGVuZ3RoIC0gMV0gJiYgKGYgKz0gXCJcXG5cIik7IGJyZWFrOyBkZWZhdWx0OiBmICs9IFwiXFxuXCIgfWNvbnN0IHAgPSBzICsgaS5sZW5ndGggKyB0LnNvdXJjZS5sZW5ndGg7IHJldHVybiB7IHZhbHVlOiBmLCB0eXBlOiBvLCBjb21tZW50OiBpLmNvbW1lbnQsIHJhbmdlOiBbcywgcCwgcF0gfSB9IGZ1bmN0aW9uIGp0KGUsIHQsIG4pIHsgY29uc3QgeyBvZmZzZXQ6IHMsIHR5cGU6IGksIHNvdXJjZTogbywgZW5kOiByIH0gPSBlOyBsZXQgYSwgYzsgY29uc3QgbCA9IChlLCB0LCBpKSA9PiBuKHMgKyBlLCB0LCBpKTsgc3dpdGNoIChpKSB7IGNhc2UgXCJzY2FsYXJcIjogYSA9IE0uUExBSU4sIGMgPSBmdW5jdGlvbiAoZSwgdCkgeyBsZXQgbiA9IFwiXCI7IHN3aXRjaCAoZVswXSkgeyBjYXNlIFwiXFx0XCI6IG4gPSBcImEgdGFiIGNoYXJhY3RlclwiOyBicmVhazsgY2FzZSBcIixcIjogbiA9IFwiZmxvdyBpbmRpY2F0b3IgY2hhcmFjdGVyICxcIjsgYnJlYWs7IGNhc2UgXCIlXCI6IG4gPSBcImRpcmVjdGl2ZSBpbmRpY2F0b3IgY2hhcmFjdGVyICVcIjsgYnJlYWs7IGNhc2UgXCJ8XCI6IGNhc2UgXCI+XCI6IG4gPSBgYmxvY2sgc2NhbGFyIGluZGljYXRvciAke2VbMF19YDsgYnJlYWs7IGNhc2UgXCJAXCI6IGNhc2UgXCJgXCI6IG4gPSBgcmVzZXJ2ZWQgY2hhcmFjdGVyICR7ZVswXX1gIH1uICYmIHQoMCwgXCJCQURfU0NBTEFSX1NUQVJUXCIsIGBQbGFpbiB2YWx1ZSBjYW5ub3Qgc3RhcnQgd2l0aCAke259YCk7IHJldHVybiBNdChlKSB9KG8sIGwpOyBicmVhazsgY2FzZSBcInNpbmdsZS1xdW90ZWQtc2NhbGFyXCI6IGEgPSBNLlFVT1RFX1NJTkdMRSwgYyA9IGZ1bmN0aW9uIChlLCB0KSB7IFwiJ1wiID09PSBlW2UubGVuZ3RoIC0gMV0gJiYgMSAhPT0gZS5sZW5ndGggfHwgdChlLmxlbmd0aCwgXCJNSVNTSU5HX0NIQVJcIiwgXCJNaXNzaW5nIGNsb3NpbmcgJ3F1b3RlXCIpOyByZXR1cm4gTXQoZS5zbGljZSgxLCAtMSkpLnJlcGxhY2UoLycnL2csIFwiJ1wiKSB9KG8sIGwpOyBicmVhazsgY2FzZSBcImRvdWJsZS1xdW90ZWQtc2NhbGFyXCI6IGEgPSBNLlFVT1RFX0RPVUJMRSwgYyA9IGZ1bmN0aW9uIChlLCB0KSB7IGxldCBuID0gXCJcIjsgZm9yIChsZXQgcyA9IDE7IHMgPCBlLmxlbmd0aCAtIDE7ICsrcykgeyBjb25zdCBpID0gZVtzXTsgaWYgKFwiXFxyXCIgIT09IGkgfHwgXCJcXG5cIiAhPT0gZVtzICsgMV0pIGlmIChcIlxcblwiID09PSBpKSB7IGNvbnN0IHsgZm9sZDogdCwgb2Zmc2V0OiBpIH0gPSBEdChlLCBzKTsgbiArPSB0LCBzID0gaSB9IGVsc2UgaWYgKFwiXFxcXFwiID09PSBpKSB7IGxldCBpID0gZVsrK3NdOyBjb25zdCBvID0gcXRbaV07IGlmIChvKSBuICs9IG87IGVsc2UgaWYgKFwiXFxuXCIgPT09IGkpIGZvciAoaSA9IGVbcyArIDFdOyBcIiBcIiA9PT0gaSB8fCBcIlxcdFwiID09PSBpOylpID0gZVsxICsgKytzXTsgZWxzZSBpZiAoXCJcXHJcIiA9PT0gaSAmJiBcIlxcblwiID09PSBlW3MgKyAxXSkgZm9yIChpID0gZVsxICsgKytzXTsgXCIgXCIgPT09IGkgfHwgXCJcXHRcIiA9PT0gaTspaSA9IGVbMSArICsrc107IGVsc2UgaWYgKFwieFwiID09PSBpIHx8IFwidVwiID09PSBpIHx8IFwiVVwiID09PSBpKSB7IGNvbnN0IG8gPSB7IHg6IDIsIHU6IDQsIFU6IDggfVtpXTsgbiArPSBQdChlLCBzICsgMSwgbywgdCksIHMgKz0gbyB9IGVsc2UgeyBjb25zdCBpID0gZS5zdWJzdHIocyAtIDEsIDIpOyB0KHMgLSAxLCBcIkJBRF9EUV9FU0NBUEVcIiwgYEludmFsaWQgZXNjYXBlIHNlcXVlbmNlICR7aX1gKSwgbiArPSBpIH0gfSBlbHNlIGlmIChcIiBcIiA9PT0gaSB8fCBcIlxcdFwiID09PSBpKSB7IGNvbnN0IHQgPSBzOyBsZXQgbyA9IGVbcyArIDFdOyBmb3IgKDsgXCIgXCIgPT09IG8gfHwgXCJcXHRcIiA9PT0gbzspbyA9IGVbMSArICsrc107IFwiXFxuXCIgPT09IG8gfHwgXCJcXHJcIiA9PT0gbyAmJiBcIlxcblwiID09PSBlW3MgKyAyXSB8fCAobiArPSBzID4gdCA/IGUuc2xpY2UodCwgcyArIDEpIDogaSkgfSBlbHNlIG4gKz0gaSB9ICdcIicgPT09IGVbZS5sZW5ndGggLSAxXSAmJiAxICE9PSBlLmxlbmd0aCB8fCB0KGUubGVuZ3RoLCBcIk1JU1NJTkdfQ0hBUlwiLCAnTWlzc2luZyBjbG9zaW5nIFwicXVvdGUnKTsgcmV0dXJuIG4gfShvLCBsKTsgYnJlYWs7IGRlZmF1bHQ6IHJldHVybiBuKGUsIFwiVU5FWFBFQ1RFRF9UT0tFTlwiLCBgRXhwZWN0ZWQgYSBmbG93IHNjYWxhciB2YWx1ZSwgYnV0IGZvdW5kOiAke2l9YCksIHsgdmFsdWU6IFwiXCIsIHR5cGU6IG51bGwsIGNvbW1lbnQ6IFwiXCIsIHJhbmdlOiBbcywgcyArIG8ubGVuZ3RoLCBzICsgby5sZW5ndGhdIH0gfWNvbnN0IHUgPSBzICsgby5sZW5ndGgsIGYgPSAkdChyLCB1LCB0LCBuKTsgcmV0dXJuIHsgdmFsdWU6IGMsIHR5cGU6IGEsIGNvbW1lbnQ6IGYuY29tbWVudCwgcmFuZ2U6IFtzLCB1LCBmLm9mZnNldF0gfSB9IGZ1bmN0aW9uIE10KGUpIHsgbGV0IHQsIG47IHRyeSB7IHQgPSBuZXcgUmVnRXhwKFwiKC4qPykoPzwhWyBcXHRdKVsgXFx0XSpcXHI/XFxuXCIsIFwic3lcIiksIG4gPSBuZXcgUmVnRXhwKFwiWyBcXHRdKiguKj8pKD86KD88IVsgXFx0XSlbIFxcdF0qKT9cXHI/XFxuXCIsIFwic3lcIikgfSBjYXRjaCB7IHQgPSAvKC4qPylbIFxcdF0qXFxyP1xcbi9zeSwgbiA9IC9bIFxcdF0qKC4qPylbIFxcdF0qXFxyP1xcbi9zeSB9IGxldCBzID0gdC5leGVjKGUpOyBpZiAoIXMpIHJldHVybiBlOyBsZXQgaSA9IHNbMV0sIG8gPSBcIiBcIiwgciA9IHQubGFzdEluZGV4OyBmb3IgKG4ubGFzdEluZGV4ID0gcjsgcyA9IG4uZXhlYyhlKTspXCJcIiA9PT0gc1sxXSA/IFwiXFxuXCIgPT09IG8gPyBpICs9IG8gOiBvID0gXCJcXG5cIiA6IChpICs9IG8gKyBzWzFdLCBvID0gXCIgXCIpLCByID0gbi5sYXN0SW5kZXg7IGNvbnN0IGEgPSAvWyBcXHRdKiguKikvc3k7IHJldHVybiBhLmxhc3RJbmRleCA9IHIsIHMgPSBhLmV4ZWMoZSksIGkgKyBvICsgKHM/LlsxXSA/PyBcIlwiKSB9IGZ1bmN0aW9uIER0KGUsIHQpIHsgbGV0IG4gPSBcIlwiLCBzID0gZVt0ICsgMV07IGZvciAoOyAhKFwiIFwiICE9PSBzICYmIFwiXFx0XCIgIT09IHMgJiYgXCJcXG5cIiAhPT0gcyAmJiBcIlxcclwiICE9PSBzIHx8IFwiXFxyXCIgPT09IHMgJiYgXCJcXG5cIiAhPT0gZVt0ICsgMl0pOylcIlxcblwiID09PSBzICYmIChuICs9IFwiXFxuXCIpLCBzID0gZVsodCArPSAxKSArIDFdOyByZXR1cm4gbiB8fCAobiA9IFwiIFwiKSwgeyBmb2xkOiBuLCBvZmZzZXQ6IHQgfSB9IGNvbnN0IHF0ID0geyAwOiBcIlxcMFwiLCBhOiBcIlx1MDAwN1wiLCBiOiBcIlxcYlwiLCBlOiBcIlx1MDAxYlwiLCBmOiBcIlxcZlwiLCBuOiBcIlxcblwiLCByOiBcIlxcclwiLCB0OiBcIlxcdFwiLCB2OiBcIlxcdlwiLCBOOiBcIsKFXCIsIF86IFwiIFwiLCBMOiBcIlxcdTIwMjhcIiwgUDogXCJcXHUyMDI5XCIsIFwiIFwiOiBcIiBcIiwgJ1wiJzogJ1wiJywgXCIvXCI6IFwiL1wiLCBcIlxcXFxcIjogXCJcXFxcXCIsIFwiXFx0XCI6IFwiXFx0XCIgfTsgZnVuY3Rpb24gUHQoZSwgdCwgbiwgcykgeyBjb25zdCBpID0gZS5zdWJzdHIodCwgbiksIG8gPSBpLmxlbmd0aCA9PT0gbiAmJiAvXlswLTlhLWZBLUZdKyQvLnRlc3QoaSkgPyBwYXJzZUludChpLCAxNikgOiBOYU47IGlmIChpc05hTihvKSkgeyBjb25zdCBpID0gZS5zdWJzdHIodCAtIDIsIG4gKyAyKTsgcmV0dXJuIHModCAtIDIsIFwiQkFEX0RRX0VTQ0FQRVwiLCBgSW52YWxpZCBlc2NhcGUgc2VxdWVuY2UgJHtpfWApLCBpIH0gcmV0dXJuIFN0cmluZy5mcm9tQ29kZVBvaW50KG8pIH0gZnVuY3Rpb24gVXQoZSwgdCwgbiwgcykgeyBjb25zdCB7IHZhbHVlOiBvLCB0eXBlOiByLCBjb21tZW50OiBhLCByYW5nZTogYyB9ID0gXCJibG9jay1zY2FsYXJcIiA9PT0gdC50eXBlID8gQnQoZSwgdCwgcykgOiBqdCh0LCBlLm9wdGlvbnMuc3RyaWN0LCBzKSwgbCA9IG4gPyBlLmRpcmVjdGl2ZXMudGFnTmFtZShuLnNvdXJjZSwgKGUgPT4gcyhuLCBcIlRBR19SRVNPTFZFX0ZBSUxFRFwiLCBlKSkpIDogbnVsbDsgbGV0IHUsIGg7IHUgPSBlLm9wdGlvbnMuc3RyaW5nS2V5cyAmJiBlLmF0S2V5ID8gZS5zY2hlbWFbaV0gOiBsID8gZnVuY3Rpb24gKGUsIHQsIG4sIHMsIG8pIHsgaWYgKFwiIVwiID09PSBuKSByZXR1cm4gZVtpXTsgY29uc3QgciA9IFtdOyBmb3IgKGNvbnN0IHQgb2YgZS50YWdzKSBpZiAoIXQuY29sbGVjdGlvbiAmJiB0LnRhZyA9PT0gbikgeyBpZiAoIXQuZGVmYXVsdCB8fCAhdC50ZXN0KSByZXR1cm4gdDsgci5wdXNoKHQpIH0gZm9yIChjb25zdCBlIG9mIHIpIGlmIChlLnRlc3Q/LnRlc3QodCkpIHJldHVybiBlOyBjb25zdCBhID0gZS5rbm93blRhZ3Nbbl07IGlmIChhICYmICFhLmNvbGxlY3Rpb24pIHJldHVybiBlLnRhZ3MucHVzaChPYmplY3QuYXNzaWduKHt9LCBhLCB7IGRlZmF1bHQ6ICExLCB0ZXN0OiB2b2lkIDAgfSkpLCBhOyByZXR1cm4gbyhzLCBcIlRBR19SRVNPTFZFX0ZBSUxFRFwiLCBgVW5yZXNvbHZlZCB0YWc6ICR7bn1gLCBcInRhZzp5YW1sLm9yZywyMDAyOnN0clwiICE9PSBuKSwgZVtpXSB9KGUuc2NoZW1hLCBvLCBsLCBuLCBzKSA6IFwic2NhbGFyXCIgPT09IHQudHlwZSA/IGZ1bmN0aW9uICh7IGF0S2V5OiBlLCBkaXJlY3RpdmVzOiB0LCBzY2hlbWE6IG4gfSwgcywgbywgcikgeyBjb25zdCBhID0gbi50YWdzLmZpbmQoKHQgPT4gKCEwID09PSB0LmRlZmF1bHQgfHwgZSAmJiBcImtleVwiID09PSB0LmRlZmF1bHQpICYmIHQudGVzdD8udGVzdChzKSkpIHx8IG5baV07IGlmIChuLmNvbXBhdCkgeyBjb25zdCBlID0gbi5jb21wYXQuZmluZCgoZSA9PiBlLmRlZmF1bHQgJiYgZS50ZXN0Py50ZXN0KHMpKSkgPz8gbltpXTsgaWYgKGEudGFnICE9PSBlLnRhZykgeyByKG8sIFwiVEFHX1JFU09MVkVfRkFJTEVEXCIsIGBWYWx1ZSBtYXkgYmUgcGFyc2VkIGFzIGVpdGhlciAke3QudGFnU3RyaW5nKGEudGFnKX0gb3IgJHt0LnRhZ1N0cmluZyhlLnRhZyl9YCwgITApIH0gfSByZXR1cm4gYSB9KGUsIG8sIHQsIHMpIDogZS5zY2hlbWFbaV07IHRyeSB7IGNvbnN0IGkgPSB1LnJlc29sdmUobywgKGUgPT4gcyhuID8/IHQsIFwiVEFHX1JFU09MVkVfRkFJTEVEXCIsIGUpKSwgZS5vcHRpb25zKTsgaCA9IGYoaSkgPyBpIDogbmV3IE0oaSkgfSBjYXRjaCAoZSkgeyBjb25zdCBpID0gZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogU3RyaW5nKGUpOyBzKG4gPz8gdCwgXCJUQUdfUkVTT0xWRV9GQUlMRURcIiwgaSksIGggPSBuZXcgTShvKSB9IHJldHVybiBoLnJhbmdlID0gYywgaC5zb3VyY2UgPSBvLCByICYmIChoLnR5cGUgPSByKSwgbCAmJiAoaC50YWcgPSBsKSwgdS5mb3JtYXQgJiYgKGguZm9ybWF0ID0gdS5mb3JtYXQpLCBhICYmIChoLmNvbW1lbnQgPSBhKSwgaCB9IGZ1bmN0aW9uIFJ0KGUsIHQsIG4pIHsgaWYgKHQpIHsgbiA/PyAobiA9IHQubGVuZ3RoKTsgZm9yIChsZXQgcyA9IG4gLSAxOyBzID49IDA7IC0tcykgeyBsZXQgbiA9IHRbc107IHN3aXRjaCAobi50eXBlKSB7IGNhc2UgXCJzcGFjZVwiOiBjYXNlIFwiY29tbWVudFwiOiBjYXNlIFwibmV3bGluZVwiOiBlIC09IG4uc291cmNlLmxlbmd0aDsgY29udGludWUgfWZvciAobiA9IHRbKytzXTsgXCJzcGFjZVwiID09PSBuPy50eXBlOyllICs9IG4uc291cmNlLmxlbmd0aCwgbiA9IHRbKytzXTsgYnJlYWsgfSB9IHJldHVybiBlIH0gY29uc3QgRnQgPSB7IGNvbXBvc2VOb2RlOiBWdCwgY29tcG9zZUVtcHR5Tm9kZTogSnQgfTsgZnVuY3Rpb24gVnQoZSwgdCwgbiwgcykgeyBjb25zdCBpID0gZS5hdEtleSwgeyBzcGFjZUJlZm9yZTogbywgY29tbWVudDogciwgYW5jaG9yOiBhLCB0YWc6IGMgfSA9IG47IGxldCBsLCB1ID0gITA7IHN3aXRjaCAodC50eXBlKSB7IGNhc2UgXCJhbGlhc1wiOiBsID0gZnVuY3Rpb24gKHsgb3B0aW9uczogZSB9LCB7IG9mZnNldDogdCwgc291cmNlOiBuLCBlbmQ6IHMgfSwgaSkgeyBjb25zdCBvID0gbmV3IEsobi5zdWJzdHJpbmcoMSkpOyBcIlwiID09PSBvLnNvdXJjZSAmJiBpKHQsIFwiQkFEX0FMSUFTXCIsIFwiQWxpYXMgY2Fubm90IGJlIGFuIGVtcHR5IHN0cmluZ1wiKTsgby5zb3VyY2UuZW5kc1dpdGgoXCI6XCIpICYmIGkodCArIG4ubGVuZ3RoIC0gMSwgXCJCQURfQUxJQVNcIiwgXCJBbGlhcyBlbmRpbmcgaW4gOiBpcyBhbWJpZ3VvdXNcIiwgITApOyBjb25zdCByID0gdCArIG4ubGVuZ3RoLCBhID0gJHQocywgciwgZS5zdHJpY3QsIGkpOyBvLnJhbmdlID0gW3QsIHIsIGEub2Zmc2V0XSwgYS5jb21tZW50ICYmIChvLmNvbW1lbnQgPSBhLmNvbW1lbnQpOyByZXR1cm4gbyB9KGUsIHQsIHMpLCAoYSB8fCBjKSAmJiBzKHQsIFwiQUxJQVNfUFJPUFNcIiwgXCJBbiBhbGlhcyBub2RlIG11c3Qgbm90IHNwZWNpZnkgYW55IHByb3BlcnRpZXNcIik7IGJyZWFrOyBjYXNlIFwic2NhbGFyXCI6IGNhc2UgXCJzaW5nbGUtcXVvdGVkLXNjYWxhclwiOiBjYXNlIFwiZG91YmxlLXF1b3RlZC1zY2FsYXJcIjogY2FzZSBcImJsb2NrLXNjYWxhclwiOiBsID0gVXQoZSwgdCwgYywgcyksIGEgJiYgKGwuYW5jaG9yID0gYS5zb3VyY2Uuc3Vic3RyaW5nKDEpKTsgYnJlYWs7IGNhc2UgXCJibG9jay1tYXBcIjogY2FzZSBcImJsb2NrLXNlcVwiOiBjYXNlIFwiZmxvdy1jb2xsZWN0aW9uXCI6IGwgPSBmdW5jdGlvbiAoZSwgdCwgbiwgcywgaSkgeyBjb25zdCBvID0gcy50YWcsIHIgPSBvID8gdC5kaXJlY3RpdmVzLnRhZ05hbWUoby5zb3VyY2UsIChlID0+IGkobywgXCJUQUdfUkVTT0xWRV9GQUlMRURcIiwgZSkpKSA6IG51bGw7IGlmIChcImJsb2NrLXNlcVwiID09PSBuLnR5cGUpIHsgY29uc3QgeyBhbmNob3I6IGUsIG5ld2xpbmVBZnRlclByb3A6IHQgfSA9IHMsIG4gPSBlICYmIG8gPyBlLm9mZnNldCA+IG8ub2Zmc2V0ID8gZSA6IG8gOiBlID8/IG87IG4gJiYgKCF0IHx8IHQub2Zmc2V0IDwgbi5vZmZzZXQpICYmIGkobiwgXCJNSVNTSU5HX0NIQVJcIiwgXCJNaXNzaW5nIG5ld2xpbmUgYWZ0ZXIgYmxvY2sgc2VxdWVuY2UgcHJvcHNcIikgfSBjb25zdCBhID0gXCJibG9jay1tYXBcIiA9PT0gbi50eXBlID8gXCJtYXBcIiA6IFwiYmxvY2stc2VxXCIgPT09IG4udHlwZSA/IFwic2VxXCIgOiBcIntcIiA9PT0gbi5zdGFydC5zb3VyY2UgPyBcIm1hcFwiIDogXCJzZXFcIjsgaWYgKCFvIHx8ICFyIHx8IFwiIVwiID09PSByIHx8IHIgPT09IGtlLnRhZ05hbWUgJiYgXCJtYXBcIiA9PT0gYSB8fCByID09PSB2ZS50YWdOYW1lICYmIFwic2VxXCIgPT09IGEpIHJldHVybiBLdChlLCB0LCBuLCBpLCByKTsgbGV0IGMgPSB0LnNjaGVtYS50YWdzLmZpbmQoKGUgPT4gZS50YWcgPT09IHIgJiYgZS5jb2xsZWN0aW9uID09PSBhKSk7IGlmICghYykgeyBjb25zdCBzID0gdC5zY2hlbWEua25vd25UYWdzW3JdOyBpZiAoIXMgfHwgcy5jb2xsZWN0aW9uICE9PSBhKSByZXR1cm4gcyA/IGkobywgXCJCQURfQ09MTEVDVElPTl9UWVBFXCIsIGAke3MudGFnfSB1c2VkIGZvciAke2F9IGNvbGxlY3Rpb24sIGJ1dCBleHBlY3RzICR7cy5jb2xsZWN0aW9uID8/IFwic2NhbGFyXCJ9YCwgITApIDogaShvLCBcIlRBR19SRVNPTFZFX0ZBSUxFRFwiLCBgVW5yZXNvbHZlZCB0YWc6ICR7cn1gLCAhMCksIEt0KGUsIHQsIG4sIGksIHIpOyB0LnNjaGVtYS50YWdzLnB1c2goT2JqZWN0LmFzc2lnbih7fSwgcywgeyBkZWZhdWx0OiAhMSB9KSksIGMgPSBzIH0gY29uc3QgbCA9IEt0KGUsIHQsIG4sIGksIHIsIGMpLCB1ID0gYy5yZXNvbHZlPy4obCwgKGUgPT4gaShvLCBcIlRBR19SRVNPTFZFX0ZBSUxFRFwiLCBlKSksIHQub3B0aW9ucykgPz8gbCwgZiA9IHAodSkgPyB1IDogbmV3IE0odSk7IHJldHVybiBmLnJhbmdlID0gbC5yYW5nZSwgZi50YWcgPSByLCBjPy5mb3JtYXQgJiYgKGYuZm9ybWF0ID0gYy5mb3JtYXQpLCBmIH0oRnQsIGUsIHQsIG4sIHMpLCBhICYmIChsLmFuY2hvciA9IGEuc291cmNlLnN1YnN0cmluZygxKSk7IGJyZWFrOyBkZWZhdWx0OiBzKHQsIFwiVU5FWFBFQ1RFRF9UT0tFTlwiLCBcImVycm9yXCIgPT09IHQudHlwZSA/IHQubWVzc2FnZSA6IGBVbnN1cHBvcnRlZCB0b2tlbiAodHlwZTogJHt0LnR5cGV9KWApLCBsID0gSnQoZSwgdC5vZmZzZXQsIHZvaWQgMCwgbnVsbCwgbiwgcyksIHUgPSAhMSB9aWYgKGEgJiYgXCJcIiA9PT0gbC5hbmNob3IgJiYgcyhhLCBcIkJBRF9BTElBU1wiLCBcIkFuY2hvciBjYW5ub3QgYmUgYW4gZW1wdHkgc3RyaW5nXCIpLCBpICYmIGUub3B0aW9ucy5zdHJpbmdLZXlzICYmICghZihsKSB8fCBcInN0cmluZ1wiICE9IHR5cGVvZiBsLnZhbHVlIHx8IGwudGFnICYmIFwidGFnOnlhbWwub3JnLDIwMDI6c3RyXCIgIT09IGwudGFnKSkgeyBzKGMgPz8gdCwgXCJOT05fU1RSSU5HX0tFWVwiLCBcIldpdGggc3RyaW5nS2V5cywgYWxsIGtleXMgbXVzdCBiZSBzdHJpbmdzXCIpIH0gcmV0dXJuIG8gJiYgKGwuc3BhY2VCZWZvcmUgPSAhMCksIHIgJiYgKFwic2NhbGFyXCIgPT09IHQudHlwZSAmJiBcIlwiID09PSB0LnNvdXJjZSA/IGwuY29tbWVudCA9IHIgOiBsLmNvbW1lbnRCZWZvcmUgPSByKSwgZS5vcHRpb25zLmtlZXBTb3VyY2VUb2tlbnMgJiYgdSAmJiAobC5zcmNUb2tlbiA9IHQpLCBsIH0gZnVuY3Rpb24gSnQoZSwgdCwgbiwgcywgeyBzcGFjZUJlZm9yZTogaSwgY29tbWVudDogbywgYW5jaG9yOiByLCB0YWc6IGEsIGVuZDogYyB9LCBsKSB7IGNvbnN0IHUgPSBVdChlLCB7IHR5cGU6IFwic2NhbGFyXCIsIG9mZnNldDogUnQodCwgbiwgcyksIGluZGVudDogLTEsIHNvdXJjZTogXCJcIiB9LCBhLCBsKTsgcmV0dXJuIHIgJiYgKHUuYW5jaG9yID0gci5zb3VyY2Uuc3Vic3RyaW5nKDEpLCBcIlwiID09PSB1LmFuY2hvciAmJiBsKHIsIFwiQkFEX0FMSUFTXCIsIFwiQW5jaG9yIGNhbm5vdCBiZSBhbiBlbXB0eSBzdHJpbmdcIikpLCBpICYmICh1LnNwYWNlQmVmb3JlID0gITApLCBvICYmICh1LmNvbW1lbnQgPSBvLCB1LnJhbmdlWzJdID0gYyksIHUgfSBmdW5jdGlvbiBZdChlKSB7IGlmIChcIm51bWJlclwiID09IHR5cGVvZiBlKSByZXR1cm4gW2UsIGUgKyAxXTsgaWYgKEFycmF5LmlzQXJyYXkoZSkpIHJldHVybiAyID09PSBlLmxlbmd0aCA/IGUgOiBbZVswXSwgZVsxXV07IGNvbnN0IHsgb2Zmc2V0OiB0LCBzb3VyY2U6IG4gfSA9IGU7IHJldHVybiBbdCwgdCArIChcInN0cmluZ1wiID09IHR5cGVvZiBuID8gbi5sZW5ndGggOiAxKV0gfSBmdW5jdGlvbiBXdChlKSB7IGxldCB0ID0gXCJcIiwgbiA9ICExLCBzID0gITE7IGZvciAobGV0IGkgPSAwOyBpIDwgZS5sZW5ndGg7ICsraSkgeyBjb25zdCBvID0gZVtpXTsgc3dpdGNoIChvWzBdKSB7IGNhc2UgXCIjXCI6IHQgKz0gKFwiXCIgPT09IHQgPyBcIlwiIDogcyA/IFwiXFxuXFxuXCIgOiBcIlxcblwiKSArIChvLnN1YnN0cmluZygxKSB8fCBcIiBcIiksIG4gPSAhMCwgcyA9ICExOyBicmVhazsgY2FzZSBcIiVcIjogXCIjXCIgIT09IGVbaSArIDFdPy5bMF0gJiYgKGkgKz0gMSksIG4gPSAhMTsgYnJlYWs7IGRlZmF1bHQ6IG4gfHwgKHMgPSAhMCksIG4gPSAhMSB9IH0gcmV0dXJuIHsgY29tbWVudDogdCwgYWZ0ZXJFbXB0eUxpbmU6IHMgfSB9IGNsYXNzIEd0IHsgY29uc3RydWN0b3IoZSA9IHt9KSB7IHRoaXMuZG9jID0gbnVsbCwgdGhpcy5hdERpcmVjdGl2ZXMgPSAhMSwgdGhpcy5wcmVsdWRlID0gW10sIHRoaXMuZXJyb3JzID0gW10sIHRoaXMud2FybmluZ3MgPSBbXSwgdGhpcy5vbkVycm9yID0gKGUsIHQsIG4sIHMpID0+IHsgY29uc3QgaSA9IFl0KGUpOyBzID8gdGhpcy53YXJuaW5ncy5wdXNoKG5ldyBOdChpLCB0LCBuKSkgOiB0aGlzLmVycm9ycy5wdXNoKG5ldyBFdChpLCB0LCBuKSkgfSwgdGhpcy5kaXJlY3RpdmVzID0gbmV3IEkoeyB2ZXJzaW9uOiBlLnZlcnNpb24gfHwgXCIxLjJcIiB9KSwgdGhpcy5vcHRpb25zID0gZSB9IGRlY29yYXRlKGUsIHQpIHsgY29uc3QgeyBjb21tZW50OiBuLCBhZnRlckVtcHR5TGluZTogcyB9ID0gV3QodGhpcy5wcmVsdWRlKTsgaWYgKG4pIHsgY29uc3QgaSA9IGUuY29udGVudHM7IGlmICh0KSBlLmNvbW1lbnQgPSBlLmNvbW1lbnQgPyBgJHtlLmNvbW1lbnR9XFxuJHtufWAgOiBuOyBlbHNlIGlmIChzIHx8IGUuZGlyZWN0aXZlcy5kb2NTdGFydCB8fCAhaSkgZS5jb21tZW50QmVmb3JlID0gbjsgZWxzZSBpZiAoZChpKSAmJiAhaS5mbG93ICYmIGkuaXRlbXMubGVuZ3RoID4gMCkgeyBsZXQgZSA9IGkuaXRlbXNbMF07IHUoZSkgJiYgKGUgPSBlLmtleSk7IGNvbnN0IHQgPSBlLmNvbW1lbnRCZWZvcmU7IGUuY29tbWVudEJlZm9yZSA9IHQgPyBgJHtufVxcbiR7dH1gIDogbiB9IGVsc2UgeyBjb25zdCBlID0gaS5jb21tZW50QmVmb3JlOyBpLmNvbW1lbnRCZWZvcmUgPSBlID8gYCR7bn1cXG4ke2V9YCA6IG4gfSB9IHQgPyAoQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoZS5lcnJvcnMsIHRoaXMuZXJyb3JzKSwgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoZS53YXJuaW5ncywgdGhpcy53YXJuaW5ncykpIDogKGUuZXJyb3JzID0gdGhpcy5lcnJvcnMsIGUud2FybmluZ3MgPSB0aGlzLndhcm5pbmdzKSwgdGhpcy5wcmVsdWRlID0gW10sIHRoaXMuZXJyb3JzID0gW10sIHRoaXMud2FybmluZ3MgPSBbXSB9IHN0cmVhbUluZm8oKSB7IHJldHVybiB7IGNvbW1lbnQ6IFd0KHRoaXMucHJlbHVkZSkuY29tbWVudCwgZGlyZWN0aXZlczogdGhpcy5kaXJlY3RpdmVzLCBlcnJvcnM6IHRoaXMuZXJyb3JzLCB3YXJuaW5nczogdGhpcy53YXJuaW5ncyB9IH0gKmNvbXBvc2UoZSwgdCA9ICExLCBuID0gLTEpIHsgZm9yIChjb25zdCB0IG9mIGUpIHlpZWxkKiB0aGlzLm5leHQodCk7IHlpZWxkKiB0aGlzLmVuZCh0LCBuKSB9ICpuZXh0KGUpIHsgc3dpdGNoIChlLnR5cGUpIHsgY2FzZSBcImRpcmVjdGl2ZVwiOiB0aGlzLmRpcmVjdGl2ZXMuYWRkKGUuc291cmNlLCAoKHQsIG4sIHMpID0+IHsgY29uc3QgaSA9IFl0KGUpOyBpWzBdICs9IHQsIHRoaXMub25FcnJvcihpLCBcIkJBRF9ESVJFQ1RJVkVcIiwgbiwgcykgfSkpLCB0aGlzLnByZWx1ZGUucHVzaChlLnNvdXJjZSksIHRoaXMuYXREaXJlY3RpdmVzID0gITA7IGJyZWFrOyBjYXNlIFwiZG9jdW1lbnRcIjogeyBjb25zdCB0ID0gZnVuY3Rpb24gKGUsIHQsIHsgb2Zmc2V0OiBuLCBzdGFydDogcywgdmFsdWU6IGksIGVuZDogbyB9LCByKSB7IGNvbnN0IGEgPSBPYmplY3QuYXNzaWduKHsgX2RpcmVjdGl2ZXM6IHQgfSwgZSksIGMgPSBuZXcgd3Qodm9pZCAwLCBhKSwgbCA9IHsgYXRLZXk6ICExLCBhdFJvb3Q6ICEwLCBkaXJlY3RpdmVzOiBjLmRpcmVjdGl2ZXMsIG9wdGlvbnM6IGMub3B0aW9ucywgc2NoZW1hOiBjLnNjaGVtYSB9LCB1ID0gQXQocywgeyBpbmRpY2F0b3I6IFwiZG9jLXN0YXJ0XCIsIG5leHQ6IGkgPz8gbz8uWzBdLCBvZmZzZXQ6IG4sIG9uRXJyb3I6IHIsIHBhcmVudEluZGVudDogMCwgc3RhcnRPbk5ld2xpbmU6ICEwIH0pOyB1LmZvdW5kICYmIChjLmRpcmVjdGl2ZXMuZG9jU3RhcnQgPSAhMCwgIWkgfHwgXCJibG9jay1tYXBcIiAhPT0gaS50eXBlICYmIFwiYmxvY2stc2VxXCIgIT09IGkudHlwZSB8fCB1Lmhhc05ld2xpbmUgfHwgcih1LmVuZCwgXCJNSVNTSU5HX0NIQVJcIiwgXCJCbG9jayBjb2xsZWN0aW9uIGNhbm5vdCBzdGFydCBvbiBzYW1lIGxpbmUgd2l0aCBkaXJlY3RpdmVzLWVuZCBtYXJrZXJcIikpLCBjLmNvbnRlbnRzID0gaSA/IFZ0KGwsIGksIHUsIHIpIDogSnQobCwgdS5lbmQsIHMsIG51bGwsIHUsIHIpOyBjb25zdCBmID0gYy5jb250ZW50cy5yYW5nZVsyXSwgaCA9ICR0KG8sIGYsICExLCByKTsgcmV0dXJuIGguY29tbWVudCAmJiAoYy5jb21tZW50ID0gaC5jb21tZW50KSwgYy5yYW5nZSA9IFtuLCBmLCBoLm9mZnNldF0sIGMgfSh0aGlzLm9wdGlvbnMsIHRoaXMuZGlyZWN0aXZlcywgZSwgdGhpcy5vbkVycm9yKTsgdGhpcy5hdERpcmVjdGl2ZXMgJiYgIXQuZGlyZWN0aXZlcy5kb2NTdGFydCAmJiB0aGlzLm9uRXJyb3IoZSwgXCJNSVNTSU5HX0NIQVJcIiwgXCJNaXNzaW5nIGRpcmVjdGl2ZXMtZW5kL2RvYy1zdGFydCBpbmRpY2F0b3IgbGluZVwiKSwgdGhpcy5kZWNvcmF0ZSh0LCAhMSksIHRoaXMuZG9jICYmICh5aWVsZCB0aGlzLmRvYyksIHRoaXMuZG9jID0gdCwgdGhpcy5hdERpcmVjdGl2ZXMgPSAhMTsgYnJlYWsgfSBjYXNlIFwiYnl0ZS1vcmRlci1tYXJrXCI6IGNhc2UgXCJzcGFjZVwiOiBicmVhazsgY2FzZSBcImNvbW1lbnRcIjogY2FzZSBcIm5ld2xpbmVcIjogdGhpcy5wcmVsdWRlLnB1c2goZS5zb3VyY2UpOyBicmVhazsgY2FzZSBcImVycm9yXCI6IHsgY29uc3QgdCA9IGUuc291cmNlID8gYCR7ZS5tZXNzYWdlfTogJHtKU09OLnN0cmluZ2lmeShlLnNvdXJjZSl9YCA6IGUubWVzc2FnZSwgbiA9IG5ldyBFdChZdChlKSwgXCJVTkVYUEVDVEVEX1RPS0VOXCIsIHQpOyB0aGlzLmF0RGlyZWN0aXZlcyB8fCAhdGhpcy5kb2MgPyB0aGlzLmVycm9ycy5wdXNoKG4pIDogdGhpcy5kb2MuZXJyb3JzLnB1c2gobik7IGJyZWFrIH0gY2FzZSBcImRvYy1lbmRcIjogeyBpZiAoIXRoaXMuZG9jKSB7IGNvbnN0IHQgPSBcIlVuZXhwZWN0ZWQgZG9jLWVuZCB3aXRob3V0IHByZWNlZGluZyBkb2N1bWVudFwiOyB0aGlzLmVycm9ycy5wdXNoKG5ldyBFdChZdChlKSwgXCJVTkVYUEVDVEVEX1RPS0VOXCIsIHQpKTsgYnJlYWsgfSB0aGlzLmRvYy5kaXJlY3RpdmVzLmRvY0VuZCA9ICEwOyBjb25zdCB0ID0gJHQoZS5lbmQsIGUub2Zmc2V0ICsgZS5zb3VyY2UubGVuZ3RoLCB0aGlzLmRvYy5vcHRpb25zLnN0cmljdCwgdGhpcy5vbkVycm9yKTsgaWYgKHRoaXMuZGVjb3JhdGUodGhpcy5kb2MsICEwKSwgdC5jb21tZW50KSB7IGNvbnN0IGUgPSB0aGlzLmRvYy5jb21tZW50OyB0aGlzLmRvYy5jb21tZW50ID0gZSA/IGAke2V9XFxuJHt0LmNvbW1lbnR9YCA6IHQuY29tbWVudCB9IHRoaXMuZG9jLnJhbmdlWzJdID0gdC5vZmZzZXQ7IGJyZWFrIH0gZGVmYXVsdDogdGhpcy5lcnJvcnMucHVzaChuZXcgRXQoWXQoZSksIFwiVU5FWFBFQ1RFRF9UT0tFTlwiLCBgVW5zdXBwb3J0ZWQgdG9rZW4gJHtlLnR5cGV9YCkpIH0gfSAqZW5kKGUgPSAhMSwgdCA9IC0xKSB7IGlmICh0aGlzLmRvYykgdGhpcy5kZWNvcmF0ZSh0aGlzLmRvYywgITApLCB5aWVsZCB0aGlzLmRvYywgdGhpcy5kb2MgPSBudWxsOyBlbHNlIGlmIChlKSB7IGNvbnN0IGUgPSBPYmplY3QuYXNzaWduKHsgX2RpcmVjdGl2ZXM6IHRoaXMuZGlyZWN0aXZlcyB9LCB0aGlzLm9wdGlvbnMpLCBuID0gbmV3IHd0KHZvaWQgMCwgZSk7IHRoaXMuYXREaXJlY3RpdmVzICYmIHRoaXMub25FcnJvcih0LCBcIk1JU1NJTkdfQ0hBUlwiLCBcIk1pc3NpbmcgZGlyZWN0aXZlcy1lbmQgaW5kaWNhdG9yIGxpbmVcIiksIG4ucmFuZ2UgPSBbMCwgdCwgdF0sIHRoaXMuZGVjb3JhdGUobiwgITEpLCB5aWVsZCBuIH0gfSB9IGZ1bmN0aW9uIFF0KGUsIHQpIHsgaWYgKHQpIGZvciAoY29uc3QgbiBvZiB0KSBzd2l0Y2ggKG4udHlwZSkgeyBjYXNlIFwic3BhY2VcIjogY2FzZSBcImNvbW1lbnRcIjogZS5wdXNoKG4pOyBicmVhazsgY2FzZSBcIm5ld2xpbmVcIjogcmV0dXJuIGUucHVzaChuKSwgITAgfXJldHVybiAhMSB9IGZ1bmN0aW9uIEh0KGUsIHQsIG4pIHsgc3dpdGNoIChlLnR5cGUpIHsgY2FzZSBcInNjYWxhclwiOiBjYXNlIFwiZG91YmxlLXF1b3RlZC1zY2FsYXJcIjogY2FzZSBcInNpbmdsZS1xdW90ZWQtc2NhbGFyXCI6IGUudHlwZSA9IG4sIGUuc291cmNlID0gdDsgYnJlYWs7IGNhc2UgXCJibG9jay1zY2FsYXJcIjogeyBjb25zdCBzID0gZS5wcm9wcy5zbGljZSgxKTsgbGV0IGkgPSB0Lmxlbmd0aDsgXCJibG9jay1zY2FsYXItaGVhZGVyXCIgPT09IGUucHJvcHNbMF0udHlwZSAmJiAoaSAtPSBlLnByb3BzWzBdLnNvdXJjZS5sZW5ndGgpOyBmb3IgKGNvbnN0IGUgb2YgcykgZS5vZmZzZXQgKz0gaTsgZGVsZXRlIGUucHJvcHMsIE9iamVjdC5hc3NpZ24oZSwgeyB0eXBlOiBuLCBzb3VyY2U6IHQsIGVuZDogcyB9KTsgYnJlYWsgfSBjYXNlIFwiYmxvY2stbWFwXCI6IGNhc2UgXCJibG9jay1zZXFcIjogeyBjb25zdCBzID0geyB0eXBlOiBcIm5ld2xpbmVcIiwgb2Zmc2V0OiBlLm9mZnNldCArIHQubGVuZ3RoLCBpbmRlbnQ6IGUuaW5kZW50LCBzb3VyY2U6IFwiXFxuXCIgfTsgZGVsZXRlIGUuaXRlbXMsIE9iamVjdC5hc3NpZ24oZSwgeyB0eXBlOiBuLCBzb3VyY2U6IHQsIGVuZDogW3NdIH0pOyBicmVhayB9IGRlZmF1bHQ6IHsgY29uc3QgcyA9IFwiaW5kZW50XCIgaW4gZSA/IGUuaW5kZW50IDogLTEsIGkgPSBcImVuZFwiIGluIGUgJiYgQXJyYXkuaXNBcnJheShlLmVuZCkgPyBlLmVuZC5maWx0ZXIoKGUgPT4gXCJzcGFjZVwiID09PSBlLnR5cGUgfHwgXCJjb21tZW50XCIgPT09IGUudHlwZSB8fCBcIm5ld2xpbmVcIiA9PT0gZS50eXBlKSkgOiBbXTsgZm9yIChjb25zdCB0IG9mIE9iamVjdC5rZXlzKGUpKSBcInR5cGVcIiAhPT0gdCAmJiBcIm9mZnNldFwiICE9PSB0ICYmIGRlbGV0ZSBlW3RdOyBPYmplY3QuYXNzaWduKGUsIHsgdHlwZTogbiwgaW5kZW50OiBzLCBzb3VyY2U6IHQsIGVuZDogaSB9KSB9IH0gfSBmdW5jdGlvbiBYdChlKSB7IHN3aXRjaCAoZS50eXBlKSB7IGNhc2UgXCJibG9jay1zY2FsYXJcIjogeyBsZXQgdCA9IFwiXCI7IGZvciAoY29uc3QgbiBvZiBlLnByb3BzKSB0ICs9IFh0KG4pOyByZXR1cm4gdCArIGUuc291cmNlIH0gY2FzZSBcImJsb2NrLW1hcFwiOiBjYXNlIFwiYmxvY2stc2VxXCI6IHsgbGV0IHQgPSBcIlwiOyBmb3IgKGNvbnN0IG4gb2YgZS5pdGVtcykgdCArPSB6dChuKTsgcmV0dXJuIHQgfSBjYXNlIFwiZmxvdy1jb2xsZWN0aW9uXCI6IHsgbGV0IHQgPSBlLnN0YXJ0LnNvdXJjZTsgZm9yIChjb25zdCBuIG9mIGUuaXRlbXMpIHQgKz0genQobik7IGZvciAoY29uc3QgbiBvZiBlLmVuZCkgdCArPSBuLnNvdXJjZTsgcmV0dXJuIHQgfSBjYXNlIFwiZG9jdW1lbnRcIjogeyBsZXQgdCA9IHp0KGUpOyBpZiAoZS5lbmQpIGZvciAoY29uc3QgbiBvZiBlLmVuZCkgdCArPSBuLnNvdXJjZTsgcmV0dXJuIHQgfSBkZWZhdWx0OiB7IGxldCB0ID0gZS5zb3VyY2U7IGlmIChcImVuZFwiIGluIGUgJiYgZS5lbmQpIGZvciAoY29uc3QgbiBvZiBlLmVuZCkgdCArPSBuLnNvdXJjZTsgcmV0dXJuIHQgfSB9IH0gZnVuY3Rpb24genQoeyBzdGFydDogZSwga2V5OiB0LCBzZXA6IG4sIHZhbHVlOiBzIH0pIHsgbGV0IGkgPSBcIlwiOyBmb3IgKGNvbnN0IHQgb2YgZSkgaSArPSB0LnNvdXJjZTsgaWYgKHQgJiYgKGkgKz0gWHQodCkpLCBuKSBmb3IgKGNvbnN0IGUgb2YgbikgaSArPSBlLnNvdXJjZTsgcmV0dXJuIHMgJiYgKGkgKz0gWHQocykpLCBpIH0gY29uc3QgWnQgPSBTeW1ib2woXCJicmVhayB2aXNpdFwiKSwgZW4gPSBTeW1ib2woXCJza2lwIGNoaWxkcmVuXCIpLCB0biA9IFN5bWJvbChcInJlbW92ZSBpdGVtXCIpOyBmdW5jdGlvbiBubihlLCB0KSB7IFwidHlwZVwiIGluIGUgJiYgXCJkb2N1bWVudFwiID09PSBlLnR5cGUgJiYgKGUgPSB7IHN0YXJ0OiBlLnN0YXJ0LCB2YWx1ZTogZS52YWx1ZSB9KSwgc24oT2JqZWN0LmZyZWV6ZShbXSksIGUsIHQpIH0gZnVuY3Rpb24gc24oZSwgdCwgbikgeyBsZXQgcyA9IG4odCwgZSk7IGlmIChcInN5bWJvbFwiID09IHR5cGVvZiBzKSByZXR1cm4gczsgZm9yIChjb25zdCBpIG9mIFtcImtleVwiLCBcInZhbHVlXCJdKSB7IGNvbnN0IG8gPSB0W2ldOyBpZiAobyAmJiBcIml0ZW1zXCIgaW4gbykgeyBmb3IgKGxldCB0ID0gMDsgdCA8IG8uaXRlbXMubGVuZ3RoOyArK3QpIHsgY29uc3QgcyA9IHNuKE9iamVjdC5mcmVlemUoZS5jb25jYXQoW1tpLCB0XV0pKSwgby5pdGVtc1t0XSwgbik7IGlmIChcIm51bWJlclwiID09IHR5cGVvZiBzKSB0ID0gcyAtIDE7IGVsc2UgeyBpZiAocyA9PT0gWnQpIHJldHVybiBadDsgcyA9PT0gdG4gJiYgKG8uaXRlbXMuc3BsaWNlKHQsIDEpLCB0IC09IDEpIH0gfSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIHMgJiYgXCJrZXlcIiA9PT0gaSAmJiAocyA9IHModCwgZSkpIH0gfSByZXR1cm4gXCJmdW5jdGlvblwiID09IHR5cGVvZiBzID8gcyh0LCBlKSA6IHMgfSBubi5CUkVBSyA9IFp0LCBubi5TS0lQID0gZW4sIG5uLlJFTU9WRSA9IHRuLCBubi5pdGVtQXRQYXRoID0gKGUsIHQpID0+IHsgbGV0IG4gPSBlOyBmb3IgKGNvbnN0IFtlLCBzXSBvZiB0KSB7IGNvbnN0IHQgPSBuPy5bZV07IGlmICghdCB8fCAhKFwiaXRlbXNcIiBpbiB0KSkgcmV0dXJuOyBuID0gdC5pdGVtc1tzXSB9IHJldHVybiBuIH0sIG5uLnBhcmVudENvbGxlY3Rpb24gPSAoZSwgdCkgPT4geyBjb25zdCBuID0gbm4uaXRlbUF0UGF0aChlLCB0LnNsaWNlKDAsIC0xKSksIHMgPSB0W3QubGVuZ3RoIC0gMV1bMF0sIGkgPSBuPy5bc107IGlmIChpICYmIFwiaXRlbXNcIiBpbiBpKSByZXR1cm4gaTsgdGhyb3cgbmV3IEVycm9yKFwiUGFyZW50IGNvbGxlY3Rpb24gbm90IGZvdW5kXCIpIH07IGNvbnN0IG9uID0gXCJcXHVmZWZmXCIsIHJuID0gXCJcdTAwMDJcIiwgYW4gPSBcIlx1MDAxOFwiLCBjbiA9IFwiXHUwMDFmXCI7IGZ1bmN0aW9uIGxuKGUpIHsgc3dpdGNoIChlKSB7IGNhc2Ugb246IHJldHVybiBcImJ5dGUtb3JkZXItbWFya1wiOyBjYXNlIHJuOiByZXR1cm4gXCJkb2MtbW9kZVwiOyBjYXNlIGFuOiByZXR1cm4gXCJmbG93LWVycm9yLWVuZFwiOyBjYXNlIGNuOiByZXR1cm4gXCJzY2FsYXJcIjsgY2FzZSBcIi0tLVwiOiByZXR1cm4gXCJkb2Mtc3RhcnRcIjsgY2FzZSBcIi4uLlwiOiByZXR1cm4gXCJkb2MtZW5kXCI7IGNhc2UgXCJcIjogY2FzZSBcIlxcblwiOiBjYXNlIFwiXFxyXFxuXCI6IHJldHVybiBcIm5ld2xpbmVcIjsgY2FzZSBcIi1cIjogcmV0dXJuIFwic2VxLWl0ZW0taW5kXCI7IGNhc2UgXCI/XCI6IHJldHVybiBcImV4cGxpY2l0LWtleS1pbmRcIjsgY2FzZSBcIjpcIjogcmV0dXJuIFwibWFwLXZhbHVlLWluZFwiOyBjYXNlIFwie1wiOiByZXR1cm4gXCJmbG93LW1hcC1zdGFydFwiOyBjYXNlIFwifVwiOiByZXR1cm4gXCJmbG93LW1hcC1lbmRcIjsgY2FzZSBcIltcIjogcmV0dXJuIFwiZmxvdy1zZXEtc3RhcnRcIjsgY2FzZSBcIl1cIjogcmV0dXJuIFwiZmxvdy1zZXEtZW5kXCI7IGNhc2UgXCIsXCI6IHJldHVybiBcImNvbW1hXCIgfXN3aXRjaCAoZVswXSkgeyBjYXNlIFwiIFwiOiBjYXNlIFwiXFx0XCI6IHJldHVybiBcInNwYWNlXCI7IGNhc2UgXCIjXCI6IHJldHVybiBcImNvbW1lbnRcIjsgY2FzZSBcIiVcIjogcmV0dXJuIFwiZGlyZWN0aXZlLWxpbmVcIjsgY2FzZSBcIipcIjogcmV0dXJuIFwiYWxpYXNcIjsgY2FzZSBcIiZcIjogcmV0dXJuIFwiYW5jaG9yXCI7IGNhc2UgXCIhXCI6IHJldHVybiBcInRhZ1wiOyBjYXNlIFwiJ1wiOiByZXR1cm4gXCJzaW5nbGUtcXVvdGVkLXNjYWxhclwiOyBjYXNlICdcIic6IHJldHVybiBcImRvdWJsZS1xdW90ZWQtc2NhbGFyXCI7IGNhc2UgXCJ8XCI6IGNhc2UgXCI+XCI6IHJldHVybiBcImJsb2NrLXNjYWxhci1oZWFkZXJcIiB9cmV0dXJuIG51bGwgfSB2YXIgdW4gPSBPYmplY3QuZnJlZXplKHsgX19wcm90b19fOiBudWxsLCBCT006IG9uLCBET0NVTUVOVDogcm4sIEZMT1dfRU5EOiBhbiwgU0NBTEFSOiBjbiwgaXNDb2xsZWN0aW9uOiBlID0+ICEhZSAmJiBcIml0ZW1zXCIgaW4gZSwgaXNTY2FsYXI6IGUgPT4gISFlICYmIChcInNjYWxhclwiID09PSBlLnR5cGUgfHwgXCJzaW5nbGUtcXVvdGVkLXNjYWxhclwiID09PSBlLnR5cGUgfHwgXCJkb3VibGUtcXVvdGVkLXNjYWxhclwiID09PSBlLnR5cGUgfHwgXCJibG9jay1zY2FsYXJcIiA9PT0gZS50eXBlKSwgcHJldHR5VG9rZW46IGZ1bmN0aW9uIChlKSB7IHN3aXRjaCAoZSkgeyBjYXNlIG9uOiByZXR1cm4gXCI8Qk9NPlwiOyBjYXNlIHJuOiByZXR1cm4gXCI8RE9DPlwiOyBjYXNlIGFuOiByZXR1cm4gXCI8RkxPV19FTkQ+XCI7IGNhc2UgY246IHJldHVybiBcIjxTQ0FMQVI+XCI7IGRlZmF1bHQ6IHJldHVybiBKU09OLnN0cmluZ2lmeShlKSB9IH0sIHRva2VuVHlwZTogbG4sIGNyZWF0ZVNjYWxhclRva2VuOiBmdW5jdGlvbiAoZSwgdCkgeyBjb25zdCB7IGltcGxpY2l0S2V5OiBuID0gITEsIGluZGVudDogcywgaW5GbG93OiBpID0gITEsIG9mZnNldDogbyA9IC0xLCB0eXBlOiByID0gXCJQTEFJTlwiIH0gPSB0LCBhID0gc2UoeyB0eXBlOiByLCB2YWx1ZTogZSB9LCB7IGltcGxpY2l0S2V5OiBuLCBpbmRlbnQ6IHMgPiAwID8gXCIgXCIucmVwZWF0KHMpIDogXCJcIiwgaW5GbG93OiBpLCBvcHRpb25zOiB7IGJsb2NrUXVvdGU6ICEwLCBsaW5lV2lkdGg6IC0xIH0gfSksIGMgPSB0LmVuZCA/PyBbeyB0eXBlOiBcIm5ld2xpbmVcIiwgb2Zmc2V0OiAtMSwgaW5kZW50OiBzLCBzb3VyY2U6IFwiXFxuXCIgfV07IHN3aXRjaCAoYVswXSkgeyBjYXNlIFwifFwiOiBjYXNlIFwiPlwiOiB7IGNvbnN0IGUgPSBhLmluZGV4T2YoXCJcXG5cIiksIHQgPSBhLnN1YnN0cmluZygwLCBlKSwgbiA9IGEuc3Vic3RyaW5nKGUgKyAxKSArIFwiXFxuXCIsIGkgPSBbeyB0eXBlOiBcImJsb2NrLXNjYWxhci1oZWFkZXJcIiwgb2Zmc2V0OiBvLCBpbmRlbnQ6IHMsIHNvdXJjZTogdCB9XTsgcmV0dXJuIFF0KGksIGMpIHx8IGkucHVzaCh7IHR5cGU6IFwibmV3bGluZVwiLCBvZmZzZXQ6IC0xLCBpbmRlbnQ6IHMsIHNvdXJjZTogXCJcXG5cIiB9KSwgeyB0eXBlOiBcImJsb2NrLXNjYWxhclwiLCBvZmZzZXQ6IG8sIGluZGVudDogcywgcHJvcHM6IGksIHNvdXJjZTogbiB9IH0gY2FzZSAnXCInOiByZXR1cm4geyB0eXBlOiBcImRvdWJsZS1xdW90ZWQtc2NhbGFyXCIsIG9mZnNldDogbywgaW5kZW50OiBzLCBzb3VyY2U6IGEsIGVuZDogYyB9OyBjYXNlIFwiJ1wiOiByZXR1cm4geyB0eXBlOiBcInNpbmdsZS1xdW90ZWQtc2NhbGFyXCIsIG9mZnNldDogbywgaW5kZW50OiBzLCBzb3VyY2U6IGEsIGVuZDogYyB9OyBkZWZhdWx0OiByZXR1cm4geyB0eXBlOiBcInNjYWxhclwiLCBvZmZzZXQ6IG8sIGluZGVudDogcywgc291cmNlOiBhLCBlbmQ6IGMgfSB9IH0sIHJlc29sdmVBc1NjYWxhcjogZnVuY3Rpb24gKGUsIHQgPSAhMCwgbikgeyBpZiAoZSkgeyBjb25zdCBzID0gKGUsIHQsIHMpID0+IHsgY29uc3QgaSA9IFwibnVtYmVyXCIgPT0gdHlwZW9mIGUgPyBlIDogQXJyYXkuaXNBcnJheShlKSA/IGVbMF0gOiBlLm9mZnNldDsgaWYgKCFuKSB0aHJvdyBuZXcgRXQoW2ksIGkgKyAxXSwgdCwgcyk7IG4oaSwgdCwgcykgfTsgc3dpdGNoIChlLnR5cGUpIHsgY2FzZSBcInNjYWxhclwiOiBjYXNlIFwic2luZ2xlLXF1b3RlZC1zY2FsYXJcIjogY2FzZSBcImRvdWJsZS1xdW90ZWQtc2NhbGFyXCI6IHJldHVybiBqdChlLCB0LCBzKTsgY2FzZSBcImJsb2NrLXNjYWxhclwiOiByZXR1cm4gQnQoeyBvcHRpb25zOiB7IHN0cmljdDogdCB9IH0sIGUsIHMpIH0gfSByZXR1cm4gbnVsbCB9LCBzZXRTY2FsYXJWYWx1ZTogZnVuY3Rpb24gKGUsIHQsIG4gPSB7fSkgeyBsZXQgeyBhZnRlcktleTogcyA9ICExLCBpbXBsaWNpdEtleTogaSA9ICExLCBpbkZsb3c6IG8gPSAhMSwgdHlwZTogciB9ID0gbiwgYSA9IFwiaW5kZW50XCIgaW4gZSA/IGUuaW5kZW50IDogbnVsbDsgaWYgKHMgJiYgXCJudW1iZXJcIiA9PSB0eXBlb2YgYSAmJiAoYSArPSAyKSwgIXIpIHN3aXRjaCAoZS50eXBlKSB7IGNhc2UgXCJzaW5nbGUtcXVvdGVkLXNjYWxhclwiOiByID0gXCJRVU9URV9TSU5HTEVcIjsgYnJlYWs7IGNhc2UgXCJkb3VibGUtcXVvdGVkLXNjYWxhclwiOiByID0gXCJRVU9URV9ET1VCTEVcIjsgYnJlYWs7IGNhc2UgXCJibG9jay1zY2FsYXJcIjogeyBjb25zdCB0ID0gZS5wcm9wc1swXTsgaWYgKFwiYmxvY2stc2NhbGFyLWhlYWRlclwiICE9PSB0LnR5cGUpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYmxvY2sgc2NhbGFyIGhlYWRlclwiKTsgciA9IFwiPlwiID09PSB0LnNvdXJjZVswXSA/IFwiQkxPQ0tfRk9MREVEXCIgOiBcIkJMT0NLX0xJVEVSQUxcIjsgYnJlYWsgfSBkZWZhdWx0OiByID0gXCJQTEFJTlwiIH1jb25zdCBjID0gc2UoeyB0eXBlOiByLCB2YWx1ZTogdCB9LCB7IGltcGxpY2l0S2V5OiBpIHx8IG51bGwgPT09IGEsIGluZGVudDogbnVsbCAhPT0gYSAmJiBhID4gMCA/IFwiIFwiLnJlcGVhdChhKSA6IFwiXCIsIGluRmxvdzogbywgb3B0aW9uczogeyBibG9ja1F1b3RlOiAhMCwgbGluZVdpZHRoOiAtMSB9IH0pOyBzd2l0Y2ggKGNbMF0pIHsgY2FzZSBcInxcIjogY2FzZSBcIj5cIjogIWZ1bmN0aW9uIChlLCB0KSB7IGNvbnN0IG4gPSB0LmluZGV4T2YoXCJcXG5cIiksIHMgPSB0LnN1YnN0cmluZygwLCBuKSwgaSA9IHQuc3Vic3RyaW5nKG4gKyAxKSArIFwiXFxuXCI7IGlmIChcImJsb2NrLXNjYWxhclwiID09PSBlLnR5cGUpIHsgY29uc3QgdCA9IGUucHJvcHNbMF07IGlmIChcImJsb2NrLXNjYWxhci1oZWFkZXJcIiAhPT0gdC50eXBlKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJsb2NrIHNjYWxhciBoZWFkZXJcIik7IHQuc291cmNlID0gcywgZS5zb3VyY2UgPSBpIH0gZWxzZSB7IGNvbnN0IHsgb2Zmc2V0OiB0IH0gPSBlLCBuID0gXCJpbmRlbnRcIiBpbiBlID8gZS5pbmRlbnQgOiAtMSwgbyA9IFt7IHR5cGU6IFwiYmxvY2stc2NhbGFyLWhlYWRlclwiLCBvZmZzZXQ6IHQsIGluZGVudDogbiwgc291cmNlOiBzIH1dOyBRdChvLCBcImVuZFwiIGluIGUgPyBlLmVuZCA6IHZvaWQgMCkgfHwgby5wdXNoKHsgdHlwZTogXCJuZXdsaW5lXCIsIG9mZnNldDogLTEsIGluZGVudDogbiwgc291cmNlOiBcIlxcblwiIH0pOyBmb3IgKGNvbnN0IHQgb2YgT2JqZWN0LmtleXMoZSkpIFwidHlwZVwiICE9PSB0ICYmIFwib2Zmc2V0XCIgIT09IHQgJiYgZGVsZXRlIGVbdF07IE9iamVjdC5hc3NpZ24oZSwgeyB0eXBlOiBcImJsb2NrLXNjYWxhclwiLCBpbmRlbnQ6IG4sIHByb3BzOiBvLCBzb3VyY2U6IGkgfSkgfSB9KGUsIGMpOyBicmVhazsgY2FzZSAnXCInOiBIdChlLCBjLCBcImRvdWJsZS1xdW90ZWQtc2NhbGFyXCIpOyBicmVhazsgY2FzZSBcIidcIjogSHQoZSwgYywgXCJzaW5nbGUtcXVvdGVkLXNjYWxhclwiKTsgYnJlYWs7IGRlZmF1bHQ6IEh0KGUsIGMsIFwic2NhbGFyXCIpIH0gfSwgc3RyaW5naWZ5OiBlID0+IFwidHlwZVwiIGluIGUgPyBYdChlKSA6IHp0KGUpLCB2aXNpdDogbm4gfSk7IGZ1bmN0aW9uIGZuKGUpIHsgc3dpdGNoIChlKSB7IGNhc2Ugdm9pZCAwOiBjYXNlIFwiIFwiOiBjYXNlIFwiXFxuXCI6IGNhc2UgXCJcXHJcIjogY2FzZSBcIlxcdFwiOiByZXR1cm4gITA7IGRlZmF1bHQ6IHJldHVybiAhMSB9IH0gY29uc3QgaG4gPSBuZXcgU2V0KFwiMDEyMzQ1Njc4OUFCQ0RFRmFiY2RlZlwiKSwgZG4gPSBuZXcgU2V0KFwiMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXotIzsvPzpAJj0rJF8uIX4qJygpXCIpLCBwbiA9IG5ldyBTZXQoXCIsW117fVwiKSwgbW4gPSBuZXcgU2V0KFwiICxbXXt9XFxuXFxyXFx0XCIpLCB5biA9IGUgPT4gIWUgfHwgbW4uaGFzKGUpOyBjbGFzcyBnbiB7IGNvbnN0cnVjdG9yKCkgeyB0aGlzLmF0RW5kID0gITEsIHRoaXMuYmxvY2tTY2FsYXJJbmRlbnQgPSAtMSwgdGhpcy5ibG9ja1NjYWxhcktlZXAgPSAhMSwgdGhpcy5idWZmZXIgPSBcIlwiLCB0aGlzLmZsb3dLZXkgPSAhMSwgdGhpcy5mbG93TGV2ZWwgPSAwLCB0aGlzLmluZGVudE5leHQgPSAwLCB0aGlzLmluZGVudFZhbHVlID0gMCwgdGhpcy5saW5lRW5kUG9zID0gbnVsbCwgdGhpcy5uZXh0ID0gbnVsbCwgdGhpcy5wb3MgPSAwIH0gKmxleChlLCB0ID0gITEpIHsgaWYgKGUpIHsgaWYgKFwic3RyaW5nXCIgIT0gdHlwZW9mIGUpIHRocm93IFR5cGVFcnJvcihcInNvdXJjZSBpcyBub3QgYSBzdHJpbmdcIik7IHRoaXMuYnVmZmVyID0gdGhpcy5idWZmZXIgPyB0aGlzLmJ1ZmZlciArIGUgOiBlLCB0aGlzLmxpbmVFbmRQb3MgPSBudWxsIH0gdGhpcy5hdEVuZCA9ICF0OyBsZXQgbiA9IHRoaXMubmV4dCA/PyBcInN0cmVhbVwiOyBmb3IgKDsgbiAmJiAodCB8fCB0aGlzLmhhc0NoYXJzKDEpKTspbiA9IHlpZWxkKiB0aGlzLnBhcnNlTmV4dChuKSB9IGF0TGluZUVuZCgpIHsgbGV0IGUgPSB0aGlzLnBvcywgdCA9IHRoaXMuYnVmZmVyW2VdOyBmb3IgKDsgXCIgXCIgPT09IHQgfHwgXCJcXHRcIiA9PT0gdDspdCA9IHRoaXMuYnVmZmVyWysrZV07IHJldHVybiAhdCB8fCBcIiNcIiA9PT0gdCB8fCBcIlxcblwiID09PSB0IHx8IFwiXFxyXCIgPT09IHQgJiYgXCJcXG5cIiA9PT0gdGhpcy5idWZmZXJbZSArIDFdIH0gY2hhckF0KGUpIHsgcmV0dXJuIHRoaXMuYnVmZmVyW3RoaXMucG9zICsgZV0gfSBjb250aW51ZVNjYWxhcihlKSB7IGxldCB0ID0gdGhpcy5idWZmZXJbZV07IGlmICh0aGlzLmluZGVudE5leHQgPiAwKSB7IGxldCBuID0gMDsgZm9yICg7IFwiIFwiID09PSB0Oyl0ID0gdGhpcy5idWZmZXJbKytuICsgZV07IGlmIChcIlxcclwiID09PSB0KSB7IGNvbnN0IHQgPSB0aGlzLmJ1ZmZlcltuICsgZSArIDFdOyBpZiAoXCJcXG5cIiA9PT0gdCB8fCAhdCAmJiAhdGhpcy5hdEVuZCkgcmV0dXJuIGUgKyBuICsgMSB9IHJldHVybiBcIlxcblwiID09PSB0IHx8IG4gPj0gdGhpcy5pbmRlbnROZXh0IHx8ICF0ICYmICF0aGlzLmF0RW5kID8gZSArIG4gOiAtMSB9IGlmIChcIi1cIiA9PT0gdCB8fCBcIi5cIiA9PT0gdCkgeyBjb25zdCB0ID0gdGhpcy5idWZmZXIuc3Vic3RyKGUsIDMpOyBpZiAoKFwiLS0tXCIgPT09IHQgfHwgXCIuLi5cIiA9PT0gdCkgJiYgZm4odGhpcy5idWZmZXJbZSArIDNdKSkgcmV0dXJuIC0xIH0gcmV0dXJuIGUgfSBnZXRMaW5lKCkgeyBsZXQgZSA9IHRoaXMubGluZUVuZFBvczsgcmV0dXJuIChcIm51bWJlclwiICE9IHR5cGVvZiBlIHx8IC0xICE9PSBlICYmIGUgPCB0aGlzLnBvcykgJiYgKGUgPSB0aGlzLmJ1ZmZlci5pbmRleE9mKFwiXFxuXCIsIHRoaXMucG9zKSwgdGhpcy5saW5lRW5kUG9zID0gZSksIC0xID09PSBlID8gdGhpcy5hdEVuZCA/IHRoaXMuYnVmZmVyLnN1YnN0cmluZyh0aGlzLnBvcykgOiBudWxsIDogKFwiXFxyXCIgPT09IHRoaXMuYnVmZmVyW2UgLSAxXSAmJiAoZSAtPSAxKSwgdGhpcy5idWZmZXIuc3Vic3RyaW5nKHRoaXMucG9zLCBlKSkgfSBoYXNDaGFycyhlKSB7IHJldHVybiB0aGlzLnBvcyArIGUgPD0gdGhpcy5idWZmZXIubGVuZ3RoIH0gc2V0TmV4dChlKSB7IHJldHVybiB0aGlzLmJ1ZmZlciA9IHRoaXMuYnVmZmVyLnN1YnN0cmluZyh0aGlzLnBvcyksIHRoaXMucG9zID0gMCwgdGhpcy5saW5lRW5kUG9zID0gbnVsbCwgdGhpcy5uZXh0ID0gZSwgbnVsbCB9IHBlZWsoZSkgeyByZXR1cm4gdGhpcy5idWZmZXIuc3Vic3RyKHRoaXMucG9zLCBlKSB9ICpwYXJzZU5leHQoZSkgeyBzd2l0Y2ggKGUpIHsgY2FzZSBcInN0cmVhbVwiOiByZXR1cm4geWllbGQqIHRoaXMucGFyc2VTdHJlYW0oKTsgY2FzZSBcImxpbmUtc3RhcnRcIjogcmV0dXJuIHlpZWxkKiB0aGlzLnBhcnNlTGluZVN0YXJ0KCk7IGNhc2UgXCJibG9jay1zdGFydFwiOiByZXR1cm4geWllbGQqIHRoaXMucGFyc2VCbG9ja1N0YXJ0KCk7IGNhc2UgXCJkb2NcIjogcmV0dXJuIHlpZWxkKiB0aGlzLnBhcnNlRG9jdW1lbnQoKTsgY2FzZSBcImZsb3dcIjogcmV0dXJuIHlpZWxkKiB0aGlzLnBhcnNlRmxvd0NvbGxlY3Rpb24oKTsgY2FzZSBcInF1b3RlZC1zY2FsYXJcIjogcmV0dXJuIHlpZWxkKiB0aGlzLnBhcnNlUXVvdGVkU2NhbGFyKCk7IGNhc2UgXCJibG9jay1zY2FsYXJcIjogcmV0dXJuIHlpZWxkKiB0aGlzLnBhcnNlQmxvY2tTY2FsYXIoKTsgY2FzZSBcInBsYWluLXNjYWxhclwiOiByZXR1cm4geWllbGQqIHRoaXMucGFyc2VQbGFpblNjYWxhcigpIH0gfSAqcGFyc2VTdHJlYW0oKSB7IGxldCBlID0gdGhpcy5nZXRMaW5lKCk7IGlmIChudWxsID09PSBlKSByZXR1cm4gdGhpcy5zZXROZXh0KFwic3RyZWFtXCIpOyBpZiAoZVswXSA9PT0gb24gJiYgKHlpZWxkKiB0aGlzLnB1c2hDb3VudCgxKSwgZSA9IGUuc3Vic3RyaW5nKDEpKSwgXCIlXCIgPT09IGVbMF0pIHsgbGV0IHQgPSBlLmxlbmd0aCwgbiA9IGUuaW5kZXhPZihcIiNcIik7IGZvciAoOyAtMSAhPT0gbjspIHsgY29uc3QgcyA9IGVbbiAtIDFdOyBpZiAoXCIgXCIgPT09IHMgfHwgXCJcXHRcIiA9PT0gcykgeyB0ID0gbiAtIDE7IGJyZWFrIH0gbiA9IGUuaW5kZXhPZihcIiNcIiwgbiArIDEpIH0gZm9yICg7IDspIHsgY29uc3QgbiA9IGVbdCAtIDFdOyBpZiAoXCIgXCIgIT09IG4gJiYgXCJcXHRcIiAhPT0gbikgYnJlYWs7IHQgLT0gMSB9IGNvbnN0IHMgPSAoeWllbGQqIHRoaXMucHVzaENvdW50KHQpKSArICh5aWVsZCogdGhpcy5wdXNoU3BhY2VzKCEwKSk7IHJldHVybiB5aWVsZCogdGhpcy5wdXNoQ291bnQoZS5sZW5ndGggLSBzKSwgdGhpcy5wdXNoTmV3bGluZSgpLCBcInN0cmVhbVwiIH0gaWYgKHRoaXMuYXRMaW5lRW5kKCkpIHsgY29uc3QgdCA9IHlpZWxkKiB0aGlzLnB1c2hTcGFjZXMoITApOyByZXR1cm4geWllbGQqIHRoaXMucHVzaENvdW50KGUubGVuZ3RoIC0gdCksIHlpZWxkKiB0aGlzLnB1c2hOZXdsaW5lKCksIFwic3RyZWFtXCIgfSByZXR1cm4geWllbGQgcm4sIHlpZWxkKiB0aGlzLnBhcnNlTGluZVN0YXJ0KCkgfSAqcGFyc2VMaW5lU3RhcnQoKSB7IGNvbnN0IGUgPSB0aGlzLmNoYXJBdCgwKTsgaWYgKCFlICYmICF0aGlzLmF0RW5kKSByZXR1cm4gdGhpcy5zZXROZXh0KFwibGluZS1zdGFydFwiKTsgaWYgKFwiLVwiID09PSBlIHx8IFwiLlwiID09PSBlKSB7IGlmICghdGhpcy5hdEVuZCAmJiAhdGhpcy5oYXNDaGFycyg0KSkgcmV0dXJuIHRoaXMuc2V0TmV4dChcImxpbmUtc3RhcnRcIik7IGNvbnN0IGUgPSB0aGlzLnBlZWsoMyk7IGlmICgoXCItLS1cIiA9PT0gZSB8fCBcIi4uLlwiID09PSBlKSAmJiBmbih0aGlzLmNoYXJBdCgzKSkpIHJldHVybiB5aWVsZCogdGhpcy5wdXNoQ291bnQoMyksIHRoaXMuaW5kZW50VmFsdWUgPSAwLCB0aGlzLmluZGVudE5leHQgPSAwLCBcIi0tLVwiID09PSBlID8gXCJkb2NcIiA6IFwic3RyZWFtXCIgfSByZXR1cm4gdGhpcy5pbmRlbnRWYWx1ZSA9IHlpZWxkKiB0aGlzLnB1c2hTcGFjZXMoITEpLCB0aGlzLmluZGVudE5leHQgPiB0aGlzLmluZGVudFZhbHVlICYmICFmbih0aGlzLmNoYXJBdCgxKSkgJiYgKHRoaXMuaW5kZW50TmV4dCA9IHRoaXMuaW5kZW50VmFsdWUpLCB5aWVsZCogdGhpcy5wYXJzZUJsb2NrU3RhcnQoKSB9ICpwYXJzZUJsb2NrU3RhcnQoKSB7IGNvbnN0IFtlLCB0XSA9IHRoaXMucGVlaygyKTsgaWYgKCF0ICYmICF0aGlzLmF0RW5kKSByZXR1cm4gdGhpcy5zZXROZXh0KFwiYmxvY2stc3RhcnRcIik7IGlmICgoXCItXCIgPT09IGUgfHwgXCI/XCIgPT09IGUgfHwgXCI6XCIgPT09IGUpICYmIGZuKHQpKSB7IGNvbnN0IGUgPSAoeWllbGQqIHRoaXMucHVzaENvdW50KDEpKSArICh5aWVsZCogdGhpcy5wdXNoU3BhY2VzKCEwKSk7IHJldHVybiB0aGlzLmluZGVudE5leHQgPSB0aGlzLmluZGVudFZhbHVlICsgMSwgdGhpcy5pbmRlbnRWYWx1ZSArPSBlLCB5aWVsZCogdGhpcy5wYXJzZUJsb2NrU3RhcnQoKSB9IHJldHVybiBcImRvY1wiIH0gKnBhcnNlRG9jdW1lbnQoKSB7IHlpZWxkKiB0aGlzLnB1c2hTcGFjZXMoITApOyBjb25zdCBlID0gdGhpcy5nZXRMaW5lKCk7IGlmIChudWxsID09PSBlKSByZXR1cm4gdGhpcy5zZXROZXh0KFwiZG9jXCIpOyBsZXQgdCA9IHlpZWxkKiB0aGlzLnB1c2hJbmRpY2F0b3JzKCk7IHN3aXRjaCAoZVt0XSkgeyBjYXNlIFwiI1wiOiB5aWVsZCogdGhpcy5wdXNoQ291bnQoZS5sZW5ndGggLSB0KTsgY2FzZSB2b2lkIDA6IHJldHVybiB5aWVsZCogdGhpcy5wdXNoTmV3bGluZSgpLCB5aWVsZCogdGhpcy5wYXJzZUxpbmVTdGFydCgpOyBjYXNlIFwie1wiOiBjYXNlIFwiW1wiOiByZXR1cm4geWllbGQqIHRoaXMucHVzaENvdW50KDEpLCB0aGlzLmZsb3dLZXkgPSAhMSwgdGhpcy5mbG93TGV2ZWwgPSAxLCBcImZsb3dcIjsgY2FzZSBcIn1cIjogY2FzZSBcIl1cIjogcmV0dXJuIHlpZWxkKiB0aGlzLnB1c2hDb3VudCgxKSwgXCJkb2NcIjsgY2FzZSBcIipcIjogcmV0dXJuIHlpZWxkKiB0aGlzLnB1c2hVbnRpbCh5biksIFwiZG9jXCI7IGNhc2UgJ1wiJzogY2FzZSBcIidcIjogcmV0dXJuIHlpZWxkKiB0aGlzLnBhcnNlUXVvdGVkU2NhbGFyKCk7IGNhc2UgXCJ8XCI6IGNhc2UgXCI+XCI6IHJldHVybiB0ICs9ICh5aWVsZCogdGhpcy5wYXJzZUJsb2NrU2NhbGFySGVhZGVyKCkpLCB0ICs9ICh5aWVsZCogdGhpcy5wdXNoU3BhY2VzKCEwKSksIHlpZWxkKiB0aGlzLnB1c2hDb3VudChlLmxlbmd0aCAtIHQpLCB5aWVsZCogdGhpcy5wdXNoTmV3bGluZSgpLCB5aWVsZCogdGhpcy5wYXJzZUJsb2NrU2NhbGFyKCk7IGRlZmF1bHQ6IHJldHVybiB5aWVsZCogdGhpcy5wYXJzZVBsYWluU2NhbGFyKCkgfSB9ICpwYXJzZUZsb3dDb2xsZWN0aW9uKCkgeyBsZXQgZSwgdCwgbiA9IC0xOyBkbyB7IGUgPSB5aWVsZCogdGhpcy5wdXNoTmV3bGluZSgpLCBlID4gMCA/ICh0ID0geWllbGQqIHRoaXMucHVzaFNwYWNlcyghMSksIHRoaXMuaW5kZW50VmFsdWUgPSBuID0gdCkgOiB0ID0gMCwgdCArPSAoeWllbGQqIHRoaXMucHVzaFNwYWNlcyghMCkpIH0gd2hpbGUgKGUgKyB0ID4gMCk7IGNvbnN0IHMgPSB0aGlzLmdldExpbmUoKTsgaWYgKG51bGwgPT09IHMpIHJldHVybiB0aGlzLnNldE5leHQoXCJmbG93XCIpOyBpZiAoLTEgIT09IG4gJiYgbiA8IHRoaXMuaW5kZW50TmV4dCAmJiBcIiNcIiAhPT0gc1swXSB8fCAwID09PSBuICYmIChzLnN0YXJ0c1dpdGgoXCItLS1cIikgfHwgcy5zdGFydHNXaXRoKFwiLi4uXCIpKSAmJiBmbihzWzNdKSkgeyBpZiAoIShuID09PSB0aGlzLmluZGVudE5leHQgLSAxICYmIDEgPT09IHRoaXMuZmxvd0xldmVsICYmIChcIl1cIiA9PT0gc1swXSB8fCBcIn1cIiA9PT0gc1swXSkpKSByZXR1cm4gdGhpcy5mbG93TGV2ZWwgPSAwLCB5aWVsZCBhbiwgeWllbGQqIHRoaXMucGFyc2VMaW5lU3RhcnQoKSB9IGxldCBpID0gMDsgZm9yICg7IFwiLFwiID09PSBzW2ldOylpICs9ICh5aWVsZCogdGhpcy5wdXNoQ291bnQoMSkpLCBpICs9ICh5aWVsZCogdGhpcy5wdXNoU3BhY2VzKCEwKSksIHRoaXMuZmxvd0tleSA9ICExOyBzd2l0Y2ggKGkgKz0gKHlpZWxkKiB0aGlzLnB1c2hJbmRpY2F0b3JzKCkpLCBzW2ldKSB7IGNhc2Ugdm9pZCAwOiByZXR1cm4gXCJmbG93XCI7IGNhc2UgXCIjXCI6IHJldHVybiB5aWVsZCogdGhpcy5wdXNoQ291bnQocy5sZW5ndGggLSBpKSwgXCJmbG93XCI7IGNhc2UgXCJ7XCI6IGNhc2UgXCJbXCI6IHJldHVybiB5aWVsZCogdGhpcy5wdXNoQ291bnQoMSksIHRoaXMuZmxvd0tleSA9ICExLCB0aGlzLmZsb3dMZXZlbCArPSAxLCBcImZsb3dcIjsgY2FzZSBcIn1cIjogY2FzZSBcIl1cIjogcmV0dXJuIHlpZWxkKiB0aGlzLnB1c2hDb3VudCgxKSwgdGhpcy5mbG93S2V5ID0gITAsIHRoaXMuZmxvd0xldmVsIC09IDEsIHRoaXMuZmxvd0xldmVsID8gXCJmbG93XCIgOiBcImRvY1wiOyBjYXNlIFwiKlwiOiByZXR1cm4geWllbGQqIHRoaXMucHVzaFVudGlsKHluKSwgXCJmbG93XCI7IGNhc2UgJ1wiJzogY2FzZSBcIidcIjogcmV0dXJuIHRoaXMuZmxvd0tleSA9ICEwLCB5aWVsZCogdGhpcy5wYXJzZVF1b3RlZFNjYWxhcigpOyBjYXNlIFwiOlwiOiB7IGNvbnN0IGUgPSB0aGlzLmNoYXJBdCgxKTsgaWYgKHRoaXMuZmxvd0tleSB8fCBmbihlKSB8fCBcIixcIiA9PT0gZSkgcmV0dXJuIHRoaXMuZmxvd0tleSA9ICExLCB5aWVsZCogdGhpcy5wdXNoQ291bnQoMSksIHlpZWxkKiB0aGlzLnB1c2hTcGFjZXMoITApLCBcImZsb3dcIiB9IGRlZmF1bHQ6IHJldHVybiB0aGlzLmZsb3dLZXkgPSAhMSwgeWllbGQqIHRoaXMucGFyc2VQbGFpblNjYWxhcigpIH0gfSAqcGFyc2VRdW90ZWRTY2FsYXIoKSB7IGNvbnN0IGUgPSB0aGlzLmNoYXJBdCgwKTsgbGV0IHQgPSB0aGlzLmJ1ZmZlci5pbmRleE9mKGUsIHRoaXMucG9zICsgMSk7IGlmIChcIidcIiA9PT0gZSkgZm9yICg7IC0xICE9PSB0ICYmIFwiJ1wiID09PSB0aGlzLmJ1ZmZlclt0ICsgMV07KXQgPSB0aGlzLmJ1ZmZlci5pbmRleE9mKFwiJ1wiLCB0ICsgMik7IGVsc2UgZm9yICg7IC0xICE9PSB0OykgeyBsZXQgZSA9IDA7IGZvciAoOyBcIlxcXFxcIiA9PT0gdGhpcy5idWZmZXJbdCAtIDEgLSBlXTspZSArPSAxOyBpZiAoZSAlIDIgPT0gMCkgYnJlYWs7IHQgPSB0aGlzLmJ1ZmZlci5pbmRleE9mKCdcIicsIHQgKyAxKSB9IGNvbnN0IG4gPSB0aGlzLmJ1ZmZlci5zdWJzdHJpbmcoMCwgdCk7IGxldCBzID0gbi5pbmRleE9mKFwiXFxuXCIsIHRoaXMucG9zKTsgaWYgKC0xICE9PSBzKSB7IGZvciAoOyAtMSAhPT0gczspIHsgY29uc3QgZSA9IHRoaXMuY29udGludWVTY2FsYXIocyArIDEpOyBpZiAoLTEgPT09IGUpIGJyZWFrOyBzID0gbi5pbmRleE9mKFwiXFxuXCIsIGUpIH0gLTEgIT09IHMgJiYgKHQgPSBzIC0gKFwiXFxyXCIgPT09IG5bcyAtIDFdID8gMiA6IDEpKSB9IGlmICgtMSA9PT0gdCkgeyBpZiAoIXRoaXMuYXRFbmQpIHJldHVybiB0aGlzLnNldE5leHQoXCJxdW90ZWQtc2NhbGFyXCIpOyB0ID0gdGhpcy5idWZmZXIubGVuZ3RoIH0gcmV0dXJuIHlpZWxkKiB0aGlzLnB1c2hUb0luZGV4KHQgKyAxLCAhMSksIHRoaXMuZmxvd0xldmVsID8gXCJmbG93XCIgOiBcImRvY1wiIH0gKnBhcnNlQmxvY2tTY2FsYXJIZWFkZXIoKSB7IHRoaXMuYmxvY2tTY2FsYXJJbmRlbnQgPSAtMSwgdGhpcy5ibG9ja1NjYWxhcktlZXAgPSAhMTsgbGV0IGUgPSB0aGlzLnBvczsgZm9yICg7IDspIHsgY29uc3QgdCA9IHRoaXMuYnVmZmVyWysrZV07IGlmIChcIitcIiA9PT0gdCkgdGhpcy5ibG9ja1NjYWxhcktlZXAgPSAhMDsgZWxzZSBpZiAodCA+IFwiMFwiICYmIHQgPD0gXCI5XCIpIHRoaXMuYmxvY2tTY2FsYXJJbmRlbnQgPSBOdW1iZXIodCkgLSAxOyBlbHNlIGlmIChcIi1cIiAhPT0gdCkgYnJlYWsgfSByZXR1cm4geWllbGQqIHRoaXMucHVzaFVudGlsKChlID0+IGZuKGUpIHx8IFwiI1wiID09PSBlKSkgfSAqcGFyc2VCbG9ja1NjYWxhcigpIHsgbGV0IGUsIHQgPSB0aGlzLnBvcyAtIDEsIG4gPSAwOyBlOiBmb3IgKGxldCBzID0gdGhpcy5wb3M7IGUgPSB0aGlzLmJ1ZmZlcltzXTsgKytzKXN3aXRjaCAoZSkgeyBjYXNlIFwiIFwiOiBuICs9IDE7IGJyZWFrOyBjYXNlIFwiXFxuXCI6IHQgPSBzLCBuID0gMDsgYnJlYWs7IGNhc2UgXCJcXHJcIjogeyBjb25zdCBlID0gdGhpcy5idWZmZXJbcyArIDFdOyBpZiAoIWUgJiYgIXRoaXMuYXRFbmQpIHJldHVybiB0aGlzLnNldE5leHQoXCJibG9jay1zY2FsYXJcIik7IGlmIChcIlxcblwiID09PSBlKSBicmVhayB9IGRlZmF1bHQ6IGJyZWFrIGUgfWlmICghZSAmJiAhdGhpcy5hdEVuZCkgcmV0dXJuIHRoaXMuc2V0TmV4dChcImJsb2NrLXNjYWxhclwiKTsgaWYgKG4gPj0gdGhpcy5pbmRlbnROZXh0KSB7IC0xID09PSB0aGlzLmJsb2NrU2NhbGFySW5kZW50ID8gdGhpcy5pbmRlbnROZXh0ID0gbiA6IHRoaXMuaW5kZW50TmV4dCA9IHRoaXMuYmxvY2tTY2FsYXJJbmRlbnQgKyAoMCA9PT0gdGhpcy5pbmRlbnROZXh0ID8gMSA6IHRoaXMuaW5kZW50TmV4dCk7IGRvIHsgY29uc3QgZSA9IHRoaXMuY29udGludWVTY2FsYXIodCArIDEpOyBpZiAoLTEgPT09IGUpIGJyZWFrOyB0ID0gdGhpcy5idWZmZXIuaW5kZXhPZihcIlxcblwiLCBlKSB9IHdoaWxlICgtMSAhPT0gdCk7IGlmICgtMSA9PT0gdCkgeyBpZiAoIXRoaXMuYXRFbmQpIHJldHVybiB0aGlzLnNldE5leHQoXCJibG9jay1zY2FsYXJcIik7IHQgPSB0aGlzLmJ1ZmZlci5sZW5ndGggfSB9IGxldCBzID0gdCArIDE7IGZvciAoZSA9IHRoaXMuYnVmZmVyW3NdOyBcIiBcIiA9PT0gZTspZSA9IHRoaXMuYnVmZmVyWysrc107IGlmIChcIlxcdFwiID09PSBlKSB7IGZvciAoOyBcIlxcdFwiID09PSBlIHx8IFwiIFwiID09PSBlIHx8IFwiXFxyXCIgPT09IGUgfHwgXCJcXG5cIiA9PT0gZTspZSA9IHRoaXMuYnVmZmVyWysrc107IHQgPSBzIC0gMSB9IGVsc2UgaWYgKCF0aGlzLmJsb2NrU2NhbGFyS2VlcCkgZm9yICg7IDspIHsgbGV0IGUgPSB0IC0gMSwgcyA9IHRoaXMuYnVmZmVyW2VdOyBcIlxcclwiID09PSBzICYmIChzID0gdGhpcy5idWZmZXJbLS1lXSk7IGNvbnN0IGkgPSBlOyBmb3IgKDsgXCIgXCIgPT09IHM7KXMgPSB0aGlzLmJ1ZmZlclstLWVdOyBpZiAoIShcIlxcblwiID09PSBzICYmIGUgPj0gdGhpcy5wb3MgJiYgZSArIDEgKyBuID4gaSkpIGJyZWFrOyB0ID0gZSB9IHJldHVybiB5aWVsZCBjbiwgeWllbGQqIHRoaXMucHVzaFRvSW5kZXgodCArIDEsICEwKSwgeWllbGQqIHRoaXMucGFyc2VMaW5lU3RhcnQoKSB9ICpwYXJzZVBsYWluU2NhbGFyKCkgeyBjb25zdCBlID0gdGhpcy5mbG93TGV2ZWwgPiAwOyBsZXQgdCwgbiA9IHRoaXMucG9zIC0gMSwgcyA9IHRoaXMucG9zIC0gMTsgZm9yICg7IHQgPSB0aGlzLmJ1ZmZlclsrK3NdOylpZiAoXCI6XCIgPT09IHQpIHsgY29uc3QgdCA9IHRoaXMuYnVmZmVyW3MgKyAxXTsgaWYgKGZuKHQpIHx8IGUgJiYgcG4uaGFzKHQpKSBicmVhazsgbiA9IHMgfSBlbHNlIGlmIChmbih0KSkgeyBsZXQgaSA9IHRoaXMuYnVmZmVyW3MgKyAxXTsgaWYgKFwiXFxyXCIgPT09IHQgJiYgKFwiXFxuXCIgPT09IGkgPyAocyArPSAxLCB0ID0gXCJcXG5cIiwgaSA9IHRoaXMuYnVmZmVyW3MgKyAxXSkgOiBuID0gcyksIFwiI1wiID09PSBpIHx8IGUgJiYgcG4uaGFzKGkpKSBicmVhazsgaWYgKFwiXFxuXCIgPT09IHQpIHsgY29uc3QgZSA9IHRoaXMuY29udGludWVTY2FsYXIocyArIDEpOyBpZiAoLTEgPT09IGUpIGJyZWFrOyBzID0gTWF0aC5tYXgocywgZSAtIDIpIH0gfSBlbHNlIHsgaWYgKGUgJiYgcG4uaGFzKHQpKSBicmVhazsgbiA9IHMgfSByZXR1cm4gdCB8fCB0aGlzLmF0RW5kID8gKHlpZWxkIGNuLCB5aWVsZCogdGhpcy5wdXNoVG9JbmRleChuICsgMSwgITApLCBlID8gXCJmbG93XCIgOiBcImRvY1wiKSA6IHRoaXMuc2V0TmV4dChcInBsYWluLXNjYWxhclwiKSB9ICpwdXNoQ291bnQoZSkgeyByZXR1cm4gZSA+IDAgPyAoeWllbGQgdGhpcy5idWZmZXIuc3Vic3RyKHRoaXMucG9zLCBlKSwgdGhpcy5wb3MgKz0gZSwgZSkgOiAwIH0gKnB1c2hUb0luZGV4KGUsIHQpIHsgY29uc3QgbiA9IHRoaXMuYnVmZmVyLnNsaWNlKHRoaXMucG9zLCBlKTsgcmV0dXJuIG4gPyAoeWllbGQgbiwgdGhpcy5wb3MgKz0gbi5sZW5ndGgsIG4ubGVuZ3RoKSA6ICh0ICYmICh5aWVsZCBcIlwiKSwgMCkgfSAqcHVzaEluZGljYXRvcnMoKSB7IHN3aXRjaCAodGhpcy5jaGFyQXQoMCkpIHsgY2FzZSBcIiFcIjogcmV0dXJuICh5aWVsZCogdGhpcy5wdXNoVGFnKCkpICsgKHlpZWxkKiB0aGlzLnB1c2hTcGFjZXMoITApKSArICh5aWVsZCogdGhpcy5wdXNoSW5kaWNhdG9ycygpKTsgY2FzZSBcIiZcIjogcmV0dXJuICh5aWVsZCogdGhpcy5wdXNoVW50aWwoeW4pKSArICh5aWVsZCogdGhpcy5wdXNoU3BhY2VzKCEwKSkgKyAoeWllbGQqIHRoaXMucHVzaEluZGljYXRvcnMoKSk7IGNhc2UgXCItXCI6IGNhc2UgXCI/XCI6IGNhc2UgXCI6XCI6IHsgY29uc3QgZSA9IHRoaXMuZmxvd0xldmVsID4gMCwgdCA9IHRoaXMuY2hhckF0KDEpOyBpZiAoZm4odCkgfHwgZSAmJiBwbi5oYXModCkpIHJldHVybiBlID8gdGhpcy5mbG93S2V5ICYmICh0aGlzLmZsb3dLZXkgPSAhMSkgOiB0aGlzLmluZGVudE5leHQgPSB0aGlzLmluZGVudFZhbHVlICsgMSwgKHlpZWxkKiB0aGlzLnB1c2hDb3VudCgxKSkgKyAoeWllbGQqIHRoaXMucHVzaFNwYWNlcyghMCkpICsgKHlpZWxkKiB0aGlzLnB1c2hJbmRpY2F0b3JzKCkpIH0gfXJldHVybiAwIH0gKnB1c2hUYWcoKSB7IGlmIChcIjxcIiA9PT0gdGhpcy5jaGFyQXQoMSkpIHsgbGV0IGUgPSB0aGlzLnBvcyArIDIsIHQgPSB0aGlzLmJ1ZmZlcltlXTsgZm9yICg7ICFmbih0KSAmJiBcIj5cIiAhPT0gdDspdCA9IHRoaXMuYnVmZmVyWysrZV07IHJldHVybiB5aWVsZCogdGhpcy5wdXNoVG9JbmRleChcIj5cIiA9PT0gdCA/IGUgKyAxIDogZSwgITEpIH0geyBsZXQgZSA9IHRoaXMucG9zICsgMSwgdCA9IHRoaXMuYnVmZmVyW2VdOyBmb3IgKDsgdDspaWYgKGRuLmhhcyh0KSkgdCA9IHRoaXMuYnVmZmVyWysrZV07IGVsc2UgeyBpZiAoXCIlXCIgIT09IHQgfHwgIWhuLmhhcyh0aGlzLmJ1ZmZlcltlICsgMV0pIHx8ICFobi5oYXModGhpcy5idWZmZXJbZSArIDJdKSkgYnJlYWs7IHQgPSB0aGlzLmJ1ZmZlcltlICs9IDNdIH0gcmV0dXJuIHlpZWxkKiB0aGlzLnB1c2hUb0luZGV4KGUsICExKSB9IH0gKnB1c2hOZXdsaW5lKCkgeyBjb25zdCBlID0gdGhpcy5idWZmZXJbdGhpcy5wb3NdOyByZXR1cm4gXCJcXG5cIiA9PT0gZSA/IHlpZWxkKiB0aGlzLnB1c2hDb3VudCgxKSA6IFwiXFxyXCIgPT09IGUgJiYgXCJcXG5cIiA9PT0gdGhpcy5jaGFyQXQoMSkgPyB5aWVsZCogdGhpcy5wdXNoQ291bnQoMikgOiAwIH0gKnB1c2hTcGFjZXMoZSkgeyBsZXQgdCwgbiA9IHRoaXMucG9zIC0gMTsgZG8geyB0ID0gdGhpcy5idWZmZXJbKytuXSB9IHdoaWxlIChcIiBcIiA9PT0gdCB8fCBlICYmIFwiXFx0XCIgPT09IHQpOyBjb25zdCBzID0gbiAtIHRoaXMucG9zOyByZXR1cm4gcyA+IDAgJiYgKHlpZWxkIHRoaXMuYnVmZmVyLnN1YnN0cih0aGlzLnBvcywgcyksIHRoaXMucG9zID0gbiksIHMgfSAqcHVzaFVudGlsKGUpIHsgbGV0IHQgPSB0aGlzLnBvcywgbiA9IHRoaXMuYnVmZmVyW3RdOyBmb3IgKDsgIWUobik7KW4gPSB0aGlzLmJ1ZmZlclsrK3RdOyByZXR1cm4geWllbGQqIHRoaXMucHVzaFRvSW5kZXgodCwgITEpIH0gfSBjbGFzcyBibiB7IGNvbnN0cnVjdG9yKCkgeyB0aGlzLmxpbmVTdGFydHMgPSBbXSwgdGhpcy5hZGROZXdMaW5lID0gZSA9PiB0aGlzLmxpbmVTdGFydHMucHVzaChlKSwgdGhpcy5saW5lUG9zID0gZSA9PiB7IGxldCB0ID0gMCwgbiA9IHRoaXMubGluZVN0YXJ0cy5sZW5ndGg7IGZvciAoOyB0IDwgbjspIHsgY29uc3QgcyA9IHQgKyBuID4+IDE7IHRoaXMubGluZVN0YXJ0c1tzXSA8IGUgPyB0ID0gcyArIDEgOiBuID0gcyB9IGlmICh0aGlzLmxpbmVTdGFydHNbdF0gPT09IGUpIHJldHVybiB7IGxpbmU6IHQgKyAxLCBjb2w6IDEgfTsgaWYgKDAgPT09IHQpIHJldHVybiB7IGxpbmU6IDAsIGNvbDogZSB9OyByZXR1cm4geyBsaW5lOiB0LCBjb2w6IGUgLSB0aGlzLmxpbmVTdGFydHNbdCAtIDFdICsgMSB9IH0gfSB9IGZ1bmN0aW9uIGtuKGUsIHQpIHsgZm9yIChsZXQgbiA9IDA7IG4gPCBlLmxlbmd0aDsgKytuKWlmIChlW25dLnR5cGUgPT09IHQpIHJldHVybiAhMDsgcmV0dXJuICExIH0gZnVuY3Rpb24gd24oZSkgeyBmb3IgKGxldCB0ID0gMDsgdCA8IGUubGVuZ3RoOyArK3Qpc3dpdGNoIChlW3RdLnR5cGUpIHsgY2FzZSBcInNwYWNlXCI6IGNhc2UgXCJjb21tZW50XCI6IGNhc2UgXCJuZXdsaW5lXCI6IGJyZWFrOyBkZWZhdWx0OiByZXR1cm4gdCB9cmV0dXJuIC0xIH0gZnVuY3Rpb24gdm4oZSkgeyBzd2l0Y2ggKGU/LnR5cGUpIHsgY2FzZSBcImFsaWFzXCI6IGNhc2UgXCJzY2FsYXJcIjogY2FzZSBcInNpbmdsZS1xdW90ZWQtc2NhbGFyXCI6IGNhc2UgXCJkb3VibGUtcXVvdGVkLXNjYWxhclwiOiBjYXNlIFwiZmxvdy1jb2xsZWN0aW9uXCI6IHJldHVybiAhMDsgZGVmYXVsdDogcmV0dXJuICExIH0gfSBmdW5jdGlvbiBTbihlKSB7IHN3aXRjaCAoZS50eXBlKSB7IGNhc2UgXCJkb2N1bWVudFwiOiByZXR1cm4gZS5zdGFydDsgY2FzZSBcImJsb2NrLW1hcFwiOiB7IGNvbnN0IHQgPSBlLml0ZW1zW2UuaXRlbXMubGVuZ3RoIC0gMV07IHJldHVybiB0LnNlcCA/PyB0LnN0YXJ0IH0gY2FzZSBcImJsb2NrLXNlcVwiOiByZXR1cm4gZS5pdGVtc1tlLml0ZW1zLmxlbmd0aCAtIDFdLnN0YXJ0OyBkZWZhdWx0OiByZXR1cm4gW10gfSB9IGZ1bmN0aW9uIEVuKGUpIHsgaWYgKDAgPT09IGUubGVuZ3RoKSByZXR1cm4gW107IGxldCB0ID0gZS5sZW5ndGg7IGU6IGZvciAoOyAtLXQgPj0gMDspc3dpdGNoIChlW3RdLnR5cGUpIHsgY2FzZSBcImRvYy1zdGFydFwiOiBjYXNlIFwiZXhwbGljaXQta2V5LWluZFwiOiBjYXNlIFwibWFwLXZhbHVlLWluZFwiOiBjYXNlIFwic2VxLWl0ZW0taW5kXCI6IGNhc2UgXCJuZXdsaW5lXCI6IGJyZWFrIGUgfWZvciAoOyBcInNwYWNlXCIgPT09IGVbKyt0XT8udHlwZTspOyByZXR1cm4gZS5zcGxpY2UodCwgZS5sZW5ndGgpIH0gZnVuY3Rpb24gTm4oZSkgeyBpZiAoXCJmbG93LXNlcS1zdGFydFwiID09PSBlLnN0YXJ0LnR5cGUpIGZvciAoY29uc3QgdCBvZiBlLml0ZW1zKSAhdC5zZXAgfHwgdC52YWx1ZSB8fCBrbih0LnN0YXJ0LCBcImV4cGxpY2l0LWtleS1pbmRcIikgfHwga24odC5zZXAsIFwibWFwLXZhbHVlLWluZFwiKSB8fCAodC5rZXkgJiYgKHQudmFsdWUgPSB0LmtleSksIGRlbGV0ZSB0LmtleSwgdm4odC52YWx1ZSkgPyB0LnZhbHVlLmVuZCA/IEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KHQudmFsdWUuZW5kLCB0LnNlcCkgOiB0LnZhbHVlLmVuZCA9IHQuc2VwIDogQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkodC5zdGFydCwgdC5zZXApLCBkZWxldGUgdC5zZXApIH0gY2xhc3MgT24geyBjb25zdHJ1Y3RvcihlKSB7IHRoaXMuYXROZXdMaW5lID0gITAsIHRoaXMuYXRTY2FsYXIgPSAhMSwgdGhpcy5pbmRlbnQgPSAwLCB0aGlzLm9mZnNldCA9IDAsIHRoaXMub25LZXlMaW5lID0gITEsIHRoaXMuc3RhY2sgPSBbXSwgdGhpcy5zb3VyY2UgPSBcIlwiLCB0aGlzLnR5cGUgPSBcIlwiLCB0aGlzLmxleGVyID0gbmV3IGduLCB0aGlzLm9uTmV3TGluZSA9IGUgfSAqcGFyc2UoZSwgdCA9ICExKSB7IHRoaXMub25OZXdMaW5lICYmIDAgPT09IHRoaXMub2Zmc2V0ICYmIHRoaXMub25OZXdMaW5lKDApOyBmb3IgKGNvbnN0IG4gb2YgdGhpcy5sZXhlci5sZXgoZSwgdCkpIHlpZWxkKiB0aGlzLm5leHQobik7IHQgfHwgKHlpZWxkKiB0aGlzLmVuZCgpKSB9ICpuZXh0KGUpIHsgaWYgKHRoaXMuc291cmNlID0gZSwgdGhpcy5hdFNjYWxhcikgcmV0dXJuIHRoaXMuYXRTY2FsYXIgPSAhMSwgeWllbGQqIHRoaXMuc3RlcCgpLCB2b2lkICh0aGlzLm9mZnNldCArPSBlLmxlbmd0aCk7IGNvbnN0IHQgPSBsbihlKTsgaWYgKHQpIGlmIChcInNjYWxhclwiID09PSB0KSB0aGlzLmF0TmV3TGluZSA9ICExLCB0aGlzLmF0U2NhbGFyID0gITAsIHRoaXMudHlwZSA9IFwic2NhbGFyXCI7IGVsc2UgeyBzd2l0Y2ggKHRoaXMudHlwZSA9IHQsIHlpZWxkKiB0aGlzLnN0ZXAoKSwgdCkgeyBjYXNlIFwibmV3bGluZVwiOiB0aGlzLmF0TmV3TGluZSA9ICEwLCB0aGlzLmluZGVudCA9IDAsIHRoaXMub25OZXdMaW5lICYmIHRoaXMub25OZXdMaW5lKHRoaXMub2Zmc2V0ICsgZS5sZW5ndGgpOyBicmVhazsgY2FzZSBcInNwYWNlXCI6IHRoaXMuYXROZXdMaW5lICYmIFwiIFwiID09PSBlWzBdICYmICh0aGlzLmluZGVudCArPSBlLmxlbmd0aCk7IGJyZWFrOyBjYXNlIFwiZXhwbGljaXQta2V5LWluZFwiOiBjYXNlIFwibWFwLXZhbHVlLWluZFwiOiBjYXNlIFwic2VxLWl0ZW0taW5kXCI6IHRoaXMuYXROZXdMaW5lICYmICh0aGlzLmluZGVudCArPSBlLmxlbmd0aCk7IGJyZWFrOyBjYXNlIFwiZG9jLW1vZGVcIjogY2FzZSBcImZsb3ctZXJyb3ItZW5kXCI6IHJldHVybjsgZGVmYXVsdDogdGhpcy5hdE5ld0xpbmUgPSAhMSB9dGhpcy5vZmZzZXQgKz0gZS5sZW5ndGggfSBlbHNlIHsgY29uc3QgdCA9IGBOb3QgYSBZQU1MIHRva2VuOiAke2V9YDsgeWllbGQqIHRoaXMucG9wKHsgdHlwZTogXCJlcnJvclwiLCBvZmZzZXQ6IHRoaXMub2Zmc2V0LCBtZXNzYWdlOiB0LCBzb3VyY2U6IGUgfSksIHRoaXMub2Zmc2V0ICs9IGUubGVuZ3RoIH0gfSAqZW5kKCkgeyBmb3IgKDsgdGhpcy5zdGFjay5sZW5ndGggPiAwOyl5aWVsZCogdGhpcy5wb3AoKSB9IGdldCBzb3VyY2VUb2tlbigpIHsgcmV0dXJuIHsgdHlwZTogdGhpcy50eXBlLCBvZmZzZXQ6IHRoaXMub2Zmc2V0LCBpbmRlbnQ6IHRoaXMuaW5kZW50LCBzb3VyY2U6IHRoaXMuc291cmNlIH0gfSAqc3RlcCgpIHsgY29uc3QgZSA9IHRoaXMucGVlaygxKTsgaWYgKFwiZG9jLWVuZFwiICE9PSB0aGlzLnR5cGUgfHwgZSAmJiBcImRvYy1lbmRcIiA9PT0gZS50eXBlKSB7IGlmICghZSkgcmV0dXJuIHlpZWxkKiB0aGlzLnN0cmVhbSgpOyBzd2l0Y2ggKGUudHlwZSkgeyBjYXNlIFwiZG9jdW1lbnRcIjogcmV0dXJuIHlpZWxkKiB0aGlzLmRvY3VtZW50KGUpOyBjYXNlIFwiYWxpYXNcIjogY2FzZSBcInNjYWxhclwiOiBjYXNlIFwic2luZ2xlLXF1b3RlZC1zY2FsYXJcIjogY2FzZSBcImRvdWJsZS1xdW90ZWQtc2NhbGFyXCI6IHJldHVybiB5aWVsZCogdGhpcy5zY2FsYXIoZSk7IGNhc2UgXCJibG9jay1zY2FsYXJcIjogcmV0dXJuIHlpZWxkKiB0aGlzLmJsb2NrU2NhbGFyKGUpOyBjYXNlIFwiYmxvY2stbWFwXCI6IHJldHVybiB5aWVsZCogdGhpcy5ibG9ja01hcChlKTsgY2FzZSBcImJsb2NrLXNlcVwiOiByZXR1cm4geWllbGQqIHRoaXMuYmxvY2tTZXF1ZW5jZShlKTsgY2FzZSBcImZsb3ctY29sbGVjdGlvblwiOiByZXR1cm4geWllbGQqIHRoaXMuZmxvd0NvbGxlY3Rpb24oZSk7IGNhc2UgXCJkb2MtZW5kXCI6IHJldHVybiB5aWVsZCogdGhpcy5kb2N1bWVudEVuZChlKSB9eWllbGQqIHRoaXMucG9wKCkgfSBlbHNlIHsgZm9yICg7IHRoaXMuc3RhY2subGVuZ3RoID4gMDspeWllbGQqIHRoaXMucG9wKCk7IHRoaXMuc3RhY2sucHVzaCh7IHR5cGU6IFwiZG9jLWVuZFwiLCBvZmZzZXQ6IHRoaXMub2Zmc2V0LCBzb3VyY2U6IHRoaXMuc291cmNlIH0pIH0gfSBwZWVrKGUpIHsgcmV0dXJuIHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSBlXSB9ICpwb3AoZSkgeyBjb25zdCB0ID0gZSA/PyB0aGlzLnN0YWNrLnBvcCgpOyBpZiAodCkgaWYgKDAgPT09IHRoaXMuc3RhY2subGVuZ3RoKSB5aWVsZCB0OyBlbHNlIHsgY29uc3QgZSA9IHRoaXMucGVlaygxKTsgc3dpdGNoIChcImJsb2NrLXNjYWxhclwiID09PSB0LnR5cGUgPyB0LmluZGVudCA9IFwiaW5kZW50XCIgaW4gZSA/IGUuaW5kZW50IDogMCA6IFwiZmxvdy1jb2xsZWN0aW9uXCIgPT09IHQudHlwZSAmJiBcImRvY3VtZW50XCIgPT09IGUudHlwZSAmJiAodC5pbmRlbnQgPSAwKSwgXCJmbG93LWNvbGxlY3Rpb25cIiA9PT0gdC50eXBlICYmIE5uKHQpLCBlLnR5cGUpIHsgY2FzZSBcImRvY3VtZW50XCI6IGUudmFsdWUgPSB0OyBicmVhazsgY2FzZSBcImJsb2NrLXNjYWxhclwiOiBlLnByb3BzLnB1c2godCk7IGJyZWFrOyBjYXNlIFwiYmxvY2stbWFwXCI6IHsgY29uc3QgbiA9IGUuaXRlbXNbZS5pdGVtcy5sZW5ndGggLSAxXTsgaWYgKG4udmFsdWUpIHJldHVybiBlLml0ZW1zLnB1c2goeyBzdGFydDogW10sIGtleTogdCwgc2VwOiBbXSB9KSwgdm9pZCAodGhpcy5vbktleUxpbmUgPSAhMCk7IGlmICghbi5zZXApIHJldHVybiBPYmplY3QuYXNzaWduKG4sIHsga2V5OiB0LCBzZXA6IFtdIH0pLCB2b2lkICh0aGlzLm9uS2V5TGluZSA9ICFuLmV4cGxpY2l0S2V5KTsgbi52YWx1ZSA9IHQ7IGJyZWFrIH0gY2FzZSBcImJsb2NrLXNlcVwiOiB7IGNvbnN0IG4gPSBlLml0ZW1zW2UuaXRlbXMubGVuZ3RoIC0gMV07IG4udmFsdWUgPyBlLml0ZW1zLnB1c2goeyBzdGFydDogW10sIHZhbHVlOiB0IH0pIDogbi52YWx1ZSA9IHQ7IGJyZWFrIH0gY2FzZSBcImZsb3ctY29sbGVjdGlvblwiOiB7IGNvbnN0IG4gPSBlLml0ZW1zW2UuaXRlbXMubGVuZ3RoIC0gMV07IHJldHVybiB2b2lkICghbiB8fCBuLnZhbHVlID8gZS5pdGVtcy5wdXNoKHsgc3RhcnQ6IFtdLCBrZXk6IHQsIHNlcDogW10gfSkgOiBuLnNlcCA/IG4udmFsdWUgPSB0IDogT2JqZWN0LmFzc2lnbihuLCB7IGtleTogdCwgc2VwOiBbXSB9KSkgfSBkZWZhdWx0OiB5aWVsZCogdGhpcy5wb3AoKSwgeWllbGQqIHRoaXMucG9wKHQpIH1pZiAoIShcImRvY3VtZW50XCIgIT09IGUudHlwZSAmJiBcImJsb2NrLW1hcFwiICE9PSBlLnR5cGUgJiYgXCJibG9jay1zZXFcIiAhPT0gZS50eXBlIHx8IFwiYmxvY2stbWFwXCIgIT09IHQudHlwZSAmJiBcImJsb2NrLXNlcVwiICE9PSB0LnR5cGUpKSB7IGNvbnN0IG4gPSB0Lml0ZW1zW3QuaXRlbXMubGVuZ3RoIC0gMV07IG4gJiYgIW4uc2VwICYmICFuLnZhbHVlICYmIG4uc3RhcnQubGVuZ3RoID4gMCAmJiAtMSA9PT0gd24obi5zdGFydCkgJiYgKDAgPT09IHQuaW5kZW50IHx8IG4uc3RhcnQuZXZlcnkoKGUgPT4gXCJjb21tZW50XCIgIT09IGUudHlwZSB8fCBlLmluZGVudCA8IHQuaW5kZW50KSkpICYmIChcImRvY3VtZW50XCIgPT09IGUudHlwZSA/IGUuZW5kID0gbi5zdGFydCA6IGUuaXRlbXMucHVzaCh7IHN0YXJ0OiBuLnN0YXJ0IH0pLCB0Lml0ZW1zLnNwbGljZSgtMSwgMSkpIH0gfSBlbHNlIHsgY29uc3QgZSA9IFwiVHJpZWQgdG8gcG9wIGFuIGVtcHR5IHN0YWNrXCI7IHlpZWxkIHsgdHlwZTogXCJlcnJvclwiLCBvZmZzZXQ6IHRoaXMub2Zmc2V0LCBzb3VyY2U6IFwiXCIsIG1lc3NhZ2U6IGUgfSB9IH0gKnN0cmVhbSgpIHsgc3dpdGNoICh0aGlzLnR5cGUpIHsgY2FzZSBcImRpcmVjdGl2ZS1saW5lXCI6IHJldHVybiB2b2lkICh5aWVsZCB7IHR5cGU6IFwiZGlyZWN0aXZlXCIsIG9mZnNldDogdGhpcy5vZmZzZXQsIHNvdXJjZTogdGhpcy5zb3VyY2UgfSk7IGNhc2UgXCJieXRlLW9yZGVyLW1hcmtcIjogY2FzZSBcInNwYWNlXCI6IGNhc2UgXCJjb21tZW50XCI6IGNhc2UgXCJuZXdsaW5lXCI6IHJldHVybiB2b2lkICh5aWVsZCB0aGlzLnNvdXJjZVRva2VuKTsgY2FzZSBcImRvYy1tb2RlXCI6IGNhc2UgXCJkb2Mtc3RhcnRcIjogeyBjb25zdCBlID0geyB0eXBlOiBcImRvY3VtZW50XCIsIG9mZnNldDogdGhpcy5vZmZzZXQsIHN0YXJ0OiBbXSB9OyByZXR1cm4gXCJkb2Mtc3RhcnRcIiA9PT0gdGhpcy50eXBlICYmIGUuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKSwgdm9pZCB0aGlzLnN0YWNrLnB1c2goZSkgfSB9eWllbGQgeyB0eXBlOiBcImVycm9yXCIsIG9mZnNldDogdGhpcy5vZmZzZXQsIG1lc3NhZ2U6IGBVbmV4cGVjdGVkICR7dGhpcy50eXBlfSB0b2tlbiBpbiBZQU1MIHN0cmVhbWAsIHNvdXJjZTogdGhpcy5zb3VyY2UgfSB9ICpkb2N1bWVudChlKSB7IGlmIChlLnZhbHVlKSByZXR1cm4geWllbGQqIHRoaXMubGluZUVuZChlKTsgc3dpdGNoICh0aGlzLnR5cGUpIHsgY2FzZSBcImRvYy1zdGFydFwiOiByZXR1cm4gdm9pZCAoLTEgIT09IHduKGUuc3RhcnQpID8gKHlpZWxkKiB0aGlzLnBvcCgpLCB5aWVsZCogdGhpcy5zdGVwKCkpIDogZS5zdGFydC5wdXNoKHRoaXMuc291cmNlVG9rZW4pKTsgY2FzZSBcImFuY2hvclwiOiBjYXNlIFwidGFnXCI6IGNhc2UgXCJzcGFjZVwiOiBjYXNlIFwiY29tbWVudFwiOiBjYXNlIFwibmV3bGluZVwiOiByZXR1cm4gdm9pZCBlLnN0YXJ0LnB1c2godGhpcy5zb3VyY2VUb2tlbikgfWNvbnN0IHQgPSB0aGlzLnN0YXJ0QmxvY2tWYWx1ZShlKTsgdCA/IHRoaXMuc3RhY2sucHVzaCh0KSA6IHlpZWxkIHsgdHlwZTogXCJlcnJvclwiLCBvZmZzZXQ6IHRoaXMub2Zmc2V0LCBtZXNzYWdlOiBgVW5leHBlY3RlZCAke3RoaXMudHlwZX0gdG9rZW4gaW4gWUFNTCBkb2N1bWVudGAsIHNvdXJjZTogdGhpcy5zb3VyY2UgfSB9ICpzY2FsYXIoZSkgeyBpZiAoXCJtYXAtdmFsdWUtaW5kXCIgPT09IHRoaXMudHlwZSkgeyBjb25zdCB0ID0gRW4oU24odGhpcy5wZWVrKDIpKSk7IGxldCBuOyBlLmVuZCA/IChuID0gZS5lbmQsIG4ucHVzaCh0aGlzLnNvdXJjZVRva2VuKSwgZGVsZXRlIGUuZW5kKSA6IG4gPSBbdGhpcy5zb3VyY2VUb2tlbl07IGNvbnN0IHMgPSB7IHR5cGU6IFwiYmxvY2stbWFwXCIsIG9mZnNldDogZS5vZmZzZXQsIGluZGVudDogZS5pbmRlbnQsIGl0ZW1zOiBbeyBzdGFydDogdCwga2V5OiBlLCBzZXA6IG4gfV0gfTsgdGhpcy5vbktleUxpbmUgPSAhMCwgdGhpcy5zdGFja1t0aGlzLnN0YWNrLmxlbmd0aCAtIDFdID0gcyB9IGVsc2UgeWllbGQqIHRoaXMubGluZUVuZChlKSB9ICpibG9ja1NjYWxhcihlKSB7IHN3aXRjaCAodGhpcy50eXBlKSB7IGNhc2UgXCJzcGFjZVwiOiBjYXNlIFwiY29tbWVudFwiOiBjYXNlIFwibmV3bGluZVwiOiByZXR1cm4gdm9pZCBlLnByb3BzLnB1c2godGhpcy5zb3VyY2VUb2tlbik7IGNhc2UgXCJzY2FsYXJcIjogaWYgKGUuc291cmNlID0gdGhpcy5zb3VyY2UsIHRoaXMuYXROZXdMaW5lID0gITAsIHRoaXMuaW5kZW50ID0gMCwgdGhpcy5vbk5ld0xpbmUpIHsgbGV0IGUgPSB0aGlzLnNvdXJjZS5pbmRleE9mKFwiXFxuXCIpICsgMTsgZm9yICg7IDAgIT09IGU7KXRoaXMub25OZXdMaW5lKHRoaXMub2Zmc2V0ICsgZSksIGUgPSB0aGlzLnNvdXJjZS5pbmRleE9mKFwiXFxuXCIsIGUpICsgMSB9IHlpZWxkKiB0aGlzLnBvcCgpOyBicmVhazsgZGVmYXVsdDogeWllbGQqIHRoaXMucG9wKCksIHlpZWxkKiB0aGlzLnN0ZXAoKSB9IH0gKmJsb2NrTWFwKGUpIHsgY29uc3QgdCA9IGUuaXRlbXNbZS5pdGVtcy5sZW5ndGggLSAxXTsgc3dpdGNoICh0aGlzLnR5cGUpIHsgY2FzZSBcIm5ld2xpbmVcIjogaWYgKHRoaXMub25LZXlMaW5lID0gITEsIHQudmFsdWUpIHsgY29uc3QgbiA9IFwiZW5kXCIgaW4gdC52YWx1ZSA/IHQudmFsdWUuZW5kIDogdm9pZCAwLCBzID0gQXJyYXkuaXNBcnJheShuKSA/IG5bbi5sZW5ndGggLSAxXSA6IHZvaWQgMDsgXCJjb21tZW50XCIgPT09IHM/LnR5cGUgPyBuPy5wdXNoKHRoaXMuc291cmNlVG9rZW4pIDogZS5pdGVtcy5wdXNoKHsgc3RhcnQ6IFt0aGlzLnNvdXJjZVRva2VuXSB9KSB9IGVsc2UgdC5zZXAgPyB0LnNlcC5wdXNoKHRoaXMuc291cmNlVG9rZW4pIDogdC5zdGFydC5wdXNoKHRoaXMuc291cmNlVG9rZW4pOyByZXR1cm47IGNhc2UgXCJzcGFjZVwiOiBjYXNlIFwiY29tbWVudFwiOiBpZiAodC52YWx1ZSkgZS5pdGVtcy5wdXNoKHsgc3RhcnQ6IFt0aGlzLnNvdXJjZVRva2VuXSB9KTsgZWxzZSBpZiAodC5zZXApIHQuc2VwLnB1c2godGhpcy5zb3VyY2VUb2tlbik7IGVsc2UgeyBpZiAodGhpcy5hdEluZGVudGVkQ29tbWVudCh0LnN0YXJ0LCBlLmluZGVudCkpIHsgY29uc3QgbiA9IGUuaXRlbXNbZS5pdGVtcy5sZW5ndGggLSAyXSwgcyA9IG4/LnZhbHVlPy5lbmQ7IGlmIChBcnJheS5pc0FycmF5KHMpKSByZXR1cm4gQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkocywgdC5zdGFydCksIHMucHVzaCh0aGlzLnNvdXJjZVRva2VuKSwgdm9pZCBlLml0ZW1zLnBvcCgpIH0gdC5zdGFydC5wdXNoKHRoaXMuc291cmNlVG9rZW4pIH0gcmV0dXJuIH1pZiAodGhpcy5pbmRlbnQgPj0gZS5pbmRlbnQpIHsgY29uc3QgbiA9ICF0aGlzLm9uS2V5TGluZSAmJiB0aGlzLmluZGVudCA9PT0gZS5pbmRlbnQsIHMgPSBuICYmICh0LnNlcCB8fCB0LmV4cGxpY2l0S2V5KSAmJiBcInNlcS1pdGVtLWluZFwiICE9PSB0aGlzLnR5cGU7IGxldCBpID0gW107IGlmIChzICYmIHQuc2VwICYmICF0LnZhbHVlKSB7IGNvbnN0IG4gPSBbXTsgZm9yIChsZXQgcyA9IDA7IHMgPCB0LnNlcC5sZW5ndGg7ICsrcykgeyBjb25zdCBpID0gdC5zZXBbc107IHN3aXRjaCAoaS50eXBlKSB7IGNhc2UgXCJuZXdsaW5lXCI6IG4ucHVzaChzKTsgYnJlYWs7IGNhc2UgXCJzcGFjZVwiOiBicmVhazsgY2FzZSBcImNvbW1lbnRcIjogaS5pbmRlbnQgPiBlLmluZGVudCAmJiAobi5sZW5ndGggPSAwKTsgYnJlYWs7IGRlZmF1bHQ6IG4ubGVuZ3RoID0gMCB9IH0gbi5sZW5ndGggPj0gMiAmJiAoaSA9IHQuc2VwLnNwbGljZShuWzFdKSkgfSBzd2l0Y2ggKHRoaXMudHlwZSkgeyBjYXNlIFwiYW5jaG9yXCI6IGNhc2UgXCJ0YWdcIjogcmV0dXJuIHZvaWQgKHMgfHwgdC52YWx1ZSA/IChpLnB1c2godGhpcy5zb3VyY2VUb2tlbiksIGUuaXRlbXMucHVzaCh7IHN0YXJ0OiBpIH0pLCB0aGlzLm9uS2V5TGluZSA9ICEwKSA6IHQuc2VwID8gdC5zZXAucHVzaCh0aGlzLnNvdXJjZVRva2VuKSA6IHQuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKSk7IGNhc2UgXCJleHBsaWNpdC1rZXktaW5kXCI6IHJldHVybiB0LnNlcCB8fCB0LmV4cGxpY2l0S2V5ID8gcyB8fCB0LnZhbHVlID8gKGkucHVzaCh0aGlzLnNvdXJjZVRva2VuKSwgZS5pdGVtcy5wdXNoKHsgc3RhcnQ6IGksIGV4cGxpY2l0S2V5OiAhMCB9KSkgOiB0aGlzLnN0YWNrLnB1c2goeyB0eXBlOiBcImJsb2NrLW1hcFwiLCBvZmZzZXQ6IHRoaXMub2Zmc2V0LCBpbmRlbnQ6IHRoaXMuaW5kZW50LCBpdGVtczogW3sgc3RhcnQ6IFt0aGlzLnNvdXJjZVRva2VuXSwgZXhwbGljaXRLZXk6ICEwIH1dIH0pIDogKHQuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKSwgdC5leHBsaWNpdEtleSA9ICEwKSwgdm9pZCAodGhpcy5vbktleUxpbmUgPSAhMCk7IGNhc2UgXCJtYXAtdmFsdWUtaW5kXCI6IGlmICh0LmV4cGxpY2l0S2V5KSBpZiAodC5zZXApIGlmICh0LnZhbHVlKSBlLml0ZW1zLnB1c2goeyBzdGFydDogW10sIGtleTogbnVsbCwgc2VwOiBbdGhpcy5zb3VyY2VUb2tlbl0gfSk7IGVsc2UgaWYgKGtuKHQuc2VwLCBcIm1hcC12YWx1ZS1pbmRcIikpIHRoaXMuc3RhY2sucHVzaCh7IHR5cGU6IFwiYmxvY2stbWFwXCIsIG9mZnNldDogdGhpcy5vZmZzZXQsIGluZGVudDogdGhpcy5pbmRlbnQsIGl0ZW1zOiBbeyBzdGFydDogaSwga2V5OiBudWxsLCBzZXA6IFt0aGlzLnNvdXJjZVRva2VuXSB9XSB9KTsgZWxzZSBpZiAodm4odC5rZXkpICYmICFrbih0LnNlcCwgXCJuZXdsaW5lXCIpKSB7IGNvbnN0IGUgPSBFbih0LnN0YXJ0KSwgbiA9IHQua2V5LCBzID0gdC5zZXA7IHMucHVzaCh0aGlzLnNvdXJjZVRva2VuKSwgZGVsZXRlIHQua2V5LCBkZWxldGUgdC5zZXAsIHRoaXMuc3RhY2sucHVzaCh7IHR5cGU6IFwiYmxvY2stbWFwXCIsIG9mZnNldDogdGhpcy5vZmZzZXQsIGluZGVudDogdGhpcy5pbmRlbnQsIGl0ZW1zOiBbeyBzdGFydDogZSwga2V5OiBuLCBzZXA6IHMgfV0gfSkgfSBlbHNlIGkubGVuZ3RoID4gMCA/IHQuc2VwID0gdC5zZXAuY29uY2F0KGksIHRoaXMuc291cmNlVG9rZW4pIDogdC5zZXAucHVzaCh0aGlzLnNvdXJjZVRva2VuKTsgZWxzZSBpZiAoa24odC5zdGFydCwgXCJuZXdsaW5lXCIpKSBPYmplY3QuYXNzaWduKHQsIHsga2V5OiBudWxsLCBzZXA6IFt0aGlzLnNvdXJjZVRva2VuXSB9KTsgZWxzZSB7IGNvbnN0IGUgPSBFbih0LnN0YXJ0KTsgdGhpcy5zdGFjay5wdXNoKHsgdHlwZTogXCJibG9jay1tYXBcIiwgb2Zmc2V0OiB0aGlzLm9mZnNldCwgaW5kZW50OiB0aGlzLmluZGVudCwgaXRlbXM6IFt7IHN0YXJ0OiBlLCBrZXk6IG51bGwsIHNlcDogW3RoaXMuc291cmNlVG9rZW5dIH1dIH0pIH0gZWxzZSB0LnNlcCA/IHQudmFsdWUgfHwgcyA/IGUuaXRlbXMucHVzaCh7IHN0YXJ0OiBpLCBrZXk6IG51bGwsIHNlcDogW3RoaXMuc291cmNlVG9rZW5dIH0pIDoga24odC5zZXAsIFwibWFwLXZhbHVlLWluZFwiKSA/IHRoaXMuc3RhY2sucHVzaCh7IHR5cGU6IFwiYmxvY2stbWFwXCIsIG9mZnNldDogdGhpcy5vZmZzZXQsIGluZGVudDogdGhpcy5pbmRlbnQsIGl0ZW1zOiBbeyBzdGFydDogW10sIGtleTogbnVsbCwgc2VwOiBbdGhpcy5zb3VyY2VUb2tlbl0gfV0gfSkgOiB0LnNlcC5wdXNoKHRoaXMuc291cmNlVG9rZW4pIDogT2JqZWN0LmFzc2lnbih0LCB7IGtleTogbnVsbCwgc2VwOiBbdGhpcy5zb3VyY2VUb2tlbl0gfSk7IHJldHVybiB2b2lkICh0aGlzLm9uS2V5TGluZSA9ICEwKTsgY2FzZSBcImFsaWFzXCI6IGNhc2UgXCJzY2FsYXJcIjogY2FzZSBcInNpbmdsZS1xdW90ZWQtc2NhbGFyXCI6IGNhc2UgXCJkb3VibGUtcXVvdGVkLXNjYWxhclwiOiB7IGNvbnN0IG4gPSB0aGlzLmZsb3dTY2FsYXIodGhpcy50eXBlKTsgcmV0dXJuIHZvaWQgKHMgfHwgdC52YWx1ZSA/IChlLml0ZW1zLnB1c2goeyBzdGFydDogaSwga2V5OiBuLCBzZXA6IFtdIH0pLCB0aGlzLm9uS2V5TGluZSA9ICEwKSA6IHQuc2VwID8gdGhpcy5zdGFjay5wdXNoKG4pIDogKE9iamVjdC5hc3NpZ24odCwgeyBrZXk6IG4sIHNlcDogW10gfSksIHRoaXMub25LZXlMaW5lID0gITApKSB9IGRlZmF1bHQ6IHsgY29uc3QgcyA9IHRoaXMuc3RhcnRCbG9ja1ZhbHVlKGUpOyBpZiAocykgeyBpZiAoXCJibG9jay1zZXFcIiA9PT0gcy50eXBlKSB7IGlmICghdC5leHBsaWNpdEtleSAmJiB0LnNlcCAmJiAha24odC5zZXAsIFwibmV3bGluZVwiKSkgcmV0dXJuIHZvaWQgKHlpZWxkKiB0aGlzLnBvcCh7IHR5cGU6IFwiZXJyb3JcIiwgb2Zmc2V0OiB0aGlzLm9mZnNldCwgbWVzc2FnZTogXCJVbmV4cGVjdGVkIGJsb2NrLXNlcS1pbmQgb24gc2FtZSBsaW5lIHdpdGgga2V5XCIsIHNvdXJjZTogdGhpcy5zb3VyY2UgfSkpIH0gZWxzZSBuICYmIGUuaXRlbXMucHVzaCh7IHN0YXJ0OiBpIH0pOyByZXR1cm4gdm9pZCB0aGlzLnN0YWNrLnB1c2gocykgfSB9IH0gfSB5aWVsZCogdGhpcy5wb3AoKSwgeWllbGQqIHRoaXMuc3RlcCgpIH0gKmJsb2NrU2VxdWVuY2UoZSkgeyBjb25zdCB0ID0gZS5pdGVtc1tlLml0ZW1zLmxlbmd0aCAtIDFdOyBzd2l0Y2ggKHRoaXMudHlwZSkgeyBjYXNlIFwibmV3bGluZVwiOiBpZiAodC52YWx1ZSkgeyBjb25zdCBuID0gXCJlbmRcIiBpbiB0LnZhbHVlID8gdC52YWx1ZS5lbmQgOiB2b2lkIDAsIHMgPSBBcnJheS5pc0FycmF5KG4pID8gbltuLmxlbmd0aCAtIDFdIDogdm9pZCAwOyBcImNvbW1lbnRcIiA9PT0gcz8udHlwZSA/IG4/LnB1c2godGhpcy5zb3VyY2VUb2tlbikgOiBlLml0ZW1zLnB1c2goeyBzdGFydDogW3RoaXMuc291cmNlVG9rZW5dIH0pIH0gZWxzZSB0LnN0YXJ0LnB1c2godGhpcy5zb3VyY2VUb2tlbik7IHJldHVybjsgY2FzZSBcInNwYWNlXCI6IGNhc2UgXCJjb21tZW50XCI6IGlmICh0LnZhbHVlKSBlLml0ZW1zLnB1c2goeyBzdGFydDogW3RoaXMuc291cmNlVG9rZW5dIH0pOyBlbHNlIHsgaWYgKHRoaXMuYXRJbmRlbnRlZENvbW1lbnQodC5zdGFydCwgZS5pbmRlbnQpKSB7IGNvbnN0IG4gPSBlLml0ZW1zW2UuaXRlbXMubGVuZ3RoIC0gMl0sIHMgPSBuPy52YWx1ZT8uZW5kOyBpZiAoQXJyYXkuaXNBcnJheShzKSkgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KHMsIHQuc3RhcnQpLCBzLnB1c2godGhpcy5zb3VyY2VUb2tlbiksIHZvaWQgZS5pdGVtcy5wb3AoKSB9IHQuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKSB9IHJldHVybjsgY2FzZSBcImFuY2hvclwiOiBjYXNlIFwidGFnXCI6IGlmICh0LnZhbHVlIHx8IHRoaXMuaW5kZW50IDw9IGUuaW5kZW50KSBicmVhazsgcmV0dXJuIHZvaWQgdC5zdGFydC5wdXNoKHRoaXMuc291cmNlVG9rZW4pOyBjYXNlIFwic2VxLWl0ZW0taW5kXCI6IGlmICh0aGlzLmluZGVudCAhPT0gZS5pbmRlbnQpIGJyZWFrOyByZXR1cm4gdm9pZCAodC52YWx1ZSB8fCBrbih0LnN0YXJ0LCBcInNlcS1pdGVtLWluZFwiKSA/IGUuaXRlbXMucHVzaCh7IHN0YXJ0OiBbdGhpcy5zb3VyY2VUb2tlbl0gfSkgOiB0LnN0YXJ0LnB1c2godGhpcy5zb3VyY2VUb2tlbikpIH1pZiAodGhpcy5pbmRlbnQgPiBlLmluZGVudCkgeyBjb25zdCB0ID0gdGhpcy5zdGFydEJsb2NrVmFsdWUoZSk7IGlmICh0KSByZXR1cm4gdm9pZCB0aGlzLnN0YWNrLnB1c2godCkgfSB5aWVsZCogdGhpcy5wb3AoKSwgeWllbGQqIHRoaXMuc3RlcCgpIH0gKmZsb3dDb2xsZWN0aW9uKGUpIHsgY29uc3QgdCA9IGUuaXRlbXNbZS5pdGVtcy5sZW5ndGggLSAxXTsgaWYgKFwiZmxvdy1lcnJvci1lbmRcIiA9PT0gdGhpcy50eXBlKSB7IGxldCBlOyBkbyB7IHlpZWxkKiB0aGlzLnBvcCgpLCBlID0gdGhpcy5wZWVrKDEpIH0gd2hpbGUgKGUgJiYgXCJmbG93LWNvbGxlY3Rpb25cIiA9PT0gZS50eXBlKSB9IGVsc2UgaWYgKDAgPT09IGUuZW5kLmxlbmd0aCkgeyBzd2l0Y2ggKHRoaXMudHlwZSkgeyBjYXNlIFwiY29tbWFcIjogY2FzZSBcImV4cGxpY2l0LWtleS1pbmRcIjogcmV0dXJuIHZvaWQgKCF0IHx8IHQuc2VwID8gZS5pdGVtcy5wdXNoKHsgc3RhcnQ6IFt0aGlzLnNvdXJjZVRva2VuXSB9KSA6IHQuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKSk7IGNhc2UgXCJtYXAtdmFsdWUtaW5kXCI6IHJldHVybiB2b2lkICghdCB8fCB0LnZhbHVlID8gZS5pdGVtcy5wdXNoKHsgc3RhcnQ6IFtdLCBrZXk6IG51bGwsIHNlcDogW3RoaXMuc291cmNlVG9rZW5dIH0pIDogdC5zZXAgPyB0LnNlcC5wdXNoKHRoaXMuc291cmNlVG9rZW4pIDogT2JqZWN0LmFzc2lnbih0LCB7IGtleTogbnVsbCwgc2VwOiBbdGhpcy5zb3VyY2VUb2tlbl0gfSkpOyBjYXNlIFwic3BhY2VcIjogY2FzZSBcImNvbW1lbnRcIjogY2FzZSBcIm5ld2xpbmVcIjogY2FzZSBcImFuY2hvclwiOiBjYXNlIFwidGFnXCI6IHJldHVybiB2b2lkICghdCB8fCB0LnZhbHVlID8gZS5pdGVtcy5wdXNoKHsgc3RhcnQ6IFt0aGlzLnNvdXJjZVRva2VuXSB9KSA6IHQuc2VwID8gdC5zZXAucHVzaCh0aGlzLnNvdXJjZVRva2VuKSA6IHQuc3RhcnQucHVzaCh0aGlzLnNvdXJjZVRva2VuKSk7IGNhc2UgXCJhbGlhc1wiOiBjYXNlIFwic2NhbGFyXCI6IGNhc2UgXCJzaW5nbGUtcXVvdGVkLXNjYWxhclwiOiBjYXNlIFwiZG91YmxlLXF1b3RlZC1zY2FsYXJcIjogeyBjb25zdCBuID0gdGhpcy5mbG93U2NhbGFyKHRoaXMudHlwZSk7IHJldHVybiB2b2lkICghdCB8fCB0LnZhbHVlID8gZS5pdGVtcy5wdXNoKHsgc3RhcnQ6IFtdLCBrZXk6IG4sIHNlcDogW10gfSkgOiB0LnNlcCA/IHRoaXMuc3RhY2sucHVzaChuKSA6IE9iamVjdC5hc3NpZ24odCwgeyBrZXk6IG4sIHNlcDogW10gfSkpIH0gY2FzZSBcImZsb3ctbWFwLWVuZFwiOiBjYXNlIFwiZmxvdy1zZXEtZW5kXCI6IHJldHVybiB2b2lkIGUuZW5kLnB1c2godGhpcy5zb3VyY2VUb2tlbikgfWNvbnN0IG4gPSB0aGlzLnN0YXJ0QmxvY2tWYWx1ZShlKTsgbiA/IHRoaXMuc3RhY2sucHVzaChuKSA6ICh5aWVsZCogdGhpcy5wb3AoKSwgeWllbGQqIHRoaXMuc3RlcCgpKSB9IGVsc2UgeyBjb25zdCB0ID0gdGhpcy5wZWVrKDIpOyBpZiAoXCJibG9jay1tYXBcIiA9PT0gdC50eXBlICYmIChcIm1hcC12YWx1ZS1pbmRcIiA9PT0gdGhpcy50eXBlICYmIHQuaW5kZW50ID09PSBlLmluZGVudCB8fCBcIm5ld2xpbmVcIiA9PT0gdGhpcy50eXBlICYmICF0Lml0ZW1zW3QuaXRlbXMubGVuZ3RoIC0gMV0uc2VwKSkgeWllbGQqIHRoaXMucG9wKCksIHlpZWxkKiB0aGlzLnN0ZXAoKTsgZWxzZSBpZiAoXCJtYXAtdmFsdWUtaW5kXCIgPT09IHRoaXMudHlwZSAmJiBcImZsb3ctY29sbGVjdGlvblwiICE9PSB0LnR5cGUpIHsgY29uc3QgbiA9IEVuKFNuKHQpKTsgTm4oZSk7IGNvbnN0IHMgPSBlLmVuZC5zcGxpY2UoMSwgZS5lbmQubGVuZ3RoKTsgcy5wdXNoKHRoaXMuc291cmNlVG9rZW4pOyBjb25zdCBpID0geyB0eXBlOiBcImJsb2NrLW1hcFwiLCBvZmZzZXQ6IGUub2Zmc2V0LCBpbmRlbnQ6IGUuaW5kZW50LCBpdGVtczogW3sgc3RhcnQ6IG4sIGtleTogZSwgc2VwOiBzIH1dIH07IHRoaXMub25LZXlMaW5lID0gITAsIHRoaXMuc3RhY2tbdGhpcy5zdGFjay5sZW5ndGggLSAxXSA9IGkgfSBlbHNlIHlpZWxkKiB0aGlzLmxpbmVFbmQoZSkgfSB9IGZsb3dTY2FsYXIoZSkgeyBpZiAodGhpcy5vbk5ld0xpbmUpIHsgbGV0IGUgPSB0aGlzLnNvdXJjZS5pbmRleE9mKFwiXFxuXCIpICsgMTsgZm9yICg7IDAgIT09IGU7KXRoaXMub25OZXdMaW5lKHRoaXMub2Zmc2V0ICsgZSksIGUgPSB0aGlzLnNvdXJjZS5pbmRleE9mKFwiXFxuXCIsIGUpICsgMSB9IHJldHVybiB7IHR5cGU6IGUsIG9mZnNldDogdGhpcy5vZmZzZXQsIGluZGVudDogdGhpcy5pbmRlbnQsIHNvdXJjZTogdGhpcy5zb3VyY2UgfSB9IHN0YXJ0QmxvY2tWYWx1ZShlKSB7IHN3aXRjaCAodGhpcy50eXBlKSB7IGNhc2UgXCJhbGlhc1wiOiBjYXNlIFwic2NhbGFyXCI6IGNhc2UgXCJzaW5nbGUtcXVvdGVkLXNjYWxhclwiOiBjYXNlIFwiZG91YmxlLXF1b3RlZC1zY2FsYXJcIjogcmV0dXJuIHRoaXMuZmxvd1NjYWxhcih0aGlzLnR5cGUpOyBjYXNlIFwiYmxvY2stc2NhbGFyLWhlYWRlclwiOiByZXR1cm4geyB0eXBlOiBcImJsb2NrLXNjYWxhclwiLCBvZmZzZXQ6IHRoaXMub2Zmc2V0LCBpbmRlbnQ6IHRoaXMuaW5kZW50LCBwcm9wczogW3RoaXMuc291cmNlVG9rZW5dLCBzb3VyY2U6IFwiXCIgfTsgY2FzZSBcImZsb3ctbWFwLXN0YXJ0XCI6IGNhc2UgXCJmbG93LXNlcS1zdGFydFwiOiByZXR1cm4geyB0eXBlOiBcImZsb3ctY29sbGVjdGlvblwiLCBvZmZzZXQ6IHRoaXMub2Zmc2V0LCBpbmRlbnQ6IHRoaXMuaW5kZW50LCBzdGFydDogdGhpcy5zb3VyY2VUb2tlbiwgaXRlbXM6IFtdLCBlbmQ6IFtdIH07IGNhc2UgXCJzZXEtaXRlbS1pbmRcIjogcmV0dXJuIHsgdHlwZTogXCJibG9jay1zZXFcIiwgb2Zmc2V0OiB0aGlzLm9mZnNldCwgaW5kZW50OiB0aGlzLmluZGVudCwgaXRlbXM6IFt7IHN0YXJ0OiBbdGhpcy5zb3VyY2VUb2tlbl0gfV0gfTsgY2FzZSBcImV4cGxpY2l0LWtleS1pbmRcIjogeyB0aGlzLm9uS2V5TGluZSA9ICEwOyBjb25zdCB0ID0gRW4oU24oZSkpOyByZXR1cm4gdC5wdXNoKHRoaXMuc291cmNlVG9rZW4pLCB7IHR5cGU6IFwiYmxvY2stbWFwXCIsIG9mZnNldDogdGhpcy5vZmZzZXQsIGluZGVudDogdGhpcy5pbmRlbnQsIGl0ZW1zOiBbeyBzdGFydDogdCwgZXhwbGljaXRLZXk6ICEwIH1dIH0gfSBjYXNlIFwibWFwLXZhbHVlLWluZFwiOiB7IHRoaXMub25LZXlMaW5lID0gITA7IGNvbnN0IHQgPSBFbihTbihlKSk7IHJldHVybiB7IHR5cGU6IFwiYmxvY2stbWFwXCIsIG9mZnNldDogdGhpcy5vZmZzZXQsIGluZGVudDogdGhpcy5pbmRlbnQsIGl0ZW1zOiBbeyBzdGFydDogdCwga2V5OiBudWxsLCBzZXA6IFt0aGlzLnNvdXJjZVRva2VuXSB9XSB9IH0gfXJldHVybiBudWxsIH0gYXRJbmRlbnRlZENvbW1lbnQoZSwgdCkgeyByZXR1cm4gXCJjb21tZW50XCIgPT09IHRoaXMudHlwZSAmJiAoISh0aGlzLmluZGVudCA8PSB0KSAmJiBlLmV2ZXJ5KChlID0+IFwibmV3bGluZVwiID09PSBlLnR5cGUgfHwgXCJzcGFjZVwiID09PSBlLnR5cGUpKSkgfSAqZG9jdW1lbnRFbmQoZSkgeyBcImRvYy1tb2RlXCIgIT09IHRoaXMudHlwZSAmJiAoZS5lbmQgPyBlLmVuZC5wdXNoKHRoaXMuc291cmNlVG9rZW4pIDogZS5lbmQgPSBbdGhpcy5zb3VyY2VUb2tlbl0sIFwibmV3bGluZVwiID09PSB0aGlzLnR5cGUgJiYgKHlpZWxkKiB0aGlzLnBvcCgpKSkgfSAqbGluZUVuZChlKSB7IHN3aXRjaCAodGhpcy50eXBlKSB7IGNhc2UgXCJjb21tYVwiOiBjYXNlIFwiZG9jLXN0YXJ0XCI6IGNhc2UgXCJkb2MtZW5kXCI6IGNhc2UgXCJmbG93LXNlcS1lbmRcIjogY2FzZSBcImZsb3ctbWFwLWVuZFwiOiBjYXNlIFwibWFwLXZhbHVlLWluZFwiOiB5aWVsZCogdGhpcy5wb3AoKSwgeWllbGQqIHRoaXMuc3RlcCgpOyBicmVhazsgY2FzZSBcIm5ld2xpbmVcIjogdGhpcy5vbktleUxpbmUgPSAhMTsgZGVmYXVsdDogZS5lbmQgPyBlLmVuZC5wdXNoKHRoaXMuc291cmNlVG9rZW4pIDogZS5lbmQgPSBbdGhpcy5zb3VyY2VUb2tlbl0sIFwibmV3bGluZVwiID09PSB0aGlzLnR5cGUgJiYgKHlpZWxkKiB0aGlzLnBvcCgpKSB9IH0gfSBmdW5jdGlvbiBBbihlKSB7IGNvbnN0IHQgPSAhMSAhPT0gZS5wcmV0dHlFcnJvcnM7IHJldHVybiB7IGxpbmVDb3VudGVyOiBlLmxpbmVDb3VudGVyIHx8IHQgJiYgbmV3IGJuIHx8IG51bGwsIHByZXR0eUVycm9yczogdCB9IH0gZnVuY3Rpb24gSW4oZSwgdCA9IHt9KSB7IGNvbnN0IHsgbGluZUNvdW50ZXI6IG4sIHByZXR0eUVycm9yczogcyB9ID0gQW4odCksIGkgPSBuZXcgT24obj8uYWRkTmV3TGluZSksIG8gPSBuZXcgR3QodCksIHIgPSBBcnJheS5mcm9tKG8uY29tcG9zZShpLnBhcnNlKGUpKSk7IGlmIChzICYmIG4pIGZvciAoY29uc3QgdCBvZiByKSB0LmVycm9ycy5mb3JFYWNoKE90KGUsIG4pKSwgdC53YXJuaW5ncy5mb3JFYWNoKE90KGUsIG4pKTsgcmV0dXJuIHIubGVuZ3RoID4gMCA/IHIgOiBPYmplY3QuYXNzaWduKFtdLCB7IGVtcHR5OiAhMCB9LCBvLnN0cmVhbUluZm8oKSkgfSBmdW5jdGlvbiBUbihlLCB0ID0ge30pIHsgY29uc3QgeyBsaW5lQ291bnRlcjogbiwgcHJldHR5RXJyb3JzOiBzIH0gPSBBbih0KSwgaSA9IG5ldyBPbihuPy5hZGROZXdMaW5lKSwgbyA9IG5ldyBHdCh0KTsgbGV0IHIgPSBudWxsOyBmb3IgKGNvbnN0IHQgb2Ygby5jb21wb3NlKGkucGFyc2UoZSksICEwLCBlLmxlbmd0aCkpIGlmIChyKSB7IGlmIChcInNpbGVudFwiICE9PSByLm9wdGlvbnMubG9nTGV2ZWwpIHsgci5lcnJvcnMucHVzaChuZXcgRXQodC5yYW5nZS5zbGljZSgwLCAyKSwgXCJNVUxUSVBMRV9ET0NTXCIsIFwiU291cmNlIGNvbnRhaW5zIG11bHRpcGxlIGRvY3VtZW50czsgcGxlYXNlIHVzZSBZQU1MLnBhcnNlQWxsRG9jdW1lbnRzKClcIikpOyBicmVhayB9IH0gZWxzZSByID0gdDsgcmV0dXJuIHMgJiYgbiAmJiAoci5lcnJvcnMuZm9yRWFjaChPdChlLCBuKSksIHIud2FybmluZ3MuZm9yRWFjaChPdChlLCBuKSkpLCByIH0gZnVuY3Rpb24gTG4oZSwgdCwgbikgeyBsZXQgczsgXCJmdW5jdGlvblwiID09IHR5cGVvZiB0ID8gcyA9IHQgOiB2b2lkIDAgPT09IG4gJiYgdCAmJiBcIm9iamVjdFwiID09IHR5cGVvZiB0ICYmIChuID0gdCk7IGNvbnN0IGkgPSBUbihlLCBuKTsgaWYgKCFpKSByZXR1cm4gbnVsbDsgaWYgKGkud2FybmluZ3MuZm9yRWFjaCgoZSA9PiByZShpLm9wdGlvbnMubG9nTGV2ZWwsIGUpKSksIGkuZXJyb3JzLmxlbmd0aCA+IDApIHsgaWYgKFwic2lsZW50XCIgIT09IGkub3B0aW9ucy5sb2dMZXZlbCkgdGhyb3cgaS5lcnJvcnNbMF07IGkuZXJyb3JzID0gW10gfSByZXR1cm4gaS50b0pTKE9iamVjdC5hc3NpZ24oeyByZXZpdmVyOiBzIH0sIG4pKSB9IGZ1bmN0aW9uIHhuKGUsIHQsIG4pIHsgbGV0IHMgPSBudWxsOyBpZiAoXCJmdW5jdGlvblwiID09IHR5cGVvZiB0IHx8IEFycmF5LmlzQXJyYXkodCkgPyBzID0gdCA6IHZvaWQgMCA9PT0gbiAmJiB0ICYmIChuID0gdCksIFwic3RyaW5nXCIgPT0gdHlwZW9mIG4gJiYgKG4gPSBuLmxlbmd0aCksIFwibnVtYmVyXCIgPT0gdHlwZW9mIG4pIHsgY29uc3QgZSA9IE1hdGgucm91bmQobik7IG4gPSBlIDwgMSA/IHZvaWQgMCA6IGUgPiA4ID8geyBpbmRlbnQ6IDggfSA6IHsgaW5kZW50OiBlIH0gfSBpZiAodm9pZCAwID09PSBlKSB7IGNvbnN0IHsga2VlcFVuZGVmaW5lZDogZSB9ID0gbiA/PyB0ID8/IHt9OyBpZiAoIWUpIHJldHVybiB9IHJldHVybiBjKGUpICYmICFzID8gZS50b1N0cmluZyhuKSA6IG5ldyB3dChlLCBzLCBuKS50b1N0cmluZyhuKSB9IHZhciAkbiA9IE9iamVjdC5mcmVlemUoeyBfX3Byb3RvX186IG51bGwsIENTVDogdW4sIENvbXBvc2VyOiBHdCwgRG9jdW1lbnQ6IHd0LCBTY2hlbWE6IGt0LCBZQU1MRXJyb3I6IFN0LCBZQU1MUGFyc2VFcnJvcjogRXQsIFlBTUxXYXJuaW5nOiBOdCwgQWxpYXM6IEssIGlzQWxpYXM6IGEsIGlzQ29sbGVjdGlvbjogZCwgaXNEb2N1bWVudDogYywgaXNNYXA6IGwsIGlzTm9kZTogcCwgaXNQYWlyOiB1LCBpc1NjYWxhcjogZiwgaXNTZXE6IGgsIFBhaXI6IGRlLCBTY2FsYXI6IE0sIFlBTUxNYXA6IGtlLCBZQU1MU2VxOiB2ZSwgTGV4ZXI6IGduLCBMaW5lQ291bnRlcjogYm4sIFBhcnNlcjogT24sIHBhcnNlOiBMbiwgcGFyc2VBbGxEb2N1bWVudHM6IEluLCBwYXJzZURvY3VtZW50OiBUbiwgc3RyaW5naWZ5OiB4biwgdmlzaXQ6IGssIHZpc2l0QXN5bmM6IHYgfSk7XG5cblxuLy8gZXhwb3J0IHsgSyBhcyBBbGlhcywgdW4gYXMgQ1NULCBHdCBhcyBDb21wb3Nlciwgd3QgYXMgRG9jdW1lbnQsIGduIGFzIExleGVyLCBibiBhcyBMaW5lQ291bnRlciwgZGUgYXMgUGFpciwgT24gYXMgUGFyc2VyLCBNIGFzIFNjYWxhciwga3QgYXMgU2NoZW1hLCBTdCBhcyBZQU1MRXJyb3IsIGtlIGFzIFlBTUxNYXAsIEV0IGFzIFlBTUxQYXJzZUVycm9yLCB2ZSBhcyBZQU1MU2VxLCBOdCBhcyBZQU1MV2FybmluZywgJG4gYXMgZGVmYXVsdCwgYSBhcyBpc0FsaWFzLCBkIGFzIGlzQ29sbGVjdGlvbiwgYyBhcyBpc0RvY3VtZW50LCBsIGFzIGlzTWFwLCBwIGFzIGlzTm9kZSwgdSBhcyBpc1BhaXIsIGYgYXMgaXNTY2FsYXIsIGggYXMgaXNTZXEsIExuIGFzIHBhcnNlLCBJbiBhcyBwYXJzZUFsbERvY3VtZW50cywgVG4gYXMgcGFyc2VEb2N1bWVudCwgeG4gYXMgc3RyaW5naWZ5LCBrIGFzIHZpc2l0LCB2IGFzIHZpc2l0QXN5bmMgfTtcblxuXG5leHBvcnQgY29uc3QgcGFyc2UgPSBMbiBhcyAoaW5wdXQ6IHN0cmluZykgPT4gdW5rbm93bjtcbmV4cG9ydCBjb25zdCBzdHJpbmdpZnkgPSB4biBhcyAoaW5wdXQ6IHVua25vd24pID0+IHN0cmluZzsiXX0=
2406
+ /* _JS_SOURCE_HASH = "b65fa96744a32eed94c8c76baa783f60199583ff95460e7c3213d83b60b4c52f"; */